dsh-remotion 0.2.0 → 0.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (294) hide show
  1. package/README.en.md +37 -6
  2. package/README.md +33 -4
  3. package/lib/index.d.ts +8 -41
  4. package/lib/index.js +30 -99
  5. package/lib/skill-bundle.d.ts +56 -0
  6. package/lib/skill-bundle.js +218 -0
  7. package/package.json +1 -1
  8. package/skills/remotion-best-practices/SKILL.md +59 -0
  9. package/skills/remotion-best-practices/agents/openai.yaml +7 -0
  10. package/skills/remotion-best-practices/assets/remotion-icon.png +0 -0
  11. package/skills/remotion-best-practices/remotion-captions/SKILL.md +36 -0
  12. package/skills/remotion-best-practices/remotion-captions/agents/openai.yaml +7 -0
  13. package/skills/remotion-best-practices/remotion-captions/assets/remotion-icon.png +0 -0
  14. package/skills/{remotion/rules → remotion-best-practices/remotion-captions}/display-captions.md +9 -3
  15. package/skills/{remotion/rules → remotion-best-practices/remotion-captions}/import-srt-captions.md +5 -1
  16. package/skills/remotion-best-practices/remotion-create/SKILL.md +68 -0
  17. package/skills/remotion-best-practices/remotion-create/agents/openai.yaml +7 -0
  18. package/skills/remotion-best-practices/remotion-create/assets/remotion-icon.png +0 -0
  19. package/skills/{remotion/rules → remotion-best-practices/remotion-create}/tailwind.md +1 -1
  20. package/skills/remotion-best-practices/remotion-create/video-layout.md +9 -0
  21. package/skills/remotion-best-practices/remotion-docs/SKILL.md +46 -0
  22. package/skills/remotion-best-practices/remotion-docs/agents/openai.yaml +7 -0
  23. package/skills/remotion-best-practices/remotion-docs/assets/remotion-icon.png +0 -0
  24. package/skills/remotion-best-practices/remotion-interactivity/SKILL.md +247 -0
  25. package/skills/remotion-best-practices/remotion-interactivity/agents/openai.yaml +7 -0
  26. package/skills/remotion-best-practices/remotion-interactivity/assets/remotion-icon.png +0 -0
  27. package/skills/remotion-best-practices/remotion-maps/SKILL.md +36 -0
  28. package/skills/remotion-best-practices/remotion-maps/agents/openai.yaml +7 -0
  29. package/skills/remotion-best-practices/remotion-maps/assets/remotion-icon.png +0 -0
  30. package/skills/remotion-best-practices/remotion-maps/techniques/cesium/TECHNIQUE.md +89 -0
  31. package/skills/remotion-best-practices/remotion-maps/techniques/cesium/assets/CesiumFlythrough.tsx +284 -0
  32. package/skills/remotion-best-practices/remotion-maps/techniques/cesium/assets/cesium-path.json +299 -0
  33. package/skills/remotion-best-practices/remotion-maps/techniques/cesium/assets/city-path.json +12 -0
  34. package/skills/remotion-best-practices/remotion-maps/techniques/cesium/assets/example-Root.tsx +39 -0
  35. package/skills/remotion-best-practices/remotion-maps/techniques/cesium/assets/flight-path.ts +35 -0
  36. package/skills/remotion-best-practices/remotion-maps/techniques/cesium/assets/sample-river.geojson +215 -0
  37. package/skills/remotion-best-practices/remotion-maps/techniques/cesium/references/3d-data-sources.md +43 -0
  38. package/skills/remotion-best-practices/remotion-maps/techniques/cesium/references/3d-flyover-architecture.md +128 -0
  39. package/skills/remotion-best-practices/remotion-maps/techniques/cesium/references/3d-troubleshooting.md +57 -0
  40. package/skills/remotion-best-practices/remotion-maps/techniques/cesium/scripts/prep-cesium-path.mjs +161 -0
  41. package/skills/remotion-best-practices/remotion-maps/techniques/mapbox/TECHNIQUE.md +449 -0
  42. package/skills/remotion-best-practices/remotion-maps/techniques/mapbox/references/render-stability.md +64 -0
  43. package/skills/remotion-best-practices/remotion-maps/techniques/maplibre/TECHNIQUE.md +465 -0
  44. package/skills/remotion-best-practices/remotion-maps/techniques/maplibre/references/render-stability.md +64 -0
  45. package/skills/remotion-best-practices/remotion-maps/techniques/maptiler/TECHNIQUE.md +80 -0
  46. package/skills/remotion-best-practices/remotion-maps/techniques/maptiler/assets/CountryLabel.tsx +70 -0
  47. package/skills/remotion-best-practices/remotion-maps/techniques/maptiler/assets/MapTilerVectorElement.ts +80 -0
  48. package/skills/remotion-best-practices/remotion-maps/techniques/maptiler/assets/RiverReveal.tsx +363 -0
  49. package/skills/remotion-best-practices/remotion-maps/techniques/maptiler/assets/example-Root.tsx +22 -0
  50. package/skills/remotion-best-practices/remotion-maps/techniques/maptiler/assets/sample-data/country-meta.json +7535 -0
  51. package/skills/remotion-best-practices/remotion-maps/techniques/maptiler/assets/sample-data/yarlung-flow.json +605 -0
  52. package/skills/remotion-best-practices/remotion-maps/techniques/maptiler/assets/tokens.ts +34 -0
  53. package/skills/remotion-best-practices/remotion-maps/techniques/maptiler/references/map-data-sources.md +91 -0
  54. package/skills/remotion-best-practices/remotion-maps/techniques/maptiler/references/map-explainer-architecture.md +129 -0
  55. package/skills/remotion-best-practices/remotion-maps/techniques/maptiler/references/map-geo-prep.md +85 -0
  56. package/skills/remotion-best-practices/remotion-maps/techniques/maptiler/references/render-stability.md +64 -0
  57. package/skills/remotion-best-practices/remotion-maps/techniques/maptiler/scripts/prep-geo.mjs +202 -0
  58. package/skills/remotion-best-practices/remotion-maps/techniques/static-map/TECHNIQUE.md +37 -0
  59. package/skills/remotion-best-practices/remotion-markup/SKILL.md +365 -0
  60. package/skills/remotion-best-practices/remotion-markup/agents/openai.yaml +7 -0
  61. package/skills/remotion-best-practices/remotion-markup/assets/remotion-icon.png +0 -0
  62. package/skills/{remotion/rules → remotion-best-practices/remotion-markup}/audio.md +4 -2
  63. package/skills/{remotion/rules → remotion-best-practices/remotion-markup}/calculate-metadata.md +4 -2
  64. package/skills/remotion-best-practices/remotion-markup/compositions.md +117 -0
  65. package/skills/remotion-best-practices/remotion-markup/cropping.md +34 -0
  66. package/skills/remotion-best-practices/remotion-markup/effects.md +251 -0
  67. package/skills/{remotion/rules/videos.md → remotion-best-practices/remotion-markup/embedding-videos.md} +6 -4
  68. package/skills/{remotion/rules → remotion-best-practices/remotion-markup}/ffmpeg.md +5 -1
  69. package/skills/{remotion/rules → remotion-best-practices/remotion-markup}/gifs.md +55 -9
  70. package/skills/remotion-best-practices/remotion-markup/google-fonts.md +76 -0
  71. package/skills/remotion-best-practices/remotion-markup/html-in-canvas.md +128 -0
  72. package/skills/remotion-best-practices/remotion-markup/images.md +73 -0
  73. package/skills/remotion-best-practices/remotion-markup/light-leaks.md +106 -0
  74. package/skills/remotion-best-practices/remotion-markup/local-fonts.md +69 -0
  75. package/skills/{remotion/rules → remotion-best-practices/remotion-markup}/lottie.md +4 -1
  76. package/skills/{remotion/rules → remotion-best-practices/remotion-markup}/measuring-dom-nodes.md +5 -1
  77. package/skills/{remotion/rules → remotion-best-practices/remotion-markup}/measuring-text.md +8 -2
  78. package/skills/remotion-best-practices/remotion-markup/multi-scene-video.md +81 -0
  79. package/skills/{remotion/rules → remotion-best-practices/remotion-markup}/parameters.md +3 -1
  80. package/skills/remotion-best-practices/remotion-markup/remotion-maps/SKILL.md +36 -0
  81. package/skills/remotion-best-practices/remotion-markup/remotion-maps/agents/openai.yaml +7 -0
  82. package/skills/remotion-best-practices/remotion-markup/remotion-maps/assets/remotion-icon.png +0 -0
  83. package/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/cesium/TECHNIQUE.md +89 -0
  84. package/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/cesium/assets/CesiumFlythrough.tsx +284 -0
  85. package/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/cesium/assets/cesium-path.json +299 -0
  86. package/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/cesium/assets/city-path.json +12 -0
  87. package/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/cesium/assets/example-Root.tsx +39 -0
  88. package/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/cesium/assets/flight-path.ts +35 -0
  89. package/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/cesium/assets/sample-river.geojson +215 -0
  90. package/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/cesium/references/3d-data-sources.md +43 -0
  91. package/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/cesium/references/3d-flyover-architecture.md +128 -0
  92. package/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/cesium/references/3d-troubleshooting.md +57 -0
  93. package/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/cesium/scripts/prep-cesium-path.mjs +161 -0
  94. package/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/mapbox/TECHNIQUE.md +449 -0
  95. package/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/mapbox/references/render-stability.md +64 -0
  96. package/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/maplibre/TECHNIQUE.md +465 -0
  97. package/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/maplibre/references/render-stability.md +64 -0
  98. package/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/maptiler/TECHNIQUE.md +80 -0
  99. package/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/maptiler/assets/CountryLabel.tsx +70 -0
  100. package/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/maptiler/assets/MapTilerVectorElement.ts +80 -0
  101. package/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/maptiler/assets/RiverReveal.tsx +363 -0
  102. package/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/maptiler/assets/example-Root.tsx +22 -0
  103. package/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/maptiler/assets/sample-data/country-meta.json +7535 -0
  104. package/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/maptiler/assets/sample-data/yarlung-flow.json +605 -0
  105. package/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/maptiler/assets/tokens.ts +34 -0
  106. package/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/maptiler/references/map-data-sources.md +91 -0
  107. package/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/maptiler/references/map-explainer-architecture.md +129 -0
  108. package/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/maptiler/references/map-geo-prep.md +85 -0
  109. package/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/maptiler/references/render-stability.md +64 -0
  110. package/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/maptiler/scripts/prep-geo.mjs +202 -0
  111. package/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/static-map/TECHNIQUE.md +37 -0
  112. package/skills/{remotion/rules → remotion-best-practices/remotion-markup}/sequencing.md +63 -12
  113. package/skills/remotion-best-practices/remotion-markup/sfx.md +51 -0
  114. package/skills/remotion-best-practices/remotion-markup/text-highlights.md +56 -0
  115. package/skills/remotion-best-practices/remotion-markup/timing.md +111 -0
  116. package/skills/{remotion/rules → remotion-best-practices/remotion-markup}/transitions.md +49 -7
  117. package/skills/remotion-best-practices/remotion-markup/video-editing.md +90 -0
  118. package/skills/{remotion/rules → remotion-best-practices/remotion-markup}/voiceover.md +2 -2
  119. package/skills/remotion-best-practices/remotion-multimedia/SKILL.md +20 -0
  120. package/skills/remotion-best-practices/remotion-multimedia/agents/openai.yaml +7 -0
  121. package/skills/remotion-best-practices/remotion-multimedia/assets/remotion-icon.png +0 -0
  122. package/skills/{remotion/rules → remotion-best-practices/remotion-multimedia}/get-audio-duration.md +1 -3
  123. package/skills/{remotion/rules → remotion-best-practices/remotion-multimedia}/get-video-dimensions.md +1 -3
  124. package/skills/{remotion/rules → remotion-best-practices/remotion-multimedia}/get-video-duration.md +1 -3
  125. package/skills/remotion-best-practices/remotion-render/SKILL.md +27 -0
  126. package/skills/remotion-best-practices/remotion-render/agents/openai.yaml +7 -0
  127. package/skills/remotion-best-practices/remotion-render/assets/remotion-icon.png +0 -0
  128. package/skills/remotion-best-practices/remotion-saas/SKILL.md +33 -0
  129. package/skills/remotion-best-practices/remotion-saas/agents/openai.yaml +7 -0
  130. package/skills/remotion-best-practices/remotion-saas/assets/remotion-icon.png +0 -0
  131. package/skills/remotion-best-practices/remotion-saas/framework.md +21 -0
  132. package/skills/remotion-best-practices/remotion-saas/player.md +33 -0
  133. package/skills/remotion-best-practices/remotion-saas/rendering.md +69 -0
  134. package/skills/remotion-best-practices/remotion-studio/SKILL.md +24 -0
  135. package/skills/remotion-best-practices/remotion-studio/agents/openai.yaml +7 -0
  136. package/skills/remotion-best-practices/remotion-studio/assets/remotion-icon.png +0 -0
  137. package/skills/remotion-best-practices/remotion-upgrade/SKILL.md +31 -0
  138. package/skills/remotion-best-practices/remotion-upgrade/agents/openai.yaml +7 -0
  139. package/skills/remotion-best-practices/remotion-upgrade/assets/remotion-icon.png +0 -0
  140. package/skills/remotion-captions/SKILL.md +36 -0
  141. package/skills/remotion-captions/agents/openai.yaml +7 -0
  142. package/skills/remotion-captions/assets/remotion-icon.png +0 -0
  143. package/skills/remotion-captions/display-captions.md +190 -0
  144. package/skills/remotion-captions/import-srt-captions.md +73 -0
  145. package/skills/remotion-captions/transcribe-captions.md +70 -0
  146. package/skills/remotion-create/SKILL.md +68 -0
  147. package/skills/remotion-create/agents/openai.yaml +7 -0
  148. package/skills/remotion-create/assets/remotion-icon.png +0 -0
  149. package/skills/remotion-create/tailwind.md +11 -0
  150. package/skills/remotion-create/video-layout.md +9 -0
  151. package/skills/remotion-docs/SKILL.md +46 -0
  152. package/skills/remotion-docs/agents/openai.yaml +7 -0
  153. package/skills/remotion-docs/assets/remotion-icon.png +0 -0
  154. package/skills/remotion-interactivity/SKILL.md +247 -0
  155. package/skills/remotion-interactivity/agents/openai.yaml +7 -0
  156. package/skills/remotion-interactivity/assets/remotion-icon.png +0 -0
  157. package/skills/remotion-maps/SKILL.md +36 -0
  158. package/skills/remotion-maps/agents/openai.yaml +7 -0
  159. package/skills/remotion-maps/assets/remotion-icon.png +0 -0
  160. package/skills/remotion-maps/techniques/cesium/TECHNIQUE.md +89 -0
  161. package/skills/remotion-maps/techniques/cesium/assets/CesiumFlythrough.tsx +284 -0
  162. package/skills/remotion-maps/techniques/cesium/assets/cesium-path.json +299 -0
  163. package/skills/remotion-maps/techniques/cesium/assets/city-path.json +12 -0
  164. package/skills/remotion-maps/techniques/cesium/assets/example-Root.tsx +39 -0
  165. package/skills/remotion-maps/techniques/cesium/assets/flight-path.ts +35 -0
  166. package/skills/remotion-maps/techniques/cesium/assets/sample-river.geojson +215 -0
  167. package/skills/remotion-maps/techniques/cesium/references/3d-data-sources.md +43 -0
  168. package/skills/remotion-maps/techniques/cesium/references/3d-flyover-architecture.md +128 -0
  169. package/skills/remotion-maps/techniques/cesium/references/3d-troubleshooting.md +57 -0
  170. package/skills/remotion-maps/techniques/cesium/scripts/prep-cesium-path.mjs +161 -0
  171. package/skills/remotion-maps/techniques/mapbox/TECHNIQUE.md +449 -0
  172. package/skills/remotion-maps/techniques/mapbox/references/render-stability.md +64 -0
  173. package/skills/remotion-maps/techniques/maplibre/TECHNIQUE.md +465 -0
  174. package/skills/remotion-maps/techniques/maplibre/references/render-stability.md +64 -0
  175. package/skills/remotion-maps/techniques/maptiler/TECHNIQUE.md +80 -0
  176. package/skills/remotion-maps/techniques/maptiler/assets/CountryLabel.tsx +70 -0
  177. package/skills/remotion-maps/techniques/maptiler/assets/MapTilerVectorElement.ts +80 -0
  178. package/skills/remotion-maps/techniques/maptiler/assets/RiverReveal.tsx +363 -0
  179. package/skills/remotion-maps/techniques/maptiler/assets/example-Root.tsx +22 -0
  180. package/skills/remotion-maps/techniques/maptiler/assets/sample-data/country-meta.json +7535 -0
  181. package/skills/remotion-maps/techniques/maptiler/assets/sample-data/yarlung-flow.json +605 -0
  182. package/skills/remotion-maps/techniques/maptiler/assets/tokens.ts +34 -0
  183. package/skills/remotion-maps/techniques/maptiler/references/map-data-sources.md +91 -0
  184. package/skills/remotion-maps/techniques/maptiler/references/map-explainer-architecture.md +129 -0
  185. package/skills/remotion-maps/techniques/maptiler/references/map-geo-prep.md +85 -0
  186. package/skills/remotion-maps/techniques/maptiler/references/render-stability.md +64 -0
  187. package/skills/remotion-maps/techniques/maptiler/scripts/prep-geo.mjs +202 -0
  188. package/skills/remotion-maps/techniques/static-map/TECHNIQUE.md +37 -0
  189. package/skills/remotion-markup/3d.md +86 -0
  190. package/skills/remotion-markup/SKILL.md +365 -0
  191. package/skills/remotion-markup/agents/openai.yaml +7 -0
  192. package/skills/remotion-markup/assets/remotion-icon.png +0 -0
  193. package/skills/remotion-markup/audio-visualization.md +198 -0
  194. package/skills/remotion-markup/audio.md +171 -0
  195. package/skills/remotion-markup/calculate-metadata.md +136 -0
  196. package/skills/remotion-markup/compositions.md +117 -0
  197. package/skills/remotion-markup/cropping.md +34 -0
  198. package/skills/remotion-markup/effects.md +251 -0
  199. package/skills/remotion-markup/embedding-videos.md +173 -0
  200. package/skills/remotion-markup/ffmpeg.md +38 -0
  201. package/skills/remotion-markup/gifs.md +187 -0
  202. package/skills/remotion-markup/google-fonts.md +76 -0
  203. package/skills/remotion-markup/html-in-canvas.md +128 -0
  204. package/skills/remotion-markup/images.md +73 -0
  205. package/skills/remotion-markup/light-leaks.md +106 -0
  206. package/skills/remotion-markup/local-fonts.md +69 -0
  207. package/skills/remotion-markup/lottie.md +73 -0
  208. package/skills/remotion-markup/measuring-dom-nodes.md +38 -0
  209. package/skills/remotion-markup/measuring-text.md +146 -0
  210. package/skills/remotion-markup/multi-scene-video.md +81 -0
  211. package/skills/remotion-markup/parameters.md +111 -0
  212. package/skills/remotion-markup/remotion-maps/SKILL.md +36 -0
  213. package/skills/remotion-markup/remotion-maps/agents/openai.yaml +7 -0
  214. package/skills/remotion-markup/remotion-maps/assets/remotion-icon.png +0 -0
  215. package/skills/remotion-markup/remotion-maps/techniques/cesium/TECHNIQUE.md +89 -0
  216. package/skills/remotion-markup/remotion-maps/techniques/cesium/assets/CesiumFlythrough.tsx +284 -0
  217. package/skills/remotion-markup/remotion-maps/techniques/cesium/assets/cesium-path.json +299 -0
  218. package/skills/remotion-markup/remotion-maps/techniques/cesium/assets/city-path.json +12 -0
  219. package/skills/remotion-markup/remotion-maps/techniques/cesium/assets/example-Root.tsx +39 -0
  220. package/skills/remotion-markup/remotion-maps/techniques/cesium/assets/flight-path.ts +35 -0
  221. package/skills/remotion-markup/remotion-maps/techniques/cesium/assets/sample-river.geojson +215 -0
  222. package/skills/remotion-markup/remotion-maps/techniques/cesium/references/3d-data-sources.md +43 -0
  223. package/skills/remotion-markup/remotion-maps/techniques/cesium/references/3d-flyover-architecture.md +128 -0
  224. package/skills/remotion-markup/remotion-maps/techniques/cesium/references/3d-troubleshooting.md +57 -0
  225. package/skills/remotion-markup/remotion-maps/techniques/cesium/scripts/prep-cesium-path.mjs +161 -0
  226. package/skills/remotion-markup/remotion-maps/techniques/mapbox/TECHNIQUE.md +449 -0
  227. package/skills/remotion-markup/remotion-maps/techniques/mapbox/references/render-stability.md +64 -0
  228. package/skills/remotion-markup/remotion-maps/techniques/maplibre/TECHNIQUE.md +465 -0
  229. package/skills/remotion-markup/remotion-maps/techniques/maplibre/references/render-stability.md +64 -0
  230. package/skills/remotion-markup/remotion-maps/techniques/maptiler/TECHNIQUE.md +80 -0
  231. package/skills/remotion-markup/remotion-maps/techniques/maptiler/assets/CountryLabel.tsx +70 -0
  232. package/skills/remotion-markup/remotion-maps/techniques/maptiler/assets/MapTilerVectorElement.ts +80 -0
  233. package/skills/remotion-markup/remotion-maps/techniques/maptiler/assets/RiverReveal.tsx +363 -0
  234. package/skills/remotion-markup/remotion-maps/techniques/maptiler/assets/example-Root.tsx +22 -0
  235. package/skills/remotion-markup/remotion-maps/techniques/maptiler/assets/sample-data/country-meta.json +7535 -0
  236. package/skills/remotion-markup/remotion-maps/techniques/maptiler/assets/sample-data/yarlung-flow.json +605 -0
  237. package/skills/remotion-markup/remotion-maps/techniques/maptiler/assets/tokens.ts +34 -0
  238. package/skills/remotion-markup/remotion-maps/techniques/maptiler/references/map-data-sources.md +91 -0
  239. package/skills/remotion-markup/remotion-maps/techniques/maptiler/references/map-explainer-architecture.md +129 -0
  240. package/skills/remotion-markup/remotion-maps/techniques/maptiler/references/map-geo-prep.md +85 -0
  241. package/skills/remotion-markup/remotion-maps/techniques/maptiler/references/render-stability.md +64 -0
  242. package/skills/remotion-markup/remotion-maps/techniques/maptiler/scripts/prep-geo.mjs +202 -0
  243. package/skills/remotion-markup/remotion-maps/techniques/static-map/TECHNIQUE.md +37 -0
  244. package/skills/remotion-markup/sequencing.md +169 -0
  245. package/skills/remotion-markup/sfx.md +51 -0
  246. package/skills/remotion-markup/silence-detection.md +71 -0
  247. package/skills/remotion-markup/text-highlights.md +56 -0
  248. package/skills/remotion-markup/timing.md +111 -0
  249. package/skills/remotion-markup/transitions.md +239 -0
  250. package/skills/remotion-markup/video-editing.md +90 -0
  251. package/skills/remotion-markup/voiceover.md +99 -0
  252. package/skills/remotion-multimedia/SKILL.md +20 -0
  253. package/skills/remotion-multimedia/agents/openai.yaml +7 -0
  254. package/skills/remotion-multimedia/assets/remotion-icon.png +0 -0
  255. package/skills/remotion-multimedia/get-audio-duration.md +56 -0
  256. package/skills/remotion-multimedia/get-video-dimensions.md +66 -0
  257. package/skills/remotion-multimedia/get-video-duration.md +58 -0
  258. package/skills/remotion-render/SKILL.md +27 -0
  259. package/skills/remotion-render/agents/openai.yaml +7 -0
  260. package/skills/remotion-render/assets/remotion-icon.png +0 -0
  261. package/skills/remotion-render/transparent-videos.md +106 -0
  262. package/skills/remotion-saas/SKILL.md +33 -0
  263. package/skills/remotion-saas/agents/openai.yaml +7 -0
  264. package/skills/remotion-saas/assets/remotion-icon.png +0 -0
  265. package/skills/remotion-saas/framework.md +21 -0
  266. package/skills/remotion-saas/player.md +33 -0
  267. package/skills/remotion-saas/rendering.md +69 -0
  268. package/skills/remotion-studio/SKILL.md +24 -0
  269. package/skills/remotion-studio/agents/openai.yaml +7 -0
  270. package/skills/remotion-studio/assets/remotion-icon.png +0 -0
  271. package/skills/remotion-upgrade/SKILL.md +31 -0
  272. package/skills/remotion-upgrade/agents/openai.yaml +7 -0
  273. package/skills/remotion-upgrade/assets/remotion-icon.png +0 -0
  274. package/skills/remotion/SKILL.md +0 -95
  275. package/skills/remotion/rules/animations.md +0 -31
  276. package/skills/remotion/rules/assets.md +0 -78
  277. package/skills/remotion/rules/can-decode.md +0 -81
  278. package/skills/remotion/rules/charts.md +0 -120
  279. package/skills/remotion/rules/compositions.md +0 -154
  280. package/skills/remotion/rules/extract-frames.md +0 -229
  281. package/skills/remotion/rules/fonts.md +0 -152
  282. package/skills/remotion/rules/images.md +0 -134
  283. package/skills/remotion/rules/light-leaks.md +0 -73
  284. package/skills/remotion/rules/maps.md +0 -412
  285. package/skills/remotion/rules/sfx.md +0 -30
  286. package/skills/remotion/rules/subtitles.md +0 -36
  287. package/skills/remotion/rules/text-animations.md +0 -20
  288. package/skills/remotion/rules/timing.md +0 -136
  289. package/skills/remotion/rules/trimming.md +0 -51
  290. /package/skills/{remotion/rules → remotion-best-practices/remotion-captions}/transcribe-captions.md +0 -0
  291. /package/skills/{remotion/rules → remotion-best-practices/remotion-markup}/3d.md +0 -0
  292. /package/skills/{remotion/rules → remotion-best-practices/remotion-markup}/audio-visualization.md +0 -0
  293. /package/skills/{remotion/rules → remotion-best-practices/remotion-markup}/silence-detection.md +0 -0
  294. /package/skills/{remotion/rules → remotion-best-practices/remotion-render}/transparent-videos.md +0 -0
