@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,2253 @@
|
|
|
1
|
+
[
|
|
2
|
+
{
|
|
3
|
+
"id": "creator-motion",
|
|
4
|
+
"num": "01",
|
|
5
|
+
"name": "Creator Motion Graphics",
|
|
6
|
+
"family": "Kinetic Type",
|
|
7
|
+
"look": "The high-energy business-creator edit: huge condensed caps slamming in word by word, a yellow serif accent on the one word that matters, highlighter swipes, hand-drawn circles and arrows, tilted browser and phone mockups, rolling green counters, film grain and light leaks on near-black.",
|
|
8
|
+
"how": "Every idea gets its own beat: words land on the beat with punch zooms and shake, the wrong idea gets a red strike and a stamp, proof appears as code-drawn mockups, the key number rolls up and locks with a boom, and whip pans, RGB glitches and flash cuts carry you between scenes.",
|
|
9
|
+
"fonts": "Anton, Instrument Serif (italic), Inter",
|
|
10
|
+
"demo": "How to land your first client",
|
|
11
|
+
"replace": "TL, CUTS, PUNCH, SHAKE, FLASH, LEAK, PUSH, the value curves, the scene functions, SCENES, the chrome() label text and scoreSound()",
|
|
12
|
+
"keep": "slam, row, swipe, slamMarked, strike, scribble, handArrow, drawYaw, bubble, background, finishing and the compositor",
|
|
13
|
+
"sizes": "keep statement text at 80 px or more, any label the story depends on at 28 px or more, and key numbers at 120 px or more",
|
|
14
|
+
"voLine": "Every on-screen word slams in at the start of its spoken word, within 0.03 s. Show 2 to 6 key words per sentence, not a full transcript.",
|
|
15
|
+
"full": "- Full mix (no voiceover): keep the music, have at most about 3 sounds at once, and leave a moment of near-silence before the biggest hit.",
|
|
16
|
+
"voMix": "- Voiceover mix: the player calls SFX.live with { voiceover: true } once narration is loaded, which keeps the music low and plays anything marked soft at about 55%. Mark small sounds (pops, ticks, markers, keys) soft: true. Keep booms for the 2 or 3 biggest moments, never put a riser over a spoken sentence, and keep the drone out from under speech.",
|
|
17
|
+
"sheet": [
|
|
18
|
+
"Surface: a near-black editing-room background with slow warm and cool glows, a faint drifting grid, a vignette and film grain stepped at 24 fps. Run background() and finishing() on every frame at the reference’s strength.",
|
|
19
|
+
"Type: Anton in caps for statements, set big (80 to 220 px). Instrument Serif italic in yellow for the one soft or emotional phrase. Inter for labels and small supporting lines. At most one yellow word per line; green only for money and growth numbers; red only for the wrong idea.",
|
|
20
|
+
"How things appear: words slam in one at a time (large and blurred, settling with an expo ease). Cards, chips and pills pop with overshoot. Mockups swing in with a 3D tilt (drawYaw) or slide up from below.",
|
|
21
|
+
"Emphasis: punch zoom plus shake on the hardest words; a yellow highlighter swipe that turns the word dark; a hand-drawn circle and arrow onto the thing that matters; a red strike-through for the wrong idea; a stamp for a flat rejection.",
|
|
22
|
+
"Numbers: a rolling counter in green with a glow. When it locks: a boom, a white flash, a light leak and spark streaks.",
|
|
23
|
+
"Proof shots: stylized mockups drawn in code (browser pages, phone chats, dashboards, cards) with invented, generic names. No real logos, brand names or real people, and nothing that would pass as a real receipt or a real message. Label figures as examples when they are illustrative.",
|
|
24
|
+
"Scene changes: every new idea gets a cut, rotating between whip pans with motion blur, RGB glitches and flash cuts. Inside a scene keep things continuous: lines stack, shift up, get struck out, and new lines arrive.",
|
|
25
|
+
"Chrome: a small topic label at the top left, plus a STEP pill only when the content is a real sequence.",
|
|
26
|
+
"Pace: the hook lands in under 2 seconds, something new happens every 0.5 to 1.5 seconds, and the takeaway holds about 1.5 seconds at the end."
|
|
27
|
+
],
|
|
28
|
+
"sound": [
|
|
29
|
+
"Music: a low drone and a riser into the first big word, the half-time beat (k.music) under the body, a tape stop on the wrong idea, and the beat back for the takeaway. Booms duck the music on their own.",
|
|
30
|
+
"Map events to the kit: word slams get \"slam\" (bigger word, more gain); pills, chips and cards get \"pop\"; cuts get \"whoosh\", \"glitch\" or a \"slam\" on the flash; highlighter and hand-drawn marks get \"marker\"; strike-throughs get \"strike\"; typing gets \"keys\"; a sent message \"send\", an incoming one \"ping\"; clicks \"click\"; counters \"tick\" only when the shown number changes and never more than 12 per second; the big number lands on \"boom\" + \"slam\" + \"shimmer\"; a rejection gets \"stamp\"."
|
|
31
|
+
],
|
|
32
|
+
"sourceFile": "sources/creator-motion.html",
|
|
33
|
+
"promptFile": "prompts/creator-motion.md",
|
|
34
|
+
"sourceBytes": 65127,
|
|
35
|
+
"prompt": "I want an animated video in the \"Creator Motion Graphics\" style (Kinetic Type) 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.\n\nMY CONTENT\n[No topic yet. Ask me for my topic or script before building anything.]\n\nBUILD DIRECTLY\nSkip the storyboard and build the full animation now. Afterwards, list any facts or numbers you assumed.\n\nWHAT TO BUILD\nOne self-contained HTML file (an artifact if you can), built on the reference file below:\n- Keep the page, the player (play/pause, scrub, time, sound toggle, loop, Load voiceover) and the CM and SFX blocks unchanged.\n- Replace the demo's story: TL, CUTS, PUNCH, SHAKE, FLASH, LEAK, PUSH, the value curves, the scene functions, SCENES, the chrome() label text and scoreSound(). Keep and reuse the style's helpers (slam, row, swipe, slamMarked, strike, scribble, handArrow, drawYaw, bubble, background, finishing and the compositor).\n- Aim for 15 to 40 seconds unless my content needs more, and set the duration in TL.D.\n- Keep window.seek(t), window.DURATION, window.scoreSound and window.SFX exposed, so the video can be rendered frame by frame.\n- Load the style's fonts before the first draw, as the reference does: Anton, Instrument Serif (italic), Inter.\n\nTHE STYLE\n- Surface: a near-black editing-room background with slow warm and cool glows, a faint drifting grid, a vignette and film grain stepped at 24 fps. Run background() and finishing() on every frame at the reference’s strength.\n- Type: Anton in caps for statements, set big (80 to 220 px). Instrument Serif italic in yellow for the one soft or emotional phrase. Inter for labels and small supporting lines. At most one yellow word per line; green only for money and growth numbers; red only for the wrong idea.\n- How things appear: words slam in one at a time (large and blurred, settling with an expo ease). Cards, chips and pills pop with overshoot. Mockups swing in with a 3D tilt (drawYaw) or slide up from below.\n- Emphasis: punch zoom plus shake on the hardest words; a yellow highlighter swipe that turns the word dark; a hand-drawn circle and arrow onto the thing that matters; a red strike-through for the wrong idea; a stamp for a flat rejection.\n- Numbers: a rolling counter in green with a glow. When it locks: a boom, a white flash, a light leak and spark streaks.\n- Proof shots: stylized mockups drawn in code (browser pages, phone chats, dashboards, cards) with invented, generic names. No real logos, brand names or real people, and nothing that would pass as a real receipt or a real message. Label figures as examples when they are illustrative.\n- Scene changes: every new idea gets a cut, rotating between whip pans with motion blur, RGB glitches and flash cuts. Inside a scene keep things continuous: lines stack, shift up, get struck out, and new lines arrive.\n- Chrome: a small topic label at the top left, plus a STEP pill only when the content is a real sequence.\n- Pace: the hook lands in under 2 seconds, something new happens every 0.5 to 1.5 seconds, and the takeaway holds about 1.5 seconds at the end.\n\nRULES THAT KEEP IT IN STYLE\n- 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.\n- 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.\n- It will be watched on phones: at 1280x720 keep statement text at 80 px or more, any label the story depends on at 28 px or more, and key numbers at 120 px or more. Fill the frame.\n- Keep each frame fast, well under 50 ms.\n- Give my topic its own demo content; do not reuse the reference's story (\"How to land your first client\") unless my content asks for it.\n\nSOUND\n- Music: a low drone and a riser into the first big word, the half-time beat (k.music) under the body, a tape stop on the wrong idea, and the beat back for the takeaway. Booms duck the music on their own.\n- Map events to the kit: word slams get \"slam\" (bigger word, more gain); pills, chips and cards get \"pop\"; cuts get \"whoosh\", \"glitch\" or a \"slam\" on the flash; highlighter and hand-drawn marks get \"marker\"; strike-throughs get \"strike\"; typing gets \"keys\"; a sent message \"send\", an incoming one \"ping\"; clicks \"click\"; counters \"tick\" only when the shown number changes and never more than 12 per second; the big number lands on \"boom\" + \"slam\" + \"shimmer\"; a rejection gets \"stamp\".\n- Full mix (no voiceover): keep the music, have at most about 3 sounds at once, and leave a moment of near-silence before the biggest hit.\n- Sync is everything: the sound score reads the same TL times as the picture.\n\nIF YOU CAN RUN CODE\nRender 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.\n\nSTYLE CARD\nName: Creator Motion Graphics\nFamily: Kinetic Type\nLook: The high-energy business-creator edit: huge condensed caps slamming in word by word, a yellow serif accent on the one word that matters, highlighter swipes, hand-drawn circles and arrows, tilted browser and phone mockups, rolling green counters, film grain and light leaks on near-black.\nHow it explains: Every idea gets its own beat: words land on the beat with punch zooms and shake, the wrong idea gets a red strike and a stamp, proof appears as code-drawn mockups, the key number rolls up and locks with a boom, and whip pans, RGB glitches and flash cuts carry you between scenes.\n",
|
|
36
|
+
"promptVo": "I want an animated video in the \"Creator Motion Graphics\" style (Kinetic Type) 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.\n\nMY CONTENT\n[No topic yet. Ask me for my topic or script before building anything.]\n\nVOICEOVER TIMING\n[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.]\n\nHow to use the timing:\n- 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.\n- Set the duration to the last word's end plus about 1.2 seconds.\n- Build the timeline (TL) from these times. Every on-screen word slams in at the start of its spoken word, within 0.03 s. Show 2 to 6 key words per sentence, not a full transcript.\n- 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.\n- Put the emphasis moves on stressed words. A counter lands at the exact moment its number is spoken.\n- Keep the player's \"Load voiceover\" button working so I can drop in my audio and hear it in sync.\n\nSTORYBOARD FIRST\nBefore building, show me a storyboard and wait for my OK:\n- 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.\n- 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.\n- Below the grid, list any facts or numbers you had to assume.\nWhen I approve it (or after my changes), build the full animation and reuse the storyboard's drawing code.\n\nWHAT TO BUILD\nOne self-contained HTML file (an artifact if you can), built on the reference file below:\n- Keep the page, the player (play/pause, scrub, time, sound toggle, loop, Load voiceover) and the CM and SFX blocks unchanged.\n- Replace the demo's story: TL, CUTS, PUNCH, SHAKE, FLASH, LEAK, PUSH, the value curves, the scene functions, SCENES, the chrome() label text and scoreSound(). Keep and reuse the style's helpers (slam, row, swipe, slamMarked, strike, scribble, handArrow, drawYaw, bubble, background, finishing and the compositor).\n- Aim for 15 to 40 seconds unless my content needs more, and set the duration in TL.D.\n- Keep window.seek(t), window.DURATION, window.scoreSound and window.SFX exposed, so the video can be rendered frame by frame.\n- Load the style's fonts before the first draw, as the reference does: Anton, Instrument Serif (italic), Inter.\n\nTHE STYLE\n- Surface: a near-black editing-room background with slow warm and cool glows, a faint drifting grid, a vignette and film grain stepped at 24 fps. Run background() and finishing() on every frame at the reference’s strength.\n- Type: Anton in caps for statements, set big (80 to 220 px). Instrument Serif italic in yellow for the one soft or emotional phrase. Inter for labels and small supporting lines. At most one yellow word per line; green only for money and growth numbers; red only for the wrong idea.\n- How things appear: words slam in one at a time (large and blurred, settling with an expo ease). Cards, chips and pills pop with overshoot. Mockups swing in with a 3D tilt (drawYaw) or slide up from below.\n- Emphasis: punch zoom plus shake on the hardest words; a yellow highlighter swipe that turns the word dark; a hand-drawn circle and arrow onto the thing that matters; a red strike-through for the wrong idea; a stamp for a flat rejection.\n- Numbers: a rolling counter in green with a glow. When it locks: a boom, a white flash, a light leak and spark streaks.\n- Proof shots: stylized mockups drawn in code (browser pages, phone chats, dashboards, cards) with invented, generic names. No real logos, brand names or real people, and nothing that would pass as a real receipt or a real message. Label figures as examples when they are illustrative.\n- Scene changes: every new idea gets a cut, rotating between whip pans with motion blur, RGB glitches and flash cuts. Inside a scene keep things continuous: lines stack, shift up, get struck out, and new lines arrive.\n- Chrome: a small topic label at the top left, plus a STEP pill only when the content is a real sequence.\n- Pace: the hook lands in under 2 seconds, something new happens every 0.5 to 1.5 seconds, and the takeaway holds about 1.5 seconds at the end.\n\nRULES THAT KEEP IT IN STYLE\n- 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.\n- 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.\n- It will be watched on phones: at 1280x720 keep statement text at 80 px or more, any label the story depends on at 28 px or more, and key numbers at 120 px or more. Fill the frame.\n- Keep each frame fast, well under 50 ms.\n- Give my topic its own demo content; do not reuse the reference's story (\"How to land your first client\") unless my content asks for it.\n\nSOUND\n- Music: a low drone and a riser into the first big word, the half-time beat (k.music) under the body, a tape stop on the wrong idea, and the beat back for the takeaway. Booms duck the music on their own.\n- Map events to the kit: word slams get \"slam\" (bigger word, more gain); pills, chips and cards get \"pop\"; cuts get \"whoosh\", \"glitch\" or a \"slam\" on the flash; highlighter and hand-drawn marks get \"marker\"; strike-throughs get \"strike\"; typing gets \"keys\"; a sent message \"send\", an incoming one \"ping\"; clicks \"click\"; counters \"tick\" only when the shown number changes and never more than 12 per second; the big number lands on \"boom\" + \"slam\" + \"shimmer\"; a rejection gets \"stamp\".\n- Voiceover mix: the player calls SFX.live with { voiceover: true } once narration is loaded, which keeps the music low and plays anything marked soft at about 55%. Mark small sounds (pops, ticks, markers, keys) soft: true. Keep booms for the 2 or 3 biggest moments, never put a riser over a spoken sentence, and keep the drone out from under speech.\n- Sync is everything: the sound score reads the same TL times as the picture.\n\nIF YOU CAN RUN CODE\nRender 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.\n\nSTYLE CARD\nName: Creator Motion Graphics\nFamily: Kinetic Type\nLook: The high-energy business-creator edit: huge condensed caps slamming in word by word, a yellow serif accent on the one word that matters, highlighter swipes, hand-drawn circles and arrows, tilted browser and phone mockups, rolling green counters, film grain and light leaks on near-black.\nHow it explains: Every idea gets its own beat: words land on the beat with punch zooms and shake, the wrong idea gets a red strike and a stamp, proof appears as code-drawn mockups, the key number rolls up and locks with a boom, and whip pans, RGB glitches and flash cuts carry you between scenes.\n"
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
"id": "chalk-talk",
|
|
40
|
+
"num": "02",
|
|
41
|
+
"name": "Chalk Talk",
|
|
42
|
+
"family": "Hand-Drawn",
|
|
43
|
+
"look": "A teacher at a long green slate: grainy chalk strokes that skip over the board’s tooth, colored chalk for emphasis, dust falling from the stick as it writes, faint ghosts of old lessons, a wooden frame and a dusty chalk tray.",
|
|
44
|
+
"how": "One continuous lesson along the board: a visible chalk stick writes every word and draws every line, the camera tracks to the next stretch of slate, numbers are re-chalked as they count, pink chalk rings the key moments, and a felt eraser wipes a section clean for the takeaway.",
|
|
45
|
+
"fonts": "Cabin Sketch (700), Kalam (400 and 700)",
|
|
46
|
+
"demo": "Get 1% better every day",
|
|
47
|
+
"replace": "TL, CAM, the counter curve (cntStep, cntVal, cntText), ITEMS, drawCounter(), WIPE and its timing, and scoreSound()",
|
|
48
|
+
"keep": "board(), tooth(), noise2, chalkLine, chalkText, layoutText, resample, quad, ellipse, wipeMask, the frame and tray, the chalk stick, the eraser, dust() and the compositor",
|
|
49
|
+
"sizes": "keep headings at 90 px or more, chalked writing at 56 px or more, labels at 36 px or more, and key numbers at 72 px or more",
|
|
50
|
+
"voLine": "Each line of chalk starts being written as its first word is spoken and finishes by the end of that phrase; a short label can land on a single word. Write the key phrase on the board, not the whole transcript.",
|
|
51
|
+
"full": "- Full mix (no voiceover): room tone, chalk and eraser sounds, and soft plucks on the big moments. No music.",
|
|
52
|
+
"voMix": "- Voiceover mix: the player calls SFX.live with { voiceover: true } once narration is loaded. Mark chalk scratches and taps soft: true so they sit under the voice, keep the room tone very low, and keep plucks for the 2 or 3 biggest moments only.",
|
|
53
|
+
"sheet": [
|
|
54
|
+
"Surface: one long slate (BW wide, 720 tall) baked once with mottled green, faint chalk ghosts of old lessons and old eraser smears. The tooth pattern is punched out of the chalk layer every frame so strokes break like real chalk. Keep the wooden frame, the tray with chalk pieces, the classroom light falloff and the fine grain.",
|
|
55
|
+
"Writing: everything appears by being chalked on in order. Letters arrive one at a time with a little jitter; lines are drawn along their path with small skips. The chalk stick follows the tip whenever something is being written, and dust falls from it.",
|
|
56
|
+
"Type: Cabin Sketch for titles and the big takeaway, Kalam for equations, labels and notes. White chalk for content, yellow for the main idea and curves, pink for emphasis and key numbers, blue for side notes. Exponents and small marks use the dy offset on text parts.",
|
|
57
|
+
"Camera: one board, one continuous shot. The camera tracks along the slate to a fresh stretch for each new idea (CAM keys) and leans in gently on the key moment. No cuts.",
|
|
58
|
+
"Emphasis: pink rings around the key number or point, yellow underlines and brackets, chalk arrows that lead the eye along the board.",
|
|
59
|
+
"Numbers: re-chalked as they count (a fresh scrawl about 10 times a second), then ringed when they land.",
|
|
60
|
+
"Scene change: the felt eraser wipes a section back and forth, leaving a faint haze, and the next idea is written in the cleared space.",
|
|
61
|
+
"Diagrams: draw real charts to scale for the topic, with axes, labels and curves computed from the actual function.",
|
|
62
|
+
"Pace: something is always being written. Allow 0.4 to 1.2 seconds per line and hold the takeaway about 1.5 seconds."
|
|
63
|
+
],
|
|
64
|
+
"sound": [
|
|
65
|
+
"Bed: quiet room tone only, no music. A double knock on the board can open the lesson.",
|
|
66
|
+
"Chalk: every word gets its own scratch (grainy band-passed noise bursts with a tap where the stick lands), timed by character position across its write window. Lines get one long scratch; rings and underlines a little louder. Use the score helpers tap, scratch, write and pluck, built on k.hiss and k.voice.",
|
|
67
|
+
"Counter: a short scratch each time the shown number changes. Eraser: a felt swish for each pass, panned with the eraser.",
|
|
68
|
+
"Big moments: soft plucked notes, two for a landed number and a rising arpeggio for the takeaway. Keep it gentle; this is a lesson, not a trailer."
|
|
69
|
+
],
|
|
70
|
+
"sourceFile": "sources/chalk-talk.html",
|
|
71
|
+
"promptFile": "prompts/chalk-talk.md",
|
|
72
|
+
"sourceBytes": 48241,
|
|
73
|
+
"prompt": "I want an animated video in the \"Chalk Talk\" 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.\n\nMY CONTENT\n[No topic yet. Ask me for my topic or script before building anything.]\n\nBUILD DIRECTLY\nSkip the storyboard and build the full animation now. Afterwards, list any facts or numbers you assumed.\n\nWHAT TO BUILD\nOne self-contained HTML file (an artifact if you can), built on the reference file below:\n- Keep the page, the player (play/pause, scrub, time, sound toggle, loop, Load voiceover) and the CM and SFX blocks unchanged.\n- Replace the demo's story: TL, CAM, the counter curve (cntStep, cntVal, cntText), ITEMS, drawCounter(), WIPE and its timing, and scoreSound(). Keep and reuse the style's helpers (board(), tooth(), noise2, chalkLine, chalkText, layoutText, resample, quad, ellipse, wipeMask, the frame and tray, the chalk stick, the eraser, dust() and the compositor).\n- Aim for 15 to 40 seconds unless my content needs more, and set the duration in TL.D.\n- Keep window.seek(t), window.DURATION, window.scoreSound and window.SFX exposed, so the video can be rendered frame by frame.\n- Load the style's fonts before the first draw, as the reference does: Cabin Sketch (700), Kalam (400 and 700).\n\nTHE STYLE\n- Surface: one long slate (BW wide, 720 tall) baked once with mottled green, faint chalk ghosts of old lessons and old eraser smears. The tooth pattern is punched out of the chalk layer every frame so strokes break like real chalk. Keep the wooden frame, the tray with chalk pieces, the classroom light falloff and the fine grain.\n- Writing: everything appears by being chalked on in order. Letters arrive one at a time with a little jitter; lines are drawn along their path with small skips. The chalk stick follows the tip whenever something is being written, and dust falls from it.\n- Type: Cabin Sketch for titles and the big takeaway, Kalam for equations, labels and notes. White chalk for content, yellow for the main idea and curves, pink for emphasis and key numbers, blue for side notes. Exponents and small marks use the dy offset on text parts.\n- Camera: one board, one continuous shot. The camera tracks along the slate to a fresh stretch for each new idea (CAM keys) and leans in gently on the key moment. No cuts.\n- Emphasis: pink rings around the key number or point, yellow underlines and brackets, chalk arrows that lead the eye along the board.\n- Numbers: re-chalked as they count (a fresh scrawl about 10 times a second), then ringed when they land.\n- Scene change: the felt eraser wipes a section back and forth, leaving a faint haze, and the next idea is written in the cleared space.\n- Diagrams: draw real charts to scale for the topic, with axes, labels and curves computed from the actual function.\n- Pace: something is always being written. Allow 0.4 to 1.2 seconds per line and hold the takeaway about 1.5 seconds.\n\nRULES THAT KEEP IT IN STYLE\n- 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.\n- 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.\n- It will be watched on phones: at 1280x720 keep headings at 90 px or more, chalked writing at 56 px or more, labels at 36 px or more, and key numbers at 72 px or more. Fill the frame.\n- Keep each frame fast, well under 50 ms.\n- Give my topic its own demo content; do not reuse the reference's story (\"Get 1% better every day\") unless my content asks for it.\n\nSOUND\n- Bed: quiet room tone only, no music. A double knock on the board can open the lesson.\n- Chalk: every word gets its own scratch (grainy band-passed noise bursts with a tap where the stick lands), timed by character position across its write window. Lines get one long scratch; rings and underlines a little louder. Use the score helpers tap, scratch, write and pluck, built on k.hiss and k.voice.\n- Counter: a short scratch each time the shown number changes. Eraser: a felt swish for each pass, panned with the eraser.\n- Big moments: soft plucked notes, two for a landed number and a rising arpeggio for the takeaway. Keep it gentle; this is a lesson, not a trailer.\n- Full mix (no voiceover): room tone, chalk and eraser sounds, and soft plucks on the big moments. No music.\n- Sync is everything: the sound score reads the same TL times as the picture.\n\nIF YOU CAN RUN CODE\nRender 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.\n\nSTYLE CARD\nName: Chalk Talk\nFamily: Hand-Drawn\nLook: A teacher at a long green slate: grainy chalk strokes that skip over the board’s tooth, colored chalk for emphasis, dust falling from the stick as it writes, faint ghosts of old lessons, a wooden frame and a dusty chalk tray.\nHow it explains: One continuous lesson along the board: a visible chalk stick writes every word and draws every line, the camera tracks to the next stretch of slate, numbers are re-chalked as they count, pink chalk rings the key moments, and a felt eraser wipes a section clean for the takeaway.\n",
|
|
74
|
+
"promptVo": "I want an animated video in the \"Chalk Talk\" 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.\n\nMY CONTENT\n[No topic yet. Ask me for my topic or script before building anything.]\n\nVOICEOVER TIMING\n[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.]\n\nHow to use the timing:\n- 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.\n- Set the duration to the last word's end plus about 1.2 seconds.\n- Build the timeline (TL) from these times. Each line of chalk starts being written as its first word is spoken and finishes by the end of that phrase; a short label can land on a single word. Write the key phrase on the board, not the whole transcript.\n- 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.\n- Put the emphasis moves on stressed words. A counter lands at the exact moment its number is spoken.\n- Keep the player's \"Load voiceover\" button working so I can drop in my audio and hear it in sync.\n\nSTORYBOARD FIRST\nBefore building, show me a storyboard and wait for my OK:\n- 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.\n- 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.\n- Below the grid, list any facts or numbers you had to assume.\nWhen I approve it (or after my changes), build the full animation and reuse the storyboard's drawing code.\n\nWHAT TO BUILD\nOne self-contained HTML file (an artifact if you can), built on the reference file below:\n- Keep the page, the player (play/pause, scrub, time, sound toggle, loop, Load voiceover) and the CM and SFX blocks unchanged.\n- Replace the demo's story: TL, CAM, the counter curve (cntStep, cntVal, cntText), ITEMS, drawCounter(), WIPE and its timing, and scoreSound(). Keep and reuse the style's helpers (board(), tooth(), noise2, chalkLine, chalkText, layoutText, resample, quad, ellipse, wipeMask, the frame and tray, the chalk stick, the eraser, dust() and the compositor).\n- Aim for 15 to 40 seconds unless my content needs more, and set the duration in TL.D.\n- Keep window.seek(t), window.DURATION, window.scoreSound and window.SFX exposed, so the video can be rendered frame by frame.\n- Load the style's fonts before the first draw, as the reference does: Cabin Sketch (700), Kalam (400 and 700).\n\nTHE STYLE\n- Surface: one long slate (BW wide, 720 tall) baked once with mottled green, faint chalk ghosts of old lessons and old eraser smears. The tooth pattern is punched out of the chalk layer every frame so strokes break like real chalk. Keep the wooden frame, the tray with chalk pieces, the classroom light falloff and the fine grain.\n- Writing: everything appears by being chalked on in order. Letters arrive one at a time with a little jitter; lines are drawn along their path with small skips. The chalk stick follows the tip whenever something is being written, and dust falls from it.\n- Type: Cabin Sketch for titles and the big takeaway, Kalam for equations, labels and notes. White chalk for content, yellow for the main idea and curves, pink for emphasis and key numbers, blue for side notes. Exponents and small marks use the dy offset on text parts.\n- Camera: one board, one continuous shot. The camera tracks along the slate to a fresh stretch for each new idea (CAM keys) and leans in gently on the key moment. No cuts.\n- Emphasis: pink rings around the key number or point, yellow underlines and brackets, chalk arrows that lead the eye along the board.\n- Numbers: re-chalked as they count (a fresh scrawl about 10 times a second), then ringed when they land.\n- Scene change: the felt eraser wipes a section back and forth, leaving a faint haze, and the next idea is written in the cleared space.\n- Diagrams: draw real charts to scale for the topic, with axes, labels and curves computed from the actual function.\n- Pace: something is always being written. Allow 0.4 to 1.2 seconds per line and hold the takeaway about 1.5 seconds.\n\nRULES THAT KEEP IT IN STYLE\n- 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.\n- 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.\n- It will be watched on phones: at 1280x720 keep headings at 90 px or more, chalked writing at 56 px or more, labels at 36 px or more, and key numbers at 72 px or more. Fill the frame.\n- Keep each frame fast, well under 50 ms.\n- Give my topic its own demo content; do not reuse the reference's story (\"Get 1% better every day\") unless my content asks for it.\n\nSOUND\n- Bed: quiet room tone only, no music. A double knock on the board can open the lesson.\n- Chalk: every word gets its own scratch (grainy band-passed noise bursts with a tap where the stick lands), timed by character position across its write window. Lines get one long scratch; rings and underlines a little louder. Use the score helpers tap, scratch, write and pluck, built on k.hiss and k.voice.\n- Counter: a short scratch each time the shown number changes. Eraser: a felt swish for each pass, panned with the eraser.\n- Big moments: soft plucked notes, two for a landed number and a rising arpeggio for the takeaway. Keep it gentle; this is a lesson, not a trailer.\n- Voiceover mix: the player calls SFX.live with { voiceover: true } once narration is loaded. Mark chalk scratches and taps soft: true so they sit under the voice, keep the room tone very low, and keep plucks for the 2 or 3 biggest moments only.\n- Sync is everything: the sound score reads the same TL times as the picture.\n\nIF YOU CAN RUN CODE\nRender 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.\n\nSTYLE CARD\nName: Chalk Talk\nFamily: Hand-Drawn\nLook: A teacher at a long green slate: grainy chalk strokes that skip over the board’s tooth, colored chalk for emphasis, dust falling from the stick as it writes, faint ghosts of old lessons, a wooden frame and a dusty chalk tray.\nHow it explains: One continuous lesson along the board: a visible chalk stick writes every word and draws every line, the camera tracks to the next stretch of slate, numbers are re-chalked as they count, pink chalk rings the key moments, and a felt eraser wipes a section clean for the takeaway.\n"
|
|
75
|
+
},
|
|
76
|
+
{
|
|
77
|
+
"id": "clean-tech",
|
|
78
|
+
"num": "03",
|
|
79
|
+
"name": "Clean Tech",
|
|
80
|
+
"family": "Kinetic Type",
|
|
81
|
+
"look": "A calm, bright product-explainer look: cool off-white with a drifting dot grid, crisp Inter Tight words that rise into place, white UI cards with soft shadows, one electric blue accent, mono labels and a green check for anything finished.",
|
|
82
|
+
"how": "Short statements rise word by word and the key word gets a blue pill. Ideas become small working diagrams: a prompt card that types and sends, nodes that pop in, a dot that travels a loop, task rows that tick off, a counter that climbs, a document that fills in. Clean push and zoom-through cuts move between ideas.",
|
|
83
|
+
"fonts": "Inter Tight (500 to 800), JetBrains Mono (500 and 700)",
|
|
84
|
+
"demo": "How AI agents get work done",
|
|
85
|
+
"replace": "TL, CUTS, BUMPS, the counter curve (stepCount), LOOP and ARCS, promptCard(), node(), the scene functions, SCENES and scoreSound()",
|
|
86
|
+
"keep": "the ui-kit helpers (rr, track, rise, riseLine, pillBehind, typed, softCard, checkMark, composite, padBed), background(), cam() and the vignette in explainer()",
|
|
87
|
+
"sizes": "keep statements at 78 px or more, card text at 26 px or more, mono labels at 18 px or more, and key numbers at 120 px or more",
|
|
88
|
+
"voLine": "Each word rises at the start of its spoken word, within 0.03 s, and the blue pill lands on the stressed word. Show 2 to 6 key words per sentence, not a full transcript.",
|
|
89
|
+
"full": "- Full mix (no voiceover): keep the soft pad with light hats, at most about 3 sounds at once, and a short gap before the takeaway pill.",
|
|
90
|
+
"voMix": "- Voiceover mix: the player calls SFX.live with { voiceover: true } once narration is loaded, which keeps the pad low and plays anything marked soft at about 55%. Mark word ticks, pops and row ticks soft: true, keep swipes for the 2 or 3 key pills, and never put a riser over a spoken sentence.",
|
|
91
|
+
"sheet": [
|
|
92
|
+
"Surface: cool off-white (#f5f6f8) with a slowly drifting dot grid, a faint blue glow top right and a faint green glow bottom left, and a light vignette. Keep background() and the vignette on every frame.",
|
|
93
|
+
"Type: Inter Tight 800 for statements, centered or left aligned, never all caps. Inter Tight 500 to 700 for card text. JetBrains Mono in caps with letter spacing for small labels (THE SHIFT, TASKS, STEPS TAKEN). Ink #0d0f14, muted grey for secondary text, electric blue #2f5bff as the only accent, green #18b46b only for done and checked.",
|
|
94
|
+
"How things appear: each word rises from behind a mask with an expo ease (rise, riseLine). Cards slide up and fade in, nodes pop in with a small overshoot, text in input cards is typed with a blinking caret.",
|
|
95
|
+
"Emphasis: a blue pill grows behind the one key word and the word turns white (pillBehind). Small blue glows on whatever is active. A green check pops in for anything finished.",
|
|
96
|
+
"Diagrams: build ideas from small UI pieces drawn in code: white rounded cards (softCard), mono labels, progress bars, a dashed path with a travelling dot, a counter. Use invented, generic names for any companies or products.",
|
|
97
|
+
"Camera: a gentle push-in over each scene and a small bump when a pill lands (cam with BUMPS).",
|
|
98
|
+
"Scene changes: clean horizontal pushes for a new idea and a zoom-through into a detail (composite with CUTS). No glitches or flashes.",
|
|
99
|
+
"Pace: the hook lands in under 2 seconds, one new element every 0.3 to 1 second, and the takeaway holds about 1.5 seconds."
|
|
100
|
+
],
|
|
101
|
+
"sound": [
|
|
102
|
+
"Bed: a soft synth pad (padBed) with light hats and a gentle kick under the body, dropping out for the hook and the ending.",
|
|
103
|
+
"Map events to the kit: rising words get a tiny glassy tick (rise1); blue pills get a clean swipe with a bell note; cards and nodes get \"pop\"; typing gets \"keys\" and sending gets \"send\"; scene pushes get \"whoosh\"; a zoom-through gets a short \"riser\" then a whoosh; finished tasks and checks get a two-note chime; counters \"tick\" only when the shown number changes."
|
|
104
|
+
],
|
|
105
|
+
"sourceFile": "sources/clean-tech.html",
|
|
106
|
+
"promptFile": "prompts/clean-tech.md",
|
|
107
|
+
"sourceBytes": 47242,
|
|
108
|
+
"prompt": "I want an animated video in the \"Clean Tech\" style (Kinetic Type) 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.\n\nMY CONTENT\n[No topic yet. Ask me for my topic or script before building anything.]\n\nBUILD DIRECTLY\nSkip the storyboard and build the full animation now. Afterwards, list any facts or numbers you assumed.\n\nWHAT TO BUILD\nOne self-contained HTML file (an artifact if you can), built on the reference file below:\n- Keep the page, the player (play/pause, scrub, time, sound toggle, loop, Load voiceover) and the CM and SFX blocks unchanged.\n- Replace the demo's story: TL, CUTS, BUMPS, the counter curve (stepCount), LOOP and ARCS, promptCard(), node(), the scene functions, SCENES and scoreSound(). Keep and reuse the style's helpers (the ui-kit helpers (rr, track, rise, riseLine, pillBehind, typed, softCard, checkMark, composite, padBed), background(), cam() and the vignette in explainer()).\n- Aim for 15 to 40 seconds unless my content needs more, and set the duration in TL.D.\n- Keep window.seek(t), window.DURATION, window.scoreSound and window.SFX exposed, so the video can be rendered frame by frame.\n- Load the style's fonts before the first draw, as the reference does: Inter Tight (500 to 800), JetBrains Mono (500 and 700).\n\nTHE STYLE\n- Surface: cool off-white (#f5f6f8) with a slowly drifting dot grid, a faint blue glow top right and a faint green glow bottom left, and a light vignette. Keep background() and the vignette on every frame.\n- Type: Inter Tight 800 for statements, centered or left aligned, never all caps. Inter Tight 500 to 700 for card text. JetBrains Mono in caps with letter spacing for small labels (THE SHIFT, TASKS, STEPS TAKEN). Ink #0d0f14, muted grey for secondary text, electric blue #2f5bff as the only accent, green #18b46b only for done and checked.\n- How things appear: each word rises from behind a mask with an expo ease (rise, riseLine). Cards slide up and fade in, nodes pop in with a small overshoot, text in input cards is typed with a blinking caret.\n- Emphasis: a blue pill grows behind the one key word and the word turns white (pillBehind). Small blue glows on whatever is active. A green check pops in for anything finished.\n- Diagrams: build ideas from small UI pieces drawn in code: white rounded cards (softCard), mono labels, progress bars, a dashed path with a travelling dot, a counter. Use invented, generic names for any companies or products.\n- Camera: a gentle push-in over each scene and a small bump when a pill lands (cam with BUMPS).\n- Scene changes: clean horizontal pushes for a new idea and a zoom-through into a detail (composite with CUTS). No glitches or flashes.\n- Pace: the hook lands in under 2 seconds, one new element every 0.3 to 1 second, and the takeaway holds about 1.5 seconds.\n\nRULES THAT KEEP IT IN STYLE\n- 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.\n- 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.\n- It will be watched on phones: at 1280x720 keep statements at 78 px or more, card text at 26 px or more, mono labels at 18 px or more, and key numbers at 120 px or more. Fill the frame.\n- Keep each frame fast, well under 50 ms.\n- Give my topic its own demo content; do not reuse the reference's story (\"How AI agents get work done\") unless my content asks for it.\n\nSOUND\n- Bed: a soft synth pad (padBed) with light hats and a gentle kick under the body, dropping out for the hook and the ending.\n- Map events to the kit: rising words get a tiny glassy tick (rise1); blue pills get a clean swipe with a bell note; cards and nodes get \"pop\"; typing gets \"keys\" and sending gets \"send\"; scene pushes get \"whoosh\"; a zoom-through gets a short \"riser\" then a whoosh; finished tasks and checks get a two-note chime; counters \"tick\" only when the shown number changes.\n- Full mix (no voiceover): keep the soft pad with light hats, at most about 3 sounds at once, and a short gap before the takeaway pill.\n- Sync is everything: the sound score reads the same TL times as the picture.\n\nIF YOU CAN RUN CODE\nRender 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.\n\nSTYLE CARD\nName: Clean Tech\nFamily: Kinetic Type\nLook: A calm, bright product-explainer look: cool off-white with a drifting dot grid, crisp Inter Tight words that rise into place, white UI cards with soft shadows, one electric blue accent, mono labels and a green check for anything finished.\nHow it explains: Short statements rise word by word and the key word gets a blue pill. Ideas become small working diagrams: a prompt card that types and sends, nodes that pop in, a dot that travels a loop, task rows that tick off, a counter that climbs, a document that fills in. Clean push and zoom-through cuts move between ideas.\n",
|
|
109
|
+
"promptVo": "I want an animated video in the \"Clean Tech\" style (Kinetic Type) 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.\n\nMY CONTENT\n[No topic yet. Ask me for my topic or script before building anything.]\n\nVOICEOVER TIMING\n[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.]\n\nHow to use the timing:\n- 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.\n- Set the duration to the last word's end plus about 1.2 seconds.\n- Build the timeline (TL) from these times. Each word rises at the start of its spoken word, within 0.03 s, and the blue pill lands on the stressed word. Show 2 to 6 key words per sentence, not a full transcript.\n- 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.\n- Put the emphasis moves on stressed words. A counter lands at the exact moment its number is spoken.\n- Keep the player's \"Load voiceover\" button working so I can drop in my audio and hear it in sync.\n\nSTORYBOARD FIRST\nBefore building, show me a storyboard and wait for my OK:\n- 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.\n- 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.\n- Below the grid, list any facts or numbers you had to assume.\nWhen I approve it (or after my changes), build the full animation and reuse the storyboard's drawing code.\n\nWHAT TO BUILD\nOne self-contained HTML file (an artifact if you can), built on the reference file below:\n- Keep the page, the player (play/pause, scrub, time, sound toggle, loop, Load voiceover) and the CM and SFX blocks unchanged.\n- Replace the demo's story: TL, CUTS, BUMPS, the counter curve (stepCount), LOOP and ARCS, promptCard(), node(), the scene functions, SCENES and scoreSound(). Keep and reuse the style's helpers (the ui-kit helpers (rr, track, rise, riseLine, pillBehind, typed, softCard, checkMark, composite, padBed), background(), cam() and the vignette in explainer()).\n- Aim for 15 to 40 seconds unless my content needs more, and set the duration in TL.D.\n- Keep window.seek(t), window.DURATION, window.scoreSound and window.SFX exposed, so the video can be rendered frame by frame.\n- Load the style's fonts before the first draw, as the reference does: Inter Tight (500 to 800), JetBrains Mono (500 and 700).\n\nTHE STYLE\n- Surface: cool off-white (#f5f6f8) with a slowly drifting dot grid, a faint blue glow top right and a faint green glow bottom left, and a light vignette. Keep background() and the vignette on every frame.\n- Type: Inter Tight 800 for statements, centered or left aligned, never all caps. Inter Tight 500 to 700 for card text. JetBrains Mono in caps with letter spacing for small labels (THE SHIFT, TASKS, STEPS TAKEN). Ink #0d0f14, muted grey for secondary text, electric blue #2f5bff as the only accent, green #18b46b only for done and checked.\n- How things appear: each word rises from behind a mask with an expo ease (rise, riseLine). Cards slide up and fade in, nodes pop in with a small overshoot, text in input cards is typed with a blinking caret.\n- Emphasis: a blue pill grows behind the one key word and the word turns white (pillBehind). Small blue glows on whatever is active. A green check pops in for anything finished.\n- Diagrams: build ideas from small UI pieces drawn in code: white rounded cards (softCard), mono labels, progress bars, a dashed path with a travelling dot, a counter. Use invented, generic names for any companies or products.\n- Camera: a gentle push-in over each scene and a small bump when a pill lands (cam with BUMPS).\n- Scene changes: clean horizontal pushes for a new idea and a zoom-through into a detail (composite with CUTS). No glitches or flashes.\n- Pace: the hook lands in under 2 seconds, one new element every 0.3 to 1 second, and the takeaway holds about 1.5 seconds.\n\nRULES THAT KEEP IT IN STYLE\n- 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.\n- 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.\n- It will be watched on phones: at 1280x720 keep statements at 78 px or more, card text at 26 px or more, mono labels at 18 px or more, and key numbers at 120 px or more. Fill the frame.\n- Keep each frame fast, well under 50 ms.\n- Give my topic its own demo content; do not reuse the reference's story (\"How AI agents get work done\") unless my content asks for it.\n\nSOUND\n- Bed: a soft synth pad (padBed) with light hats and a gentle kick under the body, dropping out for the hook and the ending.\n- Map events to the kit: rising words get a tiny glassy tick (rise1); blue pills get a clean swipe with a bell note; cards and nodes get \"pop\"; typing gets \"keys\" and sending gets \"send\"; scene pushes get \"whoosh\"; a zoom-through gets a short \"riser\" then a whoosh; finished tasks and checks get a two-note chime; counters \"tick\" only when the shown number changes.\n- Voiceover mix: the player calls SFX.live with { voiceover: true } once narration is loaded, which keeps the pad low and plays anything marked soft at about 55%. Mark word ticks, pops and row ticks soft: true, keep swipes for the 2 or 3 key pills, and never put a riser over a spoken sentence.\n- Sync is everything: the sound score reads the same TL times as the picture.\n\nIF YOU CAN RUN CODE\nRender 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.\n\nSTYLE CARD\nName: Clean Tech\nFamily: Kinetic Type\nLook: A calm, bright product-explainer look: cool off-white with a drifting dot grid, crisp Inter Tight words that rise into place, white UI cards with soft shadows, one electric blue accent, mono labels and a green check for anything finished.\nHow it explains: Short statements rise word by word and the key word gets a blue pill. Ideas become small working diagrams: a prompt card that types and sends, nodes that pop in, a dot that travels a loop, task rows that tick off, a counter that climbs, a document that fills in. Clean push and zoom-through cuts move between ideas.\n"
|
|
110
|
+
},
|
|
111
|
+
{
|
|
112
|
+
"id": "software-walkthrough",
|
|
113
|
+
"num": "04",
|
|
114
|
+
"name": "Software Walkthrough",
|
|
115
|
+
"family": "Screen and UI",
|
|
116
|
+
"look": "A polished screen-recording tutorial built entirely in code: an app window on a soft gradient desktop, a real-feeling cursor with click ripples, a camera that zooms into what matters, yellow-edged spotlights, numbered step callouts and a calm pad underneath.",
|
|
117
|
+
"how": "It shows the clicks, not just the idea: a title card, then the cursor moves through the real flow while the camera follows it in and out, modals and menus open, fields get typed, toggles flip, and a dark step pill at the bottom left counts you through. It ends on the result actually happening and a short lower third.",
|
|
118
|
+
"fonts": "DM Sans (400 to 700), DM Mono (400 and 500)",
|
|
119
|
+
"demo": "Your first automation in an invented app called Flowdesk",
|
|
120
|
+
"replace": "TL, CAM, CURSOR, STEP_NAMES, the app pieces (sidebar, header, homePage, emptyState, modal, editor), the spotlight calls in explainer(), titleCard(), notification(), outroCard() and scoreSound()",
|
|
121
|
+
"keep": "the ui-kit helpers (rr, track, rise, riseLine, typed, softCard, cursorArrow, checkMark, padBed), wallpaper(), appWindow() as the frame, spotlight(), cursor(), stepCallout() and the camera transform in explainer()",
|
|
122
|
+
"sizes": "keep the title card at 90 px or more, step callouts at 28 px, app text at 18 px or more (the camera zooms in on anything smaller), and the lower third at 40 px",
|
|
123
|
+
"voLine": "Each click lands on the spoken word that names it, the camera starts moving about 0.3 s before the thing it shows is mentioned, and each step pill appears as its step is introduced.",
|
|
124
|
+
"full": "- Full mix (no voiceover): keep the warm pad and soft hats, crisp clicks on every click, and a quiet moment before the result appears.",
|
|
125
|
+
"voMix": "- Voiceover mix: the player calls SFX.live with { voiceover: true } once narration is loaded, which keeps the pad low and plays anything marked soft at about 55%. Keep clicks at full level (they are the proof), mark camera whooshes and ticks soft: true, and keep chimes for the step pills and the final result only.",
|
|
126
|
+
"sheet": [
|
|
127
|
+
"Surface: a desktop with a soft indigo to teal gradient wallpaper and two slow light blooms. On it, one app window (rounded, deep shadow) with a title bar, a sidebar and a main area. The whole UI is drawn in code, crisp and believable, for an invented app with an invented name. Never copy a real product’s UI, name or logo.",
|
|
128
|
+
"Type: DM Sans for all UI and titles (700 for headings and selected items, 400 to 500 for body), DM Mono in caps for tiny labels (WHEN, THEN, LIVE). Ink #14161c, muted #6a6f7c, one accent (#5b5bf6) for buttons, selection and the cursor ripple, green #1fb46e for live and success, yellow #ffd60a only for spotlight edges.",
|
|
129
|
+
"Cursor: a classic arrow that moves along eased waypoints (CURSOR keys), dips slightly on each click, and leaves an accent ripple. Every click has a visible result within 0.1 s: a pressed button, a selected row, an opened menu.",
|
|
130
|
+
"Camera: one continuous screen recording. Zoom in (1.2x to 1.6x) toward the area being used, hold, and ease back out to the full window between steps (CAM keys). The camera leads the cursor slightly.",
|
|
131
|
+
"Emphasis: a spotlight dims everything except a rounded cutout with a yellow edge around the one control that matters. Toasts, notifications and a side panel slide in to prove the result.",
|
|
132
|
+
"Chrome: a title card first (small mono tag, a big two-line title, a pill with the step count and time), a dark numbered step pill at the bottom left that swaps as each step starts, and a dark lower third with a green check at the end.",
|
|
133
|
+
"Flow: real UI behaviour in order: navigate, empty state, modal with choices, dropdown, continue, editor with connected nodes, typed fields, chips, a toggle that turns on, and the outcome happening (a new row, a message, a file).",
|
|
134
|
+
"Pace: 3 to 5 seconds per step, never more than one new action at a time, and a 1.5 second hold on the result."
|
|
135
|
+
],
|
|
136
|
+
"sound": [
|
|
137
|
+
"Bed: a warm, slow pad (padBed) with soft hats while the steps run, no kick. It drops away under the title card for a moment.",
|
|
138
|
+
"Map events to the kit: every cursor click gets \"click\"; modals, menus, nodes and chips get \"pop\" (higher pitch for smaller things); typing gets \"keys\"; every camera zoom in or out gets a soft pink-noise swell; step pills get a two-note chime that climbs a little with each step; the toggle gets a short bright swish; a toast or the result gets a chime; an incoming notification gets \"ping\"; panels sliding in get a soft \"whoosh\"."
|
|
139
|
+
],
|
|
140
|
+
"sourceFile": "sources/software-walkthrough.html",
|
|
141
|
+
"promptFile": "prompts/software-walkthrough.md",
|
|
142
|
+
"sourceBytes": 57846,
|
|
143
|
+
"prompt": "I want an animated video in the \"Software Walkthrough\" style (Screen and UI) 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.\n\nMY CONTENT\n[No topic yet. Ask me for my topic or script before building anything.]\n\nBUILD DIRECTLY\nSkip the storyboard and build the full animation now. Afterwards, list any facts or numbers you assumed.\n\nWHAT TO BUILD\nOne self-contained HTML file (an artifact if you can), built on the reference file below:\n- Keep the page, the player (play/pause, scrub, time, sound toggle, loop, Load voiceover) and the CM and SFX blocks unchanged.\n- Replace the demo's story: TL, CAM, CURSOR, STEP_NAMES, the app pieces (sidebar, header, homePage, emptyState, modal, editor), the spotlight calls in explainer(), titleCard(), notification(), outroCard() and scoreSound(). Keep and reuse the style's helpers (the ui-kit helpers (rr, track, rise, riseLine, typed, softCard, cursorArrow, checkMark, padBed), wallpaper(), appWindow() as the frame, spotlight(), cursor(), stepCallout() and the camera transform in explainer()).\n- Aim for 15 to 40 seconds unless my content needs more, and set the duration in TL.D.\n- Keep window.seek(t), window.DURATION, window.scoreSound and window.SFX exposed, so the video can be rendered frame by frame.\n- Load the style's fonts before the first draw, as the reference does: DM Sans (400 to 700), DM Mono (400 and 500).\n\nTHE STYLE\n- Surface: a desktop with a soft indigo to teal gradient wallpaper and two slow light blooms. On it, one app window (rounded, deep shadow) with a title bar, a sidebar and a main area. The whole UI is drawn in code, crisp and believable, for an invented app with an invented name. Never copy a real product’s UI, name or logo.\n- Type: DM Sans for all UI and titles (700 for headings and selected items, 400 to 500 for body), DM Mono in caps for tiny labels (WHEN, THEN, LIVE). Ink #14161c, muted #6a6f7c, one accent (#5b5bf6) for buttons, selection and the cursor ripple, green #1fb46e for live and success, yellow #ffd60a only for spotlight edges.\n- Cursor: a classic arrow that moves along eased waypoints (CURSOR keys), dips slightly on each click, and leaves an accent ripple. Every click has a visible result within 0.1 s: a pressed button, a selected row, an opened menu.\n- Camera: one continuous screen recording. Zoom in (1.2x to 1.6x) toward the area being used, hold, and ease back out to the full window between steps (CAM keys). The camera leads the cursor slightly.\n- Emphasis: a spotlight dims everything except a rounded cutout with a yellow edge around the one control that matters. Toasts, notifications and a side panel slide in to prove the result.\n- Chrome: a title card first (small mono tag, a big two-line title, a pill with the step count and time), a dark numbered step pill at the bottom left that swaps as each step starts, and a dark lower third with a green check at the end.\n- Flow: real UI behaviour in order: navigate, empty state, modal with choices, dropdown, continue, editor with connected nodes, typed fields, chips, a toggle that turns on, and the outcome happening (a new row, a message, a file).\n- Pace: 3 to 5 seconds per step, never more than one new action at a time, and a 1.5 second hold on the result.\n\nRULES THAT KEEP IT IN STYLE\n- 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.\n- 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.\n- It will be watched on phones: at 1280x720 keep the title card at 90 px or more, step callouts at 28 px, app text at 18 px or more (the camera zooms in on anything smaller), and the lower third at 40 px. Fill the frame.\n- Keep each frame fast, well under 50 ms.\n- Give my topic its own demo content; do not reuse the reference's story (\"Your first automation in an invented app called Flowdesk\") unless my content asks for it.\n\nSOUND\n- Bed: a warm, slow pad (padBed) with soft hats while the steps run, no kick. It drops away under the title card for a moment.\n- Map events to the kit: every cursor click gets \"click\"; modals, menus, nodes and chips get \"pop\" (higher pitch for smaller things); typing gets \"keys\"; every camera zoom in or out gets a soft pink-noise swell; step pills get a two-note chime that climbs a little with each step; the toggle gets a short bright swish; a toast or the result gets a chime; an incoming notification gets \"ping\"; panels sliding in get a soft \"whoosh\".\n- Full mix (no voiceover): keep the warm pad and soft hats, crisp clicks on every click, and a quiet moment before the result appears.\n- Sync is everything: the sound score reads the same TL times as the picture.\n\nIF YOU CAN RUN CODE\nRender 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.\n\nSTYLE CARD\nName: Software Walkthrough\nFamily: Screen and UI\nLook: A polished screen-recording tutorial built entirely in code: an app window on a soft gradient desktop, a real-feeling cursor with click ripples, a camera that zooms into what matters, yellow-edged spotlights, numbered step callouts and a calm pad underneath.\nHow it explains: It shows the clicks, not just the idea: a title card, then the cursor moves through the real flow while the camera follows it in and out, modals and menus open, fields get typed, toggles flip, and a dark step pill at the bottom left counts you through. It ends on the result actually happening and a short lower third.\n",
|
|
144
|
+
"promptVo": "I want an animated video in the \"Software Walkthrough\" style (Screen and UI) 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.\n\nMY CONTENT\n[No topic yet. Ask me for my topic or script before building anything.]\n\nVOICEOVER TIMING\n[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.]\n\nHow to use the timing:\n- 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.\n- Set the duration to the last word's end plus about 1.2 seconds.\n- Build the timeline (TL) from these times. Each click lands on the spoken word that names it, the camera starts moving about 0.3 s before the thing it shows is mentioned, and each step pill appears as its step is introduced.\n- 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.\n- Put the emphasis moves on stressed words. A counter lands at the exact moment its number is spoken.\n- Keep the player's \"Load voiceover\" button working so I can drop in my audio and hear it in sync.\n\nSTORYBOARD FIRST\nBefore building, show me a storyboard and wait for my OK:\n- 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.\n- 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.\n- Below the grid, list any facts or numbers you had to assume.\nWhen I approve it (or after my changes), build the full animation and reuse the storyboard's drawing code.\n\nWHAT TO BUILD\nOne self-contained HTML file (an artifact if you can), built on the reference file below:\n- Keep the page, the player (play/pause, scrub, time, sound toggle, loop, Load voiceover) and the CM and SFX blocks unchanged.\n- Replace the demo's story: TL, CAM, CURSOR, STEP_NAMES, the app pieces (sidebar, header, homePage, emptyState, modal, editor), the spotlight calls in explainer(), titleCard(), notification(), outroCard() and scoreSound(). Keep and reuse the style's helpers (the ui-kit helpers (rr, track, rise, riseLine, typed, softCard, cursorArrow, checkMark, padBed), wallpaper(), appWindow() as the frame, spotlight(), cursor(), stepCallout() and the camera transform in explainer()).\n- Aim for 15 to 40 seconds unless my content needs more, and set the duration in TL.D.\n- Keep window.seek(t), window.DURATION, window.scoreSound and window.SFX exposed, so the video can be rendered frame by frame.\n- Load the style's fonts before the first draw, as the reference does: DM Sans (400 to 700), DM Mono (400 and 500).\n\nTHE STYLE\n- Surface: a desktop with a soft indigo to teal gradient wallpaper and two slow light blooms. On it, one app window (rounded, deep shadow) with a title bar, a sidebar and a main area. The whole UI is drawn in code, crisp and believable, for an invented app with an invented name. Never copy a real product’s UI, name or logo.\n- Type: DM Sans for all UI and titles (700 for headings and selected items, 400 to 500 for body), DM Mono in caps for tiny labels (WHEN, THEN, LIVE). Ink #14161c, muted #6a6f7c, one accent (#5b5bf6) for buttons, selection and the cursor ripple, green #1fb46e for live and success, yellow #ffd60a only for spotlight edges.\n- Cursor: a classic arrow that moves along eased waypoints (CURSOR keys), dips slightly on each click, and leaves an accent ripple. Every click has a visible result within 0.1 s: a pressed button, a selected row, an opened menu.\n- Camera: one continuous screen recording. Zoom in (1.2x to 1.6x) toward the area being used, hold, and ease back out to the full window between steps (CAM keys). The camera leads the cursor slightly.\n- Emphasis: a spotlight dims everything except a rounded cutout with a yellow edge around the one control that matters. Toasts, notifications and a side panel slide in to prove the result.\n- Chrome: a title card first (small mono tag, a big two-line title, a pill with the step count and time), a dark numbered step pill at the bottom left that swaps as each step starts, and a dark lower third with a green check at the end.\n- Flow: real UI behaviour in order: navigate, empty state, modal with choices, dropdown, continue, editor with connected nodes, typed fields, chips, a toggle that turns on, and the outcome happening (a new row, a message, a file).\n- Pace: 3 to 5 seconds per step, never more than one new action at a time, and a 1.5 second hold on the result.\n\nRULES THAT KEEP IT IN STYLE\n- 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.\n- 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.\n- It will be watched on phones: at 1280x720 keep the title card at 90 px or more, step callouts at 28 px, app text at 18 px or more (the camera zooms in on anything smaller), and the lower third at 40 px. Fill the frame.\n- Keep each frame fast, well under 50 ms.\n- Give my topic its own demo content; do not reuse the reference's story (\"Your first automation in an invented app called Flowdesk\") unless my content asks for it.\n\nSOUND\n- Bed: a warm, slow pad (padBed) with soft hats while the steps run, no kick. It drops away under the title card for a moment.\n- Map events to the kit: every cursor click gets \"click\"; modals, menus, nodes and chips get \"pop\" (higher pitch for smaller things); typing gets \"keys\"; every camera zoom in or out gets a soft pink-noise swell; step pills get a two-note chime that climbs a little with each step; the toggle gets a short bright swish; a toast or the result gets a chime; an incoming notification gets \"ping\"; panels sliding in get a soft \"whoosh\".\n- Voiceover mix: the player calls SFX.live with { voiceover: true } once narration is loaded, which keeps the pad low and plays anything marked soft at about 55%. Keep clicks at full level (they are the proof), mark camera whooshes and ticks soft: true, and keep chimes for the step pills and the final result only.\n- Sync is everything: the sound score reads the same TL times as the picture.\n\nIF YOU CAN RUN CODE\nRender 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.\n\nSTYLE CARD\nName: Software Walkthrough\nFamily: Screen and UI\nLook: A polished screen-recording tutorial built entirely in code: an app window on a soft gradient desktop, a real-feeling cursor with click ripples, a camera that zooms into what matters, yellow-edged spotlights, numbered step callouts and a calm pad underneath.\nHow it explains: It shows the clicks, not just the idea: a title card, then the cursor moves through the real flow while the camera follows it in and out, modals and menus open, fields get typed, toggles flip, and a dark step pill at the bottom left counts you through. It ends on the result actually happening and a short lower third.\n"
|
|
145
|
+
},
|
|
146
|
+
{
|
|
147
|
+
"id": "data-story",
|
|
148
|
+
"num": "05",
|
|
149
|
+
"name": "Data Story",
|
|
150
|
+
"family": "Data",
|
|
151
|
+
"look": "A calm, editorial data explainer: deep ink background, one warm accent per idea (coral, teal, sand), Archivo headlines, IBM Plex Mono numbers and labels, charts that draw themselves to scale, and the source always on screen.",
|
|
152
|
+
"how": "Numbers count up, then shrink into a label as the chart arrives. A line draws itself through the real data with dots popping at each milestone, the part that matters is re-traced in sand, bars grow one by one and get ringed, two cards set the key comparison side by side, and a plain-language takeaway lands with a sand pill.",
|
|
153
|
+
"fonts": "Archivo (500 to 800), IBM Plex Mono (500 and 600)",
|
|
154
|
+
"demo": "How we got to 8 billion people (UN World Population Prospects)",
|
|
155
|
+
"replace": "the data (POP, BILLIONS, YEARS_PER), TL, CUTS, the X and Y scales, the scene functions, SCENES, the source line text and scoreSound()",
|
|
156
|
+
"keep": "the ui-kit helpers (rr, track, rise, riseLine, pillBehind, composite, padBed), background(), tag(), cam(), popAt() (monotone curve), inverseYear(), the counter and the bar, card and pill drawing patterns",
|
|
157
|
+
"sizes": "keep headlines at 50 px or more, the takeaway at 80 px or more, key numbers at 100 px or more, and axis labels at 16 px or more",
|
|
158
|
+
"voLine": "A number starts counting as it is spoken and locks on its last syllable; a line reaches each milestone as that year or value is said; each bar grows as its label is named.",
|
|
159
|
+
"full": "- Full mix (no voiceover): keep the low pad with a soft pulse, at most about 3 sounds at once, and a short gap before the big comparison lands.",
|
|
160
|
+
"voMix": "- Voiceover mix: the player calls SFX.live with { voiceover: true } once narration is loaded, which keeps the pad low and plays anything marked soft at about 55%. Mark counter ticks and word ticks soft: true, keep the data plucks quiet and short, and keep \"boom\" for the single biggest number.",
|
|
161
|
+
"sheet": [
|
|
162
|
+
"Data first: use real, sourced numbers for my topic and plot them to scale (no invented values, no cropped axes that exaggerate). Put a short \"Source: ...\" line at the bottom left of every frame. If a figure is an estimate, say so in the narration or a label. If you cannot verify a number, ask me instead of guessing.",
|
|
163
|
+
"Surface: deep ink (#0f141c) with a faint coral glow top left and a faint teal glow bottom right, very subtle gridlines, and a vignette.",
|
|
164
|
+
"Type: Archivo 800 for headlines and big numbers, IBM Plex Mono for every label, axis value, unit and the source line, and a small coral mono tag in caps above each headline. Ink #eef1f5, muted #7d8796.",
|
|
165
|
+
"Color has meaning: one accent per idea. Coral for the main series, teal for supporting bars, sand (#f2c14e) for the one thing the viewer should remember. Never more than three colors on screen.",
|
|
166
|
+
"Charts: lines draw left to right with a glowing head and a soft area fill, using a monotone curve through the real points so it never overshoots; milestone dots pop as the line passes them; bars grow from the baseline one by one with their value counting up on top; the key bar or span gets a sand ring or a sand re-trace with a glow.",
|
|
167
|
+
"Numbers: big counters with thousands separators count up with an expo ease and lock; a comparison card pair shows two numbers side by side with a sand multiplier counting between them.",
|
|
168
|
+
"Scene changes: soft slide-ups and clean pushes (composite with CUTS). The first number can shrink into a chart label so the opening flows into the chart without a cut.",
|
|
169
|
+
"Takeaway: one plain sentence in Archivo with a sand pill behind the key phrase, then a single mono context line. Hold about 1.5 seconds."
|
|
170
|
+
],
|
|
171
|
+
"sound": [
|
|
172
|
+
"Bed: a low, thoughtful pad (padBed) with a soft pulse once the charts start; no big drums.",
|
|
173
|
+
"Map events to the kit: counters \"tick\" only when the shown number changes, rising in pitch; each data milestone the line passes gets a soft pluck that climbs a pentatonic scale; each bar gets a pluck whose pitch follows its height; rings and pills get a bright swipe; scene changes get \"whoosh\"; cards get \"pop\"; the single biggest number lands on \"boom\" with a bell note; the takeaway gets an open chord."
|
|
174
|
+
],
|
|
175
|
+
"sourceFile": "sources/data-story.html",
|
|
176
|
+
"promptFile": "prompts/data-story.md",
|
|
177
|
+
"sourceBytes": 48005,
|
|
178
|
+
"prompt": "I want an animated video in the \"Data Story\" 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.\n\nMY CONTENT\n[No topic yet. Ask me for my topic or script before building anything.]\n\nBUILD DIRECTLY\nSkip the storyboard and build the full animation now. Afterwards, list any facts or numbers you assumed.\n\nWHAT TO BUILD\nOne self-contained HTML file (an artifact if you can), built on the reference file below:\n- Keep the page, the player (play/pause, scrub, time, sound toggle, loop, Load voiceover) and the CM and SFX blocks unchanged.\n- Replace the demo's story: the data (POP, BILLIONS, YEARS_PER), TL, CUTS, the X and Y scales, the scene functions, SCENES, the source line text and scoreSound(). Keep and reuse the style's helpers (the ui-kit helpers (rr, track, rise, riseLine, pillBehind, composite, padBed), background(), tag(), cam(), popAt() (monotone curve), inverseYear(), the counter and the bar, card and pill drawing patterns).\n- Aim for 15 to 40 seconds unless my content needs more, and set the duration in TL.D.\n- Keep window.seek(t), window.DURATION, window.scoreSound and window.SFX exposed, so the video can be rendered frame by frame.\n- Load the style's fonts before the first draw, as the reference does: Archivo (500 to 800), IBM Plex Mono (500 and 600).\n\nTHE STYLE\n- Data first: use real, sourced numbers for my topic and plot them to scale (no invented values, no cropped axes that exaggerate). Put a short \"Source: ...\" line at the bottom left of every frame. If a figure is an estimate, say so in the narration or a label. If you cannot verify a number, ask me instead of guessing.\n- Surface: deep ink (#0f141c) with a faint coral glow top left and a faint teal glow bottom right, very subtle gridlines, and a vignette.\n- Type: Archivo 800 for headlines and big numbers, IBM Plex Mono for every label, axis value, unit and the source line, and a small coral mono tag in caps above each headline. Ink #eef1f5, muted #7d8796.\n- Color has meaning: one accent per idea. Coral for the main series, teal for supporting bars, sand (#f2c14e) for the one thing the viewer should remember. Never more than three colors on screen.\n- Charts: lines draw left to right with a glowing head and a soft area fill, using a monotone curve through the real points so it never overshoots; milestone dots pop as the line passes them; bars grow from the baseline one by one with their value counting up on top; the key bar or span gets a sand ring or a sand re-trace with a glow.\n- Numbers: big counters with thousands separators count up with an expo ease and lock; a comparison card pair shows two numbers side by side with a sand multiplier counting between them.\n- Scene changes: soft slide-ups and clean pushes (composite with CUTS). The first number can shrink into a chart label so the opening flows into the chart without a cut.\n- Takeaway: one plain sentence in Archivo with a sand pill behind the key phrase, then a single mono context line. Hold about 1.5 seconds.\n\nRULES THAT KEEP IT IN STYLE\n- 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.\n- 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.\n- It will be watched on phones: at 1280x720 keep headlines at 50 px or more, the takeaway at 80 px or more, key numbers at 100 px or more, and axis labels at 16 px or more. Fill the frame.\n- Keep each frame fast, well under 50 ms.\n- Give my topic its own demo content; do not reuse the reference's story (\"How we got to 8 billion people (UN World Population Prospects)\") unless my content asks for it.\n\nSOUND\n- Bed: a low, thoughtful pad (padBed) with a soft pulse once the charts start; no big drums.\n- Map events to the kit: counters \"tick\" only when the shown number changes, rising in pitch; each data milestone the line passes gets a soft pluck that climbs a pentatonic scale; each bar gets a pluck whose pitch follows its height; rings and pills get a bright swipe; scene changes get \"whoosh\"; cards get \"pop\"; the single biggest number lands on \"boom\" with a bell note; the takeaway gets an open chord.\n- Full mix (no voiceover): keep the low pad with a soft pulse, at most about 3 sounds at once, and a short gap before the big comparison lands.\n- Sync is everything: the sound score reads the same TL times as the picture.\n\nIF YOU CAN RUN CODE\nRender 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.\n\nSTYLE CARD\nName: Data Story\nFamily: Data\nLook: A calm, editorial data explainer: deep ink background, one warm accent per idea (coral, teal, sand), Archivo headlines, IBM Plex Mono numbers and labels, charts that draw themselves to scale, and the source always on screen.\nHow it explains: Numbers count up, then shrink into a label as the chart arrives. A line draws itself through the real data with dots popping at each milestone, the part that matters is re-traced in sand, bars grow one by one and get ringed, two cards set the key comparison side by side, and a plain-language takeaway lands with a sand pill.\n",
|
|
179
|
+
"promptVo": "I want an animated video in the \"Data Story\" 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.\n\nMY CONTENT\n[No topic yet. Ask me for my topic or script before building anything.]\n\nVOICEOVER TIMING\n[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.]\n\nHow to use the timing:\n- 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.\n- Set the duration to the last word's end plus about 1.2 seconds.\n- Build the timeline (TL) from these times. A number starts counting as it is spoken and locks on its last syllable; a line reaches each milestone as that year or value is said; each bar grows as its label is named.\n- 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.\n- Put the emphasis moves on stressed words. A counter lands at the exact moment its number is spoken.\n- Keep the player's \"Load voiceover\" button working so I can drop in my audio and hear it in sync.\n\nSTORYBOARD FIRST\nBefore building, show me a storyboard and wait for my OK:\n- 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.\n- 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.\n- Below the grid, list any facts or numbers you had to assume.\nWhen I approve it (or after my changes), build the full animation and reuse the storyboard's drawing code.\n\nWHAT TO BUILD\nOne self-contained HTML file (an artifact if you can), built on the reference file below:\n- Keep the page, the player (play/pause, scrub, time, sound toggle, loop, Load voiceover) and the CM and SFX blocks unchanged.\n- Replace the demo's story: the data (POP, BILLIONS, YEARS_PER), TL, CUTS, the X and Y scales, the scene functions, SCENES, the source line text and scoreSound(). Keep and reuse the style's helpers (the ui-kit helpers (rr, track, rise, riseLine, pillBehind, composite, padBed), background(), tag(), cam(), popAt() (monotone curve), inverseYear(), the counter and the bar, card and pill drawing patterns).\n- Aim for 15 to 40 seconds unless my content needs more, and set the duration in TL.D.\n- Keep window.seek(t), window.DURATION, window.scoreSound and window.SFX exposed, so the video can be rendered frame by frame.\n- Load the style's fonts before the first draw, as the reference does: Archivo (500 to 800), IBM Plex Mono (500 and 600).\n\nTHE STYLE\n- Data first: use real, sourced numbers for my topic and plot them to scale (no invented values, no cropped axes that exaggerate). Put a short \"Source: ...\" line at the bottom left of every frame. If a figure is an estimate, say so in the narration or a label. If you cannot verify a number, ask me instead of guessing.\n- Surface: deep ink (#0f141c) with a faint coral glow top left and a faint teal glow bottom right, very subtle gridlines, and a vignette.\n- Type: Archivo 800 for headlines and big numbers, IBM Plex Mono for every label, axis value, unit and the source line, and a small coral mono tag in caps above each headline. Ink #eef1f5, muted #7d8796.\n- Color has meaning: one accent per idea. Coral for the main series, teal for supporting bars, sand (#f2c14e) for the one thing the viewer should remember. Never more than three colors on screen.\n- Charts: lines draw left to right with a glowing head and a soft area fill, using a monotone curve through the real points so it never overshoots; milestone dots pop as the line passes them; bars grow from the baseline one by one with their value counting up on top; the key bar or span gets a sand ring or a sand re-trace with a glow.\n- Numbers: big counters with thousands separators count up with an expo ease and lock; a comparison card pair shows two numbers side by side with a sand multiplier counting between them.\n- Scene changes: soft slide-ups and clean pushes (composite with CUTS). The first number can shrink into a chart label so the opening flows into the chart without a cut.\n- Takeaway: one plain sentence in Archivo with a sand pill behind the key phrase, then a single mono context line. Hold about 1.5 seconds.\n\nRULES THAT KEEP IT IN STYLE\n- 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.\n- 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.\n- It will be watched on phones: at 1280x720 keep headlines at 50 px or more, the takeaway at 80 px or more, key numbers at 100 px or more, and axis labels at 16 px or more. Fill the frame.\n- Keep each frame fast, well under 50 ms.\n- Give my topic its own demo content; do not reuse the reference's story (\"How we got to 8 billion people (UN World Population Prospects)\") unless my content asks for it.\n\nSOUND\n- Bed: a low, thoughtful pad (padBed) with a soft pulse once the charts start; no big drums.\n- Map events to the kit: counters \"tick\" only when the shown number changes, rising in pitch; each data milestone the line passes gets a soft pluck that climbs a pentatonic scale; each bar gets a pluck whose pitch follows its height; rings and pills get a bright swipe; scene changes get \"whoosh\"; cards get \"pop\"; the single biggest number lands on \"boom\" with a bell note; the takeaway gets an open chord.\n- Voiceover mix: the player calls SFX.live with { voiceover: true } once narration is loaded, which keeps the pad low and plays anything marked soft at about 55%. Mark counter ticks and word ticks soft: true, keep the data plucks quiet and short, and keep \"boom\" for the single biggest number.\n- Sync is everything: the sound score reads the same TL times as the picture.\n\nIF YOU CAN RUN CODE\nRender 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.\n\nSTYLE CARD\nName: Data Story\nFamily: Data\nLook: A calm, editorial data explainer: deep ink background, one warm accent per idea (coral, teal, sand), Archivo headlines, IBM Plex Mono numbers and labels, charts that draw themselves to scale, and the source always on screen.\nHow it explains: Numbers count up, then shrink into a label as the chart arrives. A line draws itself through the real data with dots popping at each milestone, the part that matters is re-traced in sand, bars grow one by one and get ringed, two cards set the key comparison side by side, and a plain-language takeaway lands with a sand pill.\n"
|
|
180
|
+
},
|
|
181
|
+
{
|
|
182
|
+
"id": "warm-canvas",
|
|
183
|
+
"num": "06",
|
|
184
|
+
"name": "Warm Canvas",
|
|
185
|
+
"family": "Talking Head",
|
|
186
|
+
"look": "A calm, editorial creator edit built around your own footage: full-frame talking head with a few clean serif captions, then a warm off-white canvas with a soft swoosh where white cards explain the idea while you shrink into a rounded picture-in-picture. Fraunces headlines in ink and sky blue, quiet Inter UI text, pastel chips.",
|
|
187
|
+
"how": "Two modes and nothing else. On the A-roll, one or two captions fade up word by word with the key words in blue and small side chips slide in. On the canvas, a title chip lands, then one idea per beat: two cards with a dashed arrow, a comparison table whose numbers count up, a planner window where the bad blocks get flagged and removed, and three takeaway pills. Chapter cards push in vertically.",
|
|
188
|
+
"fonts": "Fraunces (500 to 700) and Inter (500 to 700)",
|
|
189
|
+
"demo": "Can AI really plan my week?",
|
|
190
|
+
"replace": "TL, CUTS, PUNCH (the jump-cut zooms inside the A-roll), the chapter card titles, the caption words, the side chips, the scene functions, SCENES and scoreSound()",
|
|
191
|
+
"keep": "the palette C, SERIF and SANS, PIP and COLX, toneText(), shadowCard(), tag(), enter(), fadeOut(), the icon set, canvasBG(), the A-roll stand-in and fullARoll(), caption(), titleChip(), sideChip(), chapterCard(), the card, table and planner drawing patterns, the vertical push compositor, and the Load A-roll button with window.loadARoll()",
|
|
192
|
+
"sizes": "keep headlines and chapter titles at 52 px or more, captions at 60 px or more, card titles at 28 px or more, and UI labels at 14 px or more",
|
|
193
|
+
"voLine": "Each caption word fades up as it is spoken, key words in blue on their stressed syllable; a card, chip or pill lands as its idea is named; a counter locks on its last spoken syllable; the PiP shrink and the canvas arrive on the first word of a new idea, and the A-roll returns as the speaker gets personal again.",
|
|
194
|
+
"full": "- Full mix (no voiceover): no music bed beyond the one quiet pad under the canvas, at most 2 sounds at once, and plenty of air between them.",
|
|
195
|
+
"voMix": "- Voiceover mix: the player calls SFX.live with { voiceover: true } once narration is loaded, which keeps the pad low and plays anything marked soft at about 55%. Mark slides, taps and keys soft: true, keep the swells for the vertical pushes only, and never put a sound on top of a stressed word.",
|
|
196
|
+
"sheet": [
|
|
197
|
+
"Built for my own footage (A-roll): the speaker is the star and the graphics only explain. Keep the \"Load A-roll\" button and window.loadARoll(url) working so I can drop in my clip and see it in sync; until then the defocused stand-in shows where I sit in frame. If I give you my recording, time everything to it.",
|
|
198
|
+
"Two modes only. Mode 1: full-frame A-roll with at most one centered caption (white Fraunces 600 with a soft shadow, key words in sky blue #4f9cf0) and small white side chips with an icon and a two-line label. Mode 2: the warm canvas (#f7f5f4 with one big soft swoosh #ebe6e2), the speaker in a rounded 272x384 picture-in-picture at the right with a thin blue ring, and the content centered in the left column (COLX).",
|
|
199
|
+
"Type: Fraunces 600 for headlines, captions and card titles, tracked -2%, in two tones (ink #111111 plus sky blue for the key phrase). Inter 500 to 600 for UI labels, tags and small text in #2b2826 and #8f8a87. Title case for headlines.",
|
|
200
|
+
"Cards: white, radius 20, a very soft warm shadow, pastel tinted tags (blue, purple, green, yellow tints) and simple code-drawn icons. Never more than one window or two cards on the canvas at once.",
|
|
201
|
+
"One idea per beat: a title chip at the top of the column, then the explanation (cards with a dashed arrow, a table, a mock app window, or three takeaway pills). Each beat clears before the next arrives.",
|
|
202
|
+
"Motion is gentle: fades with a small rise (enter), soft counters, cards that slide together, never a bounce or a shake. Chapter cards (a blue number tile, a two-tone title and a progress dash row) push in and out vertically. Everything else is a clean cut.",
|
|
203
|
+
"Show me 2 to 4 beats on the canvas between A-roll moments, and come back to the full-frame A-roll for the personal lines."
|
|
204
|
+
],
|
|
205
|
+
"sound": [
|
|
206
|
+
"Quiet and tactile, built to sit under a real voice: soft paper slides (pink noise through a rising bandpass) for chips, cards and title chips, low wooden taps for list items, pills and table rows, a light keyboard patter for counters, a breathy swell for each vertical push, and one quiet pad under the canvas section.",
|
|
207
|
+
"No chimes, bells, pings, sparkles or risers, and no music beat. Never more than 2 sounds at once."
|
|
208
|
+
],
|
|
209
|
+
"sourceFile": "sources/warm-canvas.html",
|
|
210
|
+
"promptFile": "prompts/warm-canvas.md",
|
|
211
|
+
"sourceBytes": 65938,
|
|
212
|
+
"prompt": "I want an animated video in the \"Warm Canvas\" style (Talking Head) 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.\n\nMY CONTENT\n[No topic yet. Ask me for my topic or script before building anything.]\n\nBUILD DIRECTLY\nSkip the storyboard and build the full animation now. Afterwards, list any facts or numbers you assumed.\n\nWHAT TO BUILD\nOne self-contained HTML file (an artifact if you can), built on the reference file below:\n- Keep the page, the player (play/pause, scrub, time, sound toggle, loop, Load voiceover) and the CM and SFX blocks unchanged.\n- Replace the demo's story: TL, CUTS, PUNCH (the jump-cut zooms inside the A-roll), the chapter card titles, the caption words, the side chips, the scene functions, SCENES and scoreSound(). Keep and reuse the style's helpers (the palette C, SERIF and SANS, PIP and COLX, toneText(), shadowCard(), tag(), enter(), fadeOut(), the icon set, canvasBG(), the A-roll stand-in and fullARoll(), caption(), titleChip(), sideChip(), chapterCard(), the card, table and planner drawing patterns, the vertical push compositor, and the Load A-roll button with window.loadARoll()).\n- Aim for 15 to 40 seconds unless my content needs more, and set the duration in TL.D.\n- Keep window.seek(t), window.DURATION, window.scoreSound and window.SFX exposed, so the video can be rendered frame by frame.\n- Load the style's fonts before the first draw, as the reference does: Fraunces (500 to 700) and Inter (500 to 700).\n\nTHE STYLE\n- Built for my own footage (A-roll): the speaker is the star and the graphics only explain. Keep the \"Load A-roll\" button and window.loadARoll(url) working so I can drop in my clip and see it in sync; until then the defocused stand-in shows where I sit in frame. If I give you my recording, time everything to it.\n- Two modes only. Mode 1: full-frame A-roll with at most one centered caption (white Fraunces 600 with a soft shadow, key words in sky blue #4f9cf0) and small white side chips with an icon and a two-line label. Mode 2: the warm canvas (#f7f5f4 with one big soft swoosh #ebe6e2), the speaker in a rounded 272x384 picture-in-picture at the right with a thin blue ring, and the content centered in the left column (COLX).\n- Type: Fraunces 600 for headlines, captions and card titles, tracked -2%, in two tones (ink #111111 plus sky blue for the key phrase). Inter 500 to 600 for UI labels, tags and small text in #2b2826 and #8f8a87. Title case for headlines.\n- Cards: white, radius 20, a very soft warm shadow, pastel tinted tags (blue, purple, green, yellow tints) and simple code-drawn icons. Never more than one window or two cards on the canvas at once.\n- One idea per beat: a title chip at the top of the column, then the explanation (cards with a dashed arrow, a table, a mock app window, or three takeaway pills). Each beat clears before the next arrives.\n- Motion is gentle: fades with a small rise (enter), soft counters, cards that slide together, never a bounce or a shake. Chapter cards (a blue number tile, a two-tone title and a progress dash row) push in and out vertically. Everything else is a clean cut.\n- Show me 2 to 4 beats on the canvas between A-roll moments, and come back to the full-frame A-roll for the personal lines.\n\nRULES THAT KEEP IT IN STYLE\n- 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.\n- 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.\n- It will be watched on phones: at 1280x720 keep headlines and chapter titles at 52 px or more, captions at 60 px or more, card titles at 28 px or more, and UI labels at 14 px or more. Fill the frame.\n- Keep each frame fast, well under 50 ms.\n- Give my topic its own demo content; do not reuse the reference's story (\"Can AI really plan my week?\") unless my content asks for it.\n\nSOUND\n- Quiet and tactile, built to sit under a real voice: soft paper slides (pink noise through a rising bandpass) for chips, cards and title chips, low wooden taps for list items, pills and table rows, a light keyboard patter for counters, a breathy swell for each vertical push, and one quiet pad under the canvas section.\n- No chimes, bells, pings, sparkles or risers, and no music beat. Never more than 2 sounds at once.\n- Full mix (no voiceover): no music bed beyond the one quiet pad under the canvas, at most 2 sounds at once, and plenty of air between them.\n- Sync is everything: the sound score reads the same TL times as the picture.\n\nIF YOU CAN RUN CODE\nRender 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.\n\nSTYLE CARD\nName: Warm Canvas\nFamily: Talking Head\nLook: A calm, editorial creator edit built around your own footage: full-frame talking head with a few clean serif captions, then a warm off-white canvas with a soft swoosh where white cards explain the idea while you shrink into a rounded picture-in-picture. Fraunces headlines in ink and sky blue, quiet Inter UI text, pastel chips.\nHow it explains: Two modes and nothing else. On the A-roll, one or two captions fade up word by word with the key words in blue and small side chips slide in. On the canvas, a title chip lands, then one idea per beat: two cards with a dashed arrow, a comparison table whose numbers count up, a planner window where the bad blocks get flagged and removed, and three takeaway pills. Chapter cards push in vertically.\n",
|
|
213
|
+
"promptVo": "I want an animated video in the \"Warm Canvas\" style (Talking Head) 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.\n\nMY CONTENT\n[No topic yet. Ask me for my topic or script before building anything.]\n\nVOICEOVER TIMING\n[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.]\n\nHow to use the timing:\n- 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.\n- Set the duration to the last word's end plus about 1.2 seconds.\n- Build the timeline (TL) from these times. Each caption word fades up as it is spoken, key words in blue on their stressed syllable; a card, chip or pill lands as its idea is named; a counter locks on its last spoken syllable; the PiP shrink and the canvas arrive on the first word of a new idea, and the A-roll returns as the speaker gets personal again.\n- 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.\n- Put the emphasis moves on stressed words. A counter lands at the exact moment its number is spoken.\n- Keep the player's \"Load voiceover\" button working so I can drop in my audio and hear it in sync.\n\nSTORYBOARD FIRST\nBefore building, show me a storyboard and wait for my OK:\n- 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.\n- 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.\n- Below the grid, list any facts or numbers you had to assume.\nWhen I approve it (or after my changes), build the full animation and reuse the storyboard's drawing code.\n\nWHAT TO BUILD\nOne self-contained HTML file (an artifact if you can), built on the reference file below:\n- Keep the page, the player (play/pause, scrub, time, sound toggle, loop, Load voiceover) and the CM and SFX blocks unchanged.\n- Replace the demo's story: TL, CUTS, PUNCH (the jump-cut zooms inside the A-roll), the chapter card titles, the caption words, the side chips, the scene functions, SCENES and scoreSound(). Keep and reuse the style's helpers (the palette C, SERIF and SANS, PIP and COLX, toneText(), shadowCard(), tag(), enter(), fadeOut(), the icon set, canvasBG(), the A-roll stand-in and fullARoll(), caption(), titleChip(), sideChip(), chapterCard(), the card, table and planner drawing patterns, the vertical push compositor, and the Load A-roll button with window.loadARoll()).\n- Aim for 15 to 40 seconds unless my content needs more, and set the duration in TL.D.\n- Keep window.seek(t), window.DURATION, window.scoreSound and window.SFX exposed, so the video can be rendered frame by frame.\n- Load the style's fonts before the first draw, as the reference does: Fraunces (500 to 700) and Inter (500 to 700).\n\nTHE STYLE\n- Built for my own footage (A-roll): the speaker is the star and the graphics only explain. Keep the \"Load A-roll\" button and window.loadARoll(url) working so I can drop in my clip and see it in sync; until then the defocused stand-in shows where I sit in frame. If I give you my recording, time everything to it.\n- Two modes only. Mode 1: full-frame A-roll with at most one centered caption (white Fraunces 600 with a soft shadow, key words in sky blue #4f9cf0) and small white side chips with an icon and a two-line label. Mode 2: the warm canvas (#f7f5f4 with one big soft swoosh #ebe6e2), the speaker in a rounded 272x384 picture-in-picture at the right with a thin blue ring, and the content centered in the left column (COLX).\n- Type: Fraunces 600 for headlines, captions and card titles, tracked -2%, in two tones (ink #111111 plus sky blue for the key phrase). Inter 500 to 600 for UI labels, tags and small text in #2b2826 and #8f8a87. Title case for headlines.\n- Cards: white, radius 20, a very soft warm shadow, pastel tinted tags (blue, purple, green, yellow tints) and simple code-drawn icons. Never more than one window or two cards on the canvas at once.\n- One idea per beat: a title chip at the top of the column, then the explanation (cards with a dashed arrow, a table, a mock app window, or three takeaway pills). Each beat clears before the next arrives.\n- Motion is gentle: fades with a small rise (enter), soft counters, cards that slide together, never a bounce or a shake. Chapter cards (a blue number tile, a two-tone title and a progress dash row) push in and out vertically. Everything else is a clean cut.\n- Show me 2 to 4 beats on the canvas between A-roll moments, and come back to the full-frame A-roll for the personal lines.\n\nRULES THAT KEEP IT IN STYLE\n- 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.\n- 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.\n- It will be watched on phones: at 1280x720 keep headlines and chapter titles at 52 px or more, captions at 60 px or more, card titles at 28 px or more, and UI labels at 14 px or more. Fill the frame.\n- Keep each frame fast, well under 50 ms.\n- Give my topic its own demo content; do not reuse the reference's story (\"Can AI really plan my week?\") unless my content asks for it.\n\nSOUND\n- Quiet and tactile, built to sit under a real voice: soft paper slides (pink noise through a rising bandpass) for chips, cards and title chips, low wooden taps for list items, pills and table rows, a light keyboard patter for counters, a breathy swell for each vertical push, and one quiet pad under the canvas section.\n- No chimes, bells, pings, sparkles or risers, and no music beat. Never more than 2 sounds at once.\n- Voiceover mix: the player calls SFX.live with { voiceover: true } once narration is loaded, which keeps the pad low and plays anything marked soft at about 55%. Mark slides, taps and keys soft: true, keep the swells for the vertical pushes only, and never put a sound on top of a stressed word.\n- Sync is everything: the sound score reads the same TL times as the picture.\n\nIF YOU CAN RUN CODE\nRender 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.\n\nSTYLE CARD\nName: Warm Canvas\nFamily: Talking Head\nLook: A calm, editorial creator edit built around your own footage: full-frame talking head with a few clean serif captions, then a warm off-white canvas with a soft swoosh where white cards explain the idea while you shrink into a rounded picture-in-picture. Fraunces headlines in ink and sky blue, quiet Inter UI text, pastel chips.\nHow it explains: Two modes and nothing else. On the A-roll, one or two captions fade up word by word with the key words in blue and small side chips slide in. On the canvas, a title chip lands, then one idea per beat: two cards with a dashed arrow, a comparison table whose numbers count up, a planner window where the bad blocks get flagged and removed, and three takeaway pills. Chapter cards push in vertically.\n"
|
|
214
|
+
},
|
|
215
|
+
{
|
|
216
|
+
"id": "pop-info",
|
|
217
|
+
"num": "07",
|
|
218
|
+
"name": "Pop Info",
|
|
219
|
+
"family": "Illustrated",
|
|
220
|
+
"look": "A flat-vector animated infographic, drawn entirely in code: a cosy cartoon scene (here a grocery aisle in soft perspective), one small character with a big feeling, a teal thought bubble that carries the idea, a counter, a dotted path and an iris wipe in and out. Muted room colours, warm product colours, rounded Fredoka type.",
|
|
221
|
+
"how": "The scene builds itself: an iris opens, shelves slide in from both sides, the character pops up and reacts (annoyed, looking, sighing). The idea appears as a bubble with a friendly mascot, a number counts up inside it with a little tag, a dotted path draws through the scene to a pin, and the camera slowly pushes toward the point of interest. An iris closes on the takeaway.",
|
|
222
|
+
"fonts": "Fredoka (500 to 700)",
|
|
223
|
+
"demo": "Why is the milk always at the back of the store?",
|
|
224
|
+
"replace": "TL, the scene (drawRoom, drawShelf and the product layout ROWS, or a new setting for my topic), the character (drawShopper) and its reactions, the bubble contents (drawBubble: mascot, counter and tag), drawPath, the camera move in renderAt and scoreSound()",
|
|
225
|
+
"keep": "the 680 x 383 design space with renderAt() scaling it to the canvas, prog(), popS(), wobble(), blink(), the easings, rr(), the dust layer, the iris wipe (drawWipe), the parallax split between background and foreground, and the explainer() compositor",
|
|
226
|
+
"sizes": "in the 680 x 383 design space keep the main number at 21 px or more, labels at 11 px or more and any title at 26 px or more (that is about 40, 21 and 50 px at 1280x720), and keep the character and the bubble large",
|
|
227
|
+
"voLine": "The character reacts on the word that carries the feeling; the bubble pops in as the idea is introduced; the counter starts as the number is spoken and locks on its last syllable; the path draws while the journey is described and the pin drops on the destination.",
|
|
228
|
+
"full": "- Full mix (no voiceover): a light, friendly music bed (k.music at a low gain), at most about 3 sounds at once, and a short quiet moment before the pin or the payoff lands.",
|
|
229
|
+
"voMix": "- Voiceover mix: the player calls SFX.live with { voiceover: true } once narration is loaded, which keeps the music low and plays anything marked soft at about 55%. Mark taps, counter ticks and path dots soft: true and keep pops for the bubble, the tag and the pin.",
|
|
230
|
+
"sheet": [
|
|
231
|
+
"Everything is original flat vector art drawn with canvas paths: no images, no outlines, simple rounded shapes, one flat shadow tone per object, soft highlights, and a few drifting dust specks for life. Invent the setting and characters for my topic; never copy a real brand, logo, mascot or packaging.",
|
|
232
|
+
"Draw in the 680 x 383 design space and let renderAt() scale it, so the art stays crisp at any size. Keep shapes big and readable on a phone.",
|
|
233
|
+
"Palette: a muted, desaturated room (sage wall #D7DCCB, warm floor #C4B79D), warm accent objects (#E07A5F, #F2CC8F, #81B29A, #6C9BB8), deep teal #2F6F73 for the idea bubble, coral #E85D4A for alerts and signs, and sunny yellow #FFD86B for tags, the iris ring and sparkles. Text is white or dark teal.",
|
|
234
|
+
"One character with a strong, simple emotion (eyebrows, mouth, blinks, a sweat drop, a sigh) is the emotional anchor. It sits in the foreground with gentle parallax while the camera pushes the background.",
|
|
235
|
+
"The idea lives in a bubble: a friendly mascot or icon, a number that counts up with an eased curve, and a small pill tag. Numbers must be real or clearly framed as an example; if you cannot verify one, ask me.",
|
|
236
|
+
"Motion is springy and playful: things pop in with a back-eased scale (popS), settle with a decaying wobble, the scene slides in from the sides, a dotted path draws itself and a pin drops, and the camera does one slow push. Open and close with the teal iris wipe with a yellow ring.",
|
|
237
|
+
"Keep it to one scene per idea, with clear staging: setting, character reaction, the idea in the bubble, the visual proof (path, arrow or chart), then the iris closes."
|
|
238
|
+
],
|
|
239
|
+
"sound": [
|
|
240
|
+
"Soft, toy-like and sparse: rounded pops for the bubble, tags and pin, little sine bloops for character reactions, wooden taps for landings, counter steps and path dots (thinning out as the counter lands), airy whooshes for the iris and the slides, and one breathy sigh.",
|
|
241
|
+
"No chimes, bells, pings or sparkle sounds, even for winks and sparkles on screen. The cartoon carries the charm; the sound only gives it weight."
|
|
242
|
+
],
|
|
243
|
+
"sourceFile": "sources/pop-info.html",
|
|
244
|
+
"promptFile": "prompts/pop-info.md",
|
|
245
|
+
"sourceBytes": 48814,
|
|
246
|
+
"prompt": "I want an animated video in the \"Pop Info\" style (Illustrated) 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.\n\nMY CONTENT\n[No topic yet. Ask me for my topic or script before building anything.]\n\nBUILD DIRECTLY\nSkip the storyboard and build the full animation now. Afterwards, list any facts or numbers you assumed.\n\nWHAT TO BUILD\nOne self-contained HTML file (an artifact if you can), built on the reference file below:\n- Keep the page, the player (play/pause, scrub, time, sound toggle, loop, Load voiceover) and the CM and SFX blocks unchanged.\n- Replace the demo's story: TL, the scene (drawRoom, drawShelf and the product layout ROWS, or a new setting for my topic), the character (drawShopper) and its reactions, the bubble contents (drawBubble: mascot, counter and tag), drawPath, the camera move in renderAt and scoreSound(). Keep and reuse the style's helpers (the 680 x 383 design space with renderAt() scaling it to the canvas, prog(), popS(), wobble(), blink(), the easings, rr(), the dust layer, the iris wipe (drawWipe), the parallax split between background and foreground, and the explainer() compositor).\n- Aim for 15 to 40 seconds unless my content needs more, and set the duration in TL.D.\n- Keep window.seek(t), window.DURATION, window.scoreSound and window.SFX exposed, so the video can be rendered frame by frame.\n- Load the style's fonts before the first draw, as the reference does: Fredoka (500 to 700).\n\nTHE STYLE\n- Everything is original flat vector art drawn with canvas paths: no images, no outlines, simple rounded shapes, one flat shadow tone per object, soft highlights, and a few drifting dust specks for life. Invent the setting and characters for my topic; never copy a real brand, logo, mascot or packaging.\n- Draw in the 680 x 383 design space and let renderAt() scale it, so the art stays crisp at any size. Keep shapes big and readable on a phone.\n- Palette: a muted, desaturated room (sage wall #D7DCCB, warm floor #C4B79D), warm accent objects (#E07A5F, #F2CC8F, #81B29A, #6C9BB8), deep teal #2F6F73 for the idea bubble, coral #E85D4A for alerts and signs, and sunny yellow #FFD86B for tags, the iris ring and sparkles. Text is white or dark teal.\n- One character with a strong, simple emotion (eyebrows, mouth, blinks, a sweat drop, a sigh) is the emotional anchor. It sits in the foreground with gentle parallax while the camera pushes the background.\n- The idea lives in a bubble: a friendly mascot or icon, a number that counts up with an eased curve, and a small pill tag. Numbers must be real or clearly framed as an example; if you cannot verify one, ask me.\n- Motion is springy and playful: things pop in with a back-eased scale (popS), settle with a decaying wobble, the scene slides in from the sides, a dotted path draws itself and a pin drops, and the camera does one slow push. Open and close with the teal iris wipe with a yellow ring.\n- Keep it to one scene per idea, with clear staging: setting, character reaction, the idea in the bubble, the visual proof (path, arrow or chart), then the iris closes.\n\nRULES THAT KEEP IT IN STYLE\n- 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.\n- 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.\n- It will be watched on phones: at 1280x720 in the 680 x 383 design space keep the main number at 21 px or more, labels at 11 px or more and any title at 26 px or more (that is about 40, 21 and 50 px at 1280x720), and keep the character and the bubble large. Fill the frame.\n- Keep each frame fast, well under 50 ms.\n- Give my topic its own demo content; do not reuse the reference's story (\"Why is the milk always at the back of the store?\") unless my content asks for it.\n\nSOUND\n- Soft, toy-like and sparse: rounded pops for the bubble, tags and pin, little sine bloops for character reactions, wooden taps for landings, counter steps and path dots (thinning out as the counter lands), airy whooshes for the iris and the slides, and one breathy sigh.\n- No chimes, bells, pings or sparkle sounds, even for winks and sparkles on screen. The cartoon carries the charm; the sound only gives it weight.\n- Full mix (no voiceover): a light, friendly music bed (k.music at a low gain), at most about 3 sounds at once, and a short quiet moment before the pin or the payoff lands.\n- Sync is everything: the sound score reads the same TL times as the picture.\n\nIF YOU CAN RUN CODE\nRender 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.\n\nSTYLE CARD\nName: Pop Info\nFamily: Illustrated\nLook: A flat-vector animated infographic, drawn entirely in code: a cosy cartoon scene (here a grocery aisle in soft perspective), one small character with a big feeling, a teal thought bubble that carries the idea, a counter, a dotted path and an iris wipe in and out. Muted room colours, warm product colours, rounded Fredoka type.\nHow it explains: The scene builds itself: an iris opens, shelves slide in from both sides, the character pops up and reacts (annoyed, looking, sighing). The idea appears as a bubble with a friendly mascot, a number counts up inside it with a little tag, a dotted path draws through the scene to a pin, and the camera slowly pushes toward the point of interest. An iris closes on the takeaway.\n",
|
|
247
|
+
"promptVo": "I want an animated video in the \"Pop Info\" style (Illustrated) 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.\n\nMY CONTENT\n[No topic yet. Ask me for my topic or script before building anything.]\n\nVOICEOVER TIMING\n[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.]\n\nHow to use the timing:\n- 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.\n- Set the duration to the last word's end plus about 1.2 seconds.\n- Build the timeline (TL) from these times. The character reacts on the word that carries the feeling; the bubble pops in as the idea is introduced; the counter starts as the number is spoken and locks on its last syllable; the path draws while the journey is described and the pin drops on the destination.\n- 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.\n- Put the emphasis moves on stressed words. A counter lands at the exact moment its number is spoken.\n- Keep the player's \"Load voiceover\" button working so I can drop in my audio and hear it in sync.\n\nSTORYBOARD FIRST\nBefore building, show me a storyboard and wait for my OK:\n- 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.\n- 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.\n- Below the grid, list any facts or numbers you had to assume.\nWhen I approve it (or after my changes), build the full animation and reuse the storyboard's drawing code.\n\nWHAT TO BUILD\nOne self-contained HTML file (an artifact if you can), built on the reference file below:\n- Keep the page, the player (play/pause, scrub, time, sound toggle, loop, Load voiceover) and the CM and SFX blocks unchanged.\n- Replace the demo's story: TL, the scene (drawRoom, drawShelf and the product layout ROWS, or a new setting for my topic), the character (drawShopper) and its reactions, the bubble contents (drawBubble: mascot, counter and tag), drawPath, the camera move in renderAt and scoreSound(). Keep and reuse the style's helpers (the 680 x 383 design space with renderAt() scaling it to the canvas, prog(), popS(), wobble(), blink(), the easings, rr(), the dust layer, the iris wipe (drawWipe), the parallax split between background and foreground, and the explainer() compositor).\n- Aim for 15 to 40 seconds unless my content needs more, and set the duration in TL.D.\n- Keep window.seek(t), window.DURATION, window.scoreSound and window.SFX exposed, so the video can be rendered frame by frame.\n- Load the style's fonts before the first draw, as the reference does: Fredoka (500 to 700).\n\nTHE STYLE\n- Everything is original flat vector art drawn with canvas paths: no images, no outlines, simple rounded shapes, one flat shadow tone per object, soft highlights, and a few drifting dust specks for life. Invent the setting and characters for my topic; never copy a real brand, logo, mascot or packaging.\n- Draw in the 680 x 383 design space and let renderAt() scale it, so the art stays crisp at any size. Keep shapes big and readable on a phone.\n- Palette: a muted, desaturated room (sage wall #D7DCCB, warm floor #C4B79D), warm accent objects (#E07A5F, #F2CC8F, #81B29A, #6C9BB8), deep teal #2F6F73 for the idea bubble, coral #E85D4A for alerts and signs, and sunny yellow #FFD86B for tags, the iris ring and sparkles. Text is white or dark teal.\n- One character with a strong, simple emotion (eyebrows, mouth, blinks, a sweat drop, a sigh) is the emotional anchor. It sits in the foreground with gentle parallax while the camera pushes the background.\n- The idea lives in a bubble: a friendly mascot or icon, a number that counts up with an eased curve, and a small pill tag. Numbers must be real or clearly framed as an example; if you cannot verify one, ask me.\n- Motion is springy and playful: things pop in with a back-eased scale (popS), settle with a decaying wobble, the scene slides in from the sides, a dotted path draws itself and a pin drops, and the camera does one slow push. Open and close with the teal iris wipe with a yellow ring.\n- Keep it to one scene per idea, with clear staging: setting, character reaction, the idea in the bubble, the visual proof (path, arrow or chart), then the iris closes.\n\nRULES THAT KEEP IT IN STYLE\n- 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.\n- 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.\n- It will be watched on phones: at 1280x720 in the 680 x 383 design space keep the main number at 21 px or more, labels at 11 px or more and any title at 26 px or more (that is about 40, 21 and 50 px at 1280x720), and keep the character and the bubble large. Fill the frame.\n- Keep each frame fast, well under 50 ms.\n- Give my topic its own demo content; do not reuse the reference's story (\"Why is the milk always at the back of the store?\") unless my content asks for it.\n\nSOUND\n- Soft, toy-like and sparse: rounded pops for the bubble, tags and pin, little sine bloops for character reactions, wooden taps for landings, counter steps and path dots (thinning out as the counter lands), airy whooshes for the iris and the slides, and one breathy sigh.\n- No chimes, bells, pings or sparkle sounds, even for winks and sparkles on screen. The cartoon carries the charm; the sound only gives it weight.\n- Voiceover mix: the player calls SFX.live with { voiceover: true } once narration is loaded, which keeps the music low and plays anything marked soft at about 55%. Mark taps, counter ticks and path dots soft: true and keep pops for the bubble, the tag and the pin.\n- Sync is everything: the sound score reads the same TL times as the picture.\n\nIF YOU CAN RUN CODE\nRender 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.\n\nSTYLE CARD\nName: Pop Info\nFamily: Illustrated\nLook: A flat-vector animated infographic, drawn entirely in code: a cosy cartoon scene (here a grocery aisle in soft perspective), one small character with a big feeling, a teal thought bubble that carries the idea, a counter, a dotted path and an iris wipe in and out. Muted room colours, warm product colours, rounded Fredoka type.\nHow it explains: The scene builds itself: an iris opens, shelves slide in from both sides, the character pops up and reacts (annoyed, looking, sighing). The idea appears as a bubble with a friendly mascot, a number counts up inside it with a little tag, a dotted path draws through the scene to a pin, and the camera slowly pushes toward the point of interest. An iris closes on the takeaway.\n"
|
|
248
|
+
},
|
|
249
|
+
{
|
|
250
|
+
"id": "clay-diorama",
|
|
251
|
+
"num": "08",
|
|
252
|
+
"name": "Clay Diorama",
|
|
253
|
+
"family": "3D",
|
|
254
|
+
"canvas": "720x1280",
|
|
255
|
+
"tall": true,
|
|
256
|
+
"lib": true,
|
|
257
|
+
"three": true,
|
|
258
|
+
"look": "A soft clay miniature world on a round base, built in Three.js: chunky rounded shapes, warm studio light, a slow orbiting camera and a tilt-shift blur, with cream Fredoka cards explaining each beat.",
|
|
259
|
+
"how": "The diorama pops up piece by piece, then the camera orbits while the idea plays out on the little world (pressure builds, the volcano wobbles, lava bursts out and blobs splat across the grass). Each beat gets one rounded card with a big word, a gauge or a counter, and the camera pulls back for the takeaway.",
|
|
260
|
+
"fonts": "Fredoka (500 to 700), JetBrains Mono (700)",
|
|
261
|
+
"demo": "How a volcano erupts",
|
|
262
|
+
"replace": "TL, BLOBS, the clay world in init3() (the base, the props and their colours), pose(t), the cards in overlay() and scoreSound()",
|
|
263
|
+
"keep": "makeGL(), lights3(), M3/P3/put, proj3(), the round base and grass disc, the orbiting camera in pose(), tiltShift(), card(), pop/slam/wordLine/chip and grain()",
|
|
264
|
+
"sizes": "keep card headlines at 54 px or more, card text at 30 px or more, mono labels at 22 px or more, and keep the diorama filling the middle third of the frame",
|
|
265
|
+
"voLine": "Each prop pops in as it is named, a card lands on the first word of its beat, a counter starts as its number is spoken and locks on its last syllable, and the big event (the eruption, the crash, the reveal) lands on its stressed word.",
|
|
266
|
+
"full": "- Full mix (no voiceover): keep the bright pad, at most about 3 sounds at once, and leave a short gap before the biggest moment.",
|
|
267
|
+
"voMix": "- Voiceover mix: the player calls SFX.live with { voiceover: true } once narration is loaded, which keeps the pad low and plays anything marked soft at about 55%. Mark bloops, ticks and thuds soft: true, keep the boom for the single biggest moment, and never put a riser over a spoken sentence.",
|
|
268
|
+
"sheet": [
|
|
269
|
+
"Everything 3D is real Three.js geometry built once in init3() and posed from t in pose(t): no images, no models from the web. Every object is a simple rounded primitive (cylinders, cones, spheres, capsules) in matte clay colours with soft shadows.",
|
|
270
|
+
"The world sits on one round base with a grass or sand disc, like a tabletop miniature. Keep it in the middle third of the frame and keep the tilt-shift blur at the top and bottom on every frame.",
|
|
271
|
+
"Palette: warm peach background (#f5d5c0), clay browns, soft greens (#94c56a, #5aa65a), cream cards (#fffaf5), dark brown text (#5b3424) and one hot accent (#e2561e) for the key word. Invent colours for new props in the same matte, slightly desaturated range.",
|
|
272
|
+
"Type: Fredoka 600 to 700 on cream cards with 44 px corners and a soft brown shadow. One card per beat, popping in with a back ease. JetBrains Mono only for small chips and units.",
|
|
273
|
+
"Motion is toy-like: things pop up with overshoot, wobble with squash and stretch before a big moment, fly on real ballistic arcs and splat flat when they land. The camera orbits slowly the whole time and pulls back for the takeaway.",
|
|
274
|
+
"Numbers count up inside a chip or a gauge bar on a card. Draw every subject accurately for the topic (a real heart has four chambers, a real bridge has supports) while keeping the clay simplicity.",
|
|
275
|
+
"Pace: the hook card lands in under 1 second, one new thing every 0.5 to 1.5 seconds, the takeaway card holds about 2 seconds."
|
|
276
|
+
],
|
|
277
|
+
"sound": [
|
|
278
|
+
"Bed: a bright, simple pad (padBed) with light hats, and a soft kick only during the action.",
|
|
279
|
+
"Map events to the kit: props popping up get SND.bloop with rising pitch; cards get SND.paper plus \"pop\"; building tension gets a brown-noise rumble that grows; the big moment gets \"riser\" into \"boom\" and \"slam\"; landings get SND.thud; counters \"tick\" only when the shown number changes; the takeaway gets an open major chord (SND.chord)."
|
|
280
|
+
],
|
|
281
|
+
"sourceFile": "sources/clay-diorama.html",
|
|
282
|
+
"promptFile": "prompts/clay-diorama.md",
|
|
283
|
+
"sourceBytes": 66433,
|
|
284
|
+
"prompt": "I want an animated video in the \"Clay Diorama\" 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.\n\nMY CONTENT\n[No topic yet. Ask me for my topic or script before building anything.]\n\nBUILD DIRECTLY\nSkip the storyboard and build the full animation now. Afterwards, list any facts or numbers you assumed.\n\nWHAT TO BUILD\nOne self-contained HTML file (an artifact if you can), built on the reference file below:\n- 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.\n- Keep the canvas at 720x1280 (9:16, for Shorts, Reels and TikTok).\n- Keep the Three.js r128 script tag and build every 3D object in code: no models or textures from the web.\n- Replace the demo's story: TL, BLOBS, the clay world in init3() (the base, the props and their colours), pose(t), the cards in overlay() and scoreSound(). Keep and reuse the style's helpers (makeGL(), lights3(), M3/P3/put, proj3(), the round base and grass disc, the orbiting camera in pose(), tiltShift(), card(), pop/slam/wordLine/chip and grain()).\n- Aim for 15 to 40 seconds unless my content needs more, and set the duration in TL.D.\n- Keep window.seek(t), window.DURATION, window.scoreSound and window.SFX exposed, so the video can be rendered frame by frame.\n- Load the style's fonts before the first draw, as the reference does: Fredoka (500 to 700), JetBrains Mono (700).\n\nTHE STYLE\n- Everything 3D is real Three.js geometry built once in init3() and posed from t in pose(t): no images, no models from the web. Every object is a simple rounded primitive (cylinders, cones, spheres, capsules) in matte clay colours with soft shadows.\n- The world sits on one round base with a grass or sand disc, like a tabletop miniature. Keep it in the middle third of the frame and keep the tilt-shift blur at the top and bottom on every frame.\n- Palette: warm peach background (#f5d5c0), clay browns, soft greens (#94c56a, #5aa65a), cream cards (#fffaf5), dark brown text (#5b3424) and one hot accent (#e2561e) for the key word. Invent colours for new props in the same matte, slightly desaturated range.\n- Type: Fredoka 600 to 700 on cream cards with 44 px corners and a soft brown shadow. One card per beat, popping in with a back ease. JetBrains Mono only for small chips and units.\n- Motion is toy-like: things pop up with overshoot, wobble with squash and stretch before a big moment, fly on real ballistic arcs and splat flat when they land. The camera orbits slowly the whole time and pulls back for the takeaway.\n- Numbers count up inside a chip or a gauge bar on a card. Draw every subject accurately for the topic (a real heart has four chambers, a real bridge has supports) while keeping the clay simplicity.\n- Pace: the hook card lands in under 1 second, one new thing every 0.5 to 1.5 seconds, the takeaway card holds about 2 seconds.\n\nRULES THAT KEEP IT IN STYLE\n- 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.\n- 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.\n- It will be watched on phones: at 720x1280 keep card headlines at 54 px or more, card text at 30 px or more, mono labels at 22 px or more, and keep the diorama filling the middle third of the frame. Fill the frame.\n- Keep each frame fast, well under 50 ms.\n- Give my topic its own demo content; do not reuse the reference's story (\"How a volcano erupts\") unless my content asks for it.\n\nSOUND\n- Bed: a bright, simple pad (padBed) with light hats, and a soft kick only during the action.\n- Map events to the kit: props popping up get SND.bloop with rising pitch; cards get SND.paper plus \"pop\"; building tension gets a brown-noise rumble that grows; the big moment gets \"riser\" into \"boom\" and \"slam\"; landings get SND.thud; counters \"tick\" only when the shown number changes; the takeaway gets an open major chord (SND.chord).\n- Full mix (no voiceover): keep the bright pad, at most about 3 sounds at once, and leave a short gap before the biggest moment.\n- Sync is everything: the sound score reads the same TL times as the picture.\n\nIF YOU CAN RUN CODE\nRender 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.\n\nSTYLE CARD\nName: Clay Diorama\nFamily: 3D\nLook: A soft clay miniature world on a round base, built in Three.js: chunky rounded shapes, warm studio light, a slow orbiting camera and a tilt-shift blur, with cream Fredoka cards explaining each beat.\nHow it explains: The diorama pops up piece by piece, then the camera orbits while the idea plays out on the little world (pressure builds, the volcano wobbles, lava bursts out and blobs splat across the grass). Each beat gets one rounded card with a big word, a gauge or a counter, and the camera pulls back for the takeaway.\n",
|
|
285
|
+
"promptVo": "I want an animated video in the \"Clay Diorama\" 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.\n\nMY CONTENT\n[No topic yet. Ask me for my topic or script before building anything.]\n\nVOICEOVER TIMING\n[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.]\n\nHow to use the timing:\n- 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.\n- Set the duration to the last word's end plus about 1.2 seconds.\n- Build the timeline (TL) from these times. Each prop pops in as it is named, a card lands on the first word of its beat, a counter starts as its number is spoken and locks on its last syllable, and the big event (the eruption, the crash, the reveal) lands on its stressed word.\n- 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.\n- Put the emphasis moves on stressed words. A counter lands at the exact moment its number is spoken.\n- Keep the player's \"Load voiceover\" button working so I can drop in my audio and hear it in sync.\n\nSTORYBOARD FIRST\nBefore building, show me a storyboard and wait for my OK:\n- 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.\n- 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.\n- Below the grid, list any facts or numbers you had to assume.\nWhen I approve it (or after my changes), build the full animation and reuse the storyboard's drawing code.\n\nWHAT TO BUILD\nOne self-contained HTML file (an artifact if you can), built on the reference file below:\n- 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.\n- Keep the canvas at 720x1280 (9:16, for Shorts, Reels and TikTok).\n- Keep the Three.js r128 script tag and build every 3D object in code: no models or textures from the web.\n- Replace the demo's story: TL, BLOBS, the clay world in init3() (the base, the props and their colours), pose(t), the cards in overlay() and scoreSound(). Keep and reuse the style's helpers (makeGL(), lights3(), M3/P3/put, proj3(), the round base and grass disc, the orbiting camera in pose(), tiltShift(), card(), pop/slam/wordLine/chip and grain()).\n- Aim for 15 to 40 seconds unless my content needs more, and set the duration in TL.D.\n- Keep window.seek(t), window.DURATION, window.scoreSound and window.SFX exposed, so the video can be rendered frame by frame.\n- Load the style's fonts before the first draw, as the reference does: Fredoka (500 to 700), JetBrains Mono (700).\n\nTHE STYLE\n- Everything 3D is real Three.js geometry built once in init3() and posed from t in pose(t): no images, no models from the web. Every object is a simple rounded primitive (cylinders, cones, spheres, capsules) in matte clay colours with soft shadows.\n- The world sits on one round base with a grass or sand disc, like a tabletop miniature. Keep it in the middle third of the frame and keep the tilt-shift blur at the top and bottom on every frame.\n- Palette: warm peach background (#f5d5c0), clay browns, soft greens (#94c56a, #5aa65a), cream cards (#fffaf5), dark brown text (#5b3424) and one hot accent (#e2561e) for the key word. Invent colours for new props in the same matte, slightly desaturated range.\n- Type: Fredoka 600 to 700 on cream cards with 44 px corners and a soft brown shadow. One card per beat, popping in with a back ease. JetBrains Mono only for small chips and units.\n- Motion is toy-like: things pop up with overshoot, wobble with squash and stretch before a big moment, fly on real ballistic arcs and splat flat when they land. The camera orbits slowly the whole time and pulls back for the takeaway.\n- Numbers count up inside a chip or a gauge bar on a card. Draw every subject accurately for the topic (a real heart has four chambers, a real bridge has supports) while keeping the clay simplicity.\n- Pace: the hook card lands in under 1 second, one new thing every 0.5 to 1.5 seconds, the takeaway card holds about 2 seconds.\n\nRULES THAT KEEP IT IN STYLE\n- 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.\n- 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.\n- It will be watched on phones: at 720x1280 keep card headlines at 54 px or more, card text at 30 px or more, mono labels at 22 px or more, and keep the diorama filling the middle third of the frame. Fill the frame.\n- Keep each frame fast, well under 50 ms.\n- Give my topic its own demo content; do not reuse the reference's story (\"How a volcano erupts\") unless my content asks for it.\n\nSOUND\n- Bed: a bright, simple pad (padBed) with light hats, and a soft kick only during the action.\n- Map events to the kit: props popping up get SND.bloop with rising pitch; cards get SND.paper plus \"pop\"; building tension gets a brown-noise rumble that grows; the big moment gets \"riser\" into \"boom\" and \"slam\"; landings get SND.thud; counters \"tick\" only when the shown number changes; the takeaway gets an open major chord (SND.chord).\n- Voiceover mix: the player calls SFX.live with { voiceover: true } once narration is loaded, which keeps the pad low and plays anything marked soft at about 55%. Mark bloops, ticks and thuds soft: true, keep the boom for the single biggest moment, and never put a riser over a spoken sentence.\n- Sync is everything: the sound score reads the same TL times as the picture.\n\nIF YOU CAN RUN CODE\nRender 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.\n\nSTYLE CARD\nName: Clay Diorama\nFamily: 3D\nLook: A soft clay miniature world on a round base, built in Three.js: chunky rounded shapes, warm studio light, a slow orbiting camera and a tilt-shift blur, with cream Fredoka cards explaining each beat.\nHow it explains: The diorama pops up piece by piece, then the camera orbits while the idea plays out on the little world (pressure builds, the volcano wobbles, lava bursts out and blobs splat across the grass). Each beat gets one rounded card with a big word, a gauge or a counter, and the camera pulls back for the takeaway.\n"
|
|
286
|
+
},
|
|
287
|
+
{
|
|
288
|
+
"id": "bio-glow",
|
|
289
|
+
"num": "09",
|
|
290
|
+
"name": "Bio Glow",
|
|
291
|
+
"family": "3D",
|
|
292
|
+
"canvas": "720x1280",
|
|
293
|
+
"tall": true,
|
|
294
|
+
"lib": true,
|
|
295
|
+
"three": true,
|
|
296
|
+
"look": "Inside the body, built in Three.js: glossy red cells drift down a glowing red vessel toward the camera, with fog for depth, a warm bloom, and clean white labels on thin leader lines.",
|
|
297
|
+
"how": "The camera travels down the vessel the whole time. One hero cell swims up close and gets a label, small blue oxygen bubbles fly in and stick to it, a big glowing counter climbs, and a bumpy white defender cell rolls through before the takeaway.",
|
|
298
|
+
"fonts": "Space Grotesk (500 and 700), JetBrains Mono (500 and 700)",
|
|
299
|
+
"demo": "Your blood in 60 seconds",
|
|
300
|
+
"replace": "TL, CELLS, the hero and guest objects in init3() (the red cell, oxygen, the white cell), pose(t), the labels and counters in overlay() and scoreSound()",
|
|
301
|
+
"keep": "makeGL(), lights3(), the inside-out vessel tube, the travelling camera and flowing cells in pose(), proj3() for labels, leader(), chip(), wordLine(), vignette() and the red bloom",
|
|
302
|
+
"sizes": "keep headlines at 56 px or more, labels at 22 px or more, and the big counter at 80 px or more",
|
|
303
|
+
"voLine": "The hero object swims into its close-up as it is named, each label draws its leader line on the word it names, small things arrive on the word that introduces them, and the counter locks on the last syllable of its number.",
|
|
304
|
+
"full": "- Full mix (no voiceover): keep the heartbeat and the dark pad, at most about 3 sounds at once, and drop the heartbeat for one beat before the counter locks.",
|
|
305
|
+
"voMix": "- Voiceover mix: the player calls SFX.live with { voiceover: true } once narration is loaded. Keep the heartbeat very low, mark pings and ticks soft: true, and keep the shimmer for the takeaway only.",
|
|
306
|
+
"sheet": [
|
|
307
|
+
"Everything is Three.js geometry posed from t: a big inside-out cylinder for the vessel, tori for red cells, a displaced icosahedron for white cells, small emissive spheres for molecules. No images or models.",
|
|
308
|
+
"The camera always moves forward down the vessel and sways gently; cells flow past at different speeds and fade into the fog behind. Keep the fog and the dark red background so depth reads on a phone.",
|
|
309
|
+
"Palette: deep blood red background (#3a070b), glossy cell red (#c91d2c), warm salmon accent (#ff8f7d) for the second headline line, cool blue (#7fd3ff) only for oxygen or anything \"fresh\", off-white for defenders.",
|
|
310
|
+
"Type: Space Grotesk 700 for headlines at the top, white then salmon. JetBrains Mono for labels in frosted chips with a 1.5 px white outline, joined to their object by a thin leader line that draws itself.",
|
|
311
|
+
"One hero object per beat comes close to the camera; everything else stays as moving background. Labels always name a real structure with a real size or job.",
|
|
312
|
+
"Numbers: one big glowing counter at the bottom with a small mono caption under it. Use real, checked figures for the body.",
|
|
313
|
+
"Pace: the hook lands in under 1 second, the hero arrives by second 3, one new label every 1 to 2 seconds, and the takeaway holds about 2 seconds."
|
|
314
|
+
],
|
|
315
|
+
"sound": [
|
|
316
|
+
"Bed: a slow heartbeat (two low thumps per beat) under a dark, filtered pad, plus a soft flowing hiss.",
|
|
317
|
+
"Map events to the kit: labels get a soft tick; molecules sticking get small glassy pings that climb; the hero arrival gets a slow \"whoosh\"; counters \"tick\" only when the shown number changes; a new kind of cell gets a low swell; the takeaway gets \"shimmer\"."
|
|
318
|
+
],
|
|
319
|
+
"sourceFile": "sources/bio-glow.html",
|
|
320
|
+
"promptFile": "prompts/bio-glow.md",
|
|
321
|
+
"sourceBytes": 62642,
|
|
322
|
+
"prompt": "I want an animated video in the \"Bio Glow\" 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.\n\nMY CONTENT\n[No topic yet. Ask me for my topic or script before building anything.]\n\nBUILD DIRECTLY\nSkip the storyboard and build the full animation now. Afterwards, list any facts or numbers you assumed.\n\nWHAT TO BUILD\nOne self-contained HTML file (an artifact if you can), built on the reference file below:\n- 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.\n- Keep the canvas at 720x1280 (9:16, for Shorts, Reels and TikTok).\n- Keep the Three.js r128 script tag and build every 3D object in code: no models or textures from the web.\n- Replace the demo's story: TL, CELLS, the hero and guest objects in init3() (the red cell, oxygen, the white cell), pose(t), the labels and counters in overlay() and scoreSound(). Keep and reuse the style's helpers (makeGL(), lights3(), the inside-out vessel tube, the travelling camera and flowing cells in pose(), proj3() for labels, leader(), chip(), wordLine(), vignette() and the red bloom).\n- Aim for 15 to 40 seconds unless my content needs more, and set the duration in TL.D.\n- Keep window.seek(t), window.DURATION, window.scoreSound and window.SFX exposed, so the video can be rendered frame by frame.\n- Load the style's fonts before the first draw, as the reference does: Space Grotesk (500 and 700), JetBrains Mono (500 and 700).\n\nTHE STYLE\n- Everything is Three.js geometry posed from t: a big inside-out cylinder for the vessel, tori for red cells, a displaced icosahedron for white cells, small emissive spheres for molecules. No images or models.\n- The camera always moves forward down the vessel and sways gently; cells flow past at different speeds and fade into the fog behind. Keep the fog and the dark red background so depth reads on a phone.\n- Palette: deep blood red background (#3a070b), glossy cell red (#c91d2c), warm salmon accent (#ff8f7d) for the second headline line, cool blue (#7fd3ff) only for oxygen or anything \"fresh\", off-white for defenders.\n- Type: Space Grotesk 700 for headlines at the top, white then salmon. JetBrains Mono for labels in frosted chips with a 1.5 px white outline, joined to their object by a thin leader line that draws itself.\n- One hero object per beat comes close to the camera; everything else stays as moving background. Labels always name a real structure with a real size or job.\n- Numbers: one big glowing counter at the bottom with a small mono caption under it. Use real, checked figures for the body.\n- Pace: the hook lands in under 1 second, the hero arrives by second 3, one new label every 1 to 2 seconds, and the takeaway holds about 2 seconds.\n\nRULES THAT KEEP IT IN STYLE\n- 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.\n- 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.\n- It will be watched on phones: at 720x1280 keep headlines at 56 px or more, labels at 22 px or more, and the big counter at 80 px or more. Fill the frame.\n- Keep each frame fast, well under 50 ms.\n- Give my topic its own demo content; do not reuse the reference's story (\"Your blood in 60 seconds\") unless my content asks for it.\n\nSOUND\n- Bed: a slow heartbeat (two low thumps per beat) under a dark, filtered pad, plus a soft flowing hiss.\n- Map events to the kit: labels get a soft tick; molecules sticking get small glassy pings that climb; the hero arrival gets a slow \"whoosh\"; counters \"tick\" only when the shown number changes; a new kind of cell gets a low swell; the takeaway gets \"shimmer\".\n- Full mix (no voiceover): keep the heartbeat and the dark pad, at most about 3 sounds at once, and drop the heartbeat for one beat before the counter locks.\n- Sync is everything: the sound score reads the same TL times as the picture.\n\nIF YOU CAN RUN CODE\nRender 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.\n\nSTYLE CARD\nName: Bio Glow\nFamily: 3D\nLook: Inside the body, built in Three.js: glossy red cells drift down a glowing red vessel toward the camera, with fog for depth, a warm bloom, and clean white labels on thin leader lines.\nHow it explains: The camera travels down the vessel the whole time. One hero cell swims up close and gets a label, small blue oxygen bubbles fly in and stick to it, a big glowing counter climbs, and a bumpy white defender cell rolls through before the takeaway.\n",
|
|
323
|
+
"promptVo": "I want an animated video in the \"Bio Glow\" 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.\n\nMY CONTENT\n[No topic yet. Ask me for my topic or script before building anything.]\n\nVOICEOVER TIMING\n[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.]\n\nHow to use the timing:\n- 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.\n- Set the duration to the last word's end plus about 1.2 seconds.\n- Build the timeline (TL) from these times. The hero object swims into its close-up as it is named, each label draws its leader line on the word it names, small things arrive on the word that introduces them, and the counter locks on the last syllable of its number.\n- 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.\n- Put the emphasis moves on stressed words. A counter lands at the exact moment its number is spoken.\n- Keep the player's \"Load voiceover\" button working so I can drop in my audio and hear it in sync.\n\nSTORYBOARD FIRST\nBefore building, show me a storyboard and wait for my OK:\n- 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.\n- 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.\n- Below the grid, list any facts or numbers you had to assume.\nWhen I approve it (or after my changes), build the full animation and reuse the storyboard's drawing code.\n\nWHAT TO BUILD\nOne self-contained HTML file (an artifact if you can), built on the reference file below:\n- 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.\n- Keep the canvas at 720x1280 (9:16, for Shorts, Reels and TikTok).\n- Keep the Three.js r128 script tag and build every 3D object in code: no models or textures from the web.\n- Replace the demo's story: TL, CELLS, the hero and guest objects in init3() (the red cell, oxygen, the white cell), pose(t), the labels and counters in overlay() and scoreSound(). Keep and reuse the style's helpers (makeGL(), lights3(), the inside-out vessel tube, the travelling camera and flowing cells in pose(), proj3() for labels, leader(), chip(), wordLine(), vignette() and the red bloom).\n- Aim for 15 to 40 seconds unless my content needs more, and set the duration in TL.D.\n- Keep window.seek(t), window.DURATION, window.scoreSound and window.SFX exposed, so the video can be rendered frame by frame.\n- Load the style's fonts before the first draw, as the reference does: Space Grotesk (500 and 700), JetBrains Mono (500 and 700).\n\nTHE STYLE\n- Everything is Three.js geometry posed from t: a big inside-out cylinder for the vessel, tori for red cells, a displaced icosahedron for white cells, small emissive spheres for molecules. No images or models.\n- The camera always moves forward down the vessel and sways gently; cells flow past at different speeds and fade into the fog behind. Keep the fog and the dark red background so depth reads on a phone.\n- Palette: deep blood red background (#3a070b), glossy cell red (#c91d2c), warm salmon accent (#ff8f7d) for the second headline line, cool blue (#7fd3ff) only for oxygen or anything \"fresh\", off-white for defenders.\n- Type: Space Grotesk 700 for headlines at the top, white then salmon. JetBrains Mono for labels in frosted chips with a 1.5 px white outline, joined to their object by a thin leader line that draws itself.\n- One hero object per beat comes close to the camera; everything else stays as moving background. Labels always name a real structure with a real size or job.\n- Numbers: one big glowing counter at the bottom with a small mono caption under it. Use real, checked figures for the body.\n- Pace: the hook lands in under 1 second, the hero arrives by second 3, one new label every 1 to 2 seconds, and the takeaway holds about 2 seconds.\n\nRULES THAT KEEP IT IN STYLE\n- 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.\n- 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.\n- It will be watched on phones: at 720x1280 keep headlines at 56 px or more, labels at 22 px or more, and the big counter at 80 px or more. Fill the frame.\n- Keep each frame fast, well under 50 ms.\n- Give my topic its own demo content; do not reuse the reference's story (\"Your blood in 60 seconds\") unless my content asks for it.\n\nSOUND\n- Bed: a slow heartbeat (two low thumps per beat) under a dark, filtered pad, plus a soft flowing hiss.\n- Map events to the kit: labels get a soft tick; molecules sticking get small glassy pings that climb; the hero arrival gets a slow \"whoosh\"; counters \"tick\" only when the shown number changes; a new kind of cell gets a low swell; the takeaway gets \"shimmer\".\n- Voiceover mix: the player calls SFX.live with { voiceover: true } once narration is loaded. Keep the heartbeat very low, mark pings and ticks soft: true, and keep the shimmer for the takeaway only.\n- Sync is everything: the sound score reads the same TL times as the picture.\n\nIF YOU CAN RUN CODE\nRender 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.\n\nSTYLE CARD\nName: Bio Glow\nFamily: 3D\nLook: Inside the body, built in Three.js: glossy red cells drift down a glowing red vessel toward the camera, with fog for depth, a warm bloom, and clean white labels on thin leader lines.\nHow it explains: The camera travels down the vessel the whole time. One hero cell swims up close and gets a label, small blue oxygen bubbles fly in and stick to it, a big glowing counter climbs, and a bumpy white defender cell rolls through before the takeaway.\n"
|
|
324
|
+
},
|
|
325
|
+
{
|
|
326
|
+
"id": "cosmic-scale",
|
|
327
|
+
"num": "10",
|
|
328
|
+
"name": "Cosmic Scale",
|
|
329
|
+
"family": "3D",
|
|
330
|
+
"canvas": "720x1280",
|
|
331
|
+
"tall": true,
|
|
332
|
+
"lib": true,
|
|
333
|
+
"three": true,
|
|
334
|
+
"look": "Planets and stars at their true relative sizes in a deep starfield, built in Three.js with textures painted in code, and a camera that pulls back in big log-scale moves to reveal the scale.",
|
|
335
|
+
"how": "It starts close on something familiar, then each beat the camera pulls back by a power of ten so the next, bigger object slides into frame beside it. Every body gets a thin label with its real size, and the final reveal lands with a boom and a big counter.",
|
|
336
|
+
"fonts": "Space Grotesk (500 and 700), JetBrains Mono (500 and 700)",
|
|
337
|
+
"demo": "How big is the Sun?",
|
|
338
|
+
"replace": "TL, BODIES (names, real radii, positions, painted textures), the CAM keyframes, the labels and counter in overlay() and scoreSound()",
|
|
339
|
+
"keep": "makeGL(), the painted canvas textures (paintTex), the starfield, the log-scale camera track (camAt), proj3() labels that only show when a body is big enough, the sun glow pass, chip(), wordLine() and grain()",
|
|
340
|
+
"sizes": "keep headlines at 56 px or more, labels at 22 px or more and the counter at 90 px or more",
|
|
341
|
+
"voLine": "Each pull-back starts about 0.3 s before the next object is named, its label lands on its name, and the reveal of the biggest object lands on the stressed word.",
|
|
342
|
+
"full": "- Full mix (no voiceover): keep the deep drone, at most about 3 sounds at once, and a moment of near-silence before the big reveal.",
|
|
343
|
+
"voMix": "- Voiceover mix: the player calls SFX.live with { voiceover: true } once narration is loaded. Keep the drone very low, mark label pings soft: true and keep the boom for the single reveal.",
|
|
344
|
+
"sheet": [
|
|
345
|
+
"Sizes are real: every body uses its true radius relative to the others (Earth = 1 unit), lined up side by side. Never fake a ratio; let tiny things be tiny and point them out with a ring and a label.",
|
|
346
|
+
"Every surface is painted in code on a canvas (paintTex): oceans and continents, gas bands, craters, granulated plasma. No photos or downloaded textures.",
|
|
347
|
+
"The camera moves on a log scale (camAt keys hold the log of the distance), so each pull-back feels like the same size of jump. Stars stay fixed far away so the motion reads as scale, not travel.",
|
|
348
|
+
"Palette: black space (#02030a), white stars, warm sun orange (#ffb347 to #ff7a12) with a soft screen-blended glow, cool label blue (#bfe1ff). One warm accent (#ffcf8a) for the second headline line.",
|
|
349
|
+
"Type: Space Grotesk 700 headlines at the top, JetBrains Mono labels with the real size, a dashed ring around anything smaller than a few pixels.",
|
|
350
|
+
"Pace: hold the familiar object for 2 to 3 seconds, then one pull-back every 1.5 to 2.5 seconds, and hold the final reveal for about 3 seconds."
|
|
351
|
+
],
|
|
352
|
+
"sound": [
|
|
353
|
+
"Bed: a deep, slow drone with a filtered pad; no beat.",
|
|
354
|
+
"Map events to the kit: every pull-back gets a long, low \"whoosh\"; each label gets a soft ping; the final reveal gets \"riser\" into \"boom\"; the counter \"tick\"s only when the shown number changes; the takeaway gets \"shimmer\"."
|
|
355
|
+
],
|
|
356
|
+
"sourceFile": "sources/cosmic-scale.html",
|
|
357
|
+
"promptFile": "prompts/cosmic-scale.md",
|
|
358
|
+
"sourceBytes": 62264,
|
|
359
|
+
"prompt": "I want an animated video in the \"Cosmic Scale\" 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.\n\nMY CONTENT\n[No topic yet. Ask me for my topic or script before building anything.]\n\nBUILD DIRECTLY\nSkip the storyboard and build the full animation now. Afterwards, list any facts or numbers you assumed.\n\nWHAT TO BUILD\nOne self-contained HTML file (an artifact if you can), built on the reference file below:\n- 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.\n- Keep the canvas at 720x1280 (9:16, for Shorts, Reels and TikTok).\n- Keep the Three.js r128 script tag and build every 3D object in code: no models or textures from the web.\n- Replace the demo's story: TL, BODIES (names, real radii, positions, painted textures), the CAM keyframes, the labels and counter in overlay() and scoreSound(). Keep and reuse the style's helpers (makeGL(), the painted canvas textures (paintTex), the starfield, the log-scale camera track (camAt), proj3() labels that only show when a body is big enough, the sun glow pass, chip(), wordLine() and grain()).\n- Aim for 15 to 40 seconds unless my content needs more, and set the duration in TL.D.\n- Keep window.seek(t), window.DURATION, window.scoreSound and window.SFX exposed, so the video can be rendered frame by frame.\n- Load the style's fonts before the first draw, as the reference does: Space Grotesk (500 and 700), JetBrains Mono (500 and 700).\n\nTHE STYLE\n- Sizes are real: every body uses its true radius relative to the others (Earth = 1 unit), lined up side by side. Never fake a ratio; let tiny things be tiny and point them out with a ring and a label.\n- Every surface is painted in code on a canvas (paintTex): oceans and continents, gas bands, craters, granulated plasma. No photos or downloaded textures.\n- The camera moves on a log scale (camAt keys hold the log of the distance), so each pull-back feels like the same size of jump. Stars stay fixed far away so the motion reads as scale, not travel.\n- Palette: black space (#02030a), white stars, warm sun orange (#ffb347 to #ff7a12) with a soft screen-blended glow, cool label blue (#bfe1ff). One warm accent (#ffcf8a) for the second headline line.\n- Type: Space Grotesk 700 headlines at the top, JetBrains Mono labels with the real size, a dashed ring around anything smaller than a few pixels.\n- Pace: hold the familiar object for 2 to 3 seconds, then one pull-back every 1.5 to 2.5 seconds, and hold the final reveal for about 3 seconds.\n\nRULES THAT KEEP IT IN STYLE\n- 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.\n- 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.\n- It will be watched on phones: at 720x1280 keep headlines at 56 px or more, labels at 22 px or more and the counter at 90 px or more. Fill the frame.\n- Keep each frame fast, well under 50 ms.\n- Give my topic its own demo content; do not reuse the reference's story (\"How big is the Sun?\") unless my content asks for it.\n\nSOUND\n- Bed: a deep, slow drone with a filtered pad; no beat.\n- Map events to the kit: every pull-back gets a long, low \"whoosh\"; each label gets a soft ping; the final reveal gets \"riser\" into \"boom\"; the counter \"tick\"s only when the shown number changes; the takeaway gets \"shimmer\".\n- Full mix (no voiceover): keep the deep drone, at most about 3 sounds at once, and a moment of near-silence before the big reveal.\n- Sync is everything: the sound score reads the same TL times as the picture.\n\nIF YOU CAN RUN CODE\nRender 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.\n\nSTYLE CARD\nName: Cosmic Scale\nFamily: 3D\nLook: Planets and stars at their true relative sizes in a deep starfield, built in Three.js with textures painted in code, and a camera that pulls back in big log-scale moves to reveal the scale.\nHow it explains: It starts close on something familiar, then each beat the camera pulls back by a power of ten so the next, bigger object slides into frame beside it. Every body gets a thin label with its real size, and the final reveal lands with a boom and a big counter.\n",
|
|
360
|
+
"promptVo": "I want an animated video in the \"Cosmic Scale\" 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.\n\nMY CONTENT\n[No topic yet. Ask me for my topic or script before building anything.]\n\nVOICEOVER TIMING\n[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.]\n\nHow to use the timing:\n- 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.\n- Set the duration to the last word's end plus about 1.2 seconds.\n- Build the timeline (TL) from these times. Each pull-back starts about 0.3 s before the next object is named, its label lands on its name, and the reveal of the biggest object lands on the stressed word.\n- 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.\n- Put the emphasis moves on stressed words. A counter lands at the exact moment its number is spoken.\n- Keep the player's \"Load voiceover\" button working so I can drop in my audio and hear it in sync.\n\nSTORYBOARD FIRST\nBefore building, show me a storyboard and wait for my OK:\n- 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.\n- 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.\n- Below the grid, list any facts or numbers you had to assume.\nWhen I approve it (or after my changes), build the full animation and reuse the storyboard's drawing code.\n\nWHAT TO BUILD\nOne self-contained HTML file (an artifact if you can), built on the reference file below:\n- 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.\n- Keep the canvas at 720x1280 (9:16, for Shorts, Reels and TikTok).\n- Keep the Three.js r128 script tag and build every 3D object in code: no models or textures from the web.\n- Replace the demo's story: TL, BODIES (names, real radii, positions, painted textures), the CAM keyframes, the labels and counter in overlay() and scoreSound(). Keep and reuse the style's helpers (makeGL(), the painted canvas textures (paintTex), the starfield, the log-scale camera track (camAt), proj3() labels that only show when a body is big enough, the sun glow pass, chip(), wordLine() and grain()).\n- Aim for 15 to 40 seconds unless my content needs more, and set the duration in TL.D.\n- Keep window.seek(t), window.DURATION, window.scoreSound and window.SFX exposed, so the video can be rendered frame by frame.\n- Load the style's fonts before the first draw, as the reference does: Space Grotesk (500 and 700), JetBrains Mono (500 and 700).\n\nTHE STYLE\n- Sizes are real: every body uses its true radius relative to the others (Earth = 1 unit), lined up side by side. Never fake a ratio; let tiny things be tiny and point them out with a ring and a label.\n- Every surface is painted in code on a canvas (paintTex): oceans and continents, gas bands, craters, granulated plasma. No photos or downloaded textures.\n- The camera moves on a log scale (camAt keys hold the log of the distance), so each pull-back feels like the same size of jump. Stars stay fixed far away so the motion reads as scale, not travel.\n- Palette: black space (#02030a), white stars, warm sun orange (#ffb347 to #ff7a12) with a soft screen-blended glow, cool label blue (#bfe1ff). One warm accent (#ffcf8a) for the second headline line.\n- Type: Space Grotesk 700 headlines at the top, JetBrains Mono labels with the real size, a dashed ring around anything smaller than a few pixels.\n- Pace: hold the familiar object for 2 to 3 seconds, then one pull-back every 1.5 to 2.5 seconds, and hold the final reveal for about 3 seconds.\n\nRULES THAT KEEP IT IN STYLE\n- 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.\n- 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.\n- It will be watched on phones: at 720x1280 keep headlines at 56 px or more, labels at 22 px or more and the counter at 90 px or more. Fill the frame.\n- Keep each frame fast, well under 50 ms.\n- Give my topic its own demo content; do not reuse the reference's story (\"How big is the Sun?\") unless my content asks for it.\n\nSOUND\n- Bed: a deep, slow drone with a filtered pad; no beat.\n- Map events to the kit: every pull-back gets a long, low \"whoosh\"; each label gets a soft ping; the final reveal gets \"riser\" into \"boom\"; the counter \"tick\"s only when the shown number changes; the takeaway gets \"shimmer\".\n- Voiceover mix: the player calls SFX.live with { voiceover: true } once narration is loaded. Keep the drone very low, mark label pings soft: true and keep the boom for the single reveal.\n- Sync is everything: the sound score reads the same TL times as the picture.\n\nIF YOU CAN RUN CODE\nRender 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.\n\nSTYLE CARD\nName: Cosmic Scale\nFamily: 3D\nLook: Planets and stars at their true relative sizes in a deep starfield, built in Three.js with textures painted in code, and a camera that pulls back in big log-scale moves to reveal the scale.\nHow it explains: It starts close on something familiar, then each beat the camera pulls back by a power of ten so the next, bigger object slides into frame beside it. Every body gets a thin label with its real size, and the final reveal lands with a boom and a big counter.\n"
|
|
361
|
+
},
|
|
362
|
+
{
|
|
363
|
+
"id": "exploded-view",
|
|
364
|
+
"num": "11",
|
|
365
|
+
"name": "Exploded View",
|
|
366
|
+
"family": "3D",
|
|
367
|
+
"canvas": "720x1280",
|
|
368
|
+
"tall": true,
|
|
369
|
+
"lib": true,
|
|
370
|
+
"three": true,
|
|
371
|
+
"look": "A clean studio teardown in Three.js: an object turns slowly on a light grey floor and floats apart into its layers, each part tagged with a numbered mono label on a thin leader line.",
|
|
372
|
+
"how": "The closed object turns once, then its parts lift away one at a time with a mechanical click, labels drawing out to a neat column on the right. One part glows while the camera holds on it, then everything snaps back together for the takeaway.",
|
|
373
|
+
"fonts": "Space Grotesk (500 and 700), JetBrains Mono (500 and 700)",
|
|
374
|
+
"demo": "What's inside a phone",
|
|
375
|
+
"replace": "TL, PARTS (names, sizes, colours, details), the build in init3(), the highlight beat, the labels in overlay() and scoreSound()",
|
|
376
|
+
"keep": "makeGL(), lights3(), the shadow-only floor, the slow turntable rotation, the lift-apart and snap-back motion in pose(), the right-hand label column with leader lines, chip() and wordLine()",
|
|
377
|
+
"sizes": "keep headlines at 60 px or more, part names at 24 px or more and part numbers at 20 px or more",
|
|
378
|
+
"voLine": "Each part lifts away as it is named, its label draws on the same word, the highlight glows on the stressed word, and the snap-back lands on the first word of the takeaway.",
|
|
379
|
+
"full": "- Full mix (no voiceover): keep the clean pad, at most about 3 sounds at once, and a short gap before the snap-back.",
|
|
380
|
+
"voMix": "- Voiceover mix: the player calls SFX.live with { voiceover: true } once narration is loaded. Mark servo whirs and ticks soft: true and keep the thud for the snap-back only.",
|
|
381
|
+
"sheet": [
|
|
382
|
+
"Build the object in Three.js from real proportions: boxes, cylinders and extrusions for each layer, small boxes for chips and parts, real materials (glass is transparent, metal is metallic). Never copy a real brand or logo; invent nothing that pretends to be a real model.",
|
|
383
|
+
"The studio: light grey background (#e7eaee), a shadow-only floor, soft key light from the upper right. The object turns slowly the whole time.",
|
|
384
|
+
"Parts lift straight up (or along their assembly axis) one at a time with an ease-out, leaving even gaps, then later snap back in reverse order.",
|
|
385
|
+
"Labels: a right-hand column of numbered labels (blue number, dark name in JetBrains Mono) joined to each part by a 2 px leader line that draws itself.",
|
|
386
|
+
"Type: Space Grotesk 700 headline top left in near-black (#14171f) with the second line in blue (#2f6bff).",
|
|
387
|
+
"Highlight: one part glows (emissive pulse) with a big chip explaining why it matters.",
|
|
388
|
+
"Pace: closed object for 1.5 to 2 seconds, one part every 0.4 to 0.6 seconds, hold the highlight 2 to 3 seconds."
|
|
389
|
+
],
|
|
390
|
+
"sound": [
|
|
391
|
+
"Bed: a clean, light pad (padBed) with soft hats.",
|
|
392
|
+
"Map events to the kit: each part lifting gets a short servo whir (a filtered sawtooth sweep) and a \"click\" when it stops; labels get a soft tick; the highlight gets a hum swell and a chime; the snap-back gets a reversed whir and a thud; the takeaway gets an open chord."
|
|
393
|
+
],
|
|
394
|
+
"sourceFile": "sources/exploded-view.html",
|
|
395
|
+
"promptFile": "prompts/exploded-view.md",
|
|
396
|
+
"sourceBytes": 59563,
|
|
397
|
+
"prompt": "I want an animated video in the \"Exploded View\" 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.\n\nMY CONTENT\n[No topic yet. Ask me for my topic or script before building anything.]\n\nBUILD DIRECTLY\nSkip the storyboard and build the full animation now. Afterwards, list any facts or numbers you assumed.\n\nWHAT TO BUILD\nOne self-contained HTML file (an artifact if you can), built on the reference file below:\n- 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.\n- Keep the canvas at 720x1280 (9:16, for Shorts, Reels and TikTok).\n- Keep the Three.js r128 script tag and build every 3D object in code: no models or textures from the web.\n- Replace the demo's story: TL, PARTS (names, sizes, colours, details), the build in init3(), the highlight beat, the labels in overlay() and scoreSound(). Keep and reuse the style's helpers (makeGL(), lights3(), the shadow-only floor, the slow turntable rotation, the lift-apart and snap-back motion in pose(), the right-hand label column with leader lines, chip() and wordLine()).\n- Aim for 15 to 40 seconds unless my content needs more, and set the duration in TL.D.\n- Keep window.seek(t), window.DURATION, window.scoreSound and window.SFX exposed, so the video can be rendered frame by frame.\n- Load the style's fonts before the first draw, as the reference does: Space Grotesk (500 and 700), JetBrains Mono (500 and 700).\n\nTHE STYLE\n- Build the object in Three.js from real proportions: boxes, cylinders and extrusions for each layer, small boxes for chips and parts, real materials (glass is transparent, metal is metallic). Never copy a real brand or logo; invent nothing that pretends to be a real model.\n- The studio: light grey background (#e7eaee), a shadow-only floor, soft key light from the upper right. The object turns slowly the whole time.\n- Parts lift straight up (or along their assembly axis) one at a time with an ease-out, leaving even gaps, then later snap back in reverse order.\n- Labels: a right-hand column of numbered labels (blue number, dark name in JetBrains Mono) joined to each part by a 2 px leader line that draws itself.\n- Type: Space Grotesk 700 headline top left in near-black (#14171f) with the second line in blue (#2f6bff).\n- Highlight: one part glows (emissive pulse) with a big chip explaining why it matters.\n- Pace: closed object for 1.5 to 2 seconds, one part every 0.4 to 0.6 seconds, hold the highlight 2 to 3 seconds.\n\nRULES THAT KEEP IT IN STYLE\n- 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.\n- 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.\n- It will be watched on phones: at 720x1280 keep headlines at 60 px or more, part names at 24 px or more and part numbers at 20 px or more. Fill the frame.\n- Keep each frame fast, well under 50 ms.\n- Give my topic its own demo content; do not reuse the reference's story (\"What's inside a phone\") unless my content asks for it.\n\nSOUND\n- Bed: a clean, light pad (padBed) with soft hats.\n- Map events to the kit: each part lifting gets a short servo whir (a filtered sawtooth sweep) and a \"click\" when it stops; labels get a soft tick; the highlight gets a hum swell and a chime; the snap-back gets a reversed whir and a thud; the takeaway gets an open chord.\n- Full mix (no voiceover): keep the clean pad, at most about 3 sounds at once, and a short gap before the snap-back.\n- Sync is everything: the sound score reads the same TL times as the picture.\n\nIF YOU CAN RUN CODE\nRender 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.\n\nSTYLE CARD\nName: Exploded View\nFamily: 3D\nLook: A clean studio teardown in Three.js: an object turns slowly on a light grey floor and floats apart into its layers, each part tagged with a numbered mono label on a thin leader line.\nHow it explains: The closed object turns once, then its parts lift away one at a time with a mechanical click, labels drawing out to a neat column on the right. One part glows while the camera holds on it, then everything snaps back together for the takeaway.\n",
|
|
398
|
+
"promptVo": "I want an animated video in the \"Exploded View\" 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.\n\nMY CONTENT\n[No topic yet. Ask me for my topic or script before building anything.]\n\nVOICEOVER TIMING\n[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.]\n\nHow to use the timing:\n- 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.\n- Set the duration to the last word's end plus about 1.2 seconds.\n- Build the timeline (TL) from these times. Each part lifts away as it is named, its label draws on the same word, the highlight glows on the stressed word, and the snap-back lands on the first word of the takeaway.\n- 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.\n- Put the emphasis moves on stressed words. A counter lands at the exact moment its number is spoken.\n- Keep the player's \"Load voiceover\" button working so I can drop in my audio and hear it in sync.\n\nSTORYBOARD FIRST\nBefore building, show me a storyboard and wait for my OK:\n- 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.\n- 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.\n- Below the grid, list any facts or numbers you had to assume.\nWhen I approve it (or after my changes), build the full animation and reuse the storyboard's drawing code.\n\nWHAT TO BUILD\nOne self-contained HTML file (an artifact if you can), built on the reference file below:\n- 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.\n- Keep the canvas at 720x1280 (9:16, for Shorts, Reels and TikTok).\n- Keep the Three.js r128 script tag and build every 3D object in code: no models or textures from the web.\n- Replace the demo's story: TL, PARTS (names, sizes, colours, details), the build in init3(), the highlight beat, the labels in overlay() and scoreSound(). Keep and reuse the style's helpers (makeGL(), lights3(), the shadow-only floor, the slow turntable rotation, the lift-apart and snap-back motion in pose(), the right-hand label column with leader lines, chip() and wordLine()).\n- Aim for 15 to 40 seconds unless my content needs more, and set the duration in TL.D.\n- Keep window.seek(t), window.DURATION, window.scoreSound and window.SFX exposed, so the video can be rendered frame by frame.\n- Load the style's fonts before the first draw, as the reference does: Space Grotesk (500 and 700), JetBrains Mono (500 and 700).\n\nTHE STYLE\n- Build the object in Three.js from real proportions: boxes, cylinders and extrusions for each layer, small boxes for chips and parts, real materials (glass is transparent, metal is metallic). Never copy a real brand or logo; invent nothing that pretends to be a real model.\n- The studio: light grey background (#e7eaee), a shadow-only floor, soft key light from the upper right. The object turns slowly the whole time.\n- Parts lift straight up (or along their assembly axis) one at a time with an ease-out, leaving even gaps, then later snap back in reverse order.\n- Labels: a right-hand column of numbered labels (blue number, dark name in JetBrains Mono) joined to each part by a 2 px leader line that draws itself.\n- Type: Space Grotesk 700 headline top left in near-black (#14171f) with the second line in blue (#2f6bff).\n- Highlight: one part glows (emissive pulse) with a big chip explaining why it matters.\n- Pace: closed object for 1.5 to 2 seconds, one part every 0.4 to 0.6 seconds, hold the highlight 2 to 3 seconds.\n\nRULES THAT KEEP IT IN STYLE\n- 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.\n- 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.\n- It will be watched on phones: at 720x1280 keep headlines at 60 px or more, part names at 24 px or more and part numbers at 20 px or more. Fill the frame.\n- Keep each frame fast, well under 50 ms.\n- Give my topic its own demo content; do not reuse the reference's story (\"What's inside a phone\") unless my content asks for it.\n\nSOUND\n- Bed: a clean, light pad (padBed) with soft hats.\n- Map events to the kit: each part lifting gets a short servo whir (a filtered sawtooth sweep) and a \"click\" when it stops; labels get a soft tick; the highlight gets a hum swell and a chime; the snap-back gets a reversed whir and a thud; the takeaway gets an open chord.\n- Voiceover mix: the player calls SFX.live with { voiceover: true } once narration is loaded. Mark servo whirs and ticks soft: true and keep the thud for the snap-back only.\n- Sync is everything: the sound score reads the same TL times as the picture.\n\nIF YOU CAN RUN CODE\nRender 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.\n\nSTYLE CARD\nName: Exploded View\nFamily: 3D\nLook: A clean studio teardown in Three.js: an object turns slowly on a light grey floor and floats apart into its layers, each part tagged with a numbered mono label on a thin leader line.\nHow it explains: The closed object turns once, then its parts lift away one at a time with a mechanical click, labels drawing out to a neat column on the right. One part glows while the camera holds on it, then everything snaps back together for the takeaway.\n"
|
|
399
|
+
},
|
|
400
|
+
{
|
|
401
|
+
"id": "low-poly-atlas",
|
|
402
|
+
"num": "12",
|
|
403
|
+
"name": "Low-Poly Atlas",
|
|
404
|
+
"family": "3D",
|
|
405
|
+
"canvas": "720x1280",
|
|
406
|
+
"tall": true,
|
|
407
|
+
"lib": true,
|
|
408
|
+
"three": true,
|
|
409
|
+
"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.",
|
|
410
|
+
"how": "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.",
|
|
411
|
+
"fonts": "Playfair Display (700 and 900, italic), JetBrains Mono (500 and 700)",
|
|
412
|
+
"demo": "Why Rome built roads",
|
|
413
|
+
"replace": "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()",
|
|
414
|
+
"keep": "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()",
|
|
415
|
+
"sizes": "keep headlines at 64 px or more, place names at 22 px or more and the counter at 80 px or more",
|
|
416
|
+
"voLine": "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.",
|
|
417
|
+
"full": "- 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.",
|
|
418
|
+
"voMix": "- 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.",
|
|
419
|
+
"sheet": [
|
|
420
|
+
"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.",
|
|
421
|
+
"Light: low warm sunset key (#ffcf99) from one side, warm fog, peach sky (#f2b07a). Water is a single slightly transparent blue plane.",
|
|
422
|
+
"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.",
|
|
423
|
+
"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).",
|
|
424
|
+
"Use real dates, places and distances, and say \"about\" for estimates.",
|
|
425
|
+
"Camera: one slow drift and orbit over the land, no cuts; let the routes do the storytelling.",
|
|
426
|
+
"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."
|
|
427
|
+
],
|
|
428
|
+
"sound": [
|
|
429
|
+
"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.",
|
|
430
|
+
"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."
|
|
431
|
+
],
|
|
432
|
+
"sourceFile": "sources/low-poly-atlas.html",
|
|
433
|
+
"promptFile": "prompts/low-poly-atlas.md",
|
|
434
|
+
"sourceBytes": 62360,
|
|
435
|
+
"prompt": "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.\n\nMY CONTENT\n[No topic yet. Ask me for my topic or script before building anything.]\n\nBUILD DIRECTLY\nSkip the storyboard and build the full animation now. Afterwards, list any facts or numbers you assumed.\n\nWHAT TO BUILD\nOne self-contained HTML file (an artifact if you can), built on the reference file below:\n- 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.\n- Keep the canvas at 720x1280 (9:16, for Shorts, Reels and TikTok).\n- Keep the Three.js r128 script tag and build every 3D object in code: no models or textures from the web.\n- 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()).\n- Aim for 15 to 40 seconds unless my content needs more, and set the duration in TL.D.\n- Keep window.seek(t), window.DURATION, window.scoreSound and window.SFX exposed, so the video can be rendered frame by frame.\n- Load the style's fonts before the first draw, as the reference does: Playfair Display (700 and 900, italic), JetBrains Mono (500 and 700).\n\nTHE STYLE\n- 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.\n- Light: low warm sunset key (#ffcf99) from one side, warm fog, peach sky (#f2b07a). Water is a single slightly transparent blue plane.\n- 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.\n- 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).\n- Use real dates, places and distances, and say \"about\" for estimates.\n- Camera: one slow drift and orbit over the land, no cuts; let the routes do the storytelling.\n- 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.\n\nRULES THAT KEEP IT IN STYLE\n- 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.\n- 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.\n- 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.\n- Keep each frame fast, well under 50 ms.\n- Give my topic its own demo content; do not reuse the reference's story (\"Why Rome built roads\") unless my content asks for it.\n\nSOUND\n- 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.\n- 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.\n- 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.\n- Sync is everything: the sound score reads the same TL times as the picture.\n\nIF YOU CAN RUN CODE\nRender 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.\n\nSTYLE CARD\nName: Low-Poly Atlas\nFamily: 3D\nLook: 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.\nHow 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.\n",
|
|
436
|
+
"promptVo": "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.\n\nMY CONTENT\n[No topic yet. Ask me for my topic or script before building anything.]\n\nVOICEOVER TIMING\n[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.]\n\nHow to use the timing:\n- 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.\n- Set the duration to the last word's end plus about 1.2 seconds.\n- 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.\n- 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.\n- Put the emphasis moves on stressed words. A counter lands at the exact moment its number is spoken.\n- Keep the player's \"Load voiceover\" button working so I can drop in my audio and hear it in sync.\n\nSTORYBOARD FIRST\nBefore building, show me a storyboard and wait for my OK:\n- 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.\n- 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.\n- Below the grid, list any facts or numbers you had to assume.\nWhen I approve it (or after my changes), build the full animation and reuse the storyboard's drawing code.\n\nWHAT TO BUILD\nOne self-contained HTML file (an artifact if you can), built on the reference file below:\n- 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.\n- Keep the canvas at 720x1280 (9:16, for Shorts, Reels and TikTok).\n- Keep the Three.js r128 script tag and build every 3D object in code: no models or textures from the web.\n- 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()).\n- Aim for 15 to 40 seconds unless my content needs more, and set the duration in TL.D.\n- Keep window.seek(t), window.DURATION, window.scoreSound and window.SFX exposed, so the video can be rendered frame by frame.\n- Load the style's fonts before the first draw, as the reference does: Playfair Display (700 and 900, italic), JetBrains Mono (500 and 700).\n\nTHE STYLE\n- 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.\n- Light: low warm sunset key (#ffcf99) from one side, warm fog, peach sky (#f2b07a). Water is a single slightly transparent blue plane.\n- 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.\n- 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).\n- Use real dates, places and distances, and say \"about\" for estimates.\n- Camera: one slow drift and orbit over the land, no cuts; let the routes do the storytelling.\n- 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.\n\nRULES THAT KEEP IT IN STYLE\n- 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.\n- 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.\n- 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.\n- Keep each frame fast, well under 50 ms.\n- Give my topic its own demo content; do not reuse the reference's story (\"Why Rome built roads\") unless my content asks for it.\n\nSOUND\n- 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.\n- 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.\n- 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.\n- Sync is everything: the sound score reads the same TL times as the picture.\n\nIF YOU CAN RUN CODE\nRender 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.\n\nSTYLE CARD\nName: Low-Poly Atlas\nFamily: 3D\nLook: 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.\nHow 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.\n"
|
|
437
|
+
},
|
|
438
|
+
{
|
|
439
|
+
"id": "size-lineup",
|
|
440
|
+
"num": "13",
|
|
441
|
+
"name": "Size Lineup",
|
|
442
|
+
"family": "3D",
|
|
443
|
+
"canvas": "720x1280",
|
|
444
|
+
"tall": true,
|
|
445
|
+
"lib": true,
|
|
446
|
+
"three": true,
|
|
447
|
+
"look": "Things lined up smallest to biggest on an endless pale floor with a grid, built in Three.js, while the camera glides past and pulls back. Each one gets a dimension line and a dark height tag.",
|
|
448
|
+
"how": "The camera starts close on the smallest thing, then trucks sideways and pulls back as each bigger one enters, so the scale keeps growing. Height lines draw themselves beside each object, and the final pull-back shows the whole lineup with the giant at the end.",
|
|
449
|
+
"fonts": "Archivo Black, JetBrains Mono (500 and 700)",
|
|
450
|
+
"demo": "How big is a blue whale?",
|
|
451
|
+
"replace": "TL, ITEMS (names, real sizes, shapes, colours, positions), the shapes in init3(), the camera keys in CAMK, the tags in overlay() and scoreSound()",
|
|
452
|
+
"keep": "makeGL(), lights3(), the endless floor with GridHelper and fog, the camera track (track over CAMK), dimension lines drawn from proj3() of base and top, the dark height chips, wordLine() and grain()",
|
|
453
|
+
"sizes": "keep the headline at 60 px or more, height tags at 24 px or more and names at 20 px or more",
|
|
454
|
+
"voLine": "The camera starts moving to the next object about 0.3 s before it is named, its dimension line draws on its name and its tag lands on the number.",
|
|
455
|
+
"full": "- Full mix (no voiceover): keep the light pad, soft steps while the camera travels, and a short silence before the giant is revealed.",
|
|
456
|
+
"voMix": "- Voiceover mix: the player calls SFX.live with { voiceover: true } once narration is loaded. Mark steps and plucks soft: true and keep the low swell for the final reveal.",
|
|
457
|
+
"sheet": [
|
|
458
|
+
"Every object is built from simple Three.js primitives at its real size in metres (1 unit = 1 m) and stands on the same floor. Simplify shapes (capsules, ellipsoids, boxes) but keep proportions true: never scale anything up \"for readability\".",
|
|
459
|
+
"Order is always smallest to biggest, left to right, with even gaps. The camera trucks right and pulls back so each new object enters from the right.",
|
|
460
|
+
"Floor: pale blue-grey (#e8eef4) with a soft grid and fog so it reads as endless. One soft shadow-casting light.",
|
|
461
|
+
"Tags: a 2 px dimension line with end ticks beside each object (base to top), a dark navy chip (#14263d) with the size, and a small mono name above it.",
|
|
462
|
+
"Type: Archivo Black headline at the top in navy with the second line in blue (#2f6bd8). JetBrains Mono for every number.",
|
|
463
|
+
"Use real, typical sizes and say \"up to\" when you show a maximum.",
|
|
464
|
+
"Pace: hold the first object about 2 seconds, then one new object every 2 to 2.5 seconds, and hold the full lineup about 3 seconds."
|
|
465
|
+
],
|
|
466
|
+
"sound": [
|
|
467
|
+
"Bed: a light, curious pad (padBed) with soft hats.",
|
|
468
|
+
"Map events to the kit: soft footsteps (SND.tap) while the camera travels; each new tag gets a pluck that climbs in pitch; dimension lines get a short \"tick\"; the giant gets a long, low swell with a slow pitch bend and a \"boom\"; the takeaway gets an open chord."
|
|
469
|
+
],
|
|
470
|
+
"sourceFile": "sources/size-lineup.html",
|
|
471
|
+
"promptFile": "prompts/size-lineup.md",
|
|
472
|
+
"sourceBytes": 60143,
|
|
473
|
+
"prompt": "I want an animated video in the \"Size Lineup\" 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.\n\nMY CONTENT\n[No topic yet. Ask me for my topic or script before building anything.]\n\nBUILD DIRECTLY\nSkip the storyboard and build the full animation now. Afterwards, list any facts or numbers you assumed.\n\nWHAT TO BUILD\nOne self-contained HTML file (an artifact if you can), built on the reference file below:\n- 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.\n- Keep the canvas at 720x1280 (9:16, for Shorts, Reels and TikTok).\n- Keep the Three.js r128 script tag and build every 3D object in code: no models or textures from the web.\n- Replace the demo's story: TL, ITEMS (names, real sizes, shapes, colours, positions), the shapes in init3(), the camera keys in CAMK, the tags in overlay() and scoreSound(). Keep and reuse the style's helpers (makeGL(), lights3(), the endless floor with GridHelper and fog, the camera track (track over CAMK), dimension lines drawn from proj3() of base and top, the dark height chips, wordLine() and grain()).\n- Aim for 15 to 40 seconds unless my content needs more, and set the duration in TL.D.\n- Keep window.seek(t), window.DURATION, window.scoreSound and window.SFX exposed, so the video can be rendered frame by frame.\n- Load the style's fonts before the first draw, as the reference does: Archivo Black, JetBrains Mono (500 and 700).\n\nTHE STYLE\n- Every object is built from simple Three.js primitives at its real size in metres (1 unit = 1 m) and stands on the same floor. Simplify shapes (capsules, ellipsoids, boxes) but keep proportions true: never scale anything up \"for readability\".\n- Order is always smallest to biggest, left to right, with even gaps. The camera trucks right and pulls back so each new object enters from the right.\n- Floor: pale blue-grey (#e8eef4) with a soft grid and fog so it reads as endless. One soft shadow-casting light.\n- Tags: a 2 px dimension line with end ticks beside each object (base to top), a dark navy chip (#14263d) with the size, and a small mono name above it.\n- Type: Archivo Black headline at the top in navy with the second line in blue (#2f6bd8). JetBrains Mono for every number.\n- Use real, typical sizes and say \"up to\" when you show a maximum.\n- Pace: hold the first object about 2 seconds, then one new object every 2 to 2.5 seconds, and hold the full lineup about 3 seconds.\n\nRULES THAT KEEP IT IN STYLE\n- 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.\n- 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.\n- It will be watched on phones: at 720x1280 keep the headline at 60 px or more, height tags at 24 px or more and names at 20 px or more. Fill the frame.\n- Keep each frame fast, well under 50 ms.\n- Give my topic its own demo content; do not reuse the reference's story (\"How big is a blue whale?\") unless my content asks for it.\n\nSOUND\n- Bed: a light, curious pad (padBed) with soft hats.\n- Map events to the kit: soft footsteps (SND.tap) while the camera travels; each new tag gets a pluck that climbs in pitch; dimension lines get a short \"tick\"; the giant gets a long, low swell with a slow pitch bend and a \"boom\"; the takeaway gets an open chord.\n- Full mix (no voiceover): keep the light pad, soft steps while the camera travels, and a short silence before the giant is revealed.\n- Sync is everything: the sound score reads the same TL times as the picture.\n\nIF YOU CAN RUN CODE\nRender 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.\n\nSTYLE CARD\nName: Size Lineup\nFamily: 3D\nLook: Things lined up smallest to biggest on an endless pale floor with a grid, built in Three.js, while the camera glides past and pulls back. Each one gets a dimension line and a dark height tag.\nHow it explains: The camera starts close on the smallest thing, then trucks sideways and pulls back as each bigger one enters, so the scale keeps growing. Height lines draw themselves beside each object, and the final pull-back shows the whole lineup with the giant at the end.\n",
|
|
474
|
+
"promptVo": "I want an animated video in the \"Size Lineup\" 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.\n\nMY CONTENT\n[No topic yet. Ask me for my topic or script before building anything.]\n\nVOICEOVER TIMING\n[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.]\n\nHow to use the timing:\n- 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.\n- Set the duration to the last word's end plus about 1.2 seconds.\n- Build the timeline (TL) from these times. The camera starts moving to the next object about 0.3 s before it is named, its dimension line draws on its name and its tag lands on the number.\n- 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.\n- Put the emphasis moves on stressed words. A counter lands at the exact moment its number is spoken.\n- Keep the player's \"Load voiceover\" button working so I can drop in my audio and hear it in sync.\n\nSTORYBOARD FIRST\nBefore building, show me a storyboard and wait for my OK:\n- 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.\n- 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.\n- Below the grid, list any facts or numbers you had to assume.\nWhen I approve it (or after my changes), build the full animation and reuse the storyboard's drawing code.\n\nWHAT TO BUILD\nOne self-contained HTML file (an artifact if you can), built on the reference file below:\n- 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.\n- Keep the canvas at 720x1280 (9:16, for Shorts, Reels and TikTok).\n- Keep the Three.js r128 script tag and build every 3D object in code: no models or textures from the web.\n- Replace the demo's story: TL, ITEMS (names, real sizes, shapes, colours, positions), the shapes in init3(), the camera keys in CAMK, the tags in overlay() and scoreSound(). Keep and reuse the style's helpers (makeGL(), lights3(), the endless floor with GridHelper and fog, the camera track (track over CAMK), dimension lines drawn from proj3() of base and top, the dark height chips, wordLine() and grain()).\n- Aim for 15 to 40 seconds unless my content needs more, and set the duration in TL.D.\n- Keep window.seek(t), window.DURATION, window.scoreSound and window.SFX exposed, so the video can be rendered frame by frame.\n- Load the style's fonts before the first draw, as the reference does: Archivo Black, JetBrains Mono (500 and 700).\n\nTHE STYLE\n- Every object is built from simple Three.js primitives at its real size in metres (1 unit = 1 m) and stands on the same floor. Simplify shapes (capsules, ellipsoids, boxes) but keep proportions true: never scale anything up \"for readability\".\n- Order is always smallest to biggest, left to right, with even gaps. The camera trucks right and pulls back so each new object enters from the right.\n- Floor: pale blue-grey (#e8eef4) with a soft grid and fog so it reads as endless. One soft shadow-casting light.\n- Tags: a 2 px dimension line with end ticks beside each object (base to top), a dark navy chip (#14263d) with the size, and a small mono name above it.\n- Type: Archivo Black headline at the top in navy with the second line in blue (#2f6bd8). JetBrains Mono for every number.\n- Use real, typical sizes and say \"up to\" when you show a maximum.\n- Pace: hold the first object about 2 seconds, then one new object every 2 to 2.5 seconds, and hold the full lineup about 3 seconds.\n\nRULES THAT KEEP IT IN STYLE\n- 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.\n- 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.\n- It will be watched on phones: at 720x1280 keep the headline at 60 px or more, height tags at 24 px or more and names at 20 px or more. Fill the frame.\n- Keep each frame fast, well under 50 ms.\n- Give my topic its own demo content; do not reuse the reference's story (\"How big is a blue whale?\") unless my content asks for it.\n\nSOUND\n- Bed: a light, curious pad (padBed) with soft hats.\n- Map events to the kit: soft footsteps (SND.tap) while the camera travels; each new tag gets a pluck that climbs in pitch; dimension lines get a short \"tick\"; the giant gets a long, low swell with a slow pitch bend and a \"boom\"; the takeaway gets an open chord.\n- Voiceover mix: the player calls SFX.live with { voiceover: true } once narration is loaded. Mark steps and plucks soft: true and keep the low swell for the final reveal.\n- Sync is everything: the sound score reads the same TL times as the picture.\n\nIF YOU CAN RUN CODE\nRender 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.\n\nSTYLE CARD\nName: Size Lineup\nFamily: 3D\nLook: Things lined up smallest to biggest on an endless pale floor with a grid, built in Three.js, while the camera glides past and pulls back. Each one gets a dimension line and a dark height tag.\nHow it explains: The camera starts close on the smallest thing, then trucks sideways and pulls back as each bigger one enters, so the scale keeps growing. Height lines draw themselves beside each object, and the final pull-back shows the whole lineup with the giant at the end.\n"
|
|
475
|
+
},
|
|
476
|
+
{
|
|
477
|
+
"id": "data-city",
|
|
478
|
+
"num": "14",
|
|
479
|
+
"name": "Data City",
|
|
480
|
+
"family": "3D",
|
|
481
|
+
"canvas": "720x1280",
|
|
482
|
+
"tall": true,
|
|
483
|
+
"lib": true,
|
|
484
|
+
"three": true,
|
|
485
|
+
"look": "A 3D bar chart that grows like a city skyline at night, built in Three.js: navy towers with lit windows, glowing cyan-to-magenta roofs, a grid floor fading into fog, and values floating above each tower.",
|
|
486
|
+
"how": "Towers rise one by one with their values counting up while the camera slowly circles the skyline. The tallest gets a light beam and a callout, then the camera rises over the city for the takeaway number.",
|
|
487
|
+
"fonts": "Space Grotesk (500 and 700), JetBrains Mono (700)",
|
|
488
|
+
"demo": "Hours online per day, 2018 to 2024 (example data)",
|
|
489
|
+
"replace": "TL, DATA (labels and values), the colour ramp, the highlight index, the headline, callout and takeaway text in overlay() and scoreSound()",
|
|
490
|
+
"keep": "makeGL(), the grid floor and fog, towers built from DATA with window strips and emissive roofs, the rise-and-count timing, the orbiting camera, the beam, proj3() value labels, the glow pass, chip() and wordLine()",
|
|
491
|
+
"sizes": "keep the headline at 56 px or more, values at 26 px or more and axis labels at 20 px or more",
|
|
492
|
+
"voLine": "Each tower starts rising as its label is said and its value locks on the number; the beam lands on the stressed word of the highlight.",
|
|
493
|
+
"full": "- Full mix (no voiceover): keep the pulsing bass pad, at most about 3 sounds at once, and a short gap before the highlight.",
|
|
494
|
+
"voMix": "- Voiceover mix: the player calls SFX.live with { voiceover: true } once narration is loaded. Mark plucks and ticks soft: true and keep the swell for the highlight.",
|
|
495
|
+
"sheet": [
|
|
496
|
+
"Data first: tower heights are exactly proportional to the values (one scale, baseline at zero). Label every tower on the floor and print its value above it. If the data is illustrative, keep an \"EXAMPLE DATA\" chip on screen.",
|
|
497
|
+
"Towers: navy boxes (#1c2a6e) with thin lit window strips on the front and a glowing roof whose colour runs from cyan (#33e1ff) to magenta (#ff4fd8) across the series.",
|
|
498
|
+
"Night city: deep navy background (#080d22), a blue grid floor, fog so the far edge fades, and a soft screen-blended glow above each roof.",
|
|
499
|
+
"Camera: a slow orbit around the skyline, then a rise above it for the takeaway. No cuts.",
|
|
500
|
+
"Type: Space Grotesk 700 headline top left in white with the second line in cyan; JetBrains Mono for values and labels.",
|
|
501
|
+
"Highlight: a translucent beam rises from the key tower, with a white callout card.",
|
|
502
|
+
"Pace: one tower every 0.3 to 0.5 seconds, hold the full skyline about 2 seconds, then the highlight and the takeaway."
|
|
503
|
+
],
|
|
504
|
+
"sound": [
|
|
505
|
+
"Bed: a dark synth pad with a pulsing bass on the beat (padBed with kick) and light hats.",
|
|
506
|
+
"Map events to the kit: each tower rising gets a pluck whose pitch follows its height; values \"tick\" while counting; the beam gets \"riser\" and a bright swell; the callout gets \"pop\"; the takeaway gets \"shimmer\"."
|
|
507
|
+
],
|
|
508
|
+
"sourceFile": "sources/data-city.html",
|
|
509
|
+
"promptFile": "prompts/data-city.md",
|
|
510
|
+
"sourceBytes": 59756,
|
|
511
|
+
"prompt": "I want an animated video in the \"Data City\" 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.\n\nMY CONTENT\n[No topic yet. Ask me for my topic or script before building anything.]\n\nBUILD DIRECTLY\nSkip the storyboard and build the full animation now. Afterwards, list any facts or numbers you assumed.\n\nWHAT TO BUILD\nOne self-contained HTML file (an artifact if you can), built on the reference file below:\n- 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.\n- Keep the canvas at 720x1280 (9:16, for Shorts, Reels and TikTok).\n- Keep the Three.js r128 script tag and build every 3D object in code: no models or textures from the web.\n- Replace the demo's story: TL, DATA (labels and values), the colour ramp, the highlight index, the headline, callout and takeaway text in overlay() and scoreSound(). Keep and reuse the style's helpers (makeGL(), the grid floor and fog, towers built from DATA with window strips and emissive roofs, the rise-and-count timing, the orbiting camera, the beam, proj3() value labels, the glow pass, chip() and wordLine()).\n- Aim for 15 to 40 seconds unless my content needs more, and set the duration in TL.D.\n- Keep window.seek(t), window.DURATION, window.scoreSound and window.SFX exposed, so the video can be rendered frame by frame.\n- Load the style's fonts before the first draw, as the reference does: Space Grotesk (500 and 700), JetBrains Mono (700).\n\nTHE STYLE\n- Data first: tower heights are exactly proportional to the values (one scale, baseline at zero). Label every tower on the floor and print its value above it. If the data is illustrative, keep an \"EXAMPLE DATA\" chip on screen.\n- Towers: navy boxes (#1c2a6e) with thin lit window strips on the front and a glowing roof whose colour runs from cyan (#33e1ff) to magenta (#ff4fd8) across the series.\n- Night city: deep navy background (#080d22), a blue grid floor, fog so the far edge fades, and a soft screen-blended glow above each roof.\n- Camera: a slow orbit around the skyline, then a rise above it for the takeaway. No cuts.\n- Type: Space Grotesk 700 headline top left in white with the second line in cyan; JetBrains Mono for values and labels.\n- Highlight: a translucent beam rises from the key tower, with a white callout card.\n- Pace: one tower every 0.3 to 0.5 seconds, hold the full skyline about 2 seconds, then the highlight and the takeaway.\n\nRULES THAT KEEP IT IN STYLE\n- 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.\n- 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.\n- It will be watched on phones: at 720x1280 keep the headline at 56 px or more, values at 26 px or more and axis labels at 20 px or more. Fill the frame.\n- Keep each frame fast, well under 50 ms.\n- Give my topic its own demo content; do not reuse the reference's story (\"Hours online per day, 2018 to 2024 (example data)\") unless my content asks for it.\n\nSOUND\n- Bed: a dark synth pad with a pulsing bass on the beat (padBed with kick) and light hats.\n- Map events to the kit: each tower rising gets a pluck whose pitch follows its height; values \"tick\" while counting; the beam gets \"riser\" and a bright swell; the callout gets \"pop\"; the takeaway gets \"shimmer\".\n- Full mix (no voiceover): keep the pulsing bass pad, at most about 3 sounds at once, and a short gap before the highlight.\n- Sync is everything: the sound score reads the same TL times as the picture.\n\nIF YOU CAN RUN CODE\nRender 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.\n\nSTYLE CARD\nName: Data City\nFamily: 3D\nLook: A 3D bar chart that grows like a city skyline at night, built in Three.js: navy towers with lit windows, glowing cyan-to-magenta roofs, a grid floor fading into fog, and values floating above each tower.\nHow it explains: Towers rise one by one with their values counting up while the camera slowly circles the skyline. The tallest gets a light beam and a callout, then the camera rises over the city for the takeaway number.\n",
|
|
512
|
+
"promptVo": "I want an animated video in the \"Data City\" 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.\n\nMY CONTENT\n[No topic yet. Ask me for my topic or script before building anything.]\n\nVOICEOVER TIMING\n[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.]\n\nHow to use the timing:\n- 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.\n- Set the duration to the last word's end plus about 1.2 seconds.\n- Build the timeline (TL) from these times. Each tower starts rising as its label is said and its value locks on the number; the beam lands on the stressed word of the highlight.\n- 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.\n- Put the emphasis moves on stressed words. A counter lands at the exact moment its number is spoken.\n- Keep the player's \"Load voiceover\" button working so I can drop in my audio and hear it in sync.\n\nSTORYBOARD FIRST\nBefore building, show me a storyboard and wait for my OK:\n- 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.\n- 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.\n- Below the grid, list any facts or numbers you had to assume.\nWhen I approve it (or after my changes), build the full animation and reuse the storyboard's drawing code.\n\nWHAT TO BUILD\nOne self-contained HTML file (an artifact if you can), built on the reference file below:\n- 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.\n- Keep the canvas at 720x1280 (9:16, for Shorts, Reels and TikTok).\n- Keep the Three.js r128 script tag and build every 3D object in code: no models or textures from the web.\n- Replace the demo's story: TL, DATA (labels and values), the colour ramp, the highlight index, the headline, callout and takeaway text in overlay() and scoreSound(). Keep and reuse the style's helpers (makeGL(), the grid floor and fog, towers built from DATA with window strips and emissive roofs, the rise-and-count timing, the orbiting camera, the beam, proj3() value labels, the glow pass, chip() and wordLine()).\n- Aim for 15 to 40 seconds unless my content needs more, and set the duration in TL.D.\n- Keep window.seek(t), window.DURATION, window.scoreSound and window.SFX exposed, so the video can be rendered frame by frame.\n- Load the style's fonts before the first draw, as the reference does: Space Grotesk (500 and 700), JetBrains Mono (700).\n\nTHE STYLE\n- Data first: tower heights are exactly proportional to the values (one scale, baseline at zero). Label every tower on the floor and print its value above it. If the data is illustrative, keep an \"EXAMPLE DATA\" chip on screen.\n- Towers: navy boxes (#1c2a6e) with thin lit window strips on the front and a glowing roof whose colour runs from cyan (#33e1ff) to magenta (#ff4fd8) across the series.\n- Night city: deep navy background (#080d22), a blue grid floor, fog so the far edge fades, and a soft screen-blended glow above each roof.\n- Camera: a slow orbit around the skyline, then a rise above it for the takeaway. No cuts.\n- Type: Space Grotesk 700 headline top left in white with the second line in cyan; JetBrains Mono for values and labels.\n- Highlight: a translucent beam rises from the key tower, with a white callout card.\n- Pace: one tower every 0.3 to 0.5 seconds, hold the full skyline about 2 seconds, then the highlight and the takeaway.\n\nRULES THAT KEEP IT IN STYLE\n- 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.\n- 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.\n- It will be watched on phones: at 720x1280 keep the headline at 56 px or more, values at 26 px or more and axis labels at 20 px or more. Fill the frame.\n- Keep each frame fast, well under 50 ms.\n- Give my topic its own demo content; do not reuse the reference's story (\"Hours online per day, 2018 to 2024 (example data)\") unless my content asks for it.\n\nSOUND\n- Bed: a dark synth pad with a pulsing bass on the beat (padBed with kick) and light hats.\n- Map events to the kit: each tower rising gets a pluck whose pitch follows its height; values \"tick\" while counting; the beam gets \"riser\" and a bright swell; the callout gets \"pop\"; the takeaway gets \"shimmer\".\n- Voiceover mix: the player calls SFX.live with { voiceover: true } once narration is loaded. Mark plucks and ticks soft: true and keep the swell for the highlight.\n- Sync is everything: the sound score reads the same TL times as the picture.\n\nIF YOU CAN RUN CODE\nRender 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.\n\nSTYLE CARD\nName: Data City\nFamily: 3D\nLook: A 3D bar chart that grows like a city skyline at night, built in Three.js: navy towers with lit windows, glowing cyan-to-magenta roofs, a grid floor fading into fog, and values floating above each tower.\nHow it explains: Towers rise one by one with their values counting up while the camera slowly circles the skyline. The tallest gets a light beam and a callout, then the camera rises over the city for the takeaway number.\n"
|
|
513
|
+
},
|
|
514
|
+
{
|
|
515
|
+
"id": "glass-icons",
|
|
516
|
+
"num": "15",
|
|
517
|
+
"name": "Glass Icons",
|
|
518
|
+
"family": "3D",
|
|
519
|
+
"canvas": "720x1280",
|
|
520
|
+
"tall": true,
|
|
521
|
+
"lib": true,
|
|
522
|
+
"three": true,
|
|
523
|
+
"look": "Glossy translucent 3D app icons in Three.js, floating on a soft mint, sky and peach gradient, each with a white symbol on its face, frosted labels and a crisp black headline.",
|
|
524
|
+
"how": "The icons float in from depth into a loose stack, then one at a time an icon swings forward to the centre, turns to face you and gets a frosted card with its number, name and one-line benefit while the others dim back. The takeaway lines them all up in a row.",
|
|
525
|
+
"fonts": "Inter (500 to 900), JetBrains Mono (700)",
|
|
526
|
+
"demo": "5 AI tools that save hours (tool types, not brands)",
|
|
527
|
+
"replace": "TL, ICONS (colours, symbols, names, one-liners), the focus order, the headline and takeaway text and scoreSound()",
|
|
528
|
+
"keep": "makeGL(), the rounded-square extruded icon geometry with clearcoat glass, the coloured point lights, the float/focus/line-up motion in pose(), the frosted info card, the gradient background, chip() and wordLine()",
|
|
529
|
+
"sizes": "keep the headline at 64 px or more, the card title at 48 px or more and card text at 28 px or more",
|
|
530
|
+
"voLine": "An icon swings forward on the first word of its item, its name lands on that word, and the line-up lands on the first word of the takeaway.",
|
|
531
|
+
"full": "- Full mix (no voiceover): keep the bright pad, at most about 3 sounds at once, and a clean glass chime on each focus.",
|
|
532
|
+
"voMix": "- Voiceover mix: the player calls SFX.live with { voiceover: true } once narration is loaded. Mark chimes and ticks soft: true and keep the whoosh quiet.",
|
|
533
|
+
"sheet": [
|
|
534
|
+
"Icons are real 3D: rounded squares extruded with a bevel, MeshPhysicalMaterial with clearcoat and slight transparency, each a different soft colour, with a simple white 3D symbol on the face. Never use a real app logo or brand; describe tool types.",
|
|
535
|
+
"Background: a soft three-colour gradient (mint #c7f0e4, sky #c8dcff, peach #ffd9c7) painted in 2D behind a transparent WebGL canvas, lit by two coloured point lights for glassy highlights.",
|
|
536
|
+
"One icon is in focus at a time: it swings to the centre, grows and faces the camera; the rest float smaller and dimmer behind it.",
|
|
537
|
+
"Info card: frosted white (rgba white 0.7, white border) under the focused icon with a mono number, an Inter 800 name and one plain benefit line.",
|
|
538
|
+
"Type: Inter 900 headline in near-black (#0f1a2a), second line blue (#2d5bff); JetBrains Mono for numbers and tags.",
|
|
539
|
+
"Pace: icons arrive in the first 1.5 seconds, then one focus every 2 seconds, and the line-up holds about 2 seconds."
|
|
540
|
+
],
|
|
541
|
+
"sound": [
|
|
542
|
+
"Bed: a bright, airy pad with light hats.",
|
|
543
|
+
"Map events to the kit: icons arriving get soft glassy pings; each focus gets a soft \"whoosh\" and a two-note glass chime (SND.chime) that climbs; card text gets a soft tick; the line-up gets a rising arpeggio and \"shimmer\"."
|
|
544
|
+
],
|
|
545
|
+
"sourceFile": "sources/glass-icons.html",
|
|
546
|
+
"promptFile": "prompts/glass-icons.md",
|
|
547
|
+
"sourceBytes": 59698,
|
|
548
|
+
"prompt": "I want an animated video in the \"Glass Icons\" 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.\n\nMY CONTENT\n[No topic yet. Ask me for my topic or script before building anything.]\n\nBUILD DIRECTLY\nSkip the storyboard and build the full animation now. Afterwards, list any facts or numbers you assumed.\n\nWHAT TO BUILD\nOne self-contained HTML file (an artifact if you can), built on the reference file below:\n- 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.\n- Keep the canvas at 720x1280 (9:16, for Shorts, Reels and TikTok).\n- Keep the Three.js r128 script tag and build every 3D object in code: no models or textures from the web.\n- Replace the demo's story: TL, ICONS (colours, symbols, names, one-liners), the focus order, the headline and takeaway text and scoreSound(). Keep and reuse the style's helpers (makeGL(), the rounded-square extruded icon geometry with clearcoat glass, the coloured point lights, the float/focus/line-up motion in pose(), the frosted info card, the gradient background, chip() and wordLine()).\n- Aim for 15 to 40 seconds unless my content needs more, and set the duration in TL.D.\n- Keep window.seek(t), window.DURATION, window.scoreSound and window.SFX exposed, so the video can be rendered frame by frame.\n- Load the style's fonts before the first draw, as the reference does: Inter (500 to 900), JetBrains Mono (700).\n\nTHE STYLE\n- Icons are real 3D: rounded squares extruded with a bevel, MeshPhysicalMaterial with clearcoat and slight transparency, each a different soft colour, with a simple white 3D symbol on the face. Never use a real app logo or brand; describe tool types.\n- Background: a soft three-colour gradient (mint #c7f0e4, sky #c8dcff, peach #ffd9c7) painted in 2D behind a transparent WebGL canvas, lit by two coloured point lights for glassy highlights.\n- One icon is in focus at a time: it swings to the centre, grows and faces the camera; the rest float smaller and dimmer behind it.\n- Info card: frosted white (rgba white 0.7, white border) under the focused icon with a mono number, an Inter 800 name and one plain benefit line.\n- Type: Inter 900 headline in near-black (#0f1a2a), second line blue (#2d5bff); JetBrains Mono for numbers and tags.\n- Pace: icons arrive in the first 1.5 seconds, then one focus every 2 seconds, and the line-up holds about 2 seconds.\n\nRULES THAT KEEP IT IN STYLE\n- 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.\n- 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.\n- It will be watched on phones: at 720x1280 keep the headline at 64 px or more, the card title at 48 px or more and card text at 28 px or more. Fill the frame.\n- Keep each frame fast, well under 50 ms.\n- Give my topic its own demo content; do not reuse the reference's story (\"5 AI tools that save hours (tool types, not brands)\") unless my content asks for it.\n\nSOUND\n- Bed: a bright, airy pad with light hats.\n- Map events to the kit: icons arriving get soft glassy pings; each focus gets a soft \"whoosh\" and a two-note glass chime (SND.chime) that climbs; card text gets a soft tick; the line-up gets a rising arpeggio and \"shimmer\".\n- Full mix (no voiceover): keep the bright pad, at most about 3 sounds at once, and a clean glass chime on each focus.\n- Sync is everything: the sound score reads the same TL times as the picture.\n\nIF YOU CAN RUN CODE\nRender 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.\n\nSTYLE CARD\nName: Glass Icons\nFamily: 3D\nLook: Glossy translucent 3D app icons in Three.js, floating on a soft mint, sky and peach gradient, each with a white symbol on its face, frosted labels and a crisp black headline.\nHow it explains: The icons float in from depth into a loose stack, then one at a time an icon swings forward to the centre, turns to face you and gets a frosted card with its number, name and one-line benefit while the others dim back. The takeaway lines them all up in a row.\n",
|
|
549
|
+
"promptVo": "I want an animated video in the \"Glass Icons\" 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.\n\nMY CONTENT\n[No topic yet. Ask me for my topic or script before building anything.]\n\nVOICEOVER TIMING\n[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.]\n\nHow to use the timing:\n- 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.\n- Set the duration to the last word's end plus about 1.2 seconds.\n- Build the timeline (TL) from these times. An icon swings forward on the first word of its item, its name lands on that word, and the line-up lands on the first word of the takeaway.\n- 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.\n- Put the emphasis moves on stressed words. A counter lands at the exact moment its number is spoken.\n- Keep the player's \"Load voiceover\" button working so I can drop in my audio and hear it in sync.\n\nSTORYBOARD FIRST\nBefore building, show me a storyboard and wait for my OK:\n- 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.\n- 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.\n- Below the grid, list any facts or numbers you had to assume.\nWhen I approve it (or after my changes), build the full animation and reuse the storyboard's drawing code.\n\nWHAT TO BUILD\nOne self-contained HTML file (an artifact if you can), built on the reference file below:\n- 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.\n- Keep the canvas at 720x1280 (9:16, for Shorts, Reels and TikTok).\n- Keep the Three.js r128 script tag and build every 3D object in code: no models or textures from the web.\n- Replace the demo's story: TL, ICONS (colours, symbols, names, one-liners), the focus order, the headline and takeaway text and scoreSound(). Keep and reuse the style's helpers (makeGL(), the rounded-square extruded icon geometry with clearcoat glass, the coloured point lights, the float/focus/line-up motion in pose(), the frosted info card, the gradient background, chip() and wordLine()).\n- Aim for 15 to 40 seconds unless my content needs more, and set the duration in TL.D.\n- Keep window.seek(t), window.DURATION, window.scoreSound and window.SFX exposed, so the video can be rendered frame by frame.\n- Load the style's fonts before the first draw, as the reference does: Inter (500 to 900), JetBrains Mono (700).\n\nTHE STYLE\n- Icons are real 3D: rounded squares extruded with a bevel, MeshPhysicalMaterial with clearcoat and slight transparency, each a different soft colour, with a simple white 3D symbol on the face. Never use a real app logo or brand; describe tool types.\n- Background: a soft three-colour gradient (mint #c7f0e4, sky #c8dcff, peach #ffd9c7) painted in 2D behind a transparent WebGL canvas, lit by two coloured point lights for glassy highlights.\n- One icon is in focus at a time: it swings to the centre, grows and faces the camera; the rest float smaller and dimmer behind it.\n- Info card: frosted white (rgba white 0.7, white border) under the focused icon with a mono number, an Inter 800 name and one plain benefit line.\n- Type: Inter 900 headline in near-black (#0f1a2a), second line blue (#2d5bff); JetBrains Mono for numbers and tags.\n- Pace: icons arrive in the first 1.5 seconds, then one focus every 2 seconds, and the line-up holds about 2 seconds.\n\nRULES THAT KEEP IT IN STYLE\n- 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.\n- 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.\n- It will be watched on phones: at 720x1280 keep the headline at 64 px or more, the card title at 48 px or more and card text at 28 px or more. Fill the frame.\n- Keep each frame fast, well under 50 ms.\n- Give my topic its own demo content; do not reuse the reference's story (\"5 AI tools that save hours (tool types, not brands)\") unless my content asks for it.\n\nSOUND\n- Bed: a bright, airy pad with light hats.\n- Map events to the kit: icons arriving get soft glassy pings; each focus gets a soft \"whoosh\" and a two-note glass chime (SND.chime) that climbs; card text gets a soft tick; the line-up gets a rising arpeggio and \"shimmer\".\n- Voiceover mix: the player calls SFX.live with { voiceover: true } once narration is loaded. Mark chimes and ticks soft: true and keep the whoosh quiet.\n- Sync is everything: the sound score reads the same TL times as the picture.\n\nIF YOU CAN RUN CODE\nRender 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.\n\nSTYLE CARD\nName: Glass Icons\nFamily: 3D\nLook: Glossy translucent 3D app icons in Three.js, floating on a soft mint, sky and peach gradient, each with a white symbol on its face, frosted labels and a crisp black headline.\nHow it explains: The icons float in from depth into a loose stack, then one at a time an icon swings forward to the centre, turns to face you and gets a frosted card with its number, name and one-line benefit while the others dim back. The takeaway lines them all up in a row.\n"
|
|
550
|
+
},
|
|
551
|
+
{
|
|
552
|
+
"id": "iso-cutaway",
|
|
553
|
+
"num": "16",
|
|
554
|
+
"name": "Iso Cutaway",
|
|
555
|
+
"family": "3D",
|
|
556
|
+
"canvas": "720x1280",
|
|
557
|
+
"tall": true,
|
|
558
|
+
"lib": true,
|
|
559
|
+
"three": true,
|
|
560
|
+
"look": "An isometric cutaway building in Three.js with an orthographic camera: floors like a doll house, warm wall colours, tiny people, and a sky that goes from night blue to morning warm as a clock chip runs.",
|
|
561
|
+
"how": "A clock chip ticks through the day while each floor lights up in turn: tiny people move between spots, machines glow, small props appear, and a dark time-stamped label points at the floor that is busy. The takeaway lands once the day is done.",
|
|
562
|
+
"fonts": "Bricolage Grotesque (600 and 800), JetBrains Mono (700)",
|
|
563
|
+
"demo": "A day inside a bakery",
|
|
564
|
+
"replace": "TL, FLOORS (wall colours, props, people and their paths), the clock range, the labels, the headline and takeaway and scoreSound()",
|
|
565
|
+
"keep": "makeGL(), the orthographic iso camera, the floor slab and two back walls per storey, tiny capsule people that walk between waypoints, the night-to-day sky and light ramp, the clock chip, the dark labels on leader lines, wordLine()",
|
|
566
|
+
"sizes": "keep the headline at 60 px or more, labels at 22 px or more and the clock at 40 px or more",
|
|
567
|
+
"voLine": "The clock jumps to each time as it is said, the floor it names lights up on the same word, and its label lands on the time.",
|
|
568
|
+
"full": "- Full mix (no voiceover): keep the cosy pad and the clock ticks, at most about 3 sounds at once.",
|
|
569
|
+
"voMix": "- Voiceover mix: the player calls SFX.live with { voiceover: true } once narration is loaded. Keep the clock ticks soft: true and very low.",
|
|
570
|
+
"sheet": [
|
|
571
|
+
"One building, seen in true isometric with an OrthographicCamera, built from boxes: a slab per floor, two back walls per floor in a distinct warm colour, props from boxes, cylinders and spheres, people as tiny capsules with round heads.",
|
|
572
|
+
"Time is the story: a clock chip at the top runs through the day, the sky colour and light warm from night blue (#1d2a4a) to morning cream (#fde8d2), and each floor gets its moment.",
|
|
573
|
+
"Only the active floor is fully lit; the others sit slightly darker. People walk between waypoints with an ease and a small bob.",
|
|
574
|
+
"Labels: dark brown chips (#3b2416) with a mono time and verb, on leader lines from the floor to the right edge.",
|
|
575
|
+
"Type: Bricolage Grotesque 800 headline in dark brown with the second line in the accent (#d9542b).",
|
|
576
|
+
"Pace: one floor beat every 2.5 to 3 seconds, clock ticks every half hour of story time."
|
|
577
|
+
],
|
|
578
|
+
"sound": [
|
|
579
|
+
"Bed: a cosy, warm pad (padBed) and a steady soft clock tick.",
|
|
580
|
+
"Map events to the kit: each floor lighting up gets a soft \"whoosh\" and a pluck; machines get a low hum; people stepping get soft taps; the shop opening gets a two-note bell (SND.chime); the takeaway gets an open chord."
|
|
581
|
+
],
|
|
582
|
+
"sourceFile": "sources/iso-cutaway.html",
|
|
583
|
+
"promptFile": "prompts/iso-cutaway.md",
|
|
584
|
+
"sourceBytes": 61401,
|
|
585
|
+
"prompt": "I want an animated video in the \"Iso Cutaway\" 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.\n\nMY CONTENT\n[No topic yet. Ask me for my topic or script before building anything.]\n\nBUILD DIRECTLY\nSkip the storyboard and build the full animation now. Afterwards, list any facts or numbers you assumed.\n\nWHAT TO BUILD\nOne self-contained HTML file (an artifact if you can), built on the reference file below:\n- 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.\n- Keep the canvas at 720x1280 (9:16, for Shorts, Reels and TikTok).\n- Keep the Three.js r128 script tag and build every 3D object in code: no models or textures from the web.\n- Replace the demo's story: TL, FLOORS (wall colours, props, people and their paths), the clock range, the labels, the headline and takeaway and scoreSound(). Keep and reuse the style's helpers (makeGL(), the orthographic iso camera, the floor slab and two back walls per storey, tiny capsule people that walk between waypoints, the night-to-day sky and light ramp, the clock chip, the dark labels on leader lines, wordLine()).\n- Aim for 15 to 40 seconds unless my content needs more, and set the duration in TL.D.\n- Keep window.seek(t), window.DURATION, window.scoreSound and window.SFX exposed, so the video can be rendered frame by frame.\n- Load the style's fonts before the first draw, as the reference does: Bricolage Grotesque (600 and 800), JetBrains Mono (700).\n\nTHE STYLE\n- One building, seen in true isometric with an OrthographicCamera, built from boxes: a slab per floor, two back walls per floor in a distinct warm colour, props from boxes, cylinders and spheres, people as tiny capsules with round heads.\n- Time is the story: a clock chip at the top runs through the day, the sky colour and light warm from night blue (#1d2a4a) to morning cream (#fde8d2), and each floor gets its moment.\n- Only the active floor is fully lit; the others sit slightly darker. People walk between waypoints with an ease and a small bob.\n- Labels: dark brown chips (#3b2416) with a mono time and verb, on leader lines from the floor to the right edge.\n- Type: Bricolage Grotesque 800 headline in dark brown with the second line in the accent (#d9542b).\n- Pace: one floor beat every 2.5 to 3 seconds, clock ticks every half hour of story time.\n\nRULES THAT KEEP IT IN STYLE\n- 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.\n- 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.\n- It will be watched on phones: at 720x1280 keep the headline at 60 px or more, labels at 22 px or more and the clock at 40 px or more. Fill the frame.\n- Keep each frame fast, well under 50 ms.\n- Give my topic its own demo content; do not reuse the reference's story (\"A day inside a bakery\") unless my content asks for it.\n\nSOUND\n- Bed: a cosy, warm pad (padBed) and a steady soft clock tick.\n- Map events to the kit: each floor lighting up gets a soft \"whoosh\" and a pluck; machines get a low hum; people stepping get soft taps; the shop opening gets a two-note bell (SND.chime); the takeaway gets an open chord.\n- Full mix (no voiceover): keep the cosy pad and the clock ticks, at most about 3 sounds at once.\n- Sync is everything: the sound score reads the same TL times as the picture.\n\nIF YOU CAN RUN CODE\nRender 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.\n\nSTYLE CARD\nName: Iso Cutaway\nFamily: 3D\nLook: An isometric cutaway building in Three.js with an orthographic camera: floors like a doll house, warm wall colours, tiny people, and a sky that goes from night blue to morning warm as a clock chip runs.\nHow it explains: A clock chip ticks through the day while each floor lights up in turn: tiny people move between spots, machines glow, small props appear, and a dark time-stamped label points at the floor that is busy. The takeaway lands once the day is done.\n",
|
|
586
|
+
"promptVo": "I want an animated video in the \"Iso Cutaway\" 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.\n\nMY CONTENT\n[No topic yet. Ask me for my topic or script before building anything.]\n\nVOICEOVER TIMING\n[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.]\n\nHow to use the timing:\n- 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.\n- Set the duration to the last word's end plus about 1.2 seconds.\n- Build the timeline (TL) from these times. The clock jumps to each time as it is said, the floor it names lights up on the same word, and its label lands on the time.\n- 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.\n- Put the emphasis moves on stressed words. A counter lands at the exact moment its number is spoken.\n- Keep the player's \"Load voiceover\" button working so I can drop in my audio and hear it in sync.\n\nSTORYBOARD FIRST\nBefore building, show me a storyboard and wait for my OK:\n- 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.\n- 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.\n- Below the grid, list any facts or numbers you had to assume.\nWhen I approve it (or after my changes), build the full animation and reuse the storyboard's drawing code.\n\nWHAT TO BUILD\nOne self-contained HTML file (an artifact if you can), built on the reference file below:\n- 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.\n- Keep the canvas at 720x1280 (9:16, for Shorts, Reels and TikTok).\n- Keep the Three.js r128 script tag and build every 3D object in code: no models or textures from the web.\n- Replace the demo's story: TL, FLOORS (wall colours, props, people and their paths), the clock range, the labels, the headline and takeaway and scoreSound(). Keep and reuse the style's helpers (makeGL(), the orthographic iso camera, the floor slab and two back walls per storey, tiny capsule people that walk between waypoints, the night-to-day sky and light ramp, the clock chip, the dark labels on leader lines, wordLine()).\n- Aim for 15 to 40 seconds unless my content needs more, and set the duration in TL.D.\n- Keep window.seek(t), window.DURATION, window.scoreSound and window.SFX exposed, so the video can be rendered frame by frame.\n- Load the style's fonts before the first draw, as the reference does: Bricolage Grotesque (600 and 800), JetBrains Mono (700).\n\nTHE STYLE\n- One building, seen in true isometric with an OrthographicCamera, built from boxes: a slab per floor, two back walls per floor in a distinct warm colour, props from boxes, cylinders and spheres, people as tiny capsules with round heads.\n- Time is the story: a clock chip at the top runs through the day, the sky colour and light warm from night blue (#1d2a4a) to morning cream (#fde8d2), and each floor gets its moment.\n- Only the active floor is fully lit; the others sit slightly darker. People walk between waypoints with an ease and a small bob.\n- Labels: dark brown chips (#3b2416) with a mono time and verb, on leader lines from the floor to the right edge.\n- Type: Bricolage Grotesque 800 headline in dark brown with the second line in the accent (#d9542b).\n- Pace: one floor beat every 2.5 to 3 seconds, clock ticks every half hour of story time.\n\nRULES THAT KEEP IT IN STYLE\n- 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.\n- 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.\n- It will be watched on phones: at 720x1280 keep the headline at 60 px or more, labels at 22 px or more and the clock at 40 px or more. Fill the frame.\n- Keep each frame fast, well under 50 ms.\n- Give my topic its own demo content; do not reuse the reference's story (\"A day inside a bakery\") unless my content asks for it.\n\nSOUND\n- Bed: a cosy, warm pad (padBed) and a steady soft clock tick.\n- Map events to the kit: each floor lighting up gets a soft \"whoosh\" and a pluck; machines get a low hum; people stepping get soft taps; the shop opening gets a two-note bell (SND.chime); the takeaway gets an open chord.\n- Voiceover mix: the player calls SFX.live with { voiceover: true } once narration is loaded. Keep the clock ticks soft: true and very low.\n- Sync is everything: the sound score reads the same TL times as the picture.\n\nIF YOU CAN RUN CODE\nRender 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.\n\nSTYLE CARD\nName: Iso Cutaway\nFamily: 3D\nLook: An isometric cutaway building in Three.js with an orthographic camera: floors like a doll house, warm wall colours, tiny people, and a sky that goes from night blue to morning warm as a clock chip runs.\nHow it explains: A clock chip ticks through the day while each floor lights up in turn: tiny people move between spots, machines glow, small props appear, and a dark time-stamped label points at the floor that is busy. The takeaway lands once the day is done.\n"
|
|
587
|
+
},
|
|
588
|
+
{
|
|
589
|
+
"id": "globe-arcs",
|
|
590
|
+
"num": "17",
|
|
591
|
+
"name": "Globe Arcs",
|
|
592
|
+
"family": "3D",
|
|
593
|
+
"canvas": "720x1280",
|
|
594
|
+
"tall": true,
|
|
595
|
+
"lib": true,
|
|
596
|
+
"three": true,
|
|
597
|
+
"look": "A dark navy globe made of glowing cyan dots in Three.js, turning slowly in a starfield, with warm amber route arcs that draw themselves between pins and a soft blue atmosphere glow.",
|
|
598
|
+
"how": "The globe turns into view, a pin drops at the start, then each route arcs up off the surface and lands on its destination while a small dot travels along it. Labels pop at the ends and a counter adds up the distance before the takeaway.",
|
|
599
|
+
"fonts": "Space Grotesk (500 and 700), JetBrains Mono (700)",
|
|
600
|
+
"demo": "Where your coffee travels",
|
|
601
|
+
"replace": "TL, the land mask in landAt(), ROUTES (lat/lon pairs and names), the travelling dot, labels, counter, headline and takeaway text and scoreSound()",
|
|
602
|
+
"keep": "makeGL(), the dotted globe built from landAt(), ll() lat/lon placement, arcs as growing tubes (setDrawRange) on great-circle curves, pins with glow, the atmosphere pass, the starfield, proj3() labels, chip() and wordLine()",
|
|
603
|
+
"sizes": "keep the headline at 60 px or more, place labels at 22 px or more and the counter at 60 px or more",
|
|
604
|
+
"voLine": "A route starts drawing as its start is named and lands on its destination word, its pin glows on the same word, and the counter locks on the last spoken syllable of the distance.",
|
|
605
|
+
"full": "- Full mix (no voiceover): keep the airy pad, at most about 3 sounds at once, sonar pings for pins.",
|
|
606
|
+
"voMix": "- Voiceover mix: the player calls SFX.live with { voiceover: true } once narration is loaded. Mark pings and ticks soft: true and keep whooshes low.",
|
|
607
|
+
"sheet": [
|
|
608
|
+
"The globe is a dark sphere plus thousands of small cyan points placed where land is. For a real-world topic, make landAt(lat, lon) follow real continents (simple polygons or a coarse mask is fine) so routes start and end in the right places.",
|
|
609
|
+
"Routes are amber (#ffb547) tubes on great-circle arcs that lift off the surface (higher for longer routes) and grow with setDrawRange. Pins are small glowing spheres.",
|
|
610
|
+
"Space: near-black navy (#040913), a fixed starfield, and a soft blue atmosphere ring painted in 2D behind the labels.",
|
|
611
|
+
"Type: Space Grotesk 700 headline in white with the second line amber; JetBrains Mono for place chips (amber fill, dark text) and distances.",
|
|
612
|
+
"Use real places, real distances (say \"about\") and real times.",
|
|
613
|
+
"Pace: the globe turns into position in about 1.5 seconds, then one route every 1.5 to 2 seconds."
|
|
614
|
+
],
|
|
615
|
+
"sound": [
|
|
616
|
+
"Bed: an airy, slow pad with a soft low drone.",
|
|
617
|
+
"Map events to the kit: pins get a soft sonar ping (a sine with long verb); each arc gets a rising airy \"whoosh\"; the travelling dot gets a faint tick trail; the counter \"tick\"s when the shown number changes; the takeaway gets \"shimmer\"."
|
|
618
|
+
],
|
|
619
|
+
"sourceFile": "sources/globe-arcs.html",
|
|
620
|
+
"promptFile": "prompts/globe-arcs.md",
|
|
621
|
+
"sourceBytes": 61641,
|
|
622
|
+
"prompt": "I want an animated video in the \"Globe Arcs\" 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.\n\nMY CONTENT\n[No topic yet. Ask me for my topic or script before building anything.]\n\nBUILD DIRECTLY\nSkip the storyboard and build the full animation now. Afterwards, list any facts or numbers you assumed.\n\nWHAT TO BUILD\nOne self-contained HTML file (an artifact if you can), built on the reference file below:\n- 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.\n- Keep the canvas at 720x1280 (9:16, for Shorts, Reels and TikTok).\n- Keep the Three.js r128 script tag and build every 3D object in code: no models or textures from the web.\n- Replace the demo's story: TL, the land mask in landAt(), ROUTES (lat/lon pairs and names), the travelling dot, labels, counter, headline and takeaway text and scoreSound(). Keep and reuse the style's helpers (makeGL(), the dotted globe built from landAt(), ll() lat/lon placement, arcs as growing tubes (setDrawRange) on great-circle curves, pins with glow, the atmosphere pass, the starfield, proj3() labels, chip() and wordLine()).\n- Aim for 15 to 40 seconds unless my content needs more, and set the duration in TL.D.\n- Keep window.seek(t), window.DURATION, window.scoreSound and window.SFX exposed, so the video can be rendered frame by frame.\n- Load the style's fonts before the first draw, as the reference does: Space Grotesk (500 and 700), JetBrains Mono (700).\n\nTHE STYLE\n- The globe is a dark sphere plus thousands of small cyan points placed where land is. For a real-world topic, make landAt(lat, lon) follow real continents (simple polygons or a coarse mask is fine) so routes start and end in the right places.\n- Routes are amber (#ffb547) tubes on great-circle arcs that lift off the surface (higher for longer routes) and grow with setDrawRange. Pins are small glowing spheres.\n- Space: near-black navy (#040913), a fixed starfield, and a soft blue atmosphere ring painted in 2D behind the labels.\n- Type: Space Grotesk 700 headline in white with the second line amber; JetBrains Mono for place chips (amber fill, dark text) and distances.\n- Use real places, real distances (say \"about\") and real times.\n- Pace: the globe turns into position in about 1.5 seconds, then one route every 1.5 to 2 seconds.\n\nRULES THAT KEEP IT IN STYLE\n- 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.\n- 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.\n- It will be watched on phones: at 720x1280 keep the headline at 60 px or more, place labels at 22 px or more and the counter at 60 px or more. Fill the frame.\n- Keep each frame fast, well under 50 ms.\n- Give my topic its own demo content; do not reuse the reference's story (\"Where your coffee travels\") unless my content asks for it.\n\nSOUND\n- Bed: an airy, slow pad with a soft low drone.\n- Map events to the kit: pins get a soft sonar ping (a sine with long verb); each arc gets a rising airy \"whoosh\"; the travelling dot gets a faint tick trail; the counter \"tick\"s when the shown number changes; the takeaway gets \"shimmer\".\n- Full mix (no voiceover): keep the airy pad, at most about 3 sounds at once, sonar pings for pins.\n- Sync is everything: the sound score reads the same TL times as the picture.\n\nIF YOU CAN RUN CODE\nRender 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.\n\nSTYLE CARD\nName: Globe Arcs\nFamily: 3D\nLook: A dark navy globe made of glowing cyan dots in Three.js, turning slowly in a starfield, with warm amber route arcs that draw themselves between pins and a soft blue atmosphere glow.\nHow it explains: The globe turns into view, a pin drops at the start, then each route arcs up off the surface and lands on its destination while a small dot travels along it. Labels pop at the ends and a counter adds up the distance before the takeaway.\n",
|
|
623
|
+
"promptVo": "I want an animated video in the \"Globe Arcs\" 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.\n\nMY CONTENT\n[No topic yet. Ask me for my topic or script before building anything.]\n\nVOICEOVER TIMING\n[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.]\n\nHow to use the timing:\n- 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.\n- Set the duration to the last word's end plus about 1.2 seconds.\n- Build the timeline (TL) from these times. A route starts drawing as its start is named and lands on its destination word, its pin glows on the same word, and the counter locks on the last spoken syllable of the distance.\n- 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.\n- Put the emphasis moves on stressed words. A counter lands at the exact moment its number is spoken.\n- Keep the player's \"Load voiceover\" button working so I can drop in my audio and hear it in sync.\n\nSTORYBOARD FIRST\nBefore building, show me a storyboard and wait for my OK:\n- 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.\n- 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.\n- Below the grid, list any facts or numbers you had to assume.\nWhen I approve it (or after my changes), build the full animation and reuse the storyboard's drawing code.\n\nWHAT TO BUILD\nOne self-contained HTML file (an artifact if you can), built on the reference file below:\n- 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.\n- Keep the canvas at 720x1280 (9:16, for Shorts, Reels and TikTok).\n- Keep the Three.js r128 script tag and build every 3D object in code: no models or textures from the web.\n- Replace the demo's story: TL, the land mask in landAt(), ROUTES (lat/lon pairs and names), the travelling dot, labels, counter, headline and takeaway text and scoreSound(). Keep and reuse the style's helpers (makeGL(), the dotted globe built from landAt(), ll() lat/lon placement, arcs as growing tubes (setDrawRange) on great-circle curves, pins with glow, the atmosphere pass, the starfield, proj3() labels, chip() and wordLine()).\n- Aim for 15 to 40 seconds unless my content needs more, and set the duration in TL.D.\n- Keep window.seek(t), window.DURATION, window.scoreSound and window.SFX exposed, so the video can be rendered frame by frame.\n- Load the style's fonts before the first draw, as the reference does: Space Grotesk (500 and 700), JetBrains Mono (700).\n\nTHE STYLE\n- The globe is a dark sphere plus thousands of small cyan points placed where land is. For a real-world topic, make landAt(lat, lon) follow real continents (simple polygons or a coarse mask is fine) so routes start and end in the right places.\n- Routes are amber (#ffb547) tubes on great-circle arcs that lift off the surface (higher for longer routes) and grow with setDrawRange. Pins are small glowing spheres.\n- Space: near-black navy (#040913), a fixed starfield, and a soft blue atmosphere ring painted in 2D behind the labels.\n- Type: Space Grotesk 700 headline in white with the second line amber; JetBrains Mono for place chips (amber fill, dark text) and distances.\n- Use real places, real distances (say \"about\") and real times.\n- Pace: the globe turns into position in about 1.5 seconds, then one route every 1.5 to 2 seconds.\n\nRULES THAT KEEP IT IN STYLE\n- 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.\n- 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.\n- It will be watched on phones: at 720x1280 keep the headline at 60 px or more, place labels at 22 px or more and the counter at 60 px or more. Fill the frame.\n- Keep each frame fast, well under 50 ms.\n- Give my topic its own demo content; do not reuse the reference's story (\"Where your coffee travels\") unless my content asks for it.\n\nSOUND\n- Bed: an airy, slow pad with a soft low drone.\n- Map events to the kit: pins get a soft sonar ping (a sine with long verb); each arc gets a rising airy \"whoosh\"; the travelling dot gets a faint tick trail; the counter \"tick\"s when the shown number changes; the takeaway gets \"shimmer\".\n- Voiceover mix: the player calls SFX.live with { voiceover: true } once narration is loaded. Mark pings and ticks soft: true and keep whooshes low.\n- Sync is everything: the sound score reads the same TL times as the picture.\n\nIF YOU CAN RUN CODE\nRender 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.\n\nSTYLE CARD\nName: Globe Arcs\nFamily: 3D\nLook: A dark navy globe made of glowing cyan dots in Three.js, turning slowly in a starfield, with warm amber route arcs that draw themselves between pins and a soft blue atmosphere glow.\nHow it explains: The globe turns into view, a pin drops at the start, then each route arcs up off the surface and lands on its destination while a small dot travels along it. Labels pop at the ends and a counter adds up the distance before the takeaway.\n"
|
|
624
|
+
},
|
|
625
|
+
{
|
|
626
|
+
"id": "physics-toybox",
|
|
627
|
+
"num": "18",
|
|
628
|
+
"name": "Physics Toybox",
|
|
629
|
+
"family": "3D",
|
|
630
|
+
"canvas": "720x1280",
|
|
631
|
+
"tall": true,
|
|
632
|
+
"lib": true,
|
|
633
|
+
"three": true,
|
|
634
|
+
"look": "Bright plastic toys in Three.js on a sunny yellow floor: glossy balls, a white ramp and a curving chain of coloured dominoes that grow in size, with crisp shadows and a slow-motion moment on the key hit.",
|
|
635
|
+
"how": "A ball rolls down the ramp and starts a chain reaction you can follow beat by beat. Time slows to a quarter when the important thing happens (a chip says so), then snaps back to full speed for the big finish and the takeaway.",
|
|
636
|
+
"fonts": "Archivo Black, Inter (700 and 800), JetBrains Mono (700)",
|
|
637
|
+
"demo": "What if you tip a chain of growing dominoes?",
|
|
638
|
+
"replace": "TL, the chain (count, sizes, path, colours), the slow-motion window in simT(), the props, the facts in overlay() and scoreSound()",
|
|
639
|
+
"keep": "makeGL(), lights3() with shadows, the floor, the deterministic fall model (each piece starts when the previous one hits it), the simT() time remap for slow motion, motion streaks, chip() and wordLine()",
|
|
640
|
+
"sizes": "keep the headline at 56 px or more, the fact chip at 28 px or more and the slow-mo tag at 22 px or more",
|
|
641
|
+
"voLine": "The first hit lands on the word that starts the chain, slow motion begins on the word that sets up the key moment, and the last piece lands on the stressed word of the punchline.",
|
|
642
|
+
"full": "- Full mix (no voiceover): keep the playful pad, every hit audible, and a short gap before the last, biggest hit.",
|
|
643
|
+
"voMix": "- Voiceover mix: the player calls SFX.live with { voiceover: true } once narration is loaded. Mark clacks soft: true and keep the final thud full.",
|
|
644
|
+
"sheet": [
|
|
645
|
+
"Every object is a simple, glossy Three.js primitive in toy colours (#ff5a5f, #2ec4b6, #3a86ff, #ff9f1c, #8f5bff) on a warm yellow floor (#ffe39b) with sharp soft shadows.",
|
|
646
|
+
"Motion must be physically believable but deterministic: compute fall angles, rolls and bounces from t with simple formulas (no physics engine), each piece starting when the previous one reaches it.",
|
|
647
|
+
"Slow motion: remap time with simT(t) for one key window (0.25×) and show a dark \"0.25× SLOW-MO\" chip while it runs.",
|
|
648
|
+
"Type: Archivo Black headline in near-black with the second line red; one white fact chip at the bottom in Inter 700.",
|
|
649
|
+
"Use real physics facts (with the source idea in plain words).",
|
|
650
|
+
"Pace: the setup holds under 2 seconds, the chain runs, slow motion lasts 2 to 3 seconds, the takeaway holds about 2 seconds."
|
|
651
|
+
],
|
|
652
|
+
"sound": [
|
|
653
|
+
"Bed: a playful, light pad with soft hats.",
|
|
654
|
+
"Map events to the kit: a rolling ball gets a soft filtered noise roll; each domino hit gets a \"click\" plus a wooden tap whose pitch drops as the pieces get bigger; slow motion gets a pitched-down \"whoosh\"; the last big hit gets SND.thud and \"boom\"; the takeaway gets an open chord."
|
|
655
|
+
],
|
|
656
|
+
"sourceFile": "sources/physics-toybox.html",
|
|
657
|
+
"promptFile": "prompts/physics-toybox.md",
|
|
658
|
+
"sourceBytes": 60015,
|
|
659
|
+
"prompt": "I want an animated video in the \"Physics Toybox\" 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.\n\nMY CONTENT\n[No topic yet. Ask me for my topic or script before building anything.]\n\nBUILD DIRECTLY\nSkip the storyboard and build the full animation now. Afterwards, list any facts or numbers you assumed.\n\nWHAT TO BUILD\nOne self-contained HTML file (an artifact if you can), built on the reference file below:\n- 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.\n- Keep the canvas at 720x1280 (9:16, for Shorts, Reels and TikTok).\n- Keep the Three.js r128 script tag and build every 3D object in code: no models or textures from the web.\n- Replace the demo's story: TL, the chain (count, sizes, path, colours), the slow-motion window in simT(), the props, the facts in overlay() and scoreSound(). Keep and reuse the style's helpers (makeGL(), lights3() with shadows, the floor, the deterministic fall model (each piece starts when the previous one hits it), the simT() time remap for slow motion, motion streaks, chip() and wordLine()).\n- Aim for 15 to 40 seconds unless my content needs more, and set the duration in TL.D.\n- Keep window.seek(t), window.DURATION, window.scoreSound and window.SFX exposed, so the video can be rendered frame by frame.\n- Load the style's fonts before the first draw, as the reference does: Archivo Black, Inter (700 and 800), JetBrains Mono (700).\n\nTHE STYLE\n- Every object is a simple, glossy Three.js primitive in toy colours (#ff5a5f, #2ec4b6, #3a86ff, #ff9f1c, #8f5bff) on a warm yellow floor (#ffe39b) with sharp soft shadows.\n- Motion must be physically believable but deterministic: compute fall angles, rolls and bounces from t with simple formulas (no physics engine), each piece starting when the previous one reaches it.\n- Slow motion: remap time with simT(t) for one key window (0.25×) and show a dark \"0.25× SLOW-MO\" chip while it runs.\n- Type: Archivo Black headline in near-black with the second line red; one white fact chip at the bottom in Inter 700.\n- Use real physics facts (with the source idea in plain words).\n- Pace: the setup holds under 2 seconds, the chain runs, slow motion lasts 2 to 3 seconds, the takeaway holds about 2 seconds.\n\nRULES THAT KEEP IT IN STYLE\n- 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.\n- 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.\n- It will be watched on phones: at 720x1280 keep the headline at 56 px or more, the fact chip at 28 px or more and the slow-mo tag at 22 px or more. Fill the frame.\n- Keep each frame fast, well under 50 ms.\n- Give my topic its own demo content; do not reuse the reference's story (\"What if you tip a chain of growing dominoes?\") unless my content asks for it.\n\nSOUND\n- Bed: a playful, light pad with soft hats.\n- Map events to the kit: a rolling ball gets a soft filtered noise roll; each domino hit gets a \"click\" plus a wooden tap whose pitch drops as the pieces get bigger; slow motion gets a pitched-down \"whoosh\"; the last big hit gets SND.thud and \"boom\"; the takeaway gets an open chord.\n- Full mix (no voiceover): keep the playful pad, every hit audible, and a short gap before the last, biggest hit.\n- Sync is everything: the sound score reads the same TL times as the picture.\n\nIF YOU CAN RUN CODE\nRender 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.\n\nSTYLE CARD\nName: Physics Toybox\nFamily: 3D\nLook: Bright plastic toys in Three.js on a sunny yellow floor: glossy balls, a white ramp and a curving chain of coloured dominoes that grow in size, with crisp shadows and a slow-motion moment on the key hit.\nHow it explains: A ball rolls down the ramp and starts a chain reaction you can follow beat by beat. Time slows to a quarter when the important thing happens (a chip says so), then snaps back to full speed for the big finish and the takeaway.\n",
|
|
660
|
+
"promptVo": "I want an animated video in the \"Physics Toybox\" 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.\n\nMY CONTENT\n[No topic yet. Ask me for my topic or script before building anything.]\n\nVOICEOVER TIMING\n[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.]\n\nHow to use the timing:\n- 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.\n- Set the duration to the last word's end plus about 1.2 seconds.\n- Build the timeline (TL) from these times. The first hit lands on the word that starts the chain, slow motion begins on the word that sets up the key moment, and the last piece lands on the stressed word of the punchline.\n- 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.\n- Put the emphasis moves on stressed words. A counter lands at the exact moment its number is spoken.\n- Keep the player's \"Load voiceover\" button working so I can drop in my audio and hear it in sync.\n\nSTORYBOARD FIRST\nBefore building, show me a storyboard and wait for my OK:\n- 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.\n- 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.\n- Below the grid, list any facts or numbers you had to assume.\nWhen I approve it (or after my changes), build the full animation and reuse the storyboard's drawing code.\n\nWHAT TO BUILD\nOne self-contained HTML file (an artifact if you can), built on the reference file below:\n- 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.\n- Keep the canvas at 720x1280 (9:16, for Shorts, Reels and TikTok).\n- Keep the Three.js r128 script tag and build every 3D object in code: no models or textures from the web.\n- Replace the demo's story: TL, the chain (count, sizes, path, colours), the slow-motion window in simT(), the props, the facts in overlay() and scoreSound(). Keep and reuse the style's helpers (makeGL(), lights3() with shadows, the floor, the deterministic fall model (each piece starts when the previous one hits it), the simT() time remap for slow motion, motion streaks, chip() and wordLine()).\n- Aim for 15 to 40 seconds unless my content needs more, and set the duration in TL.D.\n- Keep window.seek(t), window.DURATION, window.scoreSound and window.SFX exposed, so the video can be rendered frame by frame.\n- Load the style's fonts before the first draw, as the reference does: Archivo Black, Inter (700 and 800), JetBrains Mono (700).\n\nTHE STYLE\n- Every object is a simple, glossy Three.js primitive in toy colours (#ff5a5f, #2ec4b6, #3a86ff, #ff9f1c, #8f5bff) on a warm yellow floor (#ffe39b) with sharp soft shadows.\n- Motion must be physically believable but deterministic: compute fall angles, rolls and bounces from t with simple formulas (no physics engine), each piece starting when the previous one reaches it.\n- Slow motion: remap time with simT(t) for one key window (0.25×) and show a dark \"0.25× SLOW-MO\" chip while it runs.\n- Type: Archivo Black headline in near-black with the second line red; one white fact chip at the bottom in Inter 700.\n- Use real physics facts (with the source idea in plain words).\n- Pace: the setup holds under 2 seconds, the chain runs, slow motion lasts 2 to 3 seconds, the takeaway holds about 2 seconds.\n\nRULES THAT KEEP IT IN STYLE\n- 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.\n- 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.\n- It will be watched on phones: at 720x1280 keep the headline at 56 px or more, the fact chip at 28 px or more and the slow-mo tag at 22 px or more. Fill the frame.\n- Keep each frame fast, well under 50 ms.\n- Give my topic its own demo content; do not reuse the reference's story (\"What if you tip a chain of growing dominoes?\") unless my content asks for it.\n\nSOUND\n- Bed: a playful, light pad with soft hats.\n- Map events to the kit: a rolling ball gets a soft filtered noise roll; each domino hit gets a \"click\" plus a wooden tap whose pitch drops as the pieces get bigger; slow motion gets a pitched-down \"whoosh\"; the last big hit gets SND.thud and \"boom\"; the takeaway gets an open chord.\n- Voiceover mix: the player calls SFX.live with { voiceover: true } once narration is loaded. Mark clacks soft: true and keep the final thud full.\n- Sync is everything: the sound score reads the same TL times as the picture.\n\nIF YOU CAN RUN CODE\nRender 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.\n\nSTYLE CARD\nName: Physics Toybox\nFamily: 3D\nLook: Bright plastic toys in Three.js on a sunny yellow floor: glossy balls, a white ramp and a curving chain of coloured dominoes that grow in size, with crisp shadows and a slow-motion moment on the key hit.\nHow it explains: A ball rolls down the ramp and starts a chain reaction you can follow beat by beat. Time slows to a quarter when the important thing happens (a chip says so), then snaps back to full speed for the big finish and the takeaway.\n"
|
|
661
|
+
},
|
|
662
|
+
{
|
|
663
|
+
"id": "deep-layers",
|
|
664
|
+
"num": "19",
|
|
665
|
+
"name": "Deep Layers",
|
|
666
|
+
"family": "3D",
|
|
667
|
+
"canvas": "720x1280",
|
|
668
|
+
"tall": true,
|
|
669
|
+
"lib": true,
|
|
670
|
+
"three": true,
|
|
671
|
+
"look": "A cross-section block of the ground in Three.js, with a tiny house and trees on top and stacked layers of soil, clay, rock and glowing hot rock below. A white drill line pushes down while the camera dives with it.",
|
|
672
|
+
"how": "The camera starts at the surface and descends along the cut face as the drill goes down. A depth counter runs, each layer gets a label as the drill reaches it, the bottom glows orange-hot, and the takeaway puts the depth in context.",
|
|
673
|
+
"fonts": "Anton, JetBrains Mono (500 and 700)",
|
|
674
|
+
"demo": "How deep have we dug?",
|
|
675
|
+
"replace": "TL, LAYERS (names, thickness, colours, the real depth each one starts at), the props on top, the depth curve in depthAt(), the labels and the takeaway in overlay() and scoreSound()",
|
|
676
|
+
"keep": "makeGL(), the stacked cross-section block, the surface props, the drill line and glowing tip, the descending camera, the depth counter, the side tick ruler, the NOT TO SCALE chip, chip() and wordLine()",
|
|
677
|
+
"sizes": "keep the headline at 64 px or more, the depth counter at 80 px or more and layer labels at 22 px or more",
|
|
678
|
+
"voLine": "The drill reaches each layer as it is named and its label lands on that word; the counter locks on the last spoken syllable of the final depth.",
|
|
679
|
+
"full": "- Full mix (no voiceover): keep the drill hum and the rumble, a beep for each layer, and a hiss of heat at the bottom.",
|
|
680
|
+
"voMix": "- Voiceover mix: the player calls SFX.live with { voiceover: true } once narration is loaded. Keep the drill hum very low and mark beeps soft: true.",
|
|
681
|
+
"sheet": [
|
|
682
|
+
"The block is a stack of Three.js boxes, one per layer, each a believable material colour (grass green, soil brown, sand, grey rocks, dark granite, glowing orange heat). Thickness is compressed for the frame, so a \"NOT TO SCALE\" chip stays on screen, but every label shows the real depth.",
|
|
683
|
+
"A small surface scene (a house, trees) on top tells you where you are. The drill is a thin white cylinder with a glowing yellow tip that grows downward.",
|
|
684
|
+
"The camera dives down beside the cut face, always a little ahead of the drill tip.",
|
|
685
|
+
"Labels: dark mono chips on the left with the layer name and its real depth, joined to the face by ticks on a side ruler.",
|
|
686
|
+
"Type: Anton for the headline (white with a dark outline, second line yellow) and the depth counter, which glows warmer as it goes deeper.",
|
|
687
|
+
"Pace: one layer every 1.5 to 2 seconds; hold the bottom for about 2 seconds before the takeaway."
|
|
688
|
+
],
|
|
689
|
+
"sound": [
|
|
690
|
+
"Bed: a drill hum (filtered sawtooth with a slight wobble) over a low rumble that grows with depth.",
|
|
691
|
+
"Map events to the kit: each new layer gets a short beep (SND.beep) and a soft \"tick\"; the counter \"tick\"s when the shown number changes; reaching the hot layer gets a hiss and a low \"boom\"; the takeaway gets an open chord."
|
|
692
|
+
],
|
|
693
|
+
"sourceFile": "sources/deep-layers.html",
|
|
694
|
+
"promptFile": "prompts/deep-layers.md",
|
|
695
|
+
"sourceBytes": 60698,
|
|
696
|
+
"prompt": "I want an animated video in the \"Deep Layers\" 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.\n\nMY CONTENT\n[No topic yet. Ask me for my topic or script before building anything.]\n\nBUILD DIRECTLY\nSkip the storyboard and build the full animation now. Afterwards, list any facts or numbers you assumed.\n\nWHAT TO BUILD\nOne self-contained HTML file (an artifact if you can), built on the reference file below:\n- 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.\n- Keep the canvas at 720x1280 (9:16, for Shorts, Reels and TikTok).\n- Keep the Three.js r128 script tag and build every 3D object in code: no models or textures from the web.\n- Replace the demo's story: TL, LAYERS (names, thickness, colours, the real depth each one starts at), the props on top, the depth curve in depthAt(), the labels and the takeaway in overlay() and scoreSound(). Keep and reuse the style's helpers (makeGL(), the stacked cross-section block, the surface props, the drill line and glowing tip, the descending camera, the depth counter, the side tick ruler, the NOT TO SCALE chip, chip() and wordLine()).\n- Aim for 15 to 40 seconds unless my content needs more, and set the duration in TL.D.\n- Keep window.seek(t), window.DURATION, window.scoreSound and window.SFX exposed, so the video can be rendered frame by frame.\n- Load the style's fonts before the first draw, as the reference does: Anton, JetBrains Mono (500 and 700).\n\nTHE STYLE\n- The block is a stack of Three.js boxes, one per layer, each a believable material colour (grass green, soil brown, sand, grey rocks, dark granite, glowing orange heat). Thickness is compressed for the frame, so a \"NOT TO SCALE\" chip stays on screen, but every label shows the real depth.\n- A small surface scene (a house, trees) on top tells you where you are. The drill is a thin white cylinder with a glowing yellow tip that grows downward.\n- The camera dives down beside the cut face, always a little ahead of the drill tip.\n- Labels: dark mono chips on the left with the layer name and its real depth, joined to the face by ticks on a side ruler.\n- Type: Anton for the headline (white with a dark outline, second line yellow) and the depth counter, which glows warmer as it goes deeper.\n- Pace: one layer every 1.5 to 2 seconds; hold the bottom for about 2 seconds before the takeaway.\n\nRULES THAT KEEP IT IN STYLE\n- 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.\n- 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.\n- It will be watched on phones: at 720x1280 keep the headline at 64 px or more, the depth counter at 80 px or more and layer labels at 22 px or more. Fill the frame.\n- Keep each frame fast, well under 50 ms.\n- Give my topic its own demo content; do not reuse the reference's story (\"How deep have we dug?\") unless my content asks for it.\n\nSOUND\n- Bed: a drill hum (filtered sawtooth with a slight wobble) over a low rumble that grows with depth.\n- Map events to the kit: each new layer gets a short beep (SND.beep) and a soft \"tick\"; the counter \"tick\"s when the shown number changes; reaching the hot layer gets a hiss and a low \"boom\"; the takeaway gets an open chord.\n- Full mix (no voiceover): keep the drill hum and the rumble, a beep for each layer, and a hiss of heat at the bottom.\n- Sync is everything: the sound score reads the same TL times as the picture.\n\nIF YOU CAN RUN CODE\nRender 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.\n\nSTYLE CARD\nName: Deep Layers\nFamily: 3D\nLook: A cross-section block of the ground in Three.js, with a tiny house and trees on top and stacked layers of soil, clay, rock and glowing hot rock below. A white drill line pushes down while the camera dives with it.\nHow it explains: The camera starts at the surface and descends along the cut face as the drill goes down. A depth counter runs, each layer gets a label as the drill reaches it, the bottom glows orange-hot, and the takeaway puts the depth in context.\n",
|
|
697
|
+
"promptVo": "I want an animated video in the \"Deep Layers\" 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.\n\nMY CONTENT\n[No topic yet. Ask me for my topic or script before building anything.]\n\nVOICEOVER TIMING\n[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.]\n\nHow to use the timing:\n- 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.\n- Set the duration to the last word's end plus about 1.2 seconds.\n- Build the timeline (TL) from these times. The drill reaches each layer as it is named and its label lands on that word; the counter locks on the last spoken syllable of the final depth.\n- 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.\n- Put the emphasis moves on stressed words. A counter lands at the exact moment its number is spoken.\n- Keep the player's \"Load voiceover\" button working so I can drop in my audio and hear it in sync.\n\nSTORYBOARD FIRST\nBefore building, show me a storyboard and wait for my OK:\n- 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.\n- 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.\n- Below the grid, list any facts or numbers you had to assume.\nWhen I approve it (or after my changes), build the full animation and reuse the storyboard's drawing code.\n\nWHAT TO BUILD\nOne self-contained HTML file (an artifact if you can), built on the reference file below:\n- 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.\n- Keep the canvas at 720x1280 (9:16, for Shorts, Reels and TikTok).\n- Keep the Three.js r128 script tag and build every 3D object in code: no models or textures from the web.\n- Replace the demo's story: TL, LAYERS (names, thickness, colours, the real depth each one starts at), the props on top, the depth curve in depthAt(), the labels and the takeaway in overlay() and scoreSound(). Keep and reuse the style's helpers (makeGL(), the stacked cross-section block, the surface props, the drill line and glowing tip, the descending camera, the depth counter, the side tick ruler, the NOT TO SCALE chip, chip() and wordLine()).\n- Aim for 15 to 40 seconds unless my content needs more, and set the duration in TL.D.\n- Keep window.seek(t), window.DURATION, window.scoreSound and window.SFX exposed, so the video can be rendered frame by frame.\n- Load the style's fonts before the first draw, as the reference does: Anton, JetBrains Mono (500 and 700).\n\nTHE STYLE\n- The block is a stack of Three.js boxes, one per layer, each a believable material colour (grass green, soil brown, sand, grey rocks, dark granite, glowing orange heat). Thickness is compressed for the frame, so a \"NOT TO SCALE\" chip stays on screen, but every label shows the real depth.\n- A small surface scene (a house, trees) on top tells you where you are. The drill is a thin white cylinder with a glowing yellow tip that grows downward.\n- The camera dives down beside the cut face, always a little ahead of the drill tip.\n- Labels: dark mono chips on the left with the layer name and its real depth, joined to the face by ticks on a side ruler.\n- Type: Anton for the headline (white with a dark outline, second line yellow) and the depth counter, which glows warmer as it goes deeper.\n- Pace: one layer every 1.5 to 2 seconds; hold the bottom for about 2 seconds before the takeaway.\n\nRULES THAT KEEP IT IN STYLE\n- 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.\n- 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.\n- It will be watched on phones: at 720x1280 keep the headline at 64 px or more, the depth counter at 80 px or more and layer labels at 22 px or more. Fill the frame.\n- Keep each frame fast, well under 50 ms.\n- Give my topic its own demo content; do not reuse the reference's story (\"How deep have we dug?\") unless my content asks for it.\n\nSOUND\n- Bed: a drill hum (filtered sawtooth with a slight wobble) over a low rumble that grows with depth.\n- Map events to the kit: each new layer gets a short beep (SND.beep) and a soft \"tick\"; the counter \"tick\"s when the shown number changes; reaching the hot layer gets a hiss and a low \"boom\"; the takeaway gets an open chord.\n- Voiceover mix: the player calls SFX.live with { voiceover: true } once narration is loaded. Keep the drill hum very low and mark beeps soft: true.\n- Sync is everything: the sound score reads the same TL times as the picture.\n\nIF YOU CAN RUN CODE\nRender 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.\n\nSTYLE CARD\nName: Deep Layers\nFamily: 3D\nLook: A cross-section block of the ground in Three.js, with a tiny house and trees on top and stacked layers of soil, clay, rock and glowing hot rock below. A white drill line pushes down while the camera dives with it.\nHow it explains: The camera starts at the surface and descends along the cut face as the drill goes down. A depth counter runs, each layer gets a label as the drill reaches it, the bottom glows orange-hot, and the takeaway puts the depth in context.\n"
|
|
698
|
+
},
|
|
699
|
+
{
|
|
700
|
+
"id": "synth-grid",
|
|
701
|
+
"num": "20",
|
|
702
|
+
"name": "Synth Grid",
|
|
703
|
+
"family": "3D",
|
|
704
|
+
"canvas": "720x1280",
|
|
705
|
+
"tall": true,
|
|
706
|
+
"lib": true,
|
|
707
|
+
"three": true,
|
|
708
|
+
"look": "A retro neon world: a magenta wireframe landscape scrolling toward you in Three.js under a striped sunset sun, purple sky, chrome-gradient titles with a pink glow and a cyan marker script.",
|
|
709
|
+
"how": "The grid races toward the camera the whole time. A chrome title slams in, then numbered neon frames slide in one by one for each point, each with a cyan label, before a blinking \"press start\" style sign-off.",
|
|
710
|
+
"fonts": "Anton (skewed, chrome gradient), Permanent Marker, JetBrains Mono (700)",
|
|
711
|
+
"demo": "The future of gaming: 3 trends",
|
|
712
|
+
"replace": "TL, POINTS (the numbered items), the title and sign-off text, the sun colours if needed and scoreSound()",
|
|
713
|
+
"keep": "makeGL(), the scrolling wireframe terrain (mountains at the sides, flat road in the middle), the striped sun, the sky gradient, chrome() titles, the neon frames, the blinking sign-off, grain() and the scanlines",
|
|
714
|
+
"sizes": "keep the chrome title at 80 px or more, item text at 36 px or more and numbers at 26 px or more",
|
|
715
|
+
"voLine": "The title slams on the first stressed word, each neon frame slides in as its point is introduced, and the sign-off blinks on the last word.",
|
|
716
|
+
"full": "- Full mix (no voiceover): keep the synthwave beat (bass arpeggio, gated snare, saw pad), at most about 3 effects at once.",
|
|
717
|
+
"voMix": "- Voiceover mix: the player calls SFX.live with { voiceover: true } once narration is loaded, which keeps the music low. Mark zaps soft: true.",
|
|
718
|
+
"sheet": [
|
|
719
|
+
"The ground is one Three.js wireframe plane (magenta #ff3df0) over a solid dark plane, scrolled toward the camera by moving it modulo one grid cell so the loop is seamless. Mountains rise only at the sides; the middle stays a flat road.",
|
|
720
|
+
"The sky is a 2D gradient (#0b0221 to #3d0b5f to #ff3d81) with a big striped sun (yellow to pink, horizontal cut bands) sitting on the horizon and a soft pink glow.",
|
|
721
|
+
"Type: Anton skewed 10 degrees with a chrome gradient (white, pale blue, a dark horizon line, lilac) and a pink outer glow; Permanent Marker in cyan (#5ff6ff) with a cyan glow for the second line; JetBrains Mono for numbers.",
|
|
722
|
+
"Items live in neon frames: dark translucent boxes with a 3 px glowing cyan or pink border, sliding in from the side.",
|
|
723
|
+
"Scanlines and light grain on top of everything.",
|
|
724
|
+
"Pace: the title lands within 1 second, one item every 2 seconds, the sign-off blinks for the last 2 seconds."
|
|
725
|
+
],
|
|
726
|
+
"sound": [
|
|
727
|
+
"Music: a synthwave loop (sawtooth bass arpeggio on 16ths, a big gated snare on 2 and 4, a soft kick, a wide saw pad) built with k.voice and k.hiss.",
|
|
728
|
+
"Map events to the kit: the title gets \"slam\" and \"riser\" before it; frames get a laser \"zap\" (a fast falling square sweep) and a soft \"whoosh\"; the sign-off gets a chiptune arpeggio."
|
|
729
|
+
],
|
|
730
|
+
"sourceFile": "sources/synth-grid.html",
|
|
731
|
+
"promptFile": "prompts/synth-grid.md",
|
|
732
|
+
"sourceBytes": 59456,
|
|
733
|
+
"prompt": "I want an animated video in the \"Synth Grid\" 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.\n\nMY CONTENT\n[No topic yet. Ask me for my topic or script before building anything.]\n\nBUILD DIRECTLY\nSkip the storyboard and build the full animation now. Afterwards, list any facts or numbers you assumed.\n\nWHAT TO BUILD\nOne self-contained HTML file (an artifact if you can), built on the reference file below:\n- 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.\n- Keep the canvas at 720x1280 (9:16, for Shorts, Reels and TikTok).\n- Keep the Three.js r128 script tag and build every 3D object in code: no models or textures from the web.\n- Replace the demo's story: TL, POINTS (the numbered items), the title and sign-off text, the sun colours if needed and scoreSound(). Keep and reuse the style's helpers (makeGL(), the scrolling wireframe terrain (mountains at the sides, flat road in the middle), the striped sun, the sky gradient, chrome() titles, the neon frames, the blinking sign-off, grain() and the scanlines).\n- Aim for 15 to 40 seconds unless my content needs more, and set the duration in TL.D.\n- Keep window.seek(t), window.DURATION, window.scoreSound and window.SFX exposed, so the video can be rendered frame by frame.\n- Load the style's fonts before the first draw, as the reference does: Anton (skewed, chrome gradient), Permanent Marker, JetBrains Mono (700).\n\nTHE STYLE\n- The ground is one Three.js wireframe plane (magenta #ff3df0) over a solid dark plane, scrolled toward the camera by moving it modulo one grid cell so the loop is seamless. Mountains rise only at the sides; the middle stays a flat road.\n- The sky is a 2D gradient (#0b0221 to #3d0b5f to #ff3d81) with a big striped sun (yellow to pink, horizontal cut bands) sitting on the horizon and a soft pink glow.\n- Type: Anton skewed 10 degrees with a chrome gradient (white, pale blue, a dark horizon line, lilac) and a pink outer glow; Permanent Marker in cyan (#5ff6ff) with a cyan glow for the second line; JetBrains Mono for numbers.\n- Items live in neon frames: dark translucent boxes with a 3 px glowing cyan or pink border, sliding in from the side.\n- Scanlines and light grain on top of everything.\n- Pace: the title lands within 1 second, one item every 2 seconds, the sign-off blinks for the last 2 seconds.\n\nRULES THAT KEEP IT IN STYLE\n- 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.\n- 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.\n- It will be watched on phones: at 720x1280 keep the chrome title at 80 px or more, item text at 36 px or more and numbers at 26 px or more. Fill the frame.\n- Keep each frame fast, well under 50 ms.\n- Give my topic its own demo content; do not reuse the reference's story (\"The future of gaming: 3 trends\") unless my content asks for it.\n\nSOUND\n- Music: a synthwave loop (sawtooth bass arpeggio on 16ths, a big gated snare on 2 and 4, a soft kick, a wide saw pad) built with k.voice and k.hiss.\n- Map events to the kit: the title gets \"slam\" and \"riser\" before it; frames get a laser \"zap\" (a fast falling square sweep) and a soft \"whoosh\"; the sign-off gets a chiptune arpeggio.\n- Full mix (no voiceover): keep the synthwave beat (bass arpeggio, gated snare, saw pad), at most about 3 effects at once.\n- Sync is everything: the sound score reads the same TL times as the picture.\n\nIF YOU CAN RUN CODE\nRender 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.\n\nSTYLE CARD\nName: Synth Grid\nFamily: 3D\nLook: A retro neon world: a magenta wireframe landscape scrolling toward you in Three.js under a striped sunset sun, purple sky, chrome-gradient titles with a pink glow and a cyan marker script.\nHow it explains: The grid races toward the camera the whole time. A chrome title slams in, then numbered neon frames slide in one by one for each point, each with a cyan label, before a blinking \"press start\" style sign-off.\n",
|
|
734
|
+
"promptVo": "I want an animated video in the \"Synth Grid\" 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.\n\nMY CONTENT\n[No topic yet. Ask me for my topic or script before building anything.]\n\nVOICEOVER TIMING\n[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.]\n\nHow to use the timing:\n- 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.\n- Set the duration to the last word's end plus about 1.2 seconds.\n- Build the timeline (TL) from these times. The title slams on the first stressed word, each neon frame slides in as its point is introduced, and the sign-off blinks on the last word.\n- 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.\n- Put the emphasis moves on stressed words. A counter lands at the exact moment its number is spoken.\n- Keep the player's \"Load voiceover\" button working so I can drop in my audio and hear it in sync.\n\nSTORYBOARD FIRST\nBefore building, show me a storyboard and wait for my OK:\n- 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.\n- 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.\n- Below the grid, list any facts or numbers you had to assume.\nWhen I approve it (or after my changes), build the full animation and reuse the storyboard's drawing code.\n\nWHAT TO BUILD\nOne self-contained HTML file (an artifact if you can), built on the reference file below:\n- 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.\n- Keep the canvas at 720x1280 (9:16, for Shorts, Reels and TikTok).\n- Keep the Three.js r128 script tag and build every 3D object in code: no models or textures from the web.\n- Replace the demo's story: TL, POINTS (the numbered items), the title and sign-off text, the sun colours if needed and scoreSound(). Keep and reuse the style's helpers (makeGL(), the scrolling wireframe terrain (mountains at the sides, flat road in the middle), the striped sun, the sky gradient, chrome() titles, the neon frames, the blinking sign-off, grain() and the scanlines).\n- Aim for 15 to 40 seconds unless my content needs more, and set the duration in TL.D.\n- Keep window.seek(t), window.DURATION, window.scoreSound and window.SFX exposed, so the video can be rendered frame by frame.\n- Load the style's fonts before the first draw, as the reference does: Anton (skewed, chrome gradient), Permanent Marker, JetBrains Mono (700).\n\nTHE STYLE\n- The ground is one Three.js wireframe plane (magenta #ff3df0) over a solid dark plane, scrolled toward the camera by moving it modulo one grid cell so the loop is seamless. Mountains rise only at the sides; the middle stays a flat road.\n- The sky is a 2D gradient (#0b0221 to #3d0b5f to #ff3d81) with a big striped sun (yellow to pink, horizontal cut bands) sitting on the horizon and a soft pink glow.\n- Type: Anton skewed 10 degrees with a chrome gradient (white, pale blue, a dark horizon line, lilac) and a pink outer glow; Permanent Marker in cyan (#5ff6ff) with a cyan glow for the second line; JetBrains Mono for numbers.\n- Items live in neon frames: dark translucent boxes with a 3 px glowing cyan or pink border, sliding in from the side.\n- Scanlines and light grain on top of everything.\n- Pace: the title lands within 1 second, one item every 2 seconds, the sign-off blinks for the last 2 seconds.\n\nRULES THAT KEEP IT IN STYLE\n- 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.\n- 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.\n- It will be watched on phones: at 720x1280 keep the chrome title at 80 px or more, item text at 36 px or more and numbers at 26 px or more. Fill the frame.\n- Keep each frame fast, well under 50 ms.\n- Give my topic its own demo content; do not reuse the reference's story (\"The future of gaming: 3 trends\") unless my content asks for it.\n\nSOUND\n- Music: a synthwave loop (sawtooth bass arpeggio on 16ths, a big gated snare on 2 and 4, a soft kick, a wide saw pad) built with k.voice and k.hiss.\n- Map events to the kit: the title gets \"slam\" and \"riser\" before it; frames get a laser \"zap\" (a fast falling square sweep) and a soft \"whoosh\"; the sign-off gets a chiptune arpeggio.\n- Voiceover mix: the player calls SFX.live with { voiceover: true } once narration is loaded, which keeps the music low. Mark zaps soft: true.\n- Sync is everything: the sound score reads the same TL times as the picture.\n\nIF YOU CAN RUN CODE\nRender 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.\n\nSTYLE CARD\nName: Synth Grid\nFamily: 3D\nLook: A retro neon world: a magenta wireframe landscape scrolling toward you in Three.js under a striped sunset sun, purple sky, chrome-gradient titles with a pink glow and a cyan marker script.\nHow it explains: The grid races toward the camera the whole time. A chrome title slams in, then numbered neon frames slide in one by one for each point, each with a cyan label, before a blinking \"press start\" style sign-off.\n"
|
|
735
|
+
},
|
|
736
|
+
{
|
|
737
|
+
"id": "product-turntable",
|
|
738
|
+
"num": "21",
|
|
739
|
+
"name": "Product Turntable",
|
|
740
|
+
"family": "3D",
|
|
741
|
+
"canvas": "720x1280",
|
|
742
|
+
"tall": true,
|
|
743
|
+
"lib": true,
|
|
744
|
+
"three": true,
|
|
745
|
+
"look": "A premium product shot in Three.js: an invented product turning on a glossy dark pedestal with a glowing amber rim, a warm key light and a cool rim light, with thin spec callouts and a big italic serif name.",
|
|
746
|
+
"how": "The camera eases in on the product as it turns, a light sweep glides across it, and spec callouts pop out one at a time on thin leader lines. It ends on a hero frame with the product name in a big italic serif.",
|
|
747
|
+
"fonts": "Instrument Serif (italic), Inter (500 to 800), JetBrains Mono (500)",
|
|
748
|
+
"demo": "Meet Luma (an invented skincare bottle)",
|
|
749
|
+
"replace": "TL, the product shape (the lathe profile, cap, band), the label texture text, CALLOUTS (text and anchor points), the name and tagline and scoreSound()",
|
|
750
|
+
"keep": "makeGL(), the dark studio with spot key, rim and fill lights, the glossy pedestal with the emissive rim ring, the turning product, the light sweep pass, callouts on leader lines, the hero name card and grain()",
|
|
751
|
+
"sizes": "keep the product name at 80 px or more, callout titles at 26 px or more and callout details at 18 px or more",
|
|
752
|
+
"voLine": "Each callout pops as its feature is named, the light sweep passes on the product name, and the hero card lands on the last line.",
|
|
753
|
+
"full": "- Full mix (no voiceover): keep the soft luxury pad, warm swells, a glassy sparkle per callout, and one deep hit for the hero card.",
|
|
754
|
+
"voMix": "- Voiceover mix: the player calls SFX.live with { voiceover: true } once narration is loaded. Mark sparkles soft: true and keep the swells low.",
|
|
755
|
+
"sheet": [
|
|
756
|
+
"The product is built in Three.js from a LatheGeometry profile (bottles, jars, cups), cylinders and boxes, with physical materials (clearcoat, metal caps) and a label texture painted on a canvas. Always an invented product and brand; never a real logo, packaging or brand name.",
|
|
757
|
+
"Studio: near-black (#141417) with one warm spot key from the upper left, a cool blue rim light from behind, and a glossy dark pedestal with a thin glowing amber ring.",
|
|
758
|
+
"The product turns slowly the whole time; the camera eases in at the start and settles for the hero frame.",
|
|
759
|
+
"Callouts: white Inter 700 titles with small mono details, on thin amber leader lines from points on the product, alternating left and right.",
|
|
760
|
+
"Type: Instrument Serif italic for the product name (white, huge); Inter and JetBrains Mono for specs; nothing else.",
|
|
761
|
+
"Claims must be true for the product you are showing; label invented figures as examples.",
|
|
762
|
+
"Pace: the first callout lands by second 2, one callout every 1.5 to 2 seconds, hold the hero frame about 3 seconds."
|
|
763
|
+
],
|
|
764
|
+
"sound": [
|
|
765
|
+
"Bed: a soft, warm luxury pad with no drums.",
|
|
766
|
+
"Map events to the kit: callouts get a glassy \"sparkle\" and a soft tick; the light sweep gets a slow airy \"whoosh\"; the hero card gets a deep, soft hit (a low sine boom) with an open chord."
|
|
767
|
+
],
|
|
768
|
+
"sourceFile": "sources/product-turntable.html",
|
|
769
|
+
"promptFile": "prompts/product-turntable.md",
|
|
770
|
+
"sourceBytes": 59527,
|
|
771
|
+
"prompt": "I want an animated video in the \"Product Turntable\" 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.\n\nMY CONTENT\n[No topic yet. Ask me for my topic or script before building anything.]\n\nBUILD DIRECTLY\nSkip the storyboard and build the full animation now. Afterwards, list any facts or numbers you assumed.\n\nWHAT TO BUILD\nOne self-contained HTML file (an artifact if you can), built on the reference file below:\n- 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.\n- Keep the canvas at 720x1280 (9:16, for Shorts, Reels and TikTok).\n- Keep the Three.js r128 script tag and build every 3D object in code: no models or textures from the web.\n- Replace the demo's story: TL, the product shape (the lathe profile, cap, band), the label texture text, CALLOUTS (text and anchor points), the name and tagline and scoreSound(). Keep and reuse the style's helpers (makeGL(), the dark studio with spot key, rim and fill lights, the glossy pedestal with the emissive rim ring, the turning product, the light sweep pass, callouts on leader lines, the hero name card and grain()).\n- Aim for 15 to 40 seconds unless my content needs more, and set the duration in TL.D.\n- Keep window.seek(t), window.DURATION, window.scoreSound and window.SFX exposed, so the video can be rendered frame by frame.\n- Load the style's fonts before the first draw, as the reference does: Instrument Serif (italic), Inter (500 to 800), JetBrains Mono (500).\n\nTHE STYLE\n- The product is built in Three.js from a LatheGeometry profile (bottles, jars, cups), cylinders and boxes, with physical materials (clearcoat, metal caps) and a label texture painted on a canvas. Always an invented product and brand; never a real logo, packaging or brand name.\n- Studio: near-black (#141417) with one warm spot key from the upper left, a cool blue rim light from behind, and a glossy dark pedestal with a thin glowing amber ring.\n- The product turns slowly the whole time; the camera eases in at the start and settles for the hero frame.\n- Callouts: white Inter 700 titles with small mono details, on thin amber leader lines from points on the product, alternating left and right.\n- Type: Instrument Serif italic for the product name (white, huge); Inter and JetBrains Mono for specs; nothing else.\n- Claims must be true for the product you are showing; label invented figures as examples.\n- Pace: the first callout lands by second 2, one callout every 1.5 to 2 seconds, hold the hero frame about 3 seconds.\n\nRULES THAT KEEP IT IN STYLE\n- 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.\n- 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.\n- It will be watched on phones: at 720x1280 keep the product name at 80 px or more, callout titles at 26 px or more and callout details at 18 px or more. Fill the frame.\n- Keep each frame fast, well under 50 ms.\n- Give my topic its own demo content; do not reuse the reference's story (\"Meet Luma (an invented skincare bottle)\") unless my content asks for it.\n\nSOUND\n- Bed: a soft, warm luxury pad with no drums.\n- Map events to the kit: callouts get a glassy \"sparkle\" and a soft tick; the light sweep gets a slow airy \"whoosh\"; the hero card gets a deep, soft hit (a low sine boom) with an open chord.\n- Full mix (no voiceover): keep the soft luxury pad, warm swells, a glassy sparkle per callout, and one deep hit for the hero card.\n- Sync is everything: the sound score reads the same TL times as the picture.\n\nIF YOU CAN RUN CODE\nRender 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.\n\nSTYLE CARD\nName: Product Turntable\nFamily: 3D\nLook: A premium product shot in Three.js: an invented product turning on a glossy dark pedestal with a glowing amber rim, a warm key light and a cool rim light, with thin spec callouts and a big italic serif name.\nHow it explains: The camera eases in on the product as it turns, a light sweep glides across it, and spec callouts pop out one at a time on thin leader lines. It ends on a hero frame with the product name in a big italic serif.\n",
|
|
772
|
+
"promptVo": "I want an animated video in the \"Product Turntable\" 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.\n\nMY CONTENT\n[No topic yet. Ask me for my topic or script before building anything.]\n\nVOICEOVER TIMING\n[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.]\n\nHow to use the timing:\n- 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.\n- Set the duration to the last word's end plus about 1.2 seconds.\n- Build the timeline (TL) from these times. Each callout pops as its feature is named, the light sweep passes on the product name, and the hero card lands on the last line.\n- 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.\n- Put the emphasis moves on stressed words. A counter lands at the exact moment its number is spoken.\n- Keep the player's \"Load voiceover\" button working so I can drop in my audio and hear it in sync.\n\nSTORYBOARD FIRST\nBefore building, show me a storyboard and wait for my OK:\n- 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.\n- 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.\n- Below the grid, list any facts or numbers you had to assume.\nWhen I approve it (or after my changes), build the full animation and reuse the storyboard's drawing code.\n\nWHAT TO BUILD\nOne self-contained HTML file (an artifact if you can), built on the reference file below:\n- 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.\n- Keep the canvas at 720x1280 (9:16, for Shorts, Reels and TikTok).\n- Keep the Three.js r128 script tag and build every 3D object in code: no models or textures from the web.\n- Replace the demo's story: TL, the product shape (the lathe profile, cap, band), the label texture text, CALLOUTS (text and anchor points), the name and tagline and scoreSound(). Keep and reuse the style's helpers (makeGL(), the dark studio with spot key, rim and fill lights, the glossy pedestal with the emissive rim ring, the turning product, the light sweep pass, callouts on leader lines, the hero name card and grain()).\n- Aim for 15 to 40 seconds unless my content needs more, and set the duration in TL.D.\n- Keep window.seek(t), window.DURATION, window.scoreSound and window.SFX exposed, so the video can be rendered frame by frame.\n- Load the style's fonts before the first draw, as the reference does: Instrument Serif (italic), Inter (500 to 800), JetBrains Mono (500).\n\nTHE STYLE\n- The product is built in Three.js from a LatheGeometry profile (bottles, jars, cups), cylinders and boxes, with physical materials (clearcoat, metal caps) and a label texture painted on a canvas. Always an invented product and brand; never a real logo, packaging or brand name.\n- Studio: near-black (#141417) with one warm spot key from the upper left, a cool blue rim light from behind, and a glossy dark pedestal with a thin glowing amber ring.\n- The product turns slowly the whole time; the camera eases in at the start and settles for the hero frame.\n- Callouts: white Inter 700 titles with small mono details, on thin amber leader lines from points on the product, alternating left and right.\n- Type: Instrument Serif italic for the product name (white, huge); Inter and JetBrains Mono for specs; nothing else.\n- Claims must be true for the product you are showing; label invented figures as examples.\n- Pace: the first callout lands by second 2, one callout every 1.5 to 2 seconds, hold the hero frame about 3 seconds.\n\nRULES THAT KEEP IT IN STYLE\n- 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.\n- 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.\n- It will be watched on phones: at 720x1280 keep the product name at 80 px or more, callout titles at 26 px or more and callout details at 18 px or more. Fill the frame.\n- Keep each frame fast, well under 50 ms.\n- Give my topic its own demo content; do not reuse the reference's story (\"Meet Luma (an invented skincare bottle)\") unless my content asks for it.\n\nSOUND\n- Bed: a soft, warm luxury pad with no drums.\n- Map events to the kit: callouts get a glassy \"sparkle\" and a soft tick; the light sweep gets a slow airy \"whoosh\"; the hero card gets a deep, soft hit (a low sine boom) with an open chord.\n- Voiceover mix: the player calls SFX.live with { voiceover: true } once narration is loaded. Mark sparkles soft: true and keep the swells low.\n- Sync is everything: the sound score reads the same TL times as the picture.\n\nIF YOU CAN RUN CODE\nRender 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.\n\nSTYLE CARD\nName: Product Turntable\nFamily: 3D\nLook: A premium product shot in Three.js: an invented product turning on a glossy dark pedestal with a glowing amber rim, a warm key light and a cool rim light, with thin spec callouts and a big italic serif name.\nHow it explains: The camera eases in on the product as it turns, a light sweep glides across it, and spec callouts pop out one at a time on thin leader lines. It ends on a hero frame with the product name in a big italic serif.\n"
|
|
773
|
+
},
|
|
774
|
+
{
|
|
775
|
+
"id": "paper-craft",
|
|
776
|
+
"num": "22",
|
|
777
|
+
"name": "Paper Craft",
|
|
778
|
+
"family": "Illustrated",
|
|
779
|
+
"canvas": "720x1280",
|
|
780
|
+
"tall": true,
|
|
781
|
+
"lib": true,
|
|
782
|
+
"look": "Layered cut paper with real drop shadows and a fibre texture: rolling paper hills, a paper sun, flowers and a striped paper bee, all moving at 12 frames a second like stop-motion, with titles on torn white paper strips.",
|
|
783
|
+
"how": "The scene builds itself layer by layer, then a little character travels through it beat by beat while numbered paper strips slap on to name each step. Everything boils slightly from frame to frame like real paper under a camera, and the takeaway lands on one last strip.",
|
|
784
|
+
"fonts": "Fredoka (500 to 700)",
|
|
785
|
+
"demo": "How bees make honey",
|
|
786
|
+
"replace": "TL, the scene pieces (hills, sky props), the hero character (drawBee) and its PATH, the STEPS strips, the fact chip, the takeaway and scoreSound()",
|
|
787
|
+
"keep": "the 12 fps stop-motion clock (stop()), the paper boil jitter (boil()), paper() shadows, hill() layers, the fibre texture, tornStrip(), the slide-up build and the Fredoka strips",
|
|
788
|
+
"sizes": "keep strip titles at 44 px or more, step text at 34 px or more and chips at 26 px or more",
|
|
789
|
+
"voLine": "Each layer or prop lands on the word that names it, the character moves while the action is described, and each step strip slaps on its first word.",
|
|
790
|
+
"full": "- Full mix (no voiceover): keep the marimba melody, paper rustles on every slap, and the bee buzz under the motion.",
|
|
791
|
+
"voMix": "- Voiceover mix: the player calls SFX.live with { voiceover: true } once narration is loaded. Keep the buzz low and mark rustles soft: true.",
|
|
792
|
+
"sheet": [
|
|
793
|
+
"Everything is flat paper drawn in code: solid shapes with a soft drop shadow (offset down, 10 px blur), a faint fibre texture over the frame, no outlines, no gradients except the sky.",
|
|
794
|
+
"Stop-motion timing: animated positions are sampled on a 12 fps clock (stop(t)), and every layer boils by a pixel or two each step. Never move anything smoothly at 30 fps.",
|
|
795
|
+
"Palette: sky blue (#b9e2f0), layered greens (#a4d36f to #4b8c3b), sunny yellow (#ffd04d), honey (#f2b33d), pink and white flowers, dark brown text (#3a2a16), honey accent (#e08a00).",
|
|
796
|
+
"Titles and steps sit on torn white paper strips, slightly rotated, slapped on with a quick overshoot.",
|
|
797
|
+
"One small hand-made character carries the story (flapping wings, a dotted path behind it).",
|
|
798
|
+
"Pace: the build takes about 1.5 seconds, then one step every 2 to 2.5 seconds."
|
|
799
|
+
],
|
|
800
|
+
"sound": [
|
|
801
|
+
"Music: a gentle marimba melody (k.voice triangle notes with short decay) over a soft pad.",
|
|
802
|
+
"Map events to the kit: every paper layer or strip landing gets a paper rustle (SND.paper) and a soft tap; the bee gets a buzzing hum (a sawtooth with wobble) while it flies; arriving gets a bloop; the fact chip gets \"pop\"; the takeaway gets a marimba run."
|
|
803
|
+
],
|
|
804
|
+
"sourceFile": "sources/paper-craft.html",
|
|
805
|
+
"promptFile": "prompts/paper-craft.md",
|
|
806
|
+
"sourceBytes": 62141,
|
|
807
|
+
"prompt": "I want an animated video in the \"Paper Craft\" style (Illustrated) 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.\n\nMY CONTENT\n[No topic yet. Ask me for my topic or script before building anything.]\n\nBUILD DIRECTLY\nSkip the storyboard and build the full animation now. Afterwards, list any facts or numbers you assumed.\n\nWHAT TO BUILD\nOne self-contained HTML file (an artifact if you can), built on the reference file below:\n- 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.\n- Keep the canvas at 720x1280 (9:16, for Shorts, Reels and TikTok).\n- Replace the demo's story: TL, the scene pieces (hills, sky props), the hero character (drawBee) and its PATH, the STEPS strips, the fact chip, the takeaway and scoreSound(). Keep and reuse the style's helpers (the 12 fps stop-motion clock (stop()), the paper boil jitter (boil()), paper() shadows, hill() layers, the fibre texture, tornStrip(), the slide-up build and the Fredoka strips).\n- Aim for 15 to 40 seconds unless my content needs more, and set the duration in TL.D.\n- Keep window.seek(t), window.DURATION, window.scoreSound and window.SFX exposed, so the video can be rendered frame by frame.\n- Load the style's fonts before the first draw, as the reference does: Fredoka (500 to 700).\n\nTHE STYLE\n- Everything is flat paper drawn in code: solid shapes with a soft drop shadow (offset down, 10 px blur), a faint fibre texture over the frame, no outlines, no gradients except the sky.\n- Stop-motion timing: animated positions are sampled on a 12 fps clock (stop(t)), and every layer boils by a pixel or two each step. Never move anything smoothly at 30 fps.\n- Palette: sky blue (#b9e2f0), layered greens (#a4d36f to #4b8c3b), sunny yellow (#ffd04d), honey (#f2b33d), pink and white flowers, dark brown text (#3a2a16), honey accent (#e08a00).\n- Titles and steps sit on torn white paper strips, slightly rotated, slapped on with a quick overshoot.\n- One small hand-made character carries the story (flapping wings, a dotted path behind it).\n- Pace: the build takes about 1.5 seconds, then one step every 2 to 2.5 seconds.\n\nRULES THAT KEEP IT IN STYLE\n- 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.\n- 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.\n- It will be watched on phones: at 720x1280 keep strip titles at 44 px or more, step text at 34 px or more and chips at 26 px or more. Fill the frame.\n- Keep each frame fast, well under 50 ms.\n- Give my topic its own demo content; do not reuse the reference's story (\"How bees make honey\") unless my content asks for it.\n\nSOUND\n- Music: a gentle marimba melody (k.voice triangle notes with short decay) over a soft pad.\n- Map events to the kit: every paper layer or strip landing gets a paper rustle (SND.paper) and a soft tap; the bee gets a buzzing hum (a sawtooth with wobble) while it flies; arriving gets a bloop; the fact chip gets \"pop\"; the takeaway gets a marimba run.\n- Full mix (no voiceover): keep the marimba melody, paper rustles on every slap, and the bee buzz under the motion.\n- Sync is everything: the sound score reads the same TL times as the picture.\n\nIF YOU CAN RUN CODE\nRender 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.\n\nSTYLE CARD\nName: Paper Craft\nFamily: Illustrated\nLook: Layered cut paper with real drop shadows and a fibre texture: rolling paper hills, a paper sun, flowers and a striped paper bee, all moving at 12 frames a second like stop-motion, with titles on torn white paper strips.\nHow it explains: The scene builds itself layer by layer, then a little character travels through it beat by beat while numbered paper strips slap on to name each step. Everything boils slightly from frame to frame like real paper under a camera, and the takeaway lands on one last strip.\n",
|
|
808
|
+
"promptVo": "I want an animated video in the \"Paper Craft\" style (Illustrated) 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.\n\nMY CONTENT\n[No topic yet. Ask me for my topic or script before building anything.]\n\nVOICEOVER TIMING\n[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.]\n\nHow to use the timing:\n- 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.\n- Set the duration to the last word's end plus about 1.2 seconds.\n- Build the timeline (TL) from these times. Each layer or prop lands on the word that names it, the character moves while the action is described, and each step strip slaps on its first word.\n- 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.\n- Put the emphasis moves on stressed words. A counter lands at the exact moment its number is spoken.\n- Keep the player's \"Load voiceover\" button working so I can drop in my audio and hear it in sync.\n\nSTORYBOARD FIRST\nBefore building, show me a storyboard and wait for my OK:\n- 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.\n- 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.\n- Below the grid, list any facts or numbers you had to assume.\nWhen I approve it (or after my changes), build the full animation and reuse the storyboard's drawing code.\n\nWHAT TO BUILD\nOne self-contained HTML file (an artifact if you can), built on the reference file below:\n- 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.\n- Keep the canvas at 720x1280 (9:16, for Shorts, Reels and TikTok).\n- Replace the demo's story: TL, the scene pieces (hills, sky props), the hero character (drawBee) and its PATH, the STEPS strips, the fact chip, the takeaway and scoreSound(). Keep and reuse the style's helpers (the 12 fps stop-motion clock (stop()), the paper boil jitter (boil()), paper() shadows, hill() layers, the fibre texture, tornStrip(), the slide-up build and the Fredoka strips).\n- Aim for 15 to 40 seconds unless my content needs more, and set the duration in TL.D.\n- Keep window.seek(t), window.DURATION, window.scoreSound and window.SFX exposed, so the video can be rendered frame by frame.\n- Load the style's fonts before the first draw, as the reference does: Fredoka (500 to 700).\n\nTHE STYLE\n- Everything is flat paper drawn in code: solid shapes with a soft drop shadow (offset down, 10 px blur), a faint fibre texture over the frame, no outlines, no gradients except the sky.\n- Stop-motion timing: animated positions are sampled on a 12 fps clock (stop(t)), and every layer boils by a pixel or two each step. Never move anything smoothly at 30 fps.\n- Palette: sky blue (#b9e2f0), layered greens (#a4d36f to #4b8c3b), sunny yellow (#ffd04d), honey (#f2b33d), pink and white flowers, dark brown text (#3a2a16), honey accent (#e08a00).\n- Titles and steps sit on torn white paper strips, slightly rotated, slapped on with a quick overshoot.\n- One small hand-made character carries the story (flapping wings, a dotted path behind it).\n- Pace: the build takes about 1.5 seconds, then one step every 2 to 2.5 seconds.\n\nRULES THAT KEEP IT IN STYLE\n- 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.\n- 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.\n- It will be watched on phones: at 720x1280 keep strip titles at 44 px or more, step text at 34 px or more and chips at 26 px or more. Fill the frame.\n- Keep each frame fast, well under 50 ms.\n- Give my topic its own demo content; do not reuse the reference's story (\"How bees make honey\") unless my content asks for it.\n\nSOUND\n- Music: a gentle marimba melody (k.voice triangle notes with short decay) over a soft pad.\n- Map events to the kit: every paper layer or strip landing gets a paper rustle (SND.paper) and a soft tap; the bee gets a buzzing hum (a sawtooth with wobble) while it flies; arriving gets a bloop; the fact chip gets \"pop\"; the takeaway gets a marimba run.\n- Voiceover mix: the player calls SFX.live with { voiceover: true } once narration is loaded. Keep the buzz low and mark rustles soft: true.\n- Sync is everything: the sound score reads the same TL times as the picture.\n\nIF YOU CAN RUN CODE\nRender 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.\n\nSTYLE CARD\nName: Paper Craft\nFamily: Illustrated\nLook: Layered cut paper with real drop shadows and a fibre texture: rolling paper hills, a paper sun, flowers and a striped paper bee, all moving at 12 frames a second like stop-motion, with titles on torn white paper strips.\nHow it explains: The scene builds itself layer by layer, then a little character travels through it beat by beat while numbered paper strips slap on to name each step. Everything boils slightly from frame to frame like real paper under a camera, and the takeaway lands on one last strip.\n"
|
|
809
|
+
},
|
|
810
|
+
{
|
|
811
|
+
"id": "marker-board",
|
|
812
|
+
"num": "23",
|
|
813
|
+
"name": "Marker Board",
|
|
814
|
+
"family": "Hand-Drawn",
|
|
815
|
+
"canvas": "720x1280",
|
|
816
|
+
"tall": true,
|
|
817
|
+
"lib": true,
|
|
818
|
+
"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.",
|
|
819
|
+
"how": "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.",
|
|
820
|
+
"fonts": "Permanent Marker, Caveat (700)",
|
|
821
|
+
"demo": "The 3-step funnel",
|
|
822
|
+
"replace": "TL and STROKES (the ordered list of what gets drawn: text, boxes, arrows, circles, notes, with their times and colours) and scoreSound()",
|
|
823
|
+
"keep": "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",
|
|
824
|
+
"sizes": "keep the title at 56 px or more, box words at 40 px or more and notes at 34 px or more",
|
|
825
|
+
"voLine": "Each stroke starts as its word is spoken and finishes by the end of that phrase; the red circle draws on the stressed word.",
|
|
826
|
+
"full": "- Full mix (no voiceover): marker squeaks on every stroke, a cap click at the start, and a soft pad under it all.",
|
|
827
|
+
"voMix": "- 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.",
|
|
828
|
+
"sheet": [
|
|
829
|
+
"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.",
|
|
830
|
+
"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.",
|
|
831
|
+
"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.",
|
|
832
|
+
"Type: Permanent Marker for all board writing; Caveat 700 for small handwritten side notes.",
|
|
833
|
+
"Keep strokes chunky (4 to 6 px) and slightly wobbly, with two passes per line.",
|
|
834
|
+
"Pace: something is always being drawn. Allow 0.4 to 1 second per stroke, and hold the finished board about 2 seconds."
|
|
835
|
+
],
|
|
836
|
+
"sound": [
|
|
837
|
+
"Bed: a quiet, warm pad.",
|
|
838
|
+
"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."
|
|
839
|
+
],
|
|
840
|
+
"sourceFile": "sources/marker-board.html",
|
|
841
|
+
"promptFile": "prompts/marker-board.md",
|
|
842
|
+
"sourceBytes": 58612,
|
|
843
|
+
"prompt": "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.\n\nMY CONTENT\n[No topic yet. Ask me for my topic or script before building anything.]\n\nBUILD DIRECTLY\nSkip the storyboard and build the full animation now. Afterwards, list any facts or numbers you assumed.\n\nWHAT TO BUILD\nOne self-contained HTML file (an artifact if you can), built on the reference file below:\n- 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.\n- Keep the canvas at 720x1280 (9:16, for Shorts, Reels and TikTok).\n- 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).\n- Aim for 15 to 40 seconds unless my content needs more, and set the duration in TL.D.\n- Keep window.seek(t), window.DURATION, window.scoreSound and window.SFX exposed, so the video can be rendered frame by frame.\n- Load the style's fonts before the first draw, as the reference does: Permanent Marker, Caveat (700).\n\nTHE STYLE\n- 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.\n- 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.\n- 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.\n- Type: Permanent Marker for all board writing; Caveat 700 for small handwritten side notes.\n- Keep strokes chunky (4 to 6 px) and slightly wobbly, with two passes per line.\n- Pace: something is always being drawn. Allow 0.4 to 1 second per stroke, and hold the finished board about 2 seconds.\n\nRULES THAT KEEP IT IN STYLE\n- 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.\n- 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.\n- 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.\n- Keep each frame fast, well under 50 ms.\n- Give my topic its own demo content; do not reuse the reference's story (\"The 3-step funnel\") unless my content asks for it.\n\nSOUND\n- Bed: a quiet, warm pad.\n- 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.\n- Full mix (no voiceover): marker squeaks on every stroke, a cap click at the start, and a soft pad under it all.\n- Sync is everything: the sound score reads the same TL times as the picture.\n\nIF YOU CAN RUN CODE\nRender 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.\n\nSTYLE CARD\nName: Marker Board\nFamily: Hand-Drawn\nLook: 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.\nHow 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.\n",
|
|
844
|
+
"promptVo": "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.\n\nMY CONTENT\n[No topic yet. Ask me for my topic or script before building anything.]\n\nVOICEOVER TIMING\n[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.]\n\nHow to use the timing:\n- 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.\n- Set the duration to the last word's end plus about 1.2 seconds.\n- 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.\n- 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.\n- Put the emphasis moves on stressed words. A counter lands at the exact moment its number is spoken.\n- Keep the player's \"Load voiceover\" button working so I can drop in my audio and hear it in sync.\n\nSTORYBOARD FIRST\nBefore building, show me a storyboard and wait for my OK:\n- 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.\n- 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.\n- Below the grid, list any facts or numbers you had to assume.\nWhen I approve it (or after my changes), build the full animation and reuse the storyboard's drawing code.\n\nWHAT TO BUILD\nOne self-contained HTML file (an artifact if you can), built on the reference file below:\n- 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.\n- Keep the canvas at 720x1280 (9:16, for Shorts, Reels and TikTok).\n- 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).\n- Aim for 15 to 40 seconds unless my content needs more, and set the duration in TL.D.\n- Keep window.seek(t), window.DURATION, window.scoreSound and window.SFX exposed, so the video can be rendered frame by frame.\n- Load the style's fonts before the first draw, as the reference does: Permanent Marker, Caveat (700).\n\nTHE STYLE\n- 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.\n- 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.\n- 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.\n- Type: Permanent Marker for all board writing; Caveat 700 for small handwritten side notes.\n- Keep strokes chunky (4 to 6 px) and slightly wobbly, with two passes per line.\n- Pace: something is always being drawn. Allow 0.4 to 1 second per stroke, and hold the finished board about 2 seconds.\n\nRULES THAT KEEP IT IN STYLE\n- 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.\n- 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.\n- 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.\n- Keep each frame fast, well under 50 ms.\n- Give my topic its own demo content; do not reuse the reference's story (\"The 3-step funnel\") unless my content asks for it.\n\nSOUND\n- Bed: a quiet, warm pad.\n- 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.\n- 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.\n- Sync is everything: the sound score reads the same TL times as the picture.\n\nIF YOU CAN RUN CODE\nRender 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.\n\nSTYLE CARD\nName: Marker Board\nFamily: Hand-Drawn\nLook: 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.\nHow 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.\n"
|
|
845
|
+
},
|
|
846
|
+
{
|
|
847
|
+
"id": "blueprint",
|
|
848
|
+
"num": "24",
|
|
849
|
+
"name": "Blueprint",
|
|
850
|
+
"family": "Hand-Drawn",
|
|
851
|
+
"canvas": "720x1280",
|
|
852
|
+
"tall": true,
|
|
853
|
+
"lib": true,
|
|
854
|
+
"look": "A technical drawing on blueprint blue: pale line work on a fine grid, dimension lines with arrowheads, a dashed yellow reference line, mono callouts and a title block in the corner, with the mechanism actually moving.",
|
|
855
|
+
"how": "The drawing inks itself in, then the mechanism runs: a part slides in and every other part reacts the way it really would. A yellow line or highlight shows the moment it works, a wrong version shows why it fails, and the title block holds the takeaway.",
|
|
856
|
+
"fonts": "Space Grotesk (700), JetBrains Mono (500 and 700)",
|
|
857
|
+
"demo": "How a pin tumbler lock works",
|
|
858
|
+
"replace": "TL, the mechanism geometry (PINS, CUTS, the housing and key profile in keyY()), the callouts, the wrong-version beat, the takeaway in the title block and scoreSound()",
|
|
859
|
+
"keep": "the blueprint grid, line(), the ink-in reveal, dim() dimension lines, the dashed yellow reference line, callout() mono labels on leaders, the corner title block, the moving-mechanism approach (positions computed from the driving part)",
|
|
860
|
+
"sizes": "keep the headline at 60 px or more, callouts at 22 px or more and dimension text at 20 px or more",
|
|
861
|
+
"voLine": "The drawing inks in during the intro sentence, the driving part moves while its action is described, the highlight lands on the word that says it works, and the wrong version appears on \"but\" or \"if\".",
|
|
862
|
+
"full": "- Full mix (no voiceover): drafting-pen scratches during the ink-in, a metallic click for every part that moves, and a soft pad.",
|
|
863
|
+
"voMix": "- Voiceover mix: the player calls SFX.live with { voiceover: true } once narration is loaded. Mark scratches and clicks soft: true.",
|
|
864
|
+
"sheet": [
|
|
865
|
+
"Background: blueprint blue (#0d3a6e) with a fine 12 px grid and a 60 px major grid. All line work is pale (#d8eeff), 2 px, with no fills except faint hatching.",
|
|
866
|
+
"Draw the real mechanism with correct proportions and part names. Compute every moving part from the part that drives it (here each pin height comes from the key profile under it), so the motion is physically right.",
|
|
867
|
+
"Yellow (#ffd75e) is only for the critical reference (a dashed line or a highlight) and the success state; red (#ff6b6b) only for a failure.",
|
|
868
|
+
"Dimension lines with arrowheads and mono measurements; callouts in JetBrains Mono on thin leader lines; a title block in the bottom-right corner with sheet number and scale.",
|
|
869
|
+
"Type: Space Grotesk 700 headline at the top (white, second line pale blue).",
|
|
870
|
+
"Pace: ink-in about 2 seconds, then the mechanism in 2 to 3 seconds, the success beat, the failure beat, and the takeaway."
|
|
871
|
+
],
|
|
872
|
+
"sound": [
|
|
873
|
+
"Bed: a soft, steady pad with a slow pulse.",
|
|
874
|
+
"Map events to the kit: line work gets drafting-pen scratches (SND.scratch); each part that lifts or drops gets a small metallic click; success gets a two-note chime and \"click\"; failure gets a dull thud; the takeaway gets an open chord."
|
|
875
|
+
],
|
|
876
|
+
"sourceFile": "sources/blueprint.html",
|
|
877
|
+
"promptFile": "prompts/blueprint.md",
|
|
878
|
+
"sourceBytes": 62493,
|
|
879
|
+
"prompt": "I want an animated video in the \"Blueprint\" 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.\n\nMY CONTENT\n[No topic yet. Ask me for my topic or script before building anything.]\n\nBUILD DIRECTLY\nSkip the storyboard and build the full animation now. Afterwards, list any facts or numbers you assumed.\n\nWHAT TO BUILD\nOne self-contained HTML file (an artifact if you can), built on the reference file below:\n- 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.\n- Keep the canvas at 720x1280 (9:16, for Shorts, Reels and TikTok).\n- Replace the demo's story: TL, the mechanism geometry (PINS, CUTS, the housing and key profile in keyY()), the callouts, the wrong-version beat, the takeaway in the title block and scoreSound(). Keep and reuse the style's helpers (the blueprint grid, line(), the ink-in reveal, dim() dimension lines, the dashed yellow reference line, callout() mono labels on leaders, the corner title block, the moving-mechanism approach (positions computed from the driving part)).\n- Aim for 15 to 40 seconds unless my content needs more, and set the duration in TL.D.\n- Keep window.seek(t), window.DURATION, window.scoreSound and window.SFX exposed, so the video can be rendered frame by frame.\n- Load the style's fonts before the first draw, as the reference does: Space Grotesk (700), JetBrains Mono (500 and 700).\n\nTHE STYLE\n- Background: blueprint blue (#0d3a6e) with a fine 12 px grid and a 60 px major grid. All line work is pale (#d8eeff), 2 px, with no fills except faint hatching.\n- Draw the real mechanism with correct proportions and part names. Compute every moving part from the part that drives it (here each pin height comes from the key profile under it), so the motion is physically right.\n- Yellow (#ffd75e) is only for the critical reference (a dashed line or a highlight) and the success state; red (#ff6b6b) only for a failure.\n- Dimension lines with arrowheads and mono measurements; callouts in JetBrains Mono on thin leader lines; a title block in the bottom-right corner with sheet number and scale.\n- Type: Space Grotesk 700 headline at the top (white, second line pale blue).\n- Pace: ink-in about 2 seconds, then the mechanism in 2 to 3 seconds, the success beat, the failure beat, and the takeaway.\n\nRULES THAT KEEP IT IN STYLE\n- 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.\n- 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.\n- It will be watched on phones: at 720x1280 keep the headline at 60 px or more, callouts at 22 px or more and dimension text at 20 px or more. Fill the frame.\n- Keep each frame fast, well under 50 ms.\n- Give my topic its own demo content; do not reuse the reference's story (\"How a pin tumbler lock works\") unless my content asks for it.\n\nSOUND\n- Bed: a soft, steady pad with a slow pulse.\n- Map events to the kit: line work gets drafting-pen scratches (SND.scratch); each part that lifts or drops gets a small metallic click; success gets a two-note chime and \"click\"; failure gets a dull thud; the takeaway gets an open chord.\n- Full mix (no voiceover): drafting-pen scratches during the ink-in, a metallic click for every part that moves, and a soft pad.\n- Sync is everything: the sound score reads the same TL times as the picture.\n\nIF YOU CAN RUN CODE\nRender 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.\n\nSTYLE CARD\nName: Blueprint\nFamily: Hand-Drawn\nLook: A technical drawing on blueprint blue: pale line work on a fine grid, dimension lines with arrowheads, a dashed yellow reference line, mono callouts and a title block in the corner, with the mechanism actually moving.\nHow it explains: The drawing inks itself in, then the mechanism runs: a part slides in and every other part reacts the way it really would. A yellow line or highlight shows the moment it works, a wrong version shows why it fails, and the title block holds the takeaway.\n",
|
|
880
|
+
"promptVo": "I want an animated video in the \"Blueprint\" 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.\n\nMY CONTENT\n[No topic yet. Ask me for my topic or script before building anything.]\n\nVOICEOVER TIMING\n[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.]\n\nHow to use the timing:\n- 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.\n- Set the duration to the last word's end plus about 1.2 seconds.\n- Build the timeline (TL) from these times. The drawing inks in during the intro sentence, the driving part moves while its action is described, the highlight lands on the word that says it works, and the wrong version appears on \"but\" or \"if\".\n- 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.\n- Put the emphasis moves on stressed words. A counter lands at the exact moment its number is spoken.\n- Keep the player's \"Load voiceover\" button working so I can drop in my audio and hear it in sync.\n\nSTORYBOARD FIRST\nBefore building, show me a storyboard and wait for my OK:\n- 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.\n- 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.\n- Below the grid, list any facts or numbers you had to assume.\nWhen I approve it (or after my changes), build the full animation and reuse the storyboard's drawing code.\n\nWHAT TO BUILD\nOne self-contained HTML file (an artifact if you can), built on the reference file below:\n- 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.\n- Keep the canvas at 720x1280 (9:16, for Shorts, Reels and TikTok).\n- Replace the demo's story: TL, the mechanism geometry (PINS, CUTS, the housing and key profile in keyY()), the callouts, the wrong-version beat, the takeaway in the title block and scoreSound(). Keep and reuse the style's helpers (the blueprint grid, line(), the ink-in reveal, dim() dimension lines, the dashed yellow reference line, callout() mono labels on leaders, the corner title block, the moving-mechanism approach (positions computed from the driving part)).\n- Aim for 15 to 40 seconds unless my content needs more, and set the duration in TL.D.\n- Keep window.seek(t), window.DURATION, window.scoreSound and window.SFX exposed, so the video can be rendered frame by frame.\n- Load the style's fonts before the first draw, as the reference does: Space Grotesk (700), JetBrains Mono (500 and 700).\n\nTHE STYLE\n- Background: blueprint blue (#0d3a6e) with a fine 12 px grid and a 60 px major grid. All line work is pale (#d8eeff), 2 px, with no fills except faint hatching.\n- Draw the real mechanism with correct proportions and part names. Compute every moving part from the part that drives it (here each pin height comes from the key profile under it), so the motion is physically right.\n- Yellow (#ffd75e) is only for the critical reference (a dashed line or a highlight) and the success state; red (#ff6b6b) only for a failure.\n- Dimension lines with arrowheads and mono measurements; callouts in JetBrains Mono on thin leader lines; a title block in the bottom-right corner with sheet number and scale.\n- Type: Space Grotesk 700 headline at the top (white, second line pale blue).\n- Pace: ink-in about 2 seconds, then the mechanism in 2 to 3 seconds, the success beat, the failure beat, and the takeaway.\n\nRULES THAT KEEP IT IN STYLE\n- 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.\n- 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.\n- It will be watched on phones: at 720x1280 keep the headline at 60 px or more, callouts at 22 px or more and dimension text at 20 px or more. Fill the frame.\n- Keep each frame fast, well under 50 ms.\n- Give my topic its own demo content; do not reuse the reference's story (\"How a pin tumbler lock works\") unless my content asks for it.\n\nSOUND\n- Bed: a soft, steady pad with a slow pulse.\n- Map events to the kit: line work gets drafting-pen scratches (SND.scratch); each part that lifts or drops gets a small metallic click; success gets a two-note chime and \"click\"; failure gets a dull thud; the takeaway gets an open chord.\n- Voiceover mix: the player calls SFX.live with { voiceover: true } once narration is loaded. Mark scratches and clicks soft: true.\n- Sync is everything: the sound score reads the same TL times as the picture.\n\nIF YOU CAN RUN CODE\nRender 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.\n\nSTYLE CARD\nName: Blueprint\nFamily: Hand-Drawn\nLook: A technical drawing on blueprint blue: pale line work on a fine grid, dimension lines with arrowheads, a dashed yellow reference line, mono callouts and a title block in the corner, with the mechanism actually moving.\nHow it explains: The drawing inks itself in, then the mechanism runs: a part slides in and every other part reacts the way it really would. A yellow line or highlight shows the moment it works, a wrong version shows why it fails, and the title block holds the takeaway.\n"
|
|
881
|
+
},
|
|
882
|
+
{
|
|
883
|
+
"id": "zine-collage",
|
|
884
|
+
"num": "25",
|
|
885
|
+
"name": "Zine Collage",
|
|
886
|
+
"family": "Illustrated",
|
|
887
|
+
"canvas": "720x1280",
|
|
888
|
+
"tall": true,
|
|
889
|
+
"lib": true,
|
|
890
|
+
"look": "A DIY zine on kraft paper: torn pink and black paper, halftone cutouts drawn in code, ransom-note letters each in a different font and colour, translucent tape strips and handwritten notes, all slapped on at a jittery 8 frames a second.",
|
|
891
|
+
"how": "Pieces are slapped onto the page one after another like someone building a collage live: torn paper, a halftone object, tape, then the title drops in letter by letter. Each fact arrives as a new torn scrap or sticker with a slap and a little shake.",
|
|
892
|
+
"fonts": "Anton, Archivo Black, Bangers, Playfair Display 900, Special Elite, Caveat 700 (mixed like ransom-note letters)",
|
|
893
|
+
"demo": "The rise of vinyl",
|
|
894
|
+
"replace": "TL, the halftone subject (drawRecord or your own halftoneShape), the ransom title text, SCRAPS (fact cards and their text), the takeaway and scoreSound()",
|
|
895
|
+
"keep": "the kraft paper texture, torn() edges, the halftone dot renderer, ransom() letter boxes, tape(), the 8 fps slap timing (slapT) with jitter, the shadows and the Caveat handwriting",
|
|
896
|
+
"sizes": "keep ransom letters at 48 px or more, scrap text at 30 px or more and handwriting at 38 px or more",
|
|
897
|
+
"voLine": "Each scrap slaps down on the first word of its fact, the title letters drop while the title is said, and the halftone subject lands on its name.",
|
|
898
|
+
"full": "- Full mix (no voiceover): keep the lo-fi beat with vinyl crackle, a paper slap for every piece and a tape rip for every tape strip.",
|
|
899
|
+
"voMix": "- Voiceover mix: the player calls SFX.live with { voiceover: true } once narration is loaded, which keeps the beat low. Mark slaps and rips soft: true.",
|
|
900
|
+
"sheet": [
|
|
901
|
+
"Background: kraft paper (#e2d2b2) with speckles. Pieces are torn shapes (jagged edges from torn()) in hot pink (#ff5c8a), black, white and yellow, each with a short drop shadow.",
|
|
902
|
+
"The subject is drawn as a halftone: a dot grid whose dot size follows a brightness function of your shape (here a record with grooves and a red label). No photos.",
|
|
903
|
+
"Ransom-note titles: each letter in its own box with a random font (Anton, Playfair Display, Special Elite, Archivo Black, Bangers), colour pair and small rotation, all seeded so it never changes between frames.",
|
|
904
|
+
"Timing is stop-motion: pieces appear on an 8 fps clock (slapT) with a 1 to 2 px jitter, and each slap lands with a tiny overshoot.",
|
|
905
|
+
"Use real, checked facts on the scraps, and handwriting (Caveat) for the personal aside.",
|
|
906
|
+
"Pace: a new piece every 0.3 to 0.8 seconds, a fact scrap every 2 seconds."
|
|
907
|
+
],
|
|
908
|
+
"sound": [
|
|
909
|
+
"Music: a lo-fi hip-hop beat (soft kick, dusty snare, closed hats) with constant vinyl crackle on top.",
|
|
910
|
+
"Map events to the kit: every piece gets a paper slap (a short noise burst plus SND.tap); tape gets a rip (a rising band-pass noise sweep); letters get tiny ticks; the record gets a needle drop (a soft thud and crackle swell)."
|
|
911
|
+
],
|
|
912
|
+
"sourceFile": "sources/zine-collage.html",
|
|
913
|
+
"promptFile": "prompts/zine-collage.md",
|
|
914
|
+
"sourceBytes": 61178,
|
|
915
|
+
"prompt": "I want an animated video in the \"Zine Collage\" style (Illustrated) 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.\n\nMY CONTENT\n[No topic yet. Ask me for my topic or script before building anything.]\n\nBUILD DIRECTLY\nSkip the storyboard and build the full animation now. Afterwards, list any facts or numbers you assumed.\n\nWHAT TO BUILD\nOne self-contained HTML file (an artifact if you can), built on the reference file below:\n- 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.\n- Keep the canvas at 720x1280 (9:16, for Shorts, Reels and TikTok).\n- Replace the demo's story: TL, the halftone subject (drawRecord or your own halftoneShape), the ransom title text, SCRAPS (fact cards and their text), the takeaway and scoreSound(). Keep and reuse the style's helpers (the kraft paper texture, torn() edges, the halftone dot renderer, ransom() letter boxes, tape(), the 8 fps slap timing (slapT) with jitter, the shadows and the Caveat handwriting).\n- Aim for 15 to 40 seconds unless my content needs more, and set the duration in TL.D.\n- Keep window.seek(t), window.DURATION, window.scoreSound and window.SFX exposed, so the video can be rendered frame by frame.\n- Load the style's fonts before the first draw, as the reference does: Anton, Archivo Black, Bangers, Playfair Display 900, Special Elite, Caveat 700 (mixed like ransom-note letters).\n\nTHE STYLE\n- Background: kraft paper (#e2d2b2) with speckles. Pieces are torn shapes (jagged edges from torn()) in hot pink (#ff5c8a), black, white and yellow, each with a short drop shadow.\n- The subject is drawn as a halftone: a dot grid whose dot size follows a brightness function of your shape (here a record with grooves and a red label). No photos.\n- Ransom-note titles: each letter in its own box with a random font (Anton, Playfair Display, Special Elite, Archivo Black, Bangers), colour pair and small rotation, all seeded so it never changes between frames.\n- Timing is stop-motion: pieces appear on an 8 fps clock (slapT) with a 1 to 2 px jitter, and each slap lands with a tiny overshoot.\n- Use real, checked facts on the scraps, and handwriting (Caveat) for the personal aside.\n- Pace: a new piece every 0.3 to 0.8 seconds, a fact scrap every 2 seconds.\n\nRULES THAT KEEP IT IN STYLE\n- 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.\n- 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.\n- It will be watched on phones: at 720x1280 keep ransom letters at 48 px or more, scrap text at 30 px or more and handwriting at 38 px or more. Fill the frame.\n- Keep each frame fast, well under 50 ms.\n- Give my topic its own demo content; do not reuse the reference's story (\"The rise of vinyl\") unless my content asks for it.\n\nSOUND\n- Music: a lo-fi hip-hop beat (soft kick, dusty snare, closed hats) with constant vinyl crackle on top.\n- Map events to the kit: every piece gets a paper slap (a short noise burst plus SND.tap); tape gets a rip (a rising band-pass noise sweep); letters get tiny ticks; the record gets a needle drop (a soft thud and crackle swell).\n- Full mix (no voiceover): keep the lo-fi beat with vinyl crackle, a paper slap for every piece and a tape rip for every tape strip.\n- Sync is everything: the sound score reads the same TL times as the picture.\n\nIF YOU CAN RUN CODE\nRender 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.\n\nSTYLE CARD\nName: Zine Collage\nFamily: Illustrated\nLook: A DIY zine on kraft paper: torn pink and black paper, halftone cutouts drawn in code, ransom-note letters each in a different font and colour, translucent tape strips and handwritten notes, all slapped on at a jittery 8 frames a second.\nHow it explains: Pieces are slapped onto the page one after another like someone building a collage live: torn paper, a halftone object, tape, then the title drops in letter by letter. Each fact arrives as a new torn scrap or sticker with a slap and a little shake.\n",
|
|
916
|
+
"promptVo": "I want an animated video in the \"Zine Collage\" style (Illustrated) 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.\n\nMY CONTENT\n[No topic yet. Ask me for my topic or script before building anything.]\n\nVOICEOVER TIMING\n[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.]\n\nHow to use the timing:\n- 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.\n- Set the duration to the last word's end plus about 1.2 seconds.\n- Build the timeline (TL) from these times. Each scrap slaps down on the first word of its fact, the title letters drop while the title is said, and the halftone subject lands on its name.\n- 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.\n- Put the emphasis moves on stressed words. A counter lands at the exact moment its number is spoken.\n- Keep the player's \"Load voiceover\" button working so I can drop in my audio and hear it in sync.\n\nSTORYBOARD FIRST\nBefore building, show me a storyboard and wait for my OK:\n- 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.\n- 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.\n- Below the grid, list any facts or numbers you had to assume.\nWhen I approve it (or after my changes), build the full animation and reuse the storyboard's drawing code.\n\nWHAT TO BUILD\nOne self-contained HTML file (an artifact if you can), built on the reference file below:\n- 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.\n- Keep the canvas at 720x1280 (9:16, for Shorts, Reels and TikTok).\n- Replace the demo's story: TL, the halftone subject (drawRecord or your own halftoneShape), the ransom title text, SCRAPS (fact cards and their text), the takeaway and scoreSound(). Keep and reuse the style's helpers (the kraft paper texture, torn() edges, the halftone dot renderer, ransom() letter boxes, tape(), the 8 fps slap timing (slapT) with jitter, the shadows and the Caveat handwriting).\n- Aim for 15 to 40 seconds unless my content needs more, and set the duration in TL.D.\n- Keep window.seek(t), window.DURATION, window.scoreSound and window.SFX exposed, so the video can be rendered frame by frame.\n- Load the style's fonts before the first draw, as the reference does: Anton, Archivo Black, Bangers, Playfair Display 900, Special Elite, Caveat 700 (mixed like ransom-note letters).\n\nTHE STYLE\n- Background: kraft paper (#e2d2b2) with speckles. Pieces are torn shapes (jagged edges from torn()) in hot pink (#ff5c8a), black, white and yellow, each with a short drop shadow.\n- The subject is drawn as a halftone: a dot grid whose dot size follows a brightness function of your shape (here a record with grooves and a red label). No photos.\n- Ransom-note titles: each letter in its own box with a random font (Anton, Playfair Display, Special Elite, Archivo Black, Bangers), colour pair and small rotation, all seeded so it never changes between frames.\n- Timing is stop-motion: pieces appear on an 8 fps clock (slapT) with a 1 to 2 px jitter, and each slap lands with a tiny overshoot.\n- Use real, checked facts on the scraps, and handwriting (Caveat) for the personal aside.\n- Pace: a new piece every 0.3 to 0.8 seconds, a fact scrap every 2 seconds.\n\nRULES THAT KEEP IT IN STYLE\n- 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.\n- 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.\n- It will be watched on phones: at 720x1280 keep ransom letters at 48 px or more, scrap text at 30 px or more and handwriting at 38 px or more. Fill the frame.\n- Keep each frame fast, well under 50 ms.\n- Give my topic its own demo content; do not reuse the reference's story (\"The rise of vinyl\") unless my content asks for it.\n\nSOUND\n- Music: a lo-fi hip-hop beat (soft kick, dusty snare, closed hats) with constant vinyl crackle on top.\n- Map events to the kit: every piece gets a paper slap (a short noise burst plus SND.tap); tape gets a rip (a rising band-pass noise sweep); letters get tiny ticks; the record gets a needle drop (a soft thud and crackle swell).\n- Voiceover mix: the player calls SFX.live with { voiceover: true } once narration is loaded, which keeps the beat low. Mark slaps and rips soft: true.\n- Sync is everything: the sound score reads the same TL times as the picture.\n\nIF YOU CAN RUN CODE\nRender 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.\n\nSTYLE CARD\nName: Zine Collage\nFamily: Illustrated\nLook: A DIY zine on kraft paper: torn pink and black paper, halftone cutouts drawn in code, ransom-note letters each in a different font and colour, translucent tape strips and handwritten notes, all slapped on at a jittery 8 frames a second.\nHow it explains: Pieces are slapped onto the page one after another like someone building a collage live: torn paper, a halftone object, tape, then the title drops in letter by letter. Each fact arrives as a new torn scrap or sticker with a slap and a little shake.\n"
|
|
917
|
+
},
|
|
918
|
+
{
|
|
919
|
+
"id": "comic-panels",
|
|
920
|
+
"num": "26",
|
|
921
|
+
"name": "Comic Panels",
|
|
922
|
+
"family": "Illustrated",
|
|
923
|
+
"canvas": "720x1280",
|
|
924
|
+
"tall": true,
|
|
925
|
+
"lib": true,
|
|
926
|
+
"look": "A comic-book page drawn in code: thick black panel borders, halftone dot fills in bright flat colours, round speech balloons, yellow caption boxes, and a big spiky sound-effect burst, with Bangers lettering throughout.",
|
|
927
|
+
"how": "The camera reads the page like a reader: it zooms into the first panel, moves to the next as each beat lands, shakes on the big sound effect, then pulls out to show the whole page with the title panel. Balloons and effects pop in with a bounce.",
|
|
928
|
+
"fonts": "Bangers",
|
|
929
|
+
"demo": "The day the internet broke",
|
|
930
|
+
"replace": "TL, the PANELS layout, what is drawn in each panel (props, the character face and expression), the balloon and caption text, the burst word, the camera keys in CAMK and scoreSound()",
|
|
931
|
+
"keep": "the page grid with gutters, panel() halftone fills and 6 px borders, face() with expressive eyes and mouth, balloon() with tail, caption(), burst() spiky polygons, the reading-order camera (CAMK track) and the shake on the big hit",
|
|
932
|
+
"sizes": "keep balloon text at 36 px or more, captions at 30 px or more and the title panel at 80 px or more",
|
|
933
|
+
"voLine": "The camera moves to each panel as its line starts, each balloon pops on its first word, and the burst lands with the shake on the loudest word.",
|
|
934
|
+
"full": "- Full mix (no voiceover): keep a bouncy pad, a boing for every balloon, a whoosh for every camera move, and a crash and boom for the burst.",
|
|
935
|
+
"voMix": "- Voiceover mix: the player calls SFX.live with { voiceover: true } once narration is loaded. Mark boings soft: true and keep the crash for the burst only.",
|
|
936
|
+
"sheet": [
|
|
937
|
+
"One comic page: a white page with 4 to 6 panels, 10 px gutters and 6 px black borders. Each panel has a flat colour fill with a halftone dot pattern on top.",
|
|
938
|
+
"Characters are simple and expressive: round heads, big white eyes with dots, eyebrows and an open mouth, a sweat drop for stress. Original characters only, never a known comic hero.",
|
|
939
|
+
"Speech balloons are white ellipses with a black outline and a pointed tail; captions are yellow boxes; sound effects are spiky bursts with Bangers lettering in yellow with a thick black stroke.",
|
|
940
|
+
"Camera: zoom into one panel at a time in reading order (CAMK), eased; shake on the big sound effect; pull out to the full page at the end.",
|
|
941
|
+
"Type: Bangers everywhere, all caps, slightly letter-spaced.",
|
|
942
|
+
"Pace: about 2 to 3 seconds per panel, and hold the full page about 2 seconds."
|
|
943
|
+
],
|
|
944
|
+
"sound": [
|
|
945
|
+
"Bed: a light, bouncy pad with hats.",
|
|
946
|
+
"Map events to the kit: camera moves get a quick \"whoosh\"; balloons get a boing (a sine that bends up and down); captions get a soft \"pop\"; the burst gets \"glitch\", \"boom\" and \"slam\"; the full-page reveal gets \"shimmer\"."
|
|
947
|
+
],
|
|
948
|
+
"sourceFile": "sources/comic-panels.html",
|
|
949
|
+
"promptFile": "prompts/comic-panels.md",
|
|
950
|
+
"sourceBytes": 60301,
|
|
951
|
+
"prompt": "I want an animated video in the \"Comic Panels\" style (Illustrated) 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.\n\nMY CONTENT\n[No topic yet. Ask me for my topic or script before building anything.]\n\nBUILD DIRECTLY\nSkip the storyboard and build the full animation now. Afterwards, list any facts or numbers you assumed.\n\nWHAT TO BUILD\nOne self-contained HTML file (an artifact if you can), built on the reference file below:\n- 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.\n- Keep the canvas at 720x1280 (9:16, for Shorts, Reels and TikTok).\n- Replace the demo's story: TL, the PANELS layout, what is drawn in each panel (props, the character face and expression), the balloon and caption text, the burst word, the camera keys in CAMK and scoreSound(). Keep and reuse the style's helpers (the page grid with gutters, panel() halftone fills and 6 px borders, face() with expressive eyes and mouth, balloon() with tail, caption(), burst() spiky polygons, the reading-order camera (CAMK track) and the shake on the big hit).\n- Aim for 15 to 40 seconds unless my content needs more, and set the duration in TL.D.\n- Keep window.seek(t), window.DURATION, window.scoreSound and window.SFX exposed, so the video can be rendered frame by frame.\n- Load the style's fonts before the first draw, as the reference does: Bangers.\n\nTHE STYLE\n- One comic page: a white page with 4 to 6 panels, 10 px gutters and 6 px black borders. Each panel has a flat colour fill with a halftone dot pattern on top.\n- Characters are simple and expressive: round heads, big white eyes with dots, eyebrows and an open mouth, a sweat drop for stress. Original characters only, never a known comic hero.\n- Speech balloons are white ellipses with a black outline and a pointed tail; captions are yellow boxes; sound effects are spiky bursts with Bangers lettering in yellow with a thick black stroke.\n- Camera: zoom into one panel at a time in reading order (CAMK), eased; shake on the big sound effect; pull out to the full page at the end.\n- Type: Bangers everywhere, all caps, slightly letter-spaced.\n- Pace: about 2 to 3 seconds per panel, and hold the full page about 2 seconds.\n\nRULES THAT KEEP IT IN STYLE\n- 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.\n- 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.\n- It will be watched on phones: at 720x1280 keep balloon text at 36 px or more, captions at 30 px or more and the title panel at 80 px or more. Fill the frame.\n- Keep each frame fast, well under 50 ms.\n- Give my topic its own demo content; do not reuse the reference's story (\"The day the internet broke\") unless my content asks for it.\n\nSOUND\n- Bed: a light, bouncy pad with hats.\n- Map events to the kit: camera moves get a quick \"whoosh\"; balloons get a boing (a sine that bends up and down); captions get a soft \"pop\"; the burst gets \"glitch\", \"boom\" and \"slam\"; the full-page reveal gets \"shimmer\".\n- Full mix (no voiceover): keep a bouncy pad, a boing for every balloon, a whoosh for every camera move, and a crash and boom for the burst.\n- Sync is everything: the sound score reads the same TL times as the picture.\n\nIF YOU CAN RUN CODE\nRender 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.\n\nSTYLE CARD\nName: Comic Panels\nFamily: Illustrated\nLook: A comic-book page drawn in code: thick black panel borders, halftone dot fills in bright flat colours, round speech balloons, yellow caption boxes, and a big spiky sound-effect burst, with Bangers lettering throughout.\nHow it explains: The camera reads the page like a reader: it zooms into the first panel, moves to the next as each beat lands, shakes on the big sound effect, then pulls out to show the whole page with the title panel. Balloons and effects pop in with a bounce.\n",
|
|
952
|
+
"promptVo": "I want an animated video in the \"Comic Panels\" style (Illustrated) 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.\n\nMY CONTENT\n[No topic yet. Ask me for my topic or script before building anything.]\n\nVOICEOVER TIMING\n[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.]\n\nHow to use the timing:\n- 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.\n- Set the duration to the last word's end plus about 1.2 seconds.\n- Build the timeline (TL) from these times. The camera moves to each panel as its line starts, each balloon pops on its first word, and the burst lands with the shake on the loudest word.\n- 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.\n- Put the emphasis moves on stressed words. A counter lands at the exact moment its number is spoken.\n- Keep the player's \"Load voiceover\" button working so I can drop in my audio and hear it in sync.\n\nSTORYBOARD FIRST\nBefore building, show me a storyboard and wait for my OK:\n- 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.\n- 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.\n- Below the grid, list any facts or numbers you had to assume.\nWhen I approve it (or after my changes), build the full animation and reuse the storyboard's drawing code.\n\nWHAT TO BUILD\nOne self-contained HTML file (an artifact if you can), built on the reference file below:\n- 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.\n- Keep the canvas at 720x1280 (9:16, for Shorts, Reels and TikTok).\n- Replace the demo's story: TL, the PANELS layout, what is drawn in each panel (props, the character face and expression), the balloon and caption text, the burst word, the camera keys in CAMK and scoreSound(). Keep and reuse the style's helpers (the page grid with gutters, panel() halftone fills and 6 px borders, face() with expressive eyes and mouth, balloon() with tail, caption(), burst() spiky polygons, the reading-order camera (CAMK track) and the shake on the big hit).\n- Aim for 15 to 40 seconds unless my content needs more, and set the duration in TL.D.\n- Keep window.seek(t), window.DURATION, window.scoreSound and window.SFX exposed, so the video can be rendered frame by frame.\n- Load the style's fonts before the first draw, as the reference does: Bangers.\n\nTHE STYLE\n- One comic page: a white page with 4 to 6 panels, 10 px gutters and 6 px black borders. Each panel has a flat colour fill with a halftone dot pattern on top.\n- Characters are simple and expressive: round heads, big white eyes with dots, eyebrows and an open mouth, a sweat drop for stress. Original characters only, never a known comic hero.\n- Speech balloons are white ellipses with a black outline and a pointed tail; captions are yellow boxes; sound effects are spiky bursts with Bangers lettering in yellow with a thick black stroke.\n- Camera: zoom into one panel at a time in reading order (CAMK), eased; shake on the big sound effect; pull out to the full page at the end.\n- Type: Bangers everywhere, all caps, slightly letter-spaced.\n- Pace: about 2 to 3 seconds per panel, and hold the full page about 2 seconds.\n\nRULES THAT KEEP IT IN STYLE\n- 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.\n- 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.\n- It will be watched on phones: at 720x1280 keep balloon text at 36 px or more, captions at 30 px or more and the title panel at 80 px or more. Fill the frame.\n- Keep each frame fast, well under 50 ms.\n- Give my topic its own demo content; do not reuse the reference's story (\"The day the internet broke\") unless my content asks for it.\n\nSOUND\n- Bed: a light, bouncy pad with hats.\n- Map events to the kit: camera moves get a quick \"whoosh\"; balloons get a boing (a sine that bends up and down); captions get a soft \"pop\"; the burst gets \"glitch\", \"boom\" and \"slam\"; the full-page reveal gets \"shimmer\".\n- Voiceover mix: the player calls SFX.live with { voiceover: true } once narration is loaded. Mark boings soft: true and keep the crash for the burst only.\n- Sync is everything: the sound score reads the same TL times as the picture.\n\nIF YOU CAN RUN CODE\nRender 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.\n\nSTYLE CARD\nName: Comic Panels\nFamily: Illustrated\nLook: A comic-book page drawn in code: thick black panel borders, halftone dot fills in bright flat colours, round speech balloons, yellow caption boxes, and a big spiky sound-effect burst, with Bangers lettering throughout.\nHow it explains: The camera reads the page like a reader: it zooms into the first panel, moves to the next as each beat lands, shakes on the big sound effect, then pulls out to show the whole page with the title panel. Balloons and effects pop in with a bounce.\n"
|
|
953
|
+
},
|
|
954
|
+
{
|
|
955
|
+
"id": "parchment-map",
|
|
956
|
+
"num": "27",
|
|
957
|
+
"name": "Parchment Map",
|
|
958
|
+
"family": "Illustrated",
|
|
959
|
+
"canvas": "720x1280",
|
|
960
|
+
"tall": true,
|
|
961
|
+
"lib": true,
|
|
962
|
+
"look": "An aged ink map on stained parchment: hand-inked coastlines with a second faint outline, a graticule, burnt edges, a compass rose, a little sailing ship and a red dashed route that draws itself as the camera follows it across the map.",
|
|
963
|
+
"how": "The camera pans across a wide map, following the ship as the red route draws behind it. At each key place a typewriter date stamp drops in, and a counter or final stamp sums up the journey before the takeaway.",
|
|
964
|
+
"fonts": "Playfair Display (700 and 900, italic), Special Elite",
|
|
965
|
+
"demo": "The first trip around the world, 1519 to 1522",
|
|
966
|
+
"replace": "TL, the land outlines in LAND (if the area changes), ROUTE (lon/lat waypoints with arrival times), STAMPS, the title, the counter and takeaway and scoreSound()",
|
|
967
|
+
"keep": "the pre-rendered parchment map layer (stains, graticule, double-inked coasts), the lon/lat to map projection, the camera that follows the ship, the dashed red route with arrowhead, the ship, the compass rose, the burnt-edge vignette and the Special Elite stamps",
|
|
968
|
+
"sizes": "keep the headline at 64 px or more, stamps at 26 px or more and the counter at 60 px or more",
|
|
969
|
+
"voLine": "The ship reaches each place as it is named, the date stamp drops on the date, and the final stamp lands on the last spoken number.",
|
|
970
|
+
"full": "- Full mix (no voiceover): keep the slow sea swell, the quill scratch while the route draws, a creak or bell at each stamp, and a warm chord at the end.",
|
|
971
|
+
"voMix": "- Voiceover mix: the player calls SFX.live with { voiceover: true } once narration is loaded. Keep the sea swell very low and mark scratches soft: true.",
|
|
972
|
+
"sheet": [
|
|
973
|
+
"The map is a pre-rendered parchment layer: warm paper (#efdcb2 to #dfc28a) with brown stains, a faint graticule every 30 degrees, and coastlines inked twice in sepia (#5a3a1c) with a pale fill. Keep geography roughly real for real places.",
|
|
974
|
+
"Project lon/lat to the map with one scale; route waypoints carry their real coordinates and their arrival time, so the ship always moves at story speed.",
|
|
975
|
+
"The route is a red (#a3261c) dashed line that grows behind the ship, with an arrowhead at the front. The ship is a small inked hull with two sails that bobs on the waves.",
|
|
976
|
+
"The camera pans across the map following the ship; the title and stamps stay fixed on screen.",
|
|
977
|
+
"Type: Playfair Display 900 for the title (second line italic), Special Elite typewriter text for date stamps on cream labels with a red border.",
|
|
978
|
+
"Burnt edges (a dark brown vignette) and paper grain on top of everything.",
|
|
979
|
+
"Pace: one stamp every 2 to 3 seconds of travel; hold the final stamp about 2 seconds."
|
|
980
|
+
],
|
|
981
|
+
"sound": [
|
|
982
|
+
"Bed: a slow, low sea swell (brown noise with a slow filter sweep) and a warm, sparse pad.",
|
|
983
|
+
"Map events to the kit: the drawing route gets a soft quill scratch (SND.scratch); each stamp gets a stamp thud (\"stamp\" at low gain) and a soft bell; storms or deaths get a low swell; the takeaway gets an open chord."
|
|
984
|
+
],
|
|
985
|
+
"sourceFile": "sources/parchment-map.html",
|
|
986
|
+
"promptFile": "prompts/parchment-map.md",
|
|
987
|
+
"sourceBytes": 64033,
|
|
988
|
+
"prompt": "I want an animated video in the \"Parchment Map\" style (Illustrated) 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.\n\nMY CONTENT\n[No topic yet. Ask me for my topic or script before building anything.]\n\nBUILD DIRECTLY\nSkip the storyboard and build the full animation now. Afterwards, list any facts or numbers you assumed.\n\nWHAT TO BUILD\nOne self-contained HTML file (an artifact if you can), built on the reference file below:\n- 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.\n- Keep the canvas at 720x1280 (9:16, for Shorts, Reels and TikTok).\n- Replace the demo's story: TL, the land outlines in LAND (if the area changes), ROUTE (lon/lat waypoints with arrival times), STAMPS, the title, the counter and takeaway and scoreSound(). Keep and reuse the style's helpers (the pre-rendered parchment map layer (stains, graticule, double-inked coasts), the lon/lat to map projection, the camera that follows the ship, the dashed red route with arrowhead, the ship, the compass rose, the burnt-edge vignette and the Special Elite stamps).\n- Aim for 15 to 40 seconds unless my content needs more, and set the duration in TL.D.\n- Keep window.seek(t), window.DURATION, window.scoreSound and window.SFX exposed, so the video can be rendered frame by frame.\n- Load the style's fonts before the first draw, as the reference does: Playfair Display (700 and 900, italic), Special Elite.\n\nTHE STYLE\n- The map is a pre-rendered parchment layer: warm paper (#efdcb2 to #dfc28a) with brown stains, a faint graticule every 30 degrees, and coastlines inked twice in sepia (#5a3a1c) with a pale fill. Keep geography roughly real for real places.\n- Project lon/lat to the map with one scale; route waypoints carry their real coordinates and their arrival time, so the ship always moves at story speed.\n- The route is a red (#a3261c) dashed line that grows behind the ship, with an arrowhead at the front. The ship is a small inked hull with two sails that bobs on the waves.\n- The camera pans across the map following the ship; the title and stamps stay fixed on screen.\n- Type: Playfair Display 900 for the title (second line italic), Special Elite typewriter text for date stamps on cream labels with a red border.\n- Burnt edges (a dark brown vignette) and paper grain on top of everything.\n- Pace: one stamp every 2 to 3 seconds of travel; hold the final stamp about 2 seconds.\n\nRULES THAT KEEP IT IN STYLE\n- 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.\n- 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.\n- It will be watched on phones: at 720x1280 keep the headline at 64 px or more, stamps at 26 px or more and the counter at 60 px or more. Fill the frame.\n- Keep each frame fast, well under 50 ms.\n- Give my topic its own demo content; do not reuse the reference's story (\"The first trip around the world, 1519 to 1522\") unless my content asks for it.\n\nSOUND\n- Bed: a slow, low sea swell (brown noise with a slow filter sweep) and a warm, sparse pad.\n- Map events to the kit: the drawing route gets a soft quill scratch (SND.scratch); each stamp gets a stamp thud (\"stamp\" at low gain) and a soft bell; storms or deaths get a low swell; the takeaway gets an open chord.\n- Full mix (no voiceover): keep the slow sea swell, the quill scratch while the route draws, a creak or bell at each stamp, and a warm chord at the end.\n- Sync is everything: the sound score reads the same TL times as the picture.\n\nIF YOU CAN RUN CODE\nRender 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.\n\nSTYLE CARD\nName: Parchment Map\nFamily: Illustrated\nLook: An aged ink map on stained parchment: hand-inked coastlines with a second faint outline, a graticule, burnt edges, a compass rose, a little sailing ship and a red dashed route that draws itself as the camera follows it across the map.\nHow it explains: The camera pans across a wide map, following the ship as the red route draws behind it. At each key place a typewriter date stamp drops in, and a counter or final stamp sums up the journey before the takeaway.\n",
|
|
989
|
+
"promptVo": "I want an animated video in the \"Parchment Map\" style (Illustrated) 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.\n\nMY CONTENT\n[No topic yet. Ask me for my topic or script before building anything.]\n\nVOICEOVER TIMING\n[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.]\n\nHow to use the timing:\n- 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.\n- Set the duration to the last word's end plus about 1.2 seconds.\n- Build the timeline (TL) from these times. The ship reaches each place as it is named, the date stamp drops on the date, and the final stamp lands on the last spoken number.\n- 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.\n- Put the emphasis moves on stressed words. A counter lands at the exact moment its number is spoken.\n- Keep the player's \"Load voiceover\" button working so I can drop in my audio and hear it in sync.\n\nSTORYBOARD FIRST\nBefore building, show me a storyboard and wait for my OK:\n- 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.\n- 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.\n- Below the grid, list any facts or numbers you had to assume.\nWhen I approve it (or after my changes), build the full animation and reuse the storyboard's drawing code.\n\nWHAT TO BUILD\nOne self-contained HTML file (an artifact if you can), built on the reference file below:\n- 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.\n- Keep the canvas at 720x1280 (9:16, for Shorts, Reels and TikTok).\n- Replace the demo's story: TL, the land outlines in LAND (if the area changes), ROUTE (lon/lat waypoints with arrival times), STAMPS, the title, the counter and takeaway and scoreSound(). Keep and reuse the style's helpers (the pre-rendered parchment map layer (stains, graticule, double-inked coasts), the lon/lat to map projection, the camera that follows the ship, the dashed red route with arrowhead, the ship, the compass rose, the burnt-edge vignette and the Special Elite stamps).\n- Aim for 15 to 40 seconds unless my content needs more, and set the duration in TL.D.\n- Keep window.seek(t), window.DURATION, window.scoreSound and window.SFX exposed, so the video can be rendered frame by frame.\n- Load the style's fonts before the first draw, as the reference does: Playfair Display (700 and 900, italic), Special Elite.\n\nTHE STYLE\n- The map is a pre-rendered parchment layer: warm paper (#efdcb2 to #dfc28a) with brown stains, a faint graticule every 30 degrees, and coastlines inked twice in sepia (#5a3a1c) with a pale fill. Keep geography roughly real for real places.\n- Project lon/lat to the map with one scale; route waypoints carry their real coordinates and their arrival time, so the ship always moves at story speed.\n- The route is a red (#a3261c) dashed line that grows behind the ship, with an arrowhead at the front. The ship is a small inked hull with two sails that bobs on the waves.\n- The camera pans across the map following the ship; the title and stamps stay fixed on screen.\n- Type: Playfair Display 900 for the title (second line italic), Special Elite typewriter text for date stamps on cream labels with a red border.\n- Burnt edges (a dark brown vignette) and paper grain on top of everything.\n- Pace: one stamp every 2 to 3 seconds of travel; hold the final stamp about 2 seconds.\n\nRULES THAT KEEP IT IN STYLE\n- 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.\n- 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.\n- It will be watched on phones: at 720x1280 keep the headline at 64 px or more, stamps at 26 px or more and the counter at 60 px or more. Fill the frame.\n- Keep each frame fast, well under 50 ms.\n- Give my topic its own demo content; do not reuse the reference's story (\"The first trip around the world, 1519 to 1522\") unless my content asks for it.\n\nSOUND\n- Bed: a slow, low sea swell (brown noise with a slow filter sweep) and a warm, sparse pad.\n- Map events to the kit: the drawing route gets a soft quill scratch (SND.scratch); each stamp gets a stamp thud (\"stamp\" at low gain) and a soft bell; storms or deaths get a low swell; the takeaway gets an open chord.\n- Voiceover mix: the player calls SFX.live with { voiceover: true } once narration is loaded. Keep the sea swell very low and mark scratches soft: true.\n- Sync is everything: the sound score reads the same TL times as the picture.\n\nIF YOU CAN RUN CODE\nRender 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.\n\nSTYLE CARD\nName: Parchment Map\nFamily: Illustrated\nLook: An aged ink map on stained parchment: hand-inked coastlines with a second faint outline, a graticule, burnt edges, a compass rose, a little sailing ship and a red dashed route that draws itself as the camera follows it across the map.\nHow it explains: The camera pans across a wide map, following the ship as the red route draws behind it. At each key place a typewriter date stamp drops in, and a counter or final stamp sums up the journey before the takeaway.\n"
|
|
990
|
+
},
|
|
991
|
+
{
|
|
992
|
+
"id": "timeline-rail",
|
|
993
|
+
"num": "28",
|
|
994
|
+
"name": "Timeline Rail",
|
|
995
|
+
"family": "Data",
|
|
996
|
+
"canvas": "720x1280",
|
|
997
|
+
"tall": true,
|
|
998
|
+
"lib": true,
|
|
999
|
+
"look": "A deep green page with a cream vertical rail: glowing year nodes, cream event cards with a big gold year and a small drawn icon, and a running year odometer in the corner, as the camera scrolls down through time.",
|
|
1000
|
+
"how": "The camera scrolls down the rail like a feed. As it reaches each year the node lights up, the odometer rolls to that year and the card drops in with its icon. The last card is the present, and the takeaway closes the story.",
|
|
1001
|
+
"fonts": "Archivo Black, Space Grotesk (700), Inter (600 and 700)",
|
|
1002
|
+
"demo": "The phone in 150 years",
|
|
1003
|
+
"replace": "TL, EVENTS (year, text, icon painter), the scroll keys, the headline, the takeaway and scoreSound()",
|
|
1004
|
+
"keep": "the long content layer with the rail, nodes and cards, the scroll camera, the drop-in card motion, the year odometer, the icon painter approach (small flat icons in the page colour), wordLine() and grain()",
|
|
1005
|
+
"sizes": "keep years at 52 px or more, card text at 26 px or more and the headline at 64 px or more",
|
|
1006
|
+
"voLine": "The camera reaches each card and its year as the year is said; the card text lands on the event.",
|
|
1007
|
+
"full": "- Full mix (no voiceover): a ticking pad, a soft whoosh for each scroll, a tick for the odometer and a chime per card.",
|
|
1008
|
+
"voMix": "- Voiceover mix: the player calls SFX.live with { voiceover: true } once narration is loaded. Mark ticks and chimes soft: true.",
|
|
1009
|
+
"sheet": [
|
|
1010
|
+
"One long vertical page (a content layer taller than the screen) in deep green (#0f2a24) with a cream rail (#e8dcc0) down the left. The camera scrolls down it; no cuts.",
|
|
1011
|
+
"Each event is a cream card (#f3ead7) with rounded corners, a big gold year (#e8b04b) in Space Grotesk, one short line of text and a small flat icon drawn in code in the page colour.",
|
|
1012
|
+
"The current node glows gold; past nodes stay filled, future nodes stay hollow.",
|
|
1013
|
+
"A year odometer in the top-right rolls between events (digits slide), always showing the year the camera is at.",
|
|
1014
|
+
"Use real dates and real firsts; keep each card to one line of fact.",
|
|
1015
|
+
"Pace: about 2 seconds per card, including the scroll."
|
|
1016
|
+
],
|
|
1017
|
+
"sound": [
|
|
1018
|
+
"Bed: a warm pad with a soft clock-like pulse.",
|
|
1019
|
+
"Map events to the kit: each scroll gets a soft \"whoosh\"; the odometer gets fast ticks while it rolls; each card gets a soft thud as it lands and a chime; the takeaway gets an open chord."
|
|
1020
|
+
],
|
|
1021
|
+
"sourceFile": "sources/timeline-rail.html",
|
|
1022
|
+
"promptFile": "prompts/timeline-rail.md",
|
|
1023
|
+
"sourceBytes": 58926,
|
|
1024
|
+
"prompt": "I want an animated video in the \"Timeline Rail\" 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.\n\nMY CONTENT\n[No topic yet. Ask me for my topic or script before building anything.]\n\nBUILD DIRECTLY\nSkip the storyboard and build the full animation now. Afterwards, list any facts or numbers you assumed.\n\nWHAT TO BUILD\nOne self-contained HTML file (an artifact if you can), built on the reference file below:\n- 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.\n- Keep the canvas at 720x1280 (9:16, for Shorts, Reels and TikTok).\n- Replace the demo's story: TL, EVENTS (year, text, icon painter), the scroll keys, the headline, the takeaway and scoreSound(). Keep and reuse the style's helpers (the long content layer with the rail, nodes and cards, the scroll camera, the drop-in card motion, the year odometer, the icon painter approach (small flat icons in the page colour), wordLine() and grain()).\n- Aim for 15 to 40 seconds unless my content needs more, and set the duration in TL.D.\n- Keep window.seek(t), window.DURATION, window.scoreSound and window.SFX exposed, so the video can be rendered frame by frame.\n- Load the style's fonts before the first draw, as the reference does: Archivo Black, Space Grotesk (700), Inter (600 and 700).\n\nTHE STYLE\n- One long vertical page (a content layer taller than the screen) in deep green (#0f2a24) with a cream rail (#e8dcc0) down the left. The camera scrolls down it; no cuts.\n- Each event is a cream card (#f3ead7) with rounded corners, a big gold year (#e8b04b) in Space Grotesk, one short line of text and a small flat icon drawn in code in the page colour.\n- The current node glows gold; past nodes stay filled, future nodes stay hollow.\n- A year odometer in the top-right rolls between events (digits slide), always showing the year the camera is at.\n- Use real dates and real firsts; keep each card to one line of fact.\n- Pace: about 2 seconds per card, including the scroll.\n\nRULES THAT KEEP IT IN STYLE\n- 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.\n- 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.\n- It will be watched on phones: at 720x1280 keep years at 52 px or more, card text at 26 px or more and the headline at 64 px or more. Fill the frame.\n- Keep each frame fast, well under 50 ms.\n- Give my topic its own demo content; do not reuse the reference's story (\"The phone in 150 years\") unless my content asks for it.\n\nSOUND\n- Bed: a warm pad with a soft clock-like pulse.\n- Map events to the kit: each scroll gets a soft \"whoosh\"; the odometer gets fast ticks while it rolls; each card gets a soft thud as it lands and a chime; the takeaway gets an open chord.\n- Full mix (no voiceover): a ticking pad, a soft whoosh for each scroll, a tick for the odometer and a chime per card.\n- Sync is everything: the sound score reads the same TL times as the picture.\n\nIF YOU CAN RUN CODE\nRender 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.\n\nSTYLE CARD\nName: Timeline Rail\nFamily: Data\nLook: A deep green page with a cream vertical rail: glowing year nodes, cream event cards with a big gold year and a small drawn icon, and a running year odometer in the corner, as the camera scrolls down through time.\nHow it explains: The camera scrolls down the rail like a feed. As it reaches each year the node lights up, the odometer rolls to that year and the card drops in with its icon. The last card is the present, and the takeaway closes the story.\n",
|
|
1025
|
+
"promptVo": "I want an animated video in the \"Timeline Rail\" 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.\n\nMY CONTENT\n[No topic yet. Ask me for my topic or script before building anything.]\n\nVOICEOVER TIMING\n[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.]\n\nHow to use the timing:\n- 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.\n- Set the duration to the last word's end plus about 1.2 seconds.\n- Build the timeline (TL) from these times. The camera reaches each card and its year as the year is said; the card text lands on the event.\n- 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.\n- Put the emphasis moves on stressed words. A counter lands at the exact moment its number is spoken.\n- Keep the player's \"Load voiceover\" button working so I can drop in my audio and hear it in sync.\n\nSTORYBOARD FIRST\nBefore building, show me a storyboard and wait for my OK:\n- 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.\n- 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.\n- Below the grid, list any facts or numbers you had to assume.\nWhen I approve it (or after my changes), build the full animation and reuse the storyboard's drawing code.\n\nWHAT TO BUILD\nOne self-contained HTML file (an artifact if you can), built on the reference file below:\n- 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.\n- Keep the canvas at 720x1280 (9:16, for Shorts, Reels and TikTok).\n- Replace the demo's story: TL, EVENTS (year, text, icon painter), the scroll keys, the headline, the takeaway and scoreSound(). Keep and reuse the style's helpers (the long content layer with the rail, nodes and cards, the scroll camera, the drop-in card motion, the year odometer, the icon painter approach (small flat icons in the page colour), wordLine() and grain()).\n- Aim for 15 to 40 seconds unless my content needs more, and set the duration in TL.D.\n- Keep window.seek(t), window.DURATION, window.scoreSound and window.SFX exposed, so the video can be rendered frame by frame.\n- Load the style's fonts before the first draw, as the reference does: Archivo Black, Space Grotesk (700), Inter (600 and 700).\n\nTHE STYLE\n- One long vertical page (a content layer taller than the screen) in deep green (#0f2a24) with a cream rail (#e8dcc0) down the left. The camera scrolls down it; no cuts.\n- Each event is a cream card (#f3ead7) with rounded corners, a big gold year (#e8b04b) in Space Grotesk, one short line of text and a small flat icon drawn in code in the page colour.\n- The current node glows gold; past nodes stay filled, future nodes stay hollow.\n- A year odometer in the top-right rolls between events (digits slide), always showing the year the camera is at.\n- Use real dates and real firsts; keep each card to one line of fact.\n- Pace: about 2 seconds per card, including the scroll.\n\nRULES THAT KEEP IT IN STYLE\n- 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.\n- 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.\n- It will be watched on phones: at 720x1280 keep years at 52 px or more, card text at 26 px or more and the headline at 64 px or more. Fill the frame.\n- Keep each frame fast, well under 50 ms.\n- Give my topic its own demo content; do not reuse the reference's story (\"The phone in 150 years\") unless my content asks for it.\n\nSOUND\n- Bed: a warm pad with a soft clock-like pulse.\n- Map events to the kit: each scroll gets a soft \"whoosh\"; the odometer gets fast ticks while it rolls; each card gets a soft thud as it lands and a chime; the takeaway gets an open chord.\n- Voiceover mix: the player calls SFX.live with { voiceover: true } once narration is loaded. Mark ticks and chimes soft: true.\n- Sync is everything: the sound score reads the same TL times as the picture.\n\nIF YOU CAN RUN CODE\nRender 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.\n\nSTYLE CARD\nName: Timeline Rail\nFamily: Data\nLook: A deep green page with a cream vertical rail: glowing year nodes, cream event cards with a big gold year and a small drawn icon, and a running year odometer in the corner, as the camera scrolls down through time.\nHow it explains: The camera scrolls down the rail like a feed. As it reaches each year the node lights up, the odometer rolls to that year and the card drops in with its icon. The last card is the present, and the takeaway closes the story.\n"
|
|
1026
|
+
},
|
|
1027
|
+
{
|
|
1028
|
+
"id": "isotype",
|
|
1029
|
+
"num": "29",
|
|
1030
|
+
"name": "Isotype",
|
|
1031
|
+
"family": "Data",
|
|
1032
|
+
"canvas": "720x1280",
|
|
1033
|
+
"tall": true,
|
|
1034
|
+
"lib": true,
|
|
1035
|
+
"look": "Pictogram statistics in the Isotype tradition: a grid of small grey people icons that pop in row by row, then the share that matters turns coral one by one and regroups into its own block, under one huge number.",
|
|
1036
|
+
"how": "The crowd fills in first so you feel the size, then the stat colours in person by person, the big ratio slams in, and the coloured people walk into their own block so the split is obvious. A plain source line stays at the bottom.",
|
|
1037
|
+
"fonts": "Archivo Black, Inter (500 and 800), JetBrains Mono (700)",
|
|
1038
|
+
"demo": "1 in 3 US adults sleep less than 7 hours",
|
|
1039
|
+
"replace": "TL, the stat (RATIO, the headline text and the big number), the icon shape in personIcon() if the subject is not people, the source line, the takeaway and scoreSound()",
|
|
1040
|
+
"keep": "the 9 by 9 icon grid, the row-by-row pop in, the one-by-one colour fill, the regroup into a solid block (sorted target slots), the big number, the source line and the restrained palette",
|
|
1041
|
+
"sizes": "keep the big number at 120 px or more, the statement at 30 px or more and the source at 20 px or more",
|
|
1042
|
+
"voLine": "The crowd fills while the group is described, the colour fill runs while the share is said, the big number slams on the number, and the regroup happens on the comparison.",
|
|
1043
|
+
"full": "- Full mix (no voiceover): a calm pad, a soft tick per row, a rising pluck per coloured icon, and a low hit on the big number.",
|
|
1044
|
+
"voMix": "- Voiceover mix: the player calls SFX.live with { voiceover: true } once narration is loaded. Mark ticks and plucks soft: true.",
|
|
1045
|
+
"sheet": [
|
|
1046
|
+
"One icon equals a fixed number of people (say so if it is not 1). Use a real, sourced ratio and keep the count of coloured icons exact for it.",
|
|
1047
|
+
"Icons are simple and identical: a round head and a rounded body, grey (#c3ced8) by default, coral (#ff5a3c) for the share that matters. No other colours.",
|
|
1048
|
+
"Background: cool pale grey-blue (#edf2f6); text in deep navy (#13212e).",
|
|
1049
|
+
"Order: fill the crowd row by row, colour the share one by one, then move the coloured icons into a solid block at the start of the grid (sorted target slots) so the split reads at a glance.",
|
|
1050
|
+
"Type: Archivo Black for the big number, Inter 800 for the statement (second line in coral), JetBrains Mono for the source line at the bottom.",
|
|
1051
|
+
"Pace: crowd in about 1.5 seconds, colour fill about 2 seconds, regroup about 1.5 seconds."
|
|
1052
|
+
],
|
|
1053
|
+
"sound": [
|
|
1054
|
+
"Bed: a calm, light pad (padBed).",
|
|
1055
|
+
"Map events to the kit: each row gets a soft \"tick\"; each coloured icon gets a short pluck that climbs; the big number gets \"slam\"; the regroup gets a soft \"whoosh\"; the takeaway gets an open chord."
|
|
1056
|
+
],
|
|
1057
|
+
"sourceFile": "sources/isotype.html",
|
|
1058
|
+
"promptFile": "prompts/isotype.md",
|
|
1059
|
+
"sourceBytes": 57101,
|
|
1060
|
+
"prompt": "I want an animated video in the \"Isotype\" 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.\n\nMY CONTENT\n[No topic yet. Ask me for my topic or script before building anything.]\n\nBUILD DIRECTLY\nSkip the storyboard and build the full animation now. Afterwards, list any facts or numbers you assumed.\n\nWHAT TO BUILD\nOne self-contained HTML file (an artifact if you can), built on the reference file below:\n- 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.\n- Keep the canvas at 720x1280 (9:16, for Shorts, Reels and TikTok).\n- Replace the demo's story: TL, the stat (RATIO, the headline text and the big number), the icon shape in personIcon() if the subject is not people, the source line, the takeaway and scoreSound(). Keep and reuse the style's helpers (the 9 by 9 icon grid, the row-by-row pop in, the one-by-one colour fill, the regroup into a solid block (sorted target slots), the big number, the source line and the restrained palette).\n- Aim for 15 to 40 seconds unless my content needs more, and set the duration in TL.D.\n- Keep window.seek(t), window.DURATION, window.scoreSound and window.SFX exposed, so the video can be rendered frame by frame.\n- Load the style's fonts before the first draw, as the reference does: Archivo Black, Inter (500 and 800), JetBrains Mono (700).\n\nTHE STYLE\n- One icon equals a fixed number of people (say so if it is not 1). Use a real, sourced ratio and keep the count of coloured icons exact for it.\n- Icons are simple and identical: a round head and a rounded body, grey (#c3ced8) by default, coral (#ff5a3c) for the share that matters. No other colours.\n- Background: cool pale grey-blue (#edf2f6); text in deep navy (#13212e).\n- Order: fill the crowd row by row, colour the share one by one, then move the coloured icons into a solid block at the start of the grid (sorted target slots) so the split reads at a glance.\n- Type: Archivo Black for the big number, Inter 800 for the statement (second line in coral), JetBrains Mono for the source line at the bottom.\n- Pace: crowd in about 1.5 seconds, colour fill about 2 seconds, regroup about 1.5 seconds.\n\nRULES THAT KEEP IT IN STYLE\n- 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.\n- 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.\n- It will be watched on phones: at 720x1280 keep the big number at 120 px or more, the statement at 30 px or more and the source at 20 px or more. Fill the frame.\n- Keep each frame fast, well under 50 ms.\n- Give my topic its own demo content; do not reuse the reference's story (\"1 in 3 US adults sleep less than 7 hours\") unless my content asks for it.\n\nSOUND\n- Bed: a calm, light pad (padBed).\n- Map events to the kit: each row gets a soft \"tick\"; each coloured icon gets a short pluck that climbs; the big number gets \"slam\"; the regroup gets a soft \"whoosh\"; the takeaway gets an open chord.\n- Full mix (no voiceover): a calm pad, a soft tick per row, a rising pluck per coloured icon, and a low hit on the big number.\n- Sync is everything: the sound score reads the same TL times as the picture.\n\nIF YOU CAN RUN CODE\nRender 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.\n\nSTYLE CARD\nName: Isotype\nFamily: Data\nLook: Pictogram statistics in the Isotype tradition: a grid of small grey people icons that pop in row by row, then the share that matters turns coral one by one and regroups into its own block, under one huge number.\nHow it explains: The crowd fills in first so you feel the size, then the stat colours in person by person, the big ratio slams in, and the coloured people walk into their own block so the split is obvious. A plain source line stays at the bottom.\n",
|
|
1061
|
+
"promptVo": "I want an animated video in the \"Isotype\" 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.\n\nMY CONTENT\n[No topic yet. Ask me for my topic or script before building anything.]\n\nVOICEOVER TIMING\n[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.]\n\nHow to use the timing:\n- 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.\n- Set the duration to the last word's end plus about 1.2 seconds.\n- Build the timeline (TL) from these times. The crowd fills while the group is described, the colour fill runs while the share is said, the big number slams on the number, and the regroup happens on the comparison.\n- 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.\n- Put the emphasis moves on stressed words. A counter lands at the exact moment its number is spoken.\n- Keep the player's \"Load voiceover\" button working so I can drop in my audio and hear it in sync.\n\nSTORYBOARD FIRST\nBefore building, show me a storyboard and wait for my OK:\n- 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.\n- 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.\n- Below the grid, list any facts or numbers you had to assume.\nWhen I approve it (or after my changes), build the full animation and reuse the storyboard's drawing code.\n\nWHAT TO BUILD\nOne self-contained HTML file (an artifact if you can), built on the reference file below:\n- 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.\n- Keep the canvas at 720x1280 (9:16, for Shorts, Reels and TikTok).\n- Replace the demo's story: TL, the stat (RATIO, the headline text and the big number), the icon shape in personIcon() if the subject is not people, the source line, the takeaway and scoreSound(). Keep and reuse the style's helpers (the 9 by 9 icon grid, the row-by-row pop in, the one-by-one colour fill, the regroup into a solid block (sorted target slots), the big number, the source line and the restrained palette).\n- Aim for 15 to 40 seconds unless my content needs more, and set the duration in TL.D.\n- Keep window.seek(t), window.DURATION, window.scoreSound and window.SFX exposed, so the video can be rendered frame by frame.\n- Load the style's fonts before the first draw, as the reference does: Archivo Black, Inter (500 and 800), JetBrains Mono (700).\n\nTHE STYLE\n- One icon equals a fixed number of people (say so if it is not 1). Use a real, sourced ratio and keep the count of coloured icons exact for it.\n- Icons are simple and identical: a round head and a rounded body, grey (#c3ced8) by default, coral (#ff5a3c) for the share that matters. No other colours.\n- Background: cool pale grey-blue (#edf2f6); text in deep navy (#13212e).\n- Order: fill the crowd row by row, colour the share one by one, then move the coloured icons into a solid block at the start of the grid (sorted target slots) so the split reads at a glance.\n- Type: Archivo Black for the big number, Inter 800 for the statement (second line in coral), JetBrains Mono for the source line at the bottom.\n- Pace: crowd in about 1.5 seconds, colour fill about 2 seconds, regroup about 1.5 seconds.\n\nRULES THAT KEEP IT IN STYLE\n- 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.\n- 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.\n- It will be watched on phones: at 720x1280 keep the big number at 120 px or more, the statement at 30 px or more and the source at 20 px or more. Fill the frame.\n- Keep each frame fast, well under 50 ms.\n- Give my topic its own demo content; do not reuse the reference's story (\"1 in 3 US adults sleep less than 7 hours\") unless my content asks for it.\n\nSOUND\n- Bed: a calm, light pad (padBed).\n- Map events to the kit: each row gets a soft \"tick\"; each coloured icon gets a short pluck that climbs; the big number gets \"slam\"; the regroup gets a soft \"whoosh\"; the takeaway gets an open chord.\n- Voiceover mix: the player calls SFX.live with { voiceover: true } once narration is loaded. Mark ticks and plucks soft: true.\n- Sync is everything: the sound score reads the same TL times as the picture.\n\nIF YOU CAN RUN CODE\nRender 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.\n\nSTYLE CARD\nName: Isotype\nFamily: Data\nLook: Pictogram statistics in the Isotype tradition: a grid of small grey people icons that pop in row by row, then the share that matters turns coral one by one and regroups into its own block, under one huge number.\nHow it explains: The crowd fills in first so you feel the size, then the stat colours in person by person, the big ratio slams in, and the coloured people walk into their own block so the split is obvious. A plain source line stays at the bottom.\n"
|
|
1062
|
+
},
|
|
1063
|
+
{
|
|
1064
|
+
"id": "evidence-board",
|
|
1065
|
+
"num": "30",
|
|
1066
|
+
"name": "Evidence Board",
|
|
1067
|
+
"family": "Illustrated",
|
|
1068
|
+
"canvas": "720x1280",
|
|
1069
|
+
"tall": true,
|
|
1070
|
+
"lib": true,
|
|
1071
|
+
"look": "A detective corkboard: speckled cork, polaroids with sketched clues, typed index cards, yellow sticky notes, red push pins and red string, with a case-file label taped at the top and a rubber stamp for the verdict.",
|
|
1072
|
+
"how": "The camera moves across the board clue by clue, close enough to read each one. Red string draws itself from pin to pin as connections are made, a card types itself out, and the camera pulls back to the whole board as the verdict stamp slams down.",
|
|
1073
|
+
"fonts": "Special Elite, Caveat (700), Anton",
|
|
1074
|
+
"demo": "The missing painting (an invented case)",
|
|
1075
|
+
"replace": "TL, ITEMS (what is pinned, where, and what it shows), LINKS (which pins the string joins and when), the typed card text, the stamp word, the camera keys in CAMK and scoreSound()",
|
|
1076
|
+
"keep": "the cork texture, polaroid(), indexCard() with typewriter reveal, sticky(), pins, sagging string() that draws pin to pin, the case-file label, the stamp with distressed edges, the clue-to-clue camera (CAMK) and the final pull-back",
|
|
1077
|
+
"sizes": "keep typed text at 30 px or more, captions at 36 px or more and the stamp at 90 px or more",
|
|
1078
|
+
"voLine": "The camera arrives at each clue as it is mentioned, string draws while the connection is explained, the card types out while it is read, and the stamp slams on the verdict word.",
|
|
1079
|
+
"full": "- Full mix (no voiceover): a tense low pad, a pin push for every pin, a string twang, typewriter keys, and a heavy stamp.",
|
|
1080
|
+
"voMix": "- Voiceover mix: the player calls SFX.live with { voiceover: true } once narration is loaded. Mark keys and pins soft: true.",
|
|
1081
|
+
"sheet": [
|
|
1082
|
+
"The board is one large layer (bigger than the screen) with cork speckle; the camera moves across it with eased pans and zooms, then pulls back to show everything.",
|
|
1083
|
+
"Clues are physical objects drawn in code: polaroids (white frame, dark photo area with a simple sketch, Caveat caption), lined index cards with Special Elite typing, yellow sticky notes in Caveat, each slightly rotated with a drop shadow and a red pin.",
|
|
1084
|
+
"Red string (#c1121f) sags between pins and draws itself from one pin to the next.",
|
|
1085
|
+
"Verdict: a rubber stamp (red, double border, distressed with knocked-out specks) slams onto the board with a shake.",
|
|
1086
|
+
"True crime needs care: for real cases use only documented facts, no speculation presented as fact, and respect for victims; invented cases must say so.",
|
|
1087
|
+
"Pace: about 2 seconds per clue, the stamp in the last 3 seconds."
|
|
1088
|
+
],
|
|
1089
|
+
"sound": [
|
|
1090
|
+
"Bed: a low, tense pad and a slow pulse.",
|
|
1091
|
+
"Map events to the kit: pins get a soft push (SND.tap low); string gets a short twang (a plucked low note with a bend); typing gets \"keys\"; camera moves get a soft \"whoosh\"; the stamp gets \"stamp\" and a low \"boom\"."
|
|
1092
|
+
],
|
|
1093
|
+
"sourceFile": "sources/evidence-board.html",
|
|
1094
|
+
"promptFile": "prompts/evidence-board.md",
|
|
1095
|
+
"sourceBytes": 61521,
|
|
1096
|
+
"prompt": "I want an animated video in the \"Evidence Board\" style (Illustrated) 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.\n\nMY CONTENT\n[No topic yet. Ask me for my topic or script before building anything.]\n\nBUILD DIRECTLY\nSkip the storyboard and build the full animation now. Afterwards, list any facts or numbers you assumed.\n\nWHAT TO BUILD\nOne self-contained HTML file (an artifact if you can), built on the reference file below:\n- 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.\n- Keep the canvas at 720x1280 (9:16, for Shorts, Reels and TikTok).\n- Replace the demo's story: TL, ITEMS (what is pinned, where, and what it shows), LINKS (which pins the string joins and when), the typed card text, the stamp word, the camera keys in CAMK and scoreSound(). Keep and reuse the style's helpers (the cork texture, polaroid(), indexCard() with typewriter reveal, sticky(), pins, sagging string() that draws pin to pin, the case-file label, the stamp with distressed edges, the clue-to-clue camera (CAMK) and the final pull-back).\n- Aim for 15 to 40 seconds unless my content needs more, and set the duration in TL.D.\n- Keep window.seek(t), window.DURATION, window.scoreSound and window.SFX exposed, so the video can be rendered frame by frame.\n- Load the style's fonts before the first draw, as the reference does: Special Elite, Caveat (700), Anton.\n\nTHE STYLE\n- The board is one large layer (bigger than the screen) with cork speckle; the camera moves across it with eased pans and zooms, then pulls back to show everything.\n- Clues are physical objects drawn in code: polaroids (white frame, dark photo area with a simple sketch, Caveat caption), lined index cards with Special Elite typing, yellow sticky notes in Caveat, each slightly rotated with a drop shadow and a red pin.\n- Red string (#c1121f) sags between pins and draws itself from one pin to the next.\n- Verdict: a rubber stamp (red, double border, distressed with knocked-out specks) slams onto the board with a shake.\n- True crime needs care: for real cases use only documented facts, no speculation presented as fact, and respect for victims; invented cases must say so.\n- Pace: about 2 seconds per clue, the stamp in the last 3 seconds.\n\nRULES THAT KEEP IT IN STYLE\n- 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.\n- 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.\n- It will be watched on phones: at 720x1280 keep typed text at 30 px or more, captions at 36 px or more and the stamp at 90 px or more. Fill the frame.\n- Keep each frame fast, well under 50 ms.\n- Give my topic its own demo content; do not reuse the reference's story (\"The missing painting (an invented case)\") unless my content asks for it.\n\nSOUND\n- Bed: a low, tense pad and a slow pulse.\n- Map events to the kit: pins get a soft push (SND.tap low); string gets a short twang (a plucked low note with a bend); typing gets \"keys\"; camera moves get a soft \"whoosh\"; the stamp gets \"stamp\" and a low \"boom\".\n- Full mix (no voiceover): a tense low pad, a pin push for every pin, a string twang, typewriter keys, and a heavy stamp.\n- Sync is everything: the sound score reads the same TL times as the picture.\n\nIF YOU CAN RUN CODE\nRender 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.\n\nSTYLE CARD\nName: Evidence Board\nFamily: Illustrated\nLook: A detective corkboard: speckled cork, polaroids with sketched clues, typed index cards, yellow sticky notes, red push pins and red string, with a case-file label taped at the top and a rubber stamp for the verdict.\nHow it explains: The camera moves across the board clue by clue, close enough to read each one. Red string draws itself from pin to pin as connections are made, a card types itself out, and the camera pulls back to the whole board as the verdict stamp slams down.\n",
|
|
1097
|
+
"promptVo": "I want an animated video in the \"Evidence Board\" style (Illustrated) 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.\n\nMY CONTENT\n[No topic yet. Ask me for my topic or script before building anything.]\n\nVOICEOVER TIMING\n[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.]\n\nHow to use the timing:\n- 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.\n- Set the duration to the last word's end plus about 1.2 seconds.\n- Build the timeline (TL) from these times. The camera arrives at each clue as it is mentioned, string draws while the connection is explained, the card types out while it is read, and the stamp slams on the verdict word.\n- 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.\n- Put the emphasis moves on stressed words. A counter lands at the exact moment its number is spoken.\n- Keep the player's \"Load voiceover\" button working so I can drop in my audio and hear it in sync.\n\nSTORYBOARD FIRST\nBefore building, show me a storyboard and wait for my OK:\n- 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.\n- 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.\n- Below the grid, list any facts or numbers you had to assume.\nWhen I approve it (or after my changes), build the full animation and reuse the storyboard's drawing code.\n\nWHAT TO BUILD\nOne self-contained HTML file (an artifact if you can), built on the reference file below:\n- 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.\n- Keep the canvas at 720x1280 (9:16, for Shorts, Reels and TikTok).\n- Replace the demo's story: TL, ITEMS (what is pinned, where, and what it shows), LINKS (which pins the string joins and when), the typed card text, the stamp word, the camera keys in CAMK and scoreSound(). Keep and reuse the style's helpers (the cork texture, polaroid(), indexCard() with typewriter reveal, sticky(), pins, sagging string() that draws pin to pin, the case-file label, the stamp with distressed edges, the clue-to-clue camera (CAMK) and the final pull-back).\n- Aim for 15 to 40 seconds unless my content needs more, and set the duration in TL.D.\n- Keep window.seek(t), window.DURATION, window.scoreSound and window.SFX exposed, so the video can be rendered frame by frame.\n- Load the style's fonts before the first draw, as the reference does: Special Elite, Caveat (700), Anton.\n\nTHE STYLE\n- The board is one large layer (bigger than the screen) with cork speckle; the camera moves across it with eased pans and zooms, then pulls back to show everything.\n- Clues are physical objects drawn in code: polaroids (white frame, dark photo area with a simple sketch, Caveat caption), lined index cards with Special Elite typing, yellow sticky notes in Caveat, each slightly rotated with a drop shadow and a red pin.\n- Red string (#c1121f) sags between pins and draws itself from one pin to the next.\n- Verdict: a rubber stamp (red, double border, distressed with knocked-out specks) slams onto the board with a shake.\n- True crime needs care: for real cases use only documented facts, no speculation presented as fact, and respect for victims; invented cases must say so.\n- Pace: about 2 seconds per clue, the stamp in the last 3 seconds.\n\nRULES THAT KEEP IT IN STYLE\n- 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.\n- 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.\n- It will be watched on phones: at 720x1280 keep typed text at 30 px or more, captions at 36 px or more and the stamp at 90 px or more. Fill the frame.\n- Keep each frame fast, well under 50 ms.\n- Give my topic its own demo content; do not reuse the reference's story (\"The missing painting (an invented case)\") unless my content asks for it.\n\nSOUND\n- Bed: a low, tense pad and a slow pulse.\n- Map events to the kit: pins get a soft push (SND.tap low); string gets a short twang (a plucked low note with a bend); typing gets \"keys\"; camera moves get a soft \"whoosh\"; the stamp gets \"stamp\" and a low \"boom\".\n- Voiceover mix: the player calls SFX.live with { voiceover: true } once narration is loaded. Mark keys and pins soft: true.\n- Sync is everything: the sound score reads the same TL times as the picture.\n\nIF YOU CAN RUN CODE\nRender 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.\n\nSTYLE CARD\nName: Evidence Board\nFamily: Illustrated\nLook: A detective corkboard: speckled cork, polaroids with sketched clues, typed index cards, yellow sticky notes, red push pins and red string, with a case-file label taped at the top and a rubber stamp for the verdict.\nHow it explains: The camera moves across the board clue by clue, close enough to read each one. Red string draws itself from pin to pin as connections are made, a card types itself out, and the camera pulls back to the whole board as the verdict stamp slams down.\n"
|
|
1098
|
+
},
|
|
1099
|
+
{
|
|
1100
|
+
"id": "storybook",
|
|
1101
|
+
"num": "31",
|
|
1102
|
+
"name": "Storybook",
|
|
1103
|
+
"family": "Illustrated",
|
|
1104
|
+
"canvas": "720x1280",
|
|
1105
|
+
"tall": true,
|
|
1106
|
+
"lib": true,
|
|
1107
|
+
"look": "A picture book on cream watercolour paper: soft washes that bloom in layer by layer, thin brown ink lines that draw the character, gold ink stars, and an italic serif storyline that appears word by word, with page-turn transitions.",
|
|
1108
|
+
"how": "Each page paints itself: the sky and ground washes bloom outward, the ink outline of the character draws on, small details pop, and the sentence reads in word by word under the picture. A page turn moves to the next moment of the story.",
|
|
1109
|
+
"fonts": "Playfair Display (700, italic), Inter (600)",
|
|
1110
|
+
"demo": "The fox who counted stars (a bedtime fable)",
|
|
1111
|
+
"replace": "TL, the PAGES (washes, the character outline paths, details, the sentence on each page), the counter or ending, and scoreSound()",
|
|
1112
|
+
"keep": "the paper grain, wash() bloom (layered irregular blobs with soft edges), inkPath() line reveal, the gold ink stars, the word-by-word storyline, the page frame and the page-turn cut",
|
|
1113
|
+
"sizes": "keep the storyline at 48 px or more and the chapter line at 20 px or more",
|
|
1114
|
+
"voLine": "Each wash blooms while its part of the scene is described, the ink line draws while the character is introduced, and each storyline word fades in as it is spoken.",
|
|
1115
|
+
"full": "- Full mix (no voiceover): keep the music-box melody, a soft brush swish per wash, and a paper sound for each page turn.",
|
|
1116
|
+
"voMix": "- Voiceover mix: the player calls SFX.live with { voiceover: true } once narration is loaded. Keep the music box very low and mark swishes soft: true.",
|
|
1117
|
+
"sheet": [
|
|
1118
|
+
"Paper: warm cream watercolour paper (#fbf7ee) with fine grain and a thin brown frame around the picture area. The text area sits below the picture.",
|
|
1119
|
+
"Washes: each area is several overlapping irregular blobs at low alpha (wash()), blooming outward from a centre over about a second, with a slightly darker edge.",
|
|
1120
|
+
"Ink: one thin brown line (#3a2a20, 2 to 3 px) that draws the character and key objects along their path. Small gold details (#e8c35a) for stars and sparkles.",
|
|
1121
|
+
"Palette: night blue washes (#2d4a8a), warm moon (#f6e1a0), green hills (#6a9a5b), the character in one warm colour (#e0793a).",
|
|
1122
|
+
"Type: Playfair Display italic for the storyline, word by word, centred; Inter small caps for the chapter line.",
|
|
1123
|
+
"Pace: a page takes about 6 seconds: washes, ink, details, then the sentence. Page turns take 0.8 seconds."
|
|
1124
|
+
],
|
|
1125
|
+
"sound": [
|
|
1126
|
+
"Music: a slow music-box melody (high sine notes with a little reverb) over a very soft pad.",
|
|
1127
|
+
"Map events to the kit: each wash gets a soft brush swish (SND.paper, soft); ink lines get a very quiet scratch; stars get small high chimes; page turns get a longer paper sweep; the ending gets a gentle chord."
|
|
1128
|
+
],
|
|
1129
|
+
"sourceFile": "sources/storybook.html",
|
|
1130
|
+
"promptFile": "prompts/storybook.md",
|
|
1131
|
+
"sourceBytes": 60083,
|
|
1132
|
+
"prompt": "I want an animated video in the \"Storybook\" style (Illustrated) 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.\n\nMY CONTENT\n[No topic yet. Ask me for my topic or script before building anything.]\n\nBUILD DIRECTLY\nSkip the storyboard and build the full animation now. Afterwards, list any facts or numbers you assumed.\n\nWHAT TO BUILD\nOne self-contained HTML file (an artifact if you can), built on the reference file below:\n- 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.\n- Keep the canvas at 720x1280 (9:16, for Shorts, Reels and TikTok).\n- Replace the demo's story: TL, the PAGES (washes, the character outline paths, details, the sentence on each page), the counter or ending, and scoreSound(). Keep and reuse the style's helpers (the paper grain, wash() bloom (layered irregular blobs with soft edges), inkPath() line reveal, the gold ink stars, the word-by-word storyline, the page frame and the page-turn cut).\n- Aim for 15 to 40 seconds unless my content needs more, and set the duration in TL.D.\n- Keep window.seek(t), window.DURATION, window.scoreSound and window.SFX exposed, so the video can be rendered frame by frame.\n- Load the style's fonts before the first draw, as the reference does: Playfair Display (700, italic), Inter (600).\n\nTHE STYLE\n- Paper: warm cream watercolour paper (#fbf7ee) with fine grain and a thin brown frame around the picture area. The text area sits below the picture.\n- Washes: each area is several overlapping irregular blobs at low alpha (wash()), blooming outward from a centre over about a second, with a slightly darker edge.\n- Ink: one thin brown line (#3a2a20, 2 to 3 px) that draws the character and key objects along their path. Small gold details (#e8c35a) for stars and sparkles.\n- Palette: night blue washes (#2d4a8a), warm moon (#f6e1a0), green hills (#6a9a5b), the character in one warm colour (#e0793a).\n- Type: Playfair Display italic for the storyline, word by word, centred; Inter small caps for the chapter line.\n- Pace: a page takes about 6 seconds: washes, ink, details, then the sentence. Page turns take 0.8 seconds.\n\nRULES THAT KEEP IT IN STYLE\n- 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.\n- 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.\n- It will be watched on phones: at 720x1280 keep the storyline at 48 px or more and the chapter line at 20 px or more. Fill the frame.\n- Keep each frame fast, well under 50 ms.\n- Give my topic its own demo content; do not reuse the reference's story (\"The fox who counted stars (a bedtime fable)\") unless my content asks for it.\n\nSOUND\n- Music: a slow music-box melody (high sine notes with a little reverb) over a very soft pad.\n- Map events to the kit: each wash gets a soft brush swish (SND.paper, soft); ink lines get a very quiet scratch; stars get small high chimes; page turns get a longer paper sweep; the ending gets a gentle chord.\n- Full mix (no voiceover): keep the music-box melody, a soft brush swish per wash, and a paper sound for each page turn.\n- Sync is everything: the sound score reads the same TL times as the picture.\n\nIF YOU CAN RUN CODE\nRender 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.\n\nSTYLE CARD\nName: Storybook\nFamily: Illustrated\nLook: A picture book on cream watercolour paper: soft washes that bloom in layer by layer, thin brown ink lines that draw the character, gold ink stars, and an italic serif storyline that appears word by word, with page-turn transitions.\nHow it explains: Each page paints itself: the sky and ground washes bloom outward, the ink outline of the character draws on, small details pop, and the sentence reads in word by word under the picture. A page turn moves to the next moment of the story.\n",
|
|
1133
|
+
"promptVo": "I want an animated video in the \"Storybook\" style (Illustrated) 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.\n\nMY CONTENT\n[No topic yet. Ask me for my topic or script before building anything.]\n\nVOICEOVER TIMING\n[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.]\n\nHow to use the timing:\n- 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.\n- Set the duration to the last word's end plus about 1.2 seconds.\n- Build the timeline (TL) from these times. Each wash blooms while its part of the scene is described, the ink line draws while the character is introduced, and each storyline word fades in as it is spoken.\n- 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.\n- Put the emphasis moves on stressed words. A counter lands at the exact moment its number is spoken.\n- Keep the player's \"Load voiceover\" button working so I can drop in my audio and hear it in sync.\n\nSTORYBOARD FIRST\nBefore building, show me a storyboard and wait for my OK:\n- 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.\n- 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.\n- Below the grid, list any facts or numbers you had to assume.\nWhen I approve it (or after my changes), build the full animation and reuse the storyboard's drawing code.\n\nWHAT TO BUILD\nOne self-contained HTML file (an artifact if you can), built on the reference file below:\n- 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.\n- Keep the canvas at 720x1280 (9:16, for Shorts, Reels and TikTok).\n- Replace the demo's story: TL, the PAGES (washes, the character outline paths, details, the sentence on each page), the counter or ending, and scoreSound(). Keep and reuse the style's helpers (the paper grain, wash() bloom (layered irregular blobs with soft edges), inkPath() line reveal, the gold ink stars, the word-by-word storyline, the page frame and the page-turn cut).\n- Aim for 15 to 40 seconds unless my content needs more, and set the duration in TL.D.\n- Keep window.seek(t), window.DURATION, window.scoreSound and window.SFX exposed, so the video can be rendered frame by frame.\n- Load the style's fonts before the first draw, as the reference does: Playfair Display (700, italic), Inter (600).\n\nTHE STYLE\n- Paper: warm cream watercolour paper (#fbf7ee) with fine grain and a thin brown frame around the picture area. The text area sits below the picture.\n- Washes: each area is several overlapping irregular blobs at low alpha (wash()), blooming outward from a centre over about a second, with a slightly darker edge.\n- Ink: one thin brown line (#3a2a20, 2 to 3 px) that draws the character and key objects along their path. Small gold details (#e8c35a) for stars and sparkles.\n- Palette: night blue washes (#2d4a8a), warm moon (#f6e1a0), green hills (#6a9a5b), the character in one warm colour (#e0793a).\n- Type: Playfair Display italic for the storyline, word by word, centred; Inter small caps for the chapter line.\n- Pace: a page takes about 6 seconds: washes, ink, details, then the sentence. Page turns take 0.8 seconds.\n\nRULES THAT KEEP IT IN STYLE\n- 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.\n- 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.\n- It will be watched on phones: at 720x1280 keep the storyline at 48 px or more and the chapter line at 20 px or more. Fill the frame.\n- Keep each frame fast, well under 50 ms.\n- Give my topic its own demo content; do not reuse the reference's story (\"The fox who counted stars (a bedtime fable)\") unless my content asks for it.\n\nSOUND\n- Music: a slow music-box melody (high sine notes with a little reverb) over a very soft pad.\n- Map events to the kit: each wash gets a soft brush swish (SND.paper, soft); ink lines get a very quiet scratch; stars get small high chimes; page turns get a longer paper sweep; the ending gets a gentle chord.\n- Voiceover mix: the player calls SFX.live with { voiceover: true } once narration is loaded. Keep the music box very low and mark swishes soft: true.\n- Sync is everything: the sound score reads the same TL times as the picture.\n\nIF YOU CAN RUN CODE\nRender 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.\n\nSTYLE CARD\nName: Storybook\nFamily: Illustrated\nLook: A picture book on cream watercolour paper: soft washes that bloom in layer by layer, thin brown ink lines that draw the character, gold ink stars, and an italic serif storyline that appears word by word, with page-turn transitions.\nHow it explains: Each page paints itself: the sky and ground washes bloom outward, the ink outline of the character draws on, small details pop, and the sentence reads in word by word under the picture. A page turn moves to the next moment of the story.\n"
|
|
1134
|
+
},
|
|
1135
|
+
{
|
|
1136
|
+
"id": "pixel-quest",
|
|
1137
|
+
"num": "32",
|
|
1138
|
+
"name": "Pixel Quest",
|
|
1139
|
+
"family": "Retro",
|
|
1140
|
+
"canvas": "720x1280",
|
|
1141
|
+
"tall": true,
|
|
1142
|
+
"lib": true,
|
|
1143
|
+
"look": "Chunky pixel art drawn on a 180 by 320 grid and scaled up 4×: a side-scrolling level with a little hero, sky bands, pixel clouds, brick platforms and gems, under a retro HUD (hearts, XP bar, level number) with a dialog box for every tip.",
|
|
1144
|
+
"how": "The hero walks through the level while the camera scrolls with them. Each tip is a quest that pops up in a dialog box with typewriter text; the hero jumps gaps, grabs gems (the score climbs), and the level-up flash fills the XP bar for the payoff.",
|
|
1145
|
+
"fonts": "Press Start 2P",
|
|
1146
|
+
"demo": "Level up your sleep",
|
|
1147
|
+
"replace": "TL, the LEVEL layout (gaps, platforms, gems), the hero sprite colours, QUESTS (dialog text and when they appear), the level-up text and scoreSound()",
|
|
1148
|
+
"keep": "the low-res world canvas (180×320) scaled 4× with smoothing off, the walking/jumping hero sprite, the scrolling camera, pixel hearts, the XP bar and LVL counter, the typewriter dialog box, the level-up flash and the Press Start 2P lettering",
|
|
1149
|
+
"sizes": "keep dialog text at 20 px or more, HUD text at 24 px or more and titles at 44 px or more (all in Press Start 2P)",
|
|
1150
|
+
"voLine": "Each quest box opens on the first word of its tip and types while it is read, gems ping as they are counted, and the level-up flash lands on the payoff word.",
|
|
1151
|
+
"full": "- Full mix (no voiceover): keep the chiptune loop (square lead, triangle bass, noise hats), with jump, gem and level-up sounds on top.",
|
|
1152
|
+
"voMix": "- Voiceover mix: the player calls SFX.live with { voiceover: true } once narration is loaded, which keeps the loop low. Mark gem pings and text blips soft: true.",
|
|
1153
|
+
"sheet": [
|
|
1154
|
+
"All world art is drawn at 180×320 on its own canvas with whole-pixel rectangles, then scaled 4× with image smoothing off. No anti-aliased shapes in the world layer.",
|
|
1155
|
+
"Original sprites only: a small hero with a cap and two walking frames, gems (not coins), brick platforms and flags. Never copy a real game character, item or level.",
|
|
1156
|
+
"Palette: limited and bright: sky bands (#5fcde4 to #a6e6f0), greens (#3f9b4f, #5ac85a), brown dirt (#8b5a2b), brick orange (#c86b2b), gem yellow (#ffd23f), hero red cap (#e63946) and blue overalls (#1d4ed8).",
|
|
1157
|
+
"HUD on top in screen pixels: pixel hearts, an XP bar, a LVL number and a score, all in Press Start 2P with a black outline.",
|
|
1158
|
+
"Dialog box: black with a white 3 px border at the bottom, text typed at about 30 characters a second with a blinking ▼.",
|
|
1159
|
+
"Pace: the hero never stops walking; one quest every 2.5 seconds; the level-up near the end."
|
|
1160
|
+
],
|
|
1161
|
+
"sound": [
|
|
1162
|
+
"Music: a chiptune loop: a square-wave lead melody, a triangle bass on the beat, and short noise hats.",
|
|
1163
|
+
"Map events to the kit: jumps get a rising square sweep; gems get a two-note bleep (SND.beep); dialog text gets tiny blips per few characters; level-up gets a fast rising arpeggio; the title blinks with a soft blip."
|
|
1164
|
+
],
|
|
1165
|
+
"sourceFile": "sources/pixel-quest.html",
|
|
1166
|
+
"promptFile": "prompts/pixel-quest.md",
|
|
1167
|
+
"sourceBytes": 60908,
|
|
1168
|
+
"prompt": "I want an animated video in the \"Pixel Quest\" style (Retro) 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.\n\nMY CONTENT\n[No topic yet. Ask me for my topic or script before building anything.]\n\nBUILD DIRECTLY\nSkip the storyboard and build the full animation now. Afterwards, list any facts or numbers you assumed.\n\nWHAT TO BUILD\nOne self-contained HTML file (an artifact if you can), built on the reference file below:\n- 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.\n- Keep the canvas at 720x1280 (9:16, for Shorts, Reels and TikTok).\n- Replace the demo's story: TL, the LEVEL layout (gaps, platforms, gems), the hero sprite colours, QUESTS (dialog text and when they appear), the level-up text and scoreSound(). Keep and reuse the style's helpers (the low-res world canvas (180×320) scaled 4× with smoothing off, the walking/jumping hero sprite, the scrolling camera, pixel hearts, the XP bar and LVL counter, the typewriter dialog box, the level-up flash and the Press Start 2P lettering).\n- Aim for 15 to 40 seconds unless my content needs more, and set the duration in TL.D.\n- Keep window.seek(t), window.DURATION, window.scoreSound and window.SFX exposed, so the video can be rendered frame by frame.\n- Load the style's fonts before the first draw, as the reference does: Press Start 2P.\n\nTHE STYLE\n- All world art is drawn at 180×320 on its own canvas with whole-pixel rectangles, then scaled 4× with image smoothing off. No anti-aliased shapes in the world layer.\n- Original sprites only: a small hero with a cap and two walking frames, gems (not coins), brick platforms and flags. Never copy a real game character, item or level.\n- Palette: limited and bright: sky bands (#5fcde4 to #a6e6f0), greens (#3f9b4f, #5ac85a), brown dirt (#8b5a2b), brick orange (#c86b2b), gem yellow (#ffd23f), hero red cap (#e63946) and blue overalls (#1d4ed8).\n- HUD on top in screen pixels: pixel hearts, an XP bar, a LVL number and a score, all in Press Start 2P with a black outline.\n- Dialog box: black with a white 3 px border at the bottom, text typed at about 30 characters a second with a blinking ▼.\n- Pace: the hero never stops walking; one quest every 2.5 seconds; the level-up near the end.\n\nRULES THAT KEEP IT IN STYLE\n- 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.\n- 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.\n- It will be watched on phones: at 720x1280 keep dialog text at 20 px or more, HUD text at 24 px or more and titles at 44 px or more (all in Press Start 2P). Fill the frame.\n- Keep each frame fast, well under 50 ms.\n- Give my topic its own demo content; do not reuse the reference's story (\"Level up your sleep\") unless my content asks for it.\n\nSOUND\n- Music: a chiptune loop: a square-wave lead melody, a triangle bass on the beat, and short noise hats.\n- Map events to the kit: jumps get a rising square sweep; gems get a two-note bleep (SND.beep); dialog text gets tiny blips per few characters; level-up gets a fast rising arpeggio; the title blinks with a soft blip.\n- Full mix (no voiceover): keep the chiptune loop (square lead, triangle bass, noise hats), with jump, gem and level-up sounds on top.\n- Sync is everything: the sound score reads the same TL times as the picture.\n\nIF YOU CAN RUN CODE\nRender 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.\n\nSTYLE CARD\nName: Pixel Quest\nFamily: Retro\nLook: Chunky pixel art drawn on a 180 by 320 grid and scaled up 4×: a side-scrolling level with a little hero, sky bands, pixel clouds, brick platforms and gems, under a retro HUD (hearts, XP bar, level number) with a dialog box for every tip.\nHow it explains: The hero walks through the level while the camera scrolls with them. Each tip is a quest that pops up in a dialog box with typewriter text; the hero jumps gaps, grabs gems (the score climbs), and the level-up flash fills the XP bar for the payoff.\n",
|
|
1169
|
+
"promptVo": "I want an animated video in the \"Pixel Quest\" style (Retro) 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.\n\nMY CONTENT\n[No topic yet. Ask me for my topic or script before building anything.]\n\nVOICEOVER TIMING\n[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.]\n\nHow to use the timing:\n- 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.\n- Set the duration to the last word's end plus about 1.2 seconds.\n- Build the timeline (TL) from these times. Each quest box opens on the first word of its tip and types while it is read, gems ping as they are counted, and the level-up flash lands on the payoff word.\n- 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.\n- Put the emphasis moves on stressed words. A counter lands at the exact moment its number is spoken.\n- Keep the player's \"Load voiceover\" button working so I can drop in my audio and hear it in sync.\n\nSTORYBOARD FIRST\nBefore building, show me a storyboard and wait for my OK:\n- 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.\n- 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.\n- Below the grid, list any facts or numbers you had to assume.\nWhen I approve it (or after my changes), build the full animation and reuse the storyboard's drawing code.\n\nWHAT TO BUILD\nOne self-contained HTML file (an artifact if you can), built on the reference file below:\n- 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.\n- Keep the canvas at 720x1280 (9:16, for Shorts, Reels and TikTok).\n- Replace the demo's story: TL, the LEVEL layout (gaps, platforms, gems), the hero sprite colours, QUESTS (dialog text and when they appear), the level-up text and scoreSound(). Keep and reuse the style's helpers (the low-res world canvas (180×320) scaled 4× with smoothing off, the walking/jumping hero sprite, the scrolling camera, pixel hearts, the XP bar and LVL counter, the typewriter dialog box, the level-up flash and the Press Start 2P lettering).\n- Aim for 15 to 40 seconds unless my content needs more, and set the duration in TL.D.\n- Keep window.seek(t), window.DURATION, window.scoreSound and window.SFX exposed, so the video can be rendered frame by frame.\n- Load the style's fonts before the first draw, as the reference does: Press Start 2P.\n\nTHE STYLE\n- All world art is drawn at 180×320 on its own canvas with whole-pixel rectangles, then scaled 4× with image smoothing off. No anti-aliased shapes in the world layer.\n- Original sprites only: a small hero with a cap and two walking frames, gems (not coins), brick platforms and flags. Never copy a real game character, item or level.\n- Palette: limited and bright: sky bands (#5fcde4 to #a6e6f0), greens (#3f9b4f, #5ac85a), brown dirt (#8b5a2b), brick orange (#c86b2b), gem yellow (#ffd23f), hero red cap (#e63946) and blue overalls (#1d4ed8).\n- HUD on top in screen pixels: pixel hearts, an XP bar, a LVL number and a score, all in Press Start 2P with a black outline.\n- Dialog box: black with a white 3 px border at the bottom, text typed at about 30 characters a second with a blinking ▼.\n- Pace: the hero never stops walking; one quest every 2.5 seconds; the level-up near the end.\n\nRULES THAT KEEP IT IN STYLE\n- 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.\n- 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.\n- It will be watched on phones: at 720x1280 keep dialog text at 20 px or more, HUD text at 24 px or more and titles at 44 px or more (all in Press Start 2P). Fill the frame.\n- Keep each frame fast, well under 50 ms.\n- Give my topic its own demo content; do not reuse the reference's story (\"Level up your sleep\") unless my content asks for it.\n\nSOUND\n- Music: a chiptune loop: a square-wave lead melody, a triangle bass on the beat, and short noise hats.\n- Map events to the kit: jumps get a rising square sweep; gems get a two-note bleep (SND.beep); dialog text gets tiny blips per few characters; level-up gets a fast rising arpeggio; the title blinks with a soft blip.\n- Voiceover mix: the player calls SFX.live with { voiceover: true } once narration is loaded, which keeps the loop low. Mark gem pings and text blips soft: true.\n- Sync is everything: the sound score reads the same TL times as the picture.\n\nIF YOU CAN RUN CODE\nRender 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.\n\nSTYLE CARD\nName: Pixel Quest\nFamily: Retro\nLook: Chunky pixel art drawn on a 180 by 320 grid and scaled up 4×: a side-scrolling level with a little hero, sky bands, pixel clouds, brick platforms and gems, under a retro HUD (hearts, XP bar, level number) with a dialog box for every tip.\nHow it explains: The hero walks through the level while the camera scrolls with them. Each tip is a quest that pops up in a dialog box with typewriter text; the hero jumps gaps, grabs gems (the score climbs), and the level-up flash fills the XP bar for the payoff.\n"
|
|
1170
|
+
},
|
|
1171
|
+
{
|
|
1172
|
+
"id": "terminal",
|
|
1173
|
+
"num": "33",
|
|
1174
|
+
"name": "Terminal",
|
|
1175
|
+
"family": "Retro",
|
|
1176
|
+
"canvas": "720x1280",
|
|
1177
|
+
"tall": true,
|
|
1178
|
+
"lib": true,
|
|
1179
|
+
"look": "A glowing green-on-black terminal: typed commands with a block cursor, dim grey output, red and amber warnings, an ASCII progress bar and ASCII box diagrams, with scanlines, a soft phosphor glow and a dark vignette.",
|
|
1180
|
+
"how": "The story is a terminal session: a command types itself, output scrolls out line by line, a progress bar or counter runs, and the result lands in red or amber. A second command shows the contrast, and an ASCII comparison box sums it up.",
|
|
1181
|
+
"fonts": "JetBrains Mono (500 and 700)",
|
|
1182
|
+
"demo": "Why 'password123' fails in 0.02 seconds",
|
|
1183
|
+
"replace": "TL and SESSION (each line: its time, whether it is typed or printed, its text and its colour), the progress bar or counter, the ASCII box and the takeaway, and scoreSound()",
|
|
1184
|
+
"keep": "the black screen with phosphor glow, the line-by-line session renderer with typed commands and printed output, the block cursor, the ASCII progress bar, scanlines and vignette, and the colour rules",
|
|
1185
|
+
"sizes": "keep command text at 24 px or more, the headline at 36 px or more and the takeaway at 34 px or more",
|
|
1186
|
+
"voLine": "Each command types while it is described, output prints on the word it reports, and the result line lands on the stressed word.",
|
|
1187
|
+
"full": "- Full mix (no voiceover): keyboard typing, a hum, short beeps for output, an alarm tone for the bad result and a confirm tone for the good one.",
|
|
1188
|
+
"voMix": "- Voiceover mix: the player calls SFX.live with { voiceover: true } once narration is loaded. Keep keys soft: true and the hum very low.",
|
|
1189
|
+
"sheet": [
|
|
1190
|
+
"Black screen (#040805), JetBrains Mono everywhere. Commands are bright green (#3dff7f) with a \"$\" prompt; output is dim green (#1f8f47); warnings amber (#ffcf4d); failures red (#ff5f56); white only for the takeaway.",
|
|
1191
|
+
"Text glows softly (a green shadow blur). Scanlines every 3 px and a dark vignette sit on top.",
|
|
1192
|
+
"Commands type at about 28 characters a second; output lines print instantly one after another; a blinking block cursor sits after the last character.",
|
|
1193
|
+
"Progress and comparisons are ASCII: [#####.....] bars, box-drawing tables. No icons or images.",
|
|
1194
|
+
"Teach safely: show how to defend (stronger passwords, updates, two-factor), never step-by-step instructions for attacking real systems.",
|
|
1195
|
+
"Pace: a command every 2 to 3 seconds; the result line holds at least 1 second."
|
|
1196
|
+
],
|
|
1197
|
+
"sound": [
|
|
1198
|
+
"Bed: a low electrical hum and a quiet dark pad.",
|
|
1199
|
+
"Map events to the kit: typed commands get \"keys\"; each printed line gets a soft short beep (SND.beep); a bad result gets a two-tone alarm; a good result gets a rising confirm beep; the takeaway gets a low swell."
|
|
1200
|
+
],
|
|
1201
|
+
"sourceFile": "sources/terminal.html",
|
|
1202
|
+
"promptFile": "prompts/terminal.md",
|
|
1203
|
+
"sourceBytes": 57204,
|
|
1204
|
+
"prompt": "I want an animated video in the \"Terminal\" style (Retro) 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.\n\nMY CONTENT\n[No topic yet. Ask me for my topic or script before building anything.]\n\nBUILD DIRECTLY\nSkip the storyboard and build the full animation now. Afterwards, list any facts or numbers you assumed.\n\nWHAT TO BUILD\nOne self-contained HTML file (an artifact if you can), built on the reference file below:\n- 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.\n- Keep the canvas at 720x1280 (9:16, for Shorts, Reels and TikTok).\n- Replace the demo's story: TL and SESSION (each line: its time, whether it is typed or printed, its text and its colour), the progress bar or counter, the ASCII box and the takeaway, and scoreSound(). Keep and reuse the style's helpers (the black screen with phosphor glow, the line-by-line session renderer with typed commands and printed output, the block cursor, the ASCII progress bar, scanlines and vignette, and the colour rules).\n- Aim for 15 to 40 seconds unless my content needs more, and set the duration in TL.D.\n- Keep window.seek(t), window.DURATION, window.scoreSound and window.SFX exposed, so the video can be rendered frame by frame.\n- Load the style's fonts before the first draw, as the reference does: JetBrains Mono (500 and 700).\n\nTHE STYLE\n- Black screen (#040805), JetBrains Mono everywhere. Commands are bright green (#3dff7f) with a \"$\" prompt; output is dim green (#1f8f47); warnings amber (#ffcf4d); failures red (#ff5f56); white only for the takeaway.\n- Text glows softly (a green shadow blur). Scanlines every 3 px and a dark vignette sit on top.\n- Commands type at about 28 characters a second; output lines print instantly one after another; a blinking block cursor sits after the last character.\n- Progress and comparisons are ASCII: [#####.....] bars, box-drawing tables. No icons or images.\n- Teach safely: show how to defend (stronger passwords, updates, two-factor), never step-by-step instructions for attacking real systems.\n- Pace: a command every 2 to 3 seconds; the result line holds at least 1 second.\n\nRULES THAT KEEP IT IN STYLE\n- 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.\n- 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.\n- It will be watched on phones: at 720x1280 keep command text at 24 px or more, the headline at 36 px or more and the takeaway at 34 px or more. Fill the frame.\n- Keep each frame fast, well under 50 ms.\n- Give my topic its own demo content; do not reuse the reference's story (\"Why 'password123' fails in 0.02 seconds\") unless my content asks for it.\n\nSOUND\n- Bed: a low electrical hum and a quiet dark pad.\n- Map events to the kit: typed commands get \"keys\"; each printed line gets a soft short beep (SND.beep); a bad result gets a two-tone alarm; a good result gets a rising confirm beep; the takeaway gets a low swell.\n- Full mix (no voiceover): keyboard typing, a hum, short beeps for output, an alarm tone for the bad result and a confirm tone for the good one.\n- Sync is everything: the sound score reads the same TL times as the picture.\n\nIF YOU CAN RUN CODE\nRender 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.\n\nSTYLE CARD\nName: Terminal\nFamily: Retro\nLook: A glowing green-on-black terminal: typed commands with a block cursor, dim grey output, red and amber warnings, an ASCII progress bar and ASCII box diagrams, with scanlines, a soft phosphor glow and a dark vignette.\nHow it explains: The story is a terminal session: a command types itself, output scrolls out line by line, a progress bar or counter runs, and the result lands in red or amber. A second command shows the contrast, and an ASCII comparison box sums it up.\n",
|
|
1205
|
+
"promptVo": "I want an animated video in the \"Terminal\" style (Retro) 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.\n\nMY CONTENT\n[No topic yet. Ask me for my topic or script before building anything.]\n\nVOICEOVER TIMING\n[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.]\n\nHow to use the timing:\n- 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.\n- Set the duration to the last word's end plus about 1.2 seconds.\n- Build the timeline (TL) from these times. Each command types while it is described, output prints on the word it reports, and the result line lands on the stressed word.\n- 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.\n- Put the emphasis moves on stressed words. A counter lands at the exact moment its number is spoken.\n- Keep the player's \"Load voiceover\" button working so I can drop in my audio and hear it in sync.\n\nSTORYBOARD FIRST\nBefore building, show me a storyboard and wait for my OK:\n- 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.\n- 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.\n- Below the grid, list any facts or numbers you had to assume.\nWhen I approve it (or after my changes), build the full animation and reuse the storyboard's drawing code.\n\nWHAT TO BUILD\nOne self-contained HTML file (an artifact if you can), built on the reference file below:\n- 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.\n- Keep the canvas at 720x1280 (9:16, for Shorts, Reels and TikTok).\n- Replace the demo's story: TL and SESSION (each line: its time, whether it is typed or printed, its text and its colour), the progress bar or counter, the ASCII box and the takeaway, and scoreSound(). Keep and reuse the style's helpers (the black screen with phosphor glow, the line-by-line session renderer with typed commands and printed output, the block cursor, the ASCII progress bar, scanlines and vignette, and the colour rules).\n- Aim for 15 to 40 seconds unless my content needs more, and set the duration in TL.D.\n- Keep window.seek(t), window.DURATION, window.scoreSound and window.SFX exposed, so the video can be rendered frame by frame.\n- Load the style's fonts before the first draw, as the reference does: JetBrains Mono (500 and 700).\n\nTHE STYLE\n- Black screen (#040805), JetBrains Mono everywhere. Commands are bright green (#3dff7f) with a \"$\" prompt; output is dim green (#1f8f47); warnings amber (#ffcf4d); failures red (#ff5f56); white only for the takeaway.\n- Text glows softly (a green shadow blur). Scanlines every 3 px and a dark vignette sit on top.\n- Commands type at about 28 characters a second; output lines print instantly one after another; a blinking block cursor sits after the last character.\n- Progress and comparisons are ASCII: [#####.....] bars, box-drawing tables. No icons or images.\n- Teach safely: show how to defend (stronger passwords, updates, two-factor), never step-by-step instructions for attacking real systems.\n- Pace: a command every 2 to 3 seconds; the result line holds at least 1 second.\n\nRULES THAT KEEP IT IN STYLE\n- 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.\n- 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.\n- It will be watched on phones: at 720x1280 keep command text at 24 px or more, the headline at 36 px or more and the takeaway at 34 px or more. Fill the frame.\n- Keep each frame fast, well under 50 ms.\n- Give my topic its own demo content; do not reuse the reference's story (\"Why 'password123' fails in 0.02 seconds\") unless my content asks for it.\n\nSOUND\n- Bed: a low electrical hum and a quiet dark pad.\n- Map events to the kit: typed commands get \"keys\"; each printed line gets a soft short beep (SND.beep); a bad result gets a two-tone alarm; a good result gets a rising confirm beep; the takeaway gets a low swell.\n- Voiceover mix: the player calls SFX.live with { voiceover: true } once narration is loaded. Keep keys soft: true and the hum very low.\n- Sync is everything: the sound score reads the same TL times as the picture.\n\nIF YOU CAN RUN CODE\nRender 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.\n\nSTYLE CARD\nName: Terminal\nFamily: Retro\nLook: A glowing green-on-black terminal: typed commands with a block cursor, dim grey output, red and amber warnings, an ASCII progress bar and ASCII box diagrams, with scanlines, a soft phosphor glow and a dark vignette.\nHow it explains: The story is a terminal session: a command types itself, output scrolls out line by line, a progress bar or counter runs, and the result lands in red or amber. A second command shows the contrast, and an ASCII comparison box sums it up.\n"
|
|
1206
|
+
},
|
|
1207
|
+
{
|
|
1208
|
+
"id": "swiss-grid",
|
|
1209
|
+
"num": "34",
|
|
1210
|
+
"name": "Swiss Grid",
|
|
1211
|
+
"family": "Kinetic Type",
|
|
1212
|
+
"canvas": "720x1280",
|
|
1213
|
+
"tall": true,
|
|
1214
|
+
"lib": true,
|
|
1215
|
+
"look": "International Typographic Style in motion: a strict six-column grid, one huge number, solid red, black and blue geometric blocks, flush-left Inter in black, and small caps labels, all snapping into place with precise wipes.",
|
|
1216
|
+
"how": "Blocks wipe in along the grid, the big number counts up digit by digit, and the statement snaps in line by line. Halfway through, the whole composition re-arranges on the grid to introduce the second point, then settles on a one-line takeaway.",
|
|
1217
|
+
"fonts": "Archivo Black, Inter (500, 700 and 900)",
|
|
1218
|
+
"demo": "73% of your brain is water",
|
|
1219
|
+
"replace": "TL, the fact (NUM, its unit, the statement lines, the second point), the block layout in LAYOUTS, the source line, the takeaway and scoreSound()",
|
|
1220
|
+
"keep": "the six-column grid, the wipe-in blocks, the digit-by-digit counter, the line-by-line mask reveals, the grid re-arrangement between LAYOUTS, the strict left alignment and the red, black and blue palette",
|
|
1221
|
+
"sizes": "keep the big number at 180 px or more, statements at 46 px or more and labels at 18 px or more",
|
|
1222
|
+
"voLine": "Blocks wipe in on the beat of the first sentence, the number locks on its last spoken syllable, each statement line snaps on its first word, and the re-arrangement lands on the turn (\"but\", \"and\").",
|
|
1223
|
+
"full": "- Full mix (no voiceover): a minimal pulse (a soft sine bass and clicks), a crisp click per block, a low hit when the number locks.",
|
|
1224
|
+
"voMix": "- Voiceover mix: the player calls SFX.live with { voiceover: true } once narration is loaded. Mark clicks soft: true.",
|
|
1225
|
+
"sheet": [
|
|
1226
|
+
"Off-white ground (#f5f5f2) with a faint six-column grid (60 px columns plus margins). Everything snaps to the grid; nothing is centred except by the grid.",
|
|
1227
|
+
"Colour is structural: red (#e1251b) and blue (#1f4fd8) blocks, black (#111) type and bars, nothing else.",
|
|
1228
|
+
"One huge number in Archivo Black, counting up digit by digit; statements in Inter 900, flush left, tight leading; labels in Inter 700 small caps with tracking.",
|
|
1229
|
+
"Motion is precise: rectangular wipes, mask reveals that rise exactly one line, and layout changes where every block slides to a new grid position with the same easing.",
|
|
1230
|
+
"Always show the source in small type at the bottom.",
|
|
1231
|
+
"Pace: the composition builds in about 2 seconds, the number counts for about 1.5 seconds, one re-arrangement, then the takeaway."
|
|
1232
|
+
],
|
|
1233
|
+
"sound": [
|
|
1234
|
+
"Bed: a minimal pulse: a soft sine bass note on each beat and a quiet click track.",
|
|
1235
|
+
"Map events to the kit: each block wipe gets a crisp \"click\"; number digits get a \"tick\" each; the lock gets a low sine hit; the re-arrangement gets a short \"whoosh\"; the takeaway gets a single clean chord."
|
|
1236
|
+
],
|
|
1237
|
+
"sourceFile": "sources/swiss-grid.html",
|
|
1238
|
+
"promptFile": "prompts/swiss-grid.md",
|
|
1239
|
+
"sourceBytes": 57266,
|
|
1240
|
+
"prompt": "I want an animated video in the \"Swiss Grid\" style (Kinetic Type) 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.\n\nMY CONTENT\n[No topic yet. Ask me for my topic or script before building anything.]\n\nBUILD DIRECTLY\nSkip the storyboard and build the full animation now. Afterwards, list any facts or numbers you assumed.\n\nWHAT TO BUILD\nOne self-contained HTML file (an artifact if you can), built on the reference file below:\n- 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.\n- Keep the canvas at 720x1280 (9:16, for Shorts, Reels and TikTok).\n- Replace the demo's story: TL, the fact (NUM, its unit, the statement lines, the second point), the block layout in LAYOUTS, the source line, the takeaway and scoreSound(). Keep and reuse the style's helpers (the six-column grid, the wipe-in blocks, the digit-by-digit counter, the line-by-line mask reveals, the grid re-arrangement between LAYOUTS, the strict left alignment and the red, black and blue palette).\n- Aim for 15 to 40 seconds unless my content needs more, and set the duration in TL.D.\n- Keep window.seek(t), window.DURATION, window.scoreSound and window.SFX exposed, so the video can be rendered frame by frame.\n- Load the style's fonts before the first draw, as the reference does: Archivo Black, Inter (500, 700 and 900).\n\nTHE STYLE\n- Off-white ground (#f5f5f2) with a faint six-column grid (60 px columns plus margins). Everything snaps to the grid; nothing is centred except by the grid.\n- Colour is structural: red (#e1251b) and blue (#1f4fd8) blocks, black (#111) type and bars, nothing else.\n- One huge number in Archivo Black, counting up digit by digit; statements in Inter 900, flush left, tight leading; labels in Inter 700 small caps with tracking.\n- Motion is precise: rectangular wipes, mask reveals that rise exactly one line, and layout changes where every block slides to a new grid position with the same easing.\n- Always show the source in small type at the bottom.\n- Pace: the composition builds in about 2 seconds, the number counts for about 1.5 seconds, one re-arrangement, then the takeaway.\n\nRULES THAT KEEP IT IN STYLE\n- 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.\n- 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.\n- It will be watched on phones: at 720x1280 keep the big number at 180 px or more, statements at 46 px or more and labels at 18 px or more. Fill the frame.\n- Keep each frame fast, well under 50 ms.\n- Give my topic its own demo content; do not reuse the reference's story (\"73% of your brain is water\") unless my content asks for it.\n\nSOUND\n- Bed: a minimal pulse: a soft sine bass note on each beat and a quiet click track.\n- Map events to the kit: each block wipe gets a crisp \"click\"; number digits get a \"tick\" each; the lock gets a low sine hit; the re-arrangement gets a short \"whoosh\"; the takeaway gets a single clean chord.\n- Full mix (no voiceover): a minimal pulse (a soft sine bass and clicks), a crisp click per block, a low hit when the number locks.\n- Sync is everything: the sound score reads the same TL times as the picture.\n\nIF YOU CAN RUN CODE\nRender 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.\n\nSTYLE CARD\nName: Swiss Grid\nFamily: Kinetic Type\nLook: International Typographic Style in motion: a strict six-column grid, one huge number, solid red, black and blue geometric blocks, flush-left Inter in black, and small caps labels, all snapping into place with precise wipes.\nHow it explains: Blocks wipe in along the grid, the big number counts up digit by digit, and the statement snaps in line by line. Halfway through, the whole composition re-arranges on the grid to introduce the second point, then settles on a one-line takeaway.\n",
|
|
1241
|
+
"promptVo": "I want an animated video in the \"Swiss Grid\" style (Kinetic Type) 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.\n\nMY CONTENT\n[No topic yet. Ask me for my topic or script before building anything.]\n\nVOICEOVER TIMING\n[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.]\n\nHow to use the timing:\n- 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.\n- Set the duration to the last word's end plus about 1.2 seconds.\n- Build the timeline (TL) from these times. Blocks wipe in on the beat of the first sentence, the number locks on its last spoken syllable, each statement line snaps on its first word, and the re-arrangement lands on the turn (\"but\", \"and\").\n- 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.\n- Put the emphasis moves on stressed words. A counter lands at the exact moment its number is spoken.\n- Keep the player's \"Load voiceover\" button working so I can drop in my audio and hear it in sync.\n\nSTORYBOARD FIRST\nBefore building, show me a storyboard and wait for my OK:\n- 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.\n- 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.\n- Below the grid, list any facts or numbers you had to assume.\nWhen I approve it (or after my changes), build the full animation and reuse the storyboard's drawing code.\n\nWHAT TO BUILD\nOne self-contained HTML file (an artifact if you can), built on the reference file below:\n- 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.\n- Keep the canvas at 720x1280 (9:16, for Shorts, Reels and TikTok).\n- Replace the demo's story: TL, the fact (NUM, its unit, the statement lines, the second point), the block layout in LAYOUTS, the source line, the takeaway and scoreSound(). Keep and reuse the style's helpers (the six-column grid, the wipe-in blocks, the digit-by-digit counter, the line-by-line mask reveals, the grid re-arrangement between LAYOUTS, the strict left alignment and the red, black and blue palette).\n- Aim for 15 to 40 seconds unless my content needs more, and set the duration in TL.D.\n- Keep window.seek(t), window.DURATION, window.scoreSound and window.SFX exposed, so the video can be rendered frame by frame.\n- Load the style's fonts before the first draw, as the reference does: Archivo Black, Inter (500, 700 and 900).\n\nTHE STYLE\n- Off-white ground (#f5f5f2) with a faint six-column grid (60 px columns plus margins). Everything snaps to the grid; nothing is centred except by the grid.\n- Colour is structural: red (#e1251b) and blue (#1f4fd8) blocks, black (#111) type and bars, nothing else.\n- One huge number in Archivo Black, counting up digit by digit; statements in Inter 900, flush left, tight leading; labels in Inter 700 small caps with tracking.\n- Motion is precise: rectangular wipes, mask reveals that rise exactly one line, and layout changes where every block slides to a new grid position with the same easing.\n- Always show the source in small type at the bottom.\n- Pace: the composition builds in about 2 seconds, the number counts for about 1.5 seconds, one re-arrangement, then the takeaway.\n\nRULES THAT KEEP IT IN STYLE\n- 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.\n- 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.\n- It will be watched on phones: at 720x1280 keep the big number at 180 px or more, statements at 46 px or more and labels at 18 px or more. Fill the frame.\n- Keep each frame fast, well under 50 ms.\n- Give my topic its own demo content; do not reuse the reference's story (\"73% of your brain is water\") unless my content asks for it.\n\nSOUND\n- Bed: a minimal pulse: a soft sine bass note on each beat and a quiet click track.\n- Map events to the kit: each block wipe gets a crisp \"click\"; number digits get a \"tick\" each; the lock gets a low sine hit; the re-arrangement gets a short \"whoosh\"; the takeaway gets a single clean chord.\n- Voiceover mix: the player calls SFX.live with { voiceover: true } once narration is loaded. Mark clicks soft: true.\n- Sync is everything: the sound score reads the same TL times as the picture.\n\nIF YOU CAN RUN CODE\nRender 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.\n\nSTYLE CARD\nName: Swiss Grid\nFamily: Kinetic Type\nLook: International Typographic Style in motion: a strict six-column grid, one huge number, solid red, black and blue geometric blocks, flush-left Inter in black, and small caps labels, all snapping into place with precise wipes.\nHow it explains: Blocks wipe in along the grid, the big number counts up digit by digit, and the statement snaps in line by line. Halfway through, the whole composition re-arranges on the grid to introduce the second point, then settles on a one-line takeaway.\n"
|
|
1242
|
+
},
|
|
1243
|
+
{
|
|
1244
|
+
"id": "math-canvas",
|
|
1245
|
+
"num": "35",
|
|
1246
|
+
"name": "Math Canvas",
|
|
1247
|
+
"family": "Data",
|
|
1248
|
+
"canvas": "720x1280",
|
|
1249
|
+
"tall": true,
|
|
1250
|
+
"lib": true,
|
|
1251
|
+
"look": "A dark slate for maths: an equation written in an elegant italic serif, a yellow box and handwritten note on the key term, and a graph whose curve plots itself to scale with a glowing dot and a live value, beside a dashed comparison line.",
|
|
1252
|
+
"how": "The equation writes on term by term, the key term gets boxed and annotated, then the axes draw and the curve plots in real time with its value counting at the tip. The comparison line plots alongside, a bracket measures the gap, and a plain-language takeaway lands at the bottom.",
|
|
1253
|
+
"fonts": "Instrument Serif (italic, for maths), Space Grotesk (700), JetBrains Mono (500), Caveat (700)",
|
|
1254
|
+
"demo": "Compound interest: slow, then suddenly fast",
|
|
1255
|
+
"replace": "TL, the equation pieces (EQ), the function f(x) and the comparison g(x), the axis ranges and ticks, the labels, the gap note, the takeaway and scoreSound()",
|
|
1256
|
+
"keep": "the slate grid, the term-by-term equation write-on, the yellow key box with the Caveat note, the axes with one scale, the self-plotting curve with area fill, glowing tip and live value, the dashed comparison, the gap bracket, and the mono axis labels",
|
|
1257
|
+
"sizes": "keep the equation at 60 px or more, the takeaway at 46 px or more, live values at 30 px or more and axis labels at 18 px or more",
|
|
1258
|
+
"voLine": "Each term writes as it is said, the box lands on the term that matters, the curve plots while the change over time is described, and the gap bracket lands on the comparison word.",
|
|
1259
|
+
"full": "- Full mix (no voiceover): a calm pad, a soft pluck for every unit the curve passes (rising in pitch with the value), and a low hit when the gap bracket lands.",
|
|
1260
|
+
"voMix": "- Voiceover mix: the player calls SFX.live with { voiceover: true } once narration is loaded. Mark plucks soft: true.",
|
|
1261
|
+
"sheet": [
|
|
1262
|
+
"Background: dark slate (#12141b) with a faint 20 px grid. Maths is written in Instrument Serif italic (white), never in a sans.",
|
|
1263
|
+
"Plot real functions with one scale per axis, zero-based unless the scene says otherwise, and compute every point from the function. Tick labels must name values the axes actually reach.",
|
|
1264
|
+
"Colour has meaning: teal (#4fd1c5) for the main curve and its glowing tip, grey dashed (#6b7080) for the comparison, yellow (#ffd166) only for the key term box, the handwritten note and the gap bracket.",
|
|
1265
|
+
"The curve plots left to right over a few seconds with a soft area fill under it and the live value riding at its tip.",
|
|
1266
|
+
"Type: Space Grotesk 700 for the takeaway, JetBrains Mono for axis labels and captions, Caveat 700 for handwritten notes.",
|
|
1267
|
+
"Pace: equation about 2 seconds, axes 0.5 seconds, the plot 4 to 5 seconds, then the gap and the takeaway."
|
|
1268
|
+
],
|
|
1269
|
+
"sound": [
|
|
1270
|
+
"Bed: a calm, slow pad.",
|
|
1271
|
+
"Map events to the kit: each equation term gets a soft chalky tick; the key box gets \"marker\"; the plot gets a soft pluck at each tick on the x axis whose pitch climbs with the value; the gap bracket gets a low sine hit; the takeaway gets an open chord."
|
|
1272
|
+
],
|
|
1273
|
+
"sourceFile": "sources/math-canvas.html",
|
|
1274
|
+
"promptFile": "prompts/math-canvas.md",
|
|
1275
|
+
"sourceBytes": 59442,
|
|
1276
|
+
"prompt": "I want an animated video in the \"Math Canvas\" 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.\n\nMY CONTENT\n[No topic yet. Ask me for my topic or script before building anything.]\n\nBUILD DIRECTLY\nSkip the storyboard and build the full animation now. Afterwards, list any facts or numbers you assumed.\n\nWHAT TO BUILD\nOne self-contained HTML file (an artifact if you can), built on the reference file below:\n- 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.\n- Keep the canvas at 720x1280 (9:16, for Shorts, Reels and TikTok).\n- Replace the demo's story: TL, the equation pieces (EQ), the function f(x) and the comparison g(x), the axis ranges and ticks, the labels, the gap note, the takeaway and scoreSound(). Keep and reuse the style's helpers (the slate grid, the term-by-term equation write-on, the yellow key box with the Caveat note, the axes with one scale, the self-plotting curve with area fill, glowing tip and live value, the dashed comparison, the gap bracket, and the mono axis labels).\n- Aim for 15 to 40 seconds unless my content needs more, and set the duration in TL.D.\n- Keep window.seek(t), window.DURATION, window.scoreSound and window.SFX exposed, so the video can be rendered frame by frame.\n- Load the style's fonts before the first draw, as the reference does: Instrument Serif (italic, for maths), Space Grotesk (700), JetBrains Mono (500), Caveat (700).\n\nTHE STYLE\n- Background: dark slate (#12141b) with a faint 20 px grid. Maths is written in Instrument Serif italic (white), never in a sans.\n- Plot real functions with one scale per axis, zero-based unless the scene says otherwise, and compute every point from the function. Tick labels must name values the axes actually reach.\n- Colour has meaning: teal (#4fd1c5) for the main curve and its glowing tip, grey dashed (#6b7080) for the comparison, yellow (#ffd166) only for the key term box, the handwritten note and the gap bracket.\n- The curve plots left to right over a few seconds with a soft area fill under it and the live value riding at its tip.\n- Type: Space Grotesk 700 for the takeaway, JetBrains Mono for axis labels and captions, Caveat 700 for handwritten notes.\n- Pace: equation about 2 seconds, axes 0.5 seconds, the plot 4 to 5 seconds, then the gap and the takeaway.\n\nRULES THAT KEEP IT IN STYLE\n- 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.\n- 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.\n- It will be watched on phones: at 720x1280 keep the equation at 60 px or more, the takeaway at 46 px or more, live values at 30 px or more and axis labels at 18 px or more. Fill the frame.\n- Keep each frame fast, well under 50 ms.\n- Give my topic its own demo content; do not reuse the reference's story (\"Compound interest: slow, then suddenly fast\") unless my content asks for it.\n\nSOUND\n- Bed: a calm, slow pad.\n- Map events to the kit: each equation term gets a soft chalky tick; the key box gets \"marker\"; the plot gets a soft pluck at each tick on the x axis whose pitch climbs with the value; the gap bracket gets a low sine hit; the takeaway gets an open chord.\n- Full mix (no voiceover): a calm pad, a soft pluck for every unit the curve passes (rising in pitch with the value), and a low hit when the gap bracket lands.\n- Sync is everything: the sound score reads the same TL times as the picture.\n\nIF YOU CAN RUN CODE\nRender 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.\n\nSTYLE CARD\nName: Math Canvas\nFamily: Data\nLook: A dark slate for maths: an equation written in an elegant italic serif, a yellow box and handwritten note on the key term, and a graph whose curve plots itself to scale with a glowing dot and a live value, beside a dashed comparison line.\nHow it explains: The equation writes on term by term, the key term gets boxed and annotated, then the axes draw and the curve plots in real time with its value counting at the tip. The comparison line plots alongside, a bracket measures the gap, and a plain-language takeaway lands at the bottom.\n",
|
|
1277
|
+
"promptVo": "I want an animated video in the \"Math Canvas\" 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.\n\nMY CONTENT\n[No topic yet. Ask me for my topic or script before building anything.]\n\nVOICEOVER TIMING\n[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.]\n\nHow to use the timing:\n- 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.\n- Set the duration to the last word's end plus about 1.2 seconds.\n- Build the timeline (TL) from these times. Each term writes as it is said, the box lands on the term that matters, the curve plots while the change over time is described, and the gap bracket lands on the comparison word.\n- 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.\n- Put the emphasis moves on stressed words. A counter lands at the exact moment its number is spoken.\n- Keep the player's \"Load voiceover\" button working so I can drop in my audio and hear it in sync.\n\nSTORYBOARD FIRST\nBefore building, show me a storyboard and wait for my OK:\n- 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.\n- 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.\n- Below the grid, list any facts or numbers you had to assume.\nWhen I approve it (or after my changes), build the full animation and reuse the storyboard's drawing code.\n\nWHAT TO BUILD\nOne self-contained HTML file (an artifact if you can), built on the reference file below:\n- 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.\n- Keep the canvas at 720x1280 (9:16, for Shorts, Reels and TikTok).\n- Replace the demo's story: TL, the equation pieces (EQ), the function f(x) and the comparison g(x), the axis ranges and ticks, the labels, the gap note, the takeaway and scoreSound(). Keep and reuse the style's helpers (the slate grid, the term-by-term equation write-on, the yellow key box with the Caveat note, the axes with one scale, the self-plotting curve with area fill, glowing tip and live value, the dashed comparison, the gap bracket, and the mono axis labels).\n- Aim for 15 to 40 seconds unless my content needs more, and set the duration in TL.D.\n- Keep window.seek(t), window.DURATION, window.scoreSound and window.SFX exposed, so the video can be rendered frame by frame.\n- Load the style's fonts before the first draw, as the reference does: Instrument Serif (italic, for maths), Space Grotesk (700), JetBrains Mono (500), Caveat (700).\n\nTHE STYLE\n- Background: dark slate (#12141b) with a faint 20 px grid. Maths is written in Instrument Serif italic (white), never in a sans.\n- Plot real functions with one scale per axis, zero-based unless the scene says otherwise, and compute every point from the function. Tick labels must name values the axes actually reach.\n- Colour has meaning: teal (#4fd1c5) for the main curve and its glowing tip, grey dashed (#6b7080) for the comparison, yellow (#ffd166) only for the key term box, the handwritten note and the gap bracket.\n- The curve plots left to right over a few seconds with a soft area fill under it and the live value riding at its tip.\n- Type: Space Grotesk 700 for the takeaway, JetBrains Mono for axis labels and captions, Caveat 700 for handwritten notes.\n- Pace: equation about 2 seconds, axes 0.5 seconds, the plot 4 to 5 seconds, then the gap and the takeaway.\n\nRULES THAT KEEP IT IN STYLE\n- 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.\n- 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.\n- It will be watched on phones: at 720x1280 keep the equation at 60 px or more, the takeaway at 46 px or more, live values at 30 px or more and axis labels at 18 px or more. Fill the frame.\n- Keep each frame fast, well under 50 ms.\n- Give my topic its own demo content; do not reuse the reference's story (\"Compound interest: slow, then suddenly fast\") unless my content asks for it.\n\nSOUND\n- Bed: a calm, slow pad.\n- Map events to the kit: each equation term gets a soft chalky tick; the key box gets \"marker\"; the plot gets a soft pluck at each tick on the x axis whose pitch climbs with the value; the gap bracket gets a low sine hit; the takeaway gets an open chord.\n- Voiceover mix: the player calls SFX.live with { voiceover: true } once narration is loaded. Mark plucks soft: true.\n- Sync is everything: the sound score reads the same TL times as the picture.\n\nIF YOU CAN RUN CODE\nRender 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.\n\nSTYLE CARD\nName: Math Canvas\nFamily: Data\nLook: A dark slate for maths: an equation written in an elegant italic serif, a yellow box and handwritten note on the key term, and a graph whose curve plots itself to scale with a glowing dot and a live value, beside a dashed comparison line.\nHow it explains: The equation writes on term by term, the key term gets boxed and annotated, then the axes draw and the curve plots in real time with its value counting at the tip. The comparison line plots alongside, a bracket measures the gap, and a plain-language takeaway lands at the bottom.\n"
|
|
1278
|
+
},
|
|
1279
|
+
{
|
|
1280
|
+
"id": "tactics-board",
|
|
1281
|
+
"num": "36",
|
|
1282
|
+
"name": "Tactics Board",
|
|
1283
|
+
"family": "Data",
|
|
1284
|
+
"canvas": "720x1280",
|
|
1285
|
+
"tall": true,
|
|
1286
|
+
"lib": true,
|
|
1287
|
+
"look": "A top-down pitch with mown stripes and crisp white lines, red and blue numbered player tokens with soft shadows, dashed run arrows that draw themselves, a yellow ball path with numbered passes, and a running clock chip.",
|
|
1288
|
+
"how": "Players move between real positions as the play unfolds: each run arrow draws just before the run, the ball travels pass by pass with a numbered marker, defenders shift, and the clock counts the seconds. The finish gets a flash and a big word, then the takeaway.",
|
|
1289
|
+
"fonts": "Anton, Inter (700 to 900)",
|
|
1290
|
+
"demo": "How a counter-attack works",
|
|
1291
|
+
"replace": "TL, the sport (pitch markings in pitch()), PLAYERS (keyframed positions), PASSES (from, to, times), RUNS (arrows), the clock range, the finish word, the takeaway and scoreSound()",
|
|
1292
|
+
"keep": "the striped pitch and line markings, token() players with numbers and shadows, keyframed movement (track), drawing run arrows, the ball travelling pass to pass with numbered markers, the clock chip, the dark title band and the finish flash",
|
|
1293
|
+
"sizes": "keep the headline at 60 px or more, player numbers at 18 px or more and the clock at 26 px or more",
|
|
1294
|
+
"voLine": "Each run arrow draws as the run is described, each pass starts on the word that names it, and the finish lands on the stressed word.",
|
|
1295
|
+
"full": "- Full mix (no voiceover): keep a low crowd bed that swells as the attack builds, a whistle at the start, a kick for every pass and a roar on the finish.",
|
|
1296
|
+
"voMix": "- Voiceover mix: the player calls SFX.live with { voiceover: true } once narration is loaded. Keep the crowd very low and mark kicks soft: true.",
|
|
1297
|
+
"sheet": [
|
|
1298
|
+
"The pitch is drawn to the sport's real proportions (stripes in two greens, white lines at 2 px), seen straight from above and filling the frame below the title band.",
|
|
1299
|
+
"Players are round tokens (red and blue, white outline, white number, soft shadow). Their positions come from keyframes (track) so movement is smooth and believable.",
|
|
1300
|
+
"Runs are white dashed curves with arrowheads that draw just before the player moves; the ball is a white dot that travels along each pass, leaving a solid yellow (#ffd23f) line with a numbered marker.",
|
|
1301
|
+
"A clock chip counts the real time of the move; the finish gets a white flash and one big Anton word.",
|
|
1302
|
+
"Use a real, typical pattern of play; label anything specific to one real match with its real details.",
|
|
1303
|
+
"Pace: the setup holds about 1.5 seconds, then one pass every 1 to 1.5 seconds."
|
|
1304
|
+
],
|
|
1305
|
+
"sound": [
|
|
1306
|
+
"Bed: a low crowd murmur (pink noise, band-passed) that swells as the attack builds.",
|
|
1307
|
+
"Map events to the kit: a whistle (two high sine tones with vibrato) starts the move; each pass gets a ball kick (a short low thump with a noise click); run arrows get a soft \"whoosh\"; the finish gets a roar (wide noise swell) and \"boom\"."
|
|
1308
|
+
],
|
|
1309
|
+
"sourceFile": "sources/tactics-board.html",
|
|
1310
|
+
"promptFile": "prompts/tactics-board.md",
|
|
1311
|
+
"sourceBytes": 60046,
|
|
1312
|
+
"prompt": "I want an animated video in the \"Tactics Board\" 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.\n\nMY CONTENT\n[No topic yet. Ask me for my topic or script before building anything.]\n\nBUILD DIRECTLY\nSkip the storyboard and build the full animation now. Afterwards, list any facts or numbers you assumed.\n\nWHAT TO BUILD\nOne self-contained HTML file (an artifact if you can), built on the reference file below:\n- 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.\n- Keep the canvas at 720x1280 (9:16, for Shorts, Reels and TikTok).\n- Replace the demo's story: TL, the sport (pitch markings in pitch()), PLAYERS (keyframed positions), PASSES (from, to, times), RUNS (arrows), the clock range, the finish word, the takeaway and scoreSound(). Keep and reuse the style's helpers (the striped pitch and line markings, token() players with numbers and shadows, keyframed movement (track), drawing run arrows, the ball travelling pass to pass with numbered markers, the clock chip, the dark title band and the finish flash).\n- Aim for 15 to 40 seconds unless my content needs more, and set the duration in TL.D.\n- Keep window.seek(t), window.DURATION, window.scoreSound and window.SFX exposed, so the video can be rendered frame by frame.\n- Load the style's fonts before the first draw, as the reference does: Anton, Inter (700 to 900).\n\nTHE STYLE\n- The pitch is drawn to the sport's real proportions (stripes in two greens, white lines at 2 px), seen straight from above and filling the frame below the title band.\n- Players are round tokens (red and blue, white outline, white number, soft shadow). Their positions come from keyframes (track) so movement is smooth and believable.\n- Runs are white dashed curves with arrowheads that draw just before the player moves; the ball is a white dot that travels along each pass, leaving a solid yellow (#ffd23f) line with a numbered marker.\n- A clock chip counts the real time of the move; the finish gets a white flash and one big Anton word.\n- Use a real, typical pattern of play; label anything specific to one real match with its real details.\n- Pace: the setup holds about 1.5 seconds, then one pass every 1 to 1.5 seconds.\n\nRULES THAT KEEP IT IN STYLE\n- 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.\n- 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.\n- It will be watched on phones: at 720x1280 keep the headline at 60 px or more, player numbers at 18 px or more and the clock at 26 px or more. Fill the frame.\n- Keep each frame fast, well under 50 ms.\n- Give my topic its own demo content; do not reuse the reference's story (\"How a counter-attack works\") unless my content asks for it.\n\nSOUND\n- Bed: a low crowd murmur (pink noise, band-passed) that swells as the attack builds.\n- Map events to the kit: a whistle (two high sine tones with vibrato) starts the move; each pass gets a ball kick (a short low thump with a noise click); run arrows get a soft \"whoosh\"; the finish gets a roar (wide noise swell) and \"boom\".\n- Full mix (no voiceover): keep a low crowd bed that swells as the attack builds, a whistle at the start, a kick for every pass and a roar on the finish.\n- Sync is everything: the sound score reads the same TL times as the picture.\n\nIF YOU CAN RUN CODE\nRender 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.\n\nSTYLE CARD\nName: Tactics Board\nFamily: Data\nLook: A top-down pitch with mown stripes and crisp white lines, red and blue numbered player tokens with soft shadows, dashed run arrows that draw themselves, a yellow ball path with numbered passes, and a running clock chip.\nHow it explains: Players move between real positions as the play unfolds: each run arrow draws just before the run, the ball travels pass by pass with a numbered marker, defenders shift, and the clock counts the seconds. The finish gets a flash and a big word, then the takeaway.\n",
|
|
1313
|
+
"promptVo": "I want an animated video in the \"Tactics Board\" 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.\n\nMY CONTENT\n[No topic yet. Ask me for my topic or script before building anything.]\n\nVOICEOVER TIMING\n[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.]\n\nHow to use the timing:\n- 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.\n- Set the duration to the last word's end plus about 1.2 seconds.\n- Build the timeline (TL) from these times. Each run arrow draws as the run is described, each pass starts on the word that names it, and the finish lands on the stressed word.\n- 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.\n- Put the emphasis moves on stressed words. A counter lands at the exact moment its number is spoken.\n- Keep the player's \"Load voiceover\" button working so I can drop in my audio and hear it in sync.\n\nSTORYBOARD FIRST\nBefore building, show me a storyboard and wait for my OK:\n- 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.\n- 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.\n- Below the grid, list any facts or numbers you had to assume.\nWhen I approve it (or after my changes), build the full animation and reuse the storyboard's drawing code.\n\nWHAT TO BUILD\nOne self-contained HTML file (an artifact if you can), built on the reference file below:\n- 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.\n- Keep the canvas at 720x1280 (9:16, for Shorts, Reels and TikTok).\n- Replace the demo's story: TL, the sport (pitch markings in pitch()), PLAYERS (keyframed positions), PASSES (from, to, times), RUNS (arrows), the clock range, the finish word, the takeaway and scoreSound(). Keep and reuse the style's helpers (the striped pitch and line markings, token() players with numbers and shadows, keyframed movement (track), drawing run arrows, the ball travelling pass to pass with numbered markers, the clock chip, the dark title band and the finish flash).\n- Aim for 15 to 40 seconds unless my content needs more, and set the duration in TL.D.\n- Keep window.seek(t), window.DURATION, window.scoreSound and window.SFX exposed, so the video can be rendered frame by frame.\n- Load the style's fonts before the first draw, as the reference does: Anton, Inter (700 to 900).\n\nTHE STYLE\n- The pitch is drawn to the sport's real proportions (stripes in two greens, white lines at 2 px), seen straight from above and filling the frame below the title band.\n- Players are round tokens (red and blue, white outline, white number, soft shadow). Their positions come from keyframes (track) so movement is smooth and believable.\n- Runs are white dashed curves with arrowheads that draw just before the player moves; the ball is a white dot that travels along each pass, leaving a solid yellow (#ffd23f) line with a numbered marker.\n- A clock chip counts the real time of the move; the finish gets a white flash and one big Anton word.\n- Use a real, typical pattern of play; label anything specific to one real match with its real details.\n- Pace: the setup holds about 1.5 seconds, then one pass every 1 to 1.5 seconds.\n\nRULES THAT KEEP IT IN STYLE\n- 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.\n- 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.\n- It will be watched on phones: at 720x1280 keep the headline at 60 px or more, player numbers at 18 px or more and the clock at 26 px or more. Fill the frame.\n- Keep each frame fast, well under 50 ms.\n- Give my topic its own demo content; do not reuse the reference's story (\"How a counter-attack works\") unless my content asks for it.\n\nSOUND\n- Bed: a low crowd murmur (pink noise, band-passed) that swells as the attack builds.\n- Map events to the kit: a whistle (two high sine tones with vibrato) starts the move; each pass gets a ball kick (a short low thump with a noise click); run arrows get a soft \"whoosh\"; the finish gets a roar (wide noise swell) and \"boom\".\n- Voiceover mix: the player calls SFX.live with { voiceover: true } once narration is loaded. Keep the crowd very low and mark kicks soft: true.\n- Sync is everything: the sound score reads the same TL times as the picture.\n\nIF YOU CAN RUN CODE\nRender 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.\n\nSTYLE CARD\nName: Tactics Board\nFamily: Data\nLook: A top-down pitch with mown stripes and crisp white lines, red and blue numbered player tokens with soft shadows, dashed run arrows that draw themselves, a yellow ball path with numbered passes, and a running clock chip.\nHow it explains: Players move between real positions as the play unfolds: each run arrow draws just before the run, the ball travels pass by pass with a numbered marker, defenders shift, and the clock counts the seconds. The finish gets a flash and a big word, then the takeaway.\n"
|
|
1314
|
+
},
|
|
1315
|
+
{
|
|
1316
|
+
"id": "market-tape",
|
|
1317
|
+
"num": "37",
|
|
1318
|
+
"name": "Market Tape",
|
|
1319
|
+
"family": "Data",
|
|
1320
|
+
"canvas": "720x1280",
|
|
1321
|
+
"tall": true,
|
|
1322
|
+
"lib": true,
|
|
1323
|
+
"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.",
|
|
1324
|
+
"how": "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.",
|
|
1325
|
+
"fonts": "Archivo Black, Inter (500 and 800), JetBrains Mono (500 and 700)",
|
|
1326
|
+
"demo": "Why prices crash (example data, not advice)",
|
|
1327
|
+
"replace": "TL, PRICES (or your own example series), the ticker symbols (invented), the event label, the LOOP diagram text, the takeaway and scoreSound()",
|
|
1328
|
+
"keep": "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",
|
|
1329
|
+
"sizes": "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",
|
|
1330
|
+
"voLine": "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.",
|
|
1331
|
+
"full": "- 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.",
|
|
1332
|
+
"voMix": "- Voiceover mix: the player calls SFX.live with { voiceover: true } once narration is loaded. Mark ticks soft: true and keep the alarm short.",
|
|
1333
|
+
"sheet": [
|
|
1334
|
+
"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.",
|
|
1335
|
+
"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.",
|
|
1336
|
+
"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.",
|
|
1337
|
+
"The break: a short red flash over the frame, a small shake, and a red percentage chip that counts down.",
|
|
1338
|
+
"Explain with a simple four-node loop (rounded boxes, curved arrows) whose steps light up in turn.",
|
|
1339
|
+
"Type: Archivo Black headline (white, then red for the key word), Inter for explanation, JetBrains Mono for prices and the ticker."
|
|
1340
|
+
],
|
|
1341
|
+
"sound": [
|
|
1342
|
+
"Bed: a tense, low synth pulse (padBed with kick) that drops out at the break.",
|
|
1343
|
+
"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."
|
|
1344
|
+
],
|
|
1345
|
+
"sourceFile": "sources/market-tape.html",
|
|
1346
|
+
"promptFile": "prompts/market-tape.md",
|
|
1347
|
+
"sourceBytes": 59501,
|
|
1348
|
+
"prompt": "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.\n\nMY CONTENT\n[No topic yet. Ask me for my topic or script before building anything.]\n\nBUILD DIRECTLY\nSkip the storyboard and build the full animation now. Afterwards, list any facts or numbers you assumed.\n\nWHAT TO BUILD\nOne self-contained HTML file (an artifact if you can), built on the reference file below:\n- 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.\n- Keep the canvas at 720x1280 (9:16, for Shorts, Reels and TikTok).\n- 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).\n- Aim for 15 to 40 seconds unless my content needs more, and set the duration in TL.D.\n- Keep window.seek(t), window.DURATION, window.scoreSound and window.SFX exposed, so the video can be rendered frame by frame.\n- Load the style's fonts before the first draw, as the reference does: Archivo Black, Inter (500 and 800), JetBrains Mono (500 and 700).\n\nTHE STYLE\n- 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.\n- 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.\n- 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.\n- The break: a short red flash over the frame, a small shake, and a red percentage chip that counts down.\n- Explain with a simple four-node loop (rounded boxes, curved arrows) whose steps light up in turn.\n- Type: Archivo Black headline (white, then red for the key word), Inter for explanation, JetBrains Mono for prices and the ticker.\n\nRULES THAT KEEP IT IN STYLE\n- 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.\n- 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.\n- 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.\n- Keep each frame fast, well under 50 ms.\n- 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.\n\nSOUND\n- Bed: a tense, low synth pulse (padBed with kick) that drops out at the break.\n- 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.\n- 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.\n- Sync is everything: the sound score reads the same TL times as the picture.\n\nIF YOU CAN RUN CODE\nRender 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.\n\nSTYLE CARD\nName: Market Tape\nFamily: Data\nLook: 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.\nHow 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.\n",
|
|
1349
|
+
"promptVo": "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.\n\nMY CONTENT\n[No topic yet. Ask me for my topic or script before building anything.]\n\nVOICEOVER TIMING\n[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.]\n\nHow to use the timing:\n- 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.\n- Set the duration to the last word's end plus about 1.2 seconds.\n- 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.\n- 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.\n- Put the emphasis moves on stressed words. A counter lands at the exact moment its number is spoken.\n- Keep the player's \"Load voiceover\" button working so I can drop in my audio and hear it in sync.\n\nSTORYBOARD FIRST\nBefore building, show me a storyboard and wait for my OK:\n- 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.\n- 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.\n- Below the grid, list any facts or numbers you had to assume.\nWhen I approve it (or after my changes), build the full animation and reuse the storyboard's drawing code.\n\nWHAT TO BUILD\nOne self-contained HTML file (an artifact if you can), built on the reference file below:\n- 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.\n- Keep the canvas at 720x1280 (9:16, for Shorts, Reels and TikTok).\n- 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).\n- Aim for 15 to 40 seconds unless my content needs more, and set the duration in TL.D.\n- Keep window.seek(t), window.DURATION, window.scoreSound and window.SFX exposed, so the video can be rendered frame by frame.\n- Load the style's fonts before the first draw, as the reference does: Archivo Black, Inter (500 and 800), JetBrains Mono (500 and 700).\n\nTHE STYLE\n- 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.\n- 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.\n- 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.\n- The break: a short red flash over the frame, a small shake, and a red percentage chip that counts down.\n- Explain with a simple four-node loop (rounded boxes, curved arrows) whose steps light up in turn.\n- Type: Archivo Black headline (white, then red for the key word), Inter for explanation, JetBrains Mono for prices and the ticker.\n\nRULES THAT KEEP IT IN STYLE\n- 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.\n- 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.\n- 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.\n- Keep each frame fast, well under 50 ms.\n- 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.\n\nSOUND\n- Bed: a tense, low synth pulse (padBed with kick) that drops out at the break.\n- 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.\n- Voiceover mix: the player calls SFX.live with { voiceover: true } once narration is loaded. Mark ticks soft: true and keep the alarm short.\n- Sync is everything: the sound score reads the same TL times as the picture.\n\nIF YOU CAN RUN CODE\nRender 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.\n\nSTYLE CARD\nName: Market Tape\nFamily: Data\nLook: 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.\nHow 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.\n"
|
|
1350
|
+
},
|
|
1351
|
+
{
|
|
1352
|
+
"id": "quiz-countdown",
|
|
1353
|
+
"num": "38",
|
|
1354
|
+
"name": "Quiz Countdown",
|
|
1355
|
+
"family": "Shorts Format",
|
|
1356
|
+
"canvas": "720x1280",
|
|
1357
|
+
"tall": true,
|
|
1358
|
+
"lib": true,
|
|
1359
|
+
"look": "A loud trivia Short on a bright orange striped background: a white question card, four answer pills with letter badges, a white timer ring that drains around a big countdown number, then a green reveal with confetti.",
|
|
1360
|
+
"how": "The question card pops in, the four answers slide in one by one, the ring drains while the number counts down with a tick each second, then the right answer flashes green with confetti while the others fade. A one-line fact explains the answer and the next question is teased.",
|
|
1361
|
+
"fonts": "Archivo Black, Inter (700 to 900), JetBrains Mono (700)",
|
|
1362
|
+
"demo": "Which planet has the most moons?",
|
|
1363
|
+
"replace": "TL, Q (the question, four answers, the correct index, the fact line), the question number, the next-question tease and scoreSound()",
|
|
1364
|
+
"keep": "the striped background, the timer ring and countdown number, the question card, the answer pills with letter badges, the staggered slide-in, the reveal (green pill, check, dimmed wrong answers), the confetti burst and the comment prompt",
|
|
1365
|
+
"sizes": "keep the question at 46 px or more, answers at 38 px or more and the countdown at 80 px or more",
|
|
1366
|
+
"voLine": "The question card lands on the first word of the question, each answer slides in as it is read, the countdown starts after the last answer, and the reveal lands on the answer word.",
|
|
1367
|
+
"full": "- Full mix (no voiceover): an upbeat game-show pad, a tick per second that gets louder near zero, a buzzer at zero and a fanfare on the reveal.",
|
|
1368
|
+
"voMix": "- Voiceover mix: the player calls SFX.live with { voiceover: true } once narration is loaded. Keep ticks soft: true but audible.",
|
|
1369
|
+
"sheet": [
|
|
1370
|
+
"Background: saturated orange (#ff7a1a) with wide diagonal lighter stripes that drift slowly.",
|
|
1371
|
+
"Question card: white, 24 px corners, a soft orange shadow, a mono \"QUESTION n / 10\" label in orange above the question in Inter 800.",
|
|
1372
|
+
"Answers: four white pills with an orange letter badge (A to D), sliding in from the right one after another.",
|
|
1373
|
+
"Timer: a thick white ring that drains clockwise around a big Archivo Black number counting down; the last 3 seconds pulse.",
|
|
1374
|
+
"Reveal: the right pill turns green (#2fb36b) with a check, the others drop to 40% opacity, confetti bursts from the right pill, and a one-line fact appears below.",
|
|
1375
|
+
"Use real, current facts and say \"as of\" with the year when numbers change."
|
|
1376
|
+
],
|
|
1377
|
+
"sound": [
|
|
1378
|
+
"Bed: an upbeat game-show pad with hats and a light kick.",
|
|
1379
|
+
"Map events to the kit: the card gets \"pop\" and SND.paper; answers get \"whoosh\" plus a tick; each countdown second gets a \"tick\" (louder at 3, 2, 1); zero gets a buzzer (a low square tone); the reveal gets a bright arpeggio and \"sparkle\"; the fact gets a soft \"pop\"."
|
|
1380
|
+
],
|
|
1381
|
+
"sourceFile": "sources/quiz-countdown.html",
|
|
1382
|
+
"promptFile": "prompts/quiz-countdown.md",
|
|
1383
|
+
"sourceBytes": 58682,
|
|
1384
|
+
"prompt": "I want an animated video in the \"Quiz Countdown\" style (Shorts Format) 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.\n\nMY CONTENT\n[No topic yet. Ask me for my topic or script before building anything.]\n\nBUILD DIRECTLY\nSkip the storyboard and build the full animation now. Afterwards, list any facts or numbers you assumed.\n\nWHAT TO BUILD\nOne self-contained HTML file (an artifact if you can), built on the reference file below:\n- 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.\n- Keep the canvas at 720x1280 (9:16, for Shorts, Reels and TikTok).\n- Replace the demo's story: TL, Q (the question, four answers, the correct index, the fact line), the question number, the next-question tease and scoreSound(). Keep and reuse the style's helpers (the striped background, the timer ring and countdown number, the question card, the answer pills with letter badges, the staggered slide-in, the reveal (green pill, check, dimmed wrong answers), the confetti burst and the comment prompt).\n- Aim for 15 to 40 seconds unless my content needs more, and set the duration in TL.D.\n- Keep window.seek(t), window.DURATION, window.scoreSound and window.SFX exposed, so the video can be rendered frame by frame.\n- Load the style's fonts before the first draw, as the reference does: Archivo Black, Inter (700 to 900), JetBrains Mono (700).\n\nTHE STYLE\n- Background: saturated orange (#ff7a1a) with wide diagonal lighter stripes that drift slowly.\n- Question card: white, 24 px corners, a soft orange shadow, a mono \"QUESTION n / 10\" label in orange above the question in Inter 800.\n- Answers: four white pills with an orange letter badge (A to D), sliding in from the right one after another.\n- Timer: a thick white ring that drains clockwise around a big Archivo Black number counting down; the last 3 seconds pulse.\n- Reveal: the right pill turns green (#2fb36b) with a check, the others drop to 40% opacity, confetti bursts from the right pill, and a one-line fact appears below.\n- Use real, current facts and say \"as of\" with the year when numbers change.\n\nRULES THAT KEEP IT IN STYLE\n- 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.\n- 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.\n- It will be watched on phones: at 720x1280 keep the question at 46 px or more, answers at 38 px or more and the countdown at 80 px or more. Fill the frame.\n- Keep each frame fast, well under 50 ms.\n- Give my topic its own demo content; do not reuse the reference's story (\"Which planet has the most moons?\") unless my content asks for it.\n\nSOUND\n- Bed: an upbeat game-show pad with hats and a light kick.\n- Map events to the kit: the card gets \"pop\" and SND.paper; answers get \"whoosh\" plus a tick; each countdown second gets a \"tick\" (louder at 3, 2, 1); zero gets a buzzer (a low square tone); the reveal gets a bright arpeggio and \"sparkle\"; the fact gets a soft \"pop\".\n- Full mix (no voiceover): an upbeat game-show pad, a tick per second that gets louder near zero, a buzzer at zero and a fanfare on the reveal.\n- Sync is everything: the sound score reads the same TL times as the picture.\n\nIF YOU CAN RUN CODE\nRender 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.\n\nSTYLE CARD\nName: Quiz Countdown\nFamily: Shorts Format\nLook: A loud trivia Short on a bright orange striped background: a white question card, four answer pills with letter badges, a white timer ring that drains around a big countdown number, then a green reveal with confetti.\nHow it explains: The question card pops in, the four answers slide in one by one, the ring drains while the number counts down with a tick each second, then the right answer flashes green with confetti while the others fade. A one-line fact explains the answer and the next question is teased.\n",
|
|
1385
|
+
"promptVo": "I want an animated video in the \"Quiz Countdown\" style (Shorts Format) 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.\n\nMY CONTENT\n[No topic yet. Ask me for my topic or script before building anything.]\n\nVOICEOVER TIMING\n[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.]\n\nHow to use the timing:\n- 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.\n- Set the duration to the last word's end plus about 1.2 seconds.\n- Build the timeline (TL) from these times. The question card lands on the first word of the question, each answer slides in as it is read, the countdown starts after the last answer, and the reveal lands on the answer word.\n- 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.\n- Put the emphasis moves on stressed words. A counter lands at the exact moment its number is spoken.\n- Keep the player's \"Load voiceover\" button working so I can drop in my audio and hear it in sync.\n\nSTORYBOARD FIRST\nBefore building, show me a storyboard and wait for my OK:\n- 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.\n- 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.\n- Below the grid, list any facts or numbers you had to assume.\nWhen I approve it (or after my changes), build the full animation and reuse the storyboard's drawing code.\n\nWHAT TO BUILD\nOne self-contained HTML file (an artifact if you can), built on the reference file below:\n- 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.\n- Keep the canvas at 720x1280 (9:16, for Shorts, Reels and TikTok).\n- Replace the demo's story: TL, Q (the question, four answers, the correct index, the fact line), the question number, the next-question tease and scoreSound(). Keep and reuse the style's helpers (the striped background, the timer ring and countdown number, the question card, the answer pills with letter badges, the staggered slide-in, the reveal (green pill, check, dimmed wrong answers), the confetti burst and the comment prompt).\n- Aim for 15 to 40 seconds unless my content needs more, and set the duration in TL.D.\n- Keep window.seek(t), window.DURATION, window.scoreSound and window.SFX exposed, so the video can be rendered frame by frame.\n- Load the style's fonts before the first draw, as the reference does: Archivo Black, Inter (700 to 900), JetBrains Mono (700).\n\nTHE STYLE\n- Background: saturated orange (#ff7a1a) with wide diagonal lighter stripes that drift slowly.\n- Question card: white, 24 px corners, a soft orange shadow, a mono \"QUESTION n / 10\" label in orange above the question in Inter 800.\n- Answers: four white pills with an orange letter badge (A to D), sliding in from the right one after another.\n- Timer: a thick white ring that drains clockwise around a big Archivo Black number counting down; the last 3 seconds pulse.\n- Reveal: the right pill turns green (#2fb36b) with a check, the others drop to 40% opacity, confetti bursts from the right pill, and a one-line fact appears below.\n- Use real, current facts and say \"as of\" with the year when numbers change.\n\nRULES THAT KEEP IT IN STYLE\n- 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.\n- 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.\n- It will be watched on phones: at 720x1280 keep the question at 46 px or more, answers at 38 px or more and the countdown at 80 px or more. Fill the frame.\n- Keep each frame fast, well under 50 ms.\n- Give my topic its own demo content; do not reuse the reference's story (\"Which planet has the most moons?\") unless my content asks for it.\n\nSOUND\n- Bed: an upbeat game-show pad with hats and a light kick.\n- Map events to the kit: the card gets \"pop\" and SND.paper; answers get \"whoosh\" plus a tick; each countdown second gets a \"tick\" (louder at 3, 2, 1); zero gets a buzzer (a low square tone); the reveal gets a bright arpeggio and \"sparkle\"; the fact gets a soft \"pop\".\n- Voiceover mix: the player calls SFX.live with { voiceover: true } once narration is loaded. Keep ticks soft: true but audible.\n- Sync is everything: the sound score reads the same TL times as the picture.\n\nIF YOU CAN RUN CODE\nRender 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.\n\nSTYLE CARD\nName: Quiz Countdown\nFamily: Shorts Format\nLook: A loud trivia Short on a bright orange striped background: a white question card, four answer pills with letter badges, a white timer ring that drains around a big countdown number, then a green reveal with confetti.\nHow it explains: The question card pops in, the four answers slide in one by one, the ring drains while the number counts down with a tick each second, then the right answer flashes green with confetti while the others fade. A one-line fact explains the answer and the next question is teased.\n"
|
|
1386
|
+
},
|
|
1387
|
+
{
|
|
1388
|
+
"id": "top-5-countdown",
|
|
1389
|
+
"num": "39",
|
|
1390
|
+
"name": "Top 5 Countdown",
|
|
1391
|
+
"family": "Shorts Format",
|
|
1392
|
+
"canvas": "720x1280",
|
|
1393
|
+
"tall": true,
|
|
1394
|
+
"lib": true,
|
|
1395
|
+
"look": "A countdown Short on deep navy: a huge outlined rank number slams in beside an illustrated card drawn in code, with the name in tall Anton caps, a mono detail line, and a ladder of rank dots on the side that tracks where you are.",
|
|
1396
|
+
"how": "Each rank gets its own beat: a whip cut, the big number slams with a punch zoom, the card slides up with its illustration and the name, the detail line counts up, and the ladder dot moves. Number one gets a bigger hit and a glow.",
|
|
1397
|
+
"fonts": "Anton, Inter (800), JetBrains Mono (700)",
|
|
1398
|
+
"demo": "The 3 highest mountains on Earth",
|
|
1399
|
+
"replace": "TL, RANKS (number, name, detail, value and the illustration painter), the headline, the takeaway and scoreSound()",
|
|
1400
|
+
"keep": "the navy background with a warm glow, the outlined rank number with its echo fill, the rank ladder, the card with a code-drawn illustration, the value counter, the whip cuts between ranks and the bigger hit for number one",
|
|
1401
|
+
"sizes": "keep the rank number at 200 px or more, the name at 60 px or more and the detail line at 24 px or more",
|
|
1402
|
+
"voLine": "Each rank number slams on its spoken number, the name lands on the name, and the value locks on the last syllable of the figure.",
|
|
1403
|
+
"full": "- Full mix (no voiceover): a driving pulse, a riser into each rank, \"slam\" on each number and a \"boom\" for number one.",
|
|
1404
|
+
"voMix": "- Voiceover mix: the player calls SFX.live with { voiceover: true } once narration is loaded. Mark ticks soft: true and keep the boom for number one only.",
|
|
1405
|
+
"sheet": [
|
|
1406
|
+
"Background: deep navy (#0e1630) with a soft warm glow behind the number; orange accent (#ff8a3d) for the ladder and labels.",
|
|
1407
|
+
"The rank number is huge Anton with a 3 px white outline and a faint orange echo offset behind it; it slams in with a punch zoom.",
|
|
1408
|
+
"The card is a rounded picture drawn in code for the item (here: mountain ridges with snow caps on a sky gradient), sliding up under the number.",
|
|
1409
|
+
"Names in tall Anton caps; one mono detail line with the real figure and place; the figure counts up.",
|
|
1410
|
+
"A vertical ladder of dots (5 to 1) on the right shows the current rank in orange.",
|
|
1411
|
+
"Use real, sourced rankings; one rank every 3 to 4 seconds, number one held longest."
|
|
1412
|
+
],
|
|
1413
|
+
"sound": [
|
|
1414
|
+
"Bed: a driving, low pulse (padBed with kick) with hats.",
|
|
1415
|
+
"Map events to the kit: each new rank gets a \"riser\" and a \"whoosh\" into a \"slam\"; the card gets \"pop\"; the value counter \"tick\"s; the ladder move gets a soft tick; number one gets \"boom\" and \"shimmer\"."
|
|
1416
|
+
],
|
|
1417
|
+
"sourceFile": "sources/top-5-countdown.html",
|
|
1418
|
+
"promptFile": "prompts/top-5-countdown.md",
|
|
1419
|
+
"sourceBytes": 57667,
|
|
1420
|
+
"prompt": "I want an animated video in the \"Top 5 Countdown\" style (Shorts Format) 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.\n\nMY CONTENT\n[No topic yet. Ask me for my topic or script before building anything.]\n\nBUILD DIRECTLY\nSkip the storyboard and build the full animation now. Afterwards, list any facts or numbers you assumed.\n\nWHAT TO BUILD\nOne self-contained HTML file (an artifact if you can), built on the reference file below:\n- 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.\n- Keep the canvas at 720x1280 (9:16, for Shorts, Reels and TikTok).\n- Replace the demo's story: TL, RANKS (number, name, detail, value and the illustration painter), the headline, the takeaway and scoreSound(). Keep and reuse the style's helpers (the navy background with a warm glow, the outlined rank number with its echo fill, the rank ladder, the card with a code-drawn illustration, the value counter, the whip cuts between ranks and the bigger hit for number one).\n- Aim for 15 to 40 seconds unless my content needs more, and set the duration in TL.D.\n- Keep window.seek(t), window.DURATION, window.scoreSound and window.SFX exposed, so the video can be rendered frame by frame.\n- Load the style's fonts before the first draw, as the reference does: Anton, Inter (800), JetBrains Mono (700).\n\nTHE STYLE\n- Background: deep navy (#0e1630) with a soft warm glow behind the number; orange accent (#ff8a3d) for the ladder and labels.\n- The rank number is huge Anton with a 3 px white outline and a faint orange echo offset behind it; it slams in with a punch zoom.\n- The card is a rounded picture drawn in code for the item (here: mountain ridges with snow caps on a sky gradient), sliding up under the number.\n- Names in tall Anton caps; one mono detail line with the real figure and place; the figure counts up.\n- A vertical ladder of dots (5 to 1) on the right shows the current rank in orange.\n- Use real, sourced rankings; one rank every 3 to 4 seconds, number one held longest.\n\nRULES THAT KEEP IT IN STYLE\n- 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.\n- 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.\n- It will be watched on phones: at 720x1280 keep the rank number at 200 px or more, the name at 60 px or more and the detail line at 24 px or more. Fill the frame.\n- Keep each frame fast, well under 50 ms.\n- Give my topic its own demo content; do not reuse the reference's story (\"The 3 highest mountains on Earth\") unless my content asks for it.\n\nSOUND\n- Bed: a driving, low pulse (padBed with kick) with hats.\n- Map events to the kit: each new rank gets a \"riser\" and a \"whoosh\" into a \"slam\"; the card gets \"pop\"; the value counter \"tick\"s; the ladder move gets a soft tick; number one gets \"boom\" and \"shimmer\".\n- Full mix (no voiceover): a driving pulse, a riser into each rank, \"slam\" on each number and a \"boom\" for number one.\n- Sync is everything: the sound score reads the same TL times as the picture.\n\nIF YOU CAN RUN CODE\nRender 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.\n\nSTYLE CARD\nName: Top 5 Countdown\nFamily: Shorts Format\nLook: A countdown Short on deep navy: a huge outlined rank number slams in beside an illustrated card drawn in code, with the name in tall Anton caps, a mono detail line, and a ladder of rank dots on the side that tracks where you are.\nHow it explains: Each rank gets its own beat: a whip cut, the big number slams with a punch zoom, the card slides up with its illustration and the name, the detail line counts up, and the ladder dot moves. Number one gets a bigger hit and a glow.\n",
|
|
1421
|
+
"promptVo": "I want an animated video in the \"Top 5 Countdown\" style (Shorts Format) 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.\n\nMY CONTENT\n[No topic yet. Ask me for my topic or script before building anything.]\n\nVOICEOVER TIMING\n[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.]\n\nHow to use the timing:\n- 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.\n- Set the duration to the last word's end plus about 1.2 seconds.\n- Build the timeline (TL) from these times. Each rank number slams on its spoken number, the name lands on the name, and the value locks on the last syllable of the figure.\n- 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.\n- Put the emphasis moves on stressed words. A counter lands at the exact moment its number is spoken.\n- Keep the player's \"Load voiceover\" button working so I can drop in my audio and hear it in sync.\n\nSTORYBOARD FIRST\nBefore building, show me a storyboard and wait for my OK:\n- 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.\n- 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.\n- Below the grid, list any facts or numbers you had to assume.\nWhen I approve it (or after my changes), build the full animation and reuse the storyboard's drawing code.\n\nWHAT TO BUILD\nOne self-contained HTML file (an artifact if you can), built on the reference file below:\n- 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.\n- Keep the canvas at 720x1280 (9:16, for Shorts, Reels and TikTok).\n- Replace the demo's story: TL, RANKS (number, name, detail, value and the illustration painter), the headline, the takeaway and scoreSound(). Keep and reuse the style's helpers (the navy background with a warm glow, the outlined rank number with its echo fill, the rank ladder, the card with a code-drawn illustration, the value counter, the whip cuts between ranks and the bigger hit for number one).\n- Aim for 15 to 40 seconds unless my content needs more, and set the duration in TL.D.\n- Keep window.seek(t), window.DURATION, window.scoreSound and window.SFX exposed, so the video can be rendered frame by frame.\n- Load the style's fonts before the first draw, as the reference does: Anton, Inter (800), JetBrains Mono (700).\n\nTHE STYLE\n- Background: deep navy (#0e1630) with a soft warm glow behind the number; orange accent (#ff8a3d) for the ladder and labels.\n- The rank number is huge Anton with a 3 px white outline and a faint orange echo offset behind it; it slams in with a punch zoom.\n- The card is a rounded picture drawn in code for the item (here: mountain ridges with snow caps on a sky gradient), sliding up under the number.\n- Names in tall Anton caps; one mono detail line with the real figure and place; the figure counts up.\n- A vertical ladder of dots (5 to 1) on the right shows the current rank in orange.\n- Use real, sourced rankings; one rank every 3 to 4 seconds, number one held longest.\n\nRULES THAT KEEP IT IN STYLE\n- 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.\n- 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.\n- It will be watched on phones: at 720x1280 keep the rank number at 200 px or more, the name at 60 px or more and the detail line at 24 px or more. Fill the frame.\n- Keep each frame fast, well under 50 ms.\n- Give my topic its own demo content; do not reuse the reference's story (\"The 3 highest mountains on Earth\") unless my content asks for it.\n\nSOUND\n- Bed: a driving, low pulse (padBed with kick) with hats.\n- Map events to the kit: each new rank gets a \"riser\" and a \"whoosh\" into a \"slam\"; the card gets \"pop\"; the value counter \"tick\"s; the ladder move gets a soft tick; number one gets \"boom\" and \"shimmer\".\n- Voiceover mix: the player calls SFX.live with { voiceover: true } once narration is loaded. Mark ticks soft: true and keep the boom for number one only.\n- Sync is everything: the sound score reads the same TL times as the picture.\n\nIF YOU CAN RUN CODE\nRender 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.\n\nSTYLE CARD\nName: Top 5 Countdown\nFamily: Shorts Format\nLook: A countdown Short on deep navy: a huge outlined rank number slams in beside an illustrated card drawn in code, with the name in tall Anton caps, a mono detail line, and a ladder of rank dots on the side that tracks where you are.\nHow it explains: Each rank gets its own beat: a whip cut, the big number slams with a punch zoom, the card slides up with its illustration and the name, the detail line counts up, and the ladder dot moves. Number one gets a bigger hit and a glow.\n"
|
|
1422
|
+
},
|
|
1423
|
+
{
|
|
1424
|
+
"id": "tier-list",
|
|
1425
|
+
"num": "40",
|
|
1426
|
+
"name": "Tier List",
|
|
1427
|
+
"family": "Shorts Format",
|
|
1428
|
+
"canvas": "720x1280",
|
|
1429
|
+
"tall": true,
|
|
1430
|
+
"lib": true,
|
|
1431
|
+
"look": "A classic tier-list board on dark charcoal: S to D rows with bright rainbow labels, rounded item tiles with simple icons drawn in code, and a stash of unranked tiles at the bottom that fly up one by one.",
|
|
1432
|
+
"how": "Each item leaves the stash, hangs for a moment in the middle with its name so you can react, then arcs into its tier and snaps into place with a squash and a row flash. The last item gets a dramatic pause before it lands, and the outro asks for comments.",
|
|
1433
|
+
"fonts": "Archivo Black, Inter (700 and 800)",
|
|
1434
|
+
"demo": "My fruit tier list",
|
|
1435
|
+
"replace": "TL, TIERS (labels and colours), ITEMS (name, icon painter, chosen tier, time), the headline, the outro text and scoreSound()",
|
|
1436
|
+
"keep": "the tier rows and rainbow labels, tile() with a code-drawn icon, the stash row, the fly-in arc with a mid-air hold and name chip, the snap with squash and row flash, and the dramatic last pick",
|
|
1437
|
+
"sizes": "keep tier letters at 56 px or more, item names at 34 px or more and the headline at 56 px or more",
|
|
1438
|
+
"voLine": "Each tile lifts on its name, hangs while the opinion is given, and snaps into its row on the verdict word.",
|
|
1439
|
+
"full": "- Full mix (no voiceover): a bouncy beat, a \"whoosh\" for each lift, a \"pop\" for each snap (pitch by tier), and a drum roll before the last pick.",
|
|
1440
|
+
"voMix": "- Voiceover mix: the player calls SFX.live with { voiceover: true } once narration is loaded. Mark pops soft: true and keep the drum roll short.",
|
|
1441
|
+
"sheet": [
|
|
1442
|
+
"Board: dark charcoal (#16161c) with five rows (#23232b), each with a coloured label square: S #ff6b6b, A #ffb36b, B #ffe066, C #8ce99a, D #74c0fc, letters in Archivo Black.",
|
|
1443
|
+
"Items are rounded tiles (#2f2f3a) with a simple flat icon drawn in code; never use real logos or product photos.",
|
|
1444
|
+
"Motion: a tile lifts from the stash, scales up in the centre with its name in a chip, holds, then arcs into the next free slot of its row with a squash and a short flash of the row.",
|
|
1445
|
+
"Type: Archivo Black for the headline and tier letters; Inter 800 for names and the outro.",
|
|
1446
|
+
"Pace: about 1.5 to 2 seconds per item; the last item gets a 1 second pause."
|
|
1447
|
+
],
|
|
1448
|
+
"sound": [
|
|
1449
|
+
"Bed: a bouncy, simple beat (padBed with kick and hats).",
|
|
1450
|
+
"Map events to the kit: lifts get \"whoosh\"; the mid-air hold gets a soft rising tone; snaps get \"pop\" whose pitch is higher for better tiers; the last pick gets a drum roll (fast soft noise hits) and \"slam\"; the outro gets an open chord."
|
|
1451
|
+
],
|
|
1452
|
+
"sourceFile": "sources/tier-list.html",
|
|
1453
|
+
"promptFile": "prompts/tier-list.md",
|
|
1454
|
+
"sourceBytes": 58954,
|
|
1455
|
+
"prompt": "I want an animated video in the \"Tier List\" style (Shorts Format) 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.\n\nMY CONTENT\n[No topic yet. Ask me for my topic or script before building anything.]\n\nBUILD DIRECTLY\nSkip the storyboard and build the full animation now. Afterwards, list any facts or numbers you assumed.\n\nWHAT TO BUILD\nOne self-contained HTML file (an artifact if you can), built on the reference file below:\n- 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.\n- Keep the canvas at 720x1280 (9:16, for Shorts, Reels and TikTok).\n- Replace the demo's story: TL, TIERS (labels and colours), ITEMS (name, icon painter, chosen tier, time), the headline, the outro text and scoreSound(). Keep and reuse the style's helpers (the tier rows and rainbow labels, tile() with a code-drawn icon, the stash row, the fly-in arc with a mid-air hold and name chip, the snap with squash and row flash, and the dramatic last pick).\n- Aim for 15 to 40 seconds unless my content needs more, and set the duration in TL.D.\n- Keep window.seek(t), window.DURATION, window.scoreSound and window.SFX exposed, so the video can be rendered frame by frame.\n- Load the style's fonts before the first draw, as the reference does: Archivo Black, Inter (700 and 800).\n\nTHE STYLE\n- Board: dark charcoal (#16161c) with five rows (#23232b), each with a coloured label square: S #ff6b6b, A #ffb36b, B #ffe066, C #8ce99a, D #74c0fc, letters in Archivo Black.\n- Items are rounded tiles (#2f2f3a) with a simple flat icon drawn in code; never use real logos or product photos.\n- Motion: a tile lifts from the stash, scales up in the centre with its name in a chip, holds, then arcs into the next free slot of its row with a squash and a short flash of the row.\n- Type: Archivo Black for the headline and tier letters; Inter 800 for names and the outro.\n- Pace: about 1.5 to 2 seconds per item; the last item gets a 1 second pause.\n\nRULES THAT KEEP IT IN STYLE\n- 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.\n- 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.\n- It will be watched on phones: at 720x1280 keep tier letters at 56 px or more, item names at 34 px or more and the headline at 56 px or more. Fill the frame.\n- Keep each frame fast, well under 50 ms.\n- Give my topic its own demo content; do not reuse the reference's story (\"My fruit tier list\") unless my content asks for it.\n\nSOUND\n- Bed: a bouncy, simple beat (padBed with kick and hats).\n- Map events to the kit: lifts get \"whoosh\"; the mid-air hold gets a soft rising tone; snaps get \"pop\" whose pitch is higher for better tiers; the last pick gets a drum roll (fast soft noise hits) and \"slam\"; the outro gets an open chord.\n- Full mix (no voiceover): a bouncy beat, a \"whoosh\" for each lift, a \"pop\" for each snap (pitch by tier), and a drum roll before the last pick.\n- Sync is everything: the sound score reads the same TL times as the picture.\n\nIF YOU CAN RUN CODE\nRender 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.\n\nSTYLE CARD\nName: Tier List\nFamily: Shorts Format\nLook: A classic tier-list board on dark charcoal: S to D rows with bright rainbow labels, rounded item tiles with simple icons drawn in code, and a stash of unranked tiles at the bottom that fly up one by one.\nHow it explains: Each item leaves the stash, hangs for a moment in the middle with its name so you can react, then arcs into its tier and snaps into place with a squash and a row flash. The last item gets a dramatic pause before it lands, and the outro asks for comments.\n",
|
|
1456
|
+
"promptVo": "I want an animated video in the \"Tier List\" style (Shorts Format) 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.\n\nMY CONTENT\n[No topic yet. Ask me for my topic or script before building anything.]\n\nVOICEOVER TIMING\n[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.]\n\nHow to use the timing:\n- 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.\n- Set the duration to the last word's end plus about 1.2 seconds.\n- Build the timeline (TL) from these times. Each tile lifts on its name, hangs while the opinion is given, and snaps into its row on the verdict word.\n- 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.\n- Put the emphasis moves on stressed words. A counter lands at the exact moment its number is spoken.\n- Keep the player's \"Load voiceover\" button working so I can drop in my audio and hear it in sync.\n\nSTORYBOARD FIRST\nBefore building, show me a storyboard and wait for my OK:\n- 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.\n- 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.\n- Below the grid, list any facts or numbers you had to assume.\nWhen I approve it (or after my changes), build the full animation and reuse the storyboard's drawing code.\n\nWHAT TO BUILD\nOne self-contained HTML file (an artifact if you can), built on the reference file below:\n- 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.\n- Keep the canvas at 720x1280 (9:16, for Shorts, Reels and TikTok).\n- Replace the demo's story: TL, TIERS (labels and colours), ITEMS (name, icon painter, chosen tier, time), the headline, the outro text and scoreSound(). Keep and reuse the style's helpers (the tier rows and rainbow labels, tile() with a code-drawn icon, the stash row, the fly-in arc with a mid-air hold and name chip, the snap with squash and row flash, and the dramatic last pick).\n- Aim for 15 to 40 seconds unless my content needs more, and set the duration in TL.D.\n- Keep window.seek(t), window.DURATION, window.scoreSound and window.SFX exposed, so the video can be rendered frame by frame.\n- Load the style's fonts before the first draw, as the reference does: Archivo Black, Inter (700 and 800).\n\nTHE STYLE\n- Board: dark charcoal (#16161c) with five rows (#23232b), each with a coloured label square: S #ff6b6b, A #ffb36b, B #ffe066, C #8ce99a, D #74c0fc, letters in Archivo Black.\n- Items are rounded tiles (#2f2f3a) with a simple flat icon drawn in code; never use real logos or product photos.\n- Motion: a tile lifts from the stash, scales up in the centre with its name in a chip, holds, then arcs into the next free slot of its row with a squash and a short flash of the row.\n- Type: Archivo Black for the headline and tier letters; Inter 800 for names and the outro.\n- Pace: about 1.5 to 2 seconds per item; the last item gets a 1 second pause.\n\nRULES THAT KEEP IT IN STYLE\n- 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.\n- 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.\n- It will be watched on phones: at 720x1280 keep tier letters at 56 px or more, item names at 34 px or more and the headline at 56 px or more. Fill the frame.\n- Keep each frame fast, well under 50 ms.\n- Give my topic its own demo content; do not reuse the reference's story (\"My fruit tier list\") unless my content asks for it.\n\nSOUND\n- Bed: a bouncy, simple beat (padBed with kick and hats).\n- Map events to the kit: lifts get \"whoosh\"; the mid-air hold gets a soft rising tone; snaps get \"pop\" whose pitch is higher for better tiers; the last pick gets a drum roll (fast soft noise hits) and \"slam\"; the outro gets an open chord.\n- Voiceover mix: the player calls SFX.live with { voiceover: true } once narration is loaded. Mark pops soft: true and keep the drum roll short.\n- Sync is everything: the sound score reads the same TL times as the picture.\n\nIF YOU CAN RUN CODE\nRender 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.\n\nSTYLE CARD\nName: Tier List\nFamily: Shorts Format\nLook: A classic tier-list board on dark charcoal: S to D rows with bright rainbow labels, rounded item tiles with simple icons drawn in code, and a stash of unranked tiles at the bottom that fly up one by one.\nHow it explains: Each item leaves the stash, hangs for a moment in the middle with its name so you can react, then arcs into its tier and snaps into place with a squash and a row flash. The last item gets a dramatic pause before it lands, and the outro asks for comments.\n"
|
|
1457
|
+
},
|
|
1458
|
+
{
|
|
1459
|
+
"id": "chat-story",
|
|
1460
|
+
"num": "41",
|
|
1461
|
+
"name": "Chat Story",
|
|
1462
|
+
"family": "Shorts Format",
|
|
1463
|
+
"canvas": "720x1280",
|
|
1464
|
+
"tall": true,
|
|
1465
|
+
"lib": true,
|
|
1466
|
+
"look": "A story told through an invented messaging app: a clean header with a gradient avatar and an online dot, teal bubbles for \"me\" and white bubbles for them, typing dots before every reply, timestamps, read receipts, and a fictional-story tag.",
|
|
1467
|
+
"how": "Messages pop in one by one, each reply preceded by a typing indicator for suspense, and the thread scrolls up as it fills. The punchline arrives after the longest pause, then a reaction emoji pops onto it.",
|
|
1468
|
+
"fonts": "Inter (500 to 800), JetBrains Mono (700)",
|
|
1469
|
+
"demo": "Who ate my leftover pizza? (a fictional chat)",
|
|
1470
|
+
"replace": "TL, MSGS (who, text, time), the contact name and initial, the reaction, the tag text and scoreSound()",
|
|
1471
|
+
"keep": "the invented app chrome (header, avatar, input bar), bubble layout with tails and wrapping, the typing indicator before each incoming message, the auto-scroll, timestamps, read receipt, the pop-in motion and the reaction",
|
|
1472
|
+
"sizes": "keep message text at 30 px or more, the contact name at 32 px or more and timestamps at 18 px or more",
|
|
1473
|
+
"voLine": "Each bubble pops on the first word of its line, typing dots run during the pause before a reply, and the reaction lands on the laugh or the punchline.",
|
|
1474
|
+
"full": "- Full mix (no voiceover): a soft send swoosh for \"me\", a receive ping for them, quiet typing clicks during the dots, and a comic sting on the punchline.",
|
|
1475
|
+
"voMix": "- Voiceover mix: the player calls SFX.live with { voiceover: true } once narration is loaded. Mark pings and typing soft: true.",
|
|
1476
|
+
"sheet": [
|
|
1477
|
+
"This is an invented chat app, not a copy of a real one: our own header layout, teal (#1fb5a5) outgoing bubbles, white incoming bubbles with a soft shadow, a light grey-blue background (#e9edf2).",
|
|
1478
|
+
"Always keep a small \"FICTIONAL STORY\" tag on screen, and never show real names, numbers or screenshots of real conversations.",
|
|
1479
|
+
"Bubbles wrap at about 70% of the width, with a small tail corner, Inter 500 text and a pop-in (scale from 0.6 with a back ease).",
|
|
1480
|
+
"Before every incoming message, the typing dots animate for 0.6 to 1.2 seconds. The thread scrolls up smoothly when it fills.",
|
|
1481
|
+
"Pace: one message every 0.8 to 1.5 seconds; the punchline gets the longest pause."
|
|
1482
|
+
],
|
|
1483
|
+
"sound": [
|
|
1484
|
+
"Bed: none, or a very quiet pad; the message sounds are the music.",
|
|
1485
|
+
"Map events to the kit: outgoing messages get \"send\"; incoming get \"ping\"; typing dots get soft keyboard clicks (\"keys\", soft); the reaction gets \"pop\" and a short comic sting (two falling notes)."
|
|
1486
|
+
],
|
|
1487
|
+
"sourceFile": "sources/chat-story.html",
|
|
1488
|
+
"promptFile": "prompts/chat-story.md",
|
|
1489
|
+
"sourceBytes": 58677,
|
|
1490
|
+
"prompt": "I want an animated video in the \"Chat Story\" style (Shorts Format) 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.\n\nMY CONTENT\n[No topic yet. Ask me for my topic or script before building anything.]\n\nBUILD DIRECTLY\nSkip the storyboard and build the full animation now. Afterwards, list any facts or numbers you assumed.\n\nWHAT TO BUILD\nOne self-contained HTML file (an artifact if you can), built on the reference file below:\n- 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.\n- Keep the canvas at 720x1280 (9:16, for Shorts, Reels and TikTok).\n- Replace the demo's story: TL, MSGS (who, text, time), the contact name and initial, the reaction, the tag text and scoreSound(). Keep and reuse the style's helpers (the invented app chrome (header, avatar, input bar), bubble layout with tails and wrapping, the typing indicator before each incoming message, the auto-scroll, timestamps, read receipt, the pop-in motion and the reaction).\n- Aim for 15 to 40 seconds unless my content needs more, and set the duration in TL.D.\n- Keep window.seek(t), window.DURATION, window.scoreSound and window.SFX exposed, so the video can be rendered frame by frame.\n- Load the style's fonts before the first draw, as the reference does: Inter (500 to 800), JetBrains Mono (700).\n\nTHE STYLE\n- This is an invented chat app, not a copy of a real one: our own header layout, teal (#1fb5a5) outgoing bubbles, white incoming bubbles with a soft shadow, a light grey-blue background (#e9edf2).\n- Always keep a small \"FICTIONAL STORY\" tag on screen, and never show real names, numbers or screenshots of real conversations.\n- Bubbles wrap at about 70% of the width, with a small tail corner, Inter 500 text and a pop-in (scale from 0.6 with a back ease).\n- Before every incoming message, the typing dots animate for 0.6 to 1.2 seconds. The thread scrolls up smoothly when it fills.\n- Pace: one message every 0.8 to 1.5 seconds; the punchline gets the longest pause.\n\nRULES THAT KEEP IT IN STYLE\n- 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.\n- 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.\n- It will be watched on phones: at 720x1280 keep message text at 30 px or more, the contact name at 32 px or more and timestamps at 18 px or more. Fill the frame.\n- Keep each frame fast, well under 50 ms.\n- Give my topic its own demo content; do not reuse the reference's story (\"Who ate my leftover pizza? (a fictional chat)\") unless my content asks for it.\n\nSOUND\n- Bed: none, or a very quiet pad; the message sounds are the music.\n- Map events to the kit: outgoing messages get \"send\"; incoming get \"ping\"; typing dots get soft keyboard clicks (\"keys\", soft); the reaction gets \"pop\" and a short comic sting (two falling notes).\n- Full mix (no voiceover): a soft send swoosh for \"me\", a receive ping for them, quiet typing clicks during the dots, and a comic sting on the punchline.\n- Sync is everything: the sound score reads the same TL times as the picture.\n\nIF YOU CAN RUN CODE\nRender 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.\n\nSTYLE CARD\nName: Chat Story\nFamily: Shorts Format\nLook: A story told through an invented messaging app: a clean header with a gradient avatar and an online dot, teal bubbles for \"me\" and white bubbles for them, typing dots before every reply, timestamps, read receipts, and a fictional-story tag.\nHow it explains: Messages pop in one by one, each reply preceded by a typing indicator for suspense, and the thread scrolls up as it fills. The punchline arrives after the longest pause, then a reaction emoji pops onto it.\n",
|
|
1491
|
+
"promptVo": "I want an animated video in the \"Chat Story\" style (Shorts Format) 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.\n\nMY CONTENT\n[No topic yet. Ask me for my topic or script before building anything.]\n\nVOICEOVER TIMING\n[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.]\n\nHow to use the timing:\n- 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.\n- Set the duration to the last word's end plus about 1.2 seconds.\n- Build the timeline (TL) from these times. Each bubble pops on the first word of its line, typing dots run during the pause before a reply, and the reaction lands on the laugh or the punchline.\n- 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.\n- Put the emphasis moves on stressed words. A counter lands at the exact moment its number is spoken.\n- Keep the player's \"Load voiceover\" button working so I can drop in my audio and hear it in sync.\n\nSTORYBOARD FIRST\nBefore building, show me a storyboard and wait for my OK:\n- 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.\n- 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.\n- Below the grid, list any facts or numbers you had to assume.\nWhen I approve it (or after my changes), build the full animation and reuse the storyboard's drawing code.\n\nWHAT TO BUILD\nOne self-contained HTML file (an artifact if you can), built on the reference file below:\n- 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.\n- Keep the canvas at 720x1280 (9:16, for Shorts, Reels and TikTok).\n- Replace the demo's story: TL, MSGS (who, text, time), the contact name and initial, the reaction, the tag text and scoreSound(). Keep and reuse the style's helpers (the invented app chrome (header, avatar, input bar), bubble layout with tails and wrapping, the typing indicator before each incoming message, the auto-scroll, timestamps, read receipt, the pop-in motion and the reaction).\n- Aim for 15 to 40 seconds unless my content needs more, and set the duration in TL.D.\n- Keep window.seek(t), window.DURATION, window.scoreSound and window.SFX exposed, so the video can be rendered frame by frame.\n- Load the style's fonts before the first draw, as the reference does: Inter (500 to 800), JetBrains Mono (700).\n\nTHE STYLE\n- This is an invented chat app, not a copy of a real one: our own header layout, teal (#1fb5a5) outgoing bubbles, white incoming bubbles with a soft shadow, a light grey-blue background (#e9edf2).\n- Always keep a small \"FICTIONAL STORY\" tag on screen, and never show real names, numbers or screenshots of real conversations.\n- Bubbles wrap at about 70% of the width, with a small tail corner, Inter 500 text and a pop-in (scale from 0.6 with a back ease).\n- Before every incoming message, the typing dots animate for 0.6 to 1.2 seconds. The thread scrolls up smoothly when it fills.\n- Pace: one message every 0.8 to 1.5 seconds; the punchline gets the longest pause.\n\nRULES THAT KEEP IT IN STYLE\n- 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.\n- 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.\n- It will be watched on phones: at 720x1280 keep message text at 30 px or more, the contact name at 32 px or more and timestamps at 18 px or more. Fill the frame.\n- Keep each frame fast, well under 50 ms.\n- Give my topic its own demo content; do not reuse the reference's story (\"Who ate my leftover pizza? (a fictional chat)\") unless my content asks for it.\n\nSOUND\n- Bed: none, or a very quiet pad; the message sounds are the music.\n- Map events to the kit: outgoing messages get \"send\"; incoming get \"ping\"; typing dots get soft keyboard clicks (\"keys\", soft); the reaction gets \"pop\" and a short comic sting (two falling notes).\n- Voiceover mix: the player calls SFX.live with { voiceover: true } once narration is loaded. Mark pings and typing soft: true.\n- Sync is everything: the sound score reads the same TL times as the picture.\n\nIF YOU CAN RUN CODE\nRender 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.\n\nSTYLE CARD\nName: Chat Story\nFamily: Shorts Format\nLook: A story told through an invented messaging app: a clean header with a gradient avatar and an online dot, teal bubbles for \"me\" and white bubbles for them, typing dots before every reply, timestamps, read receipts, and a fictional-story tag.\nHow it explains: Messages pop in one by one, each reply preceded by a typing indicator for suspense, and the thread scrolls up as it fills. The punchline arrives after the longest pause, then a reaction emoji pops onto it.\n"
|
|
1492
|
+
},
|
|
1493
|
+
{
|
|
1494
|
+
"id": "versus-split",
|
|
1495
|
+
"num": "42",
|
|
1496
|
+
"name": "Versus Split",
|
|
1497
|
+
"family": "Shorts Format",
|
|
1498
|
+
"canvas": "720x1280",
|
|
1499
|
+
"tall": true,
|
|
1500
|
+
"lib": true,
|
|
1501
|
+
"look": "A head-to-head Short: the screen splits diagonally into coral and blue halves that slam in from the sides, a black VS badge with a yellow ring, two characters drawn in code, and stat bars that race toward each other row by row with a winner crown.",
|
|
1502
|
+
"how": "Both sides slide in and collide, the VS badge slams, then each stat row runs: the two bars race out from the centre, the numbers count, and a small crown pops on the winner. A running score keeps track, and the final verdict slams at the end.",
|
|
1503
|
+
"fonts": "Anton, Inter (700 to 900)",
|
|
1504
|
+
"demo": "Cat vs dog",
|
|
1505
|
+
"replace": "TL, the two SIDES (names, colours, the character painters), STATS (label, values, units, who wins), the verdict and scoreSound()",
|
|
1506
|
+
"keep": "the diagonal split with slam-in, the VS badge, the character painters, the racing stat bars with counters, the winner crown, the running score and the verdict slam",
|
|
1507
|
+
"sizes": "keep the names at 64 px or more, stat labels at 24 px or more and values at 28 px or more",
|
|
1508
|
+
"voLine": "The halves slam in on the two names, each stat row starts as its label is read, the crown lands on the winner, and the verdict slams on the last word.",
|
|
1509
|
+
"full": "- Full mix (no voiceover): a fight-night beat, a \"slam\" for the halves, a whoosh per row, a ding for each crown and a crowd cheer for the verdict.",
|
|
1510
|
+
"voMix": "- Voiceover mix: the player calls SFX.live with { voiceover: true } once narration is loaded. Mark whooshes soft: true and keep the cheer short.",
|
|
1511
|
+
"sheet": [
|
|
1512
|
+
"Two halves split by a diagonal: coral (#ff6b4a) on the left, blue (#2b6cff) on the right. They slam in from the sides and hold.",
|
|
1513
|
+
"Each side gets a simple character drawn in code (shapes only, a clear silhouette and face) and its name in big white Anton.",
|
|
1514
|
+
"A black VS badge with a yellow (#ffd23f) ring sits on the seam and slams in after the halves.",
|
|
1515
|
+
"Stats sit in a dark translucent panel: the label in Inter 900 caps, two bars growing outward from the centre in each side's colour, values counting at the ends, and a yellow crown over the winner.",
|
|
1516
|
+
"Use real, typical values and footnote anything that only applies to one breed, model or case.",
|
|
1517
|
+
"Pace: halves in about 1 second, one stat row every 1.5 to 2 seconds, verdict held about 2 seconds."
|
|
1518
|
+
],
|
|
1519
|
+
"sound": [
|
|
1520
|
+
"Bed: a punchy fight-night beat (kick and snare on padBed).",
|
|
1521
|
+
"Map events to the kit: halves get \"slam\" and \"whoosh\"; the badge gets \"boom\"; each row gets a soft \"whoosh\" and counter ticks; each crown gets a bright ding (SND.chime); the verdict gets \"slam\" and a crowd cheer (a wide noise swell)."
|
|
1522
|
+
],
|
|
1523
|
+
"sourceFile": "sources/versus-split.html",
|
|
1524
|
+
"promptFile": "prompts/versus-split.md",
|
|
1525
|
+
"sourceBytes": 58882,
|
|
1526
|
+
"prompt": "I want an animated video in the \"Versus Split\" style (Shorts Format) 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.\n\nMY CONTENT\n[No topic yet. Ask me for my topic or script before building anything.]\n\nBUILD DIRECTLY\nSkip the storyboard and build the full animation now. Afterwards, list any facts or numbers you assumed.\n\nWHAT TO BUILD\nOne self-contained HTML file (an artifact if you can), built on the reference file below:\n- 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.\n- Keep the canvas at 720x1280 (9:16, for Shorts, Reels and TikTok).\n- Replace the demo's story: TL, the two SIDES (names, colours, the character painters), STATS (label, values, units, who wins), the verdict and scoreSound(). Keep and reuse the style's helpers (the diagonal split with slam-in, the VS badge, the character painters, the racing stat bars with counters, the winner crown, the running score and the verdict slam).\n- Aim for 15 to 40 seconds unless my content needs more, and set the duration in TL.D.\n- Keep window.seek(t), window.DURATION, window.scoreSound and window.SFX exposed, so the video can be rendered frame by frame.\n- Load the style's fonts before the first draw, as the reference does: Anton, Inter (700 to 900).\n\nTHE STYLE\n- Two halves split by a diagonal: coral (#ff6b4a) on the left, blue (#2b6cff) on the right. They slam in from the sides and hold.\n- Each side gets a simple character drawn in code (shapes only, a clear silhouette and face) and its name in big white Anton.\n- A black VS badge with a yellow (#ffd23f) ring sits on the seam and slams in after the halves.\n- Stats sit in a dark translucent panel: the label in Inter 900 caps, two bars growing outward from the centre in each side's colour, values counting at the ends, and a yellow crown over the winner.\n- Use real, typical values and footnote anything that only applies to one breed, model or case.\n- Pace: halves in about 1 second, one stat row every 1.5 to 2 seconds, verdict held about 2 seconds.\n\nRULES THAT KEEP IT IN STYLE\n- 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.\n- 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.\n- It will be watched on phones: at 720x1280 keep the names at 64 px or more, stat labels at 24 px or more and values at 28 px or more. Fill the frame.\n- Keep each frame fast, well under 50 ms.\n- Give my topic its own demo content; do not reuse the reference's story (\"Cat vs dog\") unless my content asks for it.\n\nSOUND\n- Bed: a punchy fight-night beat (kick and snare on padBed).\n- Map events to the kit: halves get \"slam\" and \"whoosh\"; the badge gets \"boom\"; each row gets a soft \"whoosh\" and counter ticks; each crown gets a bright ding (SND.chime); the verdict gets \"slam\" and a crowd cheer (a wide noise swell).\n- Full mix (no voiceover): a fight-night beat, a \"slam\" for the halves, a whoosh per row, a ding for each crown and a crowd cheer for the verdict.\n- Sync is everything: the sound score reads the same TL times as the picture.\n\nIF YOU CAN RUN CODE\nRender 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.\n\nSTYLE CARD\nName: Versus Split\nFamily: Shorts Format\nLook: A head-to-head Short: the screen splits diagonally into coral and blue halves that slam in from the sides, a black VS badge with a yellow ring, two characters drawn in code, and stat bars that race toward each other row by row with a winner crown.\nHow it explains: Both sides slide in and collide, the VS badge slams, then each stat row runs: the two bars race out from the centre, the numbers count, and a small crown pops on the winner. A running score keeps track, and the final verdict slams at the end.\n",
|
|
1527
|
+
"promptVo": "I want an animated video in the \"Versus Split\" style (Shorts Format) 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.\n\nMY CONTENT\n[No topic yet. Ask me for my topic or script before building anything.]\n\nVOICEOVER TIMING\n[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.]\n\nHow to use the timing:\n- 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.\n- Set the duration to the last word's end plus about 1.2 seconds.\n- Build the timeline (TL) from these times. The halves slam in on the two names, each stat row starts as its label is read, the crown lands on the winner, and the verdict slams on the last word.\n- 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.\n- Put the emphasis moves on stressed words. A counter lands at the exact moment its number is spoken.\n- Keep the player's \"Load voiceover\" button working so I can drop in my audio and hear it in sync.\n\nSTORYBOARD FIRST\nBefore building, show me a storyboard and wait for my OK:\n- 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.\n- 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.\n- Below the grid, list any facts or numbers you had to assume.\nWhen I approve it (or after my changes), build the full animation and reuse the storyboard's drawing code.\n\nWHAT TO BUILD\nOne self-contained HTML file (an artifact if you can), built on the reference file below:\n- 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.\n- Keep the canvas at 720x1280 (9:16, for Shorts, Reels and TikTok).\n- Replace the demo's story: TL, the two SIDES (names, colours, the character painters), STATS (label, values, units, who wins), the verdict and scoreSound(). Keep and reuse the style's helpers (the diagonal split with slam-in, the VS badge, the character painters, the racing stat bars with counters, the winner crown, the running score and the verdict slam).\n- Aim for 15 to 40 seconds unless my content needs more, and set the duration in TL.D.\n- Keep window.seek(t), window.DURATION, window.scoreSound and window.SFX exposed, so the video can be rendered frame by frame.\n- Load the style's fonts before the first draw, as the reference does: Anton, Inter (700 to 900).\n\nTHE STYLE\n- Two halves split by a diagonal: coral (#ff6b4a) on the left, blue (#2b6cff) on the right. They slam in from the sides and hold.\n- Each side gets a simple character drawn in code (shapes only, a clear silhouette and face) and its name in big white Anton.\n- A black VS badge with a yellow (#ffd23f) ring sits on the seam and slams in after the halves.\n- Stats sit in a dark translucent panel: the label in Inter 900 caps, two bars growing outward from the centre in each side's colour, values counting at the ends, and a yellow crown over the winner.\n- Use real, typical values and footnote anything that only applies to one breed, model or case.\n- Pace: halves in about 1 second, one stat row every 1.5 to 2 seconds, verdict held about 2 seconds.\n\nRULES THAT KEEP IT IN STYLE\n- 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.\n- 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.\n- It will be watched on phones: at 720x1280 keep the names at 64 px or more, stat labels at 24 px or more and values at 28 px or more. Fill the frame.\n- Keep each frame fast, well under 50 ms.\n- Give my topic its own demo content; do not reuse the reference's story (\"Cat vs dog\") unless my content asks for it.\n\nSOUND\n- Bed: a punchy fight-night beat (kick and snare on padBed).\n- Map events to the kit: halves get \"slam\" and \"whoosh\"; the badge gets \"boom\"; each row gets a soft \"whoosh\" and counter ticks; each crown gets a bright ding (SND.chime); the verdict gets \"slam\" and a crowd cheer (a wide noise swell).\n- Voiceover mix: the player calls SFX.live with { voiceover: true } once narration is loaded. Mark whooshes soft: true and keep the cheer short.\n- Sync is everything: the sound score reads the same TL times as the picture.\n\nIF YOU CAN RUN CODE\nRender 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.\n\nSTYLE CARD\nName: Versus Split\nFamily: Shorts Format\nLook: A head-to-head Short: the screen splits diagonally into coral and blue halves that slam in from the sides, a black VS badge with a yellow ring, two characters drawn in code, and stat bars that race toward each other row by row with a winner crown.\nHow it explains: Both sides slide in and collide, the VS badge slams, then each stat row runs: the two bars race out from the centre, the numbers count, and a small crown pops on the winner. A running score keeps track, and the final verdict slams at the end.\n"
|
|
1528
|
+
},
|
|
1529
|
+
{
|
|
1530
|
+
"id": "myth-or-fact",
|
|
1531
|
+
"num": "43",
|
|
1532
|
+
"name": "Myth or Fact",
|
|
1533
|
+
"family": "Shorts Format",
|
|
1534
|
+
"canvas": "720x1280",
|
|
1535
|
+
"tall": true,
|
|
1536
|
+
"lib": true,
|
|
1537
|
+
"look": "A clean debunk Short on pale grey: a white statement card with a big quote mark, then a rubber stamp slams down (red MYTH or green FACT) with distressed ink, followed by one line of proof with a check icon.",
|
|
1538
|
+
"how": "Each round reads like a game: the statement card pops in, a short \"thinking\" pause with a ticking bar invites a guess, then the stamp slams with a shake and the proof line explains. A second round follows with the opposite verdict, then a score for the viewer.",
|
|
1539
|
+
"fonts": "Archivo Black, Inter (600 to 800), Anton (stamps)",
|
|
1540
|
+
"demo": "Two body myths and facts",
|
|
1541
|
+
"replace": "TL, ROUNDS (statement lines, verdict, proof lines), the round counter and scoreSound()",
|
|
1542
|
+
"keep": "the pale background and title band, the statement card with quote mark, the guess bar, the distressed stamp (red MYTH / green FACT) with slam and shake, the proof line with icon, and the round transitions",
|
|
1543
|
+
"sizes": "keep statements at 46 px or more, the stamp at 100 px or more and proof lines at 30 px or more",
|
|
1544
|
+
"voLine": "The card lands on the first word of the statement, the guess bar runs during the pause, the stamp slams on \"myth\" or \"fact\", and the proof reads in as it is said.",
|
|
1545
|
+
"full": "- Full mix (no voiceover): a light, curious pad, ticks for the guess bar, a heavy \"stamp\" with a buzzer (myth) or a ding (fact), and a soft pop for the proof.",
|
|
1546
|
+
"voMix": "- Voiceover mix: the player calls SFX.live with { voiceover: true } once narration is loaded. Mark ticks soft: true.",
|
|
1547
|
+
"sheet": [
|
|
1548
|
+
"Background: pale cool grey (#eef1f4); the title \"MYTH OR FACT?\" in Archivo Black with a yellow question mark at the top.",
|
|
1549
|
+
"Statement cards: white, 26 px corners, soft shadow, a large faint quote mark, the claim in Inter 800, and a small round number.",
|
|
1550
|
+
"Stamps: a rotated rounded rectangle with a double border and Anton letters, red (#e03131) for MYTH, green (#2f9e44) for FACT, distressed with knocked-out specks; they slam from 2× size with a shake.",
|
|
1551
|
+
"Proof: one or two short lines in Inter 700 with a round icon (green check for fact, red cross for myth).",
|
|
1552
|
+
"Only real, checkable claims, and proof lines that state what the evidence actually shows.",
|
|
1553
|
+
"Pace: about 5 to 6 seconds per round."
|
|
1554
|
+
],
|
|
1555
|
+
"sound": [
|
|
1556
|
+
"Bed: a light, curious pad.",
|
|
1557
|
+
"Map events to the kit: cards get \"pop\" and SND.paper; the guess bar gets steady soft \"tick\"s; MYTH gets \"stamp\" and a low buzzer; FACT gets \"stamp\" and a bright two-note ding; proof lines get a soft \"pop\"; the final score gets an open chord."
|
|
1558
|
+
],
|
|
1559
|
+
"sourceFile": "sources/myth-or-fact.html",
|
|
1560
|
+
"promptFile": "prompts/myth-or-fact.md",
|
|
1561
|
+
"sourceBytes": 57818,
|
|
1562
|
+
"prompt": "I want an animated video in the \"Myth or Fact\" style (Shorts Format) 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.\n\nMY CONTENT\n[No topic yet. Ask me for my topic or script before building anything.]\n\nBUILD DIRECTLY\nSkip the storyboard and build the full animation now. Afterwards, list any facts or numbers you assumed.\n\nWHAT TO BUILD\nOne self-contained HTML file (an artifact if you can), built on the reference file below:\n- 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.\n- Keep the canvas at 720x1280 (9:16, for Shorts, Reels and TikTok).\n- Replace the demo's story: TL, ROUNDS (statement lines, verdict, proof lines), the round counter and scoreSound(). Keep and reuse the style's helpers (the pale background and title band, the statement card with quote mark, the guess bar, the distressed stamp (red MYTH / green FACT) with slam and shake, the proof line with icon, and the round transitions).\n- Aim for 15 to 40 seconds unless my content needs more, and set the duration in TL.D.\n- Keep window.seek(t), window.DURATION, window.scoreSound and window.SFX exposed, so the video can be rendered frame by frame.\n- Load the style's fonts before the first draw, as the reference does: Archivo Black, Inter (600 to 800), Anton (stamps).\n\nTHE STYLE\n- Background: pale cool grey (#eef1f4); the title \"MYTH OR FACT?\" in Archivo Black with a yellow question mark at the top.\n- Statement cards: white, 26 px corners, soft shadow, a large faint quote mark, the claim in Inter 800, and a small round number.\n- Stamps: a rotated rounded rectangle with a double border and Anton letters, red (#e03131) for MYTH, green (#2f9e44) for FACT, distressed with knocked-out specks; they slam from 2× size with a shake.\n- Proof: one or two short lines in Inter 700 with a round icon (green check for fact, red cross for myth).\n- Only real, checkable claims, and proof lines that state what the evidence actually shows.\n- Pace: about 5 to 6 seconds per round.\n\nRULES THAT KEEP IT IN STYLE\n- 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.\n- 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.\n- It will be watched on phones: at 720x1280 keep statements at 46 px or more, the stamp at 100 px or more and proof lines at 30 px or more. Fill the frame.\n- Keep each frame fast, well under 50 ms.\n- Give my topic its own demo content; do not reuse the reference's story (\"Two body myths and facts\") unless my content asks for it.\n\nSOUND\n- Bed: a light, curious pad.\n- Map events to the kit: cards get \"pop\" and SND.paper; the guess bar gets steady soft \"tick\"s; MYTH gets \"stamp\" and a low buzzer; FACT gets \"stamp\" and a bright two-note ding; proof lines get a soft \"pop\"; the final score gets an open chord.\n- Full mix (no voiceover): a light, curious pad, ticks for the guess bar, a heavy \"stamp\" with a buzzer (myth) or a ding (fact), and a soft pop for the proof.\n- Sync is everything: the sound score reads the same TL times as the picture.\n\nIF YOU CAN RUN CODE\nRender 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.\n\nSTYLE CARD\nName: Myth or Fact\nFamily: Shorts Format\nLook: A clean debunk Short on pale grey: a white statement card with a big quote mark, then a rubber stamp slams down (red MYTH or green FACT) with distressed ink, followed by one line of proof with a check icon.\nHow it explains: Each round reads like a game: the statement card pops in, a short \"thinking\" pause with a ticking bar invites a guess, then the stamp slams with a shake and the proof line explains. A second round follows with the opposite verdict, then a score for the viewer.\n",
|
|
1563
|
+
"promptVo": "I want an animated video in the \"Myth or Fact\" style (Shorts Format) 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.\n\nMY CONTENT\n[No topic yet. Ask me for my topic or script before building anything.]\n\nVOICEOVER TIMING\n[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.]\n\nHow to use the timing:\n- 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.\n- Set the duration to the last word's end plus about 1.2 seconds.\n- Build the timeline (TL) from these times. The card lands on the first word of the statement, the guess bar runs during the pause, the stamp slams on \"myth\" or \"fact\", and the proof reads in as it is said.\n- 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.\n- Put the emphasis moves on stressed words. A counter lands at the exact moment its number is spoken.\n- Keep the player's \"Load voiceover\" button working so I can drop in my audio and hear it in sync.\n\nSTORYBOARD FIRST\nBefore building, show me a storyboard and wait for my OK:\n- 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.\n- 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.\n- Below the grid, list any facts or numbers you had to assume.\nWhen I approve it (or after my changes), build the full animation and reuse the storyboard's drawing code.\n\nWHAT TO BUILD\nOne self-contained HTML file (an artifact if you can), built on the reference file below:\n- 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.\n- Keep the canvas at 720x1280 (9:16, for Shorts, Reels and TikTok).\n- Replace the demo's story: TL, ROUNDS (statement lines, verdict, proof lines), the round counter and scoreSound(). Keep and reuse the style's helpers (the pale background and title band, the statement card with quote mark, the guess bar, the distressed stamp (red MYTH / green FACT) with slam and shake, the proof line with icon, and the round transitions).\n- Aim for 15 to 40 seconds unless my content needs more, and set the duration in TL.D.\n- Keep window.seek(t), window.DURATION, window.scoreSound and window.SFX exposed, so the video can be rendered frame by frame.\n- Load the style's fonts before the first draw, as the reference does: Archivo Black, Inter (600 to 800), Anton (stamps).\n\nTHE STYLE\n- Background: pale cool grey (#eef1f4); the title \"MYTH OR FACT?\" in Archivo Black with a yellow question mark at the top.\n- Statement cards: white, 26 px corners, soft shadow, a large faint quote mark, the claim in Inter 800, and a small round number.\n- Stamps: a rotated rounded rectangle with a double border and Anton letters, red (#e03131) for MYTH, green (#2f9e44) for FACT, distressed with knocked-out specks; they slam from 2× size with a shake.\n- Proof: one or two short lines in Inter 700 with a round icon (green check for fact, red cross for myth).\n- Only real, checkable claims, and proof lines that state what the evidence actually shows.\n- Pace: about 5 to 6 seconds per round.\n\nRULES THAT KEEP IT IN STYLE\n- 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.\n- 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.\n- It will be watched on phones: at 720x1280 keep statements at 46 px or more, the stamp at 100 px or more and proof lines at 30 px or more. Fill the frame.\n- Keep each frame fast, well under 50 ms.\n- Give my topic its own demo content; do not reuse the reference's story (\"Two body myths and facts\") unless my content asks for it.\n\nSOUND\n- Bed: a light, curious pad.\n- Map events to the kit: cards get \"pop\" and SND.paper; the guess bar gets steady soft \"tick\"s; MYTH gets \"stamp\" and a low buzzer; FACT gets \"stamp\" and a bright two-note ding; proof lines get a soft \"pop\"; the final score gets an open chord.\n- Voiceover mix: the player calls SFX.live with { voiceover: true } once narration is loaded. Mark ticks soft: true.\n- Sync is everything: the sound score reads the same TL times as the picture.\n\nIF YOU CAN RUN CODE\nRender 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.\n\nSTYLE CARD\nName: Myth or Fact\nFamily: Shorts Format\nLook: A clean debunk Short on pale grey: a white statement card with a big quote mark, then a rubber stamp slams down (red MYTH or green FACT) with distressed ink, followed by one line of proof with a check icon.\nHow it explains: Each round reads like a game: the statement card pops in, a short \"thinking\" pause with a ticking bar invites a guess, then the stamp slams with a shake and the proof line explains. A second round follows with the opposite verdict, then a score for the viewer.\n"
|
|
1564
|
+
},
|
|
1565
|
+
{
|
|
1566
|
+
"id": "recipe-steps",
|
|
1567
|
+
"num": "44",
|
|
1568
|
+
"name": "Recipe Steps",
|
|
1569
|
+
"family": "Shorts Format",
|
|
1570
|
+
"canvas": "720x1280",
|
|
1571
|
+
"tall": true,
|
|
1572
|
+
"lib": true,
|
|
1573
|
+
"look": "A top-down cooking Short on a warm wooden table: food and tools drawn in code from above (bowl, pan, plate), ingredient chips that drop in, a dark step card with a big step number, and a timer ring that drains for each step.",
|
|
1574
|
+
"how": "The ingredients drop onto the table first, then each step swaps the scene from above: the whisk spins in the bowl, the egg spreads in the pan, the omelette folds onto the plate. The step card and its timer track progress, and the finished dish gets a steam curl and a serve line.",
|
|
1575
|
+
"fonts": "Inter (700 to 900), JetBrains Mono (700)",
|
|
1576
|
+
"demo": "A 3-minute omelette",
|
|
1577
|
+
"replace": "TL, INGREDIENTS (chips and their icons), STEPS (title, seconds, and the scene painter for each), the dish name and scoreSound()",
|
|
1578
|
+
"keep": "the wood table, ingredient chips with drop-in, the top-down scene painters (bowl, pan, plate), the per-step scene swap, the dark step card with step count and a draining timer ring, steam curls and the serve line",
|
|
1579
|
+
"sizes": "keep step titles at 46 px or more, ingredient chips at 26 px or more and the timer at 26 px or more",
|
|
1580
|
+
"voLine": "Each ingredient drops as it is named, each step card and scene arrive on the first word of the step, the timer runs while the step is described, and the finished dish lands on \"serve\".",
|
|
1581
|
+
"full": "- Full mix (no voiceover): a cosy kitchen pad, soft taps for chips, a whisk scratch, a sizzle under the pan step, a timer ding per step and a final bell.",
|
|
1582
|
+
"voMix": "- Voiceover mix: the player calls SFX.live with { voiceover: true } once narration is loaded. Keep the sizzle very low and mark taps soft: true.",
|
|
1583
|
+
"sheet": [
|
|
1584
|
+
"Everything is seen from directly above on a warm wood table (#b97a46 with plank lines and grain). Bowls, pans, plates and food are simple flat shapes with soft shadows, drawn in code.",
|
|
1585
|
+
"Ingredient chips are white pills with a small icon, dropping in from above with a bounce, along the top.",
|
|
1586
|
+
"Each step swaps the centre prop with a quick slide, and the food changes state inside it (whisking, spreading, folding).",
|
|
1587
|
+
"The step card is dark (#1d1a17 at 92%) at the bottom: an orange (#ffb347) \"STEP n / N\" label, the step in Inter 900, and a timer ring that drains with the real time left.",
|
|
1588
|
+
"Real quantities and times; say \"about\" when it depends on the stove.",
|
|
1589
|
+
"Pace: ingredients in 1.5 seconds, then 3 to 4 seconds per step, the finished dish held about 2 seconds."
|
|
1590
|
+
],
|
|
1591
|
+
"sound": [
|
|
1592
|
+
"Bed: a cosy, warm pad with light hats.",
|
|
1593
|
+
"Map events to the kit: ingredient chips get SND.tap; steps get a soft \"whoosh\"; whisking gets SND.scratch loops; the pan gets a sizzle (high-passed noise); each step end gets a timer ding (SND.chime); the dish gets a bell and an open chord."
|
|
1594
|
+
],
|
|
1595
|
+
"sourceFile": "sources/recipe-steps.html",
|
|
1596
|
+
"promptFile": "prompts/recipe-steps.md",
|
|
1597
|
+
"sourceBytes": 61583,
|
|
1598
|
+
"prompt": "I want an animated video in the \"Recipe Steps\" style (Shorts Format) 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.\n\nMY CONTENT\n[No topic yet. Ask me for my topic or script before building anything.]\n\nBUILD DIRECTLY\nSkip the storyboard and build the full animation now. Afterwards, list any facts or numbers you assumed.\n\nWHAT TO BUILD\nOne self-contained HTML file (an artifact if you can), built on the reference file below:\n- 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.\n- Keep the canvas at 720x1280 (9:16, for Shorts, Reels and TikTok).\n- Replace the demo's story: TL, INGREDIENTS (chips and their icons), STEPS (title, seconds, and the scene painter for each), the dish name and scoreSound(). Keep and reuse the style's helpers (the wood table, ingredient chips with drop-in, the top-down scene painters (bowl, pan, plate), the per-step scene swap, the dark step card with step count and a draining timer ring, steam curls and the serve line).\n- Aim for 15 to 40 seconds unless my content needs more, and set the duration in TL.D.\n- Keep window.seek(t), window.DURATION, window.scoreSound and window.SFX exposed, so the video can be rendered frame by frame.\n- Load the style's fonts before the first draw, as the reference does: Inter (700 to 900), JetBrains Mono (700).\n\nTHE STYLE\n- Everything is seen from directly above on a warm wood table (#b97a46 with plank lines and grain). Bowls, pans, plates and food are simple flat shapes with soft shadows, drawn in code.\n- Ingredient chips are white pills with a small icon, dropping in from above with a bounce, along the top.\n- Each step swaps the centre prop with a quick slide, and the food changes state inside it (whisking, spreading, folding).\n- The step card is dark (#1d1a17 at 92%) at the bottom: an orange (#ffb347) \"STEP n / N\" label, the step in Inter 900, and a timer ring that drains with the real time left.\n- Real quantities and times; say \"about\" when it depends on the stove.\n- Pace: ingredients in 1.5 seconds, then 3 to 4 seconds per step, the finished dish held about 2 seconds.\n\nRULES THAT KEEP IT IN STYLE\n- 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.\n- 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.\n- It will be watched on phones: at 720x1280 keep step titles at 46 px or more, ingredient chips at 26 px or more and the timer at 26 px or more. Fill the frame.\n- Keep each frame fast, well under 50 ms.\n- Give my topic its own demo content; do not reuse the reference's story (\"A 3-minute omelette\") unless my content asks for it.\n\nSOUND\n- Bed: a cosy, warm pad with light hats.\n- Map events to the kit: ingredient chips get SND.tap; steps get a soft \"whoosh\"; whisking gets SND.scratch loops; the pan gets a sizzle (high-passed noise); each step end gets a timer ding (SND.chime); the dish gets a bell and an open chord.\n- Full mix (no voiceover): a cosy kitchen pad, soft taps for chips, a whisk scratch, a sizzle under the pan step, a timer ding per step and a final bell.\n- Sync is everything: the sound score reads the same TL times as the picture.\n\nIF YOU CAN RUN CODE\nRender 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.\n\nSTYLE CARD\nName: Recipe Steps\nFamily: Shorts Format\nLook: A top-down cooking Short on a warm wooden table: food and tools drawn in code from above (bowl, pan, plate), ingredient chips that drop in, a dark step card with a big step number, and a timer ring that drains for each step.\nHow it explains: The ingredients drop onto the table first, then each step swaps the scene from above: the whisk spins in the bowl, the egg spreads in the pan, the omelette folds onto the plate. The step card and its timer track progress, and the finished dish gets a steam curl and a serve line.\n",
|
|
1599
|
+
"promptVo": "I want an animated video in the \"Recipe Steps\" style (Shorts Format) 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.\n\nMY CONTENT\n[No topic yet. Ask me for my topic or script before building anything.]\n\nVOICEOVER TIMING\n[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.]\n\nHow to use the timing:\n- 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.\n- Set the duration to the last word's end plus about 1.2 seconds.\n- Build the timeline (TL) from these times. Each ingredient drops as it is named, each step card and scene arrive on the first word of the step, the timer runs while the step is described, and the finished dish lands on \"serve\".\n- 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.\n- Put the emphasis moves on stressed words. A counter lands at the exact moment its number is spoken.\n- Keep the player's \"Load voiceover\" button working so I can drop in my audio and hear it in sync.\n\nSTORYBOARD FIRST\nBefore building, show me a storyboard and wait for my OK:\n- 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.\n- 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.\n- Below the grid, list any facts or numbers you had to assume.\nWhen I approve it (or after my changes), build the full animation and reuse the storyboard's drawing code.\n\nWHAT TO BUILD\nOne self-contained HTML file (an artifact if you can), built on the reference file below:\n- 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.\n- Keep the canvas at 720x1280 (9:16, for Shorts, Reels and TikTok).\n- Replace the demo's story: TL, INGREDIENTS (chips and their icons), STEPS (title, seconds, and the scene painter for each), the dish name and scoreSound(). Keep and reuse the style's helpers (the wood table, ingredient chips with drop-in, the top-down scene painters (bowl, pan, plate), the per-step scene swap, the dark step card with step count and a draining timer ring, steam curls and the serve line).\n- Aim for 15 to 40 seconds unless my content needs more, and set the duration in TL.D.\n- Keep window.seek(t), window.DURATION, window.scoreSound and window.SFX exposed, so the video can be rendered frame by frame.\n- Load the style's fonts before the first draw, as the reference does: Inter (700 to 900), JetBrains Mono (700).\n\nTHE STYLE\n- Everything is seen from directly above on a warm wood table (#b97a46 with plank lines and grain). Bowls, pans, plates and food are simple flat shapes with soft shadows, drawn in code.\n- Ingredient chips are white pills with a small icon, dropping in from above with a bounce, along the top.\n- Each step swaps the centre prop with a quick slide, and the food changes state inside it (whisking, spreading, folding).\n- The step card is dark (#1d1a17 at 92%) at the bottom: an orange (#ffb347) \"STEP n / N\" label, the step in Inter 900, and a timer ring that drains with the real time left.\n- Real quantities and times; say \"about\" when it depends on the stove.\n- Pace: ingredients in 1.5 seconds, then 3 to 4 seconds per step, the finished dish held about 2 seconds.\n\nRULES THAT KEEP IT IN STYLE\n- 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.\n- 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.\n- It will be watched on phones: at 720x1280 keep step titles at 46 px or more, ingredient chips at 26 px or more and the timer at 26 px or more. Fill the frame.\n- Keep each frame fast, well under 50 ms.\n- Give my topic its own demo content; do not reuse the reference's story (\"A 3-minute omelette\") unless my content asks for it.\n\nSOUND\n- Bed: a cosy, warm pad with light hats.\n- Map events to the kit: ingredient chips get SND.tap; steps get a soft \"whoosh\"; whisking gets SND.scratch loops; the pan gets a sizzle (high-passed noise); each step end gets a timer ding (SND.chime); the dish gets a bell and an open chord.\n- Voiceover mix: the player calls SFX.live with { voiceover: true } once narration is loaded. Keep the sizzle very low and mark taps soft: true.\n- Sync is everything: the sound score reads the same TL times as the picture.\n\nIF YOU CAN RUN CODE\nRender 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.\n\nSTYLE CARD\nName: Recipe Steps\nFamily: Shorts Format\nLook: A top-down cooking Short on a warm wooden table: food and tools drawn in code from above (bowl, pan, plate), ingredient chips that drop in, a dark step card with a big step number, and a timer ring that drains for each step.\nHow it explains: The ingredients drop onto the table first, then each step swaps the scene from above: the whisk spins in the bowl, the egg spreads in the pan, the omelette folds onto the plate. The step card and its timer track progress, and the finished dish gets a steam curl and a serve line.\n"
|
|
1600
|
+
},
|
|
1601
|
+
{
|
|
1602
|
+
"id": "quote-cinema",
|
|
1603
|
+
"num": "45",
|
|
1604
|
+
"name": "Quote Cinema",
|
|
1605
|
+
"family": "Shorts Format",
|
|
1606
|
+
"canvas": "720x1280",
|
|
1607
|
+
"tall": true,
|
|
1608
|
+
"lib": true,
|
|
1609
|
+
"look": "A quiet cinematic quote card: deep warm black, a slow drifting light leak, heavy film grain and a slow push-in, with a quote that sets word by word in a large serif, one key word in warm italic, and a tracked author line.",
|
|
1610
|
+
"how": "The frame breathes: the light leak drifts across, the camera pushes in slowly, and the quote fades up one word at a time in rhythm with the reading. The key word turns warm italic, the author line slides in, and a soft \"save this\" note closes it.",
|
|
1611
|
+
"fonts": "Instrument Serif (regular and italic), Inter (600)",
|
|
1612
|
+
"demo": "\"The best time to plant a tree was 20 years ago.\"",
|
|
1613
|
+
"replace": "QUOTE (the words, which word is the key word, the line breaks), the author line, the closing note, TL timing and scoreSound()",
|
|
1614
|
+
"keep": "the warm black gradient, the drifting light leak, grain and vignette, the slow push-in, the word-by-word fade with a soft rise, the warm italic key word, the faint big quote mark and the tracked author line",
|
|
1615
|
+
"sizes": "keep the quote at 64 px or more and the author line at 22 px or more",
|
|
1616
|
+
"voLine": "Each word fades up as it is spoken, the key word turns warm on its stress, and the author line lands after the quote ends.",
|
|
1617
|
+
"full": "- Full mix (no voiceover): a slow, warm piano-like pad with long reverb, a soft swell on the key word, and a low note under the author line.",
|
|
1618
|
+
"voMix": "- Voiceover mix: the player calls SFX.live with { voiceover: true } once narration is loaded. Keep the pad very low.",
|
|
1619
|
+
"sheet": [
|
|
1620
|
+
"Background: warm near-black (#0d0b0a to #1f1410) with one soft orange light leak (#ff9a3c, screen-blended) that drifts slowly, plus heavy grain and a vignette.",
|
|
1621
|
+
"The whole frame pushes in about 6% over the clip; nothing else moves fast.",
|
|
1622
|
+
"The quote is set in Instrument Serif at a large size, left aligned, one phrase per line; each word fades up with a 14 px rise in reading rhythm.",
|
|
1623
|
+
"One key word in warm italic (#ffb36b). A short warm rule and the author in Inter 600 caps with wide tracking.",
|
|
1624
|
+
"Only quote people accurately with the real author; use \"proverb\" or \"attributed to\" when the source is uncertain.",
|
|
1625
|
+
"Pace: about 0.3 seconds per word, hold the full quote at least 2 seconds."
|
|
1626
|
+
],
|
|
1627
|
+
"sound": [
|
|
1628
|
+
"Music: a slow, warm pad of soft sine and triangle chords with long reverb, like a felt piano (SND.chord and k.voice).",
|
|
1629
|
+
"Map events to the kit: each new line gets a very soft pluck; the key word gets a gentle swell; the author line gets one low note; the closing note gets \"shimmer\" at low gain."
|
|
1630
|
+
],
|
|
1631
|
+
"sourceFile": "sources/quote-cinema.html",
|
|
1632
|
+
"promptFile": "prompts/quote-cinema.md",
|
|
1633
|
+
"sourceBytes": 55494,
|
|
1634
|
+
"prompt": "I want an animated video in the \"Quote Cinema\" style (Shorts Format) 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.\n\nMY CONTENT\n[No topic yet. Ask me for my topic or script before building anything.]\n\nBUILD DIRECTLY\nSkip the storyboard and build the full animation now. Afterwards, list any facts or numbers you assumed.\n\nWHAT TO BUILD\nOne self-contained HTML file (an artifact if you can), built on the reference file below:\n- 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.\n- Keep the canvas at 720x1280 (9:16, for Shorts, Reels and TikTok).\n- Replace the demo's story: QUOTE (the words, which word is the key word, the line breaks), the author line, the closing note, TL timing and scoreSound(). Keep and reuse the style's helpers (the warm black gradient, the drifting light leak, grain and vignette, the slow push-in, the word-by-word fade with a soft rise, the warm italic key word, the faint big quote mark and the tracked author line).\n- Aim for 15 to 40 seconds unless my content needs more, and set the duration in TL.D.\n- Keep window.seek(t), window.DURATION, window.scoreSound and window.SFX exposed, so the video can be rendered frame by frame.\n- Load the style's fonts before the first draw, as the reference does: Instrument Serif (regular and italic), Inter (600).\n\nTHE STYLE\n- Background: warm near-black (#0d0b0a to #1f1410) with one soft orange light leak (#ff9a3c, screen-blended) that drifts slowly, plus heavy grain and a vignette.\n- The whole frame pushes in about 6% over the clip; nothing else moves fast.\n- The quote is set in Instrument Serif at a large size, left aligned, one phrase per line; each word fades up with a 14 px rise in reading rhythm.\n- One key word in warm italic (#ffb36b). A short warm rule and the author in Inter 600 caps with wide tracking.\n- Only quote people accurately with the real author; use \"proverb\" or \"attributed to\" when the source is uncertain.\n- Pace: about 0.3 seconds per word, hold the full quote at least 2 seconds.\n\nRULES THAT KEEP IT IN STYLE\n- 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.\n- 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.\n- It will be watched on phones: at 720x1280 keep the quote at 64 px or more and the author line at 22 px or more. Fill the frame.\n- Keep each frame fast, well under 50 ms.\n- Give my topic its own demo content; do not reuse the reference's story (\"\"The best time to plant a tree was 20 years ago.\"\") unless my content asks for it.\n\nSOUND\n- Music: a slow, warm pad of soft sine and triangle chords with long reverb, like a felt piano (SND.chord and k.voice).\n- Map events to the kit: each new line gets a very soft pluck; the key word gets a gentle swell; the author line gets one low note; the closing note gets \"shimmer\" at low gain.\n- Full mix (no voiceover): a slow, warm piano-like pad with long reverb, a soft swell on the key word, and a low note under the author line.\n- Sync is everything: the sound score reads the same TL times as the picture.\n\nIF YOU CAN RUN CODE\nRender 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.\n\nSTYLE CARD\nName: Quote Cinema\nFamily: Shorts Format\nLook: A quiet cinematic quote card: deep warm black, a slow drifting light leak, heavy film grain and a slow push-in, with a quote that sets word by word in a large serif, one key word in warm italic, and a tracked author line.\nHow it explains: The frame breathes: the light leak drifts across, the camera pushes in slowly, and the quote fades up one word at a time in rhythm with the reading. The key word turns warm italic, the author line slides in, and a soft \"save this\" note closes it.\n",
|
|
1635
|
+
"promptVo": "I want an animated video in the \"Quote Cinema\" style (Shorts Format) 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.\n\nMY CONTENT\n[No topic yet. Ask me for my topic or script before building anything.]\n\nVOICEOVER TIMING\n[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.]\n\nHow to use the timing:\n- 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.\n- Set the duration to the last word's end plus about 1.2 seconds.\n- Build the timeline (TL) from these times. Each word fades up as it is spoken, the key word turns warm on its stress, and the author line lands after the quote ends.\n- 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.\n- Put the emphasis moves on stressed words. A counter lands at the exact moment its number is spoken.\n- Keep the player's \"Load voiceover\" button working so I can drop in my audio and hear it in sync.\n\nSTORYBOARD FIRST\nBefore building, show me a storyboard and wait for my OK:\n- 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.\n- 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.\n- Below the grid, list any facts or numbers you had to assume.\nWhen I approve it (or after my changes), build the full animation and reuse the storyboard's drawing code.\n\nWHAT TO BUILD\nOne self-contained HTML file (an artifact if you can), built on the reference file below:\n- 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.\n- Keep the canvas at 720x1280 (9:16, for Shorts, Reels and TikTok).\n- Replace the demo's story: QUOTE (the words, which word is the key word, the line breaks), the author line, the closing note, TL timing and scoreSound(). Keep and reuse the style's helpers (the warm black gradient, the drifting light leak, grain and vignette, the slow push-in, the word-by-word fade with a soft rise, the warm italic key word, the faint big quote mark and the tracked author line).\n- Aim for 15 to 40 seconds unless my content needs more, and set the duration in TL.D.\n- Keep window.seek(t), window.DURATION, window.scoreSound and window.SFX exposed, so the video can be rendered frame by frame.\n- Load the style's fonts before the first draw, as the reference does: Instrument Serif (regular and italic), Inter (600).\n\nTHE STYLE\n- Background: warm near-black (#0d0b0a to #1f1410) with one soft orange light leak (#ff9a3c, screen-blended) that drifts slowly, plus heavy grain and a vignette.\n- The whole frame pushes in about 6% over the clip; nothing else moves fast.\n- The quote is set in Instrument Serif at a large size, left aligned, one phrase per line; each word fades up with a 14 px rise in reading rhythm.\n- One key word in warm italic (#ffb36b). A short warm rule and the author in Inter 600 caps with wide tracking.\n- Only quote people accurately with the real author; use \"proverb\" or \"attributed to\" when the source is uncertain.\n- Pace: about 0.3 seconds per word, hold the full quote at least 2 seconds.\n\nRULES THAT KEEP IT IN STYLE\n- 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.\n- 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.\n- It will be watched on phones: at 720x1280 keep the quote at 64 px or more and the author line at 22 px or more. Fill the frame.\n- Keep each frame fast, well under 50 ms.\n- Give my topic its own demo content; do not reuse the reference's story (\"\"The best time to plant a tree was 20 years ago.\"\") unless my content asks for it.\n\nSOUND\n- Music: a slow, warm pad of soft sine and triangle chords with long reverb, like a felt piano (SND.chord and k.voice).\n- Map events to the kit: each new line gets a very soft pluck; the key word gets a gentle swell; the author line gets one low note; the closing note gets \"shimmer\" at low gain.\n- Voiceover mix: the player calls SFX.live with { voiceover: true } once narration is loaded. Keep the pad very low.\n- Sync is everything: the sound score reads the same TL times as the picture.\n\nIF YOU CAN RUN CODE\nRender 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.\n\nSTYLE CARD\nName: Quote Cinema\nFamily: Shorts Format\nLook: A quiet cinematic quote card: deep warm black, a slow drifting light leak, heavy film grain and a slow push-in, with a quote that sets word by word in a large serif, one key word in warm italic, and a tracked author line.\nHow it explains: The frame breathes: the light leak drifts across, the camera pushes in slowly, and the quote fades up one word at a time in rhythm with the reading. The key word turns warm italic, the author line slides in, and a soft \"save this\" note closes it.\n"
|
|
1636
|
+
},
|
|
1637
|
+
{
|
|
1638
|
+
"id": "breaking-desk",
|
|
1639
|
+
"num": "46",
|
|
1640
|
+
"name": "Breaking Desk",
|
|
1641
|
+
"family": "Shorts Format",
|
|
1642
|
+
"canvas": "720x1280",
|
|
1643
|
+
"tall": true,
|
|
1644
|
+
"lib": true,
|
|
1645
|
+
"footage": true,
|
|
1646
|
+
"look": "An invented news-desk package over your footage: a LIVE bug with a channel name, a red BREAKING tab, a white headline bar that types itself, a scrolling ticker, a map inset with a pulsing dot, and a clock.",
|
|
1647
|
+
"how": "The LIVE bug and clock pop in, the BREAKING tab slides in, the headline types out with a flash, the ticker scrolls under it, and a map inset shows where it happened. A second headline swaps in with a wipe for the follow-up, and a \"MORE AT 6\" style card closes.",
|
|
1648
|
+
"fonts": "Archivo Black, Inter (700 to 900), JetBrains Mono (600)",
|
|
1649
|
+
"demo": "Weekly AI news recap",
|
|
1650
|
+
"replace": "TL, the channel name (invented), HEADLINES, TICKER items, the map inset dot position, the closing card and scoreSound(); load your own footage with Load footage",
|
|
1651
|
+
"keep": "footage() under everything, the LIVE bug and clock, the BREAKING tab, the typing headline bar with a flash, the ticker, the map inset with a pulsing dot, the headline swap wipe and the colour rules",
|
|
1652
|
+
"sizes": "keep headlines at 40 px or more, the ticker at 22 px or more and the bug at 24 px or more",
|
|
1653
|
+
"voLine": "The BREAKING tab lands on the first word, the headline types while it is read, the map dot pulses on the place name, and the second headline swaps on \"and\" or \"also\".",
|
|
1654
|
+
"full": "- Full mix (no voiceover): a news sting (a brass-like chord with a timpani hit) at the start, a tension bed, a whoosh for each swap and soft ticks for typing.",
|
|
1655
|
+
"voMix": "- Voiceover mix: the player calls SFX.live with { voiceover: true } once narration is loaded. Keep the bed very low and mark ticks soft: true.",
|
|
1656
|
+
"sheet": [
|
|
1657
|
+
"Built for your footage: everything sits on top of footage(), which shows your clip when it is loaded and a stand-in presenter until then. Keep the presenter's face clear of graphics.",
|
|
1658
|
+
"Always an invented channel name and look; never imitate a real network's logo, colours or layout, and never present opinions as reported fact.",
|
|
1659
|
+
"Red (#e11d2e) for LIVE and BREAKING only; white bars with near-black text (#0b1220) for headlines; a dark ticker bar with white mono text.",
|
|
1660
|
+
"Headline bars type themselves at about 30 characters a second and flash white once complete.",
|
|
1661
|
+
"The map inset is a dark rounded card with simple continent blobs and a pulsing red dot.",
|
|
1662
|
+
"Pace: bug and tab in the first second, one headline every 4 to 5 seconds."
|
|
1663
|
+
],
|
|
1664
|
+
"sound": [
|
|
1665
|
+
"Bed: a tense news bed (a low pulsing synth with soft hats).",
|
|
1666
|
+
"Map events to the kit: open with a sting (a short brass-like sawtooth chord plus a timpani boom); the tab gets \"whoosh\"; typing gets soft ticks; the headline flash gets \"click\"; swaps get \"whoosh\" and \"glitch\" at low gain; the close gets a short sting."
|
|
1667
|
+
],
|
|
1668
|
+
"sourceFile": "sources/breaking-desk.html",
|
|
1669
|
+
"promptFile": "prompts/breaking-desk.md",
|
|
1670
|
+
"sourceBytes": 58545,
|
|
1671
|
+
"prompt": "I want an animated video in the \"Breaking Desk\" style (Shorts Format) 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.\n\nMY CONTENT\n[No topic yet. Ask me for my topic or script before building anything.]\n\nBUILD DIRECTLY\nSkip the storyboard and build the full animation now. Afterwards, list any facts or numbers you assumed.\n\nWHAT TO BUILD\nOne self-contained HTML file (an artifact if you can), built on the reference file below:\n- 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.\n- Keep the canvas at 720x1280 (9:16, for Shorts, Reels and TikTok).\n- 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.\n- Replace the demo's story: TL, the channel name (invented), HEADLINES, TICKER items, the map inset dot position, the closing card and scoreSound(); load your own footage with Load footage. Keep and reuse the style's helpers (footage() under everything, the LIVE bug and clock, the BREAKING tab, the typing headline bar with a flash, the ticker, the map inset with a pulsing dot, the headline swap wipe and the colour rules).\n- Aim for 15 to 40 seconds unless my content needs more, and set the duration in TL.D.\n- Keep window.seek(t), window.DURATION, window.scoreSound and window.SFX exposed, so the video can be rendered frame by frame.\n- Load the style's fonts before the first draw, as the reference does: Archivo Black, Inter (700 to 900), JetBrains Mono (600).\n\nTHE STYLE\n- Built for your footage: everything sits on top of footage(), which shows your clip when it is loaded and a stand-in presenter until then. Keep the presenter's face clear of graphics.\n- Always an invented channel name and look; never imitate a real network's logo, colours or layout, and never present opinions as reported fact.\n- Red (#e11d2e) for LIVE and BREAKING only; white bars with near-black text (#0b1220) for headlines; a dark ticker bar with white mono text.\n- Headline bars type themselves at about 30 characters a second and flash white once complete.\n- The map inset is a dark rounded card with simple continent blobs and a pulsing red dot.\n- Pace: bug and tab in the first second, one headline every 4 to 5 seconds.\n\nRULES THAT KEEP IT IN STYLE\n- 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.\n- 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.\n- It will be watched on phones: at 720x1280 keep headlines at 40 px or more, the ticker at 22 px or more and the bug at 24 px or more. Fill the frame.\n- Keep each frame fast, well under 50 ms.\n- Give my topic its own demo content; do not reuse the reference's story (\"Weekly AI news recap\") unless my content asks for it.\n\nSOUND\n- Bed: a tense news bed (a low pulsing synth with soft hats).\n- Map events to the kit: open with a sting (a short brass-like sawtooth chord plus a timpani boom); the tab gets \"whoosh\"; typing gets soft ticks; the headline flash gets \"click\"; swaps get \"whoosh\" and \"glitch\" at low gain; the close gets a short sting.\n- Full mix (no voiceover): a news sting (a brass-like chord with a timpani hit) at the start, a tension bed, a whoosh for each swap and soft ticks for typing.\n- Sync is everything: the sound score reads the same TL times as the picture.\n\nIF YOU CAN RUN CODE\nRender 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.\n\nSTYLE CARD\nName: Breaking Desk\nFamily: Shorts Format\nLook: An invented news-desk package over your footage: a LIVE bug with a channel name, a red BREAKING tab, a white headline bar that types itself, a scrolling ticker, a map inset with a pulsing dot, and a clock.\nHow it explains: The LIVE bug and clock pop in, the BREAKING tab slides in, the headline types out with a flash, the ticker scrolls under it, and a map inset shows where it happened. A second headline swaps in with a wipe for the follow-up, and a \"MORE AT 6\" style card closes.\n",
|
|
1672
|
+
"promptVo": "I want an animated video in the \"Breaking Desk\" style (Shorts Format) 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.\n\nMY CONTENT\n[No topic yet. Ask me for my topic or script before building anything.]\n\nVOICEOVER TIMING\n[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.]\n\nHow to use the timing:\n- 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.\n- Set the duration to the last word's end plus about 1.2 seconds.\n- Build the timeline (TL) from these times. The BREAKING tab lands on the first word, the headline types while it is read, the map dot pulses on the place name, and the second headline swaps on \"and\" or \"also\".\n- 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.\n- Put the emphasis moves on stressed words. A counter lands at the exact moment its number is spoken.\n- Keep the player's \"Load voiceover\" button working so I can drop in my audio and hear it in sync.\n\nSTORYBOARD FIRST\nBefore building, show me a storyboard and wait for my OK:\n- 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.\n- 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.\n- Below the grid, list any facts or numbers you had to assume.\nWhen I approve it (or after my changes), build the full animation and reuse the storyboard's drawing code.\n\nWHAT TO BUILD\nOne self-contained HTML file (an artifact if you can), built on the reference file below:\n- 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.\n- Keep the canvas at 720x1280 (9:16, for Shorts, Reels and TikTok).\n- 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.\n- Replace the demo's story: TL, the channel name (invented), HEADLINES, TICKER items, the map inset dot position, the closing card and scoreSound(); load your own footage with Load footage. Keep and reuse the style's helpers (footage() under everything, the LIVE bug and clock, the BREAKING tab, the typing headline bar with a flash, the ticker, the map inset with a pulsing dot, the headline swap wipe and the colour rules).\n- Aim for 15 to 40 seconds unless my content needs more, and set the duration in TL.D.\n- Keep window.seek(t), window.DURATION, window.scoreSound and window.SFX exposed, so the video can be rendered frame by frame.\n- Load the style's fonts before the first draw, as the reference does: Archivo Black, Inter (700 to 900), JetBrains Mono (600).\n\nTHE STYLE\n- Built for your footage: everything sits on top of footage(), which shows your clip when it is loaded and a stand-in presenter until then. Keep the presenter's face clear of graphics.\n- Always an invented channel name and look; never imitate a real network's logo, colours or layout, and never present opinions as reported fact.\n- Red (#e11d2e) for LIVE and BREAKING only; white bars with near-black text (#0b1220) for headlines; a dark ticker bar with white mono text.\n- Headline bars type themselves at about 30 characters a second and flash white once complete.\n- The map inset is a dark rounded card with simple continent blobs and a pulsing red dot.\n- Pace: bug and tab in the first second, one headline every 4 to 5 seconds.\n\nRULES THAT KEEP IT IN STYLE\n- 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.\n- 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.\n- It will be watched on phones: at 720x1280 keep headlines at 40 px or more, the ticker at 22 px or more and the bug at 24 px or more. Fill the frame.\n- Keep each frame fast, well under 50 ms.\n- Give my topic its own demo content; do not reuse the reference's story (\"Weekly AI news recap\") unless my content asks for it.\n\nSOUND\n- Bed: a tense news bed (a low pulsing synth with soft hats).\n- Map events to the kit: open with a sting (a short brass-like sawtooth chord plus a timpani boom); the tab gets \"whoosh\"; typing gets soft ticks; the headline flash gets \"click\"; swaps get \"whoosh\" and \"glitch\" at low gain; the close gets a short sting.\n- Voiceover mix: the player calls SFX.live with { voiceover: true } once narration is loaded. Keep the bed very low and mark ticks soft: true.\n- Sync is everything: the sound score reads the same TL times as the picture.\n\nIF YOU CAN RUN CODE\nRender 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.\n\nSTYLE CARD\nName: Breaking Desk\nFamily: Shorts Format\nLook: An invented news-desk package over your footage: a LIVE bug with a channel name, a red BREAKING tab, a white headline bar that types itself, a scrolling ticker, a map inset with a pulsing dot, and a clock.\nHow it explains: The LIVE bug and clock pop in, the BREAKING tab slides in, the headline types out with a flash, the ticker scrolls under it, and a map inset shows where it happened. A second headline swaps in with a wipe for the follow-up, and a \"MORE AT 6\" style card closes.\n"
|
|
1673
|
+
},
|
|
1674
|
+
{
|
|
1675
|
+
"id": "podcast-clip",
|
|
1676
|
+
"num": "47",
|
|
1677
|
+
"name": "Podcast Clip",
|
|
1678
|
+
"family": "Shorts Format",
|
|
1679
|
+
"canvas": "720x1280",
|
|
1680
|
+
"tall": true,
|
|
1681
|
+
"lib": true,
|
|
1682
|
+
"footage": true,
|
|
1683
|
+
"look": "A vertical podcast clip: two stacked rounded speaker panels on black (host on top, guest below), a green ring on whoever is talking, bold captions in the seam with the key words in yellow, an episode tag and a live waveform at the bottom.",
|
|
1684
|
+
"how": "Captions appear two to four words at a time in the seam between the panels, the active-speaker ring jumps to whoever is talking with a slight zoom on their panel, the waveform reacts to the speech, and a progress line runs along the bottom so viewers know how long is left.",
|
|
1685
|
+
"fonts": "Inter (800 and 900), JetBrains Mono (800)",
|
|
1686
|
+
"demo": "A clip from an invented show, \"The Side Project Show\"",
|
|
1687
|
+
"replace": "TL, LINES (speaker, words with times, which words are yellow), the show name and episode, and scoreSound(); load your recording with Load footage (it fills both panels, cropped)",
|
|
1688
|
+
"keep": "footage() in two rounded panels with a slight zoom on the active speaker, the green active ring, the seam captions with yellow key words and a thick black outline, the episode tag, the reactive waveform and the progress line",
|
|
1689
|
+
"sizes": "keep captions at 44 px or more, name tags at 20 px or more and the episode tag at 22 px or more",
|
|
1690
|
+
"voLine": "Each caption group appears on its first spoken word, yellow words land on their stress, and the active ring switches on the first word of each speaker.",
|
|
1691
|
+
"full": "- Full mix (no voiceover): a low lo-fi bed, a soft pop for each caption group and a tiny tick when the speaker changes; the real audio is your recording.",
|
|
1692
|
+
"voMix": "- Voiceover mix: the player calls SFX.live with { voiceover: true } once narration is loaded. Keep everything soft: the voices carry the clip.",
|
|
1693
|
+
"sheet": [
|
|
1694
|
+
"Built for your footage: both panels use footage() (your recording when loaded, cropped and zoomed differently per speaker; a stand-in until then). Keep faces clear of captions.",
|
|
1695
|
+
"Black background (#0b0b0d); panels have 26 px corners; the active panel gets a 5 px green ring (#36d67b) and a 4% zoom.",
|
|
1696
|
+
"Captions: Inter 900 white with a thick black stroke, 2 to 4 words at a time, key words in yellow (#ffd43b) and slightly bigger, popping in on their word.",
|
|
1697
|
+
"Small black-glass name tags in the panel corners, an episode tag in green top left, the show name in white caps.",
|
|
1698
|
+
"A waveform of rounded bars at the bottom reacts to who is talking, and a thin progress line runs across the bottom.",
|
|
1699
|
+
"Pace: caption groups change every 0.6 to 1.2 seconds, following the speech exactly."
|
|
1700
|
+
],
|
|
1701
|
+
"sound": [
|
|
1702
|
+
"Bed: a very low lo-fi pad so the voices sit on top.",
|
|
1703
|
+
"Map events to the kit: caption groups get a very soft \"pop\"; speaker changes get a soft tick; the end card gets a short chime."
|
|
1704
|
+
],
|
|
1705
|
+
"sourceFile": "sources/podcast-clip.html",
|
|
1706
|
+
"promptFile": "prompts/podcast-clip.md",
|
|
1707
|
+
"sourceBytes": 56863,
|
|
1708
|
+
"prompt": "I want an animated video in the \"Podcast Clip\" style (Shorts Format) 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.\n\nMY CONTENT\n[No topic yet. Ask me for my topic or script before building anything.]\n\nBUILD DIRECTLY\nSkip the storyboard and build the full animation now. Afterwards, list any facts or numbers you assumed.\n\nWHAT TO BUILD\nOne self-contained HTML file (an artifact if you can), built on the reference file below:\n- 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.\n- Keep the canvas at 720x1280 (9:16, for Shorts, Reels and TikTok).\n- 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.\n- Replace the demo's story: TL, LINES (speaker, words with times, which words are yellow), the show name and episode, and scoreSound(); load your recording with Load footage (it fills both panels, cropped). Keep and reuse the style's helpers (footage() in two rounded panels with a slight zoom on the active speaker, the green active ring, the seam captions with yellow key words and a thick black outline, the episode tag, the reactive waveform and the progress line).\n- Aim for 15 to 40 seconds unless my content needs more, and set the duration in TL.D.\n- Keep window.seek(t), window.DURATION, window.scoreSound and window.SFX exposed, so the video can be rendered frame by frame.\n- Load the style's fonts before the first draw, as the reference does: Inter (800 and 900), JetBrains Mono (800).\n\nTHE STYLE\n- Built for your footage: both panels use footage() (your recording when loaded, cropped and zoomed differently per speaker; a stand-in until then). Keep faces clear of captions.\n- Black background (#0b0b0d); panels have 26 px corners; the active panel gets a 5 px green ring (#36d67b) and a 4% zoom.\n- Captions: Inter 900 white with a thick black stroke, 2 to 4 words at a time, key words in yellow (#ffd43b) and slightly bigger, popping in on their word.\n- Small black-glass name tags in the panel corners, an episode tag in green top left, the show name in white caps.\n- A waveform of rounded bars at the bottom reacts to who is talking, and a thin progress line runs across the bottom.\n- Pace: caption groups change every 0.6 to 1.2 seconds, following the speech exactly.\n\nRULES THAT KEEP IT IN STYLE\n- 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.\n- 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.\n- It will be watched on phones: at 720x1280 keep captions at 44 px or more, name tags at 20 px or more and the episode tag at 22 px or more. Fill the frame.\n- Keep each frame fast, well under 50 ms.\n- Give my topic its own demo content; do not reuse the reference's story (\"A clip from an invented show, \"The Side Project Show\"\") unless my content asks for it.\n\nSOUND\n- Bed: a very low lo-fi pad so the voices sit on top.\n- Map events to the kit: caption groups get a very soft \"pop\"; speaker changes get a soft tick; the end card gets a short chime.\n- Full mix (no voiceover): a low lo-fi bed, a soft pop for each caption group and a tiny tick when the speaker changes; the real audio is your recording.\n- Sync is everything: the sound score reads the same TL times as the picture.\n\nIF YOU CAN RUN CODE\nRender 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.\n\nSTYLE CARD\nName: Podcast Clip\nFamily: Shorts Format\nLook: A vertical podcast clip: two stacked rounded speaker panels on black (host on top, guest below), a green ring on whoever is talking, bold captions in the seam with the key words in yellow, an episode tag and a live waveform at the bottom.\nHow it explains: Captions appear two to four words at a time in the seam between the panels, the active-speaker ring jumps to whoever is talking with a slight zoom on their panel, the waveform reacts to the speech, and a progress line runs along the bottom so viewers know how long is left.\n",
|
|
1709
|
+
"promptVo": "I want an animated video in the \"Podcast Clip\" style (Shorts Format) 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.\n\nMY CONTENT\n[No topic yet. Ask me for my topic or script before building anything.]\n\nVOICEOVER TIMING\n[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.]\n\nHow to use the timing:\n- 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.\n- Set the duration to the last word's end plus about 1.2 seconds.\n- Build the timeline (TL) from these times. Each caption group appears on its first spoken word, yellow words land on their stress, and the active ring switches on the first word of each speaker.\n- 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.\n- Put the emphasis moves on stressed words. A counter lands at the exact moment its number is spoken.\n- Keep the player's \"Load voiceover\" button working so I can drop in my audio and hear it in sync.\n\nSTORYBOARD FIRST\nBefore building, show me a storyboard and wait for my OK:\n- 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.\n- 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.\n- Below the grid, list any facts or numbers you had to assume.\nWhen I approve it (or after my changes), build the full animation and reuse the storyboard's drawing code.\n\nWHAT TO BUILD\nOne self-contained HTML file (an artifact if you can), built on the reference file below:\n- 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.\n- Keep the canvas at 720x1280 (9:16, for Shorts, Reels and TikTok).\n- 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.\n- Replace the demo's story: TL, LINES (speaker, words with times, which words are yellow), the show name and episode, and scoreSound(); load your recording with Load footage (it fills both panels, cropped). Keep and reuse the style's helpers (footage() in two rounded panels with a slight zoom on the active speaker, the green active ring, the seam captions with yellow key words and a thick black outline, the episode tag, the reactive waveform and the progress line).\n- Aim for 15 to 40 seconds unless my content needs more, and set the duration in TL.D.\n- Keep window.seek(t), window.DURATION, window.scoreSound and window.SFX exposed, so the video can be rendered frame by frame.\n- Load the style's fonts before the first draw, as the reference does: Inter (800 and 900), JetBrains Mono (800).\n\nTHE STYLE\n- Built for your footage: both panels use footage() (your recording when loaded, cropped and zoomed differently per speaker; a stand-in until then). Keep faces clear of captions.\n- Black background (#0b0b0d); panels have 26 px corners; the active panel gets a 5 px green ring (#36d67b) and a 4% zoom.\n- Captions: Inter 900 white with a thick black stroke, 2 to 4 words at a time, key words in yellow (#ffd43b) and slightly bigger, popping in on their word.\n- Small black-glass name tags in the panel corners, an episode tag in green top left, the show name in white caps.\n- A waveform of rounded bars at the bottom reacts to who is talking, and a thin progress line runs across the bottom.\n- Pace: caption groups change every 0.6 to 1.2 seconds, following the speech exactly.\n\nRULES THAT KEEP IT IN STYLE\n- 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.\n- 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.\n- It will be watched on phones: at 720x1280 keep captions at 44 px or more, name tags at 20 px or more and the episode tag at 22 px or more. Fill the frame.\n- Keep each frame fast, well under 50 ms.\n- Give my topic its own demo content; do not reuse the reference's story (\"A clip from an invented show, \"The Side Project Show\"\") unless my content asks for it.\n\nSOUND\n- Bed: a very low lo-fi pad so the voices sit on top.\n- Map events to the kit: caption groups get a very soft \"pop\"; speaker changes get a soft tick; the end card gets a short chime.\n- Voiceover mix: the player calls SFX.live with { voiceover: true } once narration is loaded. Keep everything soft: the voices carry the clip.\n- Sync is everything: the sound score reads the same TL times as the picture.\n\nIF YOU CAN RUN CODE\nRender 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.\n\nSTYLE CARD\nName: Podcast Clip\nFamily: Shorts Format\nLook: A vertical podcast clip: two stacked rounded speaker panels on black (host on top, guest below), a green ring on whoever is talking, bold captions in the seam with the key words in yellow, an episode tag and a live waveform at the bottom.\nHow it explains: Captions appear two to four words at a time in the seam between the panels, the active-speaker ring jumps to whoever is talking with a slight zoom on their panel, the waveform reacts to the speech, and a progress line runs along the bottom so viewers know how long is left.\n"
|
|
1710
|
+
},
|
|
1711
|
+
{
|
|
1712
|
+
"id": "punch-captions",
|
|
1713
|
+
"num": "48",
|
|
1714
|
+
"name": "Punch Captions",
|
|
1715
|
+
"family": "Edit Overlay",
|
|
1716
|
+
"canvas": "720x1280",
|
|
1717
|
+
"tall": true,
|
|
1718
|
+
"lib": true,
|
|
1719
|
+
"footage": true,
|
|
1720
|
+
"look": "High-retention captions over your talking-head clip: one to three words at a time in huge white Anton with a thick black outline, the key word swapped to yellow and tilted, little sticker pops (bolts, sparks, arrows) drawn in code, and punch-in zooms on the hits.",
|
|
1721
|
+
"how": "Captions follow the speech in tiny chunks, each word slamming in with a scale and blur; the stressed word turns yellow and bigger with a punch zoom on the footage, and a small code-drawn sticker pops beside it. A handle sits quietly at the bottom.",
|
|
1722
|
+
"fonts": "Anton, Inter (800)",
|
|
1723
|
+
"demo": "A talking-head hook: \"This one habit changed everything\"",
|
|
1724
|
+
"replace": "TL and CAPS (chunks of words with their times, which word is the key word, which sticker pops), PUNCHES (zoom hits), the handle and scoreSound(); load your clip with Load footage and paste word timings for the captions",
|
|
1725
|
+
"keep": "footage() with punch zooms, the chunked Anton captions with thick outline and slam-in, the yellow tilted key word, the sticker painters (bolt, spark, arrow, star), the safe-zone layout and the handle chip",
|
|
1726
|
+
"sizes": "keep caption words at 76 px or more, key words at 96 px or more and keep captions inside the middle 60% of the height",
|
|
1727
|
+
"voLine": "Every caption word slams in at the start of its spoken word, within 0.03 s; the key word lands on its stressed syllable with the punch zoom; stickers pop 0.1 s after the key word.",
|
|
1728
|
+
"full": "- Full mix (no voiceover): soft whooshes and pops so the clip still feels edited; with your own audio, keep only small pops and the punch \"slam\" at low gain.",
|
|
1729
|
+
"voMix": "- Voiceover mix: the player calls SFX.live with { voiceover: true } once narration is loaded. Mark every caption sound soft: true and keep the slams at half gain.",
|
|
1730
|
+
"sheet": [
|
|
1731
|
+
"Built for your footage: footage() fills the frame (your clip when loaded, a stand-in until then). Captions sit in the middle band, never over the eyes, and stay inside phone safe zones.",
|
|
1732
|
+
"Captions: Anton, white, all caps, a black outline about 12% of the size, 1 to 3 words per chunk, centred; each word slams in (scale 1.6 to 1, quick blur).",
|
|
1733
|
+
"The key word of each chunk: yellow (#ffe14d), 25% bigger and tilted a few degrees, with a punch zoom (4 to 8%) on the footage at the same moment.",
|
|
1734
|
+
"Stickers are drawn in code (bolt, spark burst, arrow, star) in yellow or white with a black outline; never emoji images or brand stickers.",
|
|
1735
|
+
"Never caption the whole transcript at once: chunks of 1 to 3 words only."
|
|
1736
|
+
],
|
|
1737
|
+
"sound": [
|
|
1738
|
+
"Bed: none (your audio leads). Effects only.",
|
|
1739
|
+
"Map events to the kit: each chunk gets a soft \"pop\"; key words get \"slam\" at low gain with the punch zoom; stickers get \"sparkle\" or SND.bloop; chunk changes with a cut get a short \"whoosh\"."
|
|
1740
|
+
],
|
|
1741
|
+
"sourceFile": "sources/punch-captions.html",
|
|
1742
|
+
"promptFile": "prompts/punch-captions.md",
|
|
1743
|
+
"sourceBytes": 56708,
|
|
1744
|
+
"prompt": "I want an animated video in the \"Punch Captions\" 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.\n\nMY CONTENT\n[No topic yet. Ask me for my topic or script before building anything.]\n\nBUILD DIRECTLY\nSkip the storyboard and build the full animation now. Afterwards, list any facts or numbers you assumed.\n\nWHAT TO BUILD\nOne self-contained HTML file (an artifact if you can), built on the reference file below:\n- 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.\n- Keep the canvas at 720x1280 (9:16, for Shorts, Reels and TikTok).\n- 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.\n- Replace the demo's story: TL and CAPS (chunks of words with their times, which word is the key word, which sticker pops), PUNCHES (zoom hits), the handle and scoreSound(); load your clip with Load footage and paste word timings for the captions. Keep and reuse the style's helpers (footage() with punch zooms, the chunked Anton captions with thick outline and slam-in, the yellow tilted key word, the sticker painters (bolt, spark, arrow, star), the safe-zone layout and the handle chip).\n- Aim for 15 to 40 seconds unless my content needs more, and set the duration in TL.D.\n- Keep window.seek(t), window.DURATION, window.scoreSound and window.SFX exposed, so the video can be rendered frame by frame.\n- Load the style's fonts before the first draw, as the reference does: Anton, Inter (800).\n\nTHE STYLE\n- Built for your footage: footage() fills the frame (your clip when loaded, a stand-in until then). Captions sit in the middle band, never over the eyes, and stay inside phone safe zones.\n- Captions: Anton, white, all caps, a black outline about 12% of the size, 1 to 3 words per chunk, centred; each word slams in (scale 1.6 to 1, quick blur).\n- The key word of each chunk: yellow (#ffe14d), 25% bigger and tilted a few degrees, with a punch zoom (4 to 8%) on the footage at the same moment.\n- Stickers are drawn in code (bolt, spark burst, arrow, star) in yellow or white with a black outline; never emoji images or brand stickers.\n- Never caption the whole transcript at once: chunks of 1 to 3 words only.\n\nRULES THAT KEEP IT IN STYLE\n- 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.\n- 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.\n- It will be watched on phones: at 720x1280 keep caption words at 76 px or more, key words at 96 px or more and keep captions inside the middle 60% of the height. Fill the frame.\n- Keep each frame fast, well under 50 ms.\n- Give my topic its own demo content; do not reuse the reference's story (\"A talking-head hook: \"This one habit changed everything\"\") unless my content asks for it.\n\nSOUND\n- Bed: none (your audio leads). Effects only.\n- Map events to the kit: each chunk gets a soft \"pop\"; key words get \"slam\" at low gain with the punch zoom; stickers get \"sparkle\" or SND.bloop; chunk changes with a cut get a short \"whoosh\".\n- Full mix (no voiceover): soft whooshes and pops so the clip still feels edited; with your own audio, keep only small pops and the punch \"slam\" at low gain.\n- Sync is everything: the sound score reads the same TL times as the picture.\n\nIF YOU CAN RUN CODE\nRender 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.\n\nSTYLE CARD\nName: Punch Captions\nFamily: Edit Overlay\nLook: High-retention captions over your talking-head clip: one to three words at a time in huge white Anton with a thick black outline, the key word swapped to yellow and tilted, little sticker pops (bolts, sparks, arrows) drawn in code, and punch-in zooms on the hits.\nHow it explains: Captions follow the speech in tiny chunks, each word slamming in with a scale and blur; the stressed word turns yellow and bigger with a punch zoom on the footage, and a small code-drawn sticker pops beside it. A handle sits quietly at the bottom.\n",
|
|
1745
|
+
"promptVo": "I want an animated video in the \"Punch Captions\" 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.\n\nMY CONTENT\n[No topic yet. Ask me for my topic or script before building anything.]\n\nVOICEOVER TIMING\n[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.]\n\nHow to use the timing:\n- 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.\n- Set the duration to the last word's end plus about 1.2 seconds.\n- Build the timeline (TL) from these times. Every caption word slams in at the start of its spoken word, within 0.03 s; the key word lands on its stressed syllable with the punch zoom; stickers pop 0.1 s after the key word.\n- 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.\n- Put the emphasis moves on stressed words. A counter lands at the exact moment its number is spoken.\n- Keep the player's \"Load voiceover\" button working so I can drop in my audio and hear it in sync.\n\nSTORYBOARD FIRST\nBefore building, show me a storyboard and wait for my OK:\n- 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.\n- 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.\n- Below the grid, list any facts or numbers you had to assume.\nWhen I approve it (or after my changes), build the full animation and reuse the storyboard's drawing code.\n\nWHAT TO BUILD\nOne self-contained HTML file (an artifact if you can), built on the reference file below:\n- 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.\n- Keep the canvas at 720x1280 (9:16, for Shorts, Reels and TikTok).\n- 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.\n- Replace the demo's story: TL and CAPS (chunks of words with their times, which word is the key word, which sticker pops), PUNCHES (zoom hits), the handle and scoreSound(); load your clip with Load footage and paste word timings for the captions. Keep and reuse the style's helpers (footage() with punch zooms, the chunked Anton captions with thick outline and slam-in, the yellow tilted key word, the sticker painters (bolt, spark, arrow, star), the safe-zone layout and the handle chip).\n- Aim for 15 to 40 seconds unless my content needs more, and set the duration in TL.D.\n- Keep window.seek(t), window.DURATION, window.scoreSound and window.SFX exposed, so the video can be rendered frame by frame.\n- Load the style's fonts before the first draw, as the reference does: Anton, Inter (800).\n\nTHE STYLE\n- Built for your footage: footage() fills the frame (your clip when loaded, a stand-in until then). Captions sit in the middle band, never over the eyes, and stay inside phone safe zones.\n- Captions: Anton, white, all caps, a black outline about 12% of the size, 1 to 3 words per chunk, centred; each word slams in (scale 1.6 to 1, quick blur).\n- The key word of each chunk: yellow (#ffe14d), 25% bigger and tilted a few degrees, with a punch zoom (4 to 8%) on the footage at the same moment.\n- Stickers are drawn in code (bolt, spark burst, arrow, star) in yellow or white with a black outline; never emoji images or brand stickers.\n- Never caption the whole transcript at once: chunks of 1 to 3 words only.\n\nRULES THAT KEEP IT IN STYLE\n- 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.\n- 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.\n- It will be watched on phones: at 720x1280 keep caption words at 76 px or more, key words at 96 px or more and keep captions inside the middle 60% of the height. Fill the frame.\n- Keep each frame fast, well under 50 ms.\n- Give my topic its own demo content; do not reuse the reference's story (\"A talking-head hook: \"This one habit changed everything\"\") unless my content asks for it.\n\nSOUND\n- Bed: none (your audio leads). Effects only.\n- Map events to the kit: each chunk gets a soft \"pop\"; key words get \"slam\" at low gain with the punch zoom; stickers get \"sparkle\" or SND.bloop; chunk changes with a cut get a short \"whoosh\".\n- Voiceover mix: the player calls SFX.live with { voiceover: true } once narration is loaded. Mark every caption sound soft: true and keep the slams at half gain.\n- Sync is everything: the sound score reads the same TL times as the picture.\n\nIF YOU CAN RUN CODE\nRender 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.\n\nSTYLE CARD\nName: Punch Captions\nFamily: Edit Overlay\nLook: High-retention captions over your talking-head clip: one to three words at a time in huge white Anton with a thick black outline, the key word swapped to yellow and tilted, little sticker pops (bolts, sparks, arrows) drawn in code, and punch-in zooms on the hits.\nHow it explains: Captions follow the speech in tiny chunks, each word slamming in with a scale and blur; the stressed word turns yellow and bigger with a punch zoom on the footage, and a small code-drawn sticker pops beside it. A handle sits quietly at the bottom.\n"
|
|
1746
|
+
},
|
|
1747
|
+
{
|
|
1748
|
+
"id": "karaoke-subs",
|
|
1749
|
+
"num": "49",
|
|
1750
|
+
"name": "Karaoke Subs",
|
|
1751
|
+
"family": "Edit Overlay",
|
|
1752
|
+
"canvas": "720x1280",
|
|
1753
|
+
"tall": true,
|
|
1754
|
+
"lib": true,
|
|
1755
|
+
"footage": true,
|
|
1756
|
+
"look": "Clean, readable subtitles for any talking video: a rounded dark glass box in the lower third holding two lines, where the word being spoken sits on a bright green pill, spoken words stay white and upcoming words wait at half opacity.",
|
|
1757
|
+
"how": "The subtitle box shows one phrase (up to two lines) at a time; the green pill glides from word to word exactly as each is spoken, and the box swaps to the next phrase with a soft fade and lift. Nothing else moves, so it suits any edit.",
|
|
1758
|
+
"fonts": "Inter (800)",
|
|
1759
|
+
"demo": "A morning-routine talking clip",
|
|
1760
|
+
"replace": "PHRASES (each phrase as words with start times, from your word-level SRT) and the pill colour; load your clip with Load footage",
|
|
1761
|
+
"keep": "footage(), the rounded glass box with blur-look fill, two-line layout with automatic wrapping, the gliding highlight pill (it slides between word boxes), spoken/upcoming opacities and the phrase swap",
|
|
1762
|
+
"sizes": "keep subtitle words at 40 px or more, never more than two lines, and keep the box above the bottom 15% (phone UI)",
|
|
1763
|
+
"voLine": "The pill reaches each word at its start time from the SRT, within 0.03 s; a new phrase appears 0.1 s before its first word.",
|
|
1764
|
+
"full": "- Full mix (no voiceover): none needed; the clip's own audio is the soundtrack. A very faint tick per phrase is optional.",
|
|
1765
|
+
"voMix": "- Voiceover mix: the player calls SFX.live with { voiceover: true } once narration is loaded. Keep everything silent or near-silent.",
|
|
1766
|
+
"sheet": [
|
|
1767
|
+
"Built for your footage and your word timings: paste a word-level SRT and every word gets its own start time.",
|
|
1768
|
+
"The box: dark glass (#0e1014 at 74%), 22 px corners, centred in the lower third, sized to its text with 28 px padding.",
|
|
1769
|
+
"Words: Inter 800 at 40 px or more. Spoken words white, upcoming words white at 45%, the current word dark (#0b1a10) on a green pill (#3ddc84) that slides and resizes between words with a quick ease.",
|
|
1770
|
+
"One phrase at a time, at most two lines of about 22 characters; phrases swap with a 0.2 s fade and a 10 px lift.",
|
|
1771
|
+
"Accessibility first: high contrast, no effects that hurt readability, exact timing."
|
|
1772
|
+
],
|
|
1773
|
+
"sound": [
|
|
1774
|
+
"No music: the clip's own audio leads.",
|
|
1775
|
+
"Optional: a barely audible \"tick\" at the start of each phrase; nothing on individual words."
|
|
1776
|
+
],
|
|
1777
|
+
"sourceFile": "sources/karaoke-subs.html",
|
|
1778
|
+
"promptFile": "prompts/karaoke-subs.md",
|
|
1779
|
+
"sourceBytes": 55300,
|
|
1780
|
+
"prompt": "I want an animated video in the \"Karaoke Subs\" 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.\n\nMY CONTENT\n[No topic yet. Ask me for my topic or script before building anything.]\n\nBUILD DIRECTLY\nSkip the storyboard and build the full animation now. Afterwards, list any facts or numbers you assumed.\n\nWHAT TO BUILD\nOne self-contained HTML file (an artifact if you can), built on the reference file below:\n- 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.\n- Keep the canvas at 720x1280 (9:16, for Shorts, Reels and TikTok).\n- 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.\n- Replace the demo's story: PHRASES (each phrase as words with start times, from your word-level SRT) and the pill colour; load your clip with Load footage. Keep and reuse the style's helpers (footage(), the rounded glass box with blur-look fill, two-line layout with automatic wrapping, the gliding highlight pill (it slides between word boxes), spoken/upcoming opacities and the phrase swap).\n- Aim for 15 to 40 seconds unless my content needs more, and set the duration in TL.D.\n- Keep window.seek(t), window.DURATION, window.scoreSound and window.SFX exposed, so the video can be rendered frame by frame.\n- Load the style's fonts before the first draw, as the reference does: Inter (800).\n\nTHE STYLE\n- Built for your footage and your word timings: paste a word-level SRT and every word gets its own start time.\n- The box: dark glass (#0e1014 at 74%), 22 px corners, centred in the lower third, sized to its text with 28 px padding.\n- Words: Inter 800 at 40 px or more. Spoken words white, upcoming words white at 45%, the current word dark (#0b1a10) on a green pill (#3ddc84) that slides and resizes between words with a quick ease.\n- One phrase at a time, at most two lines of about 22 characters; phrases swap with a 0.2 s fade and a 10 px lift.\n- Accessibility first: high contrast, no effects that hurt readability, exact timing.\n\nRULES THAT KEEP IT IN STYLE\n- 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.\n- 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.\n- It will be watched on phones: at 720x1280 keep subtitle words at 40 px or more, never more than two lines, and keep the box above the bottom 15% (phone UI). Fill the frame.\n- Keep each frame fast, well under 50 ms.\n- Give my topic its own demo content; do not reuse the reference's story (\"A morning-routine talking clip\") unless my content asks for it.\n\nSOUND\n- No music: the clip's own audio leads.\n- Optional: a barely audible \"tick\" at the start of each phrase; nothing on individual words.\n- Full mix (no voiceover): none needed; the clip's own audio is the soundtrack. A very faint tick per phrase is optional.\n- Sync is everything: the sound score reads the same TL times as the picture.\n\nIF YOU CAN RUN CODE\nRender 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.\n\nSTYLE CARD\nName: Karaoke Subs\nFamily: Edit Overlay\nLook: Clean, readable subtitles for any talking video: a rounded dark glass box in the lower third holding two lines, where the word being spoken sits on a bright green pill, spoken words stay white and upcoming words wait at half opacity.\nHow it explains: The subtitle box shows one phrase (up to two lines) at a time; the green pill glides from word to word exactly as each is spoken, and the box swaps to the next phrase with a soft fade and lift. Nothing else moves, so it suits any edit.\n",
|
|
1781
|
+
"promptVo": "I want an animated video in the \"Karaoke Subs\" 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.\n\nMY CONTENT\n[No topic yet. Ask me for my topic or script before building anything.]\n\nVOICEOVER TIMING\n[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.]\n\nHow to use the timing:\n- 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.\n- Set the duration to the last word's end plus about 1.2 seconds.\n- Build the timeline (TL) from these times. The pill reaches each word at its start time from the SRT, within 0.03 s; a new phrase appears 0.1 s before its first word.\n- 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.\n- Put the emphasis moves on stressed words. A counter lands at the exact moment its number is spoken.\n- Keep the player's \"Load voiceover\" button working so I can drop in my audio and hear it in sync.\n\nSTORYBOARD FIRST\nBefore building, show me a storyboard and wait for my OK:\n- 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.\n- 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.\n- Below the grid, list any facts or numbers you had to assume.\nWhen I approve it (or after my changes), build the full animation and reuse the storyboard's drawing code.\n\nWHAT TO BUILD\nOne self-contained HTML file (an artifact if you can), built on the reference file below:\n- 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.\n- Keep the canvas at 720x1280 (9:16, for Shorts, Reels and TikTok).\n- 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.\n- Replace the demo's story: PHRASES (each phrase as words with start times, from your word-level SRT) and the pill colour; load your clip with Load footage. Keep and reuse the style's helpers (footage(), the rounded glass box with blur-look fill, two-line layout with automatic wrapping, the gliding highlight pill (it slides between word boxes), spoken/upcoming opacities and the phrase swap).\n- Aim for 15 to 40 seconds unless my content needs more, and set the duration in TL.D.\n- Keep window.seek(t), window.DURATION, window.scoreSound and window.SFX exposed, so the video can be rendered frame by frame.\n- Load the style's fonts before the first draw, as the reference does: Inter (800).\n\nTHE STYLE\n- Built for your footage and your word timings: paste a word-level SRT and every word gets its own start time.\n- The box: dark glass (#0e1014 at 74%), 22 px corners, centred in the lower third, sized to its text with 28 px padding.\n- Words: Inter 800 at 40 px or more. Spoken words white, upcoming words white at 45%, the current word dark (#0b1a10) on a green pill (#3ddc84) that slides and resizes between words with a quick ease.\n- One phrase at a time, at most two lines of about 22 characters; phrases swap with a 0.2 s fade and a 10 px lift.\n- Accessibility first: high contrast, no effects that hurt readability, exact timing.\n\nRULES THAT KEEP IT IN STYLE\n- 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.\n- 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.\n- It will be watched on phones: at 720x1280 keep subtitle words at 40 px or more, never more than two lines, and keep the box above the bottom 15% (phone UI). Fill the frame.\n- Keep each frame fast, well under 50 ms.\n- Give my topic its own demo content; do not reuse the reference's story (\"A morning-routine talking clip\") unless my content asks for it.\n\nSOUND\n- No music: the clip's own audio leads.\n- Optional: a barely audible \"tick\" at the start of each phrase; nothing on individual words.\n- Voiceover mix: the player calls SFX.live with { voiceover: true } once narration is loaded. Keep everything silent or near-silent.\n- Sync is everything: the sound score reads the same TL times as the picture.\n\nIF YOU CAN RUN CODE\nRender 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.\n\nSTYLE CARD\nName: Karaoke Subs\nFamily: Edit Overlay\nLook: Clean, readable subtitles for any talking video: a rounded dark glass box in the lower third holding two lines, where the word being spoken sits on a bright green pill, spoken words stay white and upcoming words wait at half opacity.\nHow it explains: The subtitle box shows one phrase (up to two lines) at a time; the green pill glides from word to word exactly as each is spoken, and the box swaps to the next phrase with a soft fade and lift. Nothing else moves, so it suits any edit.\n"
|
|
1782
|
+
},
|
|
1783
|
+
{
|
|
1784
|
+
"id": "callout-kit",
|
|
1785
|
+
"num": "50",
|
|
1786
|
+
"name": "Callout Kit",
|
|
1787
|
+
"family": "Edit Overlay",
|
|
1788
|
+
"canvas": "720x1280",
|
|
1789
|
+
"tall": true,
|
|
1790
|
+
"lib": true,
|
|
1791
|
+
"footage": true,
|
|
1792
|
+
"look": "Hand-drawn annotation tools over your footage: red marker circles that draw themselves, arrows with marker labels, a magnifier box that zooms into a detail with connector lines, a pixelate blur for anything private, and a pulsing spotlight.",
|
|
1793
|
+
"how": "Each callout draws itself on the beat: the marker circle loops around the thing, an arrow swings in with a label, the zoom box pops open with lines back to the source, a blur mask pixelates a private area, and a spotlight darkens everything except the point. They clear before the next one.",
|
|
1794
|
+
"fonts": "Permanent Marker, JetBrains Mono (700), Inter (800)",
|
|
1795
|
+
"demo": "Pointing out an app on your phone in a review",
|
|
1796
|
+
"replace": "TL and the callout list (positions, sizes, labels, what the zoom box shows), and scoreSound(); load your clip with Load footage and set the coordinates to your shot",
|
|
1797
|
+
"keep": "footage(), the hand-drawn marker circle (hdEllipse-style), marker arrows with labels, the zoom box with connector lines and border, the pixelate blur mask, the spotlight cut-out and the draw-on timing",
|
|
1798
|
+
"sizes": "keep marker labels at 44 px or more, mono tags at 20 px or more, and line widths at 6 px or more so they read on a phone",
|
|
1799
|
+
"voLine": "Each circle starts drawing on the word that names the thing, arrows land on \"this\" or \"here\", the zoom box opens on the detail word, and the blur appears before anything private is visible.",
|
|
1800
|
+
"full": "- Full mix (no voiceover): marker squeaks while drawing, a pop for the zoom box, a soft whoosh for the arrow, a camera-shutter click for the blur.",
|
|
1801
|
+
"voMix": "- Voiceover mix: the player calls SFX.live with { voiceover: true } once narration is loaded. Mark every sound soft: true.",
|
|
1802
|
+
"sheet": [
|
|
1803
|
+
"Built for your footage: callouts are placed in frame coordinates on top of footage(); set them to where things sit in your shot.",
|
|
1804
|
+
"Marker red (#ff3b3b) for circles, arrows and labels (Permanent Marker), with a subtle dark shadow so they read on any footage.",
|
|
1805
|
+
"The zoom box: a white-bordered rounded rectangle showing the detail at 2× (or a drawn stand-in), a small \"2× ZOOM\" tag, and two thin connector lines back to the source area.",
|
|
1806
|
+
"Blur masks pixelate (blocky mosaic) anything private: faces of strangers, emails, plates. Always cover before it appears.",
|
|
1807
|
+
"Spotlight: everything darkens to 60% except a soft circle on the point.",
|
|
1808
|
+
"One callout at a time; each draws on in 0.4 to 0.8 seconds and clears before the next."
|
|
1809
|
+
],
|
|
1810
|
+
"sound": [
|
|
1811
|
+
"No music by default (your clip leads); effects only.",
|
|
1812
|
+
"Map events to the kit: circles and underlines get \"marker\"; arrows get a soft \"whoosh\"; the zoom box gets \"pop\"; the blur gets a \"click\" (shutter); the spotlight gets a soft low swell."
|
|
1813
|
+
],
|
|
1814
|
+
"sourceFile": "sources/callout-kit.html",
|
|
1815
|
+
"promptFile": "prompts/callout-kit.md",
|
|
1816
|
+
"sourceBytes": 58189,
|
|
1817
|
+
"prompt": "I want an animated video in the \"Callout Kit\" 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.\n\nMY CONTENT\n[No topic yet. Ask me for my topic or script before building anything.]\n\nBUILD DIRECTLY\nSkip the storyboard and build the full animation now. Afterwards, list any facts or numbers you assumed.\n\nWHAT TO BUILD\nOne self-contained HTML file (an artifact if you can), built on the reference file below:\n- 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.\n- Keep the canvas at 720x1280 (9:16, for Shorts, Reels and TikTok).\n- 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.\n- Replace the demo's story: TL and the callout list (positions, sizes, labels, what the zoom box shows), and scoreSound(); load your clip with Load footage and set the coordinates to your shot. Keep and reuse the style's helpers (footage(), the hand-drawn marker circle (hdEllipse-style), marker arrows with labels, the zoom box with connector lines and border, the pixelate blur mask, the spotlight cut-out and the draw-on timing).\n- Aim for 15 to 40 seconds unless my content needs more, and set the duration in TL.D.\n- Keep window.seek(t), window.DURATION, window.scoreSound and window.SFX exposed, so the video can be rendered frame by frame.\n- Load the style's fonts before the first draw, as the reference does: Permanent Marker, JetBrains Mono (700), Inter (800).\n\nTHE STYLE\n- Built for your footage: callouts are placed in frame coordinates on top of footage(); set them to where things sit in your shot.\n- Marker red (#ff3b3b) for circles, arrows and labels (Permanent Marker), with a subtle dark shadow so they read on any footage.\n- The zoom box: a white-bordered rounded rectangle showing the detail at 2× (or a drawn stand-in), a small \"2× ZOOM\" tag, and two thin connector lines back to the source area.\n- Blur masks pixelate (blocky mosaic) anything private: faces of strangers, emails, plates. Always cover before it appears.\n- Spotlight: everything darkens to 60% except a soft circle on the point.\n- One callout at a time; each draws on in 0.4 to 0.8 seconds and clears before the next.\n\nRULES THAT KEEP IT IN STYLE\n- 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.\n- 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.\n- It will be watched on phones: at 720x1280 keep marker labels at 44 px or more, mono tags at 20 px or more, and line widths at 6 px or more so they read on a phone. Fill the frame.\n- Keep each frame fast, well under 50 ms.\n- Give my topic its own demo content; do not reuse the reference's story (\"Pointing out an app on your phone in a review\") unless my content asks for it.\n\nSOUND\n- No music by default (your clip leads); effects only.\n- Map events to the kit: circles and underlines get \"marker\"; arrows get a soft \"whoosh\"; the zoom box gets \"pop\"; the blur gets a \"click\" (shutter); the spotlight gets a soft low swell.\n- Full mix (no voiceover): marker squeaks while drawing, a pop for the zoom box, a soft whoosh for the arrow, a camera-shutter click for the blur.\n- Sync is everything: the sound score reads the same TL times as the picture.\n\nIF YOU CAN RUN CODE\nRender 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.\n\nSTYLE CARD\nName: Callout Kit\nFamily: Edit Overlay\nLook: Hand-drawn annotation tools over your footage: red marker circles that draw themselves, arrows with marker labels, a magnifier box that zooms into a detail with connector lines, a pixelate blur for anything private, and a pulsing spotlight.\nHow it explains: Each callout draws itself on the beat: the marker circle loops around the thing, an arrow swings in with a label, the zoom box pops open with lines back to the source, a blur mask pixelates a private area, and a spotlight darkens everything except the point. They clear before the next one.\n",
|
|
1818
|
+
"promptVo": "I want an animated video in the \"Callout Kit\" 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.\n\nMY CONTENT\n[No topic yet. Ask me for my topic or script before building anything.]\n\nVOICEOVER TIMING\n[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.]\n\nHow to use the timing:\n- 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.\n- Set the duration to the last word's end plus about 1.2 seconds.\n- Build the timeline (TL) from these times. Each circle starts drawing on the word that names the thing, arrows land on \"this\" or \"here\", the zoom box opens on the detail word, and the blur appears before anything private is visible.\n- 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.\n- Put the emphasis moves on stressed words. A counter lands at the exact moment its number is spoken.\n- Keep the player's \"Load voiceover\" button working so I can drop in my audio and hear it in sync.\n\nSTORYBOARD FIRST\nBefore building, show me a storyboard and wait for my OK:\n- 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.\n- 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.\n- Below the grid, list any facts or numbers you had to assume.\nWhen I approve it (or after my changes), build the full animation and reuse the storyboard's drawing code.\n\nWHAT TO BUILD\nOne self-contained HTML file (an artifact if you can), built on the reference file below:\n- 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.\n- Keep the canvas at 720x1280 (9:16, for Shorts, Reels and TikTok).\n- 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.\n- Replace the demo's story: TL and the callout list (positions, sizes, labels, what the zoom box shows), and scoreSound(); load your clip with Load footage and set the coordinates to your shot. Keep and reuse the style's helpers (footage(), the hand-drawn marker circle (hdEllipse-style), marker arrows with labels, the zoom box with connector lines and border, the pixelate blur mask, the spotlight cut-out and the draw-on timing).\n- Aim for 15 to 40 seconds unless my content needs more, and set the duration in TL.D.\n- Keep window.seek(t), window.DURATION, window.scoreSound and window.SFX exposed, so the video can be rendered frame by frame.\n- Load the style's fonts before the first draw, as the reference does: Permanent Marker, JetBrains Mono (700), Inter (800).\n\nTHE STYLE\n- Built for your footage: callouts are placed in frame coordinates on top of footage(); set them to where things sit in your shot.\n- Marker red (#ff3b3b) for circles, arrows and labels (Permanent Marker), with a subtle dark shadow so they read on any footage.\n- The zoom box: a white-bordered rounded rectangle showing the detail at 2× (or a drawn stand-in), a small \"2× ZOOM\" tag, and two thin connector lines back to the source area.\n- Blur masks pixelate (blocky mosaic) anything private: faces of strangers, emails, plates. Always cover before it appears.\n- Spotlight: everything darkens to 60% except a soft circle on the point.\n- One callout at a time; each draws on in 0.4 to 0.8 seconds and clears before the next.\n\nRULES THAT KEEP IT IN STYLE\n- 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.\n- 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.\n- It will be watched on phones: at 720x1280 keep marker labels at 44 px or more, mono tags at 20 px or more, and line widths at 6 px or more so they read on a phone. Fill the frame.\n- Keep each frame fast, well under 50 ms.\n- Give my topic its own demo content; do not reuse the reference's story (\"Pointing out an app on your phone in a review\") unless my content asks for it.\n\nSOUND\n- No music by default (your clip leads); effects only.\n- Map events to the kit: circles and underlines get \"marker\"; arrows get a soft \"whoosh\"; the zoom box gets \"pop\"; the blur gets a \"click\" (shutter); the spotlight gets a soft low swell.\n- Voiceover mix: the player calls SFX.live with { voiceover: true } once narration is loaded. Mark every sound soft: true.\n- Sync is everything: the sound score reads the same TL times as the picture.\n\nIF YOU CAN RUN CODE\nRender 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.\n\nSTYLE CARD\nName: Callout Kit\nFamily: Edit Overlay\nLook: Hand-drawn annotation tools over your footage: red marker circles that draw themselves, arrows with marker labels, a magnifier box that zooms into a detail with connector lines, a pixelate blur for anything private, and a pulsing spotlight.\nHow it explains: Each callout draws itself on the beat: the marker circle loops around the thing, an arrow swings in with a label, the zoom box pops open with lines back to the source, a blur mask pixelates a private area, and a spotlight darkens everything except the point. They clear before the next one.\n"
|
|
1819
|
+
},
|
|
1820
|
+
{
|
|
1821
|
+
"id": "lower-thirds",
|
|
1822
|
+
"num": "51",
|
|
1823
|
+
"name": "Lower Thirds",
|
|
1824
|
+
"family": "Edit Overlay",
|
|
1825
|
+
"canvas": "720x1280",
|
|
1826
|
+
"tall": true,
|
|
1827
|
+
"lib": true,
|
|
1828
|
+
"footage": true,
|
|
1829
|
+
"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.",
|
|
1830
|
+
"how": "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.",
|
|
1831
|
+
"fonts": "Instrument Serif, Inter (500 to 900)",
|
|
1832
|
+
"demo": "An interview intro with a guest name, a chapter and a subscribe nudge",
|
|
1833
|
+
"replace": "TL, the name and role, CHAPTERS (number, title), the handle, the accent colour and scoreSound(); load your clip with Load footage",
|
|
1834
|
+
"keep": "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)",
|
|
1835
|
+
"sizes": "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",
|
|
1836
|
+
"voLine": "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.",
|
|
1837
|
+
"full": "- Full mix (no voiceover): soft swooshes for each entrance, a bell for the subscribe nudge, a click for the cursor.",
|
|
1838
|
+
"voMix": "- Voiceover mix: the player calls SFX.live with { voiceover: true } once narration is loaded. Mark every sound soft: true.",
|
|
1839
|
+
"sheet": [
|
|
1840
|
+
"Built for your footage: graphics live in the bottom-left and the top, away from faces, inside title-safe margins (40 px).",
|
|
1841
|
+
"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).",
|
|
1842
|
+
"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.",
|
|
1843
|
+
"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.",
|
|
1844
|
+
"Subscribe nudge: a red pill (#e5322d) with a bell icon that wiggles, a cursor that taps it, and the pill flips to \"SUBSCRIBED\".",
|
|
1845
|
+
"Every element: 0.5 s in, holds while relevant, 0.3 s out."
|
|
1846
|
+
],
|
|
1847
|
+
"sound": [
|
|
1848
|
+
"No music (your audio leads); effects only.",
|
|
1849
|
+
"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\"."
|
|
1850
|
+
],
|
|
1851
|
+
"sourceFile": "sources/lower-thirds.html",
|
|
1852
|
+
"promptFile": "prompts/lower-thirds.md",
|
|
1853
|
+
"sourceBytes": 57315,
|
|
1854
|
+
"prompt": "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.\n\nMY CONTENT\n[No topic yet. Ask me for my topic or script before building anything.]\n\nBUILD DIRECTLY\nSkip the storyboard and build the full animation now. Afterwards, list any facts or numbers you assumed.\n\nWHAT TO BUILD\nOne self-contained HTML file (an artifact if you can), built on the reference file below:\n- 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.\n- Keep the canvas at 720x1280 (9:16, for Shorts, Reels and TikTok).\n- 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.\n- 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)).\n- Aim for 15 to 40 seconds unless my content needs more, and set the duration in TL.D.\n- Keep window.seek(t), window.DURATION, window.scoreSound and window.SFX exposed, so the video can be rendered frame by frame.\n- Load the style's fonts before the first draw, as the reference does: Instrument Serif, Inter (500 to 900).\n\nTHE STYLE\n- Built for your footage: graphics live in the bottom-left and the top, away from faces, inside title-safe margins (40 px).\n- 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).\n- 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.\n- 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.\n- Subscribe nudge: a red pill (#e5322d) with a bell icon that wiggles, a cursor that taps it, and the pill flips to \"SUBSCRIBED\".\n- Every element: 0.5 s in, holds while relevant, 0.3 s out.\n\nRULES THAT KEEP IT IN STYLE\n- 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.\n- 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.\n- 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.\n- Keep each frame fast, well under 50 ms.\n- 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.\n\nSOUND\n- No music (your audio leads); effects only.\n- 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\".\n- Full mix (no voiceover): soft swooshes for each entrance, a bell for the subscribe nudge, a click for the cursor.\n- Sync is everything: the sound score reads the same TL times as the picture.\n\nIF YOU CAN RUN CODE\nRender 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.\n\nSTYLE CARD\nName: Lower Thirds\nFamily: Edit Overlay\nLook: 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.\nHow 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.\n",
|
|
1855
|
+
"promptVo": "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.\n\nMY CONTENT\n[No topic yet. Ask me for my topic or script before building anything.]\n\nVOICEOVER TIMING\n[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.]\n\nHow to use the timing:\n- 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.\n- Set the duration to the last word's end plus about 1.2 seconds.\n- 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.\n- 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.\n- Put the emphasis moves on stressed words. A counter lands at the exact moment its number is spoken.\n- Keep the player's \"Load voiceover\" button working so I can drop in my audio and hear it in sync.\n\nSTORYBOARD FIRST\nBefore building, show me a storyboard and wait for my OK:\n- 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.\n- 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.\n- Below the grid, list any facts or numbers you had to assume.\nWhen I approve it (or after my changes), build the full animation and reuse the storyboard's drawing code.\n\nWHAT TO BUILD\nOne self-contained HTML file (an artifact if you can), built on the reference file below:\n- 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.\n- Keep the canvas at 720x1280 (9:16, for Shorts, Reels and TikTok).\n- 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.\n- 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)).\n- Aim for 15 to 40 seconds unless my content needs more, and set the duration in TL.D.\n- Keep window.seek(t), window.DURATION, window.scoreSound and window.SFX exposed, so the video can be rendered frame by frame.\n- Load the style's fonts before the first draw, as the reference does: Instrument Serif, Inter (500 to 900).\n\nTHE STYLE\n- Built for your footage: graphics live in the bottom-left and the top, away from faces, inside title-safe margins (40 px).\n- 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).\n- 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.\n- 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.\n- Subscribe nudge: a red pill (#e5322d) with a bell icon that wiggles, a cursor that taps it, and the pill flips to \"SUBSCRIBED\".\n- Every element: 0.5 s in, holds while relevant, 0.3 s out.\n\nRULES THAT KEEP IT IN STYLE\n- 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.\n- 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.\n- 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.\n- Keep each frame fast, well under 50 ms.\n- 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.\n\nSOUND\n- No music (your audio leads); effects only.\n- 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\".\n- Voiceover mix: the player calls SFX.live with { voiceover: true } once narration is loaded. Mark every sound soft: true.\n- Sync is everything: the sound score reads the same TL times as the picture.\n\nIF YOU CAN RUN CODE\nRender 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.\n\nSTYLE CARD\nName: Lower Thirds\nFamily: Edit Overlay\nLook: 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.\nHow 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.\n"
|
|
1856
|
+
},
|
|
1857
|
+
{
|
|
1858
|
+
"id": "headline-backdrop",
|
|
1859
|
+
"num": "52",
|
|
1860
|
+
"name": "Headline Backdrop",
|
|
1861
|
+
"family": "Edit Overlay",
|
|
1862
|
+
"canvas": "720x1280",
|
|
1863
|
+
"tall": true,
|
|
1864
|
+
"lib": true,
|
|
1865
|
+
"footage": true,
|
|
1866
|
+
"look": "Commentary layout: you, cut out with a thick white sticker edge and a soft shadow, standing in front of invented article cards that scroll and tilt behind you, with a yellow marker swipe on the line that matters and a black-and-yellow reaction chip.",
|
|
1867
|
+
"how": "Article cards slide in and stack behind you, the camera drifts down the top card, and the key line gets a yellow highlighter swipe as you read it. A second card swaps in for the counterpoint, and a reaction chip pops beside your head on the punchline.",
|
|
1868
|
+
"fonts": "Playfair Display (700 and 900), Inter (800 and 900)",
|
|
1869
|
+
"demo": "Reacting to a (made-up) headline about laundry-folding robots",
|
|
1870
|
+
"replace": "TL, ARTICLES (invented site name, headline lines, which line is highlighted), the reaction text and scoreSound(); load your clip with Load footage (shot against a plain background for the cut-out look)",
|
|
1871
|
+
"keep": "the pale background, invented article cards with grey body lines, the stack-and-scroll motion, the yellow marker swipe, the sticker-edge cut-out treatment of the footage, the drop shadow and the reaction chip",
|
|
1872
|
+
"sizes": "keep headlines at 40 px or more, the reaction chip at 30 px or more, and keep your face clear of the cards",
|
|
1873
|
+
"voLine": "A card slides in as you mention it, the highlighter swipes along the line while you read it, and the reaction chip pops on the punchline.",
|
|
1874
|
+
"full": "- Full mix (no voiceover): paper slides for cards, a marker for the highlight, a pop for the reaction.",
|
|
1875
|
+
"voMix": "- Voiceover mix: the player calls SFX.live with { voiceover: true } once narration is loaded. Mark everything soft: true.",
|
|
1876
|
+
"sheet": [
|
|
1877
|
+
"Built for your footage: the presenter is cut out (with your clip: a centred crop in a rounded mask; with the stand-in: a real silhouette) and gets a thick white sticker outline and a soft shadow so it sits in front of the cards.",
|
|
1878
|
+
"Articles are always invented: an invented site name in Playfair Display 900, a serif headline, grey placeholder body lines. Never mock up a real outlet, a real person's quote or a real post.",
|
|
1879
|
+
"The key line gets a yellow (#ffd60a) marker swipe that grows left to right behind the text.",
|
|
1880
|
+
"Cards tilt slightly (±4°) and stack with soft shadows on a pale grey-blue background (#e6eaef).",
|
|
1881
|
+
"Reaction chips: black with yellow Inter 900 text, popping next to the head."
|
|
1882
|
+
],
|
|
1883
|
+
"sound": [
|
|
1884
|
+
"No music by default (your clip leads).",
|
|
1885
|
+
"Map events to the kit: cards get SND.paper; the highlight gets \"marker\"; the reaction gets \"pop\" and a short comic sting; the card swap gets a soft \"whoosh\"."
|
|
1886
|
+
],
|
|
1887
|
+
"sourceFile": "sources/headline-backdrop.html",
|
|
1888
|
+
"promptFile": "prompts/headline-backdrop.md",
|
|
1889
|
+
"sourceBytes": 56845,
|
|
1890
|
+
"prompt": "I want an animated video in the \"Headline Backdrop\" 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.\n\nMY CONTENT\n[No topic yet. Ask me for my topic or script before building anything.]\n\nBUILD DIRECTLY\nSkip the storyboard and build the full animation now. Afterwards, list any facts or numbers you assumed.\n\nWHAT TO BUILD\nOne self-contained HTML file (an artifact if you can), built on the reference file below:\n- 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.\n- Keep the canvas at 720x1280 (9:16, for Shorts, Reels and TikTok).\n- 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.\n- Replace the demo's story: TL, ARTICLES (invented site name, headline lines, which line is highlighted), the reaction text and scoreSound(); load your clip with Load footage (shot against a plain background for the cut-out look). Keep and reuse the style's helpers (the pale background, invented article cards with grey body lines, the stack-and-scroll motion, the yellow marker swipe, the sticker-edge cut-out treatment of the footage, the drop shadow and the reaction chip).\n- Aim for 15 to 40 seconds unless my content needs more, and set the duration in TL.D.\n- Keep window.seek(t), window.DURATION, window.scoreSound and window.SFX exposed, so the video can be rendered frame by frame.\n- Load the style's fonts before the first draw, as the reference does: Playfair Display (700 and 900), Inter (800 and 900).\n\nTHE STYLE\n- Built for your footage: the presenter is cut out (with your clip: a centred crop in a rounded mask; with the stand-in: a real silhouette) and gets a thick white sticker outline and a soft shadow so it sits in front of the cards.\n- Articles are always invented: an invented site name in Playfair Display 900, a serif headline, grey placeholder body lines. Never mock up a real outlet, a real person's quote or a real post.\n- The key line gets a yellow (#ffd60a) marker swipe that grows left to right behind the text.\n- Cards tilt slightly (±4°) and stack with soft shadows on a pale grey-blue background (#e6eaef).\n- Reaction chips: black with yellow Inter 900 text, popping next to the head.\n\nRULES THAT KEEP IT IN STYLE\n- 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.\n- 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.\n- It will be watched on phones: at 720x1280 keep headlines at 40 px or more, the reaction chip at 30 px or more, and keep your face clear of the cards. Fill the frame.\n- Keep each frame fast, well under 50 ms.\n- Give my topic its own demo content; do not reuse the reference's story (\"Reacting to a (made-up) headline about laundry-folding robots\") unless my content asks for it.\n\nSOUND\n- No music by default (your clip leads).\n- Map events to the kit: cards get SND.paper; the highlight gets \"marker\"; the reaction gets \"pop\" and a short comic sting; the card swap gets a soft \"whoosh\".\n- Full mix (no voiceover): paper slides for cards, a marker for the highlight, a pop for the reaction.\n- Sync is everything: the sound score reads the same TL times as the picture.\n\nIF YOU CAN RUN CODE\nRender 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.\n\nSTYLE CARD\nName: Headline Backdrop\nFamily: Edit Overlay\nLook: Commentary layout: you, cut out with a thick white sticker edge and a soft shadow, standing in front of invented article cards that scroll and tilt behind you, with a yellow marker swipe on the line that matters and a black-and-yellow reaction chip.\nHow it explains: Article cards slide in and stack behind you, the camera drifts down the top card, and the key line gets a yellow highlighter swipe as you read it. A second card swaps in for the counterpoint, and a reaction chip pops beside your head on the punchline.\n",
|
|
1891
|
+
"promptVo": "I want an animated video in the \"Headline Backdrop\" 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.\n\nMY CONTENT\n[No topic yet. Ask me for my topic or script before building anything.]\n\nVOICEOVER TIMING\n[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.]\n\nHow to use the timing:\n- 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.\n- Set the duration to the last word's end plus about 1.2 seconds.\n- Build the timeline (TL) from these times. A card slides in as you mention it, the highlighter swipes along the line while you read it, and the reaction chip pops on the punchline.\n- 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.\n- Put the emphasis moves on stressed words. A counter lands at the exact moment its number is spoken.\n- Keep the player's \"Load voiceover\" button working so I can drop in my audio and hear it in sync.\n\nSTORYBOARD FIRST\nBefore building, show me a storyboard and wait for my OK:\n- 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.\n- 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.\n- Below the grid, list any facts or numbers you had to assume.\nWhen I approve it (or after my changes), build the full animation and reuse the storyboard's drawing code.\n\nWHAT TO BUILD\nOne self-contained HTML file (an artifact if you can), built on the reference file below:\n- 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.\n- Keep the canvas at 720x1280 (9:16, for Shorts, Reels and TikTok).\n- 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.\n- Replace the demo's story: TL, ARTICLES (invented site name, headline lines, which line is highlighted), the reaction text and scoreSound(); load your clip with Load footage (shot against a plain background for the cut-out look). Keep and reuse the style's helpers (the pale background, invented article cards with grey body lines, the stack-and-scroll motion, the yellow marker swipe, the sticker-edge cut-out treatment of the footage, the drop shadow and the reaction chip).\n- Aim for 15 to 40 seconds unless my content needs more, and set the duration in TL.D.\n- Keep window.seek(t), window.DURATION, window.scoreSound and window.SFX exposed, so the video can be rendered frame by frame.\n- Load the style's fonts before the first draw, as the reference does: Playfair Display (700 and 900), Inter (800 and 900).\n\nTHE STYLE\n- Built for your footage: the presenter is cut out (with your clip: a centred crop in a rounded mask; with the stand-in: a real silhouette) and gets a thick white sticker outline and a soft shadow so it sits in front of the cards.\n- Articles are always invented: an invented site name in Playfair Display 900, a serif headline, grey placeholder body lines. Never mock up a real outlet, a real person's quote or a real post.\n- The key line gets a yellow (#ffd60a) marker swipe that grows left to right behind the text.\n- Cards tilt slightly (±4°) and stack with soft shadows on a pale grey-blue background (#e6eaef).\n- Reaction chips: black with yellow Inter 900 text, popping next to the head.\n\nRULES THAT KEEP IT IN STYLE\n- 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.\n- 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.\n- It will be watched on phones: at 720x1280 keep headlines at 40 px or more, the reaction chip at 30 px or more, and keep your face clear of the cards. Fill the frame.\n- Keep each frame fast, well under 50 ms.\n- Give my topic its own demo content; do not reuse the reference's story (\"Reacting to a (made-up) headline about laundry-folding robots\") unless my content asks for it.\n\nSOUND\n- No music by default (your clip leads).\n- Map events to the kit: cards get SND.paper; the highlight gets \"marker\"; the reaction gets \"pop\" and a short comic sting; the card swap gets a soft \"whoosh\".\n- Voiceover mix: the player calls SFX.live with { voiceover: true } once narration is loaded. Mark everything soft: true.\n- Sync is everything: the sound score reads the same TL times as the picture.\n\nIF YOU CAN RUN CODE\nRender 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.\n\nSTYLE CARD\nName: Headline Backdrop\nFamily: Edit Overlay\nLook: Commentary layout: you, cut out with a thick white sticker edge and a soft shadow, standing in front of invented article cards that scroll and tilt behind you, with a yellow marker swipe on the line that matters and a black-and-yellow reaction chip.\nHow it explains: Article cards slide in and stack behind you, the camera drifts down the top card, and the key line gets a yellow highlighter swipe as you read it. A second card swaps in for the counterpoint, and a reaction chip pops beside your head on the punchline.\n"
|
|
1892
|
+
},
|
|
1893
|
+
{
|
|
1894
|
+
"id": "stack-split",
|
|
1895
|
+
"num": "53",
|
|
1896
|
+
"name": "Stack Split",
|
|
1897
|
+
"family": "Edit Overlay",
|
|
1898
|
+
"canvas": "720x1280",
|
|
1899
|
+
"tall": true,
|
|
1900
|
+
"lib": true,
|
|
1901
|
+
"footage": true,
|
|
1902
|
+
"look": "The retention split: your clip on the top half, a satisfying loop drawn in code on the bottom half (kinetic sand being sliced into rainbow layers), and a white caption bar in the seam that carries the story line by line.",
|
|
1903
|
+
"how": "The top half plays your storytime clip while the bottom loops something calm and satisfying: a knife slices thin rainbow layers of sand that fall and crumble. The caption bar in the seam swaps every sentence, and a progress line under it shows how far through the story you are.",
|
|
1904
|
+
"fonts": "Inter (800)",
|
|
1905
|
+
"demo": "A storytime: \"my landlord texted me at 3am\"",
|
|
1906
|
+
"replace": "TL, LINES (the caption sentences with times), the bottom loop painter (here the sand cutter) and scoreSound(); load your clip with Load footage",
|
|
1907
|
+
"keep": "the two-half layout, footage() in the top half, the seamless code-drawn loop in the bottom half (period-based so it never jumps), the white seam caption bar with soft shadow, the swap animation and the story progress line",
|
|
1908
|
+
"sizes": "keep captions at 34 px or more, at most two lines, and keep the seam bar between 46% and 54% of the height",
|
|
1909
|
+
"voLine": "Each caption line swaps in on the first word of its sentence; the loop below never syncs to speech.",
|
|
1910
|
+
"full": "- Full mix (no voiceover): a soft ASMR crunch for each slice and a quiet lo-fi bed; your clip's audio leads.",
|
|
1911
|
+
"voMix": "- Voiceover mix: the player calls SFX.live with { voiceover: true } once narration is loaded. Keep the crunches very soft.",
|
|
1912
|
+
"sheet": [
|
|
1913
|
+
"Top half: footage() (your clip; the stand-in until loaded), cropped to fill. Bottom half: a calm, satisfying loop drawn in code that repeats on a fixed period so it never jumps (here: kinetic sand sliced by a knife).",
|
|
1914
|
+
"The loop uses soft pastel layers (#ff9eb5, #ffd27a, #9be3c4, #a8c5ff, #d4a8ff, #ffb38a) on a light base, with fine grain for texture.",
|
|
1915
|
+
"Caption bar: white with 14 px corners and a soft shadow, sitting over the seam, Inter 800 dark text, one sentence at a time with a quick lift-and-fade swap.",
|
|
1916
|
+
"A thin progress line under the caption bar fills across the story.",
|
|
1917
|
+
"Never use someone else's gameplay or footage in the bottom half; draw the loop."
|
|
1918
|
+
],
|
|
1919
|
+
"sound": [
|
|
1920
|
+
"Bed: a quiet lo-fi pad (your audio leads).",
|
|
1921
|
+
"Map events to the kit: every knife slice gets a soft crunch (a short band-passed noise burst); falling layers get a soft thud (SND.tap low); caption swaps get a barely audible tick."
|
|
1922
|
+
],
|
|
1923
|
+
"sourceFile": "sources/stack-split.html",
|
|
1924
|
+
"promptFile": "prompts/stack-split.md",
|
|
1925
|
+
"sourceBytes": 56306,
|
|
1926
|
+
"prompt": "I want an animated video in the \"Stack Split\" 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.\n\nMY CONTENT\n[No topic yet. Ask me for my topic or script before building anything.]\n\nBUILD DIRECTLY\nSkip the storyboard and build the full animation now. Afterwards, list any facts or numbers you assumed.\n\nWHAT TO BUILD\nOne self-contained HTML file (an artifact if you can), built on the reference file below:\n- 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.\n- Keep the canvas at 720x1280 (9:16, for Shorts, Reels and TikTok).\n- 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.\n- Replace the demo's story: TL, LINES (the caption sentences with times), the bottom loop painter (here the sand cutter) and scoreSound(); load your clip with Load footage. Keep and reuse the style's helpers (the two-half layout, footage() in the top half, the seamless code-drawn loop in the bottom half (period-based so it never jumps), the white seam caption bar with soft shadow, the swap animation and the story progress line).\n- Aim for 15 to 40 seconds unless my content needs more, and set the duration in TL.D.\n- Keep window.seek(t), window.DURATION, window.scoreSound and window.SFX exposed, so the video can be rendered frame by frame.\n- Load the style's fonts before the first draw, as the reference does: Inter (800).\n\nTHE STYLE\n- Top half: footage() (your clip; the stand-in until loaded), cropped to fill. Bottom half: a calm, satisfying loop drawn in code that repeats on a fixed period so it never jumps (here: kinetic sand sliced by a knife).\n- The loop uses soft pastel layers (#ff9eb5, #ffd27a, #9be3c4, #a8c5ff, #d4a8ff, #ffb38a) on a light base, with fine grain for texture.\n- Caption bar: white with 14 px corners and a soft shadow, sitting over the seam, Inter 800 dark text, one sentence at a time with a quick lift-and-fade swap.\n- A thin progress line under the caption bar fills across the story.\n- Never use someone else's gameplay or footage in the bottom half; draw the loop.\n\nRULES THAT KEEP IT IN STYLE\n- 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.\n- 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.\n- It will be watched on phones: at 720x1280 keep captions at 34 px or more, at most two lines, and keep the seam bar between 46% and 54% of the height. Fill the frame.\n- Keep each frame fast, well under 50 ms.\n- Give my topic its own demo content; do not reuse the reference's story (\"A storytime: \"my landlord texted me at 3am\"\") unless my content asks for it.\n\nSOUND\n- Bed: a quiet lo-fi pad (your audio leads).\n- Map events to the kit: every knife slice gets a soft crunch (a short band-passed noise burst); falling layers get a soft thud (SND.tap low); caption swaps get a barely audible tick.\n- Full mix (no voiceover): a soft ASMR crunch for each slice and a quiet lo-fi bed; your clip's audio leads.\n- Sync is everything: the sound score reads the same TL times as the picture.\n\nIF YOU CAN RUN CODE\nRender 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.\n\nSTYLE CARD\nName: Stack Split\nFamily: Edit Overlay\nLook: The retention split: your clip on the top half, a satisfying loop drawn in code on the bottom half (kinetic sand being sliced into rainbow layers), and a white caption bar in the seam that carries the story line by line.\nHow it explains: The top half plays your storytime clip while the bottom loops something calm and satisfying: a knife slices thin rainbow layers of sand that fall and crumble. The caption bar in the seam swaps every sentence, and a progress line under it shows how far through the story you are.\n",
|
|
1927
|
+
"promptVo": "I want an animated video in the \"Stack Split\" 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.\n\nMY CONTENT\n[No topic yet. Ask me for my topic or script before building anything.]\n\nVOICEOVER TIMING\n[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.]\n\nHow to use the timing:\n- 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.\n- Set the duration to the last word's end plus about 1.2 seconds.\n- Build the timeline (TL) from these times. Each caption line swaps in on the first word of its sentence; the loop below never syncs to speech.\n- 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.\n- Put the emphasis moves on stressed words. A counter lands at the exact moment its number is spoken.\n- Keep the player's \"Load voiceover\" button working so I can drop in my audio and hear it in sync.\n\nSTORYBOARD FIRST\nBefore building, show me a storyboard and wait for my OK:\n- 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.\n- 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.\n- Below the grid, list any facts or numbers you had to assume.\nWhen I approve it (or after my changes), build the full animation and reuse the storyboard's drawing code.\n\nWHAT TO BUILD\nOne self-contained HTML file (an artifact if you can), built on the reference file below:\n- 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.\n- Keep the canvas at 720x1280 (9:16, for Shorts, Reels and TikTok).\n- 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.\n- Replace the demo's story: TL, LINES (the caption sentences with times), the bottom loop painter (here the sand cutter) and scoreSound(); load your clip with Load footage. Keep and reuse the style's helpers (the two-half layout, footage() in the top half, the seamless code-drawn loop in the bottom half (period-based so it never jumps), the white seam caption bar with soft shadow, the swap animation and the story progress line).\n- Aim for 15 to 40 seconds unless my content needs more, and set the duration in TL.D.\n- Keep window.seek(t), window.DURATION, window.scoreSound and window.SFX exposed, so the video can be rendered frame by frame.\n- Load the style's fonts before the first draw, as the reference does: Inter (800).\n\nTHE STYLE\n- Top half: footage() (your clip; the stand-in until loaded), cropped to fill. Bottom half: a calm, satisfying loop drawn in code that repeats on a fixed period so it never jumps (here: kinetic sand sliced by a knife).\n- The loop uses soft pastel layers (#ff9eb5, #ffd27a, #9be3c4, #a8c5ff, #d4a8ff, #ffb38a) on a light base, with fine grain for texture.\n- Caption bar: white with 14 px corners and a soft shadow, sitting over the seam, Inter 800 dark text, one sentence at a time with a quick lift-and-fade swap.\n- A thin progress line under the caption bar fills across the story.\n- Never use someone else's gameplay or footage in the bottom half; draw the loop.\n\nRULES THAT KEEP IT IN STYLE\n- 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.\n- 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.\n- It will be watched on phones: at 720x1280 keep captions at 34 px or more, at most two lines, and keep the seam bar between 46% and 54% of the height. Fill the frame.\n- Keep each frame fast, well under 50 ms.\n- Give my topic its own demo content; do not reuse the reference's story (\"A storytime: \"my landlord texted me at 3am\"\") unless my content asks for it.\n\nSOUND\n- Bed: a quiet lo-fi pad (your audio leads).\n- Map events to the kit: every knife slice gets a soft crunch (a short band-passed noise burst); falling layers get a soft thud (SND.tap low); caption swaps get a barely audible tick.\n- Voiceover mix: the player calls SFX.live with { voiceover: true } once narration is loaded. Keep the crunches very soft.\n- Sync is everything: the sound score reads the same TL times as the picture.\n\nIF YOU CAN RUN CODE\nRender 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.\n\nSTYLE CARD\nName: Stack Split\nFamily: Edit Overlay\nLook: The retention split: your clip on the top half, a satisfying loop drawn in code on the bottom half (kinetic sand being sliced into rainbow layers), and a white caption bar in the seam that carries the story line by line.\nHow it explains: The top half plays your storytime clip while the bottom loops something calm and satisfying: a knife slices thin rainbow layers of sand that fall and crumble. The caption bar in the seam swaps every sentence, and a progress line under it shows how far through the story you are.\n"
|
|
1928
|
+
},
|
|
1929
|
+
{
|
|
1930
|
+
"id": "sticker-pop",
|
|
1931
|
+
"num": "54",
|
|
1932
|
+
"name": "Sticker Pop",
|
|
1933
|
+
"family": "Edit Overlay",
|
|
1934
|
+
"canvas": "720x1280",
|
|
1935
|
+
"tall": true,
|
|
1936
|
+
"lib": true,
|
|
1937
|
+
"footage": true,
|
|
1938
|
+
"look": "A cosy scrapbook layer over your vlog: die-cut stickers with thick white borders (a title pill, stars, hearts, a coffee cup), striped washi tape on the corners and a lined paper note with handwriting, all popping in with a wobble.",
|
|
1939
|
+
"how": "Stickers slap on in rhythm with what you say: a title pill first, then small mood stickers near you, a handwritten note that writes itself, and a tick-list that fills in. Each one pops with overshoot, settles with a little wobble and peels away before the next set.",
|
|
1940
|
+
"fonts": "Fredoka (600 and 700), Caveat (700)",
|
|
1941
|
+
"demo": "A study-with-me vlog intro",
|
|
1942
|
+
"replace": "TL, STICKERS (shape, colour, position, time), the title pill text, the note lines and the tick-list, and scoreSound(); load your clip with Load footage",
|
|
1943
|
+
"keep": "footage(), the die-cut sticker painter (white border, drop shadow, pop and wobble), washi tape, the lined note with the Caveat write-on, the tick-list and the peel-off exit",
|
|
1944
|
+
"sizes": "keep the title pill at 40 px or more, note handwriting at 40 px or more, and stickers at least 90 px across",
|
|
1945
|
+
"voLine": "The title pill pops on the first word, each mood sticker on the word it matches, the note writes while you say it, and each tick lands on its item.",
|
|
1946
|
+
"full": "- Full mix (no voiceover): a soft lo-fi bed, a squishy pop for each sticker, a tape rip for washi, pencil scratches for the note.",
|
|
1947
|
+
"voMix": "- Voiceover mix: the player calls SFX.live with { voiceover: true } once narration is loaded. Mark every sound soft: true.",
|
|
1948
|
+
"sheet": [
|
|
1949
|
+
"Built for your footage: stickers sit around you, never over your face; footage() shows your clip or the stand-in.",
|
|
1950
|
+
"Stickers are drawn in code with a thick white die-cut border and a soft drop shadow, in soft candy colours (pink #ff7eb6, yellow #ffd23f, mint #8de0c4, coffee #a0704a). No emoji images or brand stickers.",
|
|
1951
|
+
"Motion: pop in with overshoot (back ease), then a decaying wobble; peel off by scaling down with a tilt.",
|
|
1952
|
+
"Washi tape: translucent pastel strips with paler stripes at the frame corners.",
|
|
1953
|
+
"Notes: off-white lined paper with Caveat handwriting that writes left to right; tick boxes fill with a hand-drawn check."
|
|
1954
|
+
],
|
|
1955
|
+
"sound": [
|
|
1956
|
+
"Bed: a soft lo-fi pad with a gentle beat.",
|
|
1957
|
+
"Map events to the kit: stickers get a squishy pop (SND.bloop plus \"pop\"); tape gets a short rip (a rising band-passed noise); the note gets SND.scratch; ticks get \"marker\" short; peel-offs get a soft \"whoosh\"."
|
|
1958
|
+
],
|
|
1959
|
+
"sourceFile": "sources/sticker-pop.html",
|
|
1960
|
+
"promptFile": "prompts/sticker-pop.md",
|
|
1961
|
+
"sourceBytes": 57909,
|
|
1962
|
+
"prompt": "I want an animated video in the \"Sticker Pop\" 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.\n\nMY CONTENT\n[No topic yet. Ask me for my topic or script before building anything.]\n\nBUILD DIRECTLY\nSkip the storyboard and build the full animation now. Afterwards, list any facts or numbers you assumed.\n\nWHAT TO BUILD\nOne self-contained HTML file (an artifact if you can), built on the reference file below:\n- 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.\n- Keep the canvas at 720x1280 (9:16, for Shorts, Reels and TikTok).\n- 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.\n- Replace the demo's story: TL, STICKERS (shape, colour, position, time), the title pill text, the note lines and the tick-list, and scoreSound(); load your clip with Load footage. Keep and reuse the style's helpers (footage(), the die-cut sticker painter (white border, drop shadow, pop and wobble), washi tape, the lined note with the Caveat write-on, the tick-list and the peel-off exit).\n- Aim for 15 to 40 seconds unless my content needs more, and set the duration in TL.D.\n- Keep window.seek(t), window.DURATION, window.scoreSound and window.SFX exposed, so the video can be rendered frame by frame.\n- Load the style's fonts before the first draw, as the reference does: Fredoka (600 and 700), Caveat (700).\n\nTHE STYLE\n- Built for your footage: stickers sit around you, never over your face; footage() shows your clip or the stand-in.\n- Stickers are drawn in code with a thick white die-cut border and a soft drop shadow, in soft candy colours (pink #ff7eb6, yellow #ffd23f, mint #8de0c4, coffee #a0704a). No emoji images or brand stickers.\n- Motion: pop in with overshoot (back ease), then a decaying wobble; peel off by scaling down with a tilt.\n- Washi tape: translucent pastel strips with paler stripes at the frame corners.\n- Notes: off-white lined paper with Caveat handwriting that writes left to right; tick boxes fill with a hand-drawn check.\n\nRULES THAT KEEP IT IN STYLE\n- 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.\n- 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.\n- It will be watched on phones: at 720x1280 keep the title pill at 40 px or more, note handwriting at 40 px or more, and stickers at least 90 px across. Fill the frame.\n- Keep each frame fast, well under 50 ms.\n- Give my topic its own demo content; do not reuse the reference's story (\"A study-with-me vlog intro\") unless my content asks for it.\n\nSOUND\n- Bed: a soft lo-fi pad with a gentle beat.\n- Map events to the kit: stickers get a squishy pop (SND.bloop plus \"pop\"); tape gets a short rip (a rising band-passed noise); the note gets SND.scratch; ticks get \"marker\" short; peel-offs get a soft \"whoosh\".\n- Full mix (no voiceover): a soft lo-fi bed, a squishy pop for each sticker, a tape rip for washi, pencil scratches for the note.\n- Sync is everything: the sound score reads the same TL times as the picture.\n\nIF YOU CAN RUN CODE\nRender 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.\n\nSTYLE CARD\nName: Sticker Pop\nFamily: Edit Overlay\nLook: A cosy scrapbook layer over your vlog: die-cut stickers with thick white borders (a title pill, stars, hearts, a coffee cup), striped washi tape on the corners and a lined paper note with handwriting, all popping in with a wobble.\nHow it explains: Stickers slap on in rhythm with what you say: a title pill first, then small mood stickers near you, a handwritten note that writes itself, and a tick-list that fills in. Each one pops with overshoot, settles with a little wobble and peels away before the next set.\n",
|
|
1963
|
+
"promptVo": "I want an animated video in the \"Sticker Pop\" 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.\n\nMY CONTENT\n[No topic yet. Ask me for my topic or script before building anything.]\n\nVOICEOVER TIMING\n[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.]\n\nHow to use the timing:\n- 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.\n- Set the duration to the last word's end plus about 1.2 seconds.\n- Build the timeline (TL) from these times. The title pill pops on the first word, each mood sticker on the word it matches, the note writes while you say it, and each tick lands on its item.\n- 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.\n- Put the emphasis moves on stressed words. A counter lands at the exact moment its number is spoken.\n- Keep the player's \"Load voiceover\" button working so I can drop in my audio and hear it in sync.\n\nSTORYBOARD FIRST\nBefore building, show me a storyboard and wait for my OK:\n- 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.\n- 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.\n- Below the grid, list any facts or numbers you had to assume.\nWhen I approve it (or after my changes), build the full animation and reuse the storyboard's drawing code.\n\nWHAT TO BUILD\nOne self-contained HTML file (an artifact if you can), built on the reference file below:\n- 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.\n- Keep the canvas at 720x1280 (9:16, for Shorts, Reels and TikTok).\n- 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.\n- Replace the demo's story: TL, STICKERS (shape, colour, position, time), the title pill text, the note lines and the tick-list, and scoreSound(); load your clip with Load footage. Keep and reuse the style's helpers (footage(), the die-cut sticker painter (white border, drop shadow, pop and wobble), washi tape, the lined note with the Caveat write-on, the tick-list and the peel-off exit).\n- Aim for 15 to 40 seconds unless my content needs more, and set the duration in TL.D.\n- Keep window.seek(t), window.DURATION, window.scoreSound and window.SFX exposed, so the video can be rendered frame by frame.\n- Load the style's fonts before the first draw, as the reference does: Fredoka (600 and 700), Caveat (700).\n\nTHE STYLE\n- Built for your footage: stickers sit around you, never over your face; footage() shows your clip or the stand-in.\n- Stickers are drawn in code with a thick white die-cut border and a soft drop shadow, in soft candy colours (pink #ff7eb6, yellow #ffd23f, mint #8de0c4, coffee #a0704a). No emoji images or brand stickers.\n- Motion: pop in with overshoot (back ease), then a decaying wobble; peel off by scaling down with a tilt.\n- Washi tape: translucent pastel strips with paler stripes at the frame corners.\n- Notes: off-white lined paper with Caveat handwriting that writes left to right; tick boxes fill with a hand-drawn check.\n\nRULES THAT KEEP IT IN STYLE\n- 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.\n- 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.\n- It will be watched on phones: at 720x1280 keep the title pill at 40 px or more, note handwriting at 40 px or more, and stickers at least 90 px across. Fill the frame.\n- Keep each frame fast, well under 50 ms.\n- Give my topic its own demo content; do not reuse the reference's story (\"A study-with-me vlog intro\") unless my content asks for it.\n\nSOUND\n- Bed: a soft lo-fi pad with a gentle beat.\n- Map events to the kit: stickers get a squishy pop (SND.bloop plus \"pop\"); tape gets a short rip (a rising band-passed noise); the note gets SND.scratch; ticks get \"marker\" short; peel-offs get a soft \"whoosh\".\n- Voiceover mix: the player calls SFX.live with { voiceover: true } once narration is loaded. Mark every sound soft: true.\n- Sync is everything: the sound score reads the same TL times as the picture.\n\nIF YOU CAN RUN CODE\nRender 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.\n\nSTYLE CARD\nName: Sticker Pop\nFamily: Edit Overlay\nLook: A cosy scrapbook layer over your vlog: die-cut stickers with thick white borders (a title pill, stars, hearts, a coffee cup), striped washi tape on the corners and a lined paper note with handwriting, all popping in with a wobble.\nHow it explains: Stickers slap on in rhythm with what you say: a title pill first, then small mood stickers near you, a handwritten note that writes itself, and a tick-list that fills in. Each one pops with overshoot, settles with a little wobble and peels away before the next set.\n"
|
|
1964
|
+
},
|
|
1965
|
+
{
|
|
1966
|
+
"id": "glitch-pack",
|
|
1967
|
+
"num": "55",
|
|
1968
|
+
"name": "Glitch Pack",
|
|
1969
|
+
"family": "Edit Overlay",
|
|
1970
|
+
"canvas": "720x1280",
|
|
1971
|
+
"tall": true,
|
|
1972
|
+
"lib": true,
|
|
1973
|
+
"footage": true,
|
|
1974
|
+
"look": "A digital-glitch toolkit: RGB-split titles in Anton, horizontal slice displacement, block noise in red and cyan, scanlines, a \"SYSTEM REBOOT\" terminal tag and glitch transitions that tear your footage apart and put it back together.",
|
|
1975
|
+
"how": "The intro title glitches on (RGB split, slices, noise) and resolves crisp, then a glitch transition tears into your clip. Short glitch hits punctuate key words over the footage, and an outro glitch closes it with a version tag.",
|
|
1976
|
+
"fonts": "Anton, JetBrains Mono (700)",
|
|
1977
|
+
"demo": "A tech-channel intro and transitions (\"NEW UPDATE\")",
|
|
1978
|
+
"replace": "TL, the title words, HITS (glitch accents over the footage), the tags and scoreSound(); load your clip with Load footage",
|
|
1979
|
+
"keep": "footage(), the RGB split title, slice displacement from the canvas itself, block noise, scanlines and vignette, the glitch transition (tear in, tear out), the intensity curve glitchAt(t) and the mono tags",
|
|
1980
|
+
"sizes": "keep the title at 140 px or more, accent words at 90 px or more and tags at 22 px or more",
|
|
1981
|
+
"voLine": "The title resolves on the first word, transitions hit on cuts, and each accent glitch lands on its stressed word for 0.2 to 0.4 seconds.",
|
|
1982
|
+
"full": "- Full mix (no voiceover): digital stutters, bit-crushed zaps and a low sub drop on the title and transitions.",
|
|
1983
|
+
"voMix": "- Voiceover mix: the player calls SFX.live with { voiceover: true } once narration is loaded. Keep glitch sounds short and soft: true.",
|
|
1984
|
+
"sheet": [
|
|
1985
|
+
"Glitch is a seasoning: intense for the intro, transitions and 2 to 4 accent words, otherwise your footage plays clean.",
|
|
1986
|
+
"RGB split: draw the title three times (red #ff0040, cyan #00ffd5 with lighter blending, then white) with offsets that follow glitchAt(t).",
|
|
1987
|
+
"Slices: copy horizontal bands of the canvas onto itself shifted left or right; block noise: small red, cyan and white rectangles.",
|
|
1988
|
+
"Scanlines every 3 px and a dark vignette on top; a small mono tag (\"> SYSTEM REBOOT\", \"v2.0\") in a corner.",
|
|
1989
|
+
"Respect photosensitivity: no full-frame white flashes faster than 3 a second."
|
|
1990
|
+
],
|
|
1991
|
+
"sound": [
|
|
1992
|
+
"No music bed needed; the glitches are the sound.",
|
|
1993
|
+
"Map events to the kit: glitch moments get \"glitch\" plus bit-crushed square zaps; the title resolve gets \"slam\" and a low sub drop (a falling sine); transitions get \"whoosh\" with a \"glitch\"; tags get small beeps."
|
|
1994
|
+
],
|
|
1995
|
+
"sourceFile": "sources/glitch-pack.html",
|
|
1996
|
+
"promptFile": "prompts/glitch-pack.md",
|
|
1997
|
+
"sourceBytes": 56819,
|
|
1998
|
+
"prompt": "I want an animated video in the \"Glitch Pack\" 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.\n\nMY CONTENT\n[No topic yet. Ask me for my topic or script before building anything.]\n\nBUILD DIRECTLY\nSkip the storyboard and build the full animation now. Afterwards, list any facts or numbers you assumed.\n\nWHAT TO BUILD\nOne self-contained HTML file (an artifact if you can), built on the reference file below:\n- 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.\n- Keep the canvas at 720x1280 (9:16, for Shorts, Reels and TikTok).\n- 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.\n- Replace the demo's story: TL, the title words, HITS (glitch accents over the footage), the tags and scoreSound(); load your clip with Load footage. Keep and reuse the style's helpers (footage(), the RGB split title, slice displacement from the canvas itself, block noise, scanlines and vignette, the glitch transition (tear in, tear out), the intensity curve glitchAt(t) and the mono tags).\n- Aim for 15 to 40 seconds unless my content needs more, and set the duration in TL.D.\n- Keep window.seek(t), window.DURATION, window.scoreSound and window.SFX exposed, so the video can be rendered frame by frame.\n- Load the style's fonts before the first draw, as the reference does: Anton, JetBrains Mono (700).\n\nTHE STYLE\n- Glitch is a seasoning: intense for the intro, transitions and 2 to 4 accent words, otherwise your footage plays clean.\n- RGB split: draw the title three times (red #ff0040, cyan #00ffd5 with lighter blending, then white) with offsets that follow glitchAt(t).\n- Slices: copy horizontal bands of the canvas onto itself shifted left or right; block noise: small red, cyan and white rectangles.\n- Scanlines every 3 px and a dark vignette on top; a small mono tag (\"> SYSTEM REBOOT\", \"v2.0\") in a corner.\n- Respect photosensitivity: no full-frame white flashes faster than 3 a second.\n\nRULES THAT KEEP IT IN STYLE\n- 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.\n- 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.\n- It will be watched on phones: at 720x1280 keep the title at 140 px or more, accent words at 90 px or more and tags at 22 px or more. Fill the frame.\n- Keep each frame fast, well under 50 ms.\n- Give my topic its own demo content; do not reuse the reference's story (\"A tech-channel intro and transitions (\"NEW UPDATE\")\") unless my content asks for it.\n\nSOUND\n- No music bed needed; the glitches are the sound.\n- Map events to the kit: glitch moments get \"glitch\" plus bit-crushed square zaps; the title resolve gets \"slam\" and a low sub drop (a falling sine); transitions get \"whoosh\" with a \"glitch\"; tags get small beeps.\n- Full mix (no voiceover): digital stutters, bit-crushed zaps and a low sub drop on the title and transitions.\n- Sync is everything: the sound score reads the same TL times as the picture.\n\nIF YOU CAN RUN CODE\nRender 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.\n\nSTYLE CARD\nName: Glitch Pack\nFamily: Edit Overlay\nLook: A digital-glitch toolkit: RGB-split titles in Anton, horizontal slice displacement, block noise in red and cyan, scanlines, a \"SYSTEM REBOOT\" terminal tag and glitch transitions that tear your footage apart and put it back together.\nHow it explains: The intro title glitches on (RGB split, slices, noise) and resolves crisp, then a glitch transition tears into your clip. Short glitch hits punctuate key words over the footage, and an outro glitch closes it with a version tag.\n",
|
|
1999
|
+
"promptVo": "I want an animated video in the \"Glitch Pack\" 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.\n\nMY CONTENT\n[No topic yet. Ask me for my topic or script before building anything.]\n\nVOICEOVER TIMING\n[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.]\n\nHow to use the timing:\n- 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.\n- Set the duration to the last word's end plus about 1.2 seconds.\n- Build the timeline (TL) from these times. The title resolves on the first word, transitions hit on cuts, and each accent glitch lands on its stressed word for 0.2 to 0.4 seconds.\n- 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.\n- Put the emphasis moves on stressed words. A counter lands at the exact moment its number is spoken.\n- Keep the player's \"Load voiceover\" button working so I can drop in my audio and hear it in sync.\n\nSTORYBOARD FIRST\nBefore building, show me a storyboard and wait for my OK:\n- 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.\n- 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.\n- Below the grid, list any facts or numbers you had to assume.\nWhen I approve it (or after my changes), build the full animation and reuse the storyboard's drawing code.\n\nWHAT TO BUILD\nOne self-contained HTML file (an artifact if you can), built on the reference file below:\n- 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.\n- Keep the canvas at 720x1280 (9:16, for Shorts, Reels and TikTok).\n- 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.\n- Replace the demo's story: TL, the title words, HITS (glitch accents over the footage), the tags and scoreSound(); load your clip with Load footage. Keep and reuse the style's helpers (footage(), the RGB split title, slice displacement from the canvas itself, block noise, scanlines and vignette, the glitch transition (tear in, tear out), the intensity curve glitchAt(t) and the mono tags).\n- Aim for 15 to 40 seconds unless my content needs more, and set the duration in TL.D.\n- Keep window.seek(t), window.DURATION, window.scoreSound and window.SFX exposed, so the video can be rendered frame by frame.\n- Load the style's fonts before the first draw, as the reference does: Anton, JetBrains Mono (700).\n\nTHE STYLE\n- Glitch is a seasoning: intense for the intro, transitions and 2 to 4 accent words, otherwise your footage plays clean.\n- RGB split: draw the title three times (red #ff0040, cyan #00ffd5 with lighter blending, then white) with offsets that follow glitchAt(t).\n- Slices: copy horizontal bands of the canvas onto itself shifted left or right; block noise: small red, cyan and white rectangles.\n- Scanlines every 3 px and a dark vignette on top; a small mono tag (\"> SYSTEM REBOOT\", \"v2.0\") in a corner.\n- Respect photosensitivity: no full-frame white flashes faster than 3 a second.\n\nRULES THAT KEEP IT IN STYLE\n- 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.\n- 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.\n- It will be watched on phones: at 720x1280 keep the title at 140 px or more, accent words at 90 px or more and tags at 22 px or more. Fill the frame.\n- Keep each frame fast, well under 50 ms.\n- Give my topic its own demo content; do not reuse the reference's story (\"A tech-channel intro and transitions (\"NEW UPDATE\")\") unless my content asks for it.\n\nSOUND\n- No music bed needed; the glitches are the sound.\n- Map events to the kit: glitch moments get \"glitch\" plus bit-crushed square zaps; the title resolve gets \"slam\" and a low sub drop (a falling sine); transitions get \"whoosh\" with a \"glitch\"; tags get small beeps.\n- Voiceover mix: the player calls SFX.live with { voiceover: true } once narration is loaded. Keep glitch sounds short and soft: true.\n- Sync is everything: the sound score reads the same TL times as the picture.\n\nIF YOU CAN RUN CODE\nRender 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.\n\nSTYLE CARD\nName: Glitch Pack\nFamily: Edit Overlay\nLook: A digital-glitch toolkit: RGB-split titles in Anton, horizontal slice displacement, block noise in red and cyan, scanlines, a \"SYSTEM REBOOT\" terminal tag and glitch transitions that tear your footage apart and put it back together.\nHow it explains: The intro title glitches on (RGB split, slices, noise) and resolves crisp, then a glitch transition tears into your clip. Short glitch hits punctuate key words over the footage, and an outro glitch closes it with a version tag.\n"
|
|
2000
|
+
},
|
|
2001
|
+
{
|
|
2002
|
+
"id": "doc-cinema",
|
|
2003
|
+
"num": "56",
|
|
2004
|
+
"name": "Doc Cinema",
|
|
2005
|
+
"family": "Edit Overlay",
|
|
2006
|
+
"canvas": "720x1280",
|
|
2007
|
+
"tall": true,
|
|
2008
|
+
"lib": true,
|
|
2009
|
+
"footage": true,
|
|
2010
|
+
"look": "Mini-documentary finishing: letterbox bars, heavy film grain, a warm-cool grade, slow Ken Burns push-ins, big serif chapter titles centred in the frame, and a small mono location and date stamp in the corner.",
|
|
2011
|
+
"how": "Each chapter opens with a slow push-in and the title fading up letter-spaced in the centre, a location stamp types in at the bottom, then the title clears for the story. A soft cross-dissolve leads to the next chapter, and the end card holds in silence.",
|
|
2012
|
+
"fonts": "Instrument Serif (regular and italic), Inter (600), JetBrains Mono (500)",
|
|
2013
|
+
"demo": "The last lighthouse keeper (an invented short doc)",
|
|
2014
|
+
"replace": "TL, CHAPTERS (label, title lines, location and date, the still or shot used), the end card and scoreSound(); load your clip or stills with Load footage",
|
|
2015
|
+
"keep": "the letterbox bars, grain and vignette, the grade pass, the Ken Burns push on every shot, the centred chapter title fade with a tracked label, the typed location stamp and the cross-dissolve between chapters",
|
|
2016
|
+
"sizes": "keep chapter titles at 64 px or more, the chapter label at 20 px or more and the stamp at 20 px or more",
|
|
2017
|
+
"voLine": "Each chapter title fades in during the pause before the narration starts that chapter, and the location stamp types on the first mention of the place.",
|
|
2018
|
+
"full": "- Full mix (no voiceover): a slow, low drone and a soft piano note for each chapter title, plus room tone; leave plenty of silence.",
|
|
2019
|
+
"voMix": "- Voiceover mix: the player calls SFX.live with { voiceover: true } once narration is loaded. Keep the drone very low.",
|
|
2020
|
+
"sheet": [
|
|
2021
|
+
"Built for your footage or stills: footage() fills the frame behind the bars (your clip when loaded; an illustrated stand-in scene until then). Every shot gets a slow push-in of 4 to 8%.",
|
|
2022
|
+
"Letterbox bars top and bottom (about 6% of the height each), heavy grain (stepped at 24 fps), a vignette and a slight warm highlight / cool shadow grade.",
|
|
2023
|
+
"Chapter cards: a tracked Inter 600 label (\"CHAPTER ONE\") and a centred Instrument Serif title, the second line in italic, fading up with a slow rise; they clear before the story continues.",
|
|
2024
|
+
"Location stamps: JetBrains Mono, small, bottom left, typed on.",
|
|
2025
|
+
"For real stories use real places and dates; invented stories must not look like real archive footage."
|
|
2026
|
+
],
|
|
2027
|
+
"sound": [
|
|
2028
|
+
"Bed: a slow, low drone with room tone; long silences are part of the style.",
|
|
2029
|
+
"Map events to the kit: each chapter title gets one soft piano-like note with long reverb; stamps get very soft typewriter \"keys\"; dissolves get a slow airy swell; the end card gets a low final note."
|
|
2030
|
+
],
|
|
2031
|
+
"sourceFile": "sources/doc-cinema.html",
|
|
2032
|
+
"promptFile": "prompts/doc-cinema.md",
|
|
2033
|
+
"sourceBytes": 58066,
|
|
2034
|
+
"prompt": "I want an animated video in the \"Doc Cinema\" 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.\n\nMY CONTENT\n[No topic yet. Ask me for my topic or script before building anything.]\n\nBUILD DIRECTLY\nSkip the storyboard and build the full animation now. Afterwards, list any facts or numbers you assumed.\n\nWHAT TO BUILD\nOne self-contained HTML file (an artifact if you can), built on the reference file below:\n- 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.\n- Keep the canvas at 720x1280 (9:16, for Shorts, Reels and TikTok).\n- 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.\n- Replace the demo's story: TL, CHAPTERS (label, title lines, location and date, the still or shot used), the end card and scoreSound(); load your clip or stills with Load footage. Keep and reuse the style's helpers (the letterbox bars, grain and vignette, the grade pass, the Ken Burns push on every shot, the centred chapter title fade with a tracked label, the typed location stamp and the cross-dissolve between chapters).\n- Aim for 15 to 40 seconds unless my content needs more, and set the duration in TL.D.\n- Keep window.seek(t), window.DURATION, window.scoreSound and window.SFX exposed, so the video can be rendered frame by frame.\n- Load the style's fonts before the first draw, as the reference does: Instrument Serif (regular and italic), Inter (600), JetBrains Mono (500).\n\nTHE STYLE\n- Built for your footage or stills: footage() fills the frame behind the bars (your clip when loaded; an illustrated stand-in scene until then). Every shot gets a slow push-in of 4 to 8%.\n- Letterbox bars top and bottom (about 6% of the height each), heavy grain (stepped at 24 fps), a vignette and a slight warm highlight / cool shadow grade.\n- Chapter cards: a tracked Inter 600 label (\"CHAPTER ONE\") and a centred Instrument Serif title, the second line in italic, fading up with a slow rise; they clear before the story continues.\n- Location stamps: JetBrains Mono, small, bottom left, typed on.\n- For real stories use real places and dates; invented stories must not look like real archive footage.\n\nRULES THAT KEEP IT IN STYLE\n- 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.\n- 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.\n- It will be watched on phones: at 720x1280 keep chapter titles at 64 px or more, the chapter label at 20 px or more and the stamp at 20 px or more. Fill the frame.\n- Keep each frame fast, well under 50 ms.\n- Give my topic its own demo content; do not reuse the reference's story (\"The last lighthouse keeper (an invented short doc)\") unless my content asks for it.\n\nSOUND\n- Bed: a slow, low drone with room tone; long silences are part of the style.\n- Map events to the kit: each chapter title gets one soft piano-like note with long reverb; stamps get very soft typewriter \"keys\"; dissolves get a slow airy swell; the end card gets a low final note.\n- Full mix (no voiceover): a slow, low drone and a soft piano note for each chapter title, plus room tone; leave plenty of silence.\n- Sync is everything: the sound score reads the same TL times as the picture.\n\nIF YOU CAN RUN CODE\nRender 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.\n\nSTYLE CARD\nName: Doc Cinema\nFamily: Edit Overlay\nLook: Mini-documentary finishing: letterbox bars, heavy film grain, a warm-cool grade, slow Ken Burns push-ins, big serif chapter titles centred in the frame, and a small mono location and date stamp in the corner.\nHow it explains: Each chapter opens with a slow push-in and the title fading up letter-spaced in the centre, a location stamp types in at the bottom, then the title clears for the story. A soft cross-dissolve leads to the next chapter, and the end card holds in silence.\n",
|
|
2035
|
+
"promptVo": "I want an animated video in the \"Doc Cinema\" 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.\n\nMY CONTENT\n[No topic yet. Ask me for my topic or script before building anything.]\n\nVOICEOVER TIMING\n[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.]\n\nHow to use the timing:\n- 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.\n- Set the duration to the last word's end plus about 1.2 seconds.\n- Build the timeline (TL) from these times. Each chapter title fades in during the pause before the narration starts that chapter, and the location stamp types on the first mention of the place.\n- 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.\n- Put the emphasis moves on stressed words. A counter lands at the exact moment its number is spoken.\n- Keep the player's \"Load voiceover\" button working so I can drop in my audio and hear it in sync.\n\nSTORYBOARD FIRST\nBefore building, show me a storyboard and wait for my OK:\n- 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.\n- 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.\n- Below the grid, list any facts or numbers you had to assume.\nWhen I approve it (or after my changes), build the full animation and reuse the storyboard's drawing code.\n\nWHAT TO BUILD\nOne self-contained HTML file (an artifact if you can), built on the reference file below:\n- 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.\n- Keep the canvas at 720x1280 (9:16, for Shorts, Reels and TikTok).\n- 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.\n- Replace the demo's story: TL, CHAPTERS (label, title lines, location and date, the still or shot used), the end card and scoreSound(); load your clip or stills with Load footage. Keep and reuse the style's helpers (the letterbox bars, grain and vignette, the grade pass, the Ken Burns push on every shot, the centred chapter title fade with a tracked label, the typed location stamp and the cross-dissolve between chapters).\n- Aim for 15 to 40 seconds unless my content needs more, and set the duration in TL.D.\n- Keep window.seek(t), window.DURATION, window.scoreSound and window.SFX exposed, so the video can be rendered frame by frame.\n- Load the style's fonts before the first draw, as the reference does: Instrument Serif (regular and italic), Inter (600), JetBrains Mono (500).\n\nTHE STYLE\n- Built for your footage or stills: footage() fills the frame behind the bars (your clip when loaded; an illustrated stand-in scene until then). Every shot gets a slow push-in of 4 to 8%.\n- Letterbox bars top and bottom (about 6% of the height each), heavy grain (stepped at 24 fps), a vignette and a slight warm highlight / cool shadow grade.\n- Chapter cards: a tracked Inter 600 label (\"CHAPTER ONE\") and a centred Instrument Serif title, the second line in italic, fading up with a slow rise; they clear before the story continues.\n- Location stamps: JetBrains Mono, small, bottom left, typed on.\n- For real stories use real places and dates; invented stories must not look like real archive footage.\n\nRULES THAT KEEP IT IN STYLE\n- 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.\n- 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.\n- It will be watched on phones: at 720x1280 keep chapter titles at 64 px or more, the chapter label at 20 px or more and the stamp at 20 px or more. Fill the frame.\n- Keep each frame fast, well under 50 ms.\n- Give my topic its own demo content; do not reuse the reference's story (\"The last lighthouse keeper (an invented short doc)\") unless my content asks for it.\n\nSOUND\n- Bed: a slow, low drone with room tone; long silences are part of the style.\n- Map events to the kit: each chapter title gets one soft piano-like note with long reverb; stamps get very soft typewriter \"keys\"; dissolves get a slow airy swell; the end card gets a low final note.\n- Voiceover mix: the player calls SFX.live with { voiceover: true } once narration is loaded. Keep the drone very low.\n- Sync is everything: the sound score reads the same TL times as the picture.\n\nIF YOU CAN RUN CODE\nRender 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.\n\nSTYLE CARD\nName: Doc Cinema\nFamily: Edit Overlay\nLook: Mini-documentary finishing: letterbox bars, heavy film grain, a warm-cool grade, slow Ken Burns push-ins, big serif chapter titles centred in the frame, and a small mono location and date stamp in the corner.\nHow it explains: Each chapter opens with a slow push-in and the title fading up letter-spaced in the centre, a location stamp types in at the bottom, then the title clears for the story. A soft cross-dissolve leads to the next chapter, and the end card holds in silence.\n"
|
|
2036
|
+
},
|
|
2037
|
+
{
|
|
2038
|
+
"id": "vhs-camcorder",
|
|
2039
|
+
"num": "57",
|
|
2040
|
+
"name": "VHS Camcorder",
|
|
2041
|
+
"family": "Edit Overlay",
|
|
2042
|
+
"canvas": "720x1280",
|
|
2043
|
+
"tall": true,
|
|
2044
|
+
"lib": true,
|
|
2045
|
+
"footage": true,
|
|
2046
|
+
"look": "A home-video camcorder overlay on your footage: a blocky white PLAY or REC readout, a blinking red dot, a battery icon, a date and time stamp, a tracking-noise band that rolls through, chroma bleed, a warm faded grade and scanlines.",
|
|
2047
|
+
"how": "Your clip plays as if recorded on tape: the on-screen display ticks the clock, a tracking band rolls through every few seconds with a little horizontal tear, the colour bleeds red and cyan at the edges, and a rewind moment (REW ◀◀ with streaks) jumps between scenes.",
|
|
2048
|
+
"fonts": "VT323",
|
|
2049
|
+
"demo": "A summer nostalgia edit",
|
|
2050
|
+
"replace": "TL, the date, the start time, the rewind moments, and scoreSound(); load your clip with Load footage",
|
|
2051
|
+
"keep": "footage() under a warm, faded grade, red and cyan chroma offsets, the rolling tracking band with tear, scanlines, the VT323 on-screen display (PLAY / REC / REW, battery, date, running time), and the rewind transition",
|
|
2052
|
+
"sizes": "keep the display text at 36 px or more and inside a 40 px margin",
|
|
2053
|
+
"voLine": "Rewinds happen between thoughts; the tracking band rolls in pauses, never across a key word.",
|
|
2054
|
+
"full": "- Full mix (no voiceover): tape hiss, a soft motor hum, a mechanical click when REC or REW starts, and a fast warble for the rewind.",
|
|
2055
|
+
"voMix": "- Voiceover mix: the player calls SFX.live with { voiceover: true } once narration is loaded. Keep the hiss very low.",
|
|
2056
|
+
"sheet": [
|
|
2057
|
+
"Built for your footage: footage() under everything, then a warm faded grade (multiply warm, lift blacks), red and cyan offset copies for chroma bleed, and scanlines.",
|
|
2058
|
+
"The on-screen display uses VT323 in white with a soft dark shadow: PLAY ▶ or REC ● top left, SP below, a battery icon top right, the date and a running clock bottom left.",
|
|
2059
|
+
"A tracking band (white noise lines and a horizontal tear) rolls from top to bottom every few seconds; keep it out of faces for long.",
|
|
2060
|
+
"Rewind: REW ◀◀ replaces PLAY, horizontal streaks and a stronger tear, the clock runs backwards, then PLAY returns.",
|
|
2061
|
+
"Use a believable but clearly nostalgic date; never fake a real event's footage."
|
|
2062
|
+
],
|
|
2063
|
+
"sound": [
|
|
2064
|
+
"Bed: constant tape hiss (high-passed noise) and a quiet motor hum.",
|
|
2065
|
+
"Map events to the kit: REC, PLAY and REW get a mechanical \"click\"; the rewind gets a fast warbling, pitch-rising noise; the tracking band gets a short crackle burst."
|
|
2066
|
+
],
|
|
2067
|
+
"sourceFile": "sources/vhs-camcorder.html",
|
|
2068
|
+
"promptFile": "prompts/vhs-camcorder.md",
|
|
2069
|
+
"sourceBytes": 56580,
|
|
2070
|
+
"prompt": "I want an animated video in the \"VHS Camcorder\" 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.\n\nMY CONTENT\n[No topic yet. Ask me for my topic or script before building anything.]\n\nBUILD DIRECTLY\nSkip the storyboard and build the full animation now. Afterwards, list any facts or numbers you assumed.\n\nWHAT TO BUILD\nOne self-contained HTML file (an artifact if you can), built on the reference file below:\n- 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.\n- Keep the canvas at 720x1280 (9:16, for Shorts, Reels and TikTok).\n- 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.\n- Replace the demo's story: TL, the date, the start time, the rewind moments, and scoreSound(); load your clip with Load footage. Keep and reuse the style's helpers (footage() under a warm, faded grade, red and cyan chroma offsets, the rolling tracking band with tear, scanlines, the VT323 on-screen display (PLAY / REC / REW, battery, date, running time), and the rewind transition).\n- Aim for 15 to 40 seconds unless my content needs more, and set the duration in TL.D.\n- Keep window.seek(t), window.DURATION, window.scoreSound and window.SFX exposed, so the video can be rendered frame by frame.\n- Load the style's fonts before the first draw, as the reference does: VT323.\n\nTHE STYLE\n- Built for your footage: footage() under everything, then a warm faded grade (multiply warm, lift blacks), red and cyan offset copies for chroma bleed, and scanlines.\n- The on-screen display uses VT323 in white with a soft dark shadow: PLAY ▶ or REC ● top left, SP below, a battery icon top right, the date and a running clock bottom left.\n- A tracking band (white noise lines and a horizontal tear) rolls from top to bottom every few seconds; keep it out of faces for long.\n- Rewind: REW ◀◀ replaces PLAY, horizontal streaks and a stronger tear, the clock runs backwards, then PLAY returns.\n- Use a believable but clearly nostalgic date; never fake a real event's footage.\n\nRULES THAT KEEP IT IN STYLE\n- 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.\n- 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.\n- It will be watched on phones: at 720x1280 keep the display text at 36 px or more and inside a 40 px margin. Fill the frame.\n- Keep each frame fast, well under 50 ms.\n- Give my topic its own demo content; do not reuse the reference's story (\"A summer nostalgia edit\") unless my content asks for it.\n\nSOUND\n- Bed: constant tape hiss (high-passed noise) and a quiet motor hum.\n- Map events to the kit: REC, PLAY and REW get a mechanical \"click\"; the rewind gets a fast warbling, pitch-rising noise; the tracking band gets a short crackle burst.\n- Full mix (no voiceover): tape hiss, a soft motor hum, a mechanical click when REC or REW starts, and a fast warble for the rewind.\n- Sync is everything: the sound score reads the same TL times as the picture.\n\nIF YOU CAN RUN CODE\nRender 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.\n\nSTYLE CARD\nName: VHS Camcorder\nFamily: Edit Overlay\nLook: A home-video camcorder overlay on your footage: a blocky white PLAY or REC readout, a blinking red dot, a battery icon, a date and time stamp, a tracking-noise band that rolls through, chroma bleed, a warm faded grade and scanlines.\nHow it explains: Your clip plays as if recorded on tape: the on-screen display ticks the clock, a tracking band rolls through every few seconds with a little horizontal tear, the colour bleeds red and cyan at the edges, and a rewind moment (REW ◀◀ with streaks) jumps between scenes.\n",
|
|
2071
|
+
"promptVo": "I want an animated video in the \"VHS Camcorder\" 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.\n\nMY CONTENT\n[No topic yet. Ask me for my topic or script before building anything.]\n\nVOICEOVER TIMING\n[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.]\n\nHow to use the timing:\n- 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.\n- Set the duration to the last word's end plus about 1.2 seconds.\n- Build the timeline (TL) from these times. Rewinds happen between thoughts; the tracking band rolls in pauses, never across a key word.\n- 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.\n- Put the emphasis moves on stressed words. A counter lands at the exact moment its number is spoken.\n- Keep the player's \"Load voiceover\" button working so I can drop in my audio and hear it in sync.\n\nSTORYBOARD FIRST\nBefore building, show me a storyboard and wait for my OK:\n- 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.\n- 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.\n- Below the grid, list any facts or numbers you had to assume.\nWhen I approve it (or after my changes), build the full animation and reuse the storyboard's drawing code.\n\nWHAT TO BUILD\nOne self-contained HTML file (an artifact if you can), built on the reference file below:\n- 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.\n- Keep the canvas at 720x1280 (9:16, for Shorts, Reels and TikTok).\n- 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.\n- Replace the demo's story: TL, the date, the start time, the rewind moments, and scoreSound(); load your clip with Load footage. Keep and reuse the style's helpers (footage() under a warm, faded grade, red and cyan chroma offsets, the rolling tracking band with tear, scanlines, the VT323 on-screen display (PLAY / REC / REW, battery, date, running time), and the rewind transition).\n- Aim for 15 to 40 seconds unless my content needs more, and set the duration in TL.D.\n- Keep window.seek(t), window.DURATION, window.scoreSound and window.SFX exposed, so the video can be rendered frame by frame.\n- Load the style's fonts before the first draw, as the reference does: VT323.\n\nTHE STYLE\n- Built for your footage: footage() under everything, then a warm faded grade (multiply warm, lift blacks), red and cyan offset copies for chroma bleed, and scanlines.\n- The on-screen display uses VT323 in white with a soft dark shadow: PLAY ▶ or REC ● top left, SP below, a battery icon top right, the date and a running clock bottom left.\n- A tracking band (white noise lines and a horizontal tear) rolls from top to bottom every few seconds; keep it out of faces for long.\n- Rewind: REW ◀◀ replaces PLAY, horizontal streaks and a stronger tear, the clock runs backwards, then PLAY returns.\n- Use a believable but clearly nostalgic date; never fake a real event's footage.\n\nRULES THAT KEEP IT IN STYLE\n- 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.\n- 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.\n- It will be watched on phones: at 720x1280 keep the display text at 36 px or more and inside a 40 px margin. Fill the frame.\n- Keep each frame fast, well under 50 ms.\n- Give my topic its own demo content; do not reuse the reference's story (\"A summer nostalgia edit\") unless my content asks for it.\n\nSOUND\n- Bed: constant tape hiss (high-passed noise) and a quiet motor hum.\n- Map events to the kit: REC, PLAY and REW get a mechanical \"click\"; the rewind gets a fast warbling, pitch-rising noise; the tracking band gets a short crackle burst.\n- Voiceover mix: the player calls SFX.live with { voiceover: true } once narration is loaded. Keep the hiss very low.\n- Sync is everything: the sound score reads the same TL times as the picture.\n\nIF YOU CAN RUN CODE\nRender 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.\n\nSTYLE CARD\nName: VHS Camcorder\nFamily: Edit Overlay\nLook: A home-video camcorder overlay on your footage: a blocky white PLAY or REC readout, a blinking red dot, a battery icon, a date and time stamp, a tracking-noise band that rolls through, chroma bleed, a warm faded grade and scanlines.\nHow it explains: Your clip plays as if recorded on tape: the on-screen display ticks the clock, a tracking band rolls through every few seconds with a little horizontal tear, the colour bleeds red and cyan at the edges, and a rewind moment (REW ◀◀ with streaks) jumps between scenes.\n"
|
|
2072
|
+
},
|
|
2073
|
+
{
|
|
2074
|
+
"id": "shadow-puppets",
|
|
2075
|
+
"num": "58",
|
|
2076
|
+
"name": "Shadow Puppets",
|
|
2077
|
+
"family": "Character Story",
|
|
2078
|
+
"canvas": "720x1280",
|
|
2079
|
+
"tall": true,
|
|
2080
|
+
"lib": true,
|
|
2081
|
+
"look": "A shadow-puppet theatre: jointed black silhouette puppets on visible rods, pressed against a warm backlit paper screen that glows and flickers like a flame, with cut-out scenery, a wooden stage frame and fable lines in an elegant serif.",
|
|
2082
|
+
"how": "Puppets slide in on their rods and act with simple jointed moves (a beak that opens, a jaw that talks, a head that tilts, legs that step). Scenery pieces slide behind them, the light flickers and breathes, and each beat of the story is narrated in a serif line at the bottom before the moral closes the curtain.",
|
|
2083
|
+
"fonts": "Cormorant Garamond (600, italic), Inter (600)",
|
|
2084
|
+
"demo": "The Fox and the Crow (an Aesop fable)",
|
|
2085
|
+
"replace": "TL, the puppets (crowPuppet and foxPuppet: their shapes, joints and rod points), the scenery pieces, the story LINES and the moral, and scoreSound()",
|
|
2086
|
+
"keep": "the backlit screen with flame flicker and paper grain, the wooden frame and curtains, solid black silhouettes with thin rods to the bottom edge, jointed parts that rotate around pivots, the slide-in of puppets and scenery, the serif narration lines and the curtain close",
|
|
2087
|
+
"sizes": "keep narration at 44 px or more, the moral at 56 px or more, and puppets at least a third of the frame height",
|
|
2088
|
+
"voLine": "Each puppet slides in as it is introduced, a jaw or beak moves while that character speaks, actions (drop, catch, bow) land on their verbs, and each narration line fades in on its first word.",
|
|
2089
|
+
"full": "- Full mix (no voiceover): a gentle folk melody (plucked strings), a soft crackle of flame, wooden creaks when puppets enter, and a little drum for the key action.",
|
|
2090
|
+
"voMix": "- Voiceover mix: the player calls SFX.live with { voiceover: true } once narration is loaded. Keep the melody very low and mark creaks soft: true.",
|
|
2091
|
+
"sheet": [
|
|
2092
|
+
"Every character and prop is a solid black silhouette (#120c08) drawn in code with clean, readable outlines and a few cut-out holes (an eye, a pattern), held by thin rods running to the bottom of the screen.",
|
|
2093
|
+
"Puppets are jointed: each moving part rotates around a pivot (jaw, beak, head, wing, legs). Animate with simple, slightly stiff motion, like hands working the rods.",
|
|
2094
|
+
"The screen is warm backlit paper (radial glow #ffcf8a to #c4743a) that flickers gently (a noise-driven brightness change) with a faint paper grain; a dark wooden frame and red curtains surround it.",
|
|
2095
|
+
"Scenery (trees, hills, houses) is also silhouette, sliding in from the sides behind the puppets.",
|
|
2096
|
+
"Type: Cormorant Garamond 600 for narration in a dark band at the bottom, italic for the moral.",
|
|
2097
|
+
"Use public-domain fables and folk tales, or original stories."
|
|
2098
|
+
],
|
|
2099
|
+
"sound": [
|
|
2100
|
+
"Music: a gentle folk melody on plucked strings (triangle plucks) with a soft drone.",
|
|
2101
|
+
"Map events to the kit: puppets entering get a wooden creak (a low filtered noise sweep) and SND.tap; talking gets soft clicks; the key action gets a small drum hit (SND.thud); the curtain gets a long soft \"whoosh\"; the moral gets an open chord. A low flame crackle runs under everything."
|
|
2102
|
+
],
|
|
2103
|
+
"sourceFile": "sources/shadow-puppets.html",
|
|
2104
|
+
"promptFile": "prompts/shadow-puppets.md",
|
|
2105
|
+
"sourceBytes": 61912,
|
|
2106
|
+
"prompt": "I want an animated video in the \"Shadow Puppets\" style (Character Story) 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.\n\nMY CONTENT\n[No topic yet. Ask me for my topic or script before building anything.]\n\nBUILD DIRECTLY\nSkip the storyboard and build the full animation now. Afterwards, list any facts or numbers you assumed.\n\nWHAT TO BUILD\nOne self-contained HTML file (an artifact if you can), built on the reference file below:\n- 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.\n- Keep the canvas at 720x1280 (9:16, for Shorts, Reels and TikTok).\n- Replace the demo's story: TL, the puppets (crowPuppet and foxPuppet: their shapes, joints and rod points), the scenery pieces, the story LINES and the moral, and scoreSound(). Keep and reuse the style's helpers (the backlit screen with flame flicker and paper grain, the wooden frame and curtains, solid black silhouettes with thin rods to the bottom edge, jointed parts that rotate around pivots, the slide-in of puppets and scenery, the serif narration lines and the curtain close).\n- Aim for 15 to 40 seconds unless my content needs more, and set the duration in TL.D.\n- Keep window.seek(t), window.DURATION, window.scoreSound and window.SFX exposed, so the video can be rendered frame by frame.\n- Load the style's fonts before the first draw, as the reference does: Cormorant Garamond (600, italic), Inter (600).\n\nTHE STYLE\n- Every character and prop is a solid black silhouette (#120c08) drawn in code with clean, readable outlines and a few cut-out holes (an eye, a pattern), held by thin rods running to the bottom of the screen.\n- Puppets are jointed: each moving part rotates around a pivot (jaw, beak, head, wing, legs). Animate with simple, slightly stiff motion, like hands working the rods.\n- The screen is warm backlit paper (radial glow #ffcf8a to #c4743a) that flickers gently (a noise-driven brightness change) with a faint paper grain; a dark wooden frame and red curtains surround it.\n- Scenery (trees, hills, houses) is also silhouette, sliding in from the sides behind the puppets.\n- Type: Cormorant Garamond 600 for narration in a dark band at the bottom, italic for the moral.\n- Use public-domain fables and folk tales, or original stories.\n\nRULES THAT KEEP IT IN STYLE\n- 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.\n- 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.\n- It will be watched on phones: at 720x1280 keep narration at 44 px or more, the moral at 56 px or more, and puppets at least a third of the frame height. Fill the frame.\n- Keep each frame fast, well under 50 ms.\n- Give my topic its own demo content; do not reuse the reference's story (\"The Fox and the Crow (an Aesop fable)\") unless my content asks for it.\n\nSOUND\n- Music: a gentle folk melody on plucked strings (triangle plucks) with a soft drone.\n- Map events to the kit: puppets entering get a wooden creak (a low filtered noise sweep) and SND.tap; talking gets soft clicks; the key action gets a small drum hit (SND.thud); the curtain gets a long soft \"whoosh\"; the moral gets an open chord. A low flame crackle runs under everything.\n- Full mix (no voiceover): a gentle folk melody (plucked strings), a soft crackle of flame, wooden creaks when puppets enter, and a little drum for the key action.\n- Sync is everything: the sound score reads the same TL times as the picture.\n\nIF YOU CAN RUN CODE\nRender 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.\n\nSTYLE CARD\nName: Shadow Puppets\nFamily: Character Story\nLook: A shadow-puppet theatre: jointed black silhouette puppets on visible rods, pressed against a warm backlit paper screen that glows and flickers like a flame, with cut-out scenery, a wooden stage frame and fable lines in an elegant serif.\nHow it explains: Puppets slide in on their rods and act with simple jointed moves (a beak that opens, a jaw that talks, a head that tilts, legs that step). Scenery pieces slide behind them, the light flickers and breathes, and each beat of the story is narrated in a serif line at the bottom before the moral closes the curtain.\n",
|
|
2107
|
+
"promptVo": "I want an animated video in the \"Shadow Puppets\" style (Character Story) 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.\n\nMY CONTENT\n[No topic yet. Ask me for my topic or script before building anything.]\n\nVOICEOVER TIMING\n[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.]\n\nHow to use the timing:\n- 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.\n- Set the duration to the last word's end plus about 1.2 seconds.\n- Build the timeline (TL) from these times. Each puppet slides in as it is introduced, a jaw or beak moves while that character speaks, actions (drop, catch, bow) land on their verbs, and each narration line fades in on its first word.\n- 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.\n- Put the emphasis moves on stressed words. A counter lands at the exact moment its number is spoken.\n- Keep the player's \"Load voiceover\" button working so I can drop in my audio and hear it in sync.\n\nSTORYBOARD FIRST\nBefore building, show me a storyboard and wait for my OK:\n- 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.\n- 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.\n- Below the grid, list any facts or numbers you had to assume.\nWhen I approve it (or after my changes), build the full animation and reuse the storyboard's drawing code.\n\nWHAT TO BUILD\nOne self-contained HTML file (an artifact if you can), built on the reference file below:\n- 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.\n- Keep the canvas at 720x1280 (9:16, for Shorts, Reels and TikTok).\n- Replace the demo's story: TL, the puppets (crowPuppet and foxPuppet: their shapes, joints and rod points), the scenery pieces, the story LINES and the moral, and scoreSound(). Keep and reuse the style's helpers (the backlit screen with flame flicker and paper grain, the wooden frame and curtains, solid black silhouettes with thin rods to the bottom edge, jointed parts that rotate around pivots, the slide-in of puppets and scenery, the serif narration lines and the curtain close).\n- Aim for 15 to 40 seconds unless my content needs more, and set the duration in TL.D.\n- Keep window.seek(t), window.DURATION, window.scoreSound and window.SFX exposed, so the video can be rendered frame by frame.\n- Load the style's fonts before the first draw, as the reference does: Cormorant Garamond (600, italic), Inter (600).\n\nTHE STYLE\n- Every character and prop is a solid black silhouette (#120c08) drawn in code with clean, readable outlines and a few cut-out holes (an eye, a pattern), held by thin rods running to the bottom of the screen.\n- Puppets are jointed: each moving part rotates around a pivot (jaw, beak, head, wing, legs). Animate with simple, slightly stiff motion, like hands working the rods.\n- The screen is warm backlit paper (radial glow #ffcf8a to #c4743a) that flickers gently (a noise-driven brightness change) with a faint paper grain; a dark wooden frame and red curtains surround it.\n- Scenery (trees, hills, houses) is also silhouette, sliding in from the sides behind the puppets.\n- Type: Cormorant Garamond 600 for narration in a dark band at the bottom, italic for the moral.\n- Use public-domain fables and folk tales, or original stories.\n\nRULES THAT KEEP IT IN STYLE\n- 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.\n- 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.\n- It will be watched on phones: at 720x1280 keep narration at 44 px or more, the moral at 56 px or more, and puppets at least a third of the frame height. Fill the frame.\n- Keep each frame fast, well under 50 ms.\n- Give my topic its own demo content; do not reuse the reference's story (\"The Fox and the Crow (an Aesop fable)\") unless my content asks for it.\n\nSOUND\n- Music: a gentle folk melody on plucked strings (triangle plucks) with a soft drone.\n- Map events to the kit: puppets entering get a wooden creak (a low filtered noise sweep) and SND.tap; talking gets soft clicks; the key action gets a small drum hit (SND.thud); the curtain gets a long soft \"whoosh\"; the moral gets an open chord. A low flame crackle runs under everything.\n- Voiceover mix: the player calls SFX.live with { voiceover: true } once narration is loaded. Keep the melody very low and mark creaks soft: true.\n- Sync is everything: the sound score reads the same TL times as the picture.\n\nIF YOU CAN RUN CODE\nRender 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.\n\nSTYLE CARD\nName: Shadow Puppets\nFamily: Character Story\nLook: A shadow-puppet theatre: jointed black silhouette puppets on visible rods, pressed against a warm backlit paper screen that glows and flickers like a flame, with cut-out scenery, a wooden stage frame and fable lines in an elegant serif.\nHow it explains: Puppets slide in on their rods and act with simple jointed moves (a beak that opens, a jaw that talks, a head that tilts, legs that step). Scenery pieces slide behind them, the light flickers and breathes, and each beat of the story is narrated in a serif line at the bottom before the moral closes the curtain.\n"
|
|
2108
|
+
},
|
|
2109
|
+
{
|
|
2110
|
+
"id": "visual-novel",
|
|
2111
|
+
"num": "59",
|
|
2112
|
+
"name": "Visual Novel",
|
|
2113
|
+
"family": "Character Story",
|
|
2114
|
+
"canvas": "720x1280",
|
|
2115
|
+
"tall": true,
|
|
2116
|
+
"lib": true,
|
|
2117
|
+
"look": "A visual-novel scene: a soft, blurred painted background, a large original anime-style character bust drawn in code with big glossy eyes, swapping expressions (smile, nervous sweat, shocked, laughing with blush), and a translucent dialogue box with a name tag and typewriter text.",
|
|
2118
|
+
"how": "The story is told as dialogue: the character slides in, each line types out in the box with a blinking arrow, and her expression, pose bounce and little effects (sweat drop, sparkles, shock lines, blush) change with what she says. It ends on a two-option choice menu where a cursor picks one.",
|
|
2119
|
+
"fonts": "M PLUS Rounded 1c (500 and 800)",
|
|
2120
|
+
"demo": "Mika's first day at a new job (original character)",
|
|
2121
|
+
"replace": "TL, the character design in drawMika() (hair, colours, outfit), the background painter, DIALOGUE (speaker, line, expression, effect, time), the CHOICES and scoreSound()",
|
|
2122
|
+
"keep": "the blurred background layer, the bust rig (head, hair, eyes with highlights, brows, mouth shapes, blush) with expression presets, the slide-in and bounce, the effects (sweat, sparkle, shock lines), the dialogue box with name tag, typewriter and blinking arrow, and the choice menu with cursor",
|
|
2123
|
+
"sizes": "keep dialogue at 34 px or more, the name tag at 30 px or more, choices at 32 px or more, and the character filling at least half the frame height",
|
|
2124
|
+
"voLine": "Each line starts typing on its first spoken word and finishes as the line ends; the expression changes on the word that carries the feeling.",
|
|
2125
|
+
"full": "- Full mix (no voiceover): a light, slice-of-life piano loop, soft blips while text types, a \"boing\" for shock, a sparkle for happy moments and a select chime on the choice.",
|
|
2126
|
+
"voMix": "- Voiceover mix: the player calls SFX.live with { voiceover: true } once narration is loaded. Keep the loop low and mark blips soft: true.",
|
|
2127
|
+
"sheet": [
|
|
2128
|
+
"One original character drawn entirely in code: a big rounded head, layered hair with a shine streak, large eyes with two white highlights, simple nose and mouth shapes, a collar and shoulders. Never draw an existing anime character.",
|
|
2129
|
+
"Expressions are presets (smile, nervous, shocked, laugh, thinking) built from eyebrow angle, eye shape, mouth shape and blush; effects (sweat drop, sparkles, shock lines, a question mark) pop around the head.",
|
|
2130
|
+
"The background is a soft painted scene (an office, a classroom, a street) drawn in code and blurred, with a gentle bloom.",
|
|
2131
|
+
"Dialogue box: rounded, dark translucent (#1b1530 at 82%) with a soft pink border, a name tag pill (#ff8fb8), text typed at about 28 characters a second and a bouncing ▼ when done.",
|
|
2132
|
+
"Choices: two stacked pill buttons in the centre; a cursor moves to one and it lights up.",
|
|
2133
|
+
"Type: M PLUS Rounded 1c everywhere."
|
|
2134
|
+
],
|
|
2135
|
+
"sound": [
|
|
2136
|
+
"Music: a light slice-of-life loop (soft triangle piano chords and a simple melody).",
|
|
2137
|
+
"Map events to the kit: typing gets soft short blips per character pair; the character entering gets a soft \"whoosh\"; shock gets a boing (bending sine); happy lines get \"sparkle\"; sweat gets a small falling tone; the choice menu gets \"pop\" and the pick gets a chime."
|
|
2138
|
+
],
|
|
2139
|
+
"sourceFile": "sources/visual-novel.html",
|
|
2140
|
+
"promptFile": "prompts/visual-novel.md",
|
|
2141
|
+
"sourceBytes": 63200,
|
|
2142
|
+
"prompt": "I want an animated video in the \"Visual Novel\" style (Character Story) 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.\n\nMY CONTENT\n[No topic yet. Ask me for my topic or script before building anything.]\n\nBUILD DIRECTLY\nSkip the storyboard and build the full animation now. Afterwards, list any facts or numbers you assumed.\n\nWHAT TO BUILD\nOne self-contained HTML file (an artifact if you can), built on the reference file below:\n- 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.\n- Keep the canvas at 720x1280 (9:16, for Shorts, Reels and TikTok).\n- Replace the demo's story: TL, the character design in drawMika() (hair, colours, outfit), the background painter, DIALOGUE (speaker, line, expression, effect, time), the CHOICES and scoreSound(). Keep and reuse the style's helpers (the blurred background layer, the bust rig (head, hair, eyes with highlights, brows, mouth shapes, blush) with expression presets, the slide-in and bounce, the effects (sweat, sparkle, shock lines), the dialogue box with name tag, typewriter and blinking arrow, and the choice menu with cursor).\n- Aim for 15 to 40 seconds unless my content needs more, and set the duration in TL.D.\n- Keep window.seek(t), window.DURATION, window.scoreSound and window.SFX exposed, so the video can be rendered frame by frame.\n- Load the style's fonts before the first draw, as the reference does: M PLUS Rounded 1c (500 and 800).\n\nTHE STYLE\n- One original character drawn entirely in code: a big rounded head, layered hair with a shine streak, large eyes with two white highlights, simple nose and mouth shapes, a collar and shoulders. Never draw an existing anime character.\n- Expressions are presets (smile, nervous, shocked, laugh, thinking) built from eyebrow angle, eye shape, mouth shape and blush; effects (sweat drop, sparkles, shock lines, a question mark) pop around the head.\n- The background is a soft painted scene (an office, a classroom, a street) drawn in code and blurred, with a gentle bloom.\n- Dialogue box: rounded, dark translucent (#1b1530 at 82%) with a soft pink border, a name tag pill (#ff8fb8), text typed at about 28 characters a second and a bouncing ▼ when done.\n- Choices: two stacked pill buttons in the centre; a cursor moves to one and it lights up.\n- Type: M PLUS Rounded 1c everywhere.\n\nRULES THAT KEEP IT IN STYLE\n- 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.\n- 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.\n- It will be watched on phones: at 720x1280 keep dialogue at 34 px or more, the name tag at 30 px or more, choices at 32 px or more, and the character filling at least half the frame height. Fill the frame.\n- Keep each frame fast, well under 50 ms.\n- Give my topic its own demo content; do not reuse the reference's story (\"Mika's first day at a new job (original character)\") unless my content asks for it.\n\nSOUND\n- Music: a light slice-of-life loop (soft triangle piano chords and a simple melody).\n- Map events to the kit: typing gets soft short blips per character pair; the character entering gets a soft \"whoosh\"; shock gets a boing (bending sine); happy lines get \"sparkle\"; sweat gets a small falling tone; the choice menu gets \"pop\" and the pick gets a chime.\n- Full mix (no voiceover): a light, slice-of-life piano loop, soft blips while text types, a \"boing\" for shock, a sparkle for happy moments and a select chime on the choice.\n- Sync is everything: the sound score reads the same TL times as the picture.\n\nIF YOU CAN RUN CODE\nRender 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.\n\nSTYLE CARD\nName: Visual Novel\nFamily: Character Story\nLook: A visual-novel scene: a soft, blurred painted background, a large original anime-style character bust drawn in code with big glossy eyes, swapping expressions (smile, nervous sweat, shocked, laughing with blush), and a translucent dialogue box with a name tag and typewriter text.\nHow it explains: The story is told as dialogue: the character slides in, each line types out in the box with a blinking arrow, and her expression, pose bounce and little effects (sweat drop, sparkles, shock lines, blush) change with what she says. It ends on a two-option choice menu where a cursor picks one.\n",
|
|
2143
|
+
"promptVo": "I want an animated video in the \"Visual Novel\" style (Character Story) 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.\n\nMY CONTENT\n[No topic yet. Ask me for my topic or script before building anything.]\n\nVOICEOVER TIMING\n[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.]\n\nHow to use the timing:\n- 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.\n- Set the duration to the last word's end plus about 1.2 seconds.\n- Build the timeline (TL) from these times. Each line starts typing on its first spoken word and finishes as the line ends; the expression changes on the word that carries the feeling.\n- 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.\n- Put the emphasis moves on stressed words. A counter lands at the exact moment its number is spoken.\n- Keep the player's \"Load voiceover\" button working so I can drop in my audio and hear it in sync.\n\nSTORYBOARD FIRST\nBefore building, show me a storyboard and wait for my OK:\n- 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.\n- 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.\n- Below the grid, list any facts or numbers you had to assume.\nWhen I approve it (or after my changes), build the full animation and reuse the storyboard's drawing code.\n\nWHAT TO BUILD\nOne self-contained HTML file (an artifact if you can), built on the reference file below:\n- 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.\n- Keep the canvas at 720x1280 (9:16, for Shorts, Reels and TikTok).\n- Replace the demo's story: TL, the character design in drawMika() (hair, colours, outfit), the background painter, DIALOGUE (speaker, line, expression, effect, time), the CHOICES and scoreSound(). Keep and reuse the style's helpers (the blurred background layer, the bust rig (head, hair, eyes with highlights, brows, mouth shapes, blush) with expression presets, the slide-in and bounce, the effects (sweat, sparkle, shock lines), the dialogue box with name tag, typewriter and blinking arrow, and the choice menu with cursor).\n- Aim for 15 to 40 seconds unless my content needs more, and set the duration in TL.D.\n- Keep window.seek(t), window.DURATION, window.scoreSound and window.SFX exposed, so the video can be rendered frame by frame.\n- Load the style's fonts before the first draw, as the reference does: M PLUS Rounded 1c (500 and 800).\n\nTHE STYLE\n- One original character drawn entirely in code: a big rounded head, layered hair with a shine streak, large eyes with two white highlights, simple nose and mouth shapes, a collar and shoulders. Never draw an existing anime character.\n- Expressions are presets (smile, nervous, shocked, laugh, thinking) built from eyebrow angle, eye shape, mouth shape and blush; effects (sweat drop, sparkles, shock lines, a question mark) pop around the head.\n- The background is a soft painted scene (an office, a classroom, a street) drawn in code and blurred, with a gentle bloom.\n- Dialogue box: rounded, dark translucent (#1b1530 at 82%) with a soft pink border, a name tag pill (#ff8fb8), text typed at about 28 characters a second and a bouncing ▼ when done.\n- Choices: two stacked pill buttons in the centre; a cursor moves to one and it lights up.\n- Type: M PLUS Rounded 1c everywhere.\n\nRULES THAT KEEP IT IN STYLE\n- 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.\n- 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.\n- It will be watched on phones: at 720x1280 keep dialogue at 34 px or more, the name tag at 30 px or more, choices at 32 px or more, and the character filling at least half the frame height. Fill the frame.\n- Keep each frame fast, well under 50 ms.\n- Give my topic its own demo content; do not reuse the reference's story (\"Mika's first day at a new job (original character)\") unless my content asks for it.\n\nSOUND\n- Music: a light slice-of-life loop (soft triangle piano chords and a simple melody).\n- Map events to the kit: typing gets soft short blips per character pair; the character entering gets a soft \"whoosh\"; shock gets a boing (bending sine); happy lines get \"sparkle\"; sweat gets a small falling tone; the choice menu gets \"pop\" and the pick gets a chime.\n- Voiceover mix: the player calls SFX.live with { voiceover: true } once narration is loaded. Keep the loop low and mark blips soft: true.\n- Sync is everything: the sound score reads the same TL times as the picture.\n\nIF YOU CAN RUN CODE\nRender 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.\n\nSTYLE CARD\nName: Visual Novel\nFamily: Character Story\nLook: A visual-novel scene: a soft, blurred painted background, a large original anime-style character bust drawn in code with big glossy eyes, swapping expressions (smile, nervous sweat, shocked, laughing with blush), and a translucent dialogue box with a name tag and typewriter text.\nHow it explains: The story is told as dialogue: the character slides in, each line types out in the box with a blinking arrow, and her expression, pose bounce and little effects (sweat drop, sparkles, shock lines, blush) change with what she says. It ends on a two-option choice menu where a cursor picks one.\n"
|
|
2144
|
+
},
|
|
2145
|
+
{
|
|
2146
|
+
"id": "rubber-hose-reel",
|
|
2147
|
+
"num": "60",
|
|
2148
|
+
"name": "Rubber Hose Reel",
|
|
2149
|
+
"family": "Character Story",
|
|
2150
|
+
"canvas": "720x1280",
|
|
2151
|
+
"tall": true,
|
|
2152
|
+
"lib": true,
|
|
2153
|
+
"look": "A 1930s black-and-white cartoon: an original rubber-hose character with noodle limbs, pie-cut eyes and white gloves bouncing on the beat, on a grey painted set, with film flicker, dust, scratches, a gate weave and art-deco title cards.",
|
|
2154
|
+
"how": "The whole short bounces to the music: the character and even the props squash and stretch on every beat. Title cards in an art-deco frame open each act, the gag builds in three beats with exaggerated takes (eyes pop, jaw drops), and an iris closes on THE END.",
|
|
2155
|
+
"fonts": "Limelight, Special Elite",
|
|
2156
|
+
"demo": "The cat who hated Mondays (original character)",
|
|
2157
|
+
"replace": "TL, the character (drawCat: body, head shape, face), the props and set, the gag beats (ACTS and their poses), the title card text and scoreSound()",
|
|
2158
|
+
"keep": "the rubber-hose limb renderer (bezier noodle limbs with white gloves and big shoes), the pie-cut eyes, the on-beat bounce (BEAT), squash and stretch, the grey painted set, film flicker, dust, scratches and gate weave, the art-deco title card and the THE END iris",
|
|
2159
|
+
"sizes": "keep title cards at 70 px or more and caption cards at 36 px or more; keep the character at least 40% of the frame height",
|
|
2160
|
+
"voLine": "Every bounce sits on the music beat; the takes (eyes popping, jaw drop) land on the punch words, and title cards appear in pauses.",
|
|
2161
|
+
"full": "- Full mix (no voiceover): a ragtime loop (oom-pah bass, stride chords, a honky melody), slide whistle, boings, a cymbal crash for the big gag, and projector clatter underneath.",
|
|
2162
|
+
"voMix": "- Voiceover mix: the player calls SFX.live with { voiceover: true } once narration is loaded. Keep the ragtime low; keep the slide whistle and boings.",
|
|
2163
|
+
"sheet": [
|
|
2164
|
+
"An original character only (never Mickey, Felix, Bimbo, Cuphead or any studio character): a round body, noodle limbs drawn as thick bezier hoses with white four-finger gloves and big round shoes, and pie-cut eyes.",
|
|
2165
|
+
"Everything bounces on the beat (BEAT seconds): characters, props, even the furniture squash and stretch in time.",
|
|
2166
|
+
"Black, white and greys only, painted with soft gradients; on top: flicker (frame-to-frame brightness), dust specks, vertical scratches, a gentle gate weave and a strong vignette.",
|
|
2167
|
+
"Title cards: an art-deco double frame with corner fans, Limelight lettering, on black.",
|
|
2168
|
+
"Takes are big: eyes pop out on stalks, jaw drops, hat flies off, motion lines and impact stars.",
|
|
2169
|
+
"End with a black iris closing on the character and a THE END card."
|
|
2170
|
+
],
|
|
2171
|
+
"sound": [
|
|
2172
|
+
"Music: a ragtime loop: oom-pah bass on 1 and 3, stride chords on 2 and 4 (square or triangle), and a simple honky melody.",
|
|
2173
|
+
"Map events to the kit: jumps get a slide whistle (a rising then falling sine); bonks get a boing; the big gag gets a cymbal crash (bright noise) and \"boom\"; title cards get a projector clatter; the iris gets a short descending run."
|
|
2174
|
+
],
|
|
2175
|
+
"sourceFile": "sources/rubber-hose-reel.html",
|
|
2176
|
+
"promptFile": "prompts/rubber-hose-reel.md",
|
|
2177
|
+
"sourceBytes": 65285,
|
|
2178
|
+
"prompt": "I want an animated video in the \"Rubber Hose Reel\" style (Character Story) 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.\n\nMY CONTENT\n[No topic yet. Ask me for my topic or script before building anything.]\n\nBUILD DIRECTLY\nSkip the storyboard and build the full animation now. Afterwards, list any facts or numbers you assumed.\n\nWHAT TO BUILD\nOne self-contained HTML file (an artifact if you can), built on the reference file below:\n- 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.\n- Keep the canvas at 720x1280 (9:16, for Shorts, Reels and TikTok).\n- Replace the demo's story: TL, the character (drawCat: body, head shape, face), the props and set, the gag beats (ACTS and their poses), the title card text and scoreSound(). Keep and reuse the style's helpers (the rubber-hose limb renderer (bezier noodle limbs with white gloves and big shoes), the pie-cut eyes, the on-beat bounce (BEAT), squash and stretch, the grey painted set, film flicker, dust, scratches and gate weave, the art-deco title card and the THE END iris).\n- Aim for 15 to 40 seconds unless my content needs more, and set the duration in TL.D.\n- Keep window.seek(t), window.DURATION, window.scoreSound and window.SFX exposed, so the video can be rendered frame by frame.\n- Load the style's fonts before the first draw, as the reference does: Limelight, Special Elite.\n\nTHE STYLE\n- An original character only (never Mickey, Felix, Bimbo, Cuphead or any studio character): a round body, noodle limbs drawn as thick bezier hoses with white four-finger gloves and big round shoes, and pie-cut eyes.\n- Everything bounces on the beat (BEAT seconds): characters, props, even the furniture squash and stretch in time.\n- Black, white and greys only, painted with soft gradients; on top: flicker (frame-to-frame brightness), dust specks, vertical scratches, a gentle gate weave and a strong vignette.\n- Title cards: an art-deco double frame with corner fans, Limelight lettering, on black.\n- Takes are big: eyes pop out on stalks, jaw drops, hat flies off, motion lines and impact stars.\n- End with a black iris closing on the character and a THE END card.\n\nRULES THAT KEEP IT IN STYLE\n- 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.\n- 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.\n- It will be watched on phones: at 720x1280 keep title cards at 70 px or more and caption cards at 36 px or more; keep the character at least 40% of the frame height. Fill the frame.\n- Keep each frame fast, well under 50 ms.\n- Give my topic its own demo content; do not reuse the reference's story (\"The cat who hated Mondays (original character)\") unless my content asks for it.\n\nSOUND\n- Music: a ragtime loop: oom-pah bass on 1 and 3, stride chords on 2 and 4 (square or triangle), and a simple honky melody.\n- Map events to the kit: jumps get a slide whistle (a rising then falling sine); bonks get a boing; the big gag gets a cymbal crash (bright noise) and \"boom\"; title cards get a projector clatter; the iris gets a short descending run.\n- Full mix (no voiceover): a ragtime loop (oom-pah bass, stride chords, a honky melody), slide whistle, boings, a cymbal crash for the big gag, and projector clatter underneath.\n- Sync is everything: the sound score reads the same TL times as the picture.\n\nIF YOU CAN RUN CODE\nRender 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.\n\nSTYLE CARD\nName: Rubber Hose Reel\nFamily: Character Story\nLook: A 1930s black-and-white cartoon: an original rubber-hose character with noodle limbs, pie-cut eyes and white gloves bouncing on the beat, on a grey painted set, with film flicker, dust, scratches, a gate weave and art-deco title cards.\nHow it explains: The whole short bounces to the music: the character and even the props squash and stretch on every beat. Title cards in an art-deco frame open each act, the gag builds in three beats with exaggerated takes (eyes pop, jaw drops), and an iris closes on THE END.\n",
|
|
2179
|
+
"promptVo": "I want an animated video in the \"Rubber Hose Reel\" style (Character Story) 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.\n\nMY CONTENT\n[No topic yet. Ask me for my topic or script before building anything.]\n\nVOICEOVER TIMING\n[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.]\n\nHow to use the timing:\n- 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.\n- Set the duration to the last word's end plus about 1.2 seconds.\n- Build the timeline (TL) from these times. Every bounce sits on the music beat; the takes (eyes popping, jaw drop) land on the punch words, and title cards appear in pauses.\n- 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.\n- Put the emphasis moves on stressed words. A counter lands at the exact moment its number is spoken.\n- Keep the player's \"Load voiceover\" button working so I can drop in my audio and hear it in sync.\n\nSTORYBOARD FIRST\nBefore building, show me a storyboard and wait for my OK:\n- 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.\n- 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.\n- Below the grid, list any facts or numbers you had to assume.\nWhen I approve it (or after my changes), build the full animation and reuse the storyboard's drawing code.\n\nWHAT TO BUILD\nOne self-contained HTML file (an artifact if you can), built on the reference file below:\n- 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.\n- Keep the canvas at 720x1280 (9:16, for Shorts, Reels and TikTok).\n- Replace the demo's story: TL, the character (drawCat: body, head shape, face), the props and set, the gag beats (ACTS and their poses), the title card text and scoreSound(). Keep and reuse the style's helpers (the rubber-hose limb renderer (bezier noodle limbs with white gloves and big shoes), the pie-cut eyes, the on-beat bounce (BEAT), squash and stretch, the grey painted set, film flicker, dust, scratches and gate weave, the art-deco title card and the THE END iris).\n- Aim for 15 to 40 seconds unless my content needs more, and set the duration in TL.D.\n- Keep window.seek(t), window.DURATION, window.scoreSound and window.SFX exposed, so the video can be rendered frame by frame.\n- Load the style's fonts before the first draw, as the reference does: Limelight, Special Elite.\n\nTHE STYLE\n- An original character only (never Mickey, Felix, Bimbo, Cuphead or any studio character): a round body, noodle limbs drawn as thick bezier hoses with white four-finger gloves and big round shoes, and pie-cut eyes.\n- Everything bounces on the beat (BEAT seconds): characters, props, even the furniture squash and stretch in time.\n- Black, white and greys only, painted with soft gradients; on top: flicker (frame-to-frame brightness), dust specks, vertical scratches, a gentle gate weave and a strong vignette.\n- Title cards: an art-deco double frame with corner fans, Limelight lettering, on black.\n- Takes are big: eyes pop out on stalks, jaw drops, hat flies off, motion lines and impact stars.\n- End with a black iris closing on the character and a THE END card.\n\nRULES THAT KEEP IT IN STYLE\n- 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.\n- 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.\n- It will be watched on phones: at 720x1280 keep title cards at 70 px or more and caption cards at 36 px or more; keep the character at least 40% of the frame height. Fill the frame.\n- Keep each frame fast, well under 50 ms.\n- Give my topic its own demo content; do not reuse the reference's story (\"The cat who hated Mondays (original character)\") unless my content asks for it.\n\nSOUND\n- Music: a ragtime loop: oom-pah bass on 1 and 3, stride chords on 2 and 4 (square or triangle), and a simple honky melody.\n- Map events to the kit: jumps get a slide whistle (a rising then falling sine); bonks get a boing; the big gag gets a cymbal crash (bright noise) and \"boom\"; title cards get a projector clatter; the iris gets a short descending run.\n- Voiceover mix: the player calls SFX.live with { voiceover: true } once narration is loaded. Keep the ragtime low; keep the slide whistle and boings.\n- Sync is everything: the sound score reads the same TL times as the picture.\n\nIF YOU CAN RUN CODE\nRender 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.\n\nSTYLE CARD\nName: Rubber Hose Reel\nFamily: Character Story\nLook: A 1930s black-and-white cartoon: an original rubber-hose character with noodle limbs, pie-cut eyes and white gloves bouncing on the beat, on a grey painted set, with film flicker, dust, scratches, a gate weave and art-deco title cards.\nHow it explains: The whole short bounces to the music: the character and even the props squash and stretch on every beat. Title cards in an art-deco frame open each act, the gag builds in three beats with exaggerated takes (eyes pop, jaw drops), and an iris closes on THE END.\n"
|
|
2180
|
+
},
|
|
2181
|
+
{
|
|
2182
|
+
"id": "woodcut-tale",
|
|
2183
|
+
"num": "61",
|
|
2184
|
+
"name": "Woodcut Tale",
|
|
2185
|
+
"family": "Character Story",
|
|
2186
|
+
"canvas": "720x1280",
|
|
2187
|
+
"tall": true,
|
|
2188
|
+
"lib": true,
|
|
2189
|
+
"look": "A two-colour woodcut print come to life: cream paper, bold black ink shapes with white carved hatching inside them, a red second colour slightly out of register, ink speckle and paper grain, with old-style serif captions in a carved border.",
|
|
2190
|
+
"how": "Each scene is a print: the hills, sun and characters are inked shapes with carved lines, moving at a stiff 8 frames a second like a printed flipbook. Scenes change with a quick paper wipe, captions sit in a carved panel, and the moral is printed in red at the end.",
|
|
2191
|
+
"fonts": "IM Fell English (regular and italic), IM Fell English SC",
|
|
2192
|
+
"demo": "The Tortoise and the Hare (an Aesop fable)",
|
|
2193
|
+
"replace": "TL, the characters (hare() and tortoise(): silhouettes, carve lines and walk cycles), the SCENES (landscape and staging), the captions and moral, and scoreSound()",
|
|
2194
|
+
"keep": "the cream paper with speckle, black ink shapes with carve() hatching, the red layer with a small registration offset, the 8 fps stepped motion, the carved border panel for captions, the paper wipe between scenes and the IM Fell type",
|
|
2195
|
+
"sizes": "keep captions at 46 px or more, the moral at 60 px or more and characters at least 20% of the frame height",
|
|
2196
|
+
"voLine": "Each scene starts on the first word of its sentence, character actions (dash, sleep, wake, cross the line) land on their verbs, and the moral prints on the last line.",
|
|
2197
|
+
"full": "- Full mix (no voiceover): a simple folk tune on a plucked instrument, wooden taps for steps, a fast scurry for the hare, a snore, and a fanfare at the finish.",
|
|
2198
|
+
"voMix": "- Voiceover mix: the player calls SFX.live with { voiceover: true } once narration is loaded. Keep the tune low and mark taps soft: true.",
|
|
2199
|
+
"sheet": [
|
|
2200
|
+
"Two inks only: black (#1a1410) and red (#b8322a) on cream paper (#efe6d2). The red layer is printed 3 px off register.",
|
|
2201
|
+
"Every inked shape is solid with white carved lines inside it (carve(): parallel or contour hatching clipped to the shape), and hills and skies use bands of carved lines, like a block print.",
|
|
2202
|
+
"Characters are strong silhouettes with a few carved details (fur lines, shell plates) and simple 2-pose walk or run cycles.",
|
|
2203
|
+
"Motion runs on an 8 fps clock with a tiny jitter, never smooth; scenes change with a paper wipe.",
|
|
2204
|
+
"Captions sit in a carved double-line border panel at the bottom in IM Fell English; the moral is printed in red small caps.",
|
|
2205
|
+
"Use public-domain fables and folk tales, or original stories."
|
|
2206
|
+
],
|
|
2207
|
+
"sound": [
|
|
2208
|
+
"Music: a simple folk tune on a plucked string (triangle plucks) with a drone.",
|
|
2209
|
+
"Map events to the kit: the tortoise's steps get soft wooden taps (SND.tap); the hare's run gets a fast scurry (quick soft ticks) and a \"whoosh\"; sleep gets a snore (a slow filtered noise swell); scene wipes get SND.paper; the finish gets a small fanfare (triangle arpeggio) and \"shimmer\"."
|
|
2210
|
+
],
|
|
2211
|
+
"sourceFile": "sources/woodcut-tale.html",
|
|
2212
|
+
"promptFile": "prompts/woodcut-tale.md",
|
|
2213
|
+
"sourceBytes": 62005,
|
|
2214
|
+
"prompt": "I want an animated video in the \"Woodcut Tale\" style (Character Story) 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.\n\nMY CONTENT\n[No topic yet. Ask me for my topic or script before building anything.]\n\nBUILD DIRECTLY\nSkip the storyboard and build the full animation now. Afterwards, list any facts or numbers you assumed.\n\nWHAT TO BUILD\nOne self-contained HTML file (an artifact if you can), built on the reference file below:\n- 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.\n- Keep the canvas at 720x1280 (9:16, for Shorts, Reels and TikTok).\n- Replace the demo's story: TL, the characters (hare() and tortoise(): silhouettes, carve lines and walk cycles), the SCENES (landscape and staging), the captions and moral, and scoreSound(). Keep and reuse the style's helpers (the cream paper with speckle, black ink shapes with carve() hatching, the red layer with a small registration offset, the 8 fps stepped motion, the carved border panel for captions, the paper wipe between scenes and the IM Fell type).\n- Aim for 15 to 40 seconds unless my content needs more, and set the duration in TL.D.\n- Keep window.seek(t), window.DURATION, window.scoreSound and window.SFX exposed, so the video can be rendered frame by frame.\n- Load the style's fonts before the first draw, as the reference does: IM Fell English (regular and italic), IM Fell English SC.\n\nTHE STYLE\n- Two inks only: black (#1a1410) and red (#b8322a) on cream paper (#efe6d2). The red layer is printed 3 px off register.\n- Every inked shape is solid with white carved lines inside it (carve(): parallel or contour hatching clipped to the shape), and hills and skies use bands of carved lines, like a block print.\n- Characters are strong silhouettes with a few carved details (fur lines, shell plates) and simple 2-pose walk or run cycles.\n- Motion runs on an 8 fps clock with a tiny jitter, never smooth; scenes change with a paper wipe.\n- Captions sit in a carved double-line border panel at the bottom in IM Fell English; the moral is printed in red small caps.\n- Use public-domain fables and folk tales, or original stories.\n\nRULES THAT KEEP IT IN STYLE\n- 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.\n- 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.\n- It will be watched on phones: at 720x1280 keep captions at 46 px or more, the moral at 60 px or more and characters at least 20% of the frame height. Fill the frame.\n- Keep each frame fast, well under 50 ms.\n- Give my topic its own demo content; do not reuse the reference's story (\"The Tortoise and the Hare (an Aesop fable)\") unless my content asks for it.\n\nSOUND\n- Music: a simple folk tune on a plucked string (triangle plucks) with a drone.\n- Map events to the kit: the tortoise's steps get soft wooden taps (SND.tap); the hare's run gets a fast scurry (quick soft ticks) and a \"whoosh\"; sleep gets a snore (a slow filtered noise swell); scene wipes get SND.paper; the finish gets a small fanfare (triangle arpeggio) and \"shimmer\".\n- Full mix (no voiceover): a simple folk tune on a plucked instrument, wooden taps for steps, a fast scurry for the hare, a snore, and a fanfare at the finish.\n- Sync is everything: the sound score reads the same TL times as the picture.\n\nIF YOU CAN RUN CODE\nRender 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.\n\nSTYLE CARD\nName: Woodcut Tale\nFamily: Character Story\nLook: A two-colour woodcut print come to life: cream paper, bold black ink shapes with white carved hatching inside them, a red second colour slightly out of register, ink speckle and paper grain, with old-style serif captions in a carved border.\nHow it explains: Each scene is a print: the hills, sun and characters are inked shapes with carved lines, moving at a stiff 8 frames a second like a printed flipbook. Scenes change with a quick paper wipe, captions sit in a carved panel, and the moral is printed in red at the end.\n",
|
|
2215
|
+
"promptVo": "I want an animated video in the \"Woodcut Tale\" style (Character Story) 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.\n\nMY CONTENT\n[No topic yet. Ask me for my topic or script before building anything.]\n\nVOICEOVER TIMING\n[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.]\n\nHow to use the timing:\n- 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.\n- Set the duration to the last word's end plus about 1.2 seconds.\n- Build the timeline (TL) from these times. Each scene starts on the first word of its sentence, character actions (dash, sleep, wake, cross the line) land on their verbs, and the moral prints on the last line.\n- 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.\n- Put the emphasis moves on stressed words. A counter lands at the exact moment its number is spoken.\n- Keep the player's \"Load voiceover\" button working so I can drop in my audio and hear it in sync.\n\nSTORYBOARD FIRST\nBefore building, show me a storyboard and wait for my OK:\n- 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.\n- 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.\n- Below the grid, list any facts or numbers you had to assume.\nWhen I approve it (or after my changes), build the full animation and reuse the storyboard's drawing code.\n\nWHAT TO BUILD\nOne self-contained HTML file (an artifact if you can), built on the reference file below:\n- 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.\n- Keep the canvas at 720x1280 (9:16, for Shorts, Reels and TikTok).\n- Replace the demo's story: TL, the characters (hare() and tortoise(): silhouettes, carve lines and walk cycles), the SCENES (landscape and staging), the captions and moral, and scoreSound(). Keep and reuse the style's helpers (the cream paper with speckle, black ink shapes with carve() hatching, the red layer with a small registration offset, the 8 fps stepped motion, the carved border panel for captions, the paper wipe between scenes and the IM Fell type).\n- Aim for 15 to 40 seconds unless my content needs more, and set the duration in TL.D.\n- Keep window.seek(t), window.DURATION, window.scoreSound and window.SFX exposed, so the video can be rendered frame by frame.\n- Load the style's fonts before the first draw, as the reference does: IM Fell English (regular and italic), IM Fell English SC.\n\nTHE STYLE\n- Two inks only: black (#1a1410) and red (#b8322a) on cream paper (#efe6d2). The red layer is printed 3 px off register.\n- Every inked shape is solid with white carved lines inside it (carve(): parallel or contour hatching clipped to the shape), and hills and skies use bands of carved lines, like a block print.\n- Characters are strong silhouettes with a few carved details (fur lines, shell plates) and simple 2-pose walk or run cycles.\n- Motion runs on an 8 fps clock with a tiny jitter, never smooth; scenes change with a paper wipe.\n- Captions sit in a carved double-line border panel at the bottom in IM Fell English; the moral is printed in red small caps.\n- Use public-domain fables and folk tales, or original stories.\n\nRULES THAT KEEP IT IN STYLE\n- 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.\n- 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.\n- It will be watched on phones: at 720x1280 keep captions at 46 px or more, the moral at 60 px or more and characters at least 20% of the frame height. Fill the frame.\n- Keep each frame fast, well under 50 ms.\n- Give my topic its own demo content; do not reuse the reference's story (\"The Tortoise and the Hare (an Aesop fable)\") unless my content asks for it.\n\nSOUND\n- Music: a simple folk tune on a plucked string (triangle plucks) with a drone.\n- Map events to the kit: the tortoise's steps get soft wooden taps (SND.tap); the hare's run gets a fast scurry (quick soft ticks) and a \"whoosh\"; sleep gets a snore (a slow filtered noise swell); scene wipes get SND.paper; the finish gets a small fanfare (triangle arpeggio) and \"shimmer\".\n- Voiceover mix: the player calls SFX.live with { voiceover: true } once narration is loaded. Keep the tune low and mark taps soft: true.\n- Sync is everything: the sound score reads the same TL times as the picture.\n\nIF YOU CAN RUN CODE\nRender 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.\n\nSTYLE CARD\nName: Woodcut Tale\nFamily: Character Story\nLook: A two-colour woodcut print come to life: cream paper, bold black ink shapes with white carved hatching inside them, a red second colour slightly out of register, ink speckle and paper grain, with old-style serif captions in a carved border.\nHow it explains: Each scene is a print: the hills, sun and characters are inked shapes with carved lines, moving at a stiff 8 frames a second like a printed flipbook. Scenes change with a quick paper wipe, captions sit in a carved panel, and the moral is printed in red at the end.\n"
|
|
2216
|
+
},
|
|
2217
|
+
{
|
|
2218
|
+
"id": "neon-line",
|
|
2219
|
+
"num": "62",
|
|
2220
|
+
"name": "Neon Line",
|
|
2221
|
+
"family": "Character Story",
|
|
2222
|
+
"canvas": "720x1280",
|
|
2223
|
+
"tall": true,
|
|
2224
|
+
"lib": true,
|
|
2225
|
+
"look": "Characters drawn as single continuous glowing neon lines on a deep night-blue wall: one pink, one cyan, with a soft bloom, a flicker when they switch on, neon-script captions, and small glowing props (phones, clocks, a skyline) in the same line style.",
|
|
2226
|
+
"how": "Each character draws itself in one stroke as if a neon tube is lighting up. Props and connections draw between them (a dashed glowing call line, clocks with different times), they move toward each other as a counter falls, and their two lines meet and merge into one shape for the ending.",
|
|
2227
|
+
"fonts": "Caveat (700, as neon script), JetBrains Mono (500)",
|
|
2228
|
+
"demo": "A long-distance love story (original)",
|
|
2229
|
+
"replace": "TL, the character paths (FIG_A and FIG_B: one continuous polyline each), their colours, the props (phones, clocks, skyline), the counter, the captions and the merge shape, and scoreSound()",
|
|
2230
|
+
"keep": "the night-blue wall with faint brick lines, the neon renderer (a wide soft glow pass, a bright core and a white centre), the one-stroke draw-on, the switch-on flicker, the dashed call line, the walking motion, the line merge into a heart and the Caveat neon captions",
|
|
2231
|
+
"sizes": "keep captions at 56 px or more and characters at least 30% of the frame height; line cores at 5 px or more",
|
|
2232
|
+
"voLine": "Each figure draws on while it is introduced, the call line connects on \"call\" or \"talk\", the counter falls while the distance shrinks in the narration, and the merge lands on the last line.",
|
|
2233
|
+
"full": "- Full mix (no voiceover): a warm, slow synth pad, a neon buzz and click when each line switches on, a soft ring for the call, and a gentle chord for the merge.",
|
|
2234
|
+
"voMix": "- Voiceover mix: the player calls SFX.live with { voiceover: true } once narration is loaded. Keep the buzz very low.",
|
|
2235
|
+
"sheet": [
|
|
2236
|
+
"Background: a deep night-blue wall (#070b1a) with faint brick lines and a dark vignette, like a real neon sign mounted on a wall.",
|
|
2237
|
+
"Every figure is one continuous polyline (a single neon tube), drawn on by path length; render it three times: a wide blurred glow in its colour, a bright core, and a thin white centre.",
|
|
2238
|
+
"Only two or three neon colours: pink (#ff4fa3), cyan (#36e1ff) and a warm yellow (#ffd36b) for small details.",
|
|
2239
|
+
"Lines switch on with a short flicker (two or three off-on blinks) and buzz faintly.",
|
|
2240
|
+
"Captions in Caveat as neon script in the same glow treatment; small data (distances, times) in JetBrains Mono.",
|
|
2241
|
+
"Pace: each figure takes 1 to 1.5 seconds to draw; one new prop or beat every 2 seconds; hold the final merged shape about 2 seconds."
|
|
2242
|
+
],
|
|
2243
|
+
"sound": [
|
|
2244
|
+
"Bed: a slow, warm synth pad (padBed) with a soft pulse.",
|
|
2245
|
+
"Map events to the kit: neon switch-ons get a click and a short buzz (a low square hum with a fast tremolo); the call line gets a soft ring (\"ping\"); the falling counter gets soft ticks; the merge gets \"shimmer\" and a gentle chord."
|
|
2246
|
+
],
|
|
2247
|
+
"sourceFile": "sources/neon-line.html",
|
|
2248
|
+
"promptFile": "prompts/neon-line.md",
|
|
2249
|
+
"sourceBytes": 59275,
|
|
2250
|
+
"prompt": "I want an animated video in the \"Neon Line\" style (Character Story) 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.\n\nMY CONTENT\n[No topic yet. Ask me for my topic or script before building anything.]\n\nBUILD DIRECTLY\nSkip the storyboard and build the full animation now. Afterwards, list any facts or numbers you assumed.\n\nWHAT TO BUILD\nOne self-contained HTML file (an artifact if you can), built on the reference file below:\n- 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.\n- Keep the canvas at 720x1280 (9:16, for Shorts, Reels and TikTok).\n- Replace the demo's story: TL, the character paths (FIG_A and FIG_B: one continuous polyline each), their colours, the props (phones, clocks, skyline), the counter, the captions and the merge shape, and scoreSound(). Keep and reuse the style's helpers (the night-blue wall with faint brick lines, the neon renderer (a wide soft glow pass, a bright core and a white centre), the one-stroke draw-on, the switch-on flicker, the dashed call line, the walking motion, the line merge into a heart and the Caveat neon captions).\n- Aim for 15 to 40 seconds unless my content needs more, and set the duration in TL.D.\n- Keep window.seek(t), window.DURATION, window.scoreSound and window.SFX exposed, so the video can be rendered frame by frame.\n- Load the style's fonts before the first draw, as the reference does: Caveat (700, as neon script), JetBrains Mono (500).\n\nTHE STYLE\n- Background: a deep night-blue wall (#070b1a) with faint brick lines and a dark vignette, like a real neon sign mounted on a wall.\n- Every figure is one continuous polyline (a single neon tube), drawn on by path length; render it three times: a wide blurred glow in its colour, a bright core, and a thin white centre.\n- Only two or three neon colours: pink (#ff4fa3), cyan (#36e1ff) and a warm yellow (#ffd36b) for small details.\n- Lines switch on with a short flicker (two or three off-on blinks) and buzz faintly.\n- Captions in Caveat as neon script in the same glow treatment; small data (distances, times) in JetBrains Mono.\n- Pace: each figure takes 1 to 1.5 seconds to draw; one new prop or beat every 2 seconds; hold the final merged shape about 2 seconds.\n\nRULES THAT KEEP IT IN STYLE\n- 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.\n- 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.\n- It will be watched on phones: at 720x1280 keep captions at 56 px or more and characters at least 30% of the frame height; line cores at 5 px or more. Fill the frame.\n- Keep each frame fast, well under 50 ms.\n- Give my topic its own demo content; do not reuse the reference's story (\"A long-distance love story (original)\") unless my content asks for it.\n\nSOUND\n- Bed: a slow, warm synth pad (padBed) with a soft pulse.\n- Map events to the kit: neon switch-ons get a click and a short buzz (a low square hum with a fast tremolo); the call line gets a soft ring (\"ping\"); the falling counter gets soft ticks; the merge gets \"shimmer\" and a gentle chord.\n- Full mix (no voiceover): a warm, slow synth pad, a neon buzz and click when each line switches on, a soft ring for the call, and a gentle chord for the merge.\n- Sync is everything: the sound score reads the same TL times as the picture.\n\nIF YOU CAN RUN CODE\nRender 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.\n\nSTYLE CARD\nName: Neon Line\nFamily: Character Story\nLook: Characters drawn as single continuous glowing neon lines on a deep night-blue wall: one pink, one cyan, with a soft bloom, a flicker when they switch on, neon-script captions, and small glowing props (phones, clocks, a skyline) in the same line style.\nHow it explains: Each character draws itself in one stroke as if a neon tube is lighting up. Props and connections draw between them (a dashed glowing call line, clocks with different times), they move toward each other as a counter falls, and their two lines meet and merge into one shape for the ending.\n",
|
|
2251
|
+
"promptVo": "I want an animated video in the \"Neon Line\" style (Character Story) 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.\n\nMY CONTENT\n[No topic yet. Ask me for my topic or script before building anything.]\n\nVOICEOVER TIMING\n[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.]\n\nHow to use the timing:\n- 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.\n- Set the duration to the last word's end plus about 1.2 seconds.\n- Build the timeline (TL) from these times. Each figure draws on while it is introduced, the call line connects on \"call\" or \"talk\", the counter falls while the distance shrinks in the narration, and the merge lands on the last line.\n- 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.\n- Put the emphasis moves on stressed words. A counter lands at the exact moment its number is spoken.\n- Keep the player's \"Load voiceover\" button working so I can drop in my audio and hear it in sync.\n\nSTORYBOARD FIRST\nBefore building, show me a storyboard and wait for my OK:\n- 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.\n- 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.\n- Below the grid, list any facts or numbers you had to assume.\nWhen I approve it (or after my changes), build the full animation and reuse the storyboard's drawing code.\n\nWHAT TO BUILD\nOne self-contained HTML file (an artifact if you can), built on the reference file below:\n- 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.\n- Keep the canvas at 720x1280 (9:16, for Shorts, Reels and TikTok).\n- Replace the demo's story: TL, the character paths (FIG_A and FIG_B: one continuous polyline each), their colours, the props (phones, clocks, skyline), the counter, the captions and the merge shape, and scoreSound(). Keep and reuse the style's helpers (the night-blue wall with faint brick lines, the neon renderer (a wide soft glow pass, a bright core and a white centre), the one-stroke draw-on, the switch-on flicker, the dashed call line, the walking motion, the line merge into a heart and the Caveat neon captions).\n- Aim for 15 to 40 seconds unless my content needs more, and set the duration in TL.D.\n- Keep window.seek(t), window.DURATION, window.scoreSound and window.SFX exposed, so the video can be rendered frame by frame.\n- Load the style's fonts before the first draw, as the reference does: Caveat (700, as neon script), JetBrains Mono (500).\n\nTHE STYLE\n- Background: a deep night-blue wall (#070b1a) with faint brick lines and a dark vignette, like a real neon sign mounted on a wall.\n- Every figure is one continuous polyline (a single neon tube), drawn on by path length; render it three times: a wide blurred glow in its colour, a bright core, and a thin white centre.\n- Only two or three neon colours: pink (#ff4fa3), cyan (#36e1ff) and a warm yellow (#ffd36b) for small details.\n- Lines switch on with a short flicker (two or three off-on blinks) and buzz faintly.\n- Captions in Caveat as neon script in the same glow treatment; small data (distances, times) in JetBrains Mono.\n- Pace: each figure takes 1 to 1.5 seconds to draw; one new prop or beat every 2 seconds; hold the final merged shape about 2 seconds.\n\nRULES THAT KEEP IT IN STYLE\n- 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.\n- 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.\n- It will be watched on phones: at 720x1280 keep captions at 56 px or more and characters at least 30% of the frame height; line cores at 5 px or more. Fill the frame.\n- Keep each frame fast, well under 50 ms.\n- Give my topic its own demo content; do not reuse the reference's story (\"A long-distance love story (original)\") unless my content asks for it.\n\nSOUND\n- Bed: a slow, warm synth pad (padBed) with a soft pulse.\n- Map events to the kit: neon switch-ons get a click and a short buzz (a low square hum with a fast tremolo); the call line gets a soft ring (\"ping\"); the falling counter gets soft ticks; the merge gets \"shimmer\" and a gentle chord.\n- Voiceover mix: the player calls SFX.live with { voiceover: true } once narration is loaded. Keep the buzz very low.\n- Sync is everything: the sound score reads the same TL times as the picture.\n\nIF YOU CAN RUN CODE\nRender 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.\n\nSTYLE CARD\nName: Neon Line\nFamily: Character Story\nLook: Characters drawn as single continuous glowing neon lines on a deep night-blue wall: one pink, one cyan, with a soft bloom, a flicker when they switch on, neon-script captions, and small glowing props (phones, clocks, a skyline) in the same line style.\nHow it explains: Each character draws itself in one stroke as if a neon tube is lighting up. Props and connections draw between them (a dashed glowing call line, clocks with different times), they move toward each other as a counter falls, and their two lines meet and merge into one shape for the ending.\n"
|
|
2252
|
+
}
|
|
2253
|
+
]
|