@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.
Files changed (565) hide show
  1. package/.claude-plugin/marketplace.json +3 -3
  2. package/AGENTS.md +33 -0
  3. package/CHANGELOG.md +49 -0
  4. package/CLAUDE.md +17 -6
  5. package/GEMINI.md +63 -0
  6. package/README.md +216 -426
  7. package/START_HERE.md +4 -2
  8. package/package.json +5 -3
  9. package/plugins/ai-video-editor/README.md +32 -0
  10. package/plugins/ai-video-editor/SKILL.md +152 -0
  11. package/plugins/ai-video-editor/assets/fonts/fonts.css +2409 -0
  12. package/plugins/ai-video-editor/assets/fonts/ttf/anton-400.ttf +0 -0
  13. package/plugins/ai-video-editor/assets/fonts/ttf/archivo-800.ttf +0 -0
  14. package/plugins/ai-video-editor/assets/fonts/ttf/cabin-sketch-700.ttf +0 -0
  15. package/plugins/ai-video-editor/assets/fonts/ttf/dm-sans-700.ttf +0 -0
  16. package/plugins/ai-video-editor/assets/fonts/ttf/fraunces-600.ttf +0 -0
  17. package/plugins/ai-video-editor/assets/fonts/ttf/fraunces-700.ttf +0 -0
  18. package/plugins/ai-video-editor/assets/fonts/ttf/fredoka-700.ttf +0 -0
  19. package/plugins/ai-video-editor/assets/fonts/ttf/inter-700.ttf +0 -0
  20. package/plugins/ai-video-editor/assets/fonts/ttf/inter-800.ttf +0 -0
  21. package/plugins/ai-video-editor/assets/fonts/ttf/inter-tight-800.ttf +0 -0
  22. package/plugins/ai-video-editor/assets/fonts/ttf/kalam-700.ttf +0 -0
  23. package/plugins/ai-video-editor/assets/fonts/ttf/noto-sans-devanagari-700.ttf +0 -0
  24. package/plugins/ai-video-editor/assets/fonts/web/noto-sans-devanagari-devanagari-400-normal.woff2 +0 -0
  25. package/plugins/ai-video-editor/assets/fonts/web/noto-sans-devanagari-devanagari-500-normal.woff2 +0 -0
  26. package/plugins/ai-video-editor/assets/fonts/web/noto-sans-devanagari-devanagari-600-normal.woff2 +0 -0
  27. package/plugins/ai-video-editor/assets/fonts/web/noto-sans-devanagari-devanagari-700-normal.woff2 +0 -0
  28. package/plugins/ai-video-editor/assets/fonts/web/noto-sans-devanagari-devanagari-800-normal.woff2 +0 -0
  29. package/plugins/ai-video-editor/engine/hidpi.js +117 -0
  30. package/plugins/ai-video-editor/engine/page.html +43 -0
  31. package/plugins/ai-video-editor/engine/player.js +145 -0
  32. package/plugins/ai-video-editor/references/example-story-warm-canvas.js +95 -0
  33. package/plugins/ai-video-editor/references/story-guide.md +112 -0
  34. package/plugins/ai-video-editor/requirements.txt +4 -0
  35. package/plugins/ai-video-editor/styles/chalk-talk/base.js +490 -0
  36. package/plugins/ai-video-editor/styles/chalk-talk/style.json +14 -0
  37. package/plugins/ai-video-editor/styles/chalk-talk/style.md +41 -0
  38. package/plugins/ai-video-editor/styles/clean-tech/base.js +447 -0
  39. package/plugins/ai-video-editor/styles/clean-tech/style.json +15 -0
  40. package/plugins/ai-video-editor/styles/clean-tech/style.md +38 -0
  41. package/plugins/ai-video-editor/styles/creator-motion-graphics/base.js +698 -0
  42. package/plugins/ai-video-editor/styles/creator-motion-graphics/style.json +16 -0
  43. package/plugins/ai-video-editor/styles/creator-motion-graphics/style.md +39 -0
  44. package/plugins/ai-video-editor/styles/data-story/base.js +432 -0
  45. package/plugins/ai-video-editor/styles/data-story/style.json +14 -0
  46. package/plugins/ai-video-editor/styles/data-story/style.md +38 -0
  47. package/plugins/ai-video-editor/styles/index.json +103 -0
  48. package/plugins/ai-video-editor/styles/pop-info/base.js +570 -0
  49. package/plugins/ai-video-editor/styles/pop-info/style.json +13 -0
  50. package/plugins/ai-video-editor/styles/pop-info/style.md +37 -0
  51. package/plugins/ai-video-editor/styles/software-walkthrough/base.js +544 -0
  52. package/plugins/ai-video-editor/styles/software-walkthrough/style.json +15 -0
  53. package/plugins/ai-video-editor/styles/software-walkthrough/style.md +38 -0
  54. package/plugins/ai-video-editor/styles/warm-canvas/base.js +610 -0
  55. package/plugins/ai-video-editor/styles/warm-canvas/style.json +14 -0
  56. package/plugins/ai-video-editor/styles/warm-canvas/style.md +37 -0
  57. package/plugins/aiinsight-shorts/CHANGELOG.md +6 -0
  58. package/plugins/aiinsight-shorts/README.md +43 -0
  59. package/plugins/aiinsight-shorts/SKILL.md +138 -0
  60. package/plugins/aiinsight-shorts/styles/deep-dive/STYLE.md +58 -0
  61. package/plugins/aiinsight-shorts/styles/deep-dive/example/data/cues.json +140 -0
  62. package/plugins/aiinsight-shorts/styles/deep-dive/example/data/lines.json +67 -0
  63. package/plugins/aiinsight-shorts/styles/deep-dive/example/data/words.json +614 -0
  64. package/plugins/aiinsight-shorts/styles/deep-dive/example/data/words.txt +102 -0
  65. package/plugins/aiinsight-shorts/styles/deep-dive/example/fonts/Inter-Black.otf +0 -0
  66. package/plugins/aiinsight-shorts/styles/deep-dive/example/fonts/Inter-ExtraBold.otf +0 -0
  67. package/plugins/aiinsight-shorts/styles/deep-dive/example/index.html +17 -0
  68. package/plugins/aiinsight-shorts/styles/deep-dive/example/script.json +27 -0
  69. package/plugins/aiinsight-shorts/styles/deep-dive/example/sheet.html +11 -0
  70. package/plugins/aiinsight-shorts/styles/deep-dive/example/src/core/board.js +62 -0
  71. package/plugins/aiinsight-shorts/styles/deep-dive/example/src/core/captions.js +68 -0
  72. package/plugins/aiinsight-shorts/styles/deep-dive/example/src/core/engine.js +65 -0
  73. package/plugins/aiinsight-shorts/styles/deep-dive/example/src/core/human.js +128 -0
  74. package/plugins/aiinsight-shorts/styles/deep-dive/example/src/core/lib.js +44 -0
  75. package/plugins/aiinsight-shorts/styles/deep-dive/example/src/core/look2d.js +33 -0
  76. package/plugins/aiinsight-shorts/styles/deep-dive/example/src/core/sdf.js +79 -0
  77. package/plugins/aiinsight-shorts/styles/deep-dive/example/src/core/sets.js +107 -0
  78. package/plugins/aiinsight-shorts/styles/deep-dive/example/src/core/timing.js +23 -0
  79. package/plugins/aiinsight-shorts/styles/deep-dive/example/src/main.js +56 -0
  80. package/plugins/aiinsight-shorts/styles/deep-dive/example/src/sheet.js +79 -0
  81. package/plugins/aiinsight-shorts/styles/deep-dive/example/src/shots.js +136 -0
  82. package/plugins/aiinsight-shorts/styles/deep-dive/example/tools/capture.mjs +122 -0
  83. package/plugins/aiinsight-shorts/styles/deep-dive/example/tools/mix.py +172 -0
  84. package/plugins/aiinsight-shorts/styles/deep-dive/example/vendor/LICENSE-three.txt +21 -0
  85. package/plugins/aiinsight-shorts/styles/deep-dive/example/vendor/addons/environments/RoomEnvironment.js +144 -0
  86. package/plugins/aiinsight-shorts/styles/deep-dive/example/vendor/addons/postprocessing/BokehPass.js +141 -0
  87. package/plugins/aiinsight-shorts/styles/deep-dive/example/vendor/addons/postprocessing/EffectComposer.js +231 -0
  88. package/plugins/aiinsight-shorts/styles/deep-dive/example/vendor/addons/postprocessing/MaskPass.js +104 -0
  89. package/plugins/aiinsight-shorts/styles/deep-dive/example/vendor/addons/postprocessing/OutputPass.js +97 -0
  90. package/plugins/aiinsight-shorts/styles/deep-dive/example/vendor/addons/postprocessing/Pass.js +95 -0
  91. package/plugins/aiinsight-shorts/styles/deep-dive/example/vendor/addons/postprocessing/RenderPass.js +99 -0
  92. package/plugins/aiinsight-shorts/styles/deep-dive/example/vendor/addons/postprocessing/ShaderPass.js +77 -0
  93. package/plugins/aiinsight-shorts/styles/deep-dive/example/vendor/addons/postprocessing/UnrealBloomPass.js +415 -0
  94. package/plugins/aiinsight-shorts/styles/deep-dive/example/vendor/addons/shaders/BokehShader.js +145 -0
  95. package/plugins/aiinsight-shorts/styles/deep-dive/example/vendor/addons/shaders/CopyShader.js +45 -0
  96. package/plugins/aiinsight-shorts/styles/deep-dive/example/vendor/addons/shaders/LuminosityHighPassShader.js +64 -0
  97. package/plugins/aiinsight-shorts/styles/deep-dive/example/vendor/addons/shaders/OutputShader.js +85 -0
  98. package/plugins/aiinsight-shorts/styles/deep-dive/example/vendor/three.module.js +6 -0
  99. package/plugins/aiinsight-shorts/styles/deep-dive/style-sheet.png +0 -0
  100. package/plugins/aiinsight-shorts/styles/inside-out/STYLE.md +97 -0
  101. package/plugins/aiinsight-shorts/styles/inside-out/example/data/cues.json +178 -0
  102. package/plugins/aiinsight-shorts/styles/inside-out/example/data/lines.json +73 -0
  103. package/plugins/aiinsight-shorts/styles/inside-out/example/data/words.json +662 -0
  104. package/plugins/aiinsight-shorts/styles/inside-out/example/fonts/Inter-Black.otf +0 -0
  105. package/plugins/aiinsight-shorts/styles/inside-out/example/index.html +17 -0
  106. package/plugins/aiinsight-shorts/styles/inside-out/example/script.json +26 -0
  107. package/plugins/aiinsight-shorts/styles/inside-out/example/src/core/captions.js +68 -0
  108. package/plugins/aiinsight-shorts/styles/inside-out/example/src/core/kit.js +345 -0
  109. package/plugins/aiinsight-shorts/styles/inside-out/example/src/core/lib.js +44 -0
  110. package/plugins/aiinsight-shorts/styles/inside-out/example/src/core/timing.js +23 -0
  111. package/plugins/aiinsight-shorts/styles/inside-out/example/src/main.js +62 -0
  112. package/plugins/aiinsight-shorts/styles/inside-out/example/src/shots.js +195 -0
  113. package/plugins/aiinsight-shorts/styles/inside-out/example/tools/capture.mjs +122 -0
  114. package/plugins/aiinsight-shorts/styles/inside-out/example/tools/mix.py +172 -0
  115. package/plugins/aiinsight-shorts/styles/inside-out/style-sheet.png +0 -0
  116. package/plugins/aiinsight-shorts/styles/night-file/STYLE.md +36 -0
  117. package/plugins/aiinsight-shorts/styles/night-file/example/data/cues.json +146 -0
  118. package/plugins/aiinsight-shorts/styles/night-file/example/data/lines.json +73 -0
  119. package/plugins/aiinsight-shorts/styles/night-file/example/data/words.json +572 -0
  120. package/plugins/aiinsight-shorts/styles/night-file/example/data/words.txt +95 -0
  121. package/plugins/aiinsight-shorts/styles/night-file/example/fonts/FreeMonoBold.ttf +0 -0
  122. package/plugins/aiinsight-shorts/styles/night-file/example/fonts/Inter-Black.otf +0 -0
  123. package/plugins/aiinsight-shorts/styles/night-file/example/index.html +18 -0
  124. package/plugins/aiinsight-shorts/styles/night-file/example/script.json +26 -0
  125. package/plugins/aiinsight-shorts/styles/night-file/example/sheet.html +13 -0
  126. package/plugins/aiinsight-shorts/styles/night-file/example/src/core/board.js +62 -0
  127. package/plugins/aiinsight-shorts/styles/night-file/example/src/core/captions.js +49 -0
  128. package/plugins/aiinsight-shorts/styles/night-file/example/src/core/engine.js +65 -0
  129. package/plugins/aiinsight-shorts/styles/night-file/example/src/core/human.js +128 -0
  130. package/plugins/aiinsight-shorts/styles/night-file/example/src/core/kit.js +151 -0
  131. package/plugins/aiinsight-shorts/styles/night-file/example/src/core/lib.js +44 -0
  132. package/plugins/aiinsight-shorts/styles/night-file/example/src/core/sdf.js +79 -0
  133. package/plugins/aiinsight-shorts/styles/night-file/example/src/core/sets3d.js +106 -0
  134. package/plugins/aiinsight-shorts/styles/night-file/example/src/core/timing.js +23 -0
  135. package/plugins/aiinsight-shorts/styles/night-file/example/src/main.js +56 -0
  136. package/plugins/aiinsight-shorts/styles/night-file/example/src/sheet.js +86 -0
  137. package/plugins/aiinsight-shorts/styles/night-file/example/src/shots.js +130 -0
  138. package/plugins/aiinsight-shorts/styles/night-file/example/tools/capture.mjs +122 -0
  139. package/plugins/aiinsight-shorts/styles/night-file/example/tools/mix.py +172 -0
  140. package/plugins/aiinsight-shorts/styles/night-file/example/vendor/LICENSE-three.txt +21 -0
  141. package/plugins/aiinsight-shorts/styles/night-file/example/vendor/addons/environments/RoomEnvironment.js +144 -0
  142. package/plugins/aiinsight-shorts/styles/night-file/example/vendor/addons/postprocessing/BokehPass.js +141 -0
  143. package/plugins/aiinsight-shorts/styles/night-file/example/vendor/addons/postprocessing/EffectComposer.js +231 -0
  144. package/plugins/aiinsight-shorts/styles/night-file/example/vendor/addons/postprocessing/MaskPass.js +104 -0
  145. package/plugins/aiinsight-shorts/styles/night-file/example/vendor/addons/postprocessing/OutputPass.js +97 -0
  146. package/plugins/aiinsight-shorts/styles/night-file/example/vendor/addons/postprocessing/Pass.js +95 -0
  147. package/plugins/aiinsight-shorts/styles/night-file/example/vendor/addons/postprocessing/RenderPass.js +99 -0
  148. package/plugins/aiinsight-shorts/styles/night-file/example/vendor/addons/postprocessing/ShaderPass.js +77 -0
  149. package/plugins/aiinsight-shorts/styles/night-file/example/vendor/addons/postprocessing/UnrealBloomPass.js +415 -0
  150. package/plugins/aiinsight-shorts/styles/night-file/example/vendor/addons/shaders/BokehShader.js +145 -0
  151. package/plugins/aiinsight-shorts/styles/night-file/example/vendor/addons/shaders/CopyShader.js +45 -0
  152. package/plugins/aiinsight-shorts/styles/night-file/example/vendor/addons/shaders/LuminosityHighPassShader.js +64 -0
  153. package/plugins/aiinsight-shorts/styles/night-file/example/vendor/addons/shaders/OutputShader.js +85 -0
  154. package/plugins/aiinsight-shorts/styles/night-file/example/vendor/three.module.js +6 -0
  155. package/plugins/aiinsight-shorts/styles/night-file/style-sheet.png +0 -0
  156. package/plugins/aiinsight-shorts/styles/paper-atlas/STYLE.md +30 -0
  157. package/plugins/aiinsight-shorts/styles/paper-atlas/example/data/cues.json +167 -0
  158. package/plugins/aiinsight-shorts/styles/paper-atlas/example/data/lines.json +67 -0
  159. package/plugins/aiinsight-shorts/styles/paper-atlas/example/data/words.json +614 -0
  160. package/plugins/aiinsight-shorts/styles/paper-atlas/example/data/words.txt +102 -0
  161. package/plugins/aiinsight-shorts/styles/paper-atlas/example/fonts/Caladea-Bold.ttf +0 -0
  162. package/plugins/aiinsight-shorts/styles/paper-atlas/example/fonts/Inter-Black.otf +0 -0
  163. package/plugins/aiinsight-shorts/styles/paper-atlas/example/index.html +15 -0
  164. package/plugins/aiinsight-shorts/styles/paper-atlas/example/script.json +26 -0
  165. package/plugins/aiinsight-shorts/styles/paper-atlas/example/sheet.html +12 -0
  166. package/plugins/aiinsight-shorts/styles/paper-atlas/example/src/core/board.js +62 -0
  167. package/plugins/aiinsight-shorts/styles/paper-atlas/example/src/core/captions.js +47 -0
  168. package/plugins/aiinsight-shorts/styles/paper-atlas/example/src/core/kit.js +152 -0
  169. package/plugins/aiinsight-shorts/styles/paper-atlas/example/src/core/lib.js +44 -0
  170. package/plugins/aiinsight-shorts/styles/paper-atlas/example/src/core/timing.js +23 -0
  171. package/plugins/aiinsight-shorts/styles/paper-atlas/example/src/main.js +62 -0
  172. package/plugins/aiinsight-shorts/styles/paper-atlas/example/src/sheet.js +61 -0
  173. package/plugins/aiinsight-shorts/styles/paper-atlas/example/src/shots.js +139 -0
  174. package/plugins/aiinsight-shorts/styles/paper-atlas/example/tools/capture.mjs +122 -0
  175. package/plugins/aiinsight-shorts/styles/paper-atlas/example/tools/mix.py +172 -0
  176. package/plugins/aiinsight-shorts/styles/paper-atlas/style-sheet.png +0 -0
  177. package/plugins/aiinsight-shorts/styles/stick-story/STYLE.md +32 -0
  178. package/plugins/aiinsight-shorts/styles/stick-story/example/data/cues.json +182 -0
  179. package/plugins/aiinsight-shorts/styles/stick-story/example/data/lines.json +79 -0
  180. package/plugins/aiinsight-shorts/styles/stick-story/example/data/words.json +662 -0
  181. package/plugins/aiinsight-shorts/styles/stick-story/example/data/words.txt +110 -0
  182. package/plugins/aiinsight-shorts/styles/stick-story/example/fonts/Inter-Black.otf +0 -0
  183. package/plugins/aiinsight-shorts/styles/stick-story/example/fonts/Inter-ExtraBold.otf +0 -0
  184. package/plugins/aiinsight-shorts/styles/stick-story/example/index.html +13 -0
  185. package/plugins/aiinsight-shorts/styles/stick-story/example/script.json +27 -0
  186. package/plugins/aiinsight-shorts/styles/stick-story/example/sheet.html +10 -0
  187. package/plugins/aiinsight-shorts/styles/stick-story/example/src/core/board.js +62 -0
  188. package/plugins/aiinsight-shorts/styles/stick-story/example/src/core/captions.js +47 -0
  189. package/plugins/aiinsight-shorts/styles/stick-story/example/src/core/kit.js +166 -0
  190. package/plugins/aiinsight-shorts/styles/stick-story/example/src/core/lib.js +44 -0
  191. package/plugins/aiinsight-shorts/styles/stick-story/example/src/core/timing.js +23 -0
  192. package/plugins/aiinsight-shorts/styles/stick-story/example/src/main.js +62 -0
  193. package/plugins/aiinsight-shorts/styles/stick-story/example/src/sheet.js +64 -0
  194. package/plugins/aiinsight-shorts/styles/stick-story/example/src/shots.js +148 -0
  195. package/plugins/aiinsight-shorts/styles/stick-story/example/tools/capture.mjs +122 -0
  196. package/plugins/aiinsight-shorts/styles/stick-story/example/tools/mix.py +172 -0
  197. package/plugins/aiinsight-shorts/styles/stick-story/style-sheet.png +0 -0
  198. package/plugins/aiinsight-shorts/styles/tall-tale/STYLE.md +51 -0
  199. package/plugins/aiinsight-shorts/styles/tall-tale/example/data/cues.json +271 -0
  200. package/plugins/aiinsight-shorts/styles/tall-tale/example/data/lines.json +127 -0
  201. package/plugins/aiinsight-shorts/styles/tall-tale/example/data/words.json +908 -0
  202. package/plugins/aiinsight-shorts/styles/tall-tale/example/data/words.txt +151 -0
  203. package/plugins/aiinsight-shorts/styles/tall-tale/example/fonts/Caladea-Bold.ttf +0 -0
  204. package/plugins/aiinsight-shorts/styles/tall-tale/example/fonts/Inter-Black.otf +0 -0
  205. package/plugins/aiinsight-shorts/styles/tall-tale/example/fonts/Inter-ExtraBold.otf +0 -0
  206. package/plugins/aiinsight-shorts/styles/tall-tale/example/index.html +19 -0
  207. package/plugins/aiinsight-shorts/styles/tall-tale/example/script.json +37 -0
  208. package/plugins/aiinsight-shorts/styles/tall-tale/example/sheet.html +13 -0
  209. package/plugins/aiinsight-shorts/styles/tall-tale/example/src/core/board.js +62 -0
  210. package/plugins/aiinsight-shorts/styles/tall-tale/example/src/core/captions.js +56 -0
  211. package/plugins/aiinsight-shorts/styles/tall-tale/example/src/core/engine.js +65 -0
  212. package/plugins/aiinsight-shorts/styles/tall-tale/example/src/core/lib.js +44 -0
  213. package/plugins/aiinsight-shorts/styles/tall-tale/example/src/core/props.js +166 -0
  214. package/plugins/aiinsight-shorts/styles/tall-tale/example/src/core/timing.js +23 -0
  215. package/plugins/aiinsight-shorts/styles/tall-tale/example/src/core/toon.js +352 -0
  216. package/plugins/aiinsight-shorts/styles/tall-tale/example/src/core/world.js +340 -0
  217. package/plugins/aiinsight-shorts/styles/tall-tale/example/src/main.js +56 -0
  218. package/plugins/aiinsight-shorts/styles/tall-tale/example/src/sheet.js +99 -0
  219. package/plugins/aiinsight-shorts/styles/tall-tale/example/src/shots.js +377 -0
  220. package/plugins/aiinsight-shorts/styles/tall-tale/example/tools/capture.mjs +122 -0
  221. package/plugins/aiinsight-shorts/styles/tall-tale/example/tools/mix.py +204 -0
  222. package/plugins/aiinsight-shorts/styles/tall-tale/example/vendor/LICENSE-three.txt +21 -0
  223. package/plugins/aiinsight-shorts/styles/tall-tale/example/vendor/addons/environments/RoomEnvironment.js +144 -0
  224. package/plugins/aiinsight-shorts/styles/tall-tale/example/vendor/addons/postprocessing/BokehPass.js +141 -0
  225. package/plugins/aiinsight-shorts/styles/tall-tale/example/vendor/addons/postprocessing/EffectComposer.js +231 -0
  226. package/plugins/aiinsight-shorts/styles/tall-tale/example/vendor/addons/postprocessing/MaskPass.js +104 -0
  227. package/plugins/aiinsight-shorts/styles/tall-tale/example/vendor/addons/postprocessing/OutputPass.js +97 -0
  228. package/plugins/aiinsight-shorts/styles/tall-tale/example/vendor/addons/postprocessing/Pass.js +95 -0
  229. package/plugins/aiinsight-shorts/styles/tall-tale/example/vendor/addons/postprocessing/RenderPass.js +99 -0
  230. package/plugins/aiinsight-shorts/styles/tall-tale/example/vendor/addons/postprocessing/ShaderPass.js +77 -0
  231. package/plugins/aiinsight-shorts/styles/tall-tale/example/vendor/addons/postprocessing/UnrealBloomPass.js +415 -0
  232. package/plugins/aiinsight-shorts/styles/tall-tale/example/vendor/addons/shaders/BokehShader.js +145 -0
  233. package/plugins/aiinsight-shorts/styles/tall-tale/example/vendor/addons/shaders/CopyShader.js +45 -0
  234. package/plugins/aiinsight-shorts/styles/tall-tale/example/vendor/addons/shaders/LuminosityHighPassShader.js +64 -0
  235. package/plugins/aiinsight-shorts/styles/tall-tale/example/vendor/addons/shaders/OutputShader.js +85 -0
  236. package/plugins/aiinsight-shorts/styles/tall-tale/example/vendor/three.module.js +6 -0
  237. package/plugins/aiinsight-shorts/styles/tall-tale/style-sheet.png +0 -0
  238. package/plugins/faceless-shorts/README.md +34 -0
  239. package/plugins/faceless-shorts/SKILL.md +124 -0
  240. package/plugins/faceless-shorts/styles/deep-dive/STYLE.md +58 -0
  241. package/plugins/faceless-shorts/styles/deep-dive/example/data/cues.json +140 -0
  242. package/plugins/faceless-shorts/styles/deep-dive/example/data/lines.json +67 -0
  243. package/plugins/faceless-shorts/styles/deep-dive/example/data/words.json +614 -0
  244. package/plugins/faceless-shorts/styles/deep-dive/example/data/words.txt +102 -0
  245. package/plugins/faceless-shorts/styles/deep-dive/example/fonts/Inter-Black.otf +0 -0
  246. package/plugins/faceless-shorts/styles/deep-dive/example/fonts/Inter-ExtraBold.otf +0 -0
  247. package/plugins/faceless-shorts/styles/deep-dive/example/index.html +16 -0
  248. package/plugins/faceless-shorts/styles/deep-dive/example/script.json +27 -0
  249. package/plugins/faceless-shorts/styles/deep-dive/example/sheet.html +10 -0
  250. package/plugins/faceless-shorts/styles/deep-dive/example/src/core/board.js +62 -0
  251. package/plugins/faceless-shorts/styles/deep-dive/example/src/core/captions.js +68 -0
  252. package/plugins/faceless-shorts/styles/deep-dive/example/src/core/engine.js +65 -0
  253. package/plugins/faceless-shorts/styles/deep-dive/example/src/core/human.js +128 -0
  254. package/plugins/faceless-shorts/styles/deep-dive/example/src/core/lib.js +44 -0
  255. package/plugins/faceless-shorts/styles/deep-dive/example/src/core/look2d.js +33 -0
  256. package/plugins/faceless-shorts/styles/deep-dive/example/src/core/sdf.js +79 -0
  257. package/plugins/faceless-shorts/styles/deep-dive/example/src/core/sets.js +107 -0
  258. package/plugins/faceless-shorts/styles/deep-dive/example/src/core/timing.js +23 -0
  259. package/plugins/faceless-shorts/styles/deep-dive/example/src/main.js +56 -0
  260. package/plugins/faceless-shorts/styles/deep-dive/example/src/sheet.js +79 -0
  261. package/plugins/faceless-shorts/styles/deep-dive/example/src/shots.js +136 -0
  262. package/plugins/faceless-shorts/styles/deep-dive/example/tools/capture.mjs +122 -0
  263. package/plugins/faceless-shorts/styles/deep-dive/example/tools/mix.py +172 -0
  264. package/plugins/faceless-shorts/styles/deep-dive/example/vendor/LICENSE-three.txt +21 -0
  265. package/plugins/faceless-shorts/styles/deep-dive/example/vendor/addons/environments/RoomEnvironment.js +144 -0
  266. package/plugins/faceless-shorts/styles/deep-dive/example/vendor/addons/postprocessing/BokehPass.js +141 -0
  267. package/plugins/faceless-shorts/styles/deep-dive/example/vendor/addons/postprocessing/EffectComposer.js +231 -0
  268. package/plugins/faceless-shorts/styles/deep-dive/example/vendor/addons/postprocessing/MaskPass.js +104 -0
  269. package/plugins/faceless-shorts/styles/deep-dive/example/vendor/addons/postprocessing/OutputPass.js +97 -0
  270. package/plugins/faceless-shorts/styles/deep-dive/example/vendor/addons/postprocessing/Pass.js +95 -0
  271. package/plugins/faceless-shorts/styles/deep-dive/example/vendor/addons/postprocessing/RenderPass.js +99 -0
  272. package/plugins/faceless-shorts/styles/deep-dive/example/vendor/addons/postprocessing/ShaderPass.js +77 -0
  273. package/plugins/faceless-shorts/styles/deep-dive/example/vendor/addons/postprocessing/UnrealBloomPass.js +415 -0
  274. package/plugins/faceless-shorts/styles/deep-dive/example/vendor/addons/shaders/BokehShader.js +145 -0
  275. package/plugins/faceless-shorts/styles/deep-dive/example/vendor/addons/shaders/CopyShader.js +45 -0
  276. package/plugins/faceless-shorts/styles/deep-dive/example/vendor/addons/shaders/LuminosityHighPassShader.js +64 -0
  277. package/plugins/faceless-shorts/styles/deep-dive/example/vendor/addons/shaders/OutputShader.js +85 -0
  278. package/plugins/faceless-shorts/styles/deep-dive/example/vendor/three.module.js +6 -0
  279. package/plugins/faceless-shorts/styles/deep-dive/style-sheet.png +0 -0
  280. package/plugins/faceless-shorts/styles/inside-out/STYLE.md +97 -0
  281. package/plugins/faceless-shorts/styles/inside-out/example/data/cues.json +178 -0
  282. package/plugins/faceless-shorts/styles/inside-out/example/data/lines.json +73 -0
  283. package/plugins/faceless-shorts/styles/inside-out/example/data/words.json +662 -0
  284. package/plugins/faceless-shorts/styles/inside-out/example/fonts/Inter-Black.otf +0 -0
  285. package/plugins/faceless-shorts/styles/inside-out/example/index.html +16 -0
  286. package/plugins/faceless-shorts/styles/inside-out/example/script.json +26 -0
  287. package/plugins/faceless-shorts/styles/inside-out/example/src/core/captions.js +68 -0
  288. package/plugins/faceless-shorts/styles/inside-out/example/src/core/kit.js +345 -0
  289. package/plugins/faceless-shorts/styles/inside-out/example/src/core/lib.js +44 -0
  290. package/plugins/faceless-shorts/styles/inside-out/example/src/core/timing.js +23 -0
  291. package/plugins/faceless-shorts/styles/inside-out/example/src/main.js +62 -0
  292. package/plugins/faceless-shorts/styles/inside-out/example/src/shots.js +195 -0
  293. package/plugins/faceless-shorts/styles/inside-out/example/tools/capture.mjs +122 -0
  294. package/plugins/faceless-shorts/styles/inside-out/example/tools/mix.py +172 -0
  295. package/plugins/faceless-shorts/styles/inside-out/style-sheet.png +0 -0
  296. package/plugins/faceless-shorts/styles/night-file/STYLE.md +36 -0
  297. package/plugins/faceless-shorts/styles/night-file/example/data/cues.json +146 -0
  298. package/plugins/faceless-shorts/styles/night-file/example/data/lines.json +73 -0
  299. package/plugins/faceless-shorts/styles/night-file/example/data/words.json +572 -0
  300. package/plugins/faceless-shorts/styles/night-file/example/data/words.txt +95 -0
  301. package/plugins/faceless-shorts/styles/night-file/example/fonts/FreeMonoBold.ttf +0 -0
  302. package/plugins/faceless-shorts/styles/night-file/example/fonts/Inter-Black.otf +0 -0
  303. package/plugins/faceless-shorts/styles/night-file/example/index.html +16 -0
  304. package/plugins/faceless-shorts/styles/night-file/example/script.json +26 -0
  305. package/plugins/faceless-shorts/styles/night-file/example/sheet.html +11 -0
  306. package/plugins/faceless-shorts/styles/night-file/example/src/core/board.js +62 -0
  307. package/plugins/faceless-shorts/styles/night-file/example/src/core/captions.js +49 -0
  308. package/plugins/faceless-shorts/styles/night-file/example/src/core/engine.js +65 -0
  309. package/plugins/faceless-shorts/styles/night-file/example/src/core/human.js +128 -0
  310. package/plugins/faceless-shorts/styles/night-file/example/src/core/kit.js +151 -0
  311. package/plugins/faceless-shorts/styles/night-file/example/src/core/lib.js +44 -0
  312. package/plugins/faceless-shorts/styles/night-file/example/src/core/sdf.js +79 -0
  313. package/plugins/faceless-shorts/styles/night-file/example/src/core/sets3d.js +106 -0
  314. package/plugins/faceless-shorts/styles/night-file/example/src/core/timing.js +23 -0
  315. package/plugins/faceless-shorts/styles/night-file/example/src/main.js +56 -0
  316. package/plugins/faceless-shorts/styles/night-file/example/src/sheet.js +86 -0
  317. package/plugins/faceless-shorts/styles/night-file/example/src/shots.js +130 -0
  318. package/plugins/faceless-shorts/styles/night-file/example/tools/capture.mjs +122 -0
  319. package/plugins/faceless-shorts/styles/night-file/example/tools/mix.py +172 -0
  320. package/plugins/faceless-shorts/styles/night-file/example/vendor/LICENSE-three.txt +21 -0
  321. package/plugins/faceless-shorts/styles/night-file/example/vendor/addons/environments/RoomEnvironment.js +144 -0
  322. package/plugins/faceless-shorts/styles/night-file/example/vendor/addons/postprocessing/BokehPass.js +141 -0
  323. package/plugins/faceless-shorts/styles/night-file/example/vendor/addons/postprocessing/EffectComposer.js +231 -0
  324. package/plugins/faceless-shorts/styles/night-file/example/vendor/addons/postprocessing/MaskPass.js +104 -0
  325. package/plugins/faceless-shorts/styles/night-file/example/vendor/addons/postprocessing/OutputPass.js +97 -0
  326. package/plugins/faceless-shorts/styles/night-file/example/vendor/addons/postprocessing/Pass.js +95 -0
  327. package/plugins/faceless-shorts/styles/night-file/example/vendor/addons/postprocessing/RenderPass.js +99 -0
  328. package/plugins/faceless-shorts/styles/night-file/example/vendor/addons/postprocessing/ShaderPass.js +77 -0
  329. package/plugins/faceless-shorts/styles/night-file/example/vendor/addons/postprocessing/UnrealBloomPass.js +415 -0
  330. package/plugins/faceless-shorts/styles/night-file/example/vendor/addons/shaders/BokehShader.js +145 -0
  331. package/plugins/faceless-shorts/styles/night-file/example/vendor/addons/shaders/CopyShader.js +45 -0
  332. package/plugins/faceless-shorts/styles/night-file/example/vendor/addons/shaders/LuminosityHighPassShader.js +64 -0
  333. package/plugins/faceless-shorts/styles/night-file/example/vendor/addons/shaders/OutputShader.js +85 -0
  334. package/plugins/faceless-shorts/styles/night-file/example/vendor/three.module.js +6 -0
  335. package/plugins/faceless-shorts/styles/night-file/style-sheet.png +0 -0
  336. package/plugins/faceless-shorts/styles/paper-atlas/STYLE.md +30 -0
  337. package/plugins/faceless-shorts/styles/paper-atlas/example/data/cues.json +167 -0
  338. package/plugins/faceless-shorts/styles/paper-atlas/example/data/lines.json +67 -0
  339. package/plugins/faceless-shorts/styles/paper-atlas/example/data/words.json +614 -0
  340. package/plugins/faceless-shorts/styles/paper-atlas/example/data/words.txt +102 -0
  341. package/plugins/faceless-shorts/styles/paper-atlas/example/fonts/Caladea-Bold.ttf +0 -0
  342. package/plugins/faceless-shorts/styles/paper-atlas/example/fonts/Inter-Black.otf +0 -0
  343. package/plugins/faceless-shorts/styles/paper-atlas/example/index.html +13 -0
  344. package/plugins/faceless-shorts/styles/paper-atlas/example/script.json +26 -0
  345. package/plugins/faceless-shorts/styles/paper-atlas/example/sheet.html +10 -0
  346. package/plugins/faceless-shorts/styles/paper-atlas/example/src/core/board.js +62 -0
  347. package/plugins/faceless-shorts/styles/paper-atlas/example/src/core/captions.js +47 -0
  348. package/plugins/faceless-shorts/styles/paper-atlas/example/src/core/kit.js +152 -0
  349. package/plugins/faceless-shorts/styles/paper-atlas/example/src/core/lib.js +44 -0
  350. package/plugins/faceless-shorts/styles/paper-atlas/example/src/core/timing.js +23 -0
  351. package/plugins/faceless-shorts/styles/paper-atlas/example/src/main.js +62 -0
  352. package/plugins/faceless-shorts/styles/paper-atlas/example/src/sheet.js +61 -0
  353. package/plugins/faceless-shorts/styles/paper-atlas/example/src/shots.js +139 -0
  354. package/plugins/faceless-shorts/styles/paper-atlas/example/tools/capture.mjs +122 -0
  355. package/plugins/faceless-shorts/styles/paper-atlas/example/tools/mix.py +172 -0
  356. package/plugins/faceless-shorts/styles/paper-atlas/style-sheet.png +0 -0
  357. package/plugins/faceless-shorts/styles/stick-story/STYLE.md +32 -0
  358. package/plugins/faceless-shorts/styles/stick-story/example/data/cues.json +182 -0
  359. package/plugins/faceless-shorts/styles/stick-story/example/data/lines.json +79 -0
  360. package/plugins/faceless-shorts/styles/stick-story/example/data/words.json +662 -0
  361. package/plugins/faceless-shorts/styles/stick-story/example/data/words.txt +110 -0
  362. package/plugins/faceless-shorts/styles/stick-story/example/fonts/Inter-Black.otf +0 -0
  363. package/plugins/faceless-shorts/styles/stick-story/example/fonts/Inter-ExtraBold.otf +0 -0
  364. package/plugins/faceless-shorts/styles/stick-story/example/index.html +12 -0
  365. package/plugins/faceless-shorts/styles/stick-story/example/script.json +27 -0
  366. package/plugins/faceless-shorts/styles/stick-story/example/sheet.html +9 -0
  367. package/plugins/faceless-shorts/styles/stick-story/example/src/core/board.js +62 -0
  368. package/plugins/faceless-shorts/styles/stick-story/example/src/core/captions.js +47 -0
  369. package/plugins/faceless-shorts/styles/stick-story/example/src/core/kit.js +166 -0
  370. package/plugins/faceless-shorts/styles/stick-story/example/src/core/lib.js +44 -0
  371. package/plugins/faceless-shorts/styles/stick-story/example/src/core/timing.js +23 -0
  372. package/plugins/faceless-shorts/styles/stick-story/example/src/main.js +62 -0
  373. package/plugins/faceless-shorts/styles/stick-story/example/src/sheet.js +64 -0
  374. package/plugins/faceless-shorts/styles/stick-story/example/src/shots.js +148 -0
  375. package/plugins/faceless-shorts/styles/stick-story/example/tools/capture.mjs +122 -0
  376. package/plugins/faceless-shorts/styles/stick-story/example/tools/mix.py +172 -0
  377. package/plugins/faceless-shorts/styles/stick-story/style-sheet.png +0 -0
  378. package/plugins/faceless-shorts/styles/tall-tale/STYLE.md +51 -0
  379. package/plugins/faceless-shorts/styles/tall-tale/example/data/cues.json +271 -0
  380. package/plugins/faceless-shorts/styles/tall-tale/example/data/lines.json +127 -0
  381. package/plugins/faceless-shorts/styles/tall-tale/example/data/words.json +908 -0
  382. package/plugins/faceless-shorts/styles/tall-tale/example/data/words.txt +151 -0
  383. package/plugins/faceless-shorts/styles/tall-tale/example/fonts/Caladea-Bold.ttf +0 -0
  384. package/plugins/faceless-shorts/styles/tall-tale/example/fonts/Inter-Black.otf +0 -0
  385. package/plugins/faceless-shorts/styles/tall-tale/example/fonts/Inter-ExtraBold.otf +0 -0
  386. package/plugins/faceless-shorts/styles/tall-tale/example/index.html +17 -0
  387. package/plugins/faceless-shorts/styles/tall-tale/example/script.json +37 -0
  388. package/plugins/faceless-shorts/styles/tall-tale/example/sheet.html +11 -0
  389. package/plugins/faceless-shorts/styles/tall-tale/example/src/core/board.js +62 -0
  390. package/plugins/faceless-shorts/styles/tall-tale/example/src/core/captions.js +56 -0
  391. package/plugins/faceless-shorts/styles/tall-tale/example/src/core/engine.js +65 -0
  392. package/plugins/faceless-shorts/styles/tall-tale/example/src/core/lib.js +44 -0
  393. package/plugins/faceless-shorts/styles/tall-tale/example/src/core/props.js +166 -0
  394. package/plugins/faceless-shorts/styles/tall-tale/example/src/core/timing.js +23 -0
  395. package/plugins/faceless-shorts/styles/tall-tale/example/src/core/toon.js +352 -0
  396. package/plugins/faceless-shorts/styles/tall-tale/example/src/core/world.js +340 -0
  397. package/plugins/faceless-shorts/styles/tall-tale/example/src/main.js +56 -0
  398. package/plugins/faceless-shorts/styles/tall-tale/example/src/sheet.js +99 -0
  399. package/plugins/faceless-shorts/styles/tall-tale/example/src/shots.js +377 -0
  400. package/plugins/faceless-shorts/styles/tall-tale/example/tools/capture.mjs +122 -0
  401. package/plugins/faceless-shorts/styles/tall-tale/example/tools/mix.py +204 -0
  402. package/plugins/faceless-shorts/styles/tall-tale/example/vendor/LICENSE-three.txt +21 -0
  403. package/plugins/faceless-shorts/styles/tall-tale/example/vendor/addons/environments/RoomEnvironment.js +144 -0
  404. package/plugins/faceless-shorts/styles/tall-tale/example/vendor/addons/postprocessing/BokehPass.js +141 -0
  405. package/plugins/faceless-shorts/styles/tall-tale/example/vendor/addons/postprocessing/EffectComposer.js +231 -0
  406. package/plugins/faceless-shorts/styles/tall-tale/example/vendor/addons/postprocessing/MaskPass.js +104 -0
  407. package/plugins/faceless-shorts/styles/tall-tale/example/vendor/addons/postprocessing/OutputPass.js +97 -0
  408. package/plugins/faceless-shorts/styles/tall-tale/example/vendor/addons/postprocessing/Pass.js +95 -0
  409. package/plugins/faceless-shorts/styles/tall-tale/example/vendor/addons/postprocessing/RenderPass.js +99 -0
  410. package/plugins/faceless-shorts/styles/tall-tale/example/vendor/addons/postprocessing/ShaderPass.js +77 -0
  411. package/plugins/faceless-shorts/styles/tall-tale/example/vendor/addons/postprocessing/UnrealBloomPass.js +415 -0
  412. package/plugins/faceless-shorts/styles/tall-tale/example/vendor/addons/shaders/BokehShader.js +145 -0
  413. package/plugins/faceless-shorts/styles/tall-tale/example/vendor/addons/shaders/CopyShader.js +45 -0
  414. package/plugins/faceless-shorts/styles/tall-tale/example/vendor/addons/shaders/LuminosityHighPassShader.js +64 -0
  415. package/plugins/faceless-shorts/styles/tall-tale/example/vendor/addons/shaders/OutputShader.js +85 -0
  416. package/plugins/faceless-shorts/styles/tall-tale/example/vendor/three.module.js +6 -0
  417. package/plugins/faceless-shorts/styles/tall-tale/style-sheet.png +0 -0
  418. package/plugins/motion-styles/LIBRARY.md +896 -0
  419. package/plugins/motion-styles/README.md +29 -0
  420. package/plugins/motion-styles/SKILL.md +70 -0
  421. package/plugins/motion-styles/catalog.json +2253 -0
  422. package/plugins/motion-styles/prompts/bio-glow.md +149 -0
  423. package/plugins/motion-styles/prompts/blueprint.md +145 -0
  424. package/plugins/motion-styles/prompts/breaking-desk.md +147 -0
  425. package/plugins/motion-styles/prompts/callout-kit.md +147 -0
  426. package/plugins/motion-styles/prompts/chalk-talk.md +153 -0
  427. package/plugins/motion-styles/prompts/chat-story.md +143 -0
  428. package/plugins/motion-styles/prompts/clay-diorama.md +149 -0
  429. package/plugins/motion-styles/prompts/clean-tech.md +147 -0
  430. package/plugins/motion-styles/prompts/comic-panels.md +145 -0
  431. package/plugins/motion-styles/prompts/cosmic-scale.md +147 -0
  432. package/plugins/motion-styles/prompts/creator-motion.md +149 -0
  433. package/plugins/motion-styles/prompts/data-city.md +149 -0
  434. package/plugins/motion-styles/prompts/data-story.md +147 -0
  435. package/plugins/motion-styles/prompts/deep-layers.md +147 -0
  436. package/plugins/motion-styles/prompts/doc-cinema.md +145 -0
  437. package/plugins/motion-styles/prompts/evidence-board.md +145 -0
  438. package/plugins/motion-styles/prompts/exploded-view.md +149 -0
  439. package/plugins/motion-styles/prompts/glass-icons.md +147 -0
  440. package/plugins/motion-styles/prompts/glitch-pack.md +145 -0
  441. package/plugins/motion-styles/prompts/globe-arcs.md +147 -0
  442. package/plugins/motion-styles/prompts/headline-backdrop.md +145 -0
  443. package/plugins/motion-styles/prompts/iso-cutaway.md +147 -0
  444. package/plugins/motion-styles/prompts/isotype.md +145 -0
  445. package/plugins/motion-styles/prompts/karaoke-subs.md +145 -0
  446. package/plugins/motion-styles/prompts/low-poly-atlas.md +149 -0
  447. package/plugins/motion-styles/prompts/lower-thirds.md +147 -0
  448. package/plugins/motion-styles/prompts/marker-board.md +145 -0
  449. package/plugins/motion-styles/prompts/market-tape.md +145 -0
  450. package/plugins/motion-styles/prompts/math-canvas.md +145 -0
  451. package/plugins/motion-styles/prompts/myth-or-fact.md +145 -0
  452. package/plugins/motion-styles/prompts/neon-line.md +145 -0
  453. package/plugins/motion-styles/prompts/paper-craft.md +145 -0
  454. package/plugins/motion-styles/prompts/parchment-map.md +147 -0
  455. package/plugins/motion-styles/prompts/physics-toybox.md +147 -0
  456. package/plugins/motion-styles/prompts/pixel-quest.md +145 -0
  457. package/plugins/motion-styles/prompts/podcast-clip.md +147 -0
  458. package/plugins/motion-styles/prompts/pop-info.md +145 -0
  459. package/plugins/motion-styles/prompts/product-turntable.md +149 -0
  460. package/plugins/motion-styles/prompts/punch-captions.md +145 -0
  461. package/plugins/motion-styles/prompts/quiz-countdown.md +145 -0
  462. package/plugins/motion-styles/prompts/quote-cinema.md +145 -0
  463. package/plugins/motion-styles/prompts/recipe-steps.md +145 -0
  464. package/plugins/motion-styles/prompts/rubber-hose-reel.md +145 -0
  465. package/plugins/motion-styles/prompts/shadow-puppets.md +145 -0
  466. package/plugins/motion-styles/prompts/size-lineup.md +149 -0
  467. package/plugins/motion-styles/prompts/software-walkthrough.md +147 -0
  468. package/plugins/motion-styles/prompts/stack-split.md +145 -0
  469. package/plugins/motion-styles/prompts/sticker-pop.md +145 -0
  470. package/plugins/motion-styles/prompts/storybook.md +145 -0
  471. package/plugins/motion-styles/prompts/swiss-grid.md +145 -0
  472. package/plugins/motion-styles/prompts/synth-grid.md +147 -0
  473. package/plugins/motion-styles/prompts/tactics-board.md +145 -0
  474. package/plugins/motion-styles/prompts/terminal.md +145 -0
  475. package/plugins/motion-styles/prompts/tier-list.md +143 -0
  476. package/plugins/motion-styles/prompts/timeline-rail.md +145 -0
  477. package/plugins/motion-styles/prompts/top-5-countdown.md +145 -0
  478. package/plugins/motion-styles/prompts/versus-split.md +145 -0
  479. package/plugins/motion-styles/prompts/vhs-camcorder.md +145 -0
  480. package/plugins/motion-styles/prompts/visual-novel.md +145 -0
  481. package/plugins/motion-styles/prompts/warm-canvas.md +145 -0
  482. package/plugins/motion-styles/prompts/woodcut-tale.md +145 -0
  483. package/plugins/motion-styles/prompts/zine-collage.md +145 -0
  484. package/plugins/motion-styles/sources/bio-glow.html +639 -0
  485. package/plugins/motion-styles/sources/blueprint.html +617 -0
  486. package/plugins/motion-styles/sources/breaking-desk.html +585 -0
  487. package/plugins/motion-styles/sources/callout-kit.html +586 -0
  488. package/plugins/motion-styles/sources/chalk-talk.html +597 -0
  489. package/plugins/motion-styles/sources/chat-story.html +597 -0
  490. package/plugins/motion-styles/sources/clay-diorama.html +681 -0
  491. package/plugins/motion-styles/sources/clean-tech.html +554 -0
  492. package/plugins/motion-styles/sources/comic-panels.html +608 -0
  493. package/plugins/motion-styles/sources/cosmic-scale.html +628 -0
  494. package/plugins/motion-styles/sources/creator-motion.html +805 -0
  495. package/plugins/motion-styles/sources/data-city.html +613 -0
  496. package/plugins/motion-styles/sources/data-story.html +539 -0
  497. package/plugins/motion-styles/sources/deep-layers.html +624 -0
  498. package/plugins/motion-styles/sources/doc-cinema.html +590 -0
  499. package/plugins/motion-styles/sources/evidence-board.html +610 -0
  500. package/plugins/motion-styles/sources/exploded-view.html +618 -0
  501. package/plugins/motion-styles/sources/glass-icons.html +612 -0
  502. package/plugins/motion-styles/sources/glitch-pack.html +583 -0
  503. package/plugins/motion-styles/sources/globe-arcs.html +621 -0
  504. package/plugins/motion-styles/sources/headline-backdrop.html +584 -0
  505. package/plugins/motion-styles/sources/iso-cutaway.html +621 -0
  506. package/plugins/motion-styles/sources/isotype.html +588 -0
  507. package/plugins/motion-styles/sources/karaoke-subs.html +577 -0
  508. package/plugins/motion-styles/sources/low-poly-atlas.html +621 -0
  509. package/plugins/motion-styles/sources/lower-thirds.html +582 -0
  510. package/plugins/motion-styles/sources/marker-board.html +598 -0
  511. package/plugins/motion-styles/sources/market-tape.html +598 -0
  512. package/plugins/motion-styles/sources/math-canvas.html +592 -0
  513. package/plugins/motion-styles/sources/myth-or-fact.html +587 -0
  514. package/plugins/motion-styles/sources/neon-line.html +597 -0
  515. package/plugins/motion-styles/sources/paper-craft.html +612 -0
  516. package/plugins/motion-styles/sources/parchment-map.html +624 -0
  517. package/plugins/motion-styles/sources/physics-toybox.html +617 -0
  518. package/plugins/motion-styles/sources/pixel-quest.html +609 -0
  519. package/plugins/motion-styles/sources/podcast-clip.html +585 -0
  520. package/plugins/motion-styles/sources/pop-info.html +677 -0
  521. package/plugins/motion-styles/sources/product-turntable.html +611 -0
  522. package/plugins/motion-styles/sources/punch-captions.html +583 -0
  523. package/plugins/motion-styles/sources/quiz-countdown.html +593 -0
  524. package/plugins/motion-styles/sources/quote-cinema.html +581 -0
  525. package/plugins/motion-styles/sources/recipe-steps.html +599 -0
  526. package/plugins/motion-styles/sources/rubber-hose-reel.html +627 -0
  527. package/plugins/motion-styles/sources/shadow-puppets.html +609 -0
  528. package/plugins/motion-styles/sources/size-lineup.html +620 -0
  529. package/plugins/motion-styles/sources/software-walkthrough.html +651 -0
  530. package/plugins/motion-styles/sources/stack-split.html +588 -0
  531. package/plugins/motion-styles/sources/sticker-pop.html +587 -0
  532. package/plugins/motion-styles/sources/storybook.html +600 -0
  533. package/plugins/motion-styles/sources/swiss-grid.html +590 -0
  534. package/plugins/motion-styles/sources/synth-grid.html +614 -0
  535. package/plugins/motion-styles/sources/tactics-board.html +608 -0
  536. package/plugins/motion-styles/sources/terminal.html +593 -0
  537. package/plugins/motion-styles/sources/tier-list.html +600 -0
  538. package/plugins/motion-styles/sources/timeline-rail.html +598 -0
  539. package/plugins/motion-styles/sources/top-5-countdown.html +589 -0
  540. package/plugins/motion-styles/sources/versus-split.html +592 -0
  541. package/plugins/motion-styles/sources/vhs-camcorder.html +587 -0
  542. package/plugins/motion-styles/sources/visual-novel.html +623 -0
  543. package/plugins/motion-styles/sources/warm-canvas.html +742 -0
  544. package/plugins/motion-styles/sources/woodcut-tale.html +598 -0
  545. package/plugins/motion-styles/sources/zine-collage.html +594 -0
  546. package/plugins/video-pipeline/.claude-plugin/plugin.json +2 -2
  547. package/plugins/video-pipeline/skills/.upstream-skills.json +156 -143
  548. package/plugins/video-pipeline/skills/video-pipeline/references/mcp-tools.md +3 -3
  549. package/scripts/deep-validate.js +3 -2
  550. package/src/audio-mixer/mixer.js +69 -0
  551. package/src/cli/make.js +19 -0
  552. package/src/harness/lib/browser.mjs +22 -1
  553. package/src/harness/lib/capture.mjs +33 -11
  554. package/src/harness/lib/jobs.mjs +16 -1
  555. package/src/mcp-server/server.js +726 -10
  556. package/src/pipeline/providers.js +77 -17
  557. package/src/skills/sync-upstream.js +15 -3
  558. package/src/utils/media-downloader.js +7 -0
  559. package/src/utils/tool-installer.js +212 -0
  560. package/src/utils/transcribe.js +9 -1
  561. package/src/video-renderer/renderer.js +68 -38
  562. package/src/video-renderer/scene-animator.js +50 -15
  563. package/src/workflows/assets.js +49 -5
  564. package/src/workflows/render.js +2 -0
  565. package/src/workflows/script.js +14 -3
@@ -0,0 +1,145 @@
1
+ # Motion graphics style #35: Math Canvas
2
+
3
+ - **ID:** `math-canvas`
4
+ - **Family:** Data
5
+ - **Canvas:** `720x1280`
6
+ - **Fonts:** Instrument Serif (italic, for maths), Space Grotesk (700), JetBrains Mono (500), Caveat (700)
7
+ - **Three.js 3D:** No
8
+ - **Footage Overlay:** No
9
+
10
+ ## Look
11
+ 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.
12
+
13
+ ## How It Explains
14
+ 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.
15
+
16
+ ## Demo
17
+ Compound interest: slow, then suddenly fast
18
+
19
+ ---
20
+
21
+ ## Ready-to-Copy Prompt (Standard)
22
+
23
+ ```markdown
24
+ 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.
25
+
26
+ MY CONTENT
27
+ [No topic yet. Ask me for my topic or script before building anything.]
28
+
29
+ BUILD DIRECTLY
30
+ Skip the storyboard and build the full animation now. Afterwards, list any facts or numbers you assumed.
31
+
32
+ WHAT TO BUILD
33
+ One self-contained HTML file (an artifact if you can), built on the reference file below:
34
+ - Keep the page, the player (play/pause, scrub, time, sound toggle, loop, Load voiceover) and the CM and SFX blocks unchanged. Also keep the shared library helpers block (track, txt, chip, slam, rise, wordLine, hd, footage, composite, cam, punch, makeGL and the sound helpers) unchanged.
35
+ - Keep the canvas at 720x1280 (9:16, for Shorts, Reels and TikTok).
36
+ - Replace the demo's story: TL, 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).
37
+ - Aim for 15 to 40 seconds unless my content needs more, and set the duration in TL.D.
38
+ - Keep window.seek(t), window.DURATION, window.scoreSound and window.SFX exposed, so the video can be rendered frame by frame.
39
+ - Load the style's fonts before the first draw, as the reference does: Instrument Serif (italic, for maths), Space Grotesk (700), JetBrains Mono (500), Caveat (700).
40
+
41
+ THE STYLE
42
+ - Background: dark slate (#12141b) with a faint 20 px grid. Maths is written in Instrument Serif italic (white), never in a sans.
43
+ - 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.
44
+ - 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.
45
+ - 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.
46
+ - Type: Space Grotesk 700 for the takeaway, JetBrains Mono for axis labels and captions, Caveat 700 for handwritten notes.
47
+ - Pace: equation about 2 seconds, axes 0.5 seconds, the plot 4 to 5 seconds, then the gap and the takeaway.
48
+
49
+ RULES THAT KEEP IT IN STYLE
50
+ - Change the story, the words and the props; do not change the medium. Draw every subject accurately for my topic and double-check any facts and numbers you show.
51
+ - Every frame is a pure function of t. Use CM.rng(seed) and CM.noise1(seed) for all randomness, never Math.random. Caching static layers is fine.
52
+ - It will be watched on phones: at 720x1280 keep the 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.
53
+ - Keep each frame fast, well under 50 ms.
54
+ - 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.
55
+
56
+ SOUND
57
+ - Bed: a calm, slow pad.
58
+ - 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.
59
+ - 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.
60
+ - Sync is everything: the sound score reads the same TL times as the picture.
61
+
62
+ IF YOU CAN RUN CODE
63
+ Render an MP4: open the file in headless Chrome, call window.seek(i / 30) for every frame, capture the canvas and pipe the frames into ffmpeg. Render the effects with SFX.render(window.scoreSound, window.DURATION, 48000, { voiceover: false }), which returns interleaved stereo floats, and mux them in. With a voiceover, render the effects with { voiceover: true } and mix them under my audio file.
64
+
65
+ STYLE CARD
66
+ Name: Math Canvas
67
+ Family: Data
68
+ 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.
69
+ How 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.
70
+
71
+ ```
72
+
73
+ ---
74
+
75
+ ## Voiceover & Storyboard Prompt
76
+
77
+ ```markdown
78
+ 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.
79
+
80
+ MY CONTENT
81
+ [No topic yet. Ask me for my topic or script before building anything.]
82
+
83
+ VOICEOVER TIMING
84
+ [No timing pasted yet. Before building, ask me for a word-level SRT or word timestamps of my voiceover. If I only have the audio file, offer to transcribe it into word timings.]
85
+
86
+ How to use the timing:
87
+ - Turn it into a list of words with start and end times in seconds. If the timing is per line only, spread each line's words across its span in proportion to their length.
88
+ - Set the duration to the last word's end plus about 1.2 seconds.
89
+ - Build the timeline (TL) from these times. Each 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.
90
+ - Cut between scenes only at idea boundaries (a new step, a new claim, a reveal), never mid-word, and finish each cut just before the next idea's first spoken word.
91
+ - Put the emphasis moves on stressed words. A counter lands at the exact moment its number is spoken.
92
+ - Keep the player's "Load voiceover" button working so I can drop in my audio and hear it in sync.
93
+
94
+ STORYBOARD FIRST
95
+ Before building, show me a storyboard and wait for my OK:
96
+ - One HTML page (an artifact if you can) with a grid of 6 to 10 panels, one per beat. Draw each panel on a canvas with the reference's own helpers, scene drawing and finishing pass, so the stills already look like the finished piece. No animation or sound yet.
97
+ - Under each panel: the beat number, its start and end time, the exact on-screen words, the camera move or emphasis, how it gets there from the previous beat (the same scene continuing, or a cut and which kind), and its key sounds.
98
+ - Below the grid, list any facts or numbers you had to assume.
99
+ When I approve it (or after my changes), build the full animation and reuse the storyboard's drawing code.
100
+
101
+ WHAT TO BUILD
102
+ One self-contained HTML file (an artifact if you can), built on the reference file below:
103
+ - Keep the page, the player (play/pause, scrub, time, sound toggle, loop, Load voiceover) and the CM and SFX blocks unchanged. Also keep the shared library helpers block (track, txt, chip, slam, rise, wordLine, hd, footage, composite, cam, punch, makeGL and the sound helpers) unchanged.
104
+ - Keep the canvas at 720x1280 (9:16, for Shorts, Reels and TikTok).
105
+ - Replace the demo's story: TL, 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).
106
+ - Aim for 15 to 40 seconds unless my content needs more, and set the duration in TL.D.
107
+ - Keep window.seek(t), window.DURATION, window.scoreSound and window.SFX exposed, so the video can be rendered frame by frame.
108
+ - Load the style's fonts before the first draw, as the reference does: Instrument Serif (italic, for maths), Space Grotesk (700), JetBrains Mono (500), Caveat (700).
109
+
110
+ THE STYLE
111
+ - Background: dark slate (#12141b) with a faint 20 px grid. Maths is written in Instrument Serif italic (white), never in a sans.
112
+ - 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.
113
+ - 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.
114
+ - 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.
115
+ - Type: Space Grotesk 700 for the takeaway, JetBrains Mono for axis labels and captions, Caveat 700 for handwritten notes.
116
+ - Pace: equation about 2 seconds, axes 0.5 seconds, the plot 4 to 5 seconds, then the gap and the takeaway.
117
+
118
+ RULES THAT KEEP IT IN STYLE
119
+ - Change the story, the words and the props; do not change the medium. Draw every subject accurately for my topic and double-check any facts and numbers you show.
120
+ - Every frame is a pure function of t. Use CM.rng(seed) and CM.noise1(seed) for all randomness, never Math.random. Caching static layers is fine.
121
+ - It will be watched on phones: at 720x1280 keep the 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.
122
+ - Keep each frame fast, well under 50 ms.
123
+ - 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.
124
+
125
+ SOUND
126
+ - Bed: a calm, slow pad.
127
+ - 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.
128
+ - Voiceover mix: the player calls SFX.live with { voiceover: true } once narration is loaded. Mark plucks soft: true.
129
+ - Sync is everything: the sound score reads the same TL times as the picture.
130
+
131
+ IF YOU CAN RUN CODE
132
+ Render an MP4: open the file in headless Chrome, call window.seek(i / 30) for every frame, capture the canvas and pipe the frames into ffmpeg. Render the effects with SFX.render(window.scoreSound, window.DURATION, 48000, { voiceover: false }), which returns interleaved stereo floats, and mux them in. With a voiceover, render the effects with { voiceover: true } and mix them under my audio file.
133
+
134
+ STYLE CARD
135
+ Name: Math Canvas
136
+ Family: Data
137
+ 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.
138
+ How 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.
139
+
140
+ ```
141
+
142
+ ---
143
+
144
+ ## Reference Source Code Location
145
+ File: `plugins/motion-styles/sources/math-canvas.html` (58.0 KB)
@@ -0,0 +1,145 @@
1
+ # Motion graphics style #43: Myth or Fact
2
+
3
+ - **ID:** `myth-or-fact`
4
+ - **Family:** Shorts Format
5
+ - **Canvas:** `720x1280`
6
+ - **Fonts:** Archivo Black, Inter (600 to 800), Anton (stamps)
7
+ - **Three.js 3D:** No
8
+ - **Footage Overlay:** No
9
+
10
+ ## Look
11
+ 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.
12
+
13
+ ## How It Explains
14
+ 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.
15
+
16
+ ## Demo
17
+ Two body myths and facts
18
+
19
+ ---
20
+
21
+ ## Ready-to-Copy Prompt (Standard)
22
+
23
+ ```markdown
24
+ 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.
25
+
26
+ MY CONTENT
27
+ [No topic yet. Ask me for my topic or script before building anything.]
28
+
29
+ BUILD DIRECTLY
30
+ Skip the storyboard and build the full animation now. Afterwards, list any facts or numbers you assumed.
31
+
32
+ WHAT TO BUILD
33
+ One self-contained HTML file (an artifact if you can), built on the reference file below:
34
+ - Keep the page, the player (play/pause, scrub, time, sound toggle, loop, Load voiceover) and the CM and SFX blocks unchanged. Also keep the shared library helpers block (track, txt, chip, slam, rise, wordLine, hd, footage, composite, cam, punch, makeGL and the sound helpers) unchanged.
35
+ - Keep the canvas at 720x1280 (9:16, for Shorts, Reels and TikTok).
36
+ - Replace the demo's story: TL, 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).
37
+ - Aim for 15 to 40 seconds unless my content needs more, and set the duration in TL.D.
38
+ - Keep window.seek(t), window.DURATION, window.scoreSound and window.SFX exposed, so the video can be rendered frame by frame.
39
+ - Load the style's fonts before the first draw, as the reference does: Archivo Black, Inter (600 to 800), Anton (stamps).
40
+
41
+ THE STYLE
42
+ - Background: pale cool grey (#eef1f4); the title "MYTH OR FACT?" in Archivo Black with a yellow question mark at the top.
43
+ - Statement cards: white, 26 px corners, soft shadow, a large faint quote mark, the claim in Inter 800, and a small round number.
44
+ - 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.
45
+ - Proof: one or two short lines in Inter 700 with a round icon (green check for fact, red cross for myth).
46
+ - Only real, checkable claims, and proof lines that state what the evidence actually shows.
47
+ - Pace: about 5 to 6 seconds per round.
48
+
49
+ RULES THAT KEEP IT IN STYLE
50
+ - Change the story, the words and the props; do not change the medium. Draw every subject accurately for my topic and double-check any facts and numbers you show.
51
+ - Every frame is a pure function of t. Use CM.rng(seed) and CM.noise1(seed) for all randomness, never Math.random. Caching static layers is fine.
52
+ - It will be watched on phones: at 720x1280 keep statements at 46 px or more, the stamp at 100 px or more and proof lines at 30 px or more. Fill the frame.
53
+ - Keep each frame fast, well under 50 ms.
54
+ - Give my topic its own demo content; do not reuse the reference's story ("Two body myths and facts") unless my content asks for it.
55
+
56
+ SOUND
57
+ - Bed: a light, curious pad.
58
+ - 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.
59
+ - 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.
60
+ - Sync is everything: the sound score reads the same TL times as the picture.
61
+
62
+ IF YOU CAN RUN CODE
63
+ Render an MP4: open the file in headless Chrome, call window.seek(i / 30) for every frame, capture the canvas and pipe the frames into ffmpeg. Render the effects with SFX.render(window.scoreSound, window.DURATION, 48000, { voiceover: false }), which returns interleaved stereo floats, and mux them in. With a voiceover, render the effects with { voiceover: true } and mix them under my audio file.
64
+
65
+ STYLE CARD
66
+ Name: Myth or Fact
67
+ Family: Shorts Format
68
+ 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.
69
+ How 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.
70
+
71
+ ```
72
+
73
+ ---
74
+
75
+ ## Voiceover & Storyboard Prompt
76
+
77
+ ```markdown
78
+ 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.
79
+
80
+ MY CONTENT
81
+ [No topic yet. Ask me for my topic or script before building anything.]
82
+
83
+ VOICEOVER TIMING
84
+ [No timing pasted yet. Before building, ask me for a word-level SRT or word timestamps of my voiceover. If I only have the audio file, offer to transcribe it into word timings.]
85
+
86
+ How to use the timing:
87
+ - Turn it into a list of words with start and end times in seconds. If the timing is per line only, spread each line's words across its span in proportion to their length.
88
+ - Set the duration to the last word's end plus about 1.2 seconds.
89
+ - Build the timeline (TL) from these times. 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.
90
+ - Cut between scenes only at idea boundaries (a new step, a new claim, a reveal), never mid-word, and finish each cut just before the next idea's first spoken word.
91
+ - Put the emphasis moves on stressed words. A counter lands at the exact moment its number is spoken.
92
+ - Keep the player's "Load voiceover" button working so I can drop in my audio and hear it in sync.
93
+
94
+ STORYBOARD FIRST
95
+ Before building, show me a storyboard and wait for my OK:
96
+ - One HTML page (an artifact if you can) with a grid of 6 to 10 panels, one per beat. Draw each panel on a canvas with the reference's own helpers, scene drawing and finishing pass, so the stills already look like the finished piece. No animation or sound yet.
97
+ - Under each panel: the beat number, its start and end time, the exact on-screen words, the camera move or emphasis, how it gets there from the previous beat (the same scene continuing, or a cut and which kind), and its key sounds.
98
+ - Below the grid, list any facts or numbers you had to assume.
99
+ When I approve it (or after my changes), build the full animation and reuse the storyboard's drawing code.
100
+
101
+ WHAT TO BUILD
102
+ One self-contained HTML file (an artifact if you can), built on the reference file below:
103
+ - Keep the page, the player (play/pause, scrub, time, sound toggle, loop, Load voiceover) and the CM and SFX blocks unchanged. Also keep the shared library helpers block (track, txt, chip, slam, rise, wordLine, hd, footage, composite, cam, punch, makeGL and the sound helpers) unchanged.
104
+ - Keep the canvas at 720x1280 (9:16, for Shorts, Reels and TikTok).
105
+ - Replace the demo's story: TL, 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).
106
+ - Aim for 15 to 40 seconds unless my content needs more, and set the duration in TL.D.
107
+ - Keep window.seek(t), window.DURATION, window.scoreSound and window.SFX exposed, so the video can be rendered frame by frame.
108
+ - Load the style's fonts before the first draw, as the reference does: Archivo Black, Inter (600 to 800), Anton (stamps).
109
+
110
+ THE STYLE
111
+ - Background: pale cool grey (#eef1f4); the title "MYTH OR FACT?" in Archivo Black with a yellow question mark at the top.
112
+ - Statement cards: white, 26 px corners, soft shadow, a large faint quote mark, the claim in Inter 800, and a small round number.
113
+ - 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.
114
+ - Proof: one or two short lines in Inter 700 with a round icon (green check for fact, red cross for myth).
115
+ - Only real, checkable claims, and proof lines that state what the evidence actually shows.
116
+ - Pace: about 5 to 6 seconds per round.
117
+
118
+ RULES THAT KEEP IT IN STYLE
119
+ - Change the story, the words and the props; do not change the medium. Draw every subject accurately for my topic and double-check any facts and numbers you show.
120
+ - Every frame is a pure function of t. Use CM.rng(seed) and CM.noise1(seed) for all randomness, never Math.random. Caching static layers is fine.
121
+ - It will be watched on phones: at 720x1280 keep statements at 46 px or more, the stamp at 100 px or more and proof lines at 30 px or more. Fill the frame.
122
+ - Keep each frame fast, well under 50 ms.
123
+ - Give my topic its own demo content; do not reuse the reference's story ("Two body myths and facts") unless my content asks for it.
124
+
125
+ SOUND
126
+ - Bed: a light, curious pad.
127
+ - 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.
128
+ - Voiceover mix: the player calls SFX.live with { voiceover: true } once narration is loaded. Mark ticks soft: true.
129
+ - Sync is everything: the sound score reads the same TL times as the picture.
130
+
131
+ IF YOU CAN RUN CODE
132
+ Render an MP4: open the file in headless Chrome, call window.seek(i / 30) for every frame, capture the canvas and pipe the frames into ffmpeg. Render the effects with SFX.render(window.scoreSound, window.DURATION, 48000, { voiceover: false }), which returns interleaved stereo floats, and mux them in. With a voiceover, render the effects with { voiceover: true } and mix them under my audio file.
133
+
134
+ STYLE CARD
135
+ Name: Myth or Fact
136
+ Family: Shorts Format
137
+ 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.
138
+ How 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.
139
+
140
+ ```
141
+
142
+ ---
143
+
144
+ ## Reference Source Code Location
145
+ File: `plugins/motion-styles/sources/myth-or-fact.html` (56.5 KB)
@@ -0,0 +1,145 @@
1
+ # Motion graphics style #62: Neon Line
2
+
3
+ - **ID:** `neon-line`
4
+ - **Family:** Character Story
5
+ - **Canvas:** `720x1280`
6
+ - **Fonts:** Caveat (700, as neon script), JetBrains Mono (500)
7
+ - **Three.js 3D:** No
8
+ - **Footage Overlay:** No
9
+
10
+ ## Look
11
+ 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.
12
+
13
+ ## How It Explains
14
+ 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.
15
+
16
+ ## Demo
17
+ A long-distance love story (original)
18
+
19
+ ---
20
+
21
+ ## Ready-to-Copy Prompt (Standard)
22
+
23
+ ```markdown
24
+ 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.
25
+
26
+ MY CONTENT
27
+ [No topic yet. Ask me for my topic or script before building anything.]
28
+
29
+ BUILD DIRECTLY
30
+ Skip the storyboard and build the full animation now. Afterwards, list any facts or numbers you assumed.
31
+
32
+ WHAT TO BUILD
33
+ One self-contained HTML file (an artifact if you can), built on the reference file below:
34
+ - Keep the page, the player (play/pause, scrub, time, sound toggle, loop, Load voiceover) and the CM and SFX blocks unchanged. Also keep the shared library helpers block (track, txt, chip, slam, rise, wordLine, hd, footage, composite, cam, punch, makeGL and the sound helpers) unchanged.
35
+ - Keep the canvas at 720x1280 (9:16, for Shorts, Reels and TikTok).
36
+ - Replace the demo's story: TL, 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).
37
+ - Aim for 15 to 40 seconds unless my content needs more, and set the duration in TL.D.
38
+ - Keep window.seek(t), window.DURATION, window.scoreSound and window.SFX exposed, so the video can be rendered frame by frame.
39
+ - Load the style's fonts before the first draw, as the reference does: Caveat (700, as neon script), JetBrains Mono (500).
40
+
41
+ THE STYLE
42
+ - Background: a deep night-blue wall (#070b1a) with faint brick lines and a dark vignette, like a real neon sign mounted on a wall.
43
+ - 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.
44
+ - Only two or three neon colours: pink (#ff4fa3), cyan (#36e1ff) and a warm yellow (#ffd36b) for small details.
45
+ - Lines switch on with a short flicker (two or three off-on blinks) and buzz faintly.
46
+ - Captions in Caveat as neon script in the same glow treatment; small data (distances, times) in JetBrains Mono.
47
+ - 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.
48
+
49
+ RULES THAT KEEP IT IN STYLE
50
+ - Change the story, the words and the props; do not change the medium. Draw every subject accurately for my topic and double-check any facts and numbers you show.
51
+ - Every frame is a pure function of t. Use CM.rng(seed) and CM.noise1(seed) for all randomness, never Math.random. Caching static layers is fine.
52
+ - It will be watched on phones: at 720x1280 keep 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.
53
+ - Keep each frame fast, well under 50 ms.
54
+ - 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.
55
+
56
+ SOUND
57
+ - Bed: a slow, warm synth pad (padBed) with a soft pulse.
58
+ - 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.
59
+ - 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.
60
+ - Sync is everything: the sound score reads the same TL times as the picture.
61
+
62
+ IF YOU CAN RUN CODE
63
+ Render an MP4: open the file in headless Chrome, call window.seek(i / 30) for every frame, capture the canvas and pipe the frames into ffmpeg. Render the effects with SFX.render(window.scoreSound, window.DURATION, 48000, { voiceover: false }), which returns interleaved stereo floats, and mux them in. With a voiceover, render the effects with { voiceover: true } and mix them under my audio file.
64
+
65
+ STYLE CARD
66
+ Name: Neon Line
67
+ Family: Character Story
68
+ 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.
69
+ How 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.
70
+
71
+ ```
72
+
73
+ ---
74
+
75
+ ## Voiceover & Storyboard Prompt
76
+
77
+ ```markdown
78
+ 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.
79
+
80
+ MY CONTENT
81
+ [No topic yet. Ask me for my topic or script before building anything.]
82
+
83
+ VOICEOVER TIMING
84
+ [No timing pasted yet. Before building, ask me for a word-level SRT or word timestamps of my voiceover. If I only have the audio file, offer to transcribe it into word timings.]
85
+
86
+ How to use the timing:
87
+ - Turn it into a list of words with start and end times in seconds. If the timing is per line only, spread each line's words across its span in proportion to their length.
88
+ - Set the duration to the last word's end plus about 1.2 seconds.
89
+ - Build the timeline (TL) from these times. Each 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.
90
+ - Cut between scenes only at idea boundaries (a new step, a new claim, a reveal), never mid-word, and finish each cut just before the next idea's first spoken word.
91
+ - Put the emphasis moves on stressed words. A counter lands at the exact moment its number is spoken.
92
+ - Keep the player's "Load voiceover" button working so I can drop in my audio and hear it in sync.
93
+
94
+ STORYBOARD FIRST
95
+ Before building, show me a storyboard and wait for my OK:
96
+ - One HTML page (an artifact if you can) with a grid of 6 to 10 panels, one per beat. Draw each panel on a canvas with the reference's own helpers, scene drawing and finishing pass, so the stills already look like the finished piece. No animation or sound yet.
97
+ - Under each panel: the beat number, its start and end time, the exact on-screen words, the camera move or emphasis, how it gets there from the previous beat (the same scene continuing, or a cut and which kind), and its key sounds.
98
+ - Below the grid, list any facts or numbers you had to assume.
99
+ When I approve it (or after my changes), build the full animation and reuse the storyboard's drawing code.
100
+
101
+ WHAT TO BUILD
102
+ One self-contained HTML file (an artifact if you can), built on the reference file below:
103
+ - Keep the page, the player (play/pause, scrub, time, sound toggle, loop, Load voiceover) and the CM and SFX blocks unchanged. Also keep the shared library helpers block (track, txt, chip, slam, rise, wordLine, hd, footage, composite, cam, punch, makeGL and the sound helpers) unchanged.
104
+ - Keep the canvas at 720x1280 (9:16, for Shorts, Reels and TikTok).
105
+ - Replace the demo's story: TL, 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).
106
+ - Aim for 15 to 40 seconds unless my content needs more, and set the duration in TL.D.
107
+ - Keep window.seek(t), window.DURATION, window.scoreSound and window.SFX exposed, so the video can be rendered frame by frame.
108
+ - Load the style's fonts before the first draw, as the reference does: Caveat (700, as neon script), JetBrains Mono (500).
109
+
110
+ THE STYLE
111
+ - Background: a deep night-blue wall (#070b1a) with faint brick lines and a dark vignette, like a real neon sign mounted on a wall.
112
+ - 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.
113
+ - Only two or three neon colours: pink (#ff4fa3), cyan (#36e1ff) and a warm yellow (#ffd36b) for small details.
114
+ - Lines switch on with a short flicker (two or three off-on blinks) and buzz faintly.
115
+ - Captions in Caveat as neon script in the same glow treatment; small data (distances, times) in JetBrains Mono.
116
+ - 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.
117
+
118
+ RULES THAT KEEP IT IN STYLE
119
+ - Change the story, the words and the props; do not change the medium. Draw every subject accurately for my topic and double-check any facts and numbers you show.
120
+ - Every frame is a pure function of t. Use CM.rng(seed) and CM.noise1(seed) for all randomness, never Math.random. Caching static layers is fine.
121
+ - It will be watched on phones: at 720x1280 keep 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.
122
+ - Keep each frame fast, well under 50 ms.
123
+ - 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.
124
+
125
+ SOUND
126
+ - Bed: a slow, warm synth pad (padBed) with a soft pulse.
127
+ - 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.
128
+ - Voiceover mix: the player calls SFX.live with { voiceover: true } once narration is loaded. Keep the buzz very low.
129
+ - Sync is everything: the sound score reads the same TL times as the picture.
130
+
131
+ IF YOU CAN RUN CODE
132
+ Render an MP4: open the file in headless Chrome, call window.seek(i / 30) for every frame, capture the canvas and pipe the frames into ffmpeg. Render the effects with SFX.render(window.scoreSound, window.DURATION, 48000, { voiceover: false }), which returns interleaved stereo floats, and mux them in. With a voiceover, render the effects with { voiceover: true } and mix them under my audio file.
133
+
134
+ STYLE CARD
135
+ Name: Neon Line
136
+ Family: Character Story
137
+ 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.
138
+ How 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.
139
+
140
+ ```
141
+
142
+ ---
143
+
144
+ ## Reference Source Code Location
145
+ File: `plugins/motion-styles/sources/neon-line.html` (57.9 KB)
@@ -0,0 +1,145 @@
1
+ # Motion graphics style #22: Paper Craft
2
+
3
+ - **ID:** `paper-craft`
4
+ - **Family:** Illustrated
5
+ - **Canvas:** `720x1280`
6
+ - **Fonts:** Fredoka (500 to 700)
7
+ - **Three.js 3D:** No
8
+ - **Footage Overlay:** No
9
+
10
+ ## Look
11
+ 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.
12
+
13
+ ## How It Explains
14
+ 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.
15
+
16
+ ## Demo
17
+ How bees make honey
18
+
19
+ ---
20
+
21
+ ## Ready-to-Copy Prompt (Standard)
22
+
23
+ ```markdown
24
+ 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.
25
+
26
+ MY CONTENT
27
+ [No topic yet. Ask me for my topic or script before building anything.]
28
+
29
+ BUILD DIRECTLY
30
+ Skip the storyboard and build the full animation now. Afterwards, list any facts or numbers you assumed.
31
+
32
+ WHAT TO BUILD
33
+ One self-contained HTML file (an artifact if you can), built on the reference file below:
34
+ - Keep the page, the player (play/pause, scrub, time, sound toggle, loop, Load voiceover) and the CM and SFX blocks unchanged. Also keep the shared library helpers block (track, txt, chip, slam, rise, wordLine, hd, footage, composite, cam, punch, makeGL and the sound helpers) unchanged.
35
+ - Keep the canvas at 720x1280 (9:16, for Shorts, Reels and TikTok).
36
+ - Replace the demo's story: TL, 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).
37
+ - Aim for 15 to 40 seconds unless my content needs more, and set the duration in TL.D.
38
+ - Keep window.seek(t), window.DURATION, window.scoreSound and window.SFX exposed, so the video can be rendered frame by frame.
39
+ - Load the style's fonts before the first draw, as the reference does: Fredoka (500 to 700).
40
+
41
+ THE STYLE
42
+ - 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.
43
+ - 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.
44
+ - 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).
45
+ - Titles and steps sit on torn white paper strips, slightly rotated, slapped on with a quick overshoot.
46
+ - One small hand-made character carries the story (flapping wings, a dotted path behind it).
47
+ - Pace: the build takes about 1.5 seconds, then one step every 2 to 2.5 seconds.
48
+
49
+ RULES THAT KEEP IT IN STYLE
50
+ - Change the story, the words and the props; do not change the medium. Draw every subject accurately for my topic and double-check any facts and numbers you show.
51
+ - Every frame is a pure function of t. Use CM.rng(seed) and CM.noise1(seed) for all randomness, never Math.random. Caching static layers is fine.
52
+ - It will be watched on phones: at 720x1280 keep strip titles at 44 px or more, step text at 34 px or more and chips at 26 px or more. Fill the frame.
53
+ - Keep each frame fast, well under 50 ms.
54
+ - Give my topic its own demo content; do not reuse the reference's story ("How bees make honey") unless my content asks for it.
55
+
56
+ SOUND
57
+ - Music: a gentle marimba melody (k.voice triangle notes with short decay) over a soft pad.
58
+ - 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.
59
+ - Full mix (no voiceover): keep the marimba melody, paper rustles on every slap, and the bee buzz under the motion.
60
+ - Sync is everything: the sound score reads the same TL times as the picture.
61
+
62
+ IF YOU CAN RUN CODE
63
+ Render an MP4: open the file in headless Chrome, call window.seek(i / 30) for every frame, capture the canvas and pipe the frames into ffmpeg. Render the effects with SFX.render(window.scoreSound, window.DURATION, 48000, { voiceover: false }), which returns interleaved stereo floats, and mux them in. With a voiceover, render the effects with { voiceover: true } and mix them under my audio file.
64
+
65
+ STYLE CARD
66
+ Name: Paper Craft
67
+ Family: Illustrated
68
+ 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.
69
+ How 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.
70
+
71
+ ```
72
+
73
+ ---
74
+
75
+ ## Voiceover & Storyboard Prompt
76
+
77
+ ```markdown
78
+ 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.
79
+
80
+ MY CONTENT
81
+ [No topic yet. Ask me for my topic or script before building anything.]
82
+
83
+ VOICEOVER TIMING
84
+ [No timing pasted yet. Before building, ask me for a word-level SRT or word timestamps of my voiceover. If I only have the audio file, offer to transcribe it into word timings.]
85
+
86
+ How to use the timing:
87
+ - Turn it into a list of words with start and end times in seconds. If the timing is per line only, spread each line's words across its span in proportion to their length.
88
+ - Set the duration to the last word's end plus about 1.2 seconds.
89
+ - Build the timeline (TL) from these times. Each 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.
90
+ - Cut between scenes only at idea boundaries (a new step, a new claim, a reveal), never mid-word, and finish each cut just before the next idea's first spoken word.
91
+ - Put the emphasis moves on stressed words. A counter lands at the exact moment its number is spoken.
92
+ - Keep the player's "Load voiceover" button working so I can drop in my audio and hear it in sync.
93
+
94
+ STORYBOARD FIRST
95
+ Before building, show me a storyboard and wait for my OK:
96
+ - One HTML page (an artifact if you can) with a grid of 6 to 10 panels, one per beat. Draw each panel on a canvas with the reference's own helpers, scene drawing and finishing pass, so the stills already look like the finished piece. No animation or sound yet.
97
+ - Under each panel: the beat number, its start and end time, the exact on-screen words, the camera move or emphasis, how it gets there from the previous beat (the same scene continuing, or a cut and which kind), and its key sounds.
98
+ - Below the grid, list any facts or numbers you had to assume.
99
+ When I approve it (or after my changes), build the full animation and reuse the storyboard's drawing code.
100
+
101
+ WHAT TO BUILD
102
+ One self-contained HTML file (an artifact if you can), built on the reference file below:
103
+ - Keep the page, the player (play/pause, scrub, time, sound toggle, loop, Load voiceover) and the CM and SFX blocks unchanged. Also keep the shared library helpers block (track, txt, chip, slam, rise, wordLine, hd, footage, composite, cam, punch, makeGL and the sound helpers) unchanged.
104
+ - Keep the canvas at 720x1280 (9:16, for Shorts, Reels and TikTok).
105
+ - Replace the demo's story: TL, 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).
106
+ - Aim for 15 to 40 seconds unless my content needs more, and set the duration in TL.D.
107
+ - Keep window.seek(t), window.DURATION, window.scoreSound and window.SFX exposed, so the video can be rendered frame by frame.
108
+ - Load the style's fonts before the first draw, as the reference does: Fredoka (500 to 700).
109
+
110
+ THE STYLE
111
+ - 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.
112
+ - 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.
113
+ - 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).
114
+ - Titles and steps sit on torn white paper strips, slightly rotated, slapped on with a quick overshoot.
115
+ - One small hand-made character carries the story (flapping wings, a dotted path behind it).
116
+ - Pace: the build takes about 1.5 seconds, then one step every 2 to 2.5 seconds.
117
+
118
+ RULES THAT KEEP IT IN STYLE
119
+ - Change the story, the words and the props; do not change the medium. Draw every subject accurately for my topic and double-check any facts and numbers you show.
120
+ - Every frame is a pure function of t. Use CM.rng(seed) and CM.noise1(seed) for all randomness, never Math.random. Caching static layers is fine.
121
+ - It will be watched on phones: at 720x1280 keep strip titles at 44 px or more, step text at 34 px or more and chips at 26 px or more. Fill the frame.
122
+ - Keep each frame fast, well under 50 ms.
123
+ - Give my topic its own demo content; do not reuse the reference's story ("How bees make honey") unless my content asks for it.
124
+
125
+ SOUND
126
+ - Music: a gentle marimba melody (k.voice triangle notes with short decay) over a soft pad.
127
+ - 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.
128
+ - Voiceover mix: the player calls SFX.live with { voiceover: true } once narration is loaded. Keep the buzz low and mark rustles soft: true.
129
+ - Sync is everything: the sound score reads the same TL times as the picture.
130
+
131
+ IF YOU CAN RUN CODE
132
+ Render an MP4: open the file in headless Chrome, call window.seek(i / 30) for every frame, capture the canvas and pipe the frames into ffmpeg. Render the effects with SFX.render(window.scoreSound, window.DURATION, 48000, { voiceover: false }), which returns interleaved stereo floats, and mux them in. With a voiceover, render the effects with { voiceover: true } and mix them under my audio file.
133
+
134
+ STYLE CARD
135
+ Name: Paper Craft
136
+ Family: Illustrated
137
+ 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.
138
+ How 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.
139
+
140
+ ```
141
+
142
+ ---
143
+
144
+ ## Reference Source Code Location
145
+ File: `plugins/motion-styles/sources/paper-craft.html` (60.7 KB)