dsh-remotion 0.3.4 → 0.4.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/CHANGELOG.md +26 -0
  2. package/README.en.md +26 -65
  3. package/README.md +25 -67
  4. package/docs/USAGE.en.md +93 -0
  5. package/docs/USAGE.md +97 -0
  6. package/docs/VALIDATION.md +24 -0
  7. package/docs/validation-language-2026-10-03.md +16 -0
  8. package/lib/client.js +105 -0
  9. package/lib/index.d.ts +3 -0
  10. package/lib/index.js +5 -1
  11. package/lib/media-store.d.ts +25 -0
  12. package/lib/media-store.js +174 -0
  13. package/lib/media-templates.d.ts +52 -0
  14. package/lib/media-templates.js +91 -0
  15. package/lib/media-workbench.d.ts +42 -0
  16. package/lib/media-workbench.js +476 -0
  17. package/package.json +18 -5
  18. package/scripts/build-client.mjs +4 -0
  19. package/skills/remotion-best-practices/SKILL.md +54 -54
  20. package/skills/remotion-best-practices/agents/openai.yaml +7 -7
  21. package/skills/remotion-best-practices/assets/remotion-icon.svg +4 -4
  22. package/skills/remotion-best-practices/remotion-captions/REFERENCE.md +36 -36
  23. package/skills/remotion-best-practices/remotion-captions/agents/openai.yaml +7 -7
  24. package/skills/remotion-best-practices/remotion-captions/assets/remotion-icon.svg +4 -4
  25. package/skills/remotion-best-practices/remotion-captions/display-captions.md +190 -190
  26. package/skills/remotion-best-practices/remotion-captions/import-srt-captions.md +73 -73
  27. package/skills/remotion-best-practices/remotion-captions/transcribe-captions.md +70 -70
  28. package/skills/remotion-best-practices/remotion-create/REFERENCE.md +85 -85
  29. package/skills/remotion-best-practices/remotion-create/agents/openai.yaml +7 -7
  30. package/skills/remotion-best-practices/remotion-create/assets/remotion-icon.svg +4 -4
  31. package/skills/remotion-best-practices/remotion-create/tailwind.md +11 -11
  32. package/skills/remotion-best-practices/remotion-create/video-layout.md +9 -9
  33. package/skills/remotion-best-practices/remotion-docs/REFERENCE.md +46 -46
  34. package/skills/remotion-best-practices/remotion-docs/agents/openai.yaml +7 -7
  35. package/skills/remotion-best-practices/remotion-docs/assets/remotion-icon.svg +4 -4
  36. package/skills/remotion-best-practices/remotion-interactivity/REFERENCE.md +315 -315
  37. package/skills/remotion-best-practices/remotion-interactivity/agents/openai.yaml +7 -7
  38. package/skills/remotion-best-practices/remotion-interactivity/assets/remotion-icon.svg +4 -4
  39. package/skills/remotion-best-practices/remotion-maps/REFERENCE.md +36 -36
  40. package/skills/remotion-best-practices/remotion-maps/agents/openai.yaml +7 -7
  41. package/skills/remotion-best-practices/remotion-maps/assets/remotion-icon.svg +4 -4
  42. package/skills/remotion-best-practices/remotion-maps/techniques/cesium/TECHNIQUE.md +89 -89
  43. package/skills/remotion-best-practices/remotion-maps/techniques/cesium/assets/CesiumFlythrough.tsx +284 -284
  44. package/skills/remotion-best-practices/remotion-maps/techniques/cesium/assets/cesium-path.json +299 -299
  45. package/skills/remotion-best-practices/remotion-maps/techniques/cesium/assets/city-path.json +12 -12
  46. package/skills/remotion-best-practices/remotion-maps/techniques/cesium/assets/example-Root.tsx +39 -39
  47. package/skills/remotion-best-practices/remotion-maps/techniques/cesium/assets/flight-path.ts +35 -35
  48. package/skills/remotion-best-practices/remotion-maps/techniques/cesium/assets/sample-river.geojson +215 -215
  49. package/skills/remotion-best-practices/remotion-maps/techniques/cesium/references/3d-data-sources.md +43 -43
  50. package/skills/remotion-best-practices/remotion-maps/techniques/cesium/references/3d-flyover-architecture.md +128 -128
  51. package/skills/remotion-best-practices/remotion-maps/techniques/cesium/references/3d-troubleshooting.md +57 -57
  52. package/skills/remotion-best-practices/remotion-maps/techniques/cesium/scripts/prep-cesium-path.mjs +161 -161
  53. package/skills/remotion-best-practices/remotion-maps/techniques/mapbox/TECHNIQUE.md +449 -449
  54. package/skills/remotion-best-practices/remotion-maps/techniques/mapbox/references/render-stability.md +64 -64
  55. package/skills/remotion-best-practices/remotion-maps/techniques/maplibre/TECHNIQUE.md +484 -484
  56. package/skills/remotion-best-practices/remotion-maps/techniques/maplibre/references/render-stability.md +64 -64
  57. package/skills/remotion-best-practices/remotion-maps/techniques/maptiler/TECHNIQUE.md +80 -80
  58. package/skills/remotion-best-practices/remotion-maps/techniques/maptiler/assets/CountryLabel.tsx +70 -70
  59. package/skills/remotion-best-practices/remotion-maps/techniques/maptiler/assets/MapTilerVectorElement.ts +80 -80
  60. package/skills/remotion-best-practices/remotion-maps/techniques/maptiler/assets/RiverReveal.tsx +363 -363
  61. package/skills/remotion-best-practices/remotion-maps/techniques/maptiler/assets/example-Root.tsx +22 -22
  62. package/skills/remotion-best-practices/remotion-maps/techniques/maptiler/assets/sample-data/country-meta.json +7535 -7535
  63. package/skills/remotion-best-practices/remotion-maps/techniques/maptiler/assets/sample-data/yarlung-flow.json +605 -605
  64. package/skills/remotion-best-practices/remotion-maps/techniques/maptiler/assets/tokens.ts +34 -34
  65. package/skills/remotion-best-practices/remotion-maps/techniques/maptiler/references/map-data-sources.md +91 -91
  66. package/skills/remotion-best-practices/remotion-maps/techniques/maptiler/references/map-explainer-architecture.md +129 -129
  67. package/skills/remotion-best-practices/remotion-maps/techniques/maptiler/references/map-geo-prep.md +85 -85
  68. package/skills/remotion-best-practices/remotion-maps/techniques/maptiler/references/render-stability.md +64 -64
  69. package/skills/remotion-best-practices/remotion-maps/techniques/maptiler/scripts/prep-geo.mjs +202 -202
  70. package/skills/remotion-best-practices/remotion-maps/techniques/static-map/TECHNIQUE.md +37 -37
  71. package/skills/remotion-best-practices/remotion-markup/3d.md +86 -86
  72. package/skills/remotion-best-practices/remotion-markup/REFERENCE.md +358 -358
  73. package/skills/remotion-best-practices/remotion-markup/agents/openai.yaml +7 -7
  74. package/skills/remotion-best-practices/remotion-markup/assets/remotion-icon.svg +4 -4
  75. package/skills/remotion-best-practices/remotion-markup/audio-visualization.md +198 -198
  76. package/skills/remotion-best-practices/remotion-markup/audio.md +169 -169
  77. package/skills/remotion-best-practices/remotion-markup/calculate-metadata.md +136 -136
  78. package/skills/remotion-best-practices/remotion-markup/compositions.md +123 -123
  79. package/skills/remotion-best-practices/remotion-markup/connected-compositions.md +79 -79
  80. package/skills/remotion-best-practices/remotion-markup/cropping.md +34 -34
  81. package/skills/remotion-best-practices/remotion-markup/effects.md +251 -251
  82. package/skills/remotion-best-practices/remotion-markup/embedding-videos.md +171 -171
  83. package/skills/remotion-best-practices/remotion-markup/ffmpeg.md +38 -38
  84. package/skills/remotion-best-practices/remotion-markup/gifs.md +187 -187
  85. package/skills/remotion-best-practices/remotion-markup/google-fonts.md +76 -76
  86. package/skills/remotion-best-practices/remotion-markup/html-in-canvas.md +128 -128
  87. package/skills/remotion-best-practices/remotion-markup/images.md +73 -73
  88. package/skills/remotion-best-practices/remotion-markup/light-leaks.md +106 -106
  89. package/skills/remotion-best-practices/remotion-markup/local-fonts.md +69 -69
  90. package/skills/remotion-best-practices/remotion-markup/lottie.md +73 -73
  91. package/skills/remotion-best-practices/remotion-markup/measuring-dom-nodes.md +38 -38
  92. package/skills/remotion-best-practices/remotion-markup/measuring-text.md +146 -146
  93. package/skills/remotion-best-practices/remotion-markup/motion-blur.md +60 -60
  94. package/skills/remotion-best-practices/remotion-markup/multi-scene-video.md +81 -81
  95. package/skills/remotion-best-practices/remotion-markup/parameters.md +111 -111
  96. package/skills/remotion-best-practices/remotion-markup/remotion-maps/REFERENCE.md +36 -36
  97. package/skills/remotion-best-practices/remotion-markup/remotion-maps/agents/openai.yaml +7 -7
  98. package/skills/remotion-best-practices/remotion-markup/remotion-maps/assets/remotion-icon.svg +4 -4
  99. package/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/cesium/TECHNIQUE.md +89 -89
  100. package/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/cesium/assets/CesiumFlythrough.tsx +284 -284
  101. package/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/cesium/assets/cesium-path.json +299 -299
  102. package/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/cesium/assets/city-path.json +12 -12
  103. package/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/cesium/assets/example-Root.tsx +39 -39
  104. package/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/cesium/assets/flight-path.ts +35 -35
  105. package/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/cesium/assets/sample-river.geojson +215 -215
  106. package/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/cesium/references/3d-data-sources.md +43 -43
  107. package/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/cesium/references/3d-flyover-architecture.md +128 -128
  108. package/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/cesium/references/3d-troubleshooting.md +57 -57
  109. package/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/cesium/scripts/prep-cesium-path.mjs +161 -161
  110. package/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/mapbox/TECHNIQUE.md +449 -449
  111. package/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/mapbox/references/render-stability.md +64 -64
  112. package/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/maplibre/TECHNIQUE.md +484 -484
  113. package/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/maplibre/references/render-stability.md +64 -64
  114. package/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/maptiler/TECHNIQUE.md +80 -80
  115. package/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/maptiler/assets/CountryLabel.tsx +70 -70
  116. package/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/maptiler/assets/MapTilerVectorElement.ts +80 -80
  117. package/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/maptiler/assets/RiverReveal.tsx +363 -363
  118. package/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/maptiler/assets/example-Root.tsx +22 -22
  119. package/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/maptiler/assets/sample-data/country-meta.json +7535 -7535
  120. package/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/maptiler/assets/sample-data/yarlung-flow.json +605 -605
  121. package/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/maptiler/assets/tokens.ts +34 -34
  122. package/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/maptiler/references/map-data-sources.md +91 -91
  123. package/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/maptiler/references/map-explainer-architecture.md +129 -129
  124. package/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/maptiler/references/map-geo-prep.md +85 -85
  125. package/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/maptiler/references/render-stability.md +64 -64
  126. package/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/maptiler/scripts/prep-geo.mjs +202 -202
  127. package/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/static-map/TECHNIQUE.md +37 -37
  128. package/skills/remotion-best-practices/remotion-markup/sequencing.md +169 -169
  129. package/skills/remotion-best-practices/remotion-markup/sfx.md +51 -51
  130. package/skills/remotion-best-practices/remotion-markup/silence-detection.md +71 -71
  131. package/skills/remotion-best-practices/remotion-markup/text-highlights.md +56 -56
  132. package/skills/remotion-best-practices/remotion-markup/timing.md +111 -111
  133. package/skills/remotion-best-practices/remotion-markup/transitions.md +239 -239
  134. package/skills/remotion-best-practices/remotion-markup/video-editing.md +90 -90
  135. package/skills/remotion-best-practices/remotion-markup/voiceover.md +99 -99
  136. package/skills/remotion-best-practices/remotion-multimedia/REFERENCE.md +20 -20
  137. package/skills/remotion-best-practices/remotion-multimedia/agents/openai.yaml +7 -7
  138. package/skills/remotion-best-practices/remotion-multimedia/assets/remotion-icon.svg +4 -4
  139. package/skills/remotion-best-practices/remotion-multimedia/get-audio-duration.md +56 -56
  140. package/skills/remotion-best-practices/remotion-multimedia/get-video-dimensions.md +66 -66
  141. package/skills/remotion-best-practices/remotion-multimedia/get-video-duration.md +58 -58
  142. package/skills/remotion-best-practices/remotion-render/REFERENCE.md +35 -35
  143. package/skills/remotion-best-practices/remotion-render/agents/openai.yaml +7 -7
  144. package/skills/remotion-best-practices/remotion-render/assets/remotion-icon.svg +4 -4
  145. package/skills/remotion-best-practices/remotion-render/transparent-videos.md +106 -106
  146. package/skills/remotion-best-practices/remotion-saas/REFERENCE.md +33 -33
  147. package/skills/remotion-best-practices/remotion-saas/agents/openai.yaml +7 -7
  148. package/skills/remotion-best-practices/remotion-saas/assets/remotion-icon.svg +4 -4
  149. package/skills/remotion-best-practices/remotion-saas/framework.md +19 -19
  150. package/skills/remotion-best-practices/remotion-saas/player.md +33 -33
  151. package/skills/remotion-best-practices/remotion-saas/rendering.md +69 -69
  152. package/skills/remotion-best-practices/remotion-studio/REFERENCE.md +24 -24
  153. package/skills/remotion-best-practices/remotion-studio/agents/openai.yaml +7 -7
  154. package/skills/remotion-best-practices/remotion-studio/assets/remotion-icon.svg +4 -4
  155. package/skills/remotion-best-practices/remotion-upgrade/REFERENCE.md +31 -31
  156. package/skills/remotion-best-practices/remotion-upgrade/agents/openai.yaml +7 -7
  157. package/skills/remotion-best-practices/remotion-upgrade/assets/remotion-icon.svg +4 -4
  158. package/skills/remotion-captions/SKILL.md +31 -31
  159. package/skills/remotion-captions/agents/openai.yaml +7 -7
  160. package/skills/remotion-captions/assets/remotion-icon.svg +4 -4
  161. package/skills/remotion-captions/display-captions.md +190 -190
  162. package/skills/remotion-captions/import-srt-captions.md +73 -73
  163. package/skills/remotion-captions/transcribe-captions.md +70 -70
  164. package/skills/remotion-create/SKILL.md +80 -80
  165. package/skills/remotion-create/agents/openai.yaml +7 -7
  166. package/skills/remotion-create/assets/remotion-icon.svg +4 -4
  167. package/skills/remotion-create/tailwind.md +11 -11
  168. package/skills/remotion-create/video-layout.md +9 -9
  169. package/skills/remotion-docs/SKILL.md +41 -41
  170. package/skills/remotion-docs/agents/openai.yaml +7 -7
  171. package/skills/remotion-docs/assets/remotion-icon.svg +4 -4
  172. package/skills/remotion-interactivity/SKILL.md +310 -310
  173. package/skills/remotion-interactivity/agents/openai.yaml +7 -7
  174. package/skills/remotion-interactivity/assets/remotion-icon.svg +4 -4
  175. package/skills/remotion-maps/SKILL.md +31 -31
  176. package/skills/remotion-maps/agents/openai.yaml +7 -7
  177. package/skills/remotion-maps/assets/remotion-icon.svg +4 -4
  178. package/skills/remotion-maps/techniques/cesium/TECHNIQUE.md +89 -89
  179. package/skills/remotion-maps/techniques/cesium/assets/CesiumFlythrough.tsx +284 -284
  180. package/skills/remotion-maps/techniques/cesium/assets/cesium-path.json +299 -299
  181. package/skills/remotion-maps/techniques/cesium/assets/city-path.json +12 -12
  182. package/skills/remotion-maps/techniques/cesium/assets/example-Root.tsx +39 -39
  183. package/skills/remotion-maps/techniques/cesium/assets/flight-path.ts +35 -35
  184. package/skills/remotion-maps/techniques/cesium/assets/sample-river.geojson +215 -215
  185. package/skills/remotion-maps/techniques/cesium/references/3d-data-sources.md +43 -43
  186. package/skills/remotion-maps/techniques/cesium/references/3d-flyover-architecture.md +128 -128
  187. package/skills/remotion-maps/techniques/cesium/references/3d-troubleshooting.md +57 -57
  188. package/skills/remotion-maps/techniques/cesium/scripts/prep-cesium-path.mjs +161 -161
  189. package/skills/remotion-maps/techniques/mapbox/TECHNIQUE.md +449 -449
  190. package/skills/remotion-maps/techniques/mapbox/references/render-stability.md +64 -64
  191. package/skills/remotion-maps/techniques/maplibre/TECHNIQUE.md +484 -484
  192. package/skills/remotion-maps/techniques/maplibre/references/render-stability.md +64 -64
  193. package/skills/remotion-maps/techniques/maptiler/TECHNIQUE.md +80 -80
  194. package/skills/remotion-maps/techniques/maptiler/assets/CountryLabel.tsx +70 -70
  195. package/skills/remotion-maps/techniques/maptiler/assets/MapTilerVectorElement.ts +80 -80
  196. package/skills/remotion-maps/techniques/maptiler/assets/RiverReveal.tsx +363 -363
  197. package/skills/remotion-maps/techniques/maptiler/assets/example-Root.tsx +22 -22
  198. package/skills/remotion-maps/techniques/maptiler/assets/sample-data/country-meta.json +7535 -7535
  199. package/skills/remotion-maps/techniques/maptiler/assets/sample-data/yarlung-flow.json +605 -605
  200. package/skills/remotion-maps/techniques/maptiler/assets/tokens.ts +34 -34
  201. package/skills/remotion-maps/techniques/maptiler/references/map-data-sources.md +91 -91
  202. package/skills/remotion-maps/techniques/maptiler/references/map-explainer-architecture.md +129 -129
  203. package/skills/remotion-maps/techniques/maptiler/references/map-geo-prep.md +85 -85
  204. package/skills/remotion-maps/techniques/maptiler/references/render-stability.md +64 -64
  205. package/skills/remotion-maps/techniques/maptiler/scripts/prep-geo.mjs +202 -202
  206. package/skills/remotion-maps/techniques/static-map/TECHNIQUE.md +37 -37
  207. package/skills/remotion-markup/3d.md +86 -86
  208. package/skills/remotion-markup/SKILL.md +353 -353
  209. package/skills/remotion-markup/agents/openai.yaml +7 -7
  210. package/skills/remotion-markup/assets/remotion-icon.svg +4 -4
  211. package/skills/remotion-markup/audio-visualization.md +198 -198
  212. package/skills/remotion-markup/audio.md +169 -169
  213. package/skills/remotion-markup/calculate-metadata.md +136 -136
  214. package/skills/remotion-markup/compositions.md +123 -123
  215. package/skills/remotion-markup/connected-compositions.md +79 -79
  216. package/skills/remotion-markup/cropping.md +34 -34
  217. package/skills/remotion-markup/effects.md +251 -251
  218. package/skills/remotion-markup/embedding-videos.md +171 -171
  219. package/skills/remotion-markup/ffmpeg.md +38 -38
  220. package/skills/remotion-markup/gifs.md +187 -187
  221. package/skills/remotion-markup/google-fonts.md +76 -76
  222. package/skills/remotion-markup/html-in-canvas.md +128 -128
  223. package/skills/remotion-markup/images.md +73 -73
  224. package/skills/remotion-markup/light-leaks.md +106 -106
  225. package/skills/remotion-markup/local-fonts.md +69 -69
  226. package/skills/remotion-markup/lottie.md +73 -73
  227. package/skills/remotion-markup/measuring-dom-nodes.md +38 -38
  228. package/skills/remotion-markup/measuring-text.md +146 -146
  229. package/skills/remotion-markup/motion-blur.md +60 -60
  230. package/skills/remotion-markup/multi-scene-video.md +81 -81
  231. package/skills/remotion-markup/parameters.md +111 -111
  232. package/skills/remotion-markup/remotion-maps/REFERENCE.md +36 -36
  233. package/skills/remotion-markup/remotion-maps/agents/openai.yaml +7 -7
  234. package/skills/remotion-markup/remotion-maps/assets/remotion-icon.svg +4 -4
  235. package/skills/remotion-markup/remotion-maps/techniques/cesium/TECHNIQUE.md +89 -89
  236. package/skills/remotion-markup/remotion-maps/techniques/cesium/assets/CesiumFlythrough.tsx +284 -284
  237. package/skills/remotion-markup/remotion-maps/techniques/cesium/assets/cesium-path.json +299 -299
  238. package/skills/remotion-markup/remotion-maps/techniques/cesium/assets/city-path.json +12 -12
  239. package/skills/remotion-markup/remotion-maps/techniques/cesium/assets/example-Root.tsx +39 -39
  240. package/skills/remotion-markup/remotion-maps/techniques/cesium/assets/flight-path.ts +35 -35
  241. package/skills/remotion-markup/remotion-maps/techniques/cesium/assets/sample-river.geojson +215 -215
  242. package/skills/remotion-markup/remotion-maps/techniques/cesium/references/3d-data-sources.md +43 -43
  243. package/skills/remotion-markup/remotion-maps/techniques/cesium/references/3d-flyover-architecture.md +128 -128
  244. package/skills/remotion-markup/remotion-maps/techniques/cesium/references/3d-troubleshooting.md +57 -57
  245. package/skills/remotion-markup/remotion-maps/techniques/cesium/scripts/prep-cesium-path.mjs +161 -161
  246. package/skills/remotion-markup/remotion-maps/techniques/mapbox/TECHNIQUE.md +449 -449
  247. package/skills/remotion-markup/remotion-maps/techniques/mapbox/references/render-stability.md +64 -64
  248. package/skills/remotion-markup/remotion-maps/techniques/maplibre/TECHNIQUE.md +484 -484
  249. package/skills/remotion-markup/remotion-maps/techniques/maplibre/references/render-stability.md +64 -64
  250. package/skills/remotion-markup/remotion-maps/techniques/maptiler/TECHNIQUE.md +80 -80
  251. package/skills/remotion-markup/remotion-maps/techniques/maptiler/assets/CountryLabel.tsx +70 -70
  252. package/skills/remotion-markup/remotion-maps/techniques/maptiler/assets/MapTilerVectorElement.ts +80 -80
  253. package/skills/remotion-markup/remotion-maps/techniques/maptiler/assets/RiverReveal.tsx +363 -363
  254. package/skills/remotion-markup/remotion-maps/techniques/maptiler/assets/example-Root.tsx +22 -22
  255. package/skills/remotion-markup/remotion-maps/techniques/maptiler/assets/sample-data/country-meta.json +7535 -7535
  256. package/skills/remotion-markup/remotion-maps/techniques/maptiler/assets/sample-data/yarlung-flow.json +605 -605
  257. package/skills/remotion-markup/remotion-maps/techniques/maptiler/assets/tokens.ts +34 -34
  258. package/skills/remotion-markup/remotion-maps/techniques/maptiler/references/map-data-sources.md +91 -91
  259. package/skills/remotion-markup/remotion-maps/techniques/maptiler/references/map-explainer-architecture.md +129 -129
  260. package/skills/remotion-markup/remotion-maps/techniques/maptiler/references/map-geo-prep.md +85 -85
  261. package/skills/remotion-markup/remotion-maps/techniques/maptiler/references/render-stability.md +64 -64
  262. package/skills/remotion-markup/remotion-maps/techniques/maptiler/scripts/prep-geo.mjs +202 -202
  263. package/skills/remotion-markup/remotion-maps/techniques/static-map/TECHNIQUE.md +37 -37
  264. package/skills/remotion-markup/sequencing.md +169 -169
  265. package/skills/remotion-markup/sfx.md +51 -51
  266. package/skills/remotion-markup/silence-detection.md +71 -71
  267. package/skills/remotion-markup/text-highlights.md +56 -56
  268. package/skills/remotion-markup/timing.md +111 -111
  269. package/skills/remotion-markup/transitions.md +239 -239
  270. package/skills/remotion-markup/video-editing.md +90 -90
  271. package/skills/remotion-markup/voiceover.md +99 -99
  272. package/skills/remotion-multimedia/SKILL.md +15 -15
  273. package/skills/remotion-multimedia/agents/openai.yaml +7 -7
  274. package/skills/remotion-multimedia/assets/remotion-icon.svg +4 -4
  275. package/skills/remotion-multimedia/get-audio-duration.md +56 -56
  276. package/skills/remotion-multimedia/get-video-dimensions.md +66 -66
  277. package/skills/remotion-multimedia/get-video-duration.md +58 -58
  278. package/skills/remotion-render/SKILL.md +30 -30
  279. package/skills/remotion-render/agents/openai.yaml +7 -7
  280. package/skills/remotion-render/assets/remotion-icon.svg +4 -4
  281. package/skills/remotion-render/transparent-videos.md +106 -106
  282. package/skills/remotion-saas/SKILL.md +28 -28
  283. package/skills/remotion-saas/agents/openai.yaml +7 -7
  284. package/skills/remotion-saas/assets/remotion-icon.svg +4 -4
  285. package/skills/remotion-saas/framework.md +19 -19
  286. package/skills/remotion-saas/player.md +33 -33
  287. package/skills/remotion-saas/rendering.md +69 -69
  288. package/skills/remotion-studio/SKILL.md +19 -19
  289. package/skills/remotion-studio/agents/openai.yaml +7 -7
  290. package/skills/remotion-studio/assets/remotion-icon.svg +4 -4
  291. package/skills/remotion-upgrade/SKILL.md +26 -26
  292. package/skills/remotion-upgrade/agents/openai.yaml +7 -7
  293. package/skills/remotion-upgrade/assets/remotion-icon.svg +4 -4
  294. package/templates/DESIGN.md +26 -0
@@ -1,161 +1,161 @@
1
- // Camera-path generator for the Cesium flythrough. Turns a river/route centerline GeoJSON into a LONG,
2
- // CONTINUOUSLY-curving camera path so the camera banks through smooth flowing curves (no
3
- // straight-then-corner). Method: clip → resample to even spacing → moving-average smooth (inherently
4
- // continuous curvature) → dampen lateral deviation toward the straight chord (dials swerve amplitude).
5
- // No Douglas-Peucker (that concentrates curvature at sparse control points → corners).
6
- //
7
- // RUN (out of the box, against the shipped sample):
8
- // node prep-cesium-path.mjs
9
- // → reads assets/sample-river.geojson (override: node prep-cesium-path.mjs <input.geojson> <output.json>)
10
- // → writes assets/cesium-path.json (then import that JSON in CesiumFlythrough.tsx, or copy it
11
- // into your Remotion project's src/geo/ and adjust the import)
12
- //
13
- // ADAPT for a new location: change START (a point ON your centerline where the corridor opens),
14
- // WINDOW_KM, and DAMP/SMOOTH below. Input must be a single LineString feature (features[0].geometry).
15
-
16
- import {readFileSync, writeFileSync, mkdirSync} from 'fs';
17
- import {dirname, resolve} from 'path';
18
- import {fileURLToPath} from 'url';
19
-
20
- const __dir = dirname(fileURLToPath(import.meta.url));
21
- const IN = process.argv[2] || resolve(__dir, '../assets/sample-river.geojson');
22
- const OUT = process.argv[3] || resolve(__dir, '../assets/cesium-path.json');
23
- const havKm = (a, b) => {
24
- const R = 6371,
25
- r = Math.PI / 180,
26
- dLat = (b[1] - a[1]) * r,
27
- dLng = (b[0] - a[0]) * r;
28
- const h =
29
- Math.sin(dLat / 2) ** 2 +
30
- Math.cos(a[1] * r) * Math.cos(b[1] * r) * Math.sin(dLng / 2) ** 2;
31
- return 2 * R * Math.asin(Math.sqrt(h));
32
- };
33
-
34
- const gorge = JSON.parse(readFileSync(IN, 'utf8')).features[0].geometry
35
- .coordinates;
36
-
37
- // ADAPT: clip ~24 km of river from the reach where the flythrough opens. START must be a point ON the
38
- // centerline (the script snaps to the nearest vertex). The sample's opening is the Yarlung gorge:
39
- const START = [94.968, 29.757];
40
- let s0 = 0,
41
- best = Infinity;
42
- gorge.forEach((p, i) => {
43
- const d = havKm(p, START);
44
- if (d < best) {
45
- best = d;
46
- s0 = i;
47
- }
48
- });
49
- const WINDOW_KM = 30; // clip to ~end of gorge data; smoothing+dampening shrink it to the usable corridor
50
- const clip = [];
51
- for (let i = s0, acc = 0; i < gorge.length; i++) {
52
- if (i > s0) acc += havKm(gorge[i - 1], gorge[i]);
53
- if (acc > WINDOW_KM) break;
54
- clip.push(gorge[i]);
55
- }
56
-
57
- // Resample to even arc-length spacing so curvature is distributed evenly along the path.
58
- const STEP_KM = 0.1;
59
- const resample = (coords) => {
60
- const out = [coords[0].slice()];
61
- let carry = 0,
62
- from = coords[0];
63
- for (let i = 1; i < coords.length; i++) {
64
- let segLen = havKm(from, coords[i]);
65
- while (carry + segLen >= STEP_KM) {
66
- const t = (STEP_KM - carry) / segLen;
67
- const np = [
68
- from[0] + (coords[i][0] - from[0]) * t,
69
- from[1] + (coords[i][1] - from[1]) * t,
70
- ];
71
- out.push(np);
72
- from = np;
73
- segLen = havKm(from, coords[i]);
74
- carry = 0;
75
- }
76
- carry += segLen;
77
- from = coords[i];
78
- }
79
- return out;
80
- };
81
-
82
- // Moving-average smoothing — inherently continuous (no kinks). Window in points; repeat for extra glass.
83
- const smoothMA = (coords, w, passes) => {
84
- let c = coords;
85
- for (let p = 0; p < passes; p++) {
86
- c = c.map((_, i) => {
87
- let sx = 0,
88
- sy = 0,
89
- n = 0;
90
- for (
91
- let j = Math.max(0, i - w);
92
- j <= Math.min(c.length - 1, i + w);
93
- j++
94
- ) {
95
- sx += c[j][0];
96
- sy += c[j][1];
97
- n++;
98
- }
99
- return [sx / n, sy / n];
100
- });
101
- }
102
- return c;
103
- };
104
-
105
- const SMOOTH_W = 28; // ±2.8 km window — turns meanders into smooth flowing curves
106
- const SMOOTH_PASSES = 2;
107
- const DAMP = 0.45; // keep 45% of the (already-smooth) deviation → gentle, continuous swerve
108
-
109
- const even = resample(clip);
110
- const sm = smoothMA(even, SMOOTH_W, SMOOTH_PASSES);
111
-
112
- const lat0 = (sm[0][1] * Math.PI) / 180;
113
- const kx = 111.32 * Math.cos(lat0),
114
- ky = 110.57;
115
- const toXY = (p) => [(p[0] - sm[0][0]) * kx, (p[1] - sm[0][1]) * ky];
116
- const toLL = (xy) => [sm[0][0] + xy[0] / kx, sm[0][1] + xy[1] / ky];
117
- const A = toXY(sm[0]),
118
- B = toXY(sm[sm.length - 1]);
119
- const AB = [B[0] - A[0], B[1] - A[1]],
120
- len2 = AB[0] ** 2 + AB[1] ** 2;
121
- const path = sm.map((p) => {
122
- const P = toXY(p);
123
- const t = ((P[0] - A[0]) * AB[0] + (P[1] - A[1]) * AB[1]) / len2;
124
- const proj = [A[0] + t * AB[0], A[1] + t * AB[1]];
125
- return toLL([
126
- proj[0] + (P[0] - proj[0]) * DAMP,
127
- proj[1] + (P[1] - proj[1]) * DAMP,
128
- ]);
129
- });
130
-
131
- mkdirSync(dirname(OUT), {recursive: true});
132
- writeFileSync(OUT, JSON.stringify(path));
133
-
134
- let len = 0;
135
- for (let i = 1; i < path.length; i++) len += havKm(path[i - 1], path[i]);
136
- console.log(
137
- `cesium-path: clip ${clip.length} → resample ${even.length} → smooth → ${path.length} pts · ${len.toFixed(1)} km`,
138
- );
139
- const bear = (a, b) => {
140
- const r = Math.PI / 180;
141
- const y = Math.sin((b[0] - a[0]) * r) * Math.cos(b[1] * r);
142
- const x =
143
- Math.cos(a[1] * r) * Math.sin(b[1] * r) -
144
- Math.sin(a[1] * r) * Math.cos(b[1] * r) * Math.cos((b[0] - a[0]) * r);
145
- return (Math.atan2(y, x) * 180) / Math.PI;
146
- };
147
- // heading sampled every ~1.5 km — should change gradually & continuously (no big jumps = no corners)
148
- const stepPts = Math.round(1.5 / STEP_KM);
149
- let prev = null,
150
- hs = [];
151
- for (let i = 0; i + stepPts < path.length; i += stepPts) {
152
- const h = bear(path[i], path[i + stepPts]);
153
- if (prev !== null) {
154
- let d = h - prev;
155
- while (d > 180) d -= 360;
156
- while (d < -180) d += 360;
157
- hs.push(d.toFixed(0));
158
- }
159
- prev = h;
160
- }
161
- console.log(` heading deltas every 1.5km (deg): ${hs.join(', ')}`);
1
+ // Camera-path generator for the Cesium flythrough. Turns a river/route centerline GeoJSON into a LONG,
2
+ // CONTINUOUSLY-curving camera path so the camera banks through smooth flowing curves (no
3
+ // straight-then-corner). Method: clip → resample to even spacing → moving-average smooth (inherently
4
+ // continuous curvature) → dampen lateral deviation toward the straight chord (dials swerve amplitude).
5
+ // No Douglas-Peucker (that concentrates curvature at sparse control points → corners).
6
+ //
7
+ // RUN (out of the box, against the shipped sample):
8
+ // node prep-cesium-path.mjs
9
+ // → reads assets/sample-river.geojson (override: node prep-cesium-path.mjs <input.geojson> <output.json>)
10
+ // → writes assets/cesium-path.json (then import that JSON in CesiumFlythrough.tsx, or copy it
11
+ // into your Remotion project's src/geo/ and adjust the import)
12
+ //
13
+ // ADAPT for a new location: change START (a point ON your centerline where the corridor opens),
14
+ // WINDOW_KM, and DAMP/SMOOTH below. Input must be a single LineString feature (features[0].geometry).
15
+
16
+ import {readFileSync, writeFileSync, mkdirSync} from 'fs';
17
+ import {dirname, resolve} from 'path';
18
+ import {fileURLToPath} from 'url';
19
+
20
+ const __dir = dirname(fileURLToPath(import.meta.url));
21
+ const IN = process.argv[2] || resolve(__dir, '../assets/sample-river.geojson');
22
+ const OUT = process.argv[3] || resolve(__dir, '../assets/cesium-path.json');
23
+ const havKm = (a, b) => {
24
+ const R = 6371,
25
+ r = Math.PI / 180,
26
+ dLat = (b[1] - a[1]) * r,
27
+ dLng = (b[0] - a[0]) * r;
28
+ const h =
29
+ Math.sin(dLat / 2) ** 2 +
30
+ Math.cos(a[1] * r) * Math.cos(b[1] * r) * Math.sin(dLng / 2) ** 2;
31
+ return 2 * R * Math.asin(Math.sqrt(h));
32
+ };
33
+
34
+ const gorge = JSON.parse(readFileSync(IN, 'utf8')).features[0].geometry
35
+ .coordinates;
36
+
37
+ // ADAPT: clip ~24 km of river from the reach where the flythrough opens. START must be a point ON the
38
+ // centerline (the script snaps to the nearest vertex). The sample's opening is the Yarlung gorge:
39
+ const START = [94.968, 29.757];
40
+ let s0 = 0,
41
+ best = Infinity;
42
+ gorge.forEach((p, i) => {
43
+ const d = havKm(p, START);
44
+ if (d < best) {
45
+ best = d;
46
+ s0 = i;
47
+ }
48
+ });
49
+ const WINDOW_KM = 30; // clip to ~end of gorge data; smoothing+dampening shrink it to the usable corridor
50
+ const clip = [];
51
+ for (let i = s0, acc = 0; i < gorge.length; i++) {
52
+ if (i > s0) acc += havKm(gorge[i - 1], gorge[i]);
53
+ if (acc > WINDOW_KM) break;
54
+ clip.push(gorge[i]);
55
+ }
56
+
57
+ // Resample to even arc-length spacing so curvature is distributed evenly along the path.
58
+ const STEP_KM = 0.1;
59
+ const resample = (coords) => {
60
+ const out = [coords[0].slice()];
61
+ let carry = 0,
62
+ from = coords[0];
63
+ for (let i = 1; i < coords.length; i++) {
64
+ let segLen = havKm(from, coords[i]);
65
+ while (carry + segLen >= STEP_KM) {
66
+ const t = (STEP_KM - carry) / segLen;
67
+ const np = [
68
+ from[0] + (coords[i][0] - from[0]) * t,
69
+ from[1] + (coords[i][1] - from[1]) * t,
70
+ ];
71
+ out.push(np);
72
+ from = np;
73
+ segLen = havKm(from, coords[i]);
74
+ carry = 0;
75
+ }
76
+ carry += segLen;
77
+ from = coords[i];
78
+ }
79
+ return out;
80
+ };
81
+
82
+ // Moving-average smoothing — inherently continuous (no kinks). Window in points; repeat for extra glass.
83
+ const smoothMA = (coords, w, passes) => {
84
+ let c = coords;
85
+ for (let p = 0; p < passes; p++) {
86
+ c = c.map((_, i) => {
87
+ let sx = 0,
88
+ sy = 0,
89
+ n = 0;
90
+ for (
91
+ let j = Math.max(0, i - w);
92
+ j <= Math.min(c.length - 1, i + w);
93
+ j++
94
+ ) {
95
+ sx += c[j][0];
96
+ sy += c[j][1];
97
+ n++;
98
+ }
99
+ return [sx / n, sy / n];
100
+ });
101
+ }
102
+ return c;
103
+ };
104
+
105
+ const SMOOTH_W = 28; // ±2.8 km window — turns meanders into smooth flowing curves
106
+ const SMOOTH_PASSES = 2;
107
+ const DAMP = 0.45; // keep 45% of the (already-smooth) deviation → gentle, continuous swerve
108
+
109
+ const even = resample(clip);
110
+ const sm = smoothMA(even, SMOOTH_W, SMOOTH_PASSES);
111
+
112
+ const lat0 = (sm[0][1] * Math.PI) / 180;
113
+ const kx = 111.32 * Math.cos(lat0),
114
+ ky = 110.57;
115
+ const toXY = (p) => [(p[0] - sm[0][0]) * kx, (p[1] - sm[0][1]) * ky];
116
+ const toLL = (xy) => [sm[0][0] + xy[0] / kx, sm[0][1] + xy[1] / ky];
117
+ const A = toXY(sm[0]),
118
+ B = toXY(sm[sm.length - 1]);
119
+ const AB = [B[0] - A[0], B[1] - A[1]],
120
+ len2 = AB[0] ** 2 + AB[1] ** 2;
121
+ const path = sm.map((p) => {
122
+ const P = toXY(p);
123
+ const t = ((P[0] - A[0]) * AB[0] + (P[1] - A[1]) * AB[1]) / len2;
124
+ const proj = [A[0] + t * AB[0], A[1] + t * AB[1]];
125
+ return toLL([
126
+ proj[0] + (P[0] - proj[0]) * DAMP,
127
+ proj[1] + (P[1] - proj[1]) * DAMP,
128
+ ]);
129
+ });
130
+
131
+ mkdirSync(dirname(OUT), {recursive: true});
132
+ writeFileSync(OUT, JSON.stringify(path));
133
+
134
+ let len = 0;
135
+ for (let i = 1; i < path.length; i++) len += havKm(path[i - 1], path[i]);
136
+ console.log(
137
+ `cesium-path: clip ${clip.length} → resample ${even.length} → smooth → ${path.length} pts · ${len.toFixed(1)} km`,
138
+ );
139
+ const bear = (a, b) => {
140
+ const r = Math.PI / 180;
141
+ const y = Math.sin((b[0] - a[0]) * r) * Math.cos(b[1] * r);
142
+ const x =
143
+ Math.cos(a[1] * r) * Math.sin(b[1] * r) -
144
+ Math.sin(a[1] * r) * Math.cos(b[1] * r) * Math.cos((b[0] - a[0]) * r);
145
+ return (Math.atan2(y, x) * 180) / Math.PI;
146
+ };
147
+ // heading sampled every ~1.5 km — should change gradually & continuously (no big jumps = no corners)
148
+ const stepPts = Math.round(1.5 / STEP_KM);
149
+ let prev = null,
150
+ hs = [];
151
+ for (let i = 0; i + stepPts < path.length; i += stepPts) {
152
+ const h = bear(path[i], path[i + stepPts]);
153
+ if (prev !== null) {
154
+ let d = h - prev;
155
+ while (d > 180) d -= 360;
156
+ while (d < -180) d += 360;
157
+ hs.push(d.toFixed(0));
158
+ }
159
+ prev = h;
160
+ }
161
+ console.log(` heading deltas every 1.5km (deg): ${hs.join(', ')}`);