@amg555/frameforge-mcp 2.7.3 → 2.7.7
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/.claude-plugin/marketplace.json +3 -3
- package/AGENTS.md +33 -0
- package/CHANGELOG.md +49 -0
- package/CLAUDE.md +17 -6
- package/GEMINI.md +63 -0
- package/README.md +216 -426
- package/START_HERE.md +4 -2
- package/package.json +5 -3
- package/plugins/ai-video-editor/README.md +32 -0
- package/plugins/ai-video-editor/SKILL.md +152 -0
- package/plugins/ai-video-editor/assets/fonts/fonts.css +2409 -0
- package/plugins/ai-video-editor/assets/fonts/ttf/anton-400.ttf +0 -0
- package/plugins/ai-video-editor/assets/fonts/ttf/archivo-800.ttf +0 -0
- package/plugins/ai-video-editor/assets/fonts/ttf/cabin-sketch-700.ttf +0 -0
- package/plugins/ai-video-editor/assets/fonts/ttf/dm-sans-700.ttf +0 -0
- package/plugins/ai-video-editor/assets/fonts/ttf/fraunces-600.ttf +0 -0
- package/plugins/ai-video-editor/assets/fonts/ttf/fraunces-700.ttf +0 -0
- package/plugins/ai-video-editor/assets/fonts/ttf/fredoka-700.ttf +0 -0
- package/plugins/ai-video-editor/assets/fonts/ttf/inter-700.ttf +0 -0
- package/plugins/ai-video-editor/assets/fonts/ttf/inter-800.ttf +0 -0
- package/plugins/ai-video-editor/assets/fonts/ttf/inter-tight-800.ttf +0 -0
- package/plugins/ai-video-editor/assets/fonts/ttf/kalam-700.ttf +0 -0
- package/plugins/ai-video-editor/assets/fonts/ttf/noto-sans-devanagari-700.ttf +0 -0
- package/plugins/ai-video-editor/assets/fonts/web/noto-sans-devanagari-devanagari-400-normal.woff2 +0 -0
- package/plugins/ai-video-editor/assets/fonts/web/noto-sans-devanagari-devanagari-500-normal.woff2 +0 -0
- package/plugins/ai-video-editor/assets/fonts/web/noto-sans-devanagari-devanagari-600-normal.woff2 +0 -0
- package/plugins/ai-video-editor/assets/fonts/web/noto-sans-devanagari-devanagari-700-normal.woff2 +0 -0
- package/plugins/ai-video-editor/assets/fonts/web/noto-sans-devanagari-devanagari-800-normal.woff2 +0 -0
- package/plugins/ai-video-editor/engine/hidpi.js +117 -0
- package/plugins/ai-video-editor/engine/page.html +43 -0
- package/plugins/ai-video-editor/engine/player.js +145 -0
- package/plugins/ai-video-editor/references/example-story-warm-canvas.js +95 -0
- package/plugins/ai-video-editor/references/story-guide.md +112 -0
- package/plugins/ai-video-editor/requirements.txt +4 -0
- package/plugins/ai-video-editor/styles/chalk-talk/base.js +490 -0
- package/plugins/ai-video-editor/styles/chalk-talk/style.json +14 -0
- package/plugins/ai-video-editor/styles/chalk-talk/style.md +41 -0
- package/plugins/ai-video-editor/styles/clean-tech/base.js +447 -0
- package/plugins/ai-video-editor/styles/clean-tech/style.json +15 -0
- package/plugins/ai-video-editor/styles/clean-tech/style.md +38 -0
- package/plugins/ai-video-editor/styles/creator-motion-graphics/base.js +698 -0
- package/plugins/ai-video-editor/styles/creator-motion-graphics/style.json +16 -0
- package/plugins/ai-video-editor/styles/creator-motion-graphics/style.md +39 -0
- package/plugins/ai-video-editor/styles/data-story/base.js +432 -0
- package/plugins/ai-video-editor/styles/data-story/style.json +14 -0
- package/plugins/ai-video-editor/styles/data-story/style.md +38 -0
- package/plugins/ai-video-editor/styles/index.json +103 -0
- package/plugins/ai-video-editor/styles/pop-info/base.js +570 -0
- package/plugins/ai-video-editor/styles/pop-info/style.json +13 -0
- package/plugins/ai-video-editor/styles/pop-info/style.md +37 -0
- package/plugins/ai-video-editor/styles/software-walkthrough/base.js +544 -0
- package/plugins/ai-video-editor/styles/software-walkthrough/style.json +15 -0
- package/plugins/ai-video-editor/styles/software-walkthrough/style.md +38 -0
- package/plugins/ai-video-editor/styles/warm-canvas/base.js +610 -0
- package/plugins/ai-video-editor/styles/warm-canvas/style.json +14 -0
- package/plugins/ai-video-editor/styles/warm-canvas/style.md +37 -0
- package/plugins/aiinsight-shorts/CHANGELOG.md +6 -0
- package/plugins/aiinsight-shorts/README.md +43 -0
- package/plugins/aiinsight-shorts/SKILL.md +138 -0
- package/plugins/aiinsight-shorts/styles/deep-dive/STYLE.md +58 -0
- package/plugins/aiinsight-shorts/styles/deep-dive/example/data/cues.json +140 -0
- package/plugins/aiinsight-shorts/styles/deep-dive/example/data/lines.json +67 -0
- package/plugins/aiinsight-shorts/styles/deep-dive/example/data/words.json +614 -0
- package/plugins/aiinsight-shorts/styles/deep-dive/example/data/words.txt +102 -0
- package/plugins/aiinsight-shorts/styles/deep-dive/example/fonts/Inter-Black.otf +0 -0
- package/plugins/aiinsight-shorts/styles/deep-dive/example/fonts/Inter-ExtraBold.otf +0 -0
- package/plugins/aiinsight-shorts/styles/deep-dive/example/index.html +17 -0
- package/plugins/aiinsight-shorts/styles/deep-dive/example/script.json +27 -0
- package/plugins/aiinsight-shorts/styles/deep-dive/example/sheet.html +11 -0
- package/plugins/aiinsight-shorts/styles/deep-dive/example/src/core/board.js +62 -0
- package/plugins/aiinsight-shorts/styles/deep-dive/example/src/core/captions.js +68 -0
- package/plugins/aiinsight-shorts/styles/deep-dive/example/src/core/engine.js +65 -0
- package/plugins/aiinsight-shorts/styles/deep-dive/example/src/core/human.js +128 -0
- package/plugins/aiinsight-shorts/styles/deep-dive/example/src/core/lib.js +44 -0
- package/plugins/aiinsight-shorts/styles/deep-dive/example/src/core/look2d.js +33 -0
- package/plugins/aiinsight-shorts/styles/deep-dive/example/src/core/sdf.js +79 -0
- package/plugins/aiinsight-shorts/styles/deep-dive/example/src/core/sets.js +107 -0
- package/plugins/aiinsight-shorts/styles/deep-dive/example/src/core/timing.js +23 -0
- package/plugins/aiinsight-shorts/styles/deep-dive/example/src/main.js +56 -0
- package/plugins/aiinsight-shorts/styles/deep-dive/example/src/sheet.js +79 -0
- package/plugins/aiinsight-shorts/styles/deep-dive/example/src/shots.js +136 -0
- package/plugins/aiinsight-shorts/styles/deep-dive/example/tools/capture.mjs +122 -0
- package/plugins/aiinsight-shorts/styles/deep-dive/example/tools/mix.py +172 -0
- package/plugins/aiinsight-shorts/styles/deep-dive/example/vendor/LICENSE-three.txt +21 -0
- package/plugins/aiinsight-shorts/styles/deep-dive/example/vendor/addons/environments/RoomEnvironment.js +144 -0
- package/plugins/aiinsight-shorts/styles/deep-dive/example/vendor/addons/postprocessing/BokehPass.js +141 -0
- package/plugins/aiinsight-shorts/styles/deep-dive/example/vendor/addons/postprocessing/EffectComposer.js +231 -0
- package/plugins/aiinsight-shorts/styles/deep-dive/example/vendor/addons/postprocessing/MaskPass.js +104 -0
- package/plugins/aiinsight-shorts/styles/deep-dive/example/vendor/addons/postprocessing/OutputPass.js +97 -0
- package/plugins/aiinsight-shorts/styles/deep-dive/example/vendor/addons/postprocessing/Pass.js +95 -0
- package/plugins/aiinsight-shorts/styles/deep-dive/example/vendor/addons/postprocessing/RenderPass.js +99 -0
- package/plugins/aiinsight-shorts/styles/deep-dive/example/vendor/addons/postprocessing/ShaderPass.js +77 -0
- package/plugins/aiinsight-shorts/styles/deep-dive/example/vendor/addons/postprocessing/UnrealBloomPass.js +415 -0
- package/plugins/aiinsight-shorts/styles/deep-dive/example/vendor/addons/shaders/BokehShader.js +145 -0
- package/plugins/aiinsight-shorts/styles/deep-dive/example/vendor/addons/shaders/CopyShader.js +45 -0
- package/plugins/aiinsight-shorts/styles/deep-dive/example/vendor/addons/shaders/LuminosityHighPassShader.js +64 -0
- package/plugins/aiinsight-shorts/styles/deep-dive/example/vendor/addons/shaders/OutputShader.js +85 -0
- package/plugins/aiinsight-shorts/styles/deep-dive/example/vendor/three.module.js +6 -0
- package/plugins/aiinsight-shorts/styles/deep-dive/style-sheet.png +0 -0
- package/plugins/aiinsight-shorts/styles/inside-out/STYLE.md +97 -0
- package/plugins/aiinsight-shorts/styles/inside-out/example/data/cues.json +178 -0
- package/plugins/aiinsight-shorts/styles/inside-out/example/data/lines.json +73 -0
- package/plugins/aiinsight-shorts/styles/inside-out/example/data/words.json +662 -0
- package/plugins/aiinsight-shorts/styles/inside-out/example/fonts/Inter-Black.otf +0 -0
- package/plugins/aiinsight-shorts/styles/inside-out/example/index.html +17 -0
- package/plugins/aiinsight-shorts/styles/inside-out/example/script.json +26 -0
- package/plugins/aiinsight-shorts/styles/inside-out/example/src/core/captions.js +68 -0
- package/plugins/aiinsight-shorts/styles/inside-out/example/src/core/kit.js +345 -0
- package/plugins/aiinsight-shorts/styles/inside-out/example/src/core/lib.js +44 -0
- package/plugins/aiinsight-shorts/styles/inside-out/example/src/core/timing.js +23 -0
- package/plugins/aiinsight-shorts/styles/inside-out/example/src/main.js +62 -0
- package/plugins/aiinsight-shorts/styles/inside-out/example/src/shots.js +195 -0
- package/plugins/aiinsight-shorts/styles/inside-out/example/tools/capture.mjs +122 -0
- package/plugins/aiinsight-shorts/styles/inside-out/example/tools/mix.py +172 -0
- package/plugins/aiinsight-shorts/styles/inside-out/style-sheet.png +0 -0
- package/plugins/aiinsight-shorts/styles/night-file/STYLE.md +36 -0
- package/plugins/aiinsight-shorts/styles/night-file/example/data/cues.json +146 -0
- package/plugins/aiinsight-shorts/styles/night-file/example/data/lines.json +73 -0
- package/plugins/aiinsight-shorts/styles/night-file/example/data/words.json +572 -0
- package/plugins/aiinsight-shorts/styles/night-file/example/data/words.txt +95 -0
- package/plugins/aiinsight-shorts/styles/night-file/example/fonts/FreeMonoBold.ttf +0 -0
- package/plugins/aiinsight-shorts/styles/night-file/example/fonts/Inter-Black.otf +0 -0
- package/plugins/aiinsight-shorts/styles/night-file/example/index.html +18 -0
- package/plugins/aiinsight-shorts/styles/night-file/example/script.json +26 -0
- package/plugins/aiinsight-shorts/styles/night-file/example/sheet.html +13 -0
- package/plugins/aiinsight-shorts/styles/night-file/example/src/core/board.js +62 -0
- package/plugins/aiinsight-shorts/styles/night-file/example/src/core/captions.js +49 -0
- package/plugins/aiinsight-shorts/styles/night-file/example/src/core/engine.js +65 -0
- package/plugins/aiinsight-shorts/styles/night-file/example/src/core/human.js +128 -0
- package/plugins/aiinsight-shorts/styles/night-file/example/src/core/kit.js +151 -0
- package/plugins/aiinsight-shorts/styles/night-file/example/src/core/lib.js +44 -0
- package/plugins/aiinsight-shorts/styles/night-file/example/src/core/sdf.js +79 -0
- package/plugins/aiinsight-shorts/styles/night-file/example/src/core/sets3d.js +106 -0
- package/plugins/aiinsight-shorts/styles/night-file/example/src/core/timing.js +23 -0
- package/plugins/aiinsight-shorts/styles/night-file/example/src/main.js +56 -0
- package/plugins/aiinsight-shorts/styles/night-file/example/src/sheet.js +86 -0
- package/plugins/aiinsight-shorts/styles/night-file/example/src/shots.js +130 -0
- package/plugins/aiinsight-shorts/styles/night-file/example/tools/capture.mjs +122 -0
- package/plugins/aiinsight-shorts/styles/night-file/example/tools/mix.py +172 -0
- package/plugins/aiinsight-shorts/styles/night-file/example/vendor/LICENSE-three.txt +21 -0
- package/plugins/aiinsight-shorts/styles/night-file/example/vendor/addons/environments/RoomEnvironment.js +144 -0
- package/plugins/aiinsight-shorts/styles/night-file/example/vendor/addons/postprocessing/BokehPass.js +141 -0
- package/plugins/aiinsight-shorts/styles/night-file/example/vendor/addons/postprocessing/EffectComposer.js +231 -0
- package/plugins/aiinsight-shorts/styles/night-file/example/vendor/addons/postprocessing/MaskPass.js +104 -0
- package/plugins/aiinsight-shorts/styles/night-file/example/vendor/addons/postprocessing/OutputPass.js +97 -0
- package/plugins/aiinsight-shorts/styles/night-file/example/vendor/addons/postprocessing/Pass.js +95 -0
- package/plugins/aiinsight-shorts/styles/night-file/example/vendor/addons/postprocessing/RenderPass.js +99 -0
- package/plugins/aiinsight-shorts/styles/night-file/example/vendor/addons/postprocessing/ShaderPass.js +77 -0
- package/plugins/aiinsight-shorts/styles/night-file/example/vendor/addons/postprocessing/UnrealBloomPass.js +415 -0
- package/plugins/aiinsight-shorts/styles/night-file/example/vendor/addons/shaders/BokehShader.js +145 -0
- package/plugins/aiinsight-shorts/styles/night-file/example/vendor/addons/shaders/CopyShader.js +45 -0
- package/plugins/aiinsight-shorts/styles/night-file/example/vendor/addons/shaders/LuminosityHighPassShader.js +64 -0
- package/plugins/aiinsight-shorts/styles/night-file/example/vendor/addons/shaders/OutputShader.js +85 -0
- package/plugins/aiinsight-shorts/styles/night-file/example/vendor/three.module.js +6 -0
- package/plugins/aiinsight-shorts/styles/night-file/style-sheet.png +0 -0
- package/plugins/aiinsight-shorts/styles/paper-atlas/STYLE.md +30 -0
- package/plugins/aiinsight-shorts/styles/paper-atlas/example/data/cues.json +167 -0
- package/plugins/aiinsight-shorts/styles/paper-atlas/example/data/lines.json +67 -0
- package/plugins/aiinsight-shorts/styles/paper-atlas/example/data/words.json +614 -0
- package/plugins/aiinsight-shorts/styles/paper-atlas/example/data/words.txt +102 -0
- package/plugins/aiinsight-shorts/styles/paper-atlas/example/fonts/Caladea-Bold.ttf +0 -0
- package/plugins/aiinsight-shorts/styles/paper-atlas/example/fonts/Inter-Black.otf +0 -0
- package/plugins/aiinsight-shorts/styles/paper-atlas/example/index.html +15 -0
- package/plugins/aiinsight-shorts/styles/paper-atlas/example/script.json +26 -0
- package/plugins/aiinsight-shorts/styles/paper-atlas/example/sheet.html +12 -0
- package/plugins/aiinsight-shorts/styles/paper-atlas/example/src/core/board.js +62 -0
- package/plugins/aiinsight-shorts/styles/paper-atlas/example/src/core/captions.js +47 -0
- package/plugins/aiinsight-shorts/styles/paper-atlas/example/src/core/kit.js +152 -0
- package/plugins/aiinsight-shorts/styles/paper-atlas/example/src/core/lib.js +44 -0
- package/plugins/aiinsight-shorts/styles/paper-atlas/example/src/core/timing.js +23 -0
- package/plugins/aiinsight-shorts/styles/paper-atlas/example/src/main.js +62 -0
- package/plugins/aiinsight-shorts/styles/paper-atlas/example/src/sheet.js +61 -0
- package/plugins/aiinsight-shorts/styles/paper-atlas/example/src/shots.js +139 -0
- package/plugins/aiinsight-shorts/styles/paper-atlas/example/tools/capture.mjs +122 -0
- package/plugins/aiinsight-shorts/styles/paper-atlas/example/tools/mix.py +172 -0
- package/plugins/aiinsight-shorts/styles/paper-atlas/style-sheet.png +0 -0
- package/plugins/aiinsight-shorts/styles/stick-story/STYLE.md +32 -0
- package/plugins/aiinsight-shorts/styles/stick-story/example/data/cues.json +182 -0
- package/plugins/aiinsight-shorts/styles/stick-story/example/data/lines.json +79 -0
- package/plugins/aiinsight-shorts/styles/stick-story/example/data/words.json +662 -0
- package/plugins/aiinsight-shorts/styles/stick-story/example/data/words.txt +110 -0
- package/plugins/aiinsight-shorts/styles/stick-story/example/fonts/Inter-Black.otf +0 -0
- package/plugins/aiinsight-shorts/styles/stick-story/example/fonts/Inter-ExtraBold.otf +0 -0
- package/plugins/aiinsight-shorts/styles/stick-story/example/index.html +13 -0
- package/plugins/aiinsight-shorts/styles/stick-story/example/script.json +27 -0
- package/plugins/aiinsight-shorts/styles/stick-story/example/sheet.html +10 -0
- package/plugins/aiinsight-shorts/styles/stick-story/example/src/core/board.js +62 -0
- package/plugins/aiinsight-shorts/styles/stick-story/example/src/core/captions.js +47 -0
- package/plugins/aiinsight-shorts/styles/stick-story/example/src/core/kit.js +166 -0
- package/plugins/aiinsight-shorts/styles/stick-story/example/src/core/lib.js +44 -0
- package/plugins/aiinsight-shorts/styles/stick-story/example/src/core/timing.js +23 -0
- package/plugins/aiinsight-shorts/styles/stick-story/example/src/main.js +62 -0
- package/plugins/aiinsight-shorts/styles/stick-story/example/src/sheet.js +64 -0
- package/plugins/aiinsight-shorts/styles/stick-story/example/src/shots.js +148 -0
- package/plugins/aiinsight-shorts/styles/stick-story/example/tools/capture.mjs +122 -0
- package/plugins/aiinsight-shorts/styles/stick-story/example/tools/mix.py +172 -0
- package/plugins/aiinsight-shorts/styles/stick-story/style-sheet.png +0 -0
- package/plugins/aiinsight-shorts/styles/tall-tale/STYLE.md +51 -0
- package/plugins/aiinsight-shorts/styles/tall-tale/example/data/cues.json +271 -0
- package/plugins/aiinsight-shorts/styles/tall-tale/example/data/lines.json +127 -0
- package/plugins/aiinsight-shorts/styles/tall-tale/example/data/words.json +908 -0
- package/plugins/aiinsight-shorts/styles/tall-tale/example/data/words.txt +151 -0
- package/plugins/aiinsight-shorts/styles/tall-tale/example/fonts/Caladea-Bold.ttf +0 -0
- package/plugins/aiinsight-shorts/styles/tall-tale/example/fonts/Inter-Black.otf +0 -0
- package/plugins/aiinsight-shorts/styles/tall-tale/example/fonts/Inter-ExtraBold.otf +0 -0
- package/plugins/aiinsight-shorts/styles/tall-tale/example/index.html +19 -0
- package/plugins/aiinsight-shorts/styles/tall-tale/example/script.json +37 -0
- package/plugins/aiinsight-shorts/styles/tall-tale/example/sheet.html +13 -0
- package/plugins/aiinsight-shorts/styles/tall-tale/example/src/core/board.js +62 -0
- package/plugins/aiinsight-shorts/styles/tall-tale/example/src/core/captions.js +56 -0
- package/plugins/aiinsight-shorts/styles/tall-tale/example/src/core/engine.js +65 -0
- package/plugins/aiinsight-shorts/styles/tall-tale/example/src/core/lib.js +44 -0
- package/plugins/aiinsight-shorts/styles/tall-tale/example/src/core/props.js +166 -0
- package/plugins/aiinsight-shorts/styles/tall-tale/example/src/core/timing.js +23 -0
- package/plugins/aiinsight-shorts/styles/tall-tale/example/src/core/toon.js +352 -0
- package/plugins/aiinsight-shorts/styles/tall-tale/example/src/core/world.js +340 -0
- package/plugins/aiinsight-shorts/styles/tall-tale/example/src/main.js +56 -0
- package/plugins/aiinsight-shorts/styles/tall-tale/example/src/sheet.js +99 -0
- package/plugins/aiinsight-shorts/styles/tall-tale/example/src/shots.js +377 -0
- package/plugins/aiinsight-shorts/styles/tall-tale/example/tools/capture.mjs +122 -0
- package/plugins/aiinsight-shorts/styles/tall-tale/example/tools/mix.py +204 -0
- package/plugins/aiinsight-shorts/styles/tall-tale/example/vendor/LICENSE-three.txt +21 -0
- package/plugins/aiinsight-shorts/styles/tall-tale/example/vendor/addons/environments/RoomEnvironment.js +144 -0
- package/plugins/aiinsight-shorts/styles/tall-tale/example/vendor/addons/postprocessing/BokehPass.js +141 -0
- package/plugins/aiinsight-shorts/styles/tall-tale/example/vendor/addons/postprocessing/EffectComposer.js +231 -0
- package/plugins/aiinsight-shorts/styles/tall-tale/example/vendor/addons/postprocessing/MaskPass.js +104 -0
- package/plugins/aiinsight-shorts/styles/tall-tale/example/vendor/addons/postprocessing/OutputPass.js +97 -0
- package/plugins/aiinsight-shorts/styles/tall-tale/example/vendor/addons/postprocessing/Pass.js +95 -0
- package/plugins/aiinsight-shorts/styles/tall-tale/example/vendor/addons/postprocessing/RenderPass.js +99 -0
- package/plugins/aiinsight-shorts/styles/tall-tale/example/vendor/addons/postprocessing/ShaderPass.js +77 -0
- package/plugins/aiinsight-shorts/styles/tall-tale/example/vendor/addons/postprocessing/UnrealBloomPass.js +415 -0
- package/plugins/aiinsight-shorts/styles/tall-tale/example/vendor/addons/shaders/BokehShader.js +145 -0
- package/plugins/aiinsight-shorts/styles/tall-tale/example/vendor/addons/shaders/CopyShader.js +45 -0
- package/plugins/aiinsight-shorts/styles/tall-tale/example/vendor/addons/shaders/LuminosityHighPassShader.js +64 -0
- package/plugins/aiinsight-shorts/styles/tall-tale/example/vendor/addons/shaders/OutputShader.js +85 -0
- package/plugins/aiinsight-shorts/styles/tall-tale/example/vendor/three.module.js +6 -0
- package/plugins/aiinsight-shorts/styles/tall-tale/style-sheet.png +0 -0
- package/plugins/faceless-shorts/README.md +34 -0
- package/plugins/faceless-shorts/SKILL.md +124 -0
- package/plugins/faceless-shorts/styles/deep-dive/STYLE.md +58 -0
- package/plugins/faceless-shorts/styles/deep-dive/example/data/cues.json +140 -0
- package/plugins/faceless-shorts/styles/deep-dive/example/data/lines.json +67 -0
- package/plugins/faceless-shorts/styles/deep-dive/example/data/words.json +614 -0
- package/plugins/faceless-shorts/styles/deep-dive/example/data/words.txt +102 -0
- package/plugins/faceless-shorts/styles/deep-dive/example/fonts/Inter-Black.otf +0 -0
- package/plugins/faceless-shorts/styles/deep-dive/example/fonts/Inter-ExtraBold.otf +0 -0
- package/plugins/faceless-shorts/styles/deep-dive/example/index.html +16 -0
- package/plugins/faceless-shorts/styles/deep-dive/example/script.json +27 -0
- package/plugins/faceless-shorts/styles/deep-dive/example/sheet.html +10 -0
- package/plugins/faceless-shorts/styles/deep-dive/example/src/core/board.js +62 -0
- package/plugins/faceless-shorts/styles/deep-dive/example/src/core/captions.js +68 -0
- package/plugins/faceless-shorts/styles/deep-dive/example/src/core/engine.js +65 -0
- package/plugins/faceless-shorts/styles/deep-dive/example/src/core/human.js +128 -0
- package/plugins/faceless-shorts/styles/deep-dive/example/src/core/lib.js +44 -0
- package/plugins/faceless-shorts/styles/deep-dive/example/src/core/look2d.js +33 -0
- package/plugins/faceless-shorts/styles/deep-dive/example/src/core/sdf.js +79 -0
- package/plugins/faceless-shorts/styles/deep-dive/example/src/core/sets.js +107 -0
- package/plugins/faceless-shorts/styles/deep-dive/example/src/core/timing.js +23 -0
- package/plugins/faceless-shorts/styles/deep-dive/example/src/main.js +56 -0
- package/plugins/faceless-shorts/styles/deep-dive/example/src/sheet.js +79 -0
- package/plugins/faceless-shorts/styles/deep-dive/example/src/shots.js +136 -0
- package/plugins/faceless-shorts/styles/deep-dive/example/tools/capture.mjs +122 -0
- package/plugins/faceless-shorts/styles/deep-dive/example/tools/mix.py +172 -0
- package/plugins/faceless-shorts/styles/deep-dive/example/vendor/LICENSE-three.txt +21 -0
- package/plugins/faceless-shorts/styles/deep-dive/example/vendor/addons/environments/RoomEnvironment.js +144 -0
- package/plugins/faceless-shorts/styles/deep-dive/example/vendor/addons/postprocessing/BokehPass.js +141 -0
- package/plugins/faceless-shorts/styles/deep-dive/example/vendor/addons/postprocessing/EffectComposer.js +231 -0
- package/plugins/faceless-shorts/styles/deep-dive/example/vendor/addons/postprocessing/MaskPass.js +104 -0
- package/plugins/faceless-shorts/styles/deep-dive/example/vendor/addons/postprocessing/OutputPass.js +97 -0
- package/plugins/faceless-shorts/styles/deep-dive/example/vendor/addons/postprocessing/Pass.js +95 -0
- package/plugins/faceless-shorts/styles/deep-dive/example/vendor/addons/postprocessing/RenderPass.js +99 -0
- package/plugins/faceless-shorts/styles/deep-dive/example/vendor/addons/postprocessing/ShaderPass.js +77 -0
- package/plugins/faceless-shorts/styles/deep-dive/example/vendor/addons/postprocessing/UnrealBloomPass.js +415 -0
- package/plugins/faceless-shorts/styles/deep-dive/example/vendor/addons/shaders/BokehShader.js +145 -0
- package/plugins/faceless-shorts/styles/deep-dive/example/vendor/addons/shaders/CopyShader.js +45 -0
- package/plugins/faceless-shorts/styles/deep-dive/example/vendor/addons/shaders/LuminosityHighPassShader.js +64 -0
- package/plugins/faceless-shorts/styles/deep-dive/example/vendor/addons/shaders/OutputShader.js +85 -0
- package/plugins/faceless-shorts/styles/deep-dive/example/vendor/three.module.js +6 -0
- package/plugins/faceless-shorts/styles/deep-dive/style-sheet.png +0 -0
- package/plugins/faceless-shorts/styles/inside-out/STYLE.md +97 -0
- package/plugins/faceless-shorts/styles/inside-out/example/data/cues.json +178 -0
- package/plugins/faceless-shorts/styles/inside-out/example/data/lines.json +73 -0
- package/plugins/faceless-shorts/styles/inside-out/example/data/words.json +662 -0
- package/plugins/faceless-shorts/styles/inside-out/example/fonts/Inter-Black.otf +0 -0
- package/plugins/faceless-shorts/styles/inside-out/example/index.html +16 -0
- package/plugins/faceless-shorts/styles/inside-out/example/script.json +26 -0
- package/plugins/faceless-shorts/styles/inside-out/example/src/core/captions.js +68 -0
- package/plugins/faceless-shorts/styles/inside-out/example/src/core/kit.js +345 -0
- package/plugins/faceless-shorts/styles/inside-out/example/src/core/lib.js +44 -0
- package/plugins/faceless-shorts/styles/inside-out/example/src/core/timing.js +23 -0
- package/plugins/faceless-shorts/styles/inside-out/example/src/main.js +62 -0
- package/plugins/faceless-shorts/styles/inside-out/example/src/shots.js +195 -0
- package/plugins/faceless-shorts/styles/inside-out/example/tools/capture.mjs +122 -0
- package/plugins/faceless-shorts/styles/inside-out/example/tools/mix.py +172 -0
- package/plugins/faceless-shorts/styles/inside-out/style-sheet.png +0 -0
- package/plugins/faceless-shorts/styles/night-file/STYLE.md +36 -0
- package/plugins/faceless-shorts/styles/night-file/example/data/cues.json +146 -0
- package/plugins/faceless-shorts/styles/night-file/example/data/lines.json +73 -0
- package/plugins/faceless-shorts/styles/night-file/example/data/words.json +572 -0
- package/plugins/faceless-shorts/styles/night-file/example/data/words.txt +95 -0
- package/plugins/faceless-shorts/styles/night-file/example/fonts/FreeMonoBold.ttf +0 -0
- package/plugins/faceless-shorts/styles/night-file/example/fonts/Inter-Black.otf +0 -0
- package/plugins/faceless-shorts/styles/night-file/example/index.html +16 -0
- package/plugins/faceless-shorts/styles/night-file/example/script.json +26 -0
- package/plugins/faceless-shorts/styles/night-file/example/sheet.html +11 -0
- package/plugins/faceless-shorts/styles/night-file/example/src/core/board.js +62 -0
- package/plugins/faceless-shorts/styles/night-file/example/src/core/captions.js +49 -0
- package/plugins/faceless-shorts/styles/night-file/example/src/core/engine.js +65 -0
- package/plugins/faceless-shorts/styles/night-file/example/src/core/human.js +128 -0
- package/plugins/faceless-shorts/styles/night-file/example/src/core/kit.js +151 -0
- package/plugins/faceless-shorts/styles/night-file/example/src/core/lib.js +44 -0
- package/plugins/faceless-shorts/styles/night-file/example/src/core/sdf.js +79 -0
- package/plugins/faceless-shorts/styles/night-file/example/src/core/sets3d.js +106 -0
- package/plugins/faceless-shorts/styles/night-file/example/src/core/timing.js +23 -0
- package/plugins/faceless-shorts/styles/night-file/example/src/main.js +56 -0
- package/plugins/faceless-shorts/styles/night-file/example/src/sheet.js +86 -0
- package/plugins/faceless-shorts/styles/night-file/example/src/shots.js +130 -0
- package/plugins/faceless-shorts/styles/night-file/example/tools/capture.mjs +122 -0
- package/plugins/faceless-shorts/styles/night-file/example/tools/mix.py +172 -0
- package/plugins/faceless-shorts/styles/night-file/example/vendor/LICENSE-three.txt +21 -0
- package/plugins/faceless-shorts/styles/night-file/example/vendor/addons/environments/RoomEnvironment.js +144 -0
- package/plugins/faceless-shorts/styles/night-file/example/vendor/addons/postprocessing/BokehPass.js +141 -0
- package/plugins/faceless-shorts/styles/night-file/example/vendor/addons/postprocessing/EffectComposer.js +231 -0
- package/plugins/faceless-shorts/styles/night-file/example/vendor/addons/postprocessing/MaskPass.js +104 -0
- package/plugins/faceless-shorts/styles/night-file/example/vendor/addons/postprocessing/OutputPass.js +97 -0
- package/plugins/faceless-shorts/styles/night-file/example/vendor/addons/postprocessing/Pass.js +95 -0
- package/plugins/faceless-shorts/styles/night-file/example/vendor/addons/postprocessing/RenderPass.js +99 -0
- package/plugins/faceless-shorts/styles/night-file/example/vendor/addons/postprocessing/ShaderPass.js +77 -0
- package/plugins/faceless-shorts/styles/night-file/example/vendor/addons/postprocessing/UnrealBloomPass.js +415 -0
- package/plugins/faceless-shorts/styles/night-file/example/vendor/addons/shaders/BokehShader.js +145 -0
- package/plugins/faceless-shorts/styles/night-file/example/vendor/addons/shaders/CopyShader.js +45 -0
- package/plugins/faceless-shorts/styles/night-file/example/vendor/addons/shaders/LuminosityHighPassShader.js +64 -0
- package/plugins/faceless-shorts/styles/night-file/example/vendor/addons/shaders/OutputShader.js +85 -0
- package/plugins/faceless-shorts/styles/night-file/example/vendor/three.module.js +6 -0
- package/plugins/faceless-shorts/styles/night-file/style-sheet.png +0 -0
- package/plugins/faceless-shorts/styles/paper-atlas/STYLE.md +30 -0
- package/plugins/faceless-shorts/styles/paper-atlas/example/data/cues.json +167 -0
- package/plugins/faceless-shorts/styles/paper-atlas/example/data/lines.json +67 -0
- package/plugins/faceless-shorts/styles/paper-atlas/example/data/words.json +614 -0
- package/plugins/faceless-shorts/styles/paper-atlas/example/data/words.txt +102 -0
- package/plugins/faceless-shorts/styles/paper-atlas/example/fonts/Caladea-Bold.ttf +0 -0
- package/plugins/faceless-shorts/styles/paper-atlas/example/fonts/Inter-Black.otf +0 -0
- package/plugins/faceless-shorts/styles/paper-atlas/example/index.html +13 -0
- package/plugins/faceless-shorts/styles/paper-atlas/example/script.json +26 -0
- package/plugins/faceless-shorts/styles/paper-atlas/example/sheet.html +10 -0
- package/plugins/faceless-shorts/styles/paper-atlas/example/src/core/board.js +62 -0
- package/plugins/faceless-shorts/styles/paper-atlas/example/src/core/captions.js +47 -0
- package/plugins/faceless-shorts/styles/paper-atlas/example/src/core/kit.js +152 -0
- package/plugins/faceless-shorts/styles/paper-atlas/example/src/core/lib.js +44 -0
- package/plugins/faceless-shorts/styles/paper-atlas/example/src/core/timing.js +23 -0
- package/plugins/faceless-shorts/styles/paper-atlas/example/src/main.js +62 -0
- package/plugins/faceless-shorts/styles/paper-atlas/example/src/sheet.js +61 -0
- package/plugins/faceless-shorts/styles/paper-atlas/example/src/shots.js +139 -0
- package/plugins/faceless-shorts/styles/paper-atlas/example/tools/capture.mjs +122 -0
- package/plugins/faceless-shorts/styles/paper-atlas/example/tools/mix.py +172 -0
- package/plugins/faceless-shorts/styles/paper-atlas/style-sheet.png +0 -0
- package/plugins/faceless-shorts/styles/stick-story/STYLE.md +32 -0
- package/plugins/faceless-shorts/styles/stick-story/example/data/cues.json +182 -0
- package/plugins/faceless-shorts/styles/stick-story/example/data/lines.json +79 -0
- package/plugins/faceless-shorts/styles/stick-story/example/data/words.json +662 -0
- package/plugins/faceless-shorts/styles/stick-story/example/data/words.txt +110 -0
- package/plugins/faceless-shorts/styles/stick-story/example/fonts/Inter-Black.otf +0 -0
- package/plugins/faceless-shorts/styles/stick-story/example/fonts/Inter-ExtraBold.otf +0 -0
- package/plugins/faceless-shorts/styles/stick-story/example/index.html +12 -0
- package/plugins/faceless-shorts/styles/stick-story/example/script.json +27 -0
- package/plugins/faceless-shorts/styles/stick-story/example/sheet.html +9 -0
- package/plugins/faceless-shorts/styles/stick-story/example/src/core/board.js +62 -0
- package/plugins/faceless-shorts/styles/stick-story/example/src/core/captions.js +47 -0
- package/plugins/faceless-shorts/styles/stick-story/example/src/core/kit.js +166 -0
- package/plugins/faceless-shorts/styles/stick-story/example/src/core/lib.js +44 -0
- package/plugins/faceless-shorts/styles/stick-story/example/src/core/timing.js +23 -0
- package/plugins/faceless-shorts/styles/stick-story/example/src/main.js +62 -0
- package/plugins/faceless-shorts/styles/stick-story/example/src/sheet.js +64 -0
- package/plugins/faceless-shorts/styles/stick-story/example/src/shots.js +148 -0
- package/plugins/faceless-shorts/styles/stick-story/example/tools/capture.mjs +122 -0
- package/plugins/faceless-shorts/styles/stick-story/example/tools/mix.py +172 -0
- package/plugins/faceless-shorts/styles/stick-story/style-sheet.png +0 -0
- package/plugins/faceless-shorts/styles/tall-tale/STYLE.md +51 -0
- package/plugins/faceless-shorts/styles/tall-tale/example/data/cues.json +271 -0
- package/plugins/faceless-shorts/styles/tall-tale/example/data/lines.json +127 -0
- package/plugins/faceless-shorts/styles/tall-tale/example/data/words.json +908 -0
- package/plugins/faceless-shorts/styles/tall-tale/example/data/words.txt +151 -0
- package/plugins/faceless-shorts/styles/tall-tale/example/fonts/Caladea-Bold.ttf +0 -0
- package/plugins/faceless-shorts/styles/tall-tale/example/fonts/Inter-Black.otf +0 -0
- package/plugins/faceless-shorts/styles/tall-tale/example/fonts/Inter-ExtraBold.otf +0 -0
- package/plugins/faceless-shorts/styles/tall-tale/example/index.html +17 -0
- package/plugins/faceless-shorts/styles/tall-tale/example/script.json +37 -0
- package/plugins/faceless-shorts/styles/tall-tale/example/sheet.html +11 -0
- package/plugins/faceless-shorts/styles/tall-tale/example/src/core/board.js +62 -0
- package/plugins/faceless-shorts/styles/tall-tale/example/src/core/captions.js +56 -0
- package/plugins/faceless-shorts/styles/tall-tale/example/src/core/engine.js +65 -0
- package/plugins/faceless-shorts/styles/tall-tale/example/src/core/lib.js +44 -0
- package/plugins/faceless-shorts/styles/tall-tale/example/src/core/props.js +166 -0
- package/plugins/faceless-shorts/styles/tall-tale/example/src/core/timing.js +23 -0
- package/plugins/faceless-shorts/styles/tall-tale/example/src/core/toon.js +352 -0
- package/plugins/faceless-shorts/styles/tall-tale/example/src/core/world.js +340 -0
- package/plugins/faceless-shorts/styles/tall-tale/example/src/main.js +56 -0
- package/plugins/faceless-shorts/styles/tall-tale/example/src/sheet.js +99 -0
- package/plugins/faceless-shorts/styles/tall-tale/example/src/shots.js +377 -0
- package/plugins/faceless-shorts/styles/tall-tale/example/tools/capture.mjs +122 -0
- package/plugins/faceless-shorts/styles/tall-tale/example/tools/mix.py +204 -0
- package/plugins/faceless-shorts/styles/tall-tale/example/vendor/LICENSE-three.txt +21 -0
- package/plugins/faceless-shorts/styles/tall-tale/example/vendor/addons/environments/RoomEnvironment.js +144 -0
- package/plugins/faceless-shorts/styles/tall-tale/example/vendor/addons/postprocessing/BokehPass.js +141 -0
- package/plugins/faceless-shorts/styles/tall-tale/example/vendor/addons/postprocessing/EffectComposer.js +231 -0
- package/plugins/faceless-shorts/styles/tall-tale/example/vendor/addons/postprocessing/MaskPass.js +104 -0
- package/plugins/faceless-shorts/styles/tall-tale/example/vendor/addons/postprocessing/OutputPass.js +97 -0
- package/plugins/faceless-shorts/styles/tall-tale/example/vendor/addons/postprocessing/Pass.js +95 -0
- package/plugins/faceless-shorts/styles/tall-tale/example/vendor/addons/postprocessing/RenderPass.js +99 -0
- package/plugins/faceless-shorts/styles/tall-tale/example/vendor/addons/postprocessing/ShaderPass.js +77 -0
- package/plugins/faceless-shorts/styles/tall-tale/example/vendor/addons/postprocessing/UnrealBloomPass.js +415 -0
- package/plugins/faceless-shorts/styles/tall-tale/example/vendor/addons/shaders/BokehShader.js +145 -0
- package/plugins/faceless-shorts/styles/tall-tale/example/vendor/addons/shaders/CopyShader.js +45 -0
- package/plugins/faceless-shorts/styles/tall-tale/example/vendor/addons/shaders/LuminosityHighPassShader.js +64 -0
- package/plugins/faceless-shorts/styles/tall-tale/example/vendor/addons/shaders/OutputShader.js +85 -0
- package/plugins/faceless-shorts/styles/tall-tale/example/vendor/three.module.js +6 -0
- package/plugins/faceless-shorts/styles/tall-tale/style-sheet.png +0 -0
- package/plugins/motion-styles/LIBRARY.md +896 -0
- package/plugins/motion-styles/README.md +29 -0
- package/plugins/motion-styles/SKILL.md +70 -0
- package/plugins/motion-styles/catalog.json +2253 -0
- package/plugins/motion-styles/prompts/bio-glow.md +149 -0
- package/plugins/motion-styles/prompts/blueprint.md +145 -0
- package/plugins/motion-styles/prompts/breaking-desk.md +147 -0
- package/plugins/motion-styles/prompts/callout-kit.md +147 -0
- package/plugins/motion-styles/prompts/chalk-talk.md +153 -0
- package/plugins/motion-styles/prompts/chat-story.md +143 -0
- package/plugins/motion-styles/prompts/clay-diorama.md +149 -0
- package/plugins/motion-styles/prompts/clean-tech.md +147 -0
- package/plugins/motion-styles/prompts/comic-panels.md +145 -0
- package/plugins/motion-styles/prompts/cosmic-scale.md +147 -0
- package/plugins/motion-styles/prompts/creator-motion.md +149 -0
- package/plugins/motion-styles/prompts/data-city.md +149 -0
- package/plugins/motion-styles/prompts/data-story.md +147 -0
- package/plugins/motion-styles/prompts/deep-layers.md +147 -0
- package/plugins/motion-styles/prompts/doc-cinema.md +145 -0
- package/plugins/motion-styles/prompts/evidence-board.md +145 -0
- package/plugins/motion-styles/prompts/exploded-view.md +149 -0
- package/plugins/motion-styles/prompts/glass-icons.md +147 -0
- package/plugins/motion-styles/prompts/glitch-pack.md +145 -0
- package/plugins/motion-styles/prompts/globe-arcs.md +147 -0
- package/plugins/motion-styles/prompts/headline-backdrop.md +145 -0
- package/plugins/motion-styles/prompts/iso-cutaway.md +147 -0
- package/plugins/motion-styles/prompts/isotype.md +145 -0
- package/plugins/motion-styles/prompts/karaoke-subs.md +145 -0
- package/plugins/motion-styles/prompts/low-poly-atlas.md +149 -0
- package/plugins/motion-styles/prompts/lower-thirds.md +147 -0
- package/plugins/motion-styles/prompts/marker-board.md +145 -0
- package/plugins/motion-styles/prompts/market-tape.md +145 -0
- package/plugins/motion-styles/prompts/math-canvas.md +145 -0
- package/plugins/motion-styles/prompts/myth-or-fact.md +145 -0
- package/plugins/motion-styles/prompts/neon-line.md +145 -0
- package/plugins/motion-styles/prompts/paper-craft.md +145 -0
- package/plugins/motion-styles/prompts/parchment-map.md +147 -0
- package/plugins/motion-styles/prompts/physics-toybox.md +147 -0
- package/plugins/motion-styles/prompts/pixel-quest.md +145 -0
- package/plugins/motion-styles/prompts/podcast-clip.md +147 -0
- package/plugins/motion-styles/prompts/pop-info.md +145 -0
- package/plugins/motion-styles/prompts/product-turntable.md +149 -0
- package/plugins/motion-styles/prompts/punch-captions.md +145 -0
- package/plugins/motion-styles/prompts/quiz-countdown.md +145 -0
- package/plugins/motion-styles/prompts/quote-cinema.md +145 -0
- package/plugins/motion-styles/prompts/recipe-steps.md +145 -0
- package/plugins/motion-styles/prompts/rubber-hose-reel.md +145 -0
- package/plugins/motion-styles/prompts/shadow-puppets.md +145 -0
- package/plugins/motion-styles/prompts/size-lineup.md +149 -0
- package/plugins/motion-styles/prompts/software-walkthrough.md +147 -0
- package/plugins/motion-styles/prompts/stack-split.md +145 -0
- package/plugins/motion-styles/prompts/sticker-pop.md +145 -0
- package/plugins/motion-styles/prompts/storybook.md +145 -0
- package/plugins/motion-styles/prompts/swiss-grid.md +145 -0
- package/plugins/motion-styles/prompts/synth-grid.md +147 -0
- package/plugins/motion-styles/prompts/tactics-board.md +145 -0
- package/plugins/motion-styles/prompts/terminal.md +145 -0
- package/plugins/motion-styles/prompts/tier-list.md +143 -0
- package/plugins/motion-styles/prompts/timeline-rail.md +145 -0
- package/plugins/motion-styles/prompts/top-5-countdown.md +145 -0
- package/plugins/motion-styles/prompts/versus-split.md +145 -0
- package/plugins/motion-styles/prompts/vhs-camcorder.md +145 -0
- package/plugins/motion-styles/prompts/visual-novel.md +145 -0
- package/plugins/motion-styles/prompts/warm-canvas.md +145 -0
- package/plugins/motion-styles/prompts/woodcut-tale.md +145 -0
- package/plugins/motion-styles/prompts/zine-collage.md +145 -0
- package/plugins/motion-styles/sources/bio-glow.html +639 -0
- package/plugins/motion-styles/sources/blueprint.html +617 -0
- package/plugins/motion-styles/sources/breaking-desk.html +585 -0
- package/plugins/motion-styles/sources/callout-kit.html +586 -0
- package/plugins/motion-styles/sources/chalk-talk.html +597 -0
- package/plugins/motion-styles/sources/chat-story.html +597 -0
- package/plugins/motion-styles/sources/clay-diorama.html +681 -0
- package/plugins/motion-styles/sources/clean-tech.html +554 -0
- package/plugins/motion-styles/sources/comic-panels.html +608 -0
- package/plugins/motion-styles/sources/cosmic-scale.html +628 -0
- package/plugins/motion-styles/sources/creator-motion.html +805 -0
- package/plugins/motion-styles/sources/data-city.html +613 -0
- package/plugins/motion-styles/sources/data-story.html +539 -0
- package/plugins/motion-styles/sources/deep-layers.html +624 -0
- package/plugins/motion-styles/sources/doc-cinema.html +590 -0
- package/plugins/motion-styles/sources/evidence-board.html +610 -0
- package/plugins/motion-styles/sources/exploded-view.html +618 -0
- package/plugins/motion-styles/sources/glass-icons.html +612 -0
- package/plugins/motion-styles/sources/glitch-pack.html +583 -0
- package/plugins/motion-styles/sources/globe-arcs.html +621 -0
- package/plugins/motion-styles/sources/headline-backdrop.html +584 -0
- package/plugins/motion-styles/sources/iso-cutaway.html +621 -0
- package/plugins/motion-styles/sources/isotype.html +588 -0
- package/plugins/motion-styles/sources/karaoke-subs.html +577 -0
- package/plugins/motion-styles/sources/low-poly-atlas.html +621 -0
- package/plugins/motion-styles/sources/lower-thirds.html +582 -0
- package/plugins/motion-styles/sources/marker-board.html +598 -0
- package/plugins/motion-styles/sources/market-tape.html +598 -0
- package/plugins/motion-styles/sources/math-canvas.html +592 -0
- package/plugins/motion-styles/sources/myth-or-fact.html +587 -0
- package/plugins/motion-styles/sources/neon-line.html +597 -0
- package/plugins/motion-styles/sources/paper-craft.html +612 -0
- package/plugins/motion-styles/sources/parchment-map.html +624 -0
- package/plugins/motion-styles/sources/physics-toybox.html +617 -0
- package/plugins/motion-styles/sources/pixel-quest.html +609 -0
- package/plugins/motion-styles/sources/podcast-clip.html +585 -0
- package/plugins/motion-styles/sources/pop-info.html +677 -0
- package/plugins/motion-styles/sources/product-turntable.html +611 -0
- package/plugins/motion-styles/sources/punch-captions.html +583 -0
- package/plugins/motion-styles/sources/quiz-countdown.html +593 -0
- package/plugins/motion-styles/sources/quote-cinema.html +581 -0
- package/plugins/motion-styles/sources/recipe-steps.html +599 -0
- package/plugins/motion-styles/sources/rubber-hose-reel.html +627 -0
- package/plugins/motion-styles/sources/shadow-puppets.html +609 -0
- package/plugins/motion-styles/sources/size-lineup.html +620 -0
- package/plugins/motion-styles/sources/software-walkthrough.html +651 -0
- package/plugins/motion-styles/sources/stack-split.html +588 -0
- package/plugins/motion-styles/sources/sticker-pop.html +587 -0
- package/plugins/motion-styles/sources/storybook.html +600 -0
- package/plugins/motion-styles/sources/swiss-grid.html +590 -0
- package/plugins/motion-styles/sources/synth-grid.html +614 -0
- package/plugins/motion-styles/sources/tactics-board.html +608 -0
- package/plugins/motion-styles/sources/terminal.html +593 -0
- package/plugins/motion-styles/sources/tier-list.html +600 -0
- package/plugins/motion-styles/sources/timeline-rail.html +598 -0
- package/plugins/motion-styles/sources/top-5-countdown.html +589 -0
- package/plugins/motion-styles/sources/versus-split.html +592 -0
- package/plugins/motion-styles/sources/vhs-camcorder.html +587 -0
- package/plugins/motion-styles/sources/visual-novel.html +623 -0
- package/plugins/motion-styles/sources/warm-canvas.html +742 -0
- package/plugins/motion-styles/sources/woodcut-tale.html +598 -0
- package/plugins/motion-styles/sources/zine-collage.html +594 -0
- package/plugins/video-pipeline/.claude-plugin/plugin.json +2 -2
- package/plugins/video-pipeline/skills/.upstream-skills.json +156 -143
- package/plugins/video-pipeline/skills/video-pipeline/references/mcp-tools.md +3 -3
- package/scripts/deep-validate.js +3 -2
- package/src/audio-mixer/mixer.js +69 -0
- package/src/cli/make.js +19 -0
- package/src/harness/lib/browser.mjs +22 -1
- package/src/harness/lib/capture.mjs +33 -11
- package/src/harness/lib/jobs.mjs +16 -1
- package/src/mcp-server/server.js +726 -10
- package/src/pipeline/providers.js +77 -17
- package/src/skills/sync-upstream.js +15 -3
- package/src/utils/media-downloader.js +7 -0
- package/src/utils/tool-installer.js +212 -0
- package/src/utils/transcribe.js +9 -1
- package/src/video-renderer/renderer.js +68 -38
- package/src/video-renderer/scene-animator.js +50 -15
- package/src/workflows/assets.js +49 -5
- package/src/workflows/render.js +2 -0
- package/src/workflows/script.js +14 -3
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
# Motion graphics style #12: Low-Poly Atlas
|
|
2
|
+
|
|
3
|
+
- **ID:** `low-poly-atlas`
|
|
4
|
+
- **Family:** 3D
|
|
5
|
+
- **Canvas:** `720x1280`
|
|
6
|
+
- **Fonts:** Playfair Display (700 and 900, italic), JetBrains Mono (500 and 700)
|
|
7
|
+
- **Three.js 3D:** Yes
|
|
8
|
+
- **Footage Overlay:** No
|
|
9
|
+
|
|
10
|
+
## Look
|
|
11
|
+
Faceted low-poly terrain in warm sunset light, built in Three.js: flat-shaded hills, sand coasts and blue water, with roads, routes and campaign arrows drawing themselves across the land.
|
|
12
|
+
|
|
13
|
+
## How It Explains
|
|
14
|
+
The camera drifts over the land while a route draws itself from a city, a red campaign arrow marches along it, more routes branch out, and a counter adds up the distance. Serif headlines and mono date chips give it the feel of a history book.
|
|
15
|
+
|
|
16
|
+
## Demo
|
|
17
|
+
Why Rome built roads
|
|
18
|
+
|
|
19
|
+
---
|
|
20
|
+
|
|
21
|
+
## Ready-to-Copy Prompt (Standard)
|
|
22
|
+
|
|
23
|
+
```markdown
|
|
24
|
+
I want an animated video in the "Low-Poly Atlas" style (3D) from the Motion Graphics Style Library. Below is a complete, working reference animation in this style: its core helpers (CM), a synthesized sound kit (SFX), the style's scenes, its sound score and the player page. Treat that file as the ground truth for how this style looks, moves and sounds, and rebuild it around my content.
|
|
25
|
+
|
|
26
|
+
MY CONTENT
|
|
27
|
+
[No topic yet. Ask me for my topic or script before building anything.]
|
|
28
|
+
|
|
29
|
+
BUILD DIRECTLY
|
|
30
|
+
Skip the storyboard and build the full animation now. Afterwards, list any facts or numbers you assumed.
|
|
31
|
+
|
|
32
|
+
WHAT TO BUILD
|
|
33
|
+
One self-contained HTML file (an artifact if you can), built on the reference file below:
|
|
34
|
+
- Keep the page, the player (play/pause, scrub, time, sound toggle, loop, Load voiceover) and the CM and SFX blocks unchanged. Also keep the shared library helpers block (track, txt, chip, slam, rise, wordLine, hd, footage, composite, cam, punch, makeGL and the sound helpers) unchanged.
|
|
35
|
+
- Keep the canvas at 720x1280 (9:16, for Shorts, Reels and TikTok).
|
|
36
|
+
- Keep the Three.js r128 script tag and build every 3D object in code: no models or textures from the web.
|
|
37
|
+
- Replace the demo's story: TL, hgt() (the shape of the land), ROADS (from and to, in order), the city props, the arrow timing, the labels and counter in overlay() and scoreSound(). Keep and reuse the style's helpers (makeGL(), lights3(), the flat-shaded vertex-coloured terrain built from hgt(), the water plane, growing tubes with setDrawRange(), the arrow that follows a curve, the drifting camera, proj3() labels, chip() and wordLine()).
|
|
38
|
+
- Aim for 15 to 40 seconds unless my content needs more, and set the duration in TL.D.
|
|
39
|
+
- Keep window.seek(t), window.DURATION, window.scoreSound and window.SFX exposed, so the video can be rendered frame by frame.
|
|
40
|
+
- Load the style's fonts before the first draw, as the reference does: Playfair Display (700 and 900, italic), JetBrains Mono (500 and 700).
|
|
41
|
+
|
|
42
|
+
THE STYLE
|
|
43
|
+
- The land is one flat-shaded plane displaced by hgt(x, z) and coloured per face by height (sand, grass, forest, rock, snow). Shape the land for the topic (coasts, a peninsula, a river valley) but keep it stylised, never a traced real map.
|
|
44
|
+
- Light: low warm sunset key (#ffcf99) from one side, warm fog, peach sky (#f2b07a). Water is a single slightly transparent blue plane.
|
|
45
|
+
- Routes are tubes along Catmull-Rom curves that hug the terrain and grow with setDrawRange. Campaign arrows are red (#c4302b) extrusions that follow a route.
|
|
46
|
+
- Type: Playfair Display 900 headline at the top over a warm fade, the second line italic. JetBrains Mono for dates and place chips (dark brown #2a1a10 on cream).
|
|
47
|
+
- Use real dates, places and distances, and say "about" for estimates.
|
|
48
|
+
- Camera: one slow drift and orbit over the land, no cuts; let the routes do the storytelling.
|
|
49
|
+
- Pace: the title holds about 2 seconds, each route takes 1.5 to 2.5 seconds to draw, and the takeaway holds about 2 seconds.
|
|
50
|
+
|
|
51
|
+
RULES THAT KEEP IT IN STYLE
|
|
52
|
+
- Change the story, the words and the props; do not change the medium. Draw every subject accurately for my topic and double-check any facts and numbers you show.
|
|
53
|
+
- Every frame is a pure function of t. Use CM.rng(seed) and CM.noise1(seed) for all randomness, never Math.random. Caching static layers is fine.
|
|
54
|
+
- It will be watched on phones: at 720x1280 keep headlines at 64 px or more, place names at 22 px or more and the counter at 80 px or more. Fill the frame.
|
|
55
|
+
- Keep each frame fast, well under 50 ms.
|
|
56
|
+
- Give my topic its own demo content; do not reuse the reference's story ("Why Rome built roads") unless my content asks for it.
|
|
57
|
+
|
|
58
|
+
SOUND
|
|
59
|
+
- Bed: low, slow drums (deep thumps with a short noise tail) and a warm pad; horn-like chords (filtered sawtooth) for the title and the end.
|
|
60
|
+
- Map events to the kit: a route drawing gets a soft scratching quill (SND.scratch); the marching arrow gets steady soft steps; chips get a soft tick; the counter "tick"s when the shown number changes; the final line gets the horn chord.
|
|
61
|
+
- Full mix (no voiceover): keep the low drums and the horn chords, at most about 3 sounds at once, and a short gap before the counter locks.
|
|
62
|
+
- Sync is everything: the sound score reads the same TL times as the picture.
|
|
63
|
+
|
|
64
|
+
IF YOU CAN RUN CODE
|
|
65
|
+
Render an MP4: open the file in headless Chrome, call window.seek(i / 30) for every frame, capture the canvas and pipe the frames into ffmpeg. Render the effects with SFX.render(window.scoreSound, window.DURATION, 48000, { voiceover: false }), which returns interleaved stereo floats, and mux them in. With a voiceover, render the effects with { voiceover: true } and mix them under my audio file.
|
|
66
|
+
|
|
67
|
+
STYLE CARD
|
|
68
|
+
Name: Low-Poly Atlas
|
|
69
|
+
Family: 3D
|
|
70
|
+
Look: Faceted low-poly terrain in warm sunset light, built in Three.js: flat-shaded hills, sand coasts and blue water, with roads, routes and campaign arrows drawing themselves across the land.
|
|
71
|
+
How it explains: The camera drifts over the land while a route draws itself from a city, a red campaign arrow marches along it, more routes branch out, and a counter adds up the distance. Serif headlines and mono date chips give it the feel of a history book.
|
|
72
|
+
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
---
|
|
76
|
+
|
|
77
|
+
## Voiceover & Storyboard Prompt
|
|
78
|
+
|
|
79
|
+
```markdown
|
|
80
|
+
I want an animated video in the "Low-Poly Atlas" style (3D) from the Motion Graphics Style Library. Below is a complete, working reference animation in this style: its core helpers (CM), a synthesized sound kit (SFX), the style's scenes, its sound score and the player page. Treat that file as the ground truth for how this style looks, moves and sounds, and rebuild it around my content.
|
|
81
|
+
|
|
82
|
+
MY CONTENT
|
|
83
|
+
[No topic yet. Ask me for my topic or script before building anything.]
|
|
84
|
+
|
|
85
|
+
VOICEOVER TIMING
|
|
86
|
+
[No timing pasted yet. Before building, ask me for a word-level SRT or word timestamps of my voiceover. If I only have the audio file, offer to transcribe it into word timings.]
|
|
87
|
+
|
|
88
|
+
How to use the timing:
|
|
89
|
+
- Turn it into a list of words with start and end times in seconds. If the timing is per line only, spread each line's words across its span in proportion to their length.
|
|
90
|
+
- Set the duration to the last word's end plus about 1.2 seconds.
|
|
91
|
+
- Build the timeline (TL) from these times. A route starts drawing as it is mentioned and reaches its end on the destination word, the arrow moves while the march is described, a date chip lands on the date, and the counter locks on its last spoken syllable.
|
|
92
|
+
- Cut between scenes only at idea boundaries (a new step, a new claim, a reveal), never mid-word, and finish each cut just before the next idea's first spoken word.
|
|
93
|
+
- Put the emphasis moves on stressed words. A counter lands at the exact moment its number is spoken.
|
|
94
|
+
- Keep the player's "Load voiceover" button working so I can drop in my audio and hear it in sync.
|
|
95
|
+
|
|
96
|
+
STORYBOARD FIRST
|
|
97
|
+
Before building, show me a storyboard and wait for my OK:
|
|
98
|
+
- One HTML page (an artifact if you can) with a grid of 6 to 10 panels, one per beat. Draw each panel on a canvas with the reference's own helpers, scene drawing and finishing pass, so the stills already look like the finished piece. No animation or sound yet.
|
|
99
|
+
- Under each panel: the beat number, its start and end time, the exact on-screen words, the camera move or emphasis, how it gets there from the previous beat (the same scene continuing, or a cut and which kind), and its key sounds.
|
|
100
|
+
- Below the grid, list any facts or numbers you had to assume.
|
|
101
|
+
When I approve it (or after my changes), build the full animation and reuse the storyboard's drawing code.
|
|
102
|
+
|
|
103
|
+
WHAT TO BUILD
|
|
104
|
+
One self-contained HTML file (an artifact if you can), built on the reference file below:
|
|
105
|
+
- Keep the page, the player (play/pause, scrub, time, sound toggle, loop, Load voiceover) and the CM and SFX blocks unchanged. Also keep the shared library helpers block (track, txt, chip, slam, rise, wordLine, hd, footage, composite, cam, punch, makeGL and the sound helpers) unchanged.
|
|
106
|
+
- Keep the canvas at 720x1280 (9:16, for Shorts, Reels and TikTok).
|
|
107
|
+
- Keep the Three.js r128 script tag and build every 3D object in code: no models or textures from the web.
|
|
108
|
+
- Replace the demo's story: TL, hgt() (the shape of the land), ROADS (from and to, in order), the city props, the arrow timing, the labels and counter in overlay() and scoreSound(). Keep and reuse the style's helpers (makeGL(), lights3(), the flat-shaded vertex-coloured terrain built from hgt(), the water plane, growing tubes with setDrawRange(), the arrow that follows a curve, the drifting camera, proj3() labels, chip() and wordLine()).
|
|
109
|
+
- Aim for 15 to 40 seconds unless my content needs more, and set the duration in TL.D.
|
|
110
|
+
- Keep window.seek(t), window.DURATION, window.scoreSound and window.SFX exposed, so the video can be rendered frame by frame.
|
|
111
|
+
- Load the style's fonts before the first draw, as the reference does: Playfair Display (700 and 900, italic), JetBrains Mono (500 and 700).
|
|
112
|
+
|
|
113
|
+
THE STYLE
|
|
114
|
+
- The land is one flat-shaded plane displaced by hgt(x, z) and coloured per face by height (sand, grass, forest, rock, snow). Shape the land for the topic (coasts, a peninsula, a river valley) but keep it stylised, never a traced real map.
|
|
115
|
+
- Light: low warm sunset key (#ffcf99) from one side, warm fog, peach sky (#f2b07a). Water is a single slightly transparent blue plane.
|
|
116
|
+
- Routes are tubes along Catmull-Rom curves that hug the terrain and grow with setDrawRange. Campaign arrows are red (#c4302b) extrusions that follow a route.
|
|
117
|
+
- Type: Playfair Display 900 headline at the top over a warm fade, the second line italic. JetBrains Mono for dates and place chips (dark brown #2a1a10 on cream).
|
|
118
|
+
- Use real dates, places and distances, and say "about" for estimates.
|
|
119
|
+
- Camera: one slow drift and orbit over the land, no cuts; let the routes do the storytelling.
|
|
120
|
+
- Pace: the title holds about 2 seconds, each route takes 1.5 to 2.5 seconds to draw, and the takeaway holds about 2 seconds.
|
|
121
|
+
|
|
122
|
+
RULES THAT KEEP IT IN STYLE
|
|
123
|
+
- Change the story, the words and the props; do not change the medium. Draw every subject accurately for my topic and double-check any facts and numbers you show.
|
|
124
|
+
- Every frame is a pure function of t. Use CM.rng(seed) and CM.noise1(seed) for all randomness, never Math.random. Caching static layers is fine.
|
|
125
|
+
- It will be watched on phones: at 720x1280 keep headlines at 64 px or more, place names at 22 px or more and the counter at 80 px or more. Fill the frame.
|
|
126
|
+
- Keep each frame fast, well under 50 ms.
|
|
127
|
+
- Give my topic its own demo content; do not reuse the reference's story ("Why Rome built roads") unless my content asks for it.
|
|
128
|
+
|
|
129
|
+
SOUND
|
|
130
|
+
- Bed: low, slow drums (deep thumps with a short noise tail) and a warm pad; horn-like chords (filtered sawtooth) for the title and the end.
|
|
131
|
+
- Map events to the kit: a route drawing gets a soft scratching quill (SND.scratch); the marching arrow gets steady soft steps; chips get a soft tick; the counter "tick"s when the shown number changes; the final line gets the horn chord.
|
|
132
|
+
- Voiceover mix: the player calls SFX.live with { voiceover: true } once narration is loaded. Keep the drums low, mark ticks and steps soft: true, and keep the horn for the title and the last line.
|
|
133
|
+
- Sync is everything: the sound score reads the same TL times as the picture.
|
|
134
|
+
|
|
135
|
+
IF YOU CAN RUN CODE
|
|
136
|
+
Render an MP4: open the file in headless Chrome, call window.seek(i / 30) for every frame, capture the canvas and pipe the frames into ffmpeg. Render the effects with SFX.render(window.scoreSound, window.DURATION, 48000, { voiceover: false }), which returns interleaved stereo floats, and mux them in. With a voiceover, render the effects with { voiceover: true } and mix them under my audio file.
|
|
137
|
+
|
|
138
|
+
STYLE CARD
|
|
139
|
+
Name: Low-Poly Atlas
|
|
140
|
+
Family: 3D
|
|
141
|
+
Look: Faceted low-poly terrain in warm sunset light, built in Three.js: flat-shaded hills, sand coasts and blue water, with roads, routes and campaign arrows drawing themselves across the land.
|
|
142
|
+
How it explains: The camera drifts over the land while a route draws itself from a city, a red campaign arrow marches along it, more routes branch out, and a counter adds up the distance. Serif headlines and mono date chips give it the feel of a history book.
|
|
143
|
+
|
|
144
|
+
```
|
|
145
|
+
|
|
146
|
+
---
|
|
147
|
+
|
|
148
|
+
## Reference Source Code Location
|
|
149
|
+
File: `plugins/motion-styles/sources/low-poly-atlas.html` (60.9 KB)
|
|
@@ -0,0 +1,147 @@
|
|
|
1
|
+
# Motion graphics style #51: Lower Thirds
|
|
2
|
+
|
|
3
|
+
- **ID:** `lower-thirds`
|
|
4
|
+
- **Family:** Edit Overlay
|
|
5
|
+
- **Canvas:** `720x1280`
|
|
6
|
+
- **Fonts:** Instrument Serif, Inter (500 to 900)
|
|
7
|
+
- **Three.js 3D:** No
|
|
8
|
+
- **Footage Overlay:** Yes
|
|
9
|
+
|
|
10
|
+
## Look
|
|
11
|
+
A consistent identity kit for interviews and long videos: a name tag with an amber accent bar and dark glass panel, a serif chapter card with a progress row, a social handle bar, and a red subscribe nudge with a bell that rings.
|
|
12
|
+
|
|
13
|
+
## How It Explains
|
|
14
|
+
Each element has one clean entrance and exit: the name tag wipes out of its accent bar, the chapter title rises in with a tracked label and progress dots, the subscribe pill pops with a bell wiggle and a cursor click, and everything clears for the next part.
|
|
15
|
+
|
|
16
|
+
## Demo
|
|
17
|
+
An interview intro with a guest name, a chapter and a subscribe nudge
|
|
18
|
+
|
|
19
|
+
---
|
|
20
|
+
|
|
21
|
+
## Ready-to-Copy Prompt (Standard)
|
|
22
|
+
|
|
23
|
+
```markdown
|
|
24
|
+
I want an animated video in the "Lower Thirds" style (Edit Overlay) from the Motion Graphics Style Library. Below is a complete, working reference animation in this style: its core helpers (CM), a synthesized sound kit (SFX), the style's scenes, its sound score and the player page. Treat that file as the ground truth for how this style looks, moves and sounds, and rebuild it around my content.
|
|
25
|
+
|
|
26
|
+
MY CONTENT
|
|
27
|
+
[No topic yet. Ask me for my topic or script before building anything.]
|
|
28
|
+
|
|
29
|
+
BUILD DIRECTLY
|
|
30
|
+
Skip the storyboard and build the full animation now. Afterwards, list any facts or numbers you assumed.
|
|
31
|
+
|
|
32
|
+
WHAT TO BUILD
|
|
33
|
+
One self-contained HTML file (an artifact if you can), built on the reference file below:
|
|
34
|
+
- Keep the page, the player (play/pause, scrub, time, sound toggle, loop, Load voiceover, Load footage) and the CM and SFX blocks unchanged. Also keep the shared library helpers block (track, txt, chip, slam, rise, wordLine, hd, footage, composite, cam, punch, makeGL and the sound helpers) unchanged.
|
|
35
|
+
- Keep the canvas at 720x1280 (9:16, for Shorts, Reels and TikTok).
|
|
36
|
+
- Keep window.loadFootage(url) and the Load footage button working so I can drop in my own clip and see the overlay on it; until then the stand-in presenter shows where I sit in the frame.
|
|
37
|
+
- Replace the demo's story: TL, the name and role, CHAPTERS (number, title), the handle, the accent colour and scoreSound(); load your clip with Load footage. Keep and reuse the style's helpers (footage(), the accent-bar wipe name tag, the chapter card with label, serif title and progress dots, the handle bar, the subscribe pill with bell wiggle and cursor click, and the shared timings (in 0.5 s, hold, out 0.3 s)).
|
|
38
|
+
- Aim for 15 to 40 seconds unless my content needs more, and set the duration in TL.D.
|
|
39
|
+
- Keep window.seek(t), window.DURATION, window.scoreSound and window.SFX exposed, so the video can be rendered frame by frame.
|
|
40
|
+
- Load the style's fonts before the first draw, as the reference does: Instrument Serif, Inter (500 to 900).
|
|
41
|
+
|
|
42
|
+
THE STYLE
|
|
43
|
+
- Built for your footage: graphics live in the bottom-left and the top, away from faces, inside title-safe margins (40 px).
|
|
44
|
+
- One accent colour (amber #ffb347 here) used only for the bar, labels and progress; everything else white on dark glass (rgba 12,14,18,0.78).
|
|
45
|
+
- Name tag: a 8 px accent bar wipes up first, then the panel wipes out to the right; name in Inter 900, role in Inter 500.
|
|
46
|
+
- Chapter card: a small tracked label ("CHAPTER 2") in the accent, the title in Instrument Serif rising in, and a row of progress dashes with the current one filled.
|
|
47
|
+
- Subscribe nudge: a red pill (#e5322d) with a bell icon that wiggles, a cursor that taps it, and the pill flips to "SUBSCRIBED".
|
|
48
|
+
- Every element: 0.5 s in, holds while relevant, 0.3 s out.
|
|
49
|
+
|
|
50
|
+
RULES THAT KEEP IT IN STYLE
|
|
51
|
+
- Change the story, the words and the props; do not change the medium. Draw every subject accurately for my topic and double-check any facts and numbers you show.
|
|
52
|
+
- Every frame is a pure function of t. Use CM.rng(seed) and CM.noise1(seed) for all randomness, never Math.random. Caching static layers is fine.
|
|
53
|
+
- It will be watched on phones: at 720x1280 keep names at 40 px or more, roles at 24 px or more, chapter titles at 64 px or more, and keep everything inside the title-safe area. Fill the frame.
|
|
54
|
+
- Keep each frame fast, well under 50 ms.
|
|
55
|
+
- Give my topic its own demo content; do not reuse the reference's story ("An interview intro with a guest name, a chapter and a subscribe nudge") unless my content asks for it.
|
|
56
|
+
|
|
57
|
+
SOUND
|
|
58
|
+
- No music (your audio leads); effects only.
|
|
59
|
+
- Map events to the kit: each entrance gets a soft "whoosh"; the chapter card gets a soft "pop" and a tick per progress dash; the bell gets two quick high pings ("ping"); the cursor tap gets "click".
|
|
60
|
+
- Full mix (no voiceover): soft swooshes for each entrance, a bell for the subscribe nudge, a click for the cursor.
|
|
61
|
+
- Sync is everything: the sound score reads the same TL times as the picture.
|
|
62
|
+
|
|
63
|
+
IF YOU CAN RUN CODE
|
|
64
|
+
Render an MP4: open the file in headless Chrome, call window.seek(i / 30) for every frame, capture the canvas and pipe the frames into ffmpeg. Render the effects with SFX.render(window.scoreSound, window.DURATION, 48000, { voiceover: false }), which returns interleaved stereo floats, and mux them in. With a voiceover, render the effects with { voiceover: true } and mix them under my audio file.
|
|
65
|
+
|
|
66
|
+
STYLE CARD
|
|
67
|
+
Name: Lower Thirds
|
|
68
|
+
Family: Edit Overlay
|
|
69
|
+
Look: A consistent identity kit for interviews and long videos: a name tag with an amber accent bar and dark glass panel, a serif chapter card with a progress row, a social handle bar, and a red subscribe nudge with a bell that rings.
|
|
70
|
+
How it explains: Each element has one clean entrance and exit: the name tag wipes out of its accent bar, the chapter title rises in with a tracked label and progress dots, the subscribe pill pops with a bell wiggle and a cursor click, and everything clears for the next part.
|
|
71
|
+
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
---
|
|
75
|
+
|
|
76
|
+
## Voiceover & Storyboard Prompt
|
|
77
|
+
|
|
78
|
+
```markdown
|
|
79
|
+
I want an animated video in the "Lower Thirds" style (Edit Overlay) from the Motion Graphics Style Library. Below is a complete, working reference animation in this style: its core helpers (CM), a synthesized sound kit (SFX), the style's scenes, its sound score and the player page. Treat that file as the ground truth for how this style looks, moves and sounds, and rebuild it around my content.
|
|
80
|
+
|
|
81
|
+
MY CONTENT
|
|
82
|
+
[No topic yet. Ask me for my topic or script before building anything.]
|
|
83
|
+
|
|
84
|
+
VOICEOVER TIMING
|
|
85
|
+
[No timing pasted yet. Before building, ask me for a word-level SRT or word timestamps of my voiceover. If I only have the audio file, offer to transcribe it into word timings.]
|
|
86
|
+
|
|
87
|
+
How to use the timing:
|
|
88
|
+
- Turn it into a list of words with start and end times in seconds. If the timing is per line only, spread each line's words across its span in proportion to their length.
|
|
89
|
+
- Set the duration to the last word's end plus about 1.2 seconds.
|
|
90
|
+
- Build the timeline (TL) from these times. The name tag lands as the person starts speaking, the chapter card lands on the first word of the new section, and the subscribe nudge appears in a natural pause.
|
|
91
|
+
- Cut between scenes only at idea boundaries (a new step, a new claim, a reveal), never mid-word, and finish each cut just before the next idea's first spoken word.
|
|
92
|
+
- Put the emphasis moves on stressed words. A counter lands at the exact moment its number is spoken.
|
|
93
|
+
- Keep the player's "Load voiceover" button working so I can drop in my audio and hear it in sync.
|
|
94
|
+
|
|
95
|
+
STORYBOARD FIRST
|
|
96
|
+
Before building, show me a storyboard and wait for my OK:
|
|
97
|
+
- One HTML page (an artifact if you can) with a grid of 6 to 10 panels, one per beat. Draw each panel on a canvas with the reference's own helpers, scene drawing and finishing pass, so the stills already look like the finished piece. No animation or sound yet.
|
|
98
|
+
- Under each panel: the beat number, its start and end time, the exact on-screen words, the camera move or emphasis, how it gets there from the previous beat (the same scene continuing, or a cut and which kind), and its key sounds.
|
|
99
|
+
- Below the grid, list any facts or numbers you had to assume.
|
|
100
|
+
When I approve it (or after my changes), build the full animation and reuse the storyboard's drawing code.
|
|
101
|
+
|
|
102
|
+
WHAT TO BUILD
|
|
103
|
+
One self-contained HTML file (an artifact if you can), built on the reference file below:
|
|
104
|
+
- Keep the page, the player (play/pause, scrub, time, sound toggle, loop, Load voiceover, Load footage) and the CM and SFX blocks unchanged. Also keep the shared library helpers block (track, txt, chip, slam, rise, wordLine, hd, footage, composite, cam, punch, makeGL and the sound helpers) unchanged.
|
|
105
|
+
- Keep the canvas at 720x1280 (9:16, for Shorts, Reels and TikTok).
|
|
106
|
+
- Keep window.loadFootage(url) and the Load footage button working so I can drop in my own clip and see the overlay on it; until then the stand-in presenter shows where I sit in the frame.
|
|
107
|
+
- Replace the demo's story: TL, the name and role, CHAPTERS (number, title), the handle, the accent colour and scoreSound(); load your clip with Load footage. Keep and reuse the style's helpers (footage(), the accent-bar wipe name tag, the chapter card with label, serif title and progress dots, the handle bar, the subscribe pill with bell wiggle and cursor click, and the shared timings (in 0.5 s, hold, out 0.3 s)).
|
|
108
|
+
- Aim for 15 to 40 seconds unless my content needs more, and set the duration in TL.D.
|
|
109
|
+
- Keep window.seek(t), window.DURATION, window.scoreSound and window.SFX exposed, so the video can be rendered frame by frame.
|
|
110
|
+
- Load the style's fonts before the first draw, as the reference does: Instrument Serif, Inter (500 to 900).
|
|
111
|
+
|
|
112
|
+
THE STYLE
|
|
113
|
+
- Built for your footage: graphics live in the bottom-left and the top, away from faces, inside title-safe margins (40 px).
|
|
114
|
+
- One accent colour (amber #ffb347 here) used only for the bar, labels and progress; everything else white on dark glass (rgba 12,14,18,0.78).
|
|
115
|
+
- Name tag: a 8 px accent bar wipes up first, then the panel wipes out to the right; name in Inter 900, role in Inter 500.
|
|
116
|
+
- Chapter card: a small tracked label ("CHAPTER 2") in the accent, the title in Instrument Serif rising in, and a row of progress dashes with the current one filled.
|
|
117
|
+
- Subscribe nudge: a red pill (#e5322d) with a bell icon that wiggles, a cursor that taps it, and the pill flips to "SUBSCRIBED".
|
|
118
|
+
- Every element: 0.5 s in, holds while relevant, 0.3 s out.
|
|
119
|
+
|
|
120
|
+
RULES THAT KEEP IT IN STYLE
|
|
121
|
+
- Change the story, the words and the props; do not change the medium. Draw every subject accurately for my topic and double-check any facts and numbers you show.
|
|
122
|
+
- Every frame is a pure function of t. Use CM.rng(seed) and CM.noise1(seed) for all randomness, never Math.random. Caching static layers is fine.
|
|
123
|
+
- It will be watched on phones: at 720x1280 keep names at 40 px or more, roles at 24 px or more, chapter titles at 64 px or more, and keep everything inside the title-safe area. Fill the frame.
|
|
124
|
+
- Keep each frame fast, well under 50 ms.
|
|
125
|
+
- Give my topic its own demo content; do not reuse the reference's story ("An interview intro with a guest name, a chapter and a subscribe nudge") unless my content asks for it.
|
|
126
|
+
|
|
127
|
+
SOUND
|
|
128
|
+
- No music (your audio leads); effects only.
|
|
129
|
+
- Map events to the kit: each entrance gets a soft "whoosh"; the chapter card gets a soft "pop" and a tick per progress dash; the bell gets two quick high pings ("ping"); the cursor tap gets "click".
|
|
130
|
+
- Voiceover mix: the player calls SFX.live with { voiceover: true } once narration is loaded. Mark every sound soft: true.
|
|
131
|
+
- Sync is everything: the sound score reads the same TL times as the picture.
|
|
132
|
+
|
|
133
|
+
IF YOU CAN RUN CODE
|
|
134
|
+
Render an MP4: open the file in headless Chrome, call window.seek(i / 30) for every frame, capture the canvas and pipe the frames into ffmpeg. Render the effects with SFX.render(window.scoreSound, window.DURATION, 48000, { voiceover: false }), which returns interleaved stereo floats, and mux them in. With a voiceover, render the effects with { voiceover: true } and mix them under my audio file.
|
|
135
|
+
|
|
136
|
+
STYLE CARD
|
|
137
|
+
Name: Lower Thirds
|
|
138
|
+
Family: Edit Overlay
|
|
139
|
+
Look: A consistent identity kit for interviews and long videos: a name tag with an amber accent bar and dark glass panel, a serif chapter card with a progress row, a social handle bar, and a red subscribe nudge with a bell that rings.
|
|
140
|
+
How it explains: Each element has one clean entrance and exit: the name tag wipes out of its accent bar, the chapter title rises in with a tracked label and progress dots, the subscribe pill pops with a bell wiggle and a cursor click, and everything clears for the next part.
|
|
141
|
+
|
|
142
|
+
```
|
|
143
|
+
|
|
144
|
+
---
|
|
145
|
+
|
|
146
|
+
## Reference Source Code Location
|
|
147
|
+
File: `plugins/motion-styles/sources/lower-thirds.html` (56.0 KB)
|
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
# Motion graphics style #23: Marker Board
|
|
2
|
+
|
|
3
|
+
- **ID:** `marker-board`
|
|
4
|
+
- **Family:** Hand-Drawn
|
|
5
|
+
- **Canvas:** `720x1280`
|
|
6
|
+
- **Fonts:** Permanent Marker, Caveat (700)
|
|
7
|
+
- **Three.js 3D:** No
|
|
8
|
+
- **Footage Overlay:** No
|
|
9
|
+
|
|
10
|
+
## Look
|
|
11
|
+
A clean whiteboard in a grey frame: black, blue, red and green marker doodles that draw themselves stroke by stroke, a visible marker pen following the tip, hand-drawn boxes, arrows, a red circle on the key idea and Caveat side notes.
|
|
12
|
+
|
|
13
|
+
## How It Explains
|
|
14
|
+
Everything appears by being drawn: the title writes on, then boxes, arrows and words are inked in order with the pen moving to each stroke. The key idea gets circled in red with a handwritten note, and a green tick or symbol lands the takeaway.
|
|
15
|
+
|
|
16
|
+
## Demo
|
|
17
|
+
The 3-step funnel
|
|
18
|
+
|
|
19
|
+
---
|
|
20
|
+
|
|
21
|
+
## Ready-to-Copy Prompt (Standard)
|
|
22
|
+
|
|
23
|
+
```markdown
|
|
24
|
+
I want an animated video in the "Marker Board" style (Hand-Drawn) from the Motion Graphics Style Library. Below is a complete, working reference animation in this style: its core helpers (CM), a synthesized sound kit (SFX), the style's scenes, its sound score and the player page. Treat that file as the ground truth for how this style looks, moves and sounds, and rebuild it around my content.
|
|
25
|
+
|
|
26
|
+
MY CONTENT
|
|
27
|
+
[No topic yet. Ask me for my topic or script before building anything.]
|
|
28
|
+
|
|
29
|
+
BUILD DIRECTLY
|
|
30
|
+
Skip the storyboard and build the full animation now. Afterwards, list any facts or numbers you assumed.
|
|
31
|
+
|
|
32
|
+
WHAT TO BUILD
|
|
33
|
+
One self-contained HTML file (an artifact if you can), built on the reference file below:
|
|
34
|
+
- Keep the page, the player (play/pause, scrub, time, sound toggle, loop, Load voiceover) and the CM and SFX blocks unchanged. Also keep the shared library helpers block (track, txt, chip, slam, rise, wordLine, hd, footage, composite, cam, punch, makeGL and the sound helpers) unchanged.
|
|
35
|
+
- Keep the canvas at 720x1280 (9:16, for Shorts, Reels and TikTok).
|
|
36
|
+
- Replace the demo's story: TL and STROKES (the ordered list of what gets drawn: text, boxes, arrows, circles, notes, with their times and colours) and scoreSound(). Keep and reuse the style's helpers (the board, frame and tray, the ghost smudges, drawText() write-on reveal, hd() hand-drawn lines and ellipses, the pen that follows the active stroke tip, the four marker colours and the Caveat notes).
|
|
37
|
+
- Aim for 15 to 40 seconds unless my content needs more, and set the duration in TL.D.
|
|
38
|
+
- Keep window.seek(t), window.DURATION, window.scoreSound and window.SFX exposed, so the video can be rendered frame by frame.
|
|
39
|
+
- Load the style's fonts before the first draw, as the reference does: Permanent Marker, Caveat (700).
|
|
40
|
+
|
|
41
|
+
THE STYLE
|
|
42
|
+
- One whiteboard (#f9fafa) in a light grey frame with a tray at the bottom and faint ghost smudges of old erasing. No cuts: the whole idea is drawn on one board.
|
|
43
|
+
- Everything is drawn in order: text is revealed left to right with a clip (drawText), lines and shapes with hd() at the stroke progress. A marker pen (body, cap, tip) follows the tip of whatever is being drawn.
|
|
44
|
+
- Colours mean things: black for structure, blue for the title and labels, red only for the key idea (circle, underline, note), green only for the payoff.
|
|
45
|
+
- Type: Permanent Marker for all board writing; Caveat 700 for small handwritten side notes.
|
|
46
|
+
- Keep strokes chunky (4 to 6 px) and slightly wobbly, with two passes per line.
|
|
47
|
+
- Pace: something is always being drawn. Allow 0.4 to 1 second per stroke, and hold the finished board about 2 seconds.
|
|
48
|
+
|
|
49
|
+
RULES THAT KEEP IT IN STYLE
|
|
50
|
+
- Change the story, the words and the props; do not change the medium. Draw every subject accurately for my topic and double-check any facts and numbers you show.
|
|
51
|
+
- Every frame is a pure function of t. Use CM.rng(seed) and CM.noise1(seed) for all randomness, never Math.random. Caching static layers is fine.
|
|
52
|
+
- It will be watched on phones: at 720x1280 keep the title at 56 px or more, box words at 40 px or more and notes at 34 px or more. Fill the frame.
|
|
53
|
+
- Keep each frame fast, well under 50 ms.
|
|
54
|
+
- Give my topic its own demo content; do not reuse the reference's story ("The 3-step funnel") unless my content asks for it.
|
|
55
|
+
|
|
56
|
+
SOUND
|
|
57
|
+
- Bed: a quiet, warm pad.
|
|
58
|
+
- Map events to the kit: every stroke gets a marker squeak ("marker" for its duration, soft); a cap click (click) at the start; the red circle gets a longer, louder marker; the green payoff gets a pluck; the end gets an open chord.
|
|
59
|
+
- Full mix (no voiceover): marker squeaks on every stroke, a cap click at the start, and a soft pad under it all.
|
|
60
|
+
- Sync is everything: the sound score reads the same TL times as the picture.
|
|
61
|
+
|
|
62
|
+
IF YOU CAN RUN CODE
|
|
63
|
+
Render an MP4: open the file in headless Chrome, call window.seek(i / 30) for every frame, capture the canvas and pipe the frames into ffmpeg. Render the effects with SFX.render(window.scoreSound, window.DURATION, 48000, { voiceover: false }), which returns interleaved stereo floats, and mux them in. With a voiceover, render the effects with { voiceover: true } and mix them under my audio file.
|
|
64
|
+
|
|
65
|
+
STYLE CARD
|
|
66
|
+
Name: Marker Board
|
|
67
|
+
Family: Hand-Drawn
|
|
68
|
+
Look: A clean whiteboard in a grey frame: black, blue, red and green marker doodles that draw themselves stroke by stroke, a visible marker pen following the tip, hand-drawn boxes, arrows, a red circle on the key idea and Caveat side notes.
|
|
69
|
+
How it explains: Everything appears by being drawn: the title writes on, then boxes, arrows and words are inked in order with the pen moving to each stroke. The key idea gets circled in red with a handwritten note, and a green tick or symbol lands the takeaway.
|
|
70
|
+
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
---
|
|
74
|
+
|
|
75
|
+
## Voiceover & Storyboard Prompt
|
|
76
|
+
|
|
77
|
+
```markdown
|
|
78
|
+
I want an animated video in the "Marker Board" style (Hand-Drawn) from the Motion Graphics Style Library. Below is a complete, working reference animation in this style: its core helpers (CM), a synthesized sound kit (SFX), the style's scenes, its sound score and the player page. Treat that file as the ground truth for how this style looks, moves and sounds, and rebuild it around my content.
|
|
79
|
+
|
|
80
|
+
MY CONTENT
|
|
81
|
+
[No topic yet. Ask me for my topic or script before building anything.]
|
|
82
|
+
|
|
83
|
+
VOICEOVER TIMING
|
|
84
|
+
[No timing pasted yet. Before building, ask me for a word-level SRT or word timestamps of my voiceover. If I only have the audio file, offer to transcribe it into word timings.]
|
|
85
|
+
|
|
86
|
+
How to use the timing:
|
|
87
|
+
- Turn it into a list of words with start and end times in seconds. If the timing is per line only, spread each line's words across its span in proportion to their length.
|
|
88
|
+
- Set the duration to the last word's end plus about 1.2 seconds.
|
|
89
|
+
- Build the timeline (TL) from these times. Each stroke starts as its word is spoken and finishes by the end of that phrase; the red circle draws on the stressed word.
|
|
90
|
+
- Cut between scenes only at idea boundaries (a new step, a new claim, a reveal), never mid-word, and finish each cut just before the next idea's first spoken word.
|
|
91
|
+
- Put the emphasis moves on stressed words. A counter lands at the exact moment its number is spoken.
|
|
92
|
+
- Keep the player's "Load voiceover" button working so I can drop in my audio and hear it in sync.
|
|
93
|
+
|
|
94
|
+
STORYBOARD FIRST
|
|
95
|
+
Before building, show me a storyboard and wait for my OK:
|
|
96
|
+
- One HTML page (an artifact if you can) with a grid of 6 to 10 panels, one per beat. Draw each panel on a canvas with the reference's own helpers, scene drawing and finishing pass, so the stills already look like the finished piece. No animation or sound yet.
|
|
97
|
+
- Under each panel: the beat number, its start and end time, the exact on-screen words, the camera move or emphasis, how it gets there from the previous beat (the same scene continuing, or a cut and which kind), and its key sounds.
|
|
98
|
+
- Below the grid, list any facts or numbers you had to assume.
|
|
99
|
+
When I approve it (or after my changes), build the full animation and reuse the storyboard's drawing code.
|
|
100
|
+
|
|
101
|
+
WHAT TO BUILD
|
|
102
|
+
One self-contained HTML file (an artifact if you can), built on the reference file below:
|
|
103
|
+
- Keep the page, the player (play/pause, scrub, time, sound toggle, loop, Load voiceover) and the CM and SFX blocks unchanged. Also keep the shared library helpers block (track, txt, chip, slam, rise, wordLine, hd, footage, composite, cam, punch, makeGL and the sound helpers) unchanged.
|
|
104
|
+
- Keep the canvas at 720x1280 (9:16, for Shorts, Reels and TikTok).
|
|
105
|
+
- Replace the demo's story: TL and STROKES (the ordered list of what gets drawn: text, boxes, arrows, circles, notes, with their times and colours) and scoreSound(). Keep and reuse the style's helpers (the board, frame and tray, the ghost smudges, drawText() write-on reveal, hd() hand-drawn lines and ellipses, the pen that follows the active stroke tip, the four marker colours and the Caveat notes).
|
|
106
|
+
- Aim for 15 to 40 seconds unless my content needs more, and set the duration in TL.D.
|
|
107
|
+
- Keep window.seek(t), window.DURATION, window.scoreSound and window.SFX exposed, so the video can be rendered frame by frame.
|
|
108
|
+
- Load the style's fonts before the first draw, as the reference does: Permanent Marker, Caveat (700).
|
|
109
|
+
|
|
110
|
+
THE STYLE
|
|
111
|
+
- One whiteboard (#f9fafa) in a light grey frame with a tray at the bottom and faint ghost smudges of old erasing. No cuts: the whole idea is drawn on one board.
|
|
112
|
+
- Everything is drawn in order: text is revealed left to right with a clip (drawText), lines and shapes with hd() at the stroke progress. A marker pen (body, cap, tip) follows the tip of whatever is being drawn.
|
|
113
|
+
- Colours mean things: black for structure, blue for the title and labels, red only for the key idea (circle, underline, note), green only for the payoff.
|
|
114
|
+
- Type: Permanent Marker for all board writing; Caveat 700 for small handwritten side notes.
|
|
115
|
+
- Keep strokes chunky (4 to 6 px) and slightly wobbly, with two passes per line.
|
|
116
|
+
- Pace: something is always being drawn. Allow 0.4 to 1 second per stroke, and hold the finished board about 2 seconds.
|
|
117
|
+
|
|
118
|
+
RULES THAT KEEP IT IN STYLE
|
|
119
|
+
- Change the story, the words and the props; do not change the medium. Draw every subject accurately for my topic and double-check any facts and numbers you show.
|
|
120
|
+
- Every frame is a pure function of t. Use CM.rng(seed) and CM.noise1(seed) for all randomness, never Math.random. Caching static layers is fine.
|
|
121
|
+
- It will be watched on phones: at 720x1280 keep the title at 56 px or more, box words at 40 px or more and notes at 34 px or more. Fill the frame.
|
|
122
|
+
- Keep each frame fast, well under 50 ms.
|
|
123
|
+
- Give my topic its own demo content; do not reuse the reference's story ("The 3-step funnel") unless my content asks for it.
|
|
124
|
+
|
|
125
|
+
SOUND
|
|
126
|
+
- Bed: a quiet, warm pad.
|
|
127
|
+
- Map events to the kit: every stroke gets a marker squeak ("marker" for its duration, soft); a cap click (click) at the start; the red circle gets a longer, louder marker; the green payoff gets a pluck; the end gets an open chord.
|
|
128
|
+
- Voiceover mix: the player calls SFX.live with { voiceover: true } once narration is loaded. Mark marker sounds soft: true so they sit under the voice.
|
|
129
|
+
- Sync is everything: the sound score reads the same TL times as the picture.
|
|
130
|
+
|
|
131
|
+
IF YOU CAN RUN CODE
|
|
132
|
+
Render an MP4: open the file in headless Chrome, call window.seek(i / 30) for every frame, capture the canvas and pipe the frames into ffmpeg. Render the effects with SFX.render(window.scoreSound, window.DURATION, 48000, { voiceover: false }), which returns interleaved stereo floats, and mux them in. With a voiceover, render the effects with { voiceover: true } and mix them under my audio file.
|
|
133
|
+
|
|
134
|
+
STYLE CARD
|
|
135
|
+
Name: Marker Board
|
|
136
|
+
Family: Hand-Drawn
|
|
137
|
+
Look: A clean whiteboard in a grey frame: black, blue, red and green marker doodles that draw themselves stroke by stroke, a visible marker pen following the tip, hand-drawn boxes, arrows, a red circle on the key idea and Caveat side notes.
|
|
138
|
+
How it explains: Everything appears by being drawn: the title writes on, then boxes, arrows and words are inked in order with the pen moving to each stroke. The key idea gets circled in red with a handwritten note, and a green tick or symbol lands the takeaway.
|
|
139
|
+
|
|
140
|
+
```
|
|
141
|
+
|
|
142
|
+
---
|
|
143
|
+
|
|
144
|
+
## Reference Source Code Location
|
|
145
|
+
File: `plugins/motion-styles/sources/marker-board.html` (57.2 KB)
|
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
# Motion graphics style #37: Market Tape
|
|
2
|
+
|
|
3
|
+
- **ID:** `market-tape`
|
|
4
|
+
- **Family:** Data
|
|
5
|
+
- **Canvas:** `720x1280`
|
|
6
|
+
- **Fonts:** Archivo Black, Inter (500 and 800), JetBrains Mono (500 and 700)
|
|
7
|
+
- **Three.js 3D:** No
|
|
8
|
+
- **Footage Overlay:** No
|
|
9
|
+
|
|
10
|
+
## Look
|
|
11
|
+
A trading-screen explainer on near-black: a scrolling ticker strip of invented symbols, candlesticks that print one by one with a price tag riding the last close, green and red numbers, and a red flash when it breaks.
|
|
12
|
+
|
|
13
|
+
## How It Explains
|
|
14
|
+
Candles print one by one in an uptrend while the price tag climbs, then the trend breaks: red candles drop, the screen flashes and shakes, and a percentage chip counts the fall. A simple loop diagram explains why, and the takeaway closes with an education-only note.
|
|
15
|
+
|
|
16
|
+
## Demo
|
|
17
|
+
Why prices crash (example data, not advice)
|
|
18
|
+
|
|
19
|
+
---
|
|
20
|
+
|
|
21
|
+
## Ready-to-Copy Prompt (Standard)
|
|
22
|
+
|
|
23
|
+
```markdown
|
|
24
|
+
I want an animated video in the "Market Tape" style (Data) from the Motion Graphics Style Library. Below is a complete, working reference animation in this style: its core helpers (CM), a synthesized sound kit (SFX), the style's scenes, its sound score and the player page. Treat that file as the ground truth for how this style looks, moves and sounds, and rebuild it around my content.
|
|
25
|
+
|
|
26
|
+
MY CONTENT
|
|
27
|
+
[No topic yet. Ask me for my topic or script before building anything.]
|
|
28
|
+
|
|
29
|
+
BUILD DIRECTLY
|
|
30
|
+
Skip the storyboard and build the full animation now. Afterwards, list any facts or numbers you assumed.
|
|
31
|
+
|
|
32
|
+
WHAT TO BUILD
|
|
33
|
+
One self-contained HTML file (an artifact if you can), built on the reference file below:
|
|
34
|
+
- Keep the page, the player (play/pause, scrub, time, sound toggle, loop, Load voiceover) and the CM and SFX blocks unchanged. Also keep the shared library helpers block (track, txt, chip, slam, rise, wordLine, hd, footage, composite, cam, punch, makeGL and the sound helpers) unchanged.
|
|
35
|
+
- Keep the canvas at 720x1280 (9:16, for Shorts, Reels and TikTok).
|
|
36
|
+
- Replace the demo's story: TL, PRICES (or your own example series), the ticker symbols (invented), the event label, the LOOP diagram text, the takeaway and scoreSound(). Keep and reuse the style's helpers (the dark trading grid, the scrolling ticker strip, candles that print one by one with wicks, the price tag riding the last close, the red flash and shake on the break, the counting percentage chip, the four-step loop diagram, and the EXAMPLE DATA · NOT ADVICE line).
|
|
37
|
+
- Aim for 15 to 40 seconds unless my content needs more, and set the duration in TL.D.
|
|
38
|
+
- Keep window.seek(t), window.DURATION, window.scoreSound and window.SFX exposed, so the video can be rendered frame by frame.
|
|
39
|
+
- Load the style's fonts before the first draw, as the reference does: Archivo Black, Inter (500 and 800), JetBrains Mono (500 and 700).
|
|
40
|
+
|
|
41
|
+
THE STYLE
|
|
42
|
+
- Never give financial advice: keep "EXAMPLE DATA · EDUCATION, NOT ADVICE" on screen, use invented tickers, and label any real figures with their source and date.
|
|
43
|
+
- Background: near-black (#0b0f14) with faint horizontal grid lines; a ticker strip at the top scrolling invented symbols with green (#2ee59d) ups and red (#ff5a5f) downs.
|
|
44
|
+
- Candles are drawn to one price scale: body from open to close, thin wick from low to high, green up and red down, printing one by one left to right. A pill tag rides the latest close.
|
|
45
|
+
- The break: a short red flash over the frame, a small shake, and a red percentage chip that counts down.
|
|
46
|
+
- Explain with a simple four-node loop (rounded boxes, curved arrows) whose steps light up in turn.
|
|
47
|
+
- Type: Archivo Black headline (white, then red for the key word), Inter for explanation, JetBrains Mono for prices and the ticker.
|
|
48
|
+
|
|
49
|
+
RULES THAT KEEP IT IN STYLE
|
|
50
|
+
- Change the story, the words and the props; do not change the medium. Draw every subject accurately for my topic and double-check any facts and numbers you show.
|
|
51
|
+
- Every frame is a pure function of t. Use CM.rng(seed) and CM.noise1(seed) for all randomness, never Math.random. Caching static layers is fine.
|
|
52
|
+
- It will be watched on phones: at 720x1280 keep the headline at 60 px or more, prices and percentages at 26 px or more and the loop labels at 26 px or more. Fill the frame.
|
|
53
|
+
- Keep each frame fast, well under 50 ms.
|
|
54
|
+
- Give my topic its own demo content; do not reuse the reference's story ("Why prices crash (example data, not advice)") unless my content asks for it.
|
|
55
|
+
|
|
56
|
+
SOUND
|
|
57
|
+
- Bed: a tense, low synth pulse (padBed with kick) that drops out at the break.
|
|
58
|
+
- Map events to the kit: each candle gets a soft "tick" (higher for green, lower for red); the break gets a two-tone alarm, "boom" and a falling tone; the counter "tick"s as it changes; each loop step gets a soft pluck; the takeaway gets a low swell.
|
|
59
|
+
- Full mix (no voiceover): a tense synth pulse, a soft tick for every candle, an alarm and a bass drop on the break, and a heartbeat-like pulse under the loop.
|
|
60
|
+
- Sync is everything: the sound score reads the same TL times as the picture.
|
|
61
|
+
|
|
62
|
+
IF YOU CAN RUN CODE
|
|
63
|
+
Render an MP4: open the file in headless Chrome, call window.seek(i / 30) for every frame, capture the canvas and pipe the frames into ffmpeg. Render the effects with SFX.render(window.scoreSound, window.DURATION, 48000, { voiceover: false }), which returns interleaved stereo floats, and mux them in. With a voiceover, render the effects with { voiceover: true } and mix them under my audio file.
|
|
64
|
+
|
|
65
|
+
STYLE CARD
|
|
66
|
+
Name: Market Tape
|
|
67
|
+
Family: Data
|
|
68
|
+
Look: A trading-screen explainer on near-black: a scrolling ticker strip of invented symbols, candlesticks that print one by one with a price tag riding the last close, green and red numbers, and a red flash when it breaks.
|
|
69
|
+
How it explains: Candles print one by one in an uptrend while the price tag climbs, then the trend breaks: red candles drop, the screen flashes and shakes, and a percentage chip counts the fall. A simple loop diagram explains why, and the takeaway closes with an education-only note.
|
|
70
|
+
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
---
|
|
74
|
+
|
|
75
|
+
## Voiceover & Storyboard Prompt
|
|
76
|
+
|
|
77
|
+
```markdown
|
|
78
|
+
I want an animated video in the "Market Tape" style (Data) from the Motion Graphics Style Library. Below is a complete, working reference animation in this style: its core helpers (CM), a synthesized sound kit (SFX), the style's scenes, its sound score and the player page. Treat that file as the ground truth for how this style looks, moves and sounds, and rebuild it around my content.
|
|
79
|
+
|
|
80
|
+
MY CONTENT
|
|
81
|
+
[No topic yet. Ask me for my topic or script before building anything.]
|
|
82
|
+
|
|
83
|
+
VOICEOVER TIMING
|
|
84
|
+
[No timing pasted yet. Before building, ask me for a word-level SRT or word timestamps of my voiceover. If I only have the audio file, offer to transcribe it into word timings.]
|
|
85
|
+
|
|
86
|
+
How to use the timing:
|
|
87
|
+
- Turn it into a list of words with start and end times in seconds. If the timing is per line only, spread each line's words across its span in proportion to their length.
|
|
88
|
+
- Set the duration to the last word's end plus about 1.2 seconds.
|
|
89
|
+
- Build the timeline (TL) from these times. Candles print while the rise is described, the break lands on the stressed word ("crash", "dropped"), the percentage locks on the spoken number, and each loop step lights up as it is named.
|
|
90
|
+
- Cut between scenes only at idea boundaries (a new step, a new claim, a reveal), never mid-word, and finish each cut just before the next idea's first spoken word.
|
|
91
|
+
- Put the emphasis moves on stressed words. A counter lands at the exact moment its number is spoken.
|
|
92
|
+
- Keep the player's "Load voiceover" button working so I can drop in my audio and hear it in sync.
|
|
93
|
+
|
|
94
|
+
STORYBOARD FIRST
|
|
95
|
+
Before building, show me a storyboard and wait for my OK:
|
|
96
|
+
- One HTML page (an artifact if you can) with a grid of 6 to 10 panels, one per beat. Draw each panel on a canvas with the reference's own helpers, scene drawing and finishing pass, so the stills already look like the finished piece. No animation or sound yet.
|
|
97
|
+
- Under each panel: the beat number, its start and end time, the exact on-screen words, the camera move or emphasis, how it gets there from the previous beat (the same scene continuing, or a cut and which kind), and its key sounds.
|
|
98
|
+
- Below the grid, list any facts or numbers you had to assume.
|
|
99
|
+
When I approve it (or after my changes), build the full animation and reuse the storyboard's drawing code.
|
|
100
|
+
|
|
101
|
+
WHAT TO BUILD
|
|
102
|
+
One self-contained HTML file (an artifact if you can), built on the reference file below:
|
|
103
|
+
- Keep the page, the player (play/pause, scrub, time, sound toggle, loop, Load voiceover) and the CM and SFX blocks unchanged. Also keep the shared library helpers block (track, txt, chip, slam, rise, wordLine, hd, footage, composite, cam, punch, makeGL and the sound helpers) unchanged.
|
|
104
|
+
- Keep the canvas at 720x1280 (9:16, for Shorts, Reels and TikTok).
|
|
105
|
+
- Replace the demo's story: TL, PRICES (or your own example series), the ticker symbols (invented), the event label, the LOOP diagram text, the takeaway and scoreSound(). Keep and reuse the style's helpers (the dark trading grid, the scrolling ticker strip, candles that print one by one with wicks, the price tag riding the last close, the red flash and shake on the break, the counting percentage chip, the four-step loop diagram, and the EXAMPLE DATA · NOT ADVICE line).
|
|
106
|
+
- Aim for 15 to 40 seconds unless my content needs more, and set the duration in TL.D.
|
|
107
|
+
- Keep window.seek(t), window.DURATION, window.scoreSound and window.SFX exposed, so the video can be rendered frame by frame.
|
|
108
|
+
- Load the style's fonts before the first draw, as the reference does: Archivo Black, Inter (500 and 800), JetBrains Mono (500 and 700).
|
|
109
|
+
|
|
110
|
+
THE STYLE
|
|
111
|
+
- Never give financial advice: keep "EXAMPLE DATA · EDUCATION, NOT ADVICE" on screen, use invented tickers, and label any real figures with their source and date.
|
|
112
|
+
- Background: near-black (#0b0f14) with faint horizontal grid lines; a ticker strip at the top scrolling invented symbols with green (#2ee59d) ups and red (#ff5a5f) downs.
|
|
113
|
+
- Candles are drawn to one price scale: body from open to close, thin wick from low to high, green up and red down, printing one by one left to right. A pill tag rides the latest close.
|
|
114
|
+
- The break: a short red flash over the frame, a small shake, and a red percentage chip that counts down.
|
|
115
|
+
- Explain with a simple four-node loop (rounded boxes, curved arrows) whose steps light up in turn.
|
|
116
|
+
- Type: Archivo Black headline (white, then red for the key word), Inter for explanation, JetBrains Mono for prices and the ticker.
|
|
117
|
+
|
|
118
|
+
RULES THAT KEEP IT IN STYLE
|
|
119
|
+
- Change the story, the words and the props; do not change the medium. Draw every subject accurately for my topic and double-check any facts and numbers you show.
|
|
120
|
+
- Every frame is a pure function of t. Use CM.rng(seed) and CM.noise1(seed) for all randomness, never Math.random. Caching static layers is fine.
|
|
121
|
+
- It will be watched on phones: at 720x1280 keep the headline at 60 px or more, prices and percentages at 26 px or more and the loop labels at 26 px or more. Fill the frame.
|
|
122
|
+
- Keep each frame fast, well under 50 ms.
|
|
123
|
+
- Give my topic its own demo content; do not reuse the reference's story ("Why prices crash (example data, not advice)") unless my content asks for it.
|
|
124
|
+
|
|
125
|
+
SOUND
|
|
126
|
+
- Bed: a tense, low synth pulse (padBed with kick) that drops out at the break.
|
|
127
|
+
- Map events to the kit: each candle gets a soft "tick" (higher for green, lower for red); the break gets a two-tone alarm, "boom" and a falling tone; the counter "tick"s as it changes; each loop step gets a soft pluck; the takeaway gets a low swell.
|
|
128
|
+
- Voiceover mix: the player calls SFX.live with { voiceover: true } once narration is loaded. Mark ticks soft: true and keep the alarm short.
|
|
129
|
+
- Sync is everything: the sound score reads the same TL times as the picture.
|
|
130
|
+
|
|
131
|
+
IF YOU CAN RUN CODE
|
|
132
|
+
Render an MP4: open the file in headless Chrome, call window.seek(i / 30) for every frame, capture the canvas and pipe the frames into ffmpeg. Render the effects with SFX.render(window.scoreSound, window.DURATION, 48000, { voiceover: false }), which returns interleaved stereo floats, and mux them in. With a voiceover, render the effects with { voiceover: true } and mix them under my audio file.
|
|
133
|
+
|
|
134
|
+
STYLE CARD
|
|
135
|
+
Name: Market Tape
|
|
136
|
+
Family: Data
|
|
137
|
+
Look: A trading-screen explainer on near-black: a scrolling ticker strip of invented symbols, candlesticks that print one by one with a price tag riding the last close, green and red numbers, and a red flash when it breaks.
|
|
138
|
+
How it explains: Candles print one by one in an uptrend while the price tag climbs, then the trend breaks: red candles drop, the screen flashes and shakes, and a percentage chip counts the fall. A simple loop diagram explains why, and the takeaway closes with an education-only note.
|
|
139
|
+
|
|
140
|
+
```
|
|
141
|
+
|
|
142
|
+
---
|
|
143
|
+
|
|
144
|
+
## Reference Source Code Location
|
|
145
|
+
File: `plugins/motion-styles/sources/market-tape.html` (58.1 KB)
|