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,412 +0,0 @@
1
- ---
2
- name: maps
3
- description: Make map animations with Mapbox
4
- metadata:
5
- tags: map, map animation, mapbox
6
- ---
7
-
8
- Maps can be added to a Remotion video with Mapbox.
9
- The [Mapbox documentation](https://docs.mapbox.com/mapbox-gl-js/api/) has the API reference.
10
-
11
- ## Prerequisites
12
-
13
- Mapbox and `@turf/turf` need to be installed.
14
-
15
- Search the project for lockfiles and run the correct command depending on the package manager:
16
-
17
- If `package-lock.json` is found, use the following command:
18
-
19
- ```bash
20
- npm i mapbox-gl @turf/turf @types/mapbox-gl
21
- ```
22
-
23
- If `bun.lock` is found, use the following command:
24
-
25
- ```bash
26
- bun i mapbox-gl @turf/turf @types/mapbox-gl
27
- ```
28
-
29
- If `yarn.lock` is found, use the following command:
30
-
31
- ```bash
32
- yarn add mapbox-gl @turf/turf @types/mapbox-gl
33
- ```
34
-
35
- If `pnpm-lock.yaml` is found, use the following command:
36
-
37
- ```bash
38
- pnpm i mapbox-gl @turf/turf @types/mapbox-gl
39
- ```
40
-
41
- The user needs to create a free Mapbox account and create an access token by visiting https://console.mapbox.com/account/access-tokens/.
42
-
43
- The mapbox token needs to be added to the `.env` file:
44
-
45
- ```txt title=".env"
46
- REMOTION_MAPBOX_TOKEN==pk.your-mapbox-access-token
47
- ```
48
-
49
- ## Adding a map
50
-
51
- Here is a basic example of a map in Remotion.
52
-
53
- ```tsx
54
- import { useEffect, useMemo, useRef, useState } from "react";
55
- import { AbsoluteFill, useDelayRender, useVideoConfig } from "remotion";
56
- import mapboxgl, { Map } from "mapbox-gl";
57
-
58
- export const lineCoordinates = [
59
- [6.56158447265625, 46.059891147620725],
60
- [6.5691375732421875, 46.05679376154153],
61
- [6.5842437744140625, 46.05059898938315],
62
- [6.594886779785156, 46.04702502069337],
63
- [6.601066589355469, 46.0460718554722],
64
- [6.6089630126953125, 46.0365370783104],
65
- [6.6185760498046875, 46.018420689207964],
66
- ];
67
-
68
- mapboxgl.accessToken = process.env.REMOTION_MAPBOX_TOKEN as string;
69
-
70
- export const MyComposition = () => {
71
- const ref = useRef<HTMLDivElement>(null);
72
- const { delayRender, continueRender } = useDelayRender();
73
-
74
- const { width, height } = useVideoConfig();
75
- const [handle] = useState(() => delayRender("Loading map..."));
76
- const [map, setMap] = useState<Map | null>(null);
77
-
78
- useEffect(() => {
79
- const _map = new Map({
80
- container: ref.current!,
81
- zoom: 11.53,
82
- center: [6.5615, 46.0598],
83
- pitch: 65,
84
- bearing: 0,
85
- style: "⁠mapbox://styles/mapbox/standard",
86
- interactive: false,
87
- fadeDuration: 0,
88
- });
89
-
90
- _map.on("style.load", () => {
91
- // Hide all features from the Mapbox Standard style
92
- const hideFeatures = [
93
- "showRoadsAndTransit",
94
- "showRoads",
95
- "showTransit",
96
- "showPedestrianRoads",
97
- "showRoadLabels",
98
- "showTransitLabels",
99
- "showPlaceLabels",
100
- "showPointOfInterestLabels",
101
- "showPointsOfInterest",
102
- "showAdminBoundaries",
103
- "showLandmarkIcons",
104
- "showLandmarkIconLabels",
105
- "show3dObjects",
106
- "show3dBuildings",
107
- "show3dTrees",
108
- "show3dLandmarks",
109
- "show3dFacades",
110
- ];
111
- for (const feature of hideFeatures) {
112
- _map.setConfigProperty("basemap", feature, false);
113
- }
114
-
115
- _map.setConfigProperty("basemap", "colorTrunks", "rgba(0, 0, 0, 0)");
116
-
117
- _map.addSource("trace", {
118
- type: "geojson",
119
- data: {
120
- type: "Feature",
121
- properties: {},
122
- geometry: {
123
- type: "LineString",
124
- coordinates: lineCoordinates,
125
- },
126
- },
127
- });
128
- _map.addLayer({
129
- type: "line",
130
- source: "trace",
131
- id: "line",
132
- paint: {
133
- "line-color": "black",
134
- "line-width": 5,
135
- },
136
- layout: {
137
- "line-cap": "round",
138
- "line-join": "round",
139
- },
140
- });
141
- });
142
-
143
- _map.on("load", () => {
144
- continueRender(handle);
145
- setMap(_map);
146
- });
147
- }, [handle, lineCoordinates]);
148
-
149
- const style: React.CSSProperties = useMemo(
150
- () => ({ width, height, position: "absolute" }),
151
- [width, height],
152
- );
153
-
154
- return <AbsoluteFill ref={ref} style={style} />;
155
- };
156
- ```
157
-
158
- The following is important in Remotion:
159
-
160
- - Animations must be driven by `useCurrentFrame()` and animations that Mapbox brings itself should be disabled. For example, the `fadeDuration` prop should be set to `0`, `interactive` should be set to `false`, etc.
161
- - Loading the map should be delayed using `useDelayRender()` and the map should be set to `null` until it is loaded.
162
- - The element containing the ref MUST have an explicit width and height and `position: "absolute"`.
163
- - Do not add a `_map.remove();` cleanup function.
164
-
165
- ## Drawing lines
166
-
167
- Unless I request it, do not add a glow effect to the lines.
168
- Unless I request it, do not add additional points to the lines.
169
-
170
- ## Map style
171
-
172
- By default, use the `mapbox://styles/mapbox/standard` style.
173
- Hide the labels from the base map style.
174
-
175
- Unless I request otherwise, remove all features from the Mapbox Standard style.
176
-
177
- ```tsx
178
- // Hide all features from the Mapbox Standard style
179
- const hideFeatures = [
180
- "showRoadsAndTransit",
181
- "showRoads",
182
- "showTransit",
183
- "showPedestrianRoads",
184
- "showRoadLabels",
185
- "showTransitLabels",
186
- "showPlaceLabels",
187
- "showPointOfInterestLabels",
188
- "showPointsOfInterest",
189
- "showAdminBoundaries",
190
- "showLandmarkIcons",
191
- "showLandmarkIconLabels",
192
- "show3dObjects",
193
- "show3dBuildings",
194
- "show3dTrees",
195
- "show3dLandmarks",
196
- "show3dFacades",
197
- ];
198
- for (const feature of hideFeatures) {
199
- _map.setConfigProperty("basemap", feature, false);
200
- }
201
-
202
- _map.setConfigProperty("basemap", "colorMotorways", "transparent");
203
- _map.setConfigProperty("basemap", "colorRoads", "transparent");
204
- _map.setConfigProperty("basemap", "colorTrunks", "transparent");
205
- ```
206
-
207
- ## Animating the camera
208
-
209
- You can animate the camera along the line by adding a `useEffect` hook that updates the camera position based on the current frame.
210
-
211
- Unless I ask for it, do not jump between camera angles.
212
-
213
- ```tsx
214
- import * as turf from "@turf/turf";
215
- import { interpolate } from "remotion";
216
- import { Easing } from "remotion";
217
- import { useCurrentFrame, useVideoConfig, useDelayRender } from "remotion";
218
-
219
- const animationDuration = 20;
220
- const cameraAltitude = 4000;
221
- ```
222
-
223
- ```tsx
224
- const frame = useCurrentFrame();
225
- const { fps } = useVideoConfig();
226
- const { delayRender, continueRender } = useDelayRender();
227
-
228
- useEffect(() => {
229
- if (!map) {
230
- return;
231
- }
232
- const handle = delayRender("Moving point...");
233
-
234
- const routeDistance = turf.length(turf.lineString(lineCoordinates));
235
-
236
- const progress = interpolate(
237
- frame / fps,
238
- [0.00001, animationDuration],
239
- [0, 1],
240
- {
241
- easing: Easing.inOut(Easing.sin),
242
- extrapolateLeft: "clamp",
243
- extrapolateRight: "clamp",
244
- },
245
- );
246
-
247
- const camera = map.getFreeCameraOptions();
248
-
249
- const alongRoute = turf.along(
250
- turf.lineString(lineCoordinates),
251
- routeDistance * progress,
252
- ).geometry.coordinates;
253
-
254
- camera.lookAtPoint({
255
- lng: alongRoute[0],
256
- lat: alongRoute[1],
257
- });
258
-
259
- map.setFreeCameraOptions(camera);
260
- map.once("idle", () => continueRender(handle));
261
- }, [lineCoordinates, fps, frame, handle, map]);
262
- ```
263
-
264
- Notes:
265
-
266
- IMPORTANT: Keep the camera by default so north is up.
267
- IMPORTANT: For multi-step animations, set all properties at all stages (zoom, position, line progress) to prevent jumps. Override initial values.
268
-
269
- - The progress is clamped to a minimum value to avoid the line being empty, which can lead to turf errors
270
- - See [Timing](./timing.md) for more options for timing.
271
- - Consider the dimensions of the composition and make the lines thick enough and the label font size large enough to be legible for when the composition is scaled down.
272
-
273
- ## Animating lines
274
-
275
- ### Straight lines (linear interpolation)
276
-
277
- To animate a line that appears straight on the map, use linear interpolation between coordinates. Do NOT use turf's `lineSliceAlong` or `along` functions, as they use geodesic (great circle) calculations which appear curved on a Mercator projection.
278
-
279
- ```tsx
280
- const frame = useCurrentFrame();
281
- const { durationInFrames } = useVideoConfig();
282
-
283
- useEffect(() => {
284
- if (!map) return;
285
-
286
- const animationHandle = delayRender("Animating line...");
287
-
288
- const progress = interpolate(frame, [0, durationInFrames - 1], [0, 1], {
289
- extrapolateLeft: "clamp",
290
- extrapolateRight: "clamp",
291
- easing: Easing.inOut(Easing.cubic),
292
- });
293
-
294
- // Linear interpolation for a straight line on the map
295
- const start = lineCoordinates[0];
296
- const end = lineCoordinates[1];
297
- const currentLng = start[0] + (end[0] - start[0]) * progress;
298
- const currentLat = start[1] + (end[1] - start[1]) * progress;
299
-
300
- const lineData: GeoJSON.Feature<GeoJSON.LineString> = {
301
- type: "Feature",
302
- properties: {},
303
- geometry: {
304
- type: "LineString",
305
- coordinates: [start, [currentLng, currentLat]],
306
- },
307
- };
308
-
309
- const source = map.getSource("trace") as mapboxgl.GeoJSONSource;
310
- if (source) {
311
- source.setData(lineData);
312
- }
313
-
314
- map.once("idle", () => continueRender(animationHandle));
315
- }, [frame, map, durationInFrames]);
316
- ```
317
-
318
- ### Curved lines (geodesic/great circle)
319
-
320
- To animate a line that follows the geodesic (great circle) path between two points, use turf's `lineSliceAlong`. This is useful for showing flight paths or the actual shortest distance on Earth.
321
-
322
- ```tsx
323
- import * as turf from "@turf/turf";
324
-
325
- const routeLine = turf.lineString(lineCoordinates);
326
- const routeDistance = turf.length(routeLine);
327
-
328
- const currentDistance = Math.max(0.001, routeDistance * progress);
329
- const slicedLine = turf.lineSliceAlong(routeLine, 0, currentDistance);
330
-
331
- const source = map.getSource("route") as mapboxgl.GeoJSONSource;
332
- if (source) {
333
- source.setData(slicedLine);
334
- }
335
- ```
336
-
337
- ## Markers
338
-
339
- Add labels, and markers where appropriate.
340
-
341
- ```tsx
342
- _map.addSource("markers", {
343
- type: "geojson",
344
- data: {
345
- type: "FeatureCollection",
346
- features: [
347
- {
348
- type: "Feature",
349
- properties: { name: "Point 1" },
350
- geometry: { type: "Point", coordinates: [-118.2437, 34.0522] },
351
- },
352
- ],
353
- },
354
- });
355
-
356
- _map.addLayer({
357
- id: "city-markers",
358
- type: "circle",
359
- source: "markers",
360
- paint: {
361
- "circle-radius": 40,
362
- "circle-color": "#FF4444",
363
- "circle-stroke-width": 4,
364
- "circle-stroke-color": "#FFFFFF",
365
- },
366
- });
367
-
368
- _map.addLayer({
369
- id: "labels",
370
- type: "symbol",
371
- source: "markers",
372
- layout: {
373
- "text-field": ["get", "name"],
374
- "text-font": ["DIN Pro Bold", "Arial Unicode MS Bold"],
375
- "text-size": 50,
376
- "text-offset": [0, 0.5],
377
- "text-anchor": "top",
378
- },
379
- paint: {
380
- "text-color": "#FFFFFF",
381
- "text-halo-color": "#000000",
382
- "text-halo-width": 2,
383
- },
384
- });
385
- ```
386
-
387
- Make sure they are big enough. Check the composition dimensions and scale the labels accordingly.
388
- For a composition size of 1920x1080, the label font size should be at least 40px.
389
-
390
- IMPORTANT: Keep the `text-offset` small enough so it is close to the marker. Consider the marker circle radius. For a circle radius of 40, this is a good offset:
391
-
392
- ```tsx
393
- "text-offset": [0, 0.5],
394
- ```
395
-
396
- ## 3D buildings
397
-
398
- To enable 3D buildings, use the following code:
399
-
400
- ```tsx
401
- _map.setConfigProperty("basemap", "show3dObjects", true);
402
- _map.setConfigProperty("basemap", "show3dLandmarks", true);
403
- _map.setConfigProperty("basemap", "show3dBuildings", true);
404
- ```
405
-
406
- ## Rendering
407
-
408
- When rendering a map animation, make sure to render with the following flags:
409
-
410
- ```
411
- npx remotion render --gl=angle --concurrency=1
412
- ```
@@ -1,30 +0,0 @@
1
- ---
2
- name: sfx
3
- description: Including sound effects
4
- metadata:
5
- tags: sfx, sound, effect, audio
6
- ---
7
-
8
- To include a sound effect, use the `<Audio>` tag:
9
-
10
- ```tsx
11
- import { Audio } from "@remotion/sfx";
12
-
13
- <Audio src={"https://remotion.media/whoosh.wav"} />;
14
- ```
15
-
16
- The following sound effects are available:
17
-
18
- - `https://remotion.media/whoosh.wav`
19
- - `https://remotion.media/whip.wav`
20
- - `https://remotion.media/page-turn.wav`
21
- - `https://remotion.media/switch.wav`
22
- - `https://remotion.media/mouse-click.wav`
23
- - `https://remotion.media/shutter-modern.wav`
24
- - `https://remotion.media/shutter-old.wav`
25
- - `https://remotion.media/ding.wav`
26
- - `https://remotion.media/bruh.wav`
27
- - `https://remotion.media/vine-boom.wav`
28
- - `https://remotion.media/windows-xp-error.wav`
29
-
30
- For more sound effects, search the internet. A good resource is https://github.com/kapishdima/soundcn/tree/main/assets.
@@ -1,36 +0,0 @@
1
- ---
2
- name: subtitles
3
- description: subtitles and caption rules
4
- metadata:
5
- tags: subtitles, captions, remotion, json
6
- ---
7
-
8
- All captions must be processed in JSON. The captions must use the `Caption` type which is the following:
9
-
10
- ```ts
11
- import type { Caption } from "@remotion/captions";
12
- ```
13
-
14
- This is the definition:
15
-
16
- ```ts
17
- type Caption = {
18
- text: string;
19
- startMs: number;
20
- endMs: number;
21
- timestampMs: number | null;
22
- confidence: number | null;
23
- };
24
- ```
25
-
26
- ## Generating captions
27
-
28
- To transcribe video and audio files to generate captions, load the [./transcribe-captions.md](./transcribe-captions.md) file for more instructions.
29
-
30
- ## Displaying captions
31
-
32
- To display captions in your video, load the [./display-captions.md](./display-captions.md) file for more instructions.
33
-
34
- ## Importing captions
35
-
36
- To import captions from a .srt file, load the [./import-srt-captions.md](./import-srt-captions.md) file for more instructions.
@@ -1,20 +0,0 @@
1
- ---
2
- name: text-animations
3
- description: Typography and text animation patterns for Remotion.
4
- metadata:
5
- tags: typography, text, typewriter, highlighter ken
6
- ---
7
-
8
- ## Text animations
9
-
10
- Based on `useCurrentFrame()`, reduce the string character by character to create a typewriter effect.
11
-
12
- ## Typewriter Effect
13
-
14
- See [Typewriter](assets/text-animations-typewriter.tsx) for an advanced example with a blinking cursor and a pause after the first sentence.
15
-
16
- Always use string slicing for typewriter effects. Never use per-character opacity.
17
-
18
- ## Word Highlighting
19
-
20
- See [Word Highlight](assets/text-animations-word-highlight.tsx) for an example for how a word highlight is animated, like with a highlighter pen.
@@ -1,136 +0,0 @@
1
- ---
2
- name: timing
3
- description: Interpolation and timing in Remotion—prefer interpolate with Bézier easing; springs as a specialized option
4
- metadata:
5
- tags: easing, bezier, interpolation, spring, timing
6
- ---
7
-
8
- Drive motion with `interpolate()` over explicit frame range. To customize timing, use **`Easing.bezier`**. The four parameters are the same as CSS `cubic-bezier(x1, y1, x2, y2)`.
9
-
10
- A simple linear interpolation is done using the `interpolate` function.
11
-
12
- ```ts title="Going from 0 to 1 over 100 frames"
13
- import { interpolate } from "remotion";
14
-
15
- const opacity = interpolate(frame, [0, 100], [0, 1]);
16
- ```
17
-
18
- By default, the values are not clamped, so the value can go outside the range [0, 1].
19
- Here is how they can be clamped:
20
-
21
- ```ts title="Going from 0 to 1 over 100 frames with extrapolation"
22
- const opacity = interpolate(frame, [0, 100], [0, 1], {
23
- extrapolateRight: "clamp",
24
- extrapolateLeft: "clamp",
25
- });
26
- ```
27
-
28
- ## Bézier easing
29
-
30
- Use `Easing.bezier(x1, y1, x2, y2)` inside the `interpolate` options object. The curve is identical in spirit to CSS animations and transitions, which helps when you are stealing timing from the web or from a designer’s spec.
31
-
32
- ```ts
33
- import { interpolate, Easing } from "remotion";
34
-
35
- const opacity = interpolate(frame, [0, 60], [0, 1], {
36
- easing: Easing.bezier(0.16, 1, 0.3, 1),
37
- extrapolateLeft: "clamp",
38
- extrapolateRight: "clamp",
39
- });
40
- ```
41
-
42
- ### Examples (copy-paste curves)
43
-
44
- **1. Crisp UI entrance (strong ease-out, no overshoot)** — slows nicely into the rest value; similar to many system “deceleration” curves.
45
-
46
- ```tsx
47
- const enter = interpolate(frame, [0, 45], [0, 1], {
48
- easing: Easing.bezier(0.16, 1, 0.3, 1),
49
- extrapolateLeft: "clamp",
50
- extrapolateRight: "clamp",
51
- });
52
- ```
53
-
54
- **2. Editorial / slow fade (balanced ease-in-out)** — symmetric acceleration and deceleration over a hold-friendly move.
55
-
56
- ```tsx
57
- const progress = interpolate(frame, [0, 90], [0, 1], {
58
- easing: Easing.bezier(0.45, 0, 0.55, 1),
59
- extrapolateLeft: "clamp",
60
- extrapolateRight: "clamp",
61
- });
62
- ```
63
-
64
- **3. Playful overshoot (control point y > 1)** — a little past the target then settles; use sparingly for emphasis.
65
-
66
- ```tsx
67
- const pop = interpolate(frame, [0, 30], [0, 1], {
68
- easing: Easing.bezier(0.34, 1.56, 0.64, 1),
69
- extrapolateLeft: "clamp",
70
- extrapolateRight: "clamp",
71
- });
72
- ```
73
-
74
- ## Preset easings (`Easing.in` / `Easing.out` / named curves)
75
-
76
- Easing can be added to the `interpolate` function without a custom cubic:
77
-
78
- ```ts
79
- import { interpolate, Easing } from "remotion";
80
-
81
- const value1 = interpolate(frame, [0, 100], [0, 1], {
82
- easing: Easing.inOut(Easing.cubic),
83
- extrapolateLeft: "clamp",
84
- extrapolateRight: "clamp",
85
- });
86
- ```
87
-
88
- The default easing is `Easing.linear`.
89
- Convexities:
90
-
91
- - `Easing.in` — starting slow and accelerating
92
- - `Easing.out` — starting fast and slowing down
93
- - `Easing.inOut`
94
-
95
- Named curves (from most linear to most curved):
96
-
97
- - `Easing.quad`
98
- - `Easing.cubic` (good default when you do not need a custom cubic)
99
- - `Easing.sin`
100
- - `Easing.exp`
101
- - `Easing.circle`
102
-
103
- ### Easing direction for enter/exit animations
104
-
105
- Use `Easing.out` for enter animations (starts fast, decelerates into place) and `Easing.in` for exit animations (starts slow, accelerates away). This feels natural because elements arrive with momentum and leave with gravity. When you need a specific curve from design, prefer a single `Easing.bezier(...)` instead of stacking presets.
106
-
107
- ## Composing interpolations
108
-
109
- When multiple properties share the same timing (e.g. a slide-in panel and a video shift), avoid duplicating the full interpolation for each property. Instead, create a single normalized progress value (0 to 1) and derive each property from it:
110
-
111
- ```tsx
112
- const slideIn = interpolate(
113
- frame,
114
- [slideInStart, slideInStart + slideInDuration],
115
- [0, 1],
116
- {
117
- easing: Easing.bezier(0.22, 1, 0.36, 1),
118
- extrapolateLeft: "clamp",
119
- extrapolateRight: "clamp",
120
- },
121
- );
122
- const slideOut = interpolate(
123
- frame,
124
- [slideOutStart, slideOutStart + slideOutDuration],
125
- [0, 1],
126
- { easing: Easing.in(Easing.cubic), extrapolateLeft: "clamp", extrapolateRight: "clamp" },
127
- );
128
- const progress = slideIn - slideOut;
129
-
130
- // Derive multiple properties from the same progress
131
- const overlayX = interpolate(progress, [0, 1], [100, 0]);
132
- const videoX = interpolate(progress, [0, 1], [0, -20]);
133
- const opacity = interpolate(progress, [0, 1], [0, 1]);
134
- ```
135
-
136
- The key idea: separate **timing** (when and how fast) from **mapping** (what values to animate between).
@@ -1,51 +0,0 @@
1
- ---
2
- name: trimming
3
- description: Trimming patterns for Remotion - cut the beginning or end of animations
4
- metadata:
5
- tags: sequence, trim, clip, cut, offset
6
- ---
7
-
8
- Use `<Sequence>` with a negative `from` value to trim the start of an animation.
9
-
10
- ## Trim the Beginning
11
-
12
- A negative `from` value shifts time backwards, making the animation start partway through:
13
-
14
- ```tsx
15
- import { Sequence, useVideoConfig } from "remotion";
16
-
17
- const fps = useVideoConfig();
18
-
19
- <Sequence from={-0.5 * fps}>
20
- <MyAnimation />
21
- </Sequence>;
22
- ```
23
-
24
- The animation appears 15 frames into its progress - the first 15 frames are trimmed off.
25
- Inside `<MyAnimation>`, `useCurrentFrame()` starts at 15 instead of 0.
26
-
27
- ## Trim the End
28
-
29
- Use `durationInFrames` to unmount content after a specified duration:
30
-
31
- ```tsx
32
- <Sequence durationInFrames={1.5 * fps}>
33
- <MyAnimation />
34
- </Sequence>
35
- ```
36
-
37
- The animation plays for 45 frames, then the component unmounts.
38
-
39
- ## Trim and Delay
40
-
41
- Nest sequences to both trim the beginning and delay when it appears:
42
-
43
- ```tsx
44
- <Sequence from={30}>
45
- <Sequence from={-15}>
46
- <MyAnimation />
47
- </Sequence>
48
- </Sequence>
49
- ```
50
-
51
- The inner sequence trims 15 frames from the start, and the outer sequence delays the result by 30 frames.