@@ -0,0 +1,89 @@
1
+ # CesiumJS — 3D flyovers in Remotion
2
+
3
+ Instructions for achieving map animations with "flight-simulator" perspective in Remotion.
4
+
5
+ ## Modes
6
+
7
+ | Mode | Data | Use for |
8
+ | ----------- | ----------------------------------------------------- | ------------------------------------------------------ |
9
+ | `landscape` | MapTiler `terrain-quantized-mesh-v2` + `satellite-v2` | Mountains, gorges, rivers, coastlines and rural routes |
10
+ | `city` | Google Photorealistic 3D Tiles | Cities, architecture and recognizable landmarks |
11
+
12
+ Do not use footprint extrusions for city flyovers. They produce crude building blocks rather than
13
+ textured architecture.
14
+
15
+ ## Credentials
16
+
17
+ For `landscape`, set:
18
+
19
+ ```text
20
+ REMOTION_MAPTILER_KEY=...
21
+ ```
22
+
23
+ Create a MapTiler key at https://cloud.maptiler.com/account/keys/.
24
+
25
+ For `city`, set:
26
+
27
+ ```text
28
+ REMOTION_GOOGLE_MAPS_API_KEY=...
29
+ ```
30
+
31
+ Create a billing-enabled Google Map Tiles API key by following
32
+ https://developers.google.com/maps/documentation/tile/get-api-key. Enable the **Map Tiles API** and
33
+ restrict the key to that API. Ensure its application restriction permits local headless Remotion
34
+ requests.
35
+
36
+ ## Build the flight
37
+
38
+ 1. Copy `assets/CesiumFlythrough.tsx`, a path JSON and `assets/example-Root.tsx` into the Remotion
39
+ project, or import the component directly.
40
+ 2. Supply the camera route as `[longitude, latitude][]`. Use only meaningful control points; do not hand-author dozens of tiny corrections.
41
+ 3. Leave `pathSmoothingPasses={3}` initially. The component applies repeated Chaikin corner cutting, turning straight-then-corner input into a continuous swerve. Increase to `4` for a softer route or reduce to `2` when the camera must follow a tight corridor.
42
+ 4. Set absolute camera altitudes for the location. City cameras normally fly lower than landscape
43
+ cameras.
44
+ 5. Render a middle-frame still before rendering the full video.
45
+
46
+ ```tsx
47
+ <CesiumFlythrough
48
+ mode="city"
49
+ path={cameraPath}
50
+ pathSmoothingPasses={3}
51
+ altitudeStart={700}
52
+ altitudeEnd={500}
53
+ lookAheadKm={0.7}
54
+ travelKm={4.5}
55
+ />
56
+ ```
57
+
58
+ ## Camera behavior
59
+
60
+ Walk the smoothed curve by arc length for constant ground speed. Aim at a real point farther along
61
+ the curve rather than its next vertex. Derive roll from the change in look-ahead bearing so the
62
+ camera banks into a turn instead of twitching left and right.
63
+
64
+ For landscape routes, `scripts/prep-cesium-path.mjs` also clips, resamples, smooths and dampens a
65
+ GeoJSON centerline before the component applies its final curve smoothing.
66
+
67
+
68
+ ## Mechanics
69
+
70
+ - Set `viewer.useDefaultRenderLoop = false`.
71
+ - Call `viewer.render()`, never `scene.render()`, while settling.
72
+ - Use `preserveDrawingBuffer: true`.
73
+ - Gate initialization and every frame with `delayRender`.
74
+ - Drive camera animation from `useCurrentFrame()`; do not use CSS transitions or browser-timed animation.
75
+ - Settle landscapes on `globe.tilesLoaded` and cities on `tileset.tilesLoaded`.
76
+ - Keep all provider attribution visible.
77
+ - Record the source and effective date of custom or disputed geography.
78
+ - Inspect rendered pixels, not only Studio playback, at every required aspect ratio.
79
+ - Read `references/3d-flyover-architecture.md` for camera math, `references/3d-data-sources.md` for provider details, and `references/3d-troubleshooting.md` for blank, coarse, unauthorized or timed-out renders.
80
+
81
+ ## Files
82
+
83
+ - `assets/CesiumFlythrough.tsx` — reusable two-mode component.
84
+ - `assets/flight-path.ts` — dependency-free Chaikin route smoothing.
85
+ - `assets/example-Root.tsx` — landscape and city compositions.
86
+ - `assets/cesium-path.json` — sample landscape route.
87
+ - `assets/city-path.json` — sample city route.
88
+ - `assets/sample-river.geojson` — sample path-preparation input.
89
+ - `scripts/prep-cesium-path.mjs` — dependency-free landscape route preparation.
@@ -0,0 +1,284 @@
1
+ import React, {useEffect, useMemo, useRef, useState} from 'react';
2
+ import {
3
+ AbsoluteFill,
4
+ cancelRender,
5
+ continueRender,
6
+ delayRender,
7
+ useCurrentFrame,
8
+ useVideoConfig,
9
+ } from 'remotion';
10
+ import terrainPath from './cesium-path.json';
11
+ import {smoothFlightPath, type LngLat} from './flight-path';
12
+
13
+ export type FlyoverMode = 'landscape' | 'city';
14
+ export type {LngLat} from './flight-path';
15
+
16
+ export type CesiumFlythroughProps = {
17
+ mode?: FlyoverMode;
18
+ path?: LngLat[];
19
+ pathSmoothingPasses?: number;
20
+ altitudeStart?: number;
21
+ altitudeEnd?: number;
22
+ lookAheadKm?: number;
23
+ travelKm?: number;
24
+ pitchFromNadir?: number;
25
+ verticalExaggeration?: number;
26
+ maximumScreenSpaceError?: number;
27
+ };
28
+
29
+ const MAPTILER_KEY = process.env.REMOTION_MAPTILER_KEY;
30
+ const GOOGLE_MAPS_API_KEY = process.env.REMOTION_GOOGLE_MAPS_API_KEY;
31
+ const CESIUM_VER = '1.143';
32
+ const CDN = `https://cesium.com/downloads/cesiumjs/releases/${CESIUM_VER}/Build/Cesium/`;
33
+ const R = 6371;
34
+ const MAX_BANK = 0.13;
35
+ const BANK_GAIN = 0.6;
36
+
37
+ const havKm = (a: number[], b: number[]) => {
38
+ const r = Math.PI / 180;
39
+ const dLat = (b[1] - a[1]) * r;
40
+ const dLng = (b[0] - a[0]) * r;
41
+ const h =
42
+ Math.sin(dLat / 2) ** 2 +
43
+ Math.cos(a[1] * r) * Math.cos(b[1] * r) * Math.sin(dLng / 2) ** 2;
44
+ return 2 * R * Math.asin(Math.sqrt(h));
45
+ };
46
+
47
+ const makePathWalker = (path: LngLat[]) => {
48
+ if (path.length < 2)
49
+ throw new Error('Flyover path needs at least two points');
50
+ const cumulative = [0];
51
+ for (let i = 1; i < path.length; i++) {
52
+ cumulative.push(cumulative[i - 1] + havKm(path[i - 1], path[i]));
53
+ }
54
+ const lengthKm = cumulative[cumulative.length - 1];
55
+ const along = (km: number): LngLat => {
56
+ const d = Math.max(0, Math.min(lengthKm, km));
57
+ let i = 1;
58
+ while (i < cumulative.length && cumulative[i] < d) i++;
59
+ if (i >= cumulative.length) return path[path.length - 1];
60
+ const segmentLength = cumulative[i] - cumulative[i - 1] || 1;
61
+ const t = (d - cumulative[i - 1]) / segmentLength;
62
+ return [
63
+ path[i - 1][0] + (path[i][0] - path[i - 1][0]) * t,
64
+ path[i - 1][1] + (path[i][1] - path[i - 1][1]) * t,
65
+ ];
66
+ };
67
+ return {along, lengthKm};
68
+ };
69
+
70
+ const bearing = (a: number[], b: number[]) => {
71
+ const r = Math.PI / 180;
72
+ const y = Math.sin((b[0] - a[0]) * r) * Math.cos(b[1] * r);
73
+ const x =
74
+ Math.cos(a[1] * r) * Math.sin(b[1] * r) -
75
+ Math.sin(a[1] * r) * Math.cos(b[1] * r) * Math.cos((b[0] - a[0]) * r);
76
+ return Math.atan2(y, x);
77
+ };
78
+
79
+ const lerp = (a: number, b: number, t: number) => a + (b - a) * t;
80
+ const clamp = (v: number, lo: number, hi: number) =>
81
+ Math.max(lo, Math.min(hi, v));
82
+
83
+ const loadCesium = () =>
84
+ new Promise<any>((resolve, reject) => {
85
+ if ((window as any).Cesium) return resolve((window as any).Cesium);
86
+ (window as any).CESIUM_BASE_URL = CDN;
87
+ const css = document.createElement('link');
88
+ css.rel = 'stylesheet';
89
+ css.href = `${CDN}Widgets/widgets.css`;
90
+ document.head.appendChild(css);
91
+ const script = document.createElement('script');
92
+ script.src = `${CDN}Cesium.js`;
93
+ script.onload = () => resolve((window as any).Cesium);
94
+ script.onerror = () =>
95
+ reject(new Error(`Failed to load CesiumJS ${CESIUM_VER}`));
96
+ document.head.appendChild(script);
97
+ });
98
+
99
+ export const CesiumFlythrough: React.FC<CesiumFlythroughProps> = ({
100
+ mode = 'landscape',
101
+ path = terrainPath as LngLat[],
102
+ pathSmoothingPasses = 3,
103
+ altitudeStart = 4600,
104
+ altitudeEnd = 4300,
105
+ lookAheadKm = 1.5,
106
+ travelKm = 13,
107
+ pitchFromNadir = 76,
108
+ verticalExaggeration = 1.1,
109
+ maximumScreenSpaceError = 8,
110
+ }) => {
111
+ const containerRef = useRef<HTMLDivElement>(null);
112
+ const started = useRef(false);
113
+ const viewerRef = useRef<any>(null);
114
+ const tilesetRef = useRef<any>(null);
115
+ const frame = useCurrentFrame();
116
+ const {durationInFrames, fps, width, height} = useVideoConfig();
117
+ const [ready, setReady] = useState(false);
118
+ const [handle] = useState(() =>
119
+ delayRender(`cesium init: ${mode}`, {timeoutInMilliseconds: 120000}),
120
+ );
121
+ const walker = useMemo(
122
+ () => makePathWalker(smoothFlightPath(path, pathSmoothingPasses)),
123
+ [path, pathSmoothingPasses],
124
+ );
125
+
126
+ const setCamera = (C: any, viewer: any, progress: number) => {
127
+ const maxTravel = Math.max(0, walker.lengthKm - lookAheadKm * 2);
128
+ const cameraDistance = Math.min(travelKm, maxTravel) * progress;
129
+ const camera = walker.along(cameraDistance);
130
+ const aim = walker.along(cameraDistance + lookAheadKm);
131
+ const aim2 = walker.along(cameraDistance + lookAheadKm * 2);
132
+ const heading = bearing(camera, aim);
133
+ let headingDelta = bearing(aim, aim2) - heading;
134
+ while (headingDelta > Math.PI) headingDelta -= 2 * Math.PI;
135
+ while (headingDelta < -Math.PI) headingDelta += 2 * Math.PI;
136
+ viewer.camera.setView({
137
+ destination: C.Cartesian3.fromDegrees(
138
+ camera[0],
139
+ camera[1],
140
+ lerp(altitudeStart, altitudeEnd, progress),
141
+ ),
142
+ orientation: {
143
+ heading,
144
+ pitch: C.Math.toRadians(-(90 - pitchFromNadir)),
145
+ roll: clamp(headingDelta * BANK_GAIN, -MAX_BANK, MAX_BANK),
146
+ },
147
+ });
148
+ };
149
+
150
+ const tilesAreLoaded = (viewer: any) => {
151
+ if (mode === 'landscape') return viewer.scene.globe.tilesLoaded;
152
+ return Boolean(tilesetRef.current?.tilesLoaded);
153
+ };
154
+
155
+ const settle = (viewer: any) =>
156
+ new Promise<void>((resolve) => {
157
+ let stable = 0;
158
+ let ticks = 0;
159
+ const tick = () => {
160
+ viewer.render();
161
+ ticks++;
162
+ stable = tilesAreLoaded(viewer) ? stable + 1 : 0;
163
+ if (stable > 8 || ticks > 600) {
164
+ viewer.render();
165
+ resolve();
166
+ } else {
167
+ setTimeout(tick, 8);
168
+ }
169
+ };
170
+ tick();
171
+ });
172
+
173
+ useEffect(() => {
174
+ if (started.current) return;
175
+ started.current = true;
176
+ (async () => {
177
+ if (mode === 'landscape' && !MAPTILER_KEY) {
178
+ throw new Error(
179
+ 'Set REMOTION_MAPTILER_KEY. Create a key at https://cloud.maptiler.com/account/keys/',
180
+ );
181
+ }
182
+ if (mode === 'city' && !GOOGLE_MAPS_API_KEY) {
183
+ throw new Error(
184
+ 'Set REMOTION_GOOGLE_MAPS_API_KEY. Create a Map Tiles API key at https://developers.google.com/maps/documentation/tile/get-api-key',
185
+ );
186
+ }
187
+ if (mode === 'city' && durationInFrames / fps > 30) {
188
+ throw new Error(
189
+ 'Google Photorealistic 3D Tiles compositions must not exceed 30 seconds',
190
+ );
191
+ }
192
+
193
+ const C = await loadCesium();
194
+ const viewer = new C.Viewer(containerRef.current, {
195
+ baseLayer: false,
196
+ baseLayerPicker: false,
197
+ geocoder: false,
198
+ homeButton: false,
199
+ sceneModePicker: false,
200
+ navigationHelpButton: false,
201
+ animation: false,
202
+ timeline: false,
203
+ fullscreenButton: false,
204
+ infoBox: false,
205
+ selectionIndicator: false,
206
+ contextOptions: {webgl: {preserveDrawingBuffer: true}},
207
+ });
208
+ if (mode === 'landscape') {
209
+ viewer.imageryLayers.addImageryProvider(
210
+ new C.UrlTemplateImageryProvider({
211
+ url: `https://api.maptiler.com/tiles/satellite-v2/{z}/{x}/{y}.jpg?key=${MAPTILER_KEY}`,
212
+ maximumLevel: 20,
213
+ }),
214
+ );
215
+ viewer.terrainProvider = await C.CesiumTerrainProvider.fromUrl(
216
+ `https://api.maptiler.com/tiles/terrain-quantized-mesh-v2/?key=${MAPTILER_KEY}`,
217
+ {requestVertexNormals: true},
218
+ );
219
+ viewer.creditDisplay.addStaticCredit(
220
+ new C.Credit(
221
+ '<a href="https://www.maptiler.com/copyright/" target="_blank">&copy; MapTiler</a>',
222
+ true,
223
+ ),
224
+ );
225
+ }
226
+ if (mode === 'city') {
227
+ viewer.scene.globe.show = false;
228
+ const tileset = await C.Cesium3DTileset.fromUrl(
229
+ `https://tile.googleapis.com/v1/3dtiles/root.json?key=${GOOGLE_MAPS_API_KEY}`,
230
+ {
231
+ showCreditsOnScreen: true,
232
+ maximumScreenSpaceError,
233
+ },
234
+ );
235
+ viewer.scene.primitives.add(tileset);
236
+ tilesetRef.current = tileset;
237
+ }
238
+
239
+ viewer.useDefaultRenderLoop = false;
240
+ viewer.scene.skyAtmosphere.show = true;
241
+ viewer.scene.fog.enabled = true;
242
+ viewer.scene.globe.enableLighting = false;
243
+ viewer.scene.verticalExaggeration = verticalExaggeration;
244
+ (window as any).__CESIUM_FLYOVER__ = {C, mode};
245
+ viewerRef.current = viewer;
246
+ setCamera(C, viewer, 0);
247
+ await settle(viewer);
248
+ setReady(true);
249
+ continueRender(handle);
250
+ })().catch((error) => cancelRender(error));
251
+ }, [durationInFrames, fps, handle, mode]);
252
+
253
+ useEffect(() => {
254
+ if (!ready) return;
255
+ const frameHandle = delayRender(`cesium ${mode} frame ${frame}`, {
256
+ timeoutInMilliseconds: 60000,
257
+ });
258
+ const C = (window as any).__CESIUM_FLYOVER__.C;
259
+ const viewer = viewerRef.current;
260
+ const progress = durationInFrames <= 1 ? 0 : frame / (durationInFrames - 1);
261
+ setCamera(C, viewer, progress);
262
+ settle(viewer).then(() => continueRender(frameHandle));
263
+ }, [ready, frame, durationInFrames, mode]);
264
+
265
+ return (
266
+ <AbsoluteFill style={{backgroundColor: '#000'}}>
267
+ <div ref={containerRef} style={{width, height, position: 'absolute'}} />
268
+ {mode === 'city' ? (
269
+ <div
270
+ style={{
271
+ position: 'absolute',
272
+ top: 20,
273
+ right: 24,
274
+ color: 'white',
275
+ font: '500 18px/1.2 sans-serif',
276
+ textShadow: '0 1px 4px black',
277
+ }}
278
+ >
279
+ For promotional purposes only
280
+ </div>
281
+ ) : null}
282
+ </AbsoluteFill>
283
+ );
284
+ };
@@ -0,0 +1,299 @@
1
+ [
2
+ [94.986139893537, 29.76417312959953],
3
+ [94.98637054463002, 29.764163024004816],
4
+ [94.98661427422437, 29.764153025681516],
5
+ [94.9868698103708, 29.764142908388347],
6
+ [94.98713600736019, 29.764132461562934],
7
+ [94.98741179569139, 29.76412145291623],
8
+ [94.9876962466277, 29.764109663422126],
9
+ [94.98798853462426, 29.764096898390772],
10
+ [94.98828790834106, 29.764082995679242],
11
+ [94.98859364523021, 29.764067827511347],
12
+ [94.98890509685035, 29.764051279216236],
13
+ [94.98922167960325, 29.76403324759024],
14
+ [94.98954294512464, 29.76401367774424],
15
+ [94.9898685550894, 29.76399255290906],
16
+ [94.99019820264337, 29.76396985787546],
17
+ [94.9905316178847, 29.763945606334815],
18
+ [94.9908685732739, 29.763919866576575],
19
+ [94.99120886105722, 29.763892700951896],
20
+ [94.99155229116181, 29.7638641665054],
21
+ [94.99189872300363, 29.76383429811986],
22
+ [94.99224811692223, 29.763803085651237],
23
+ [94.99260053337049, 29.763770509641105],
24
+ [94.99295601118384, 29.76373658086857],
25
+ [94.99331456742908, 29.763701322339223],
26
+ [94.99367598745215, 29.763664830647013],
27
+ [94.99404000156176, 29.763627219082974],
28
+ [94.99440635968021, 29.763588592698778],
29
+ [94.99477481502787, 29.76354905236459],
30
+ [94.9951451006731, 29.763508748648892],
31
+ [94.99578766204738, 29.763462125646818],
32
+ [94.99643710580968, 29.763412119743368],
33
+ [94.99709296623192, 29.763358988682928],
34
+ [94.99775479298779, 29.763302979031952],
35
+ [94.99842214521965, 29.763244327404465],
36
+ [94.99909470569231, 29.763183258547627],
37
+ [94.9997722961385, 29.76312010454948],
38
+ [95.00045474013422, 29.763055184243758],
39
+ [95.00114189582168, 29.762988795623112],
40
+ [95.00183368970049, 29.762921207778405],
41
+ [95.0025300799095, 29.76285270023514],
42
+ [95.00323103443773, 29.762783549665084],
43
+ [95.00393658318124, 29.76271400155497],
44
+ [95.00464681949704, 29.76264432424487],
45
+ [95.00536183331896, 29.76257477740286],
46
+ [95.00608171146906, 29.762505612813378],
47
+ [95.00680653793428, 29.762437075077955],
48
+ [95.00753639864557, 29.762369398844733],
49
+ [95.00827137837749, 29.762302811854063],
50
+ [95.00901153006761, 29.762237519590354],
51
+ [95.00975680776318, 29.76217368790719],
52
+ [95.01050716875933, 29.762111478518566],
53
+ [95.0112626067996, 29.76205102042169],
54
+ [95.01202312290016, 29.761992432502932],
55
+ [95.01278871942189, 29.76193583156792],
56
+ [95.01355940108247, 29.761881333165324],
57
+ [95.01433525277555, 29.761829093407865],
58
+ [95.01511636205572, 29.761779224166457],
59
+ [95.01590278872715, 29.76173180995877],
60
+ [95.0166868810408, 29.76168612055982],
61
+ [95.01746871725406, 29.761642332250204],
62
+ [95.0182483756254, 29.76160062131038],
63
+ [95.01902596675926, 29.761561177619345],
64
+ [95.019801682618, 29.761524238306453],
65
+ [95.02057570378254, 29.76149004865798],
66
+ [95.02134818878243, 29.761458838563573],
67
+ [95.02211921065114, 29.761430763930672],
68
+ [95.02288888930805, 29.761405973069504],
69
+ [95.02365734467304, 29.761384614290225],
70
+ [95.02442469666667, 29.761366835902948],
71
+ [95.02519095257038, 29.761352731197437],
72
+ [95.02595602043016, 29.761342344990513],
73
+ [95.02671980829304, 29.761335722099044],
74
+ [95.02748221022355, 29.76133286485609],
75
+ [95.02824308111781, 29.761333684556867],
76
+ [95.02900227020879, 29.761338090875398],
77
+ [95.02975960629327, 29.76134599002589],
78
+ [95.03051480114966, 29.76135728786741],
79
+ [95.03126749207338, 29.761371921751238],
80
+ [95.03201723576402, 29.761389829130785],
81
+ [95.03276363398774, 29.761410893146387],
82
+ [95.03350632277824, 29.761434973117545],
83
+ [95.03424521675927, 29.76146183394706],
84
+ [95.03498037607913, 29.761491215377145],
85
+ [95.035711917426, 29.761522866578012],
86
+ [95.03643998610582, 29.761556530192124],
87
+ [95.03716475930274, 29.761591886465347],
88
+ [95.03788653744915, 29.761628566185358],
89
+ [95.03860571883365, 29.76166618469001],
90
+ [95.03932258585421, 29.76170436456548],
91
+ [95.04003738892985, 29.76174273062808],
92
+ [95.04075025083816, 29.76178094997509],
93
+ [95.0414610559133, 29.76181870813213],
94
+ [95.04216961904287, 29.761855638407084],
95
+ [95.04287591713418, 29.761891331889718],
96
+ [95.04357986124926, 29.761925397709096],
97
+ [95.04428137757625, 29.761957488479126],
98
+ [95.04498041854592, 29.76198725048925],
99
+ [95.04567682817188, 29.762014317811357],
100
+ [95.04637032968634, 29.762038376323694],
101
+ [95.04706059416637, 29.762059099770216],
102
+ [95.04774726432963, 29.762076162373777],
103
+ [95.0484300050609, 29.762089241174117],
104
+ [95.04910871445378, 29.762098042845082],
105
+ [95.04978328153793, 29.762102280852183],
106
+ [95.05045359964508, 29.76210167552205],
107
+ [95.05111966253706, 29.76209602004179],
108
+ [95.05178153406797, 29.762085106891018],
109
+ [95.05243927503516, 29.762068731547185],
110
+ [95.05309287649075, 29.762046750046103],
111
+ [95.0537422946664, 29.762019099359485],
112
+ [95.05438748396233, 29.761985721609257],
113
+ [95.05502839823626, 29.76194655859307],
114
+ [95.05566488201883, 29.761901557942874],
115
+ [95.05629656919591, 29.761850805510885],
116
+ [95.05692313234233, 29.761794428680094],
117
+ [95.0575442743842, 29.761732580860688],
118
+ [95.0581596433054, 29.761665348138973],
119
+ [95.05876888708963, 29.761592816601354],
120
+ [95.05937164047754, 29.761515065256333],
121
+ [95.05996759228947, 29.761432144038746],
122
+ [95.06055643134583, 29.761344102883623],
123
+ [95.06113793491645, 29.761251010034922],
124
+ [95.06171214230999, 29.761153046649387],
125
+ [95.06227907948092, 29.761050389948267],
126
+ [95.06283877238438, 29.760943217152814],
127
+ [95.06339127381165, 29.760831691663462],
128
+ [95.06393669678933, 29.760716002374487],
129
+ [95.06447520396281, 29.76059636241658],
130
+ [95.06500695797821, 29.760472984920362],
131
+ [95.06553212847378, 29.760346104258282],
132
+ [95.0660508986937, 29.760216015040477],
133
+ [95.06656344194985, 29.760083025494016],
134
+ [95.06707002648291, 29.75994741412334],
135
+ [95.06757112978441, 29.759809440866206],
136
+ [95.06806722979658, 29.759669344181514],
137
+ [95.06855878142073, 29.759527354008487],
138
+ [95.06904617625263, 29.759383697903765],
139
+ [95.06952978875404, 29.75923861533451],
140
+ [95.07000993080214, 29.759092371156385],
141
+ [95.07048679175114, 29.758945227682446],
142
+ [95.07096044787545, 29.75879742836973],
143
+ [95.07143096114058, 29.758649219939148],
144
+ [95.0718984144853, 29.758500858117706],
145
+ [95.07236278188816, 29.7583525823887],
146
+ [95.07282412506945, 29.758204644682806],
147
+ [95.07328275575983, 29.75805728963777],
148
+ [95.07373905641253, 29.757910760813612],
149
+ [95.07419366476313, 29.757765217208473],
150
+ [95.07464735762416, 29.757620800921966],
151
+ [95.07510085345471, 29.757477677507868],
152
+ [95.07555467766437, 29.757336168750566],
153
+ [95.07600940811365, 29.757196598118206],
154
+ [95.07646537399586, 29.75705931280275],
155
+ [95.0769228207089, 29.756924677394206],
156
+ [95.07738220221682, 29.756793075496777],
157
+ [95.07784401968648, 29.75666487927172],
158
+ [95.07830874492939, 29.756540496044202],
159
+ [95.07877690647402, 29.756420332181715],
160
+ [95.07924898851259, 29.75630478841808],
161
+ [95.07972503722137, 29.756194196891926],
162
+ [95.08020511490892, 29.756088882533362],
163
+ [95.0806891403115, 29.75598918720403],
164
+ [95.08117690920173, 29.75589531641115],
165
+ [95.08166835685006, 29.755807414283098],
166
+ [95.08216335868525, 29.75572566824862],
167
+ [95.08266177736347, 29.755650250535062],
168
+ [95.08316349491537, 29.75558120546187],
169
+ [95.08366839703267, 29.755518567048284],
170
+ [95.08417639041532, 29.75546236367944],
171
+ [95.08468755179344, 29.755412571989652],
172
+ [95.08520236790308, 29.755369015997044],
173
+ [95.08572134650697, 29.75533148313236],
174
+ [95.0862450098908, 29.755299740305322],
175
+ [95.08677390781156, 29.75527358808779],
176
+ [95.08730861289804, 29.755252808551163],
177
+ [95.08784970300886, 29.755237175354623],
178
+ [95.08839755885471, 29.755226476280296],
179
+ [95.08895256438073, 29.755220494902016],
180
+ [95.089514993805, 29.755219019351184],
181
+ [95.09008489086116, 29.7552217729881],
182
+ [95.09066229928165, 29.75522847917293],
183
+ [95.09124726342738, 29.755238870403907],
184
+ [95.09183976966378, 29.755252726598844],
185
+ [95.09243978867215, 29.75526985018834],
186
+ [95.09304723439128, 29.755290065097345],
187
+ [95.09366184648091, 29.75531326126932],
188
+ [95.09428337414857, 29.755339326723966],
189
+ [95.09491171647382, 29.755368102171502],
190
+ [95.09554680939114, 29.75539940595205],
191
+ [95.09618846028675, 29.755433126230766],
192
+ [95.09683632409143, 29.75546923335011],
193
+ [95.09749004228215, 29.75550775219342],
194
+ [95.09814924669702, 29.755548754655436],
195
+ [95.0988136358514, 29.755592374644042],
196
+ [95.09948290826172, 29.755638746066982],
197
+ [95.1001568080277, 29.75568798494813],
198
+ [95.10083517891061, 29.75574017449467],
199
+ [95.10151797539464, 29.75579531974171],
200
+ [95.1022051519645, 29.755853425724286],
201
+ [95.10289664375364, 29.755914488290983],
202
+ [95.10359258928374, 29.755978570204803],
203
+ [95.10429306658138, 29.756045742645284],
204
+ [95.10499798654989, 29.756116067070348],
205
+ [95.10570717321444, 29.75618958016383],
206
+ [95.10642032295875, 29.75626636089044],
207
+ [95.10713711848761, 29.756346492746122],
208
+ [95.10785729025027, 29.75643004436662],
209
+ [95.10858043622838, 29.75651688160893],
210
+ [95.10930611534633, 29.75660684892344],
211
+ [95.11003407093642, 29.756699686157475],
212
+ [95.11076414467685, 29.756795123665622],
213
+ [95.1114960914754, 29.756892893838618],
214
+ [95.11222971288655, 29.756992700238396],
215
+ [95.1129649452222, 29.75709420093414],
216
+ [95.11370170201873, 29.75719709582746],
217
+ [95.11443986012442, 29.757301125099488],
218
+ [95.11517935555177, 29.7574061249826],
219
+ [95.11592009761476, 29.757511940391662],
220
+ [95.11666232015585, 29.75761835330566],
221
+ [95.11740624233691, 29.757725222810585],
222
+ [95.11815181076378, 29.75783253698326],
223
+ [95.11889913308254, 29.757940178669305],
224
+ [95.11964841222917, 29.758048000558695],
225
+ [95.12039993276164, 29.758155854652614],
226
+ [95.12115399312397, 29.75826357999786],
227
+ [95.1219108497459, 29.75837102690515],
228
+ [95.1226706293697, 29.758478081829693],
229
+ [95.12343325561484, 29.758584686897258],
230
+ [95.12419857627997, 29.758690818430438],
231
+ [95.12496638982559, 29.75879646083105],
232
+ [95.12573649209446, 29.7589015818837],
233
+ [95.12650863318528, 29.75900618637391],
234
+ [95.12728253192327, 29.759110282431784],
235
+ [95.12805798566751, 29.75921386162033],
236
+ [95.12883477913662, 29.759316919371038],
237
+ [95.12961273528985, 29.759419445656786],
238
+ [95.13039166301432, 29.759521458216526],
239
+ [95.13117134363408, 29.759622963323043],
240
+ [95.13195155721434, 29.759723948972997],
241
+ [95.13273211930314, 29.759824349786275],
242
+ [95.13351286507051, 29.759924061406032],
243
+ [95.13428648274362, 29.76002351015658],
244
+ [95.1350533298064, 29.760122544307915],
245
+ [95.1358137532818, 29.760221010686855],
246
+ [95.13656784419986, 29.760318809952974],
247
+ [95.13731567503761, 29.76041584848236],
248
+ [95.1380573752464, 29.760511990985425],
249
+ [95.13879310931623, 29.76060704815151],
250
+ [95.13952306473344, 29.760700794123938],
251
+ [95.14024751710419, 29.7607929520901],
252
+ [95.14096671686433, 29.760883206230545],
253
+ [95.14168092332761, 29.76097123202995],
254
+ [95.14239029599311, 29.761056732470486],
255
+ [95.14309486625548, 29.761139484506582],
256
+ [95.14379454089128, 29.761219462160696],
257
+ [95.14448922306659, 29.76129664046317],
258
+ [95.14517882147311, 29.76137100941381],
259
+ [95.14586312132259, 29.761442532574584],
260
+ [95.14654188135431, 29.761511168945386],
261
+ [95.14721489938523, 29.761576901934955],
262
+ [95.14788204807155, 29.761639772673718],
263
+ [95.14854319868547, 29.76169982923195],
264
+ [95.14919822095698, 29.761757127412878],
265
+ [95.14984699116548, 29.76181173598209],
266
+ [95.15048960377052, 29.761863851723042],
267
+ [95.15112617637942, 29.761913696049017],
268
+ [95.15175681293137, 29.761961561816054],
269
+ [95.15238148064795, 29.762007691856205],
270
+ [95.15300009096235, 29.762052309028526],
271
+ [95.1533539374323, 29.762086082676035],
272
+ [95.15370650809008, 29.762118928860186],
273
+ [95.15405759583123, 29.762150875711065],
274
+ [95.15440704121897, 29.76218191319173],
275
+ [95.1547548321985, 29.762211967913583],
276
+ [95.15510097264206, 29.762240955288657],
277
+ [95.15544525415498, 29.762268829619945],
278
+ [95.15578751039571, 29.76229553455492],
279
+ [95.15612769998111, 29.762320941845203],
280
+ [95.15646565712565, 29.762344985615734],
281
+ [95.156801142589, 29.76236761294652],
282
+ [95.1571338046714, 29.76238883654028],
283
+ [95.15746323934037, 29.76240869370805],
284
+ [95.15778903282519, 29.762427217766984],
285
+ [95.15811077257146, 29.762444433666733],
286
+ [95.15842800577592, 29.762460368791256],
287
+ [95.15874028837707, 29.76247502889767],
288
+ [95.15904716834646, 29.76248842410003],
289
+ [95.1593481499996, 29.762500590502704],
290
+ [95.15964271930007, 29.76251153961251],
291
+ [95.1599303416933, 29.76252129267978],
292
+ [95.16021045104225, 29.762529892932115],
293
+ [95.16048243037355, 29.762537389252305],
294
+ [95.16074559672008, 29.762543832974302],
295
+ [95.1609993202866, 29.762549265122786],
296
+ [95.16124294069552, 29.762553753099137],
297
+ [95.16147571071544, 29.762557390653928],
298
+ [95.16169677155058, 29.762560323342807]
299
+ ]
@@ -0,0 +1,12 @@
1
+ [
2
+ [-74.0135, 40.7047],
3
+ [-74.0102, 40.7104],
4
+ [-74.0074, 40.7167],
5
+ [-74.0047, 40.7232],
6
+ [-74.0017, 40.7297],
7
+ [-73.9988, 40.7362],
8
+ [-73.9954, 40.7429],
9
+ [-73.9917, 40.7496],
10
+ [-73.9882, 40.7563],
11
+ [-73.9848, 40.7631]
12
+ ]