dsh-remotion 0.2.0 → 0.3.0

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 (292) hide show
  1. package/README.en.md +7 -5
  2. package/README.md +3 -3
  3. package/lib/index.d.ts +2 -2
  4. package/lib/index.js +15 -2
  5. package/package.json +1 -1
  6. package/skills/remotion-best-practices/SKILL.md +59 -0
  7. package/skills/remotion-best-practices/agents/openai.yaml +7 -0
  8. package/skills/remotion-best-practices/assets/remotion-icon.png +0 -0
  9. package/skills/remotion-best-practices/remotion-captions/SKILL.md +36 -0
  10. package/skills/remotion-best-practices/remotion-captions/agents/openai.yaml +7 -0
  11. package/skills/remotion-best-practices/remotion-captions/assets/remotion-icon.png +0 -0
  12. package/skills/{remotion/rules → remotion-best-practices/remotion-captions}/display-captions.md +9 -3
  13. package/skills/{remotion/rules → remotion-best-practices/remotion-captions}/import-srt-captions.md +5 -1
  14. package/skills/remotion-best-practices/remotion-create/SKILL.md +68 -0
  15. package/skills/remotion-best-practices/remotion-create/agents/openai.yaml +7 -0
  16. package/skills/remotion-best-practices/remotion-create/assets/remotion-icon.png +0 -0
  17. package/skills/{remotion/rules → remotion-best-practices/remotion-create}/tailwind.md +1 -1
  18. package/skills/remotion-best-practices/remotion-create/video-layout.md +9 -0
  19. package/skills/remotion-best-practices/remotion-docs/SKILL.md +46 -0
  20. package/skills/remotion-best-practices/remotion-docs/agents/openai.yaml +7 -0
  21. package/skills/remotion-best-practices/remotion-docs/assets/remotion-icon.png +0 -0
  22. package/skills/remotion-best-practices/remotion-interactivity/SKILL.md +247 -0
  23. package/skills/remotion-best-practices/remotion-interactivity/agents/openai.yaml +7 -0
  24. package/skills/remotion-best-practices/remotion-interactivity/assets/remotion-icon.png +0 -0
  25. package/skills/remotion-best-practices/remotion-maps/SKILL.md +36 -0
  26. package/skills/remotion-best-practices/remotion-maps/agents/openai.yaml +7 -0
  27. package/skills/remotion-best-practices/remotion-maps/assets/remotion-icon.png +0 -0
  28. package/skills/remotion-best-practices/remotion-maps/techniques/cesium/TECHNIQUE.md +89 -0
  29. package/skills/remotion-best-practices/remotion-maps/techniques/cesium/assets/CesiumFlythrough.tsx +284 -0
  30. package/skills/remotion-best-practices/remotion-maps/techniques/cesium/assets/cesium-path.json +299 -0
  31. package/skills/remotion-best-practices/remotion-maps/techniques/cesium/assets/city-path.json +12 -0
  32. package/skills/remotion-best-practices/remotion-maps/techniques/cesium/assets/example-Root.tsx +39 -0
  33. package/skills/remotion-best-practices/remotion-maps/techniques/cesium/assets/flight-path.ts +35 -0
  34. package/skills/remotion-best-practices/remotion-maps/techniques/cesium/assets/sample-river.geojson +215 -0
  35. package/skills/remotion-best-practices/remotion-maps/techniques/cesium/references/3d-data-sources.md +43 -0
  36. package/skills/remotion-best-practices/remotion-maps/techniques/cesium/references/3d-flyover-architecture.md +128 -0
  37. package/skills/remotion-best-practices/remotion-maps/techniques/cesium/references/3d-troubleshooting.md +57 -0
  38. package/skills/remotion-best-practices/remotion-maps/techniques/cesium/scripts/prep-cesium-path.mjs +161 -0
  39. package/skills/remotion-best-practices/remotion-maps/techniques/mapbox/TECHNIQUE.md +449 -0
  40. package/skills/remotion-best-practices/remotion-maps/techniques/mapbox/references/render-stability.md +64 -0
  41. package/skills/remotion-best-practices/remotion-maps/techniques/maplibre/TECHNIQUE.md +465 -0
  42. package/skills/remotion-best-practices/remotion-maps/techniques/maplibre/references/render-stability.md +64 -0
  43. package/skills/remotion-best-practices/remotion-maps/techniques/maptiler/TECHNIQUE.md +80 -0
  44. package/skills/remotion-best-practices/remotion-maps/techniques/maptiler/assets/CountryLabel.tsx +70 -0
  45. package/skills/remotion-best-practices/remotion-maps/techniques/maptiler/assets/MapTilerVectorElement.ts +80 -0
  46. package/skills/remotion-best-practices/remotion-maps/techniques/maptiler/assets/RiverReveal.tsx +363 -0
  47. package/skills/remotion-best-practices/remotion-maps/techniques/maptiler/assets/example-Root.tsx +22 -0
  48. package/skills/remotion-best-practices/remotion-maps/techniques/maptiler/assets/sample-data/country-meta.json +7535 -0
  49. package/skills/remotion-best-practices/remotion-maps/techniques/maptiler/assets/sample-data/yarlung-flow.json +605 -0
  50. package/skills/remotion-best-practices/remotion-maps/techniques/maptiler/assets/tokens.ts +34 -0
  51. package/skills/remotion-best-practices/remotion-maps/techniques/maptiler/references/map-data-sources.md +91 -0
  52. package/skills/remotion-best-practices/remotion-maps/techniques/maptiler/references/map-explainer-architecture.md +129 -0
  53. package/skills/remotion-best-practices/remotion-maps/techniques/maptiler/references/map-geo-prep.md +85 -0
  54. package/skills/remotion-best-practices/remotion-maps/techniques/maptiler/references/render-stability.md +64 -0
  55. package/skills/remotion-best-practices/remotion-maps/techniques/maptiler/scripts/prep-geo.mjs +202 -0
  56. package/skills/remotion-best-practices/remotion-maps/techniques/static-map/TECHNIQUE.md +37 -0
  57. package/skills/remotion-best-practices/remotion-markup/SKILL.md +365 -0
  58. package/skills/remotion-best-practices/remotion-markup/agents/openai.yaml +7 -0
  59. package/skills/remotion-best-practices/remotion-markup/assets/remotion-icon.png +0 -0
  60. package/skills/{remotion/rules → remotion-best-practices/remotion-markup}/audio.md +4 -2
  61. package/skills/{remotion/rules → remotion-best-practices/remotion-markup}/calculate-metadata.md +4 -2
  62. package/skills/remotion-best-practices/remotion-markup/compositions.md +117 -0
  63. package/skills/remotion-best-practices/remotion-markup/cropping.md +34 -0
  64. package/skills/remotion-best-practices/remotion-markup/effects.md +251 -0
  65. package/skills/{remotion/rules/videos.md → remotion-best-practices/remotion-markup/embedding-videos.md} +6 -4
  66. package/skills/{remotion/rules → remotion-best-practices/remotion-markup}/ffmpeg.md +5 -1
  67. package/skills/{remotion/rules → remotion-best-practices/remotion-markup}/gifs.md +55 -9
  68. package/skills/remotion-best-practices/remotion-markup/google-fonts.md +76 -0
  69. package/skills/remotion-best-practices/remotion-markup/html-in-canvas.md +128 -0
  70. package/skills/remotion-best-practices/remotion-markup/images.md +73 -0
  71. package/skills/remotion-best-practices/remotion-markup/light-leaks.md +106 -0
  72. package/skills/remotion-best-practices/remotion-markup/local-fonts.md +69 -0
  73. package/skills/{remotion/rules → remotion-best-practices/remotion-markup}/lottie.md +4 -1
  74. package/skills/{remotion/rules → remotion-best-practices/remotion-markup}/measuring-dom-nodes.md +5 -1
  75. package/skills/{remotion/rules → remotion-best-practices/remotion-markup}/measuring-text.md +8 -2
  76. package/skills/remotion-best-practices/remotion-markup/multi-scene-video.md +81 -0
  77. package/skills/{remotion/rules → remotion-best-practices/remotion-markup}/parameters.md +3 -1
  78. package/skills/remotion-best-practices/remotion-markup/remotion-maps/SKILL.md +36 -0
  79. package/skills/remotion-best-practices/remotion-markup/remotion-maps/agents/openai.yaml +7 -0
  80. package/skills/remotion-best-practices/remotion-markup/remotion-maps/assets/remotion-icon.png +0 -0
  81. package/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/cesium/TECHNIQUE.md +89 -0
  82. package/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/cesium/assets/CesiumFlythrough.tsx +284 -0
  83. package/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/cesium/assets/cesium-path.json +299 -0
  84. package/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/cesium/assets/city-path.json +12 -0
  85. package/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/cesium/assets/example-Root.tsx +39 -0
  86. package/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/cesium/assets/flight-path.ts +35 -0
  87. package/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/cesium/assets/sample-river.geojson +215 -0
  88. package/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/cesium/references/3d-data-sources.md +43 -0
  89. package/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/cesium/references/3d-flyover-architecture.md +128 -0
  90. package/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/cesium/references/3d-troubleshooting.md +57 -0
  91. package/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/cesium/scripts/prep-cesium-path.mjs +161 -0
  92. package/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/mapbox/TECHNIQUE.md +449 -0
  93. package/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/mapbox/references/render-stability.md +64 -0
  94. package/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/maplibre/TECHNIQUE.md +465 -0
  95. package/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/maplibre/references/render-stability.md +64 -0
  96. package/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/maptiler/TECHNIQUE.md +80 -0
  97. package/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/maptiler/assets/CountryLabel.tsx +70 -0
  98. package/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/maptiler/assets/MapTilerVectorElement.ts +80 -0
  99. package/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/maptiler/assets/RiverReveal.tsx +363 -0
  100. package/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/maptiler/assets/example-Root.tsx +22 -0
  101. package/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/maptiler/assets/sample-data/country-meta.json +7535 -0
  102. package/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/maptiler/assets/sample-data/yarlung-flow.json +605 -0
  103. package/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/maptiler/assets/tokens.ts +34 -0
  104. package/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/maptiler/references/map-data-sources.md +91 -0
  105. package/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/maptiler/references/map-explainer-architecture.md +129 -0
  106. package/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/maptiler/references/map-geo-prep.md +85 -0
  107. package/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/maptiler/references/render-stability.md +64 -0
  108. package/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/maptiler/scripts/prep-geo.mjs +202 -0
  109. package/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/static-map/TECHNIQUE.md +37 -0
  110. package/skills/{remotion/rules → remotion-best-practices/remotion-markup}/sequencing.md +63 -12
  111. package/skills/remotion-best-practices/remotion-markup/sfx.md +51 -0
  112. package/skills/remotion-best-practices/remotion-markup/text-highlights.md +56 -0
  113. package/skills/remotion-best-practices/remotion-markup/timing.md +111 -0
  114. package/skills/{remotion/rules → remotion-best-practices/remotion-markup}/transitions.md +49 -7
  115. package/skills/remotion-best-practices/remotion-markup/video-editing.md +90 -0
  116. package/skills/{remotion/rules → remotion-best-practices/remotion-markup}/voiceover.md +2 -2
  117. package/skills/remotion-best-practices/remotion-multimedia/SKILL.md +20 -0
  118. package/skills/remotion-best-practices/remotion-multimedia/agents/openai.yaml +7 -0
  119. package/skills/remotion-best-practices/remotion-multimedia/assets/remotion-icon.png +0 -0
  120. package/skills/{remotion/rules → remotion-best-practices/remotion-multimedia}/get-audio-duration.md +1 -3
  121. package/skills/{remotion/rules → remotion-best-practices/remotion-multimedia}/get-video-dimensions.md +1 -3
  122. package/skills/{remotion/rules → remotion-best-practices/remotion-multimedia}/get-video-duration.md +1 -3
  123. package/skills/remotion-best-practices/remotion-render/SKILL.md +27 -0
  124. package/skills/remotion-best-practices/remotion-render/agents/openai.yaml +7 -0
  125. package/skills/remotion-best-practices/remotion-render/assets/remotion-icon.png +0 -0
  126. package/skills/remotion-best-practices/remotion-saas/SKILL.md +33 -0
  127. package/skills/remotion-best-practices/remotion-saas/agents/openai.yaml +7 -0
  128. package/skills/remotion-best-practices/remotion-saas/assets/remotion-icon.png +0 -0
  129. package/skills/remotion-best-practices/remotion-saas/framework.md +21 -0
  130. package/skills/remotion-best-practices/remotion-saas/player.md +33 -0
  131. package/skills/remotion-best-practices/remotion-saas/rendering.md +69 -0
  132. package/skills/remotion-best-practices/remotion-studio/SKILL.md +24 -0
  133. package/skills/remotion-best-practices/remotion-studio/agents/openai.yaml +7 -0
  134. package/skills/remotion-best-practices/remotion-studio/assets/remotion-icon.png +0 -0
  135. package/skills/remotion-best-practices/remotion-upgrade/SKILL.md +31 -0
  136. package/skills/remotion-best-practices/remotion-upgrade/agents/openai.yaml +7 -0
  137. package/skills/remotion-best-practices/remotion-upgrade/assets/remotion-icon.png +0 -0
  138. package/skills/remotion-captions/SKILL.md +36 -0
  139. package/skills/remotion-captions/agents/openai.yaml +7 -0
  140. package/skills/remotion-captions/assets/remotion-icon.png +0 -0
  141. package/skills/remotion-captions/display-captions.md +190 -0
  142. package/skills/remotion-captions/import-srt-captions.md +73 -0
  143. package/skills/remotion-captions/transcribe-captions.md +70 -0
  144. package/skills/remotion-create/SKILL.md +68 -0
  145. package/skills/remotion-create/agents/openai.yaml +7 -0
  146. package/skills/remotion-create/assets/remotion-icon.png +0 -0
  147. package/skills/remotion-create/tailwind.md +11 -0
  148. package/skills/remotion-create/video-layout.md +9 -0
  149. package/skills/remotion-docs/SKILL.md +46 -0
  150. package/skills/remotion-docs/agents/openai.yaml +7 -0
  151. package/skills/remotion-docs/assets/remotion-icon.png +0 -0
  152. package/skills/remotion-interactivity/SKILL.md +247 -0
  153. package/skills/remotion-interactivity/agents/openai.yaml +7 -0
  154. package/skills/remotion-interactivity/assets/remotion-icon.png +0 -0
  155. package/skills/remotion-maps/SKILL.md +36 -0
  156. package/skills/remotion-maps/agents/openai.yaml +7 -0
  157. package/skills/remotion-maps/assets/remotion-icon.png +0 -0
  158. package/skills/remotion-maps/techniques/cesium/TECHNIQUE.md +89 -0
  159. package/skills/remotion-maps/techniques/cesium/assets/CesiumFlythrough.tsx +284 -0
  160. package/skills/remotion-maps/techniques/cesium/assets/cesium-path.json +299 -0
  161. package/skills/remotion-maps/techniques/cesium/assets/city-path.json +12 -0
  162. package/skills/remotion-maps/techniques/cesium/assets/example-Root.tsx +39 -0
  163. package/skills/remotion-maps/techniques/cesium/assets/flight-path.ts +35 -0
  164. package/skills/remotion-maps/techniques/cesium/assets/sample-river.geojson +215 -0
  165. package/skills/remotion-maps/techniques/cesium/references/3d-data-sources.md +43 -0
  166. package/skills/remotion-maps/techniques/cesium/references/3d-flyover-architecture.md +128 -0
  167. package/skills/remotion-maps/techniques/cesium/references/3d-troubleshooting.md +57 -0
  168. package/skills/remotion-maps/techniques/cesium/scripts/prep-cesium-path.mjs +161 -0
  169. package/skills/remotion-maps/techniques/mapbox/TECHNIQUE.md +449 -0
  170. package/skills/remotion-maps/techniques/mapbox/references/render-stability.md +64 -0
  171. package/skills/remotion-maps/techniques/maplibre/TECHNIQUE.md +465 -0
  172. package/skills/remotion-maps/techniques/maplibre/references/render-stability.md +64 -0
  173. package/skills/remotion-maps/techniques/maptiler/TECHNIQUE.md +80 -0
  174. package/skills/remotion-maps/techniques/maptiler/assets/CountryLabel.tsx +70 -0
  175. package/skills/remotion-maps/techniques/maptiler/assets/MapTilerVectorElement.ts +80 -0
  176. package/skills/remotion-maps/techniques/maptiler/assets/RiverReveal.tsx +363 -0
  177. package/skills/remotion-maps/techniques/maptiler/assets/example-Root.tsx +22 -0
  178. package/skills/remotion-maps/techniques/maptiler/assets/sample-data/country-meta.json +7535 -0
  179. package/skills/remotion-maps/techniques/maptiler/assets/sample-data/yarlung-flow.json +605 -0
  180. package/skills/remotion-maps/techniques/maptiler/assets/tokens.ts +34 -0
  181. package/skills/remotion-maps/techniques/maptiler/references/map-data-sources.md +91 -0
  182. package/skills/remotion-maps/techniques/maptiler/references/map-explainer-architecture.md +129 -0
  183. package/skills/remotion-maps/techniques/maptiler/references/map-geo-prep.md +85 -0
  184. package/skills/remotion-maps/techniques/maptiler/references/render-stability.md +64 -0
  185. package/skills/remotion-maps/techniques/maptiler/scripts/prep-geo.mjs +202 -0
  186. package/skills/remotion-maps/techniques/static-map/TECHNIQUE.md +37 -0
  187. package/skills/remotion-markup/3d.md +86 -0
  188. package/skills/remotion-markup/SKILL.md +365 -0
  189. package/skills/remotion-markup/agents/openai.yaml +7 -0
  190. package/skills/remotion-markup/assets/remotion-icon.png +0 -0
  191. package/skills/remotion-markup/audio-visualization.md +198 -0
  192. package/skills/remotion-markup/audio.md +171 -0
  193. package/skills/remotion-markup/calculate-metadata.md +136 -0
  194. package/skills/remotion-markup/compositions.md +117 -0
  195. package/skills/remotion-markup/cropping.md +34 -0
  196. package/skills/remotion-markup/effects.md +251 -0
  197. package/skills/remotion-markup/embedding-videos.md +173 -0
  198. package/skills/remotion-markup/ffmpeg.md +38 -0
  199. package/skills/remotion-markup/gifs.md +187 -0
  200. package/skills/remotion-markup/google-fonts.md +76 -0
  201. package/skills/remotion-markup/html-in-canvas.md +128 -0
  202. package/skills/remotion-markup/images.md +73 -0
  203. package/skills/remotion-markup/light-leaks.md +106 -0
  204. package/skills/remotion-markup/local-fonts.md +69 -0
  205. package/skills/remotion-markup/lottie.md +73 -0
  206. package/skills/remotion-markup/measuring-dom-nodes.md +38 -0
  207. package/skills/remotion-markup/measuring-text.md +146 -0
  208. package/skills/remotion-markup/multi-scene-video.md +81 -0
  209. package/skills/remotion-markup/parameters.md +111 -0
  210. package/skills/remotion-markup/remotion-maps/SKILL.md +36 -0
  211. package/skills/remotion-markup/remotion-maps/agents/openai.yaml +7 -0
  212. package/skills/remotion-markup/remotion-maps/assets/remotion-icon.png +0 -0
  213. package/skills/remotion-markup/remotion-maps/techniques/cesium/TECHNIQUE.md +89 -0
  214. package/skills/remotion-markup/remotion-maps/techniques/cesium/assets/CesiumFlythrough.tsx +284 -0
  215. package/skills/remotion-markup/remotion-maps/techniques/cesium/assets/cesium-path.json +299 -0
  216. package/skills/remotion-markup/remotion-maps/techniques/cesium/assets/city-path.json +12 -0
  217. package/skills/remotion-markup/remotion-maps/techniques/cesium/assets/example-Root.tsx +39 -0
  218. package/skills/remotion-markup/remotion-maps/techniques/cesium/assets/flight-path.ts +35 -0
  219. package/skills/remotion-markup/remotion-maps/techniques/cesium/assets/sample-river.geojson +215 -0
  220. package/skills/remotion-markup/remotion-maps/techniques/cesium/references/3d-data-sources.md +43 -0
  221. package/skills/remotion-markup/remotion-maps/techniques/cesium/references/3d-flyover-architecture.md +128 -0
  222. package/skills/remotion-markup/remotion-maps/techniques/cesium/references/3d-troubleshooting.md +57 -0
  223. package/skills/remotion-markup/remotion-maps/techniques/cesium/scripts/prep-cesium-path.mjs +161 -0
  224. package/skills/remotion-markup/remotion-maps/techniques/mapbox/TECHNIQUE.md +449 -0
  225. package/skills/remotion-markup/remotion-maps/techniques/mapbox/references/render-stability.md +64 -0
  226. package/skills/remotion-markup/remotion-maps/techniques/maplibre/TECHNIQUE.md +465 -0
  227. package/skills/remotion-markup/remotion-maps/techniques/maplibre/references/render-stability.md +64 -0
  228. package/skills/remotion-markup/remotion-maps/techniques/maptiler/TECHNIQUE.md +80 -0
  229. package/skills/remotion-markup/remotion-maps/techniques/maptiler/assets/CountryLabel.tsx +70 -0
  230. package/skills/remotion-markup/remotion-maps/techniques/maptiler/assets/MapTilerVectorElement.ts +80 -0
  231. package/skills/remotion-markup/remotion-maps/techniques/maptiler/assets/RiverReveal.tsx +363 -0
  232. package/skills/remotion-markup/remotion-maps/techniques/maptiler/assets/example-Root.tsx +22 -0
  233. package/skills/remotion-markup/remotion-maps/techniques/maptiler/assets/sample-data/country-meta.json +7535 -0
  234. package/skills/remotion-markup/remotion-maps/techniques/maptiler/assets/sample-data/yarlung-flow.json +605 -0
  235. package/skills/remotion-markup/remotion-maps/techniques/maptiler/assets/tokens.ts +34 -0
  236. package/skills/remotion-markup/remotion-maps/techniques/maptiler/references/map-data-sources.md +91 -0
  237. package/skills/remotion-markup/remotion-maps/techniques/maptiler/references/map-explainer-architecture.md +129 -0
  238. package/skills/remotion-markup/remotion-maps/techniques/maptiler/references/map-geo-prep.md +85 -0
  239. package/skills/remotion-markup/remotion-maps/techniques/maptiler/references/render-stability.md +64 -0
  240. package/skills/remotion-markup/remotion-maps/techniques/maptiler/scripts/prep-geo.mjs +202 -0
  241. package/skills/remotion-markup/remotion-maps/techniques/static-map/TECHNIQUE.md +37 -0
  242. package/skills/remotion-markup/sequencing.md +169 -0
  243. package/skills/remotion-markup/sfx.md +51 -0
  244. package/skills/remotion-markup/silence-detection.md +71 -0
  245. package/skills/remotion-markup/text-highlights.md +56 -0
  246. package/skills/remotion-markup/timing.md +111 -0
  247. package/skills/remotion-markup/transitions.md +239 -0
  248. package/skills/remotion-markup/video-editing.md +90 -0
  249. package/skills/remotion-markup/voiceover.md +99 -0
  250. package/skills/remotion-multimedia/SKILL.md +20 -0
  251. package/skills/remotion-multimedia/agents/openai.yaml +7 -0
  252. package/skills/remotion-multimedia/assets/remotion-icon.png +0 -0
  253. package/skills/remotion-multimedia/get-audio-duration.md +56 -0
  254. package/skills/remotion-multimedia/get-video-dimensions.md +66 -0
  255. package/skills/remotion-multimedia/get-video-duration.md +58 -0
  256. package/skills/remotion-render/SKILL.md +27 -0
  257. package/skills/remotion-render/agents/openai.yaml +7 -0
  258. package/skills/remotion-render/assets/remotion-icon.png +0 -0
  259. package/skills/remotion-render/transparent-videos.md +106 -0
  260. package/skills/remotion-saas/SKILL.md +33 -0
  261. package/skills/remotion-saas/agents/openai.yaml +7 -0
  262. package/skills/remotion-saas/assets/remotion-icon.png +0 -0
  263. package/skills/remotion-saas/framework.md +21 -0
  264. package/skills/remotion-saas/player.md +33 -0
  265. package/skills/remotion-saas/rendering.md +69 -0
  266. package/skills/remotion-studio/SKILL.md +24 -0
  267. package/skills/remotion-studio/agents/openai.yaml +7 -0
  268. package/skills/remotion-studio/assets/remotion-icon.png +0 -0
  269. package/skills/remotion-upgrade/SKILL.md +31 -0
  270. package/skills/remotion-upgrade/agents/openai.yaml +7 -0
  271. package/skills/remotion-upgrade/assets/remotion-icon.png +0 -0
  272. package/skills/remotion/SKILL.md +0 -95
  273. package/skills/remotion/rules/animations.md +0 -31
  274. package/skills/remotion/rules/assets.md +0 -78
  275. package/skills/remotion/rules/can-decode.md +0 -81
  276. package/skills/remotion/rules/charts.md +0 -120
  277. package/skills/remotion/rules/compositions.md +0 -154
  278. package/skills/remotion/rules/extract-frames.md +0 -229
  279. package/skills/remotion/rules/fonts.md +0 -152
  280. package/skills/remotion/rules/images.md +0 -134
  281. package/skills/remotion/rules/light-leaks.md +0 -73
  282. package/skills/remotion/rules/maps.md +0 -412
  283. package/skills/remotion/rules/sfx.md +0 -30
  284. package/skills/remotion/rules/subtitles.md +0 -36
  285. package/skills/remotion/rules/text-animations.md +0 -20
  286. package/skills/remotion/rules/timing.md +0 -136
  287. package/skills/remotion/rules/trimming.md +0 -51
  288. /package/skills/{remotion/rules → remotion-best-practices/remotion-captions}/transcribe-captions.md +0 -0
  289. /package/skills/{remotion/rules → remotion-best-practices/remotion-markup}/3d.md +0 -0
  290. /package/skills/{remotion/rules → remotion-best-practices/remotion-markup}/audio-visualization.md +0 -0
  291. /package/skills/{remotion/rules → remotion-best-practices/remotion-markup}/silence-detection.md +0 -0
  292. /package/skills/{remotion/rules → remotion-best-practices/remotion-render}/transparent-videos.md +0 -0
@@ -1,229 +0,0 @@
1
- ---
2
- name: extract-frames
3
- description: Extract frames from videos at specific timestamps using Mediabunny
4
- metadata:
5
- tags: frames, extract, video, thumbnail, filmstrip, canvas
6
- ---
7
-
8
- # Extracting frames from videos
9
-
10
- Use Mediabunny to extract frames from videos at specific timestamps. This is useful for generating thumbnails, filmstrips, or processing individual frames.
11
-
12
- ## The `extractFrames()` function
13
-
14
- This function can be copy-pasted into any project.
15
-
16
- ```tsx
17
- import {
18
- ALL_FORMATS,
19
- Input,
20
- UrlSource,
21
- VideoSample,
22
- VideoSampleSink,
23
- } from "mediabunny";
24
-
25
- type Options = {
26
- track: { width: number; height: number };
27
- container: string;
28
- durationInSeconds: number | null;
29
- };
30
-
31
- export type ExtractFramesTimestampsInSecondsFn = (
32
- options: Options,
33
- ) => Promise<number[]> | number[];
34
-
35
- export type ExtractFramesProps = {
36
- src: string;
37
- timestampsInSeconds: number[] | ExtractFramesTimestampsInSecondsFn;
38
- onVideoSample: (sample: VideoSample) => void;
39
- signal?: AbortSignal;
40
- };
41
-
42
- export async function extractFrames({
43
- src,
44
- timestampsInSeconds,
45
- onVideoSample,
46
- signal,
47
- }: ExtractFramesProps): Promise<void> {
48
- using input = new Input({
49
- formats: ALL_FORMATS,
50
- source: new UrlSource(src),
51
- });
52
-
53
- const [durationInSeconds, format, videoTrack] = await Promise.all([
54
- input.computeDuration(),
55
- input.getFormat(),
56
- input.getPrimaryVideoTrack(),
57
- ]);
58
-
59
- if (!videoTrack) {
60
- throw new Error("No video track found in the input");
61
- }
62
-
63
- if (signal?.aborted) {
64
- throw new Error("Aborted");
65
- }
66
-
67
- const timestamps =
68
- typeof timestampsInSeconds === "function"
69
- ? await timestampsInSeconds({
70
- track: {
71
- width: videoTrack.displayWidth,
72
- height: videoTrack.displayHeight,
73
- },
74
- container: format.name,
75
- durationInSeconds,
76
- })
77
- : timestampsInSeconds;
78
-
79
- if (timestamps.length === 0) {
80
- return;
81
- }
82
-
83
- if (signal?.aborted) {
84
- throw new Error("Aborted");
85
- }
86
-
87
- const sink = new VideoSampleSink(videoTrack);
88
-
89
- for await (using videoSample of sink.samplesAtTimestamps(timestamps)) {
90
- if (signal?.aborted) {
91
- break;
92
- }
93
-
94
- if (!videoSample) {
95
- continue;
96
- }
97
-
98
- onVideoSample(videoSample);
99
- }
100
- }
101
- ```
102
-
103
- ## Basic usage
104
-
105
- Extract frames at specific timestamps:
106
-
107
- ```tsx
108
- await extractFrames({
109
- src: "https://remotion.media/video.mp4",
110
- timestampsInSeconds: [0, 1, 2, 3, 4],
111
- onVideoSample: (sample) => {
112
- const canvas = document.createElement("canvas");
113
- canvas.width = sample.displayWidth;
114
- canvas.height = sample.displayHeight;
115
- const ctx = canvas.getContext("2d");
116
- sample.draw(ctx!, 0, 0);
117
- },
118
- });
119
- ```
120
-
121
- ## Creating a filmstrip
122
-
123
- Use a callback function to dynamically calculate timestamps based on video metadata:
124
-
125
- ```tsx
126
- const canvasWidth = 500;
127
- const canvasHeight = 80;
128
- const fromSeconds = 0;
129
- const toSeconds = 10;
130
-
131
- await extractFrames({
132
- src: "https://remotion.media/video.mp4",
133
- timestampsInSeconds: async ({ track, durationInSeconds }) => {
134
- const aspectRatio = track.width / track.height;
135
- const amountOfFramesFit = Math.ceil(
136
- canvasWidth / (canvasHeight * aspectRatio),
137
- );
138
- const segmentDuration = toSeconds - fromSeconds;
139
- const timestamps: number[] = [];
140
-
141
- for (let i = 0; i < amountOfFramesFit; i++) {
142
- timestamps.push(
143
- fromSeconds + (segmentDuration / amountOfFramesFit) * (i + 0.5),
144
- );
145
- }
146
-
147
- return timestamps;
148
- },
149
- onVideoSample: (sample) => {
150
- console.log(`Frame at ${sample.timestamp}s`);
151
-
152
- const canvas = document.createElement("canvas");
153
- canvas.width = sample.displayWidth;
154
- canvas.height = sample.displayHeight;
155
- const ctx = canvas.getContext("2d");
156
- sample.draw(ctx!, 0, 0);
157
- },
158
- });
159
- ```
160
-
161
- ## Cancellation with AbortSignal
162
-
163
- Cancel frame extraction after a timeout:
164
-
165
- ```tsx
166
- const controller = new AbortController();
167
-
168
- setTimeout(() => controller.abort(), 5000);
169
-
170
- try {
171
- await extractFrames({
172
- src: "https://remotion.media/video.mp4",
173
- timestampsInSeconds: [0, 1, 2, 3, 4],
174
- onVideoSample: (sample) => {
175
- using frame = sample;
176
- const canvas = document.createElement("canvas");
177
- canvas.width = frame.displayWidth;
178
- canvas.height = frame.displayHeight;
179
- const ctx = canvas.getContext("2d");
180
- frame.draw(ctx!, 0, 0);
181
- },
182
- signal: controller.signal,
183
- });
184
-
185
- console.log("Frame extraction complete!");
186
- } catch (error) {
187
- console.error("Frame extraction was aborted or failed:", error);
188
- }
189
- ```
190
-
191
- ## Timeout with Promise.race
192
-
193
- ```tsx
194
- const controller = new AbortController();
195
-
196
- const timeoutPromise = new Promise<never>((_, reject) => {
197
- const timeoutId = setTimeout(() => {
198
- controller.abort();
199
- reject(new Error("Frame extraction timed out after 10 seconds"));
200
- }, 10000);
201
-
202
- controller.signal.addEventListener("abort", () => clearTimeout(timeoutId), {
203
- once: true,
204
- });
205
- });
206
-
207
- try {
208
- await Promise.race([
209
- extractFrames({
210
- src: "https://remotion.media/video.mp4",
211
- timestampsInSeconds: [0, 1, 2, 3, 4],
212
- onVideoSample: (sample) => {
213
- using frame = sample;
214
- const canvas = document.createElement("canvas");
215
- canvas.width = frame.displayWidth;
216
- canvas.height = frame.displayHeight;
217
- const ctx = canvas.getContext("2d");
218
- frame.draw(ctx!, 0, 0);
219
- },
220
- signal: controller.signal,
221
- }),
222
- timeoutPromise,
223
- ]);
224
-
225
- console.log("Frame extraction complete!");
226
- } catch (error) {
227
- console.error("Frame extraction was aborted or failed:", error);
228
- }
229
- ```
@@ -1,152 +0,0 @@
1
- ---
2
- name: fonts
3
- description: Loading Google Fonts and local fonts in Remotion
4
- metadata:
5
- tags: fonts, google-fonts, typography, text
6
- ---
7
-
8
- # Using fonts in Remotion
9
-
10
- ## Google Fonts with @remotion/google-fonts
11
-
12
- The recommended way to use Google Fonts. It's type-safe and automatically blocks rendering until the font is ready.
13
-
14
- ### Prerequisites
15
-
16
- First, the @remotion/google-fonts package needs to be installed.
17
- If it is not installed, use the following command:
18
-
19
- ```bash
20
- npx remotion add @remotion/google-fonts # If project uses npm
21
- bunx remotion add @remotion/google-fonts # If project uses bun
22
- yarn remotion add @remotion/google-fonts # If project uses yarn
23
- pnpm exec remotion add @remotion/google-fonts # If project uses pnpm
24
- ```
25
-
26
- ```tsx
27
- import { loadFont } from "@remotion/google-fonts/Lobster";
28
-
29
- const { fontFamily } = loadFont();
30
-
31
- export const MyComposition = () => {
32
- return <div style={{ fontFamily }}>Hello World</div>;
33
- };
34
- ```
35
-
36
- Preferrably, specify only needed weights and subsets to reduce file size:
37
-
38
- ```tsx
39
- import { loadFont } from "@remotion/google-fonts/Roboto";
40
-
41
- const { fontFamily } = loadFont("normal", {
42
- weights: ["400", "700"],
43
- subsets: ["latin"],
44
- });
45
- ```
46
-
47
- ### Waiting for font to load
48
-
49
- Use `waitUntilDone()` if you need to know when the font is ready:
50
-
51
- ```tsx
52
- import { loadFont } from "@remotion/google-fonts/Lobster";
53
-
54
- const { fontFamily, waitUntilDone } = loadFont();
55
-
56
- await waitUntilDone();
57
- ```
58
-
59
- ## Local fonts with @remotion/fonts
60
-
61
- For local font files, use the `@remotion/fonts` package.
62
-
63
- ### Prerequisites
64
-
65
- First, install @remotion/fonts:
66
-
67
- ```bash
68
- npx remotion add @remotion/fonts # If project uses npm
69
- bunx remotion add @remotion/fonts # If project uses bun
70
- yarn remotion add @remotion/fonts # If project uses yarn
71
- pnpm exec remotion add @remotion/fonts # If project uses pnpm
72
- ```
73
-
74
- ### Loading a local font
75
-
76
- Place your font file in the `public/` folder and use `loadFont()`:
77
-
78
- ```tsx
79
- import { loadFont } from "@remotion/fonts";
80
- import { staticFile } from "remotion";
81
-
82
- await loadFont({
83
- family: "MyFont",
84
- url: staticFile("MyFont-Regular.woff2"),
85
- });
86
-
87
- export const MyComposition = () => {
88
- return <div style={{ fontFamily: "MyFont" }}>Hello World</div>;
89
- };
90
- ```
91
-
92
- ### Loading multiple weights
93
-
94
- Load each weight separately with the same family name:
95
-
96
- ```tsx
97
- import { loadFont } from "@remotion/fonts";
98
- import { staticFile } from "remotion";
99
-
100
- await Promise.all([
101
- loadFont({
102
- family: "Inter",
103
- url: staticFile("Inter-Regular.woff2"),
104
- weight: "400",
105
- }),
106
- loadFont({
107
- family: "Inter",
108
- url: staticFile("Inter-Bold.woff2"),
109
- weight: "700",
110
- }),
111
- ]);
112
- ```
113
-
114
- ### Available options
115
-
116
- ```tsx
117
- loadFont({
118
- family: "MyFont", // Required: name to use in CSS
119
- url: staticFile("font.woff2"), // Required: font file URL
120
- format: "woff2", // Optional: auto-detected from extension
121
- weight: "400", // Optional: font weight
122
- style: "normal", // Optional: normal or italic
123
- display: "block", // Optional: font-display behavior
124
- });
125
- ```
126
-
127
- ## Using in components
128
-
129
- Call `loadFont()` at the top level of your component or in a separate file that's imported early:
130
-
131
- ```tsx
132
- import { loadFont } from "@remotion/google-fonts/Montserrat";
133
-
134
- const { fontFamily } = loadFont("normal", {
135
- weights: ["400", "700"],
136
- subsets: ["latin"],
137
- });
138
-
139
- export const Title: React.FC<{ text: string }> = ({ text }) => {
140
- return (
141
- <h1
142
- style={{
143
- fontFamily,
144
- fontSize: 80,
145
- fontWeight: "bold",
146
- }}
147
- >
148
- {text}
149
- </h1>
150
- );
151
- };
152
- ```
@@ -1,134 +0,0 @@
1
- ---
2
- name: images
3
- description: Embedding images in Remotion using the <Img> component
4
- metadata:
5
- tags: images, img, staticFile, png, jpg, svg, webp
6
- ---
7
-
8
- # Using images in Remotion
9
-
10
- ## The `<Img>` component
11
-
12
- Always use the `<Img>` component from `remotion` to display images:
13
-
14
- ```tsx
15
- import { Img, staticFile } from "remotion";
16
-
17
- export const MyComposition = () => {
18
- return <Img src={staticFile("photo.png")} />;
19
- };
20
- ```
21
-
22
- ## Important restrictions
23
-
24
- **You MUST use the `<Img>` component from `remotion`.** Do not use:
25
-
26
- - Native HTML `<img>` elements
27
- - Next.js `<Image>` component
28
- - CSS `background-image`
29
-
30
- The `<Img>` component ensures images are fully loaded before rendering, preventing flickering and blank frames during video export.
31
-
32
- ## Local images with staticFile()
33
-
34
- Place images in the `public/` folder and use `staticFile()` to reference them:
35
-
36
- ```
37
- my-video/
38
- ├─ public/
39
- │ ├─ logo.png
40
- │ ├─ avatar.jpg
41
- │ └─ icon.svg
42
- ├─ src/
43
- ├─ package.json
44
- ```
45
-
46
- ```tsx
47
- import { Img, staticFile } from "remotion";
48
-
49
- <Img src={staticFile("logo.png")} />;
50
- ```
51
-
52
- ## Remote images
53
-
54
- Remote URLs can be used directly without `staticFile()`:
55
-
56
- ```tsx
57
- <Img src="https://example.com/image.png" />
58
- ```
59
-
60
- Ensure remote images have CORS enabled.
61
-
62
- For animated GIFs, use the `<Gif>` component from `@remotion/gif` instead.
63
-
64
- ## Sizing and positioning
65
-
66
- Use the `style` prop to control size and position:
67
-
68
- ```tsx
69
- <Img
70
- src={staticFile("photo.png")}
71
- style={{
72
- width: 500,
73
- height: 300,
74
- position: "absolute",
75
- top: 100,
76
- left: 50,
77
- objectFit: "cover",
78
- }}
79
- />
80
- ```
81
-
82
- ## Dynamic image paths
83
-
84
- Use template literals for dynamic file references:
85
-
86
- ```tsx
87
- import { Img, staticFile, useCurrentFrame } from "remotion";
88
-
89
- const frame = useCurrentFrame();
90
-
91
- // Image sequence
92
- <Img src={staticFile(`frames/frame${frame}.png`)} />
93
-
94
- // Selecting based on props
95
- <Img src={staticFile(`avatars/${props.userId}.png`)} />
96
-
97
- // Conditional images
98
- <Img src={staticFile(`icons/${isActive ? "active" : "inactive"}.svg`)} />
99
- ```
100
-
101
- This pattern is useful for:
102
-
103
- - Image sequences (frame-by-frame animations)
104
- - User-specific avatars or profile images
105
- - Theme-based icons
106
- - State-dependent graphics
107
-
108
- ## Getting image dimensions
109
-
110
- Use `getImageDimensions()` to get the dimensions of an image:
111
-
112
- ```tsx
113
- import { getImageDimensions, staticFile } from "remotion";
114
-
115
- const { width, height } = await getImageDimensions(staticFile("photo.png"));
116
- ```
117
-
118
- This is useful for calculating aspect ratios or sizing compositions:
119
-
120
- ```tsx
121
- import {
122
- getImageDimensions,
123
- staticFile,
124
- CalculateMetadataFunction,
125
- } from "remotion";
126
-
127
- const calculateMetadata: CalculateMetadataFunction = async () => {
128
- const { width, height } = await getImageDimensions(staticFile("photo.png"));
129
- return {
130
- width,
131
- height,
132
- };
133
- };
134
- ```
@@ -1,73 +0,0 @@
1
- ---
2
- name: light-leaks
3
- description: Light leak overlay effects for Remotion using @remotion/light-leaks.
4
- metadata:
5
- tags: light-leaks, overlays, effects, transitions
6
- ---
7
-
8
- ## Light Leaks
9
-
10
- This only works from Remotion 4.0.415 and up. Use `npx remotion versions` to check your Remotion version and `npx remotion upgrade` to upgrade your Remotion version.
11
-
12
- `<LightLeak>` from `@remotion/light-leaks` renders a WebGL-based light leak effect. It reveals during the first half of its duration and retracts during the second half.
13
-
14
- Typically used inside a `<TransitionSeries.Overlay>` to play over the cut point between two scenes. See the **transitions** rule for `<TransitionSeries>` and overlay usage.
15
-
16
- ## Prerequisites
17
-
18
- ```bash
19
- npx remotion add @remotion/light-leaks
20
- ```
21
-
22
- ## Basic usage with TransitionSeries
23
-
24
- ```tsx
25
- import { TransitionSeries } from "@remotion/transitions";
26
- import { LightLeak } from "@remotion/light-leaks";
27
-
28
- <TransitionSeries>
29
- <TransitionSeries.Sequence durationInFrames={60}>
30
- <SceneA />
31
- </TransitionSeries.Sequence>
32
- <TransitionSeries.Overlay durationInFrames={30}>
33
- <LightLeak />
34
- </TransitionSeries.Overlay>
35
- <TransitionSeries.Sequence durationInFrames={60}>
36
- <SceneB />
37
- </TransitionSeries.Sequence>
38
- </TransitionSeries>;
39
- ```
40
-
41
- ## Props
42
-
43
- - `durationInFrames?` — defaults to the parent sequence/composition duration. The effect reveals during the first half and retracts during the second half.
44
- - `seed?` — determines the shape of the light leak pattern. Different seeds produce different patterns. Default: `0`.
45
- - `hueShift?` — rotates the hue in degrees (`0`–`360`). Default: `0` (yellow-to-orange). `120` = green, `240` = blue.
46
-
47
- ## Customizing the look
48
-
49
- ```tsx
50
- import { LightLeak } from "@remotion/light-leaks";
51
-
52
- // Blue-tinted light leak with a different pattern
53
- <LightLeak seed={5} hueShift={240} />;
54
-
55
- // Green-tinted light leak
56
- <LightLeak seed={2} hueShift={120} />;
57
- ```
58
-
59
- ## Standalone usage
60
-
61
- `<LightLeak>` can also be used outside of `<TransitionSeries>`, for example as a decorative overlay in any composition:
62
-
63
- ```tsx
64
- import { AbsoluteFill } from "remotion";
65
- import { LightLeak } from "@remotion/light-leaks";
66
-
67
- const MyComp: React.FC = () => (
68
- <AbsoluteFill>
69
- <MyContent />
70
- <LightLeak durationInFrames={60} seed={3} />
71
- </AbsoluteFill>
72
- );
73
- ```