dsh-remotion 0.3.4 → 0.4.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.
- package/CHANGELOG.md +21 -0
- package/README.en.md +26 -65
- package/README.md +25 -67
- package/docs/USAGE.en.md +93 -0
- package/docs/USAGE.md +97 -0
- package/docs/VALIDATION.md +22 -0
- package/lib/client.js +90 -0
- package/lib/index.d.ts +3 -0
- package/lib/index.js +5 -1
- package/lib/media-store.d.ts +25 -0
- package/lib/media-store.js +174 -0
- package/lib/media-templates.d.ts +52 -0
- package/lib/media-templates.js +91 -0
- package/lib/media-workbench.d.ts +42 -0
- package/lib/media-workbench.js +476 -0
- package/package.json +18 -5
- package/scripts/build-client.mjs +4 -0
- package/skills/remotion-best-practices/SKILL.md +54 -54
- package/skills/remotion-best-practices/agents/openai.yaml +7 -7
- package/skills/remotion-best-practices/assets/remotion-icon.svg +4 -4
- package/skills/remotion-best-practices/remotion-captions/REFERENCE.md +36 -36
- package/skills/remotion-best-practices/remotion-captions/agents/openai.yaml +7 -7
- package/skills/remotion-best-practices/remotion-captions/assets/remotion-icon.svg +4 -4
- package/skills/remotion-best-practices/remotion-captions/display-captions.md +190 -190
- package/skills/remotion-best-practices/remotion-captions/import-srt-captions.md +73 -73
- package/skills/remotion-best-practices/remotion-captions/transcribe-captions.md +70 -70
- package/skills/remotion-best-practices/remotion-create/REFERENCE.md +85 -85
- package/skills/remotion-best-practices/remotion-create/agents/openai.yaml +7 -7
- package/skills/remotion-best-practices/remotion-create/assets/remotion-icon.svg +4 -4
- package/skills/remotion-best-practices/remotion-create/tailwind.md +11 -11
- package/skills/remotion-best-practices/remotion-create/video-layout.md +9 -9
- package/skills/remotion-best-practices/remotion-docs/REFERENCE.md +46 -46
- package/skills/remotion-best-practices/remotion-docs/agents/openai.yaml +7 -7
- package/skills/remotion-best-practices/remotion-docs/assets/remotion-icon.svg +4 -4
- package/skills/remotion-best-practices/remotion-interactivity/REFERENCE.md +315 -315
- package/skills/remotion-best-practices/remotion-interactivity/agents/openai.yaml +7 -7
- package/skills/remotion-best-practices/remotion-interactivity/assets/remotion-icon.svg +4 -4
- package/skills/remotion-best-practices/remotion-maps/REFERENCE.md +36 -36
- package/skills/remotion-best-practices/remotion-maps/agents/openai.yaml +7 -7
- package/skills/remotion-best-practices/remotion-maps/assets/remotion-icon.svg +4 -4
- package/skills/remotion-best-practices/remotion-maps/techniques/cesium/TECHNIQUE.md +89 -89
- package/skills/remotion-best-practices/remotion-maps/techniques/cesium/assets/CesiumFlythrough.tsx +284 -284
- package/skills/remotion-best-practices/remotion-maps/techniques/cesium/assets/cesium-path.json +299 -299
- package/skills/remotion-best-practices/remotion-maps/techniques/cesium/assets/city-path.json +12 -12
- package/skills/remotion-best-practices/remotion-maps/techniques/cesium/assets/example-Root.tsx +39 -39
- package/skills/remotion-best-practices/remotion-maps/techniques/cesium/assets/flight-path.ts +35 -35
- package/skills/remotion-best-practices/remotion-maps/techniques/cesium/assets/sample-river.geojson +215 -215
- package/skills/remotion-best-practices/remotion-maps/techniques/cesium/references/3d-data-sources.md +43 -43
- package/skills/remotion-best-practices/remotion-maps/techniques/cesium/references/3d-flyover-architecture.md +128 -128
- package/skills/remotion-best-practices/remotion-maps/techniques/cesium/references/3d-troubleshooting.md +57 -57
- package/skills/remotion-best-practices/remotion-maps/techniques/cesium/scripts/prep-cesium-path.mjs +161 -161
- package/skills/remotion-best-practices/remotion-maps/techniques/mapbox/TECHNIQUE.md +449 -449
- package/skills/remotion-best-practices/remotion-maps/techniques/mapbox/references/render-stability.md +64 -64
- package/skills/remotion-best-practices/remotion-maps/techniques/maplibre/TECHNIQUE.md +484 -484
- package/skills/remotion-best-practices/remotion-maps/techniques/maplibre/references/render-stability.md +64 -64
- package/skills/remotion-best-practices/remotion-maps/techniques/maptiler/TECHNIQUE.md +80 -80
- package/skills/remotion-best-practices/remotion-maps/techniques/maptiler/assets/CountryLabel.tsx +70 -70
- package/skills/remotion-best-practices/remotion-maps/techniques/maptiler/assets/MapTilerVectorElement.ts +80 -80
- package/skills/remotion-best-practices/remotion-maps/techniques/maptiler/assets/RiverReveal.tsx +363 -363
- package/skills/remotion-best-practices/remotion-maps/techniques/maptiler/assets/example-Root.tsx +22 -22
- package/skills/remotion-best-practices/remotion-maps/techniques/maptiler/assets/sample-data/country-meta.json +7535 -7535
- package/skills/remotion-best-practices/remotion-maps/techniques/maptiler/assets/sample-data/yarlung-flow.json +605 -605
- package/skills/remotion-best-practices/remotion-maps/techniques/maptiler/assets/tokens.ts +34 -34
- package/skills/remotion-best-practices/remotion-maps/techniques/maptiler/references/map-data-sources.md +91 -91
- package/skills/remotion-best-practices/remotion-maps/techniques/maptiler/references/map-explainer-architecture.md +129 -129
- package/skills/remotion-best-practices/remotion-maps/techniques/maptiler/references/map-geo-prep.md +85 -85
- package/skills/remotion-best-practices/remotion-maps/techniques/maptiler/references/render-stability.md +64 -64
- package/skills/remotion-best-practices/remotion-maps/techniques/maptiler/scripts/prep-geo.mjs +202 -202
- package/skills/remotion-best-practices/remotion-maps/techniques/static-map/TECHNIQUE.md +37 -37
- package/skills/remotion-best-practices/remotion-markup/3d.md +86 -86
- package/skills/remotion-best-practices/remotion-markup/REFERENCE.md +358 -358
- package/skills/remotion-best-practices/remotion-markup/agents/openai.yaml +7 -7
- package/skills/remotion-best-practices/remotion-markup/assets/remotion-icon.svg +4 -4
- package/skills/remotion-best-practices/remotion-markup/audio-visualization.md +198 -198
- package/skills/remotion-best-practices/remotion-markup/audio.md +169 -169
- package/skills/remotion-best-practices/remotion-markup/calculate-metadata.md +136 -136
- package/skills/remotion-best-practices/remotion-markup/compositions.md +123 -123
- package/skills/remotion-best-practices/remotion-markup/connected-compositions.md +79 -79
- package/skills/remotion-best-practices/remotion-markup/cropping.md +34 -34
- package/skills/remotion-best-practices/remotion-markup/effects.md +251 -251
- package/skills/remotion-best-practices/remotion-markup/embedding-videos.md +171 -171
- package/skills/remotion-best-practices/remotion-markup/ffmpeg.md +38 -38
- package/skills/remotion-best-practices/remotion-markup/gifs.md +187 -187
- package/skills/remotion-best-practices/remotion-markup/google-fonts.md +76 -76
- package/skills/remotion-best-practices/remotion-markup/html-in-canvas.md +128 -128
- package/skills/remotion-best-practices/remotion-markup/images.md +73 -73
- package/skills/remotion-best-practices/remotion-markup/light-leaks.md +106 -106
- package/skills/remotion-best-practices/remotion-markup/local-fonts.md +69 -69
- package/skills/remotion-best-practices/remotion-markup/lottie.md +73 -73
- package/skills/remotion-best-practices/remotion-markup/measuring-dom-nodes.md +38 -38
- package/skills/remotion-best-practices/remotion-markup/measuring-text.md +146 -146
- package/skills/remotion-best-practices/remotion-markup/motion-blur.md +60 -60
- package/skills/remotion-best-practices/remotion-markup/multi-scene-video.md +81 -81
- package/skills/remotion-best-practices/remotion-markup/parameters.md +111 -111
- package/skills/remotion-best-practices/remotion-markup/remotion-maps/REFERENCE.md +36 -36
- package/skills/remotion-best-practices/remotion-markup/remotion-maps/agents/openai.yaml +7 -7
- package/skills/remotion-best-practices/remotion-markup/remotion-maps/assets/remotion-icon.svg +4 -4
- package/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/cesium/TECHNIQUE.md +89 -89
- package/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/cesium/assets/CesiumFlythrough.tsx +284 -284
- package/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/cesium/assets/cesium-path.json +299 -299
- package/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/cesium/assets/city-path.json +12 -12
- package/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/cesium/assets/example-Root.tsx +39 -39
- package/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/cesium/assets/flight-path.ts +35 -35
- package/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/cesium/assets/sample-river.geojson +215 -215
- package/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/cesium/references/3d-data-sources.md +43 -43
- package/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/cesium/references/3d-flyover-architecture.md +128 -128
- package/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/cesium/references/3d-troubleshooting.md +57 -57
- package/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/cesium/scripts/prep-cesium-path.mjs +161 -161
- package/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/mapbox/TECHNIQUE.md +449 -449
- package/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/mapbox/references/render-stability.md +64 -64
- package/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/maplibre/TECHNIQUE.md +484 -484
- package/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/maplibre/references/render-stability.md +64 -64
- package/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/maptiler/TECHNIQUE.md +80 -80
- package/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/maptiler/assets/CountryLabel.tsx +70 -70
- package/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/maptiler/assets/MapTilerVectorElement.ts +80 -80
- package/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/maptiler/assets/RiverReveal.tsx +363 -363
- package/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/maptiler/assets/example-Root.tsx +22 -22
- package/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/maptiler/assets/sample-data/country-meta.json +7535 -7535
- package/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/maptiler/assets/sample-data/yarlung-flow.json +605 -605
- package/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/maptiler/assets/tokens.ts +34 -34
- package/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/maptiler/references/map-data-sources.md +91 -91
- package/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/maptiler/references/map-explainer-architecture.md +129 -129
- package/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/maptiler/references/map-geo-prep.md +85 -85
- package/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/maptiler/references/render-stability.md +64 -64
- package/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/maptiler/scripts/prep-geo.mjs +202 -202
- package/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/static-map/TECHNIQUE.md +37 -37
- package/skills/remotion-best-practices/remotion-markup/sequencing.md +169 -169
- package/skills/remotion-best-practices/remotion-markup/sfx.md +51 -51
- package/skills/remotion-best-practices/remotion-markup/silence-detection.md +71 -71
- package/skills/remotion-best-practices/remotion-markup/text-highlights.md +56 -56
- package/skills/remotion-best-practices/remotion-markup/timing.md +111 -111
- package/skills/remotion-best-practices/remotion-markup/transitions.md +239 -239
- package/skills/remotion-best-practices/remotion-markup/video-editing.md +90 -90
- package/skills/remotion-best-practices/remotion-markup/voiceover.md +99 -99
- package/skills/remotion-best-practices/remotion-multimedia/REFERENCE.md +20 -20
- package/skills/remotion-best-practices/remotion-multimedia/agents/openai.yaml +7 -7
- package/skills/remotion-best-practices/remotion-multimedia/assets/remotion-icon.svg +4 -4
- package/skills/remotion-best-practices/remotion-multimedia/get-audio-duration.md +56 -56
- package/skills/remotion-best-practices/remotion-multimedia/get-video-dimensions.md +66 -66
- package/skills/remotion-best-practices/remotion-multimedia/get-video-duration.md +58 -58
- package/skills/remotion-best-practices/remotion-render/REFERENCE.md +35 -35
- package/skills/remotion-best-practices/remotion-render/agents/openai.yaml +7 -7
- package/skills/remotion-best-practices/remotion-render/assets/remotion-icon.svg +4 -4
- package/skills/remotion-best-practices/remotion-render/transparent-videos.md +106 -106
- package/skills/remotion-best-practices/remotion-saas/REFERENCE.md +33 -33
- package/skills/remotion-best-practices/remotion-saas/agents/openai.yaml +7 -7
- package/skills/remotion-best-practices/remotion-saas/assets/remotion-icon.svg +4 -4
- package/skills/remotion-best-practices/remotion-saas/framework.md +19 -19
- package/skills/remotion-best-practices/remotion-saas/player.md +33 -33
- package/skills/remotion-best-practices/remotion-saas/rendering.md +69 -69
- package/skills/remotion-best-practices/remotion-studio/REFERENCE.md +24 -24
- package/skills/remotion-best-practices/remotion-studio/agents/openai.yaml +7 -7
- package/skills/remotion-best-practices/remotion-studio/assets/remotion-icon.svg +4 -4
- package/skills/remotion-best-practices/remotion-upgrade/REFERENCE.md +31 -31
- package/skills/remotion-best-practices/remotion-upgrade/agents/openai.yaml +7 -7
- package/skills/remotion-best-practices/remotion-upgrade/assets/remotion-icon.svg +4 -4
- package/skills/remotion-captions/SKILL.md +31 -31
- package/skills/remotion-captions/agents/openai.yaml +7 -7
- package/skills/remotion-captions/assets/remotion-icon.svg +4 -4
- package/skills/remotion-captions/display-captions.md +190 -190
- package/skills/remotion-captions/import-srt-captions.md +73 -73
- package/skills/remotion-captions/transcribe-captions.md +70 -70
- package/skills/remotion-create/SKILL.md +80 -80
- package/skills/remotion-create/agents/openai.yaml +7 -7
- package/skills/remotion-create/assets/remotion-icon.svg +4 -4
- package/skills/remotion-create/tailwind.md +11 -11
- package/skills/remotion-create/video-layout.md +9 -9
- package/skills/remotion-docs/SKILL.md +41 -41
- package/skills/remotion-docs/agents/openai.yaml +7 -7
- package/skills/remotion-docs/assets/remotion-icon.svg +4 -4
- package/skills/remotion-interactivity/SKILL.md +310 -310
- package/skills/remotion-interactivity/agents/openai.yaml +7 -7
- package/skills/remotion-interactivity/assets/remotion-icon.svg +4 -4
- package/skills/remotion-maps/SKILL.md +31 -31
- package/skills/remotion-maps/agents/openai.yaml +7 -7
- package/skills/remotion-maps/assets/remotion-icon.svg +4 -4
- package/skills/remotion-maps/techniques/cesium/TECHNIQUE.md +89 -89
- package/skills/remotion-maps/techniques/cesium/assets/CesiumFlythrough.tsx +284 -284
- package/skills/remotion-maps/techniques/cesium/assets/cesium-path.json +299 -299
- package/skills/remotion-maps/techniques/cesium/assets/city-path.json +12 -12
- package/skills/remotion-maps/techniques/cesium/assets/example-Root.tsx +39 -39
- package/skills/remotion-maps/techniques/cesium/assets/flight-path.ts +35 -35
- package/skills/remotion-maps/techniques/cesium/assets/sample-river.geojson +215 -215
- package/skills/remotion-maps/techniques/cesium/references/3d-data-sources.md +43 -43
- package/skills/remotion-maps/techniques/cesium/references/3d-flyover-architecture.md +128 -128
- package/skills/remotion-maps/techniques/cesium/references/3d-troubleshooting.md +57 -57
- package/skills/remotion-maps/techniques/cesium/scripts/prep-cesium-path.mjs +161 -161
- package/skills/remotion-maps/techniques/mapbox/TECHNIQUE.md +449 -449
- package/skills/remotion-maps/techniques/mapbox/references/render-stability.md +64 -64
- package/skills/remotion-maps/techniques/maplibre/TECHNIQUE.md +484 -484
- package/skills/remotion-maps/techniques/maplibre/references/render-stability.md +64 -64
- package/skills/remotion-maps/techniques/maptiler/TECHNIQUE.md +80 -80
- package/skills/remotion-maps/techniques/maptiler/assets/CountryLabel.tsx +70 -70
- package/skills/remotion-maps/techniques/maptiler/assets/MapTilerVectorElement.ts +80 -80
- package/skills/remotion-maps/techniques/maptiler/assets/RiverReveal.tsx +363 -363
- package/skills/remotion-maps/techniques/maptiler/assets/example-Root.tsx +22 -22
- package/skills/remotion-maps/techniques/maptiler/assets/sample-data/country-meta.json +7535 -7535
- package/skills/remotion-maps/techniques/maptiler/assets/sample-data/yarlung-flow.json +605 -605
- package/skills/remotion-maps/techniques/maptiler/assets/tokens.ts +34 -34
- package/skills/remotion-maps/techniques/maptiler/references/map-data-sources.md +91 -91
- package/skills/remotion-maps/techniques/maptiler/references/map-explainer-architecture.md +129 -129
- package/skills/remotion-maps/techniques/maptiler/references/map-geo-prep.md +85 -85
- package/skills/remotion-maps/techniques/maptiler/references/render-stability.md +64 -64
- package/skills/remotion-maps/techniques/maptiler/scripts/prep-geo.mjs +202 -202
- package/skills/remotion-maps/techniques/static-map/TECHNIQUE.md +37 -37
- package/skills/remotion-markup/3d.md +86 -86
- package/skills/remotion-markup/SKILL.md +353 -353
- package/skills/remotion-markup/agents/openai.yaml +7 -7
- package/skills/remotion-markup/assets/remotion-icon.svg +4 -4
- package/skills/remotion-markup/audio-visualization.md +198 -198
- package/skills/remotion-markup/audio.md +169 -169
- package/skills/remotion-markup/calculate-metadata.md +136 -136
- package/skills/remotion-markup/compositions.md +123 -123
- package/skills/remotion-markup/connected-compositions.md +79 -79
- package/skills/remotion-markup/cropping.md +34 -34
- package/skills/remotion-markup/effects.md +251 -251
- package/skills/remotion-markup/embedding-videos.md +171 -171
- package/skills/remotion-markup/ffmpeg.md +38 -38
- package/skills/remotion-markup/gifs.md +187 -187
- package/skills/remotion-markup/google-fonts.md +76 -76
- package/skills/remotion-markup/html-in-canvas.md +128 -128
- package/skills/remotion-markup/images.md +73 -73
- package/skills/remotion-markup/light-leaks.md +106 -106
- package/skills/remotion-markup/local-fonts.md +69 -69
- package/skills/remotion-markup/lottie.md +73 -73
- package/skills/remotion-markup/measuring-dom-nodes.md +38 -38
- package/skills/remotion-markup/measuring-text.md +146 -146
- package/skills/remotion-markup/motion-blur.md +60 -60
- package/skills/remotion-markup/multi-scene-video.md +81 -81
- package/skills/remotion-markup/parameters.md +111 -111
- package/skills/remotion-markup/remotion-maps/REFERENCE.md +36 -36
- package/skills/remotion-markup/remotion-maps/agents/openai.yaml +7 -7
- package/skills/remotion-markup/remotion-maps/assets/remotion-icon.svg +4 -4
- package/skills/remotion-markup/remotion-maps/techniques/cesium/TECHNIQUE.md +89 -89
- package/skills/remotion-markup/remotion-maps/techniques/cesium/assets/CesiumFlythrough.tsx +284 -284
- package/skills/remotion-markup/remotion-maps/techniques/cesium/assets/cesium-path.json +299 -299
- package/skills/remotion-markup/remotion-maps/techniques/cesium/assets/city-path.json +12 -12
- package/skills/remotion-markup/remotion-maps/techniques/cesium/assets/example-Root.tsx +39 -39
- package/skills/remotion-markup/remotion-maps/techniques/cesium/assets/flight-path.ts +35 -35
- package/skills/remotion-markup/remotion-maps/techniques/cesium/assets/sample-river.geojson +215 -215
- package/skills/remotion-markup/remotion-maps/techniques/cesium/references/3d-data-sources.md +43 -43
- package/skills/remotion-markup/remotion-maps/techniques/cesium/references/3d-flyover-architecture.md +128 -128
- package/skills/remotion-markup/remotion-maps/techniques/cesium/references/3d-troubleshooting.md +57 -57
- package/skills/remotion-markup/remotion-maps/techniques/cesium/scripts/prep-cesium-path.mjs +161 -161
- package/skills/remotion-markup/remotion-maps/techniques/mapbox/TECHNIQUE.md +449 -449
- package/skills/remotion-markup/remotion-maps/techniques/mapbox/references/render-stability.md +64 -64
- package/skills/remotion-markup/remotion-maps/techniques/maplibre/TECHNIQUE.md +484 -484
- package/skills/remotion-markup/remotion-maps/techniques/maplibre/references/render-stability.md +64 -64
- package/skills/remotion-markup/remotion-maps/techniques/maptiler/TECHNIQUE.md +80 -80
- package/skills/remotion-markup/remotion-maps/techniques/maptiler/assets/CountryLabel.tsx +70 -70
- package/skills/remotion-markup/remotion-maps/techniques/maptiler/assets/MapTilerVectorElement.ts +80 -80
- package/skills/remotion-markup/remotion-maps/techniques/maptiler/assets/RiverReveal.tsx +363 -363
- package/skills/remotion-markup/remotion-maps/techniques/maptiler/assets/example-Root.tsx +22 -22
- package/skills/remotion-markup/remotion-maps/techniques/maptiler/assets/sample-data/country-meta.json +7535 -7535
- package/skills/remotion-markup/remotion-maps/techniques/maptiler/assets/sample-data/yarlung-flow.json +605 -605
- package/skills/remotion-markup/remotion-maps/techniques/maptiler/assets/tokens.ts +34 -34
- package/skills/remotion-markup/remotion-maps/techniques/maptiler/references/map-data-sources.md +91 -91
- package/skills/remotion-markup/remotion-maps/techniques/maptiler/references/map-explainer-architecture.md +129 -129
- package/skills/remotion-markup/remotion-maps/techniques/maptiler/references/map-geo-prep.md +85 -85
- package/skills/remotion-markup/remotion-maps/techniques/maptiler/references/render-stability.md +64 -64
- package/skills/remotion-markup/remotion-maps/techniques/maptiler/scripts/prep-geo.mjs +202 -202
- package/skills/remotion-markup/remotion-maps/techniques/static-map/TECHNIQUE.md +37 -37
- package/skills/remotion-markup/sequencing.md +169 -169
- package/skills/remotion-markup/sfx.md +51 -51
- package/skills/remotion-markup/silence-detection.md +71 -71
- package/skills/remotion-markup/text-highlights.md +56 -56
- package/skills/remotion-markup/timing.md +111 -111
- package/skills/remotion-markup/transitions.md +239 -239
- package/skills/remotion-markup/video-editing.md +90 -90
- package/skills/remotion-markup/voiceover.md +99 -99
- package/skills/remotion-multimedia/SKILL.md +15 -15
- package/skills/remotion-multimedia/agents/openai.yaml +7 -7
- package/skills/remotion-multimedia/assets/remotion-icon.svg +4 -4
- package/skills/remotion-multimedia/get-audio-duration.md +56 -56
- package/skills/remotion-multimedia/get-video-dimensions.md +66 -66
- package/skills/remotion-multimedia/get-video-duration.md +58 -58
- package/skills/remotion-render/SKILL.md +30 -30
- package/skills/remotion-render/agents/openai.yaml +7 -7
- package/skills/remotion-render/assets/remotion-icon.svg +4 -4
- package/skills/remotion-render/transparent-videos.md +106 -106
- package/skills/remotion-saas/SKILL.md +28 -28
- package/skills/remotion-saas/agents/openai.yaml +7 -7
- package/skills/remotion-saas/assets/remotion-icon.svg +4 -4
- package/skills/remotion-saas/framework.md +19 -19
- package/skills/remotion-saas/player.md +33 -33
- package/skills/remotion-saas/rendering.md +69 -69
- package/skills/remotion-studio/SKILL.md +19 -19
- package/skills/remotion-studio/agents/openai.yaml +7 -7
- package/skills/remotion-studio/assets/remotion-icon.svg +4 -4
- package/skills/remotion-upgrade/SKILL.md +26 -26
- package/skills/remotion-upgrade/agents/openai.yaml +7 -7
- package/skills/remotion-upgrade/assets/remotion-icon.svg +4 -4
- 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(', ')}`);
|