@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 #52: Headline Backdrop
2
+
3
+ - **ID:** `headline-backdrop`
4
+ - **Family:** Edit Overlay
5
+ - **Canvas:** `720x1280`
6
+ - **Fonts:** Playfair Display (700 and 900), Inter (800 and 900)
7
+ - **Three.js 3D:** No
8
+ - **Footage Overlay:** Yes
9
+
10
+ ## Look
11
+ Commentary layout: you, cut out with a thick white sticker edge and a soft shadow, standing in front of invented article cards that scroll and tilt behind you, with a yellow marker swipe on the line that matters and a black-and-yellow reaction chip.
12
+
13
+ ## How It Explains
14
+ Article cards slide in and stack behind you, the camera drifts down the top card, and the key line gets a yellow highlighter swipe as you read it. A second card swaps in for the counterpoint, and a reaction chip pops beside your head on the punchline.
15
+
16
+ ## Demo
17
+ Reacting to a (made-up) headline about laundry-folding robots
18
+
19
+ ---
20
+
21
+ ## Ready-to-Copy Prompt (Standard)
22
+
23
+ ```markdown
24
+ I want an animated video in the "Headline Backdrop" style (Edit Overlay) from the Motion Graphics Style Library. Below is a complete, working reference animation in this style: its core helpers (CM), a synthesized sound kit (SFX), the style's scenes, its sound score and the player page. Treat that file as the ground truth for how this style looks, moves and sounds, and rebuild it around my content.
25
+
26
+ MY CONTENT
27
+ [No topic yet. Ask me for my topic or script before building anything.]
28
+
29
+ BUILD DIRECTLY
30
+ Skip the storyboard and build the full animation now. Afterwards, list any facts or numbers you assumed.
31
+
32
+ WHAT TO BUILD
33
+ One self-contained HTML file (an artifact if you can), built on the reference file below:
34
+ - Keep the page, the player (play/pause, scrub, time, sound toggle, loop, Load voiceover, Load footage) and the CM and SFX blocks unchanged. Also keep the shared library helpers block (track, txt, chip, slam, rise, wordLine, hd, footage, composite, cam, punch, makeGL and the sound helpers) unchanged.
35
+ - Keep the canvas at 720x1280 (9:16, for Shorts, Reels and TikTok).
36
+ - Keep window.loadFootage(url) and the Load footage button working so I can drop in my own clip and see the overlay on it; until then the stand-in presenter shows where I sit in the frame.
37
+ - Replace the demo's story: TL, ARTICLES (invented site name, headline lines, which line is highlighted), the reaction text and scoreSound(); load your clip with Load footage (shot against a plain background for the cut-out look). Keep and reuse the style's helpers (the pale background, invented article cards with grey body lines, the stack-and-scroll motion, the yellow marker swipe, the sticker-edge cut-out treatment of the footage, the drop shadow and the reaction chip).
38
+ - Aim for 15 to 40 seconds unless my content needs more, and set the duration in TL.D.
39
+ - Keep window.seek(t), window.DURATION, window.scoreSound and window.SFX exposed, so the video can be rendered frame by frame.
40
+ - Load the style's fonts before the first draw, as the reference does: Playfair Display (700 and 900), Inter (800 and 900).
41
+
42
+ THE STYLE
43
+ - Built for your footage: the presenter is cut out (with your clip: a centred crop in a rounded mask; with the stand-in: a real silhouette) and gets a thick white sticker outline and a soft shadow so it sits in front of the cards.
44
+ - Articles are always invented: an invented site name in Playfair Display 900, a serif headline, grey placeholder body lines. Never mock up a real outlet, a real person's quote or a real post.
45
+ - The key line gets a yellow (#ffd60a) marker swipe that grows left to right behind the text.
46
+ - Cards tilt slightly (±4°) and stack with soft shadows on a pale grey-blue background (#e6eaef).
47
+ - Reaction chips: black with yellow Inter 900 text, popping next to the head.
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 headlines at 40 px or more, the reaction chip at 30 px or more, and keep your face clear of the cards. Fill the frame.
53
+ - Keep each frame fast, well under 50 ms.
54
+ - Give my topic its own demo content; do not reuse the reference's story ("Reacting to a (made-up) headline about laundry-folding robots") unless my content asks for it.
55
+
56
+ SOUND
57
+ - No music by default (your clip leads).
58
+ - Map events to the kit: cards get SND.paper; the highlight gets "marker"; the reaction gets "pop" and a short comic sting; the card swap gets a soft "whoosh".
59
+ - Full mix (no voiceover): paper slides for cards, a marker for the highlight, a pop for the reaction.
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: Headline Backdrop
67
+ Family: Edit Overlay
68
+ Look: Commentary layout: you, cut out with a thick white sticker edge and a soft shadow, standing in front of invented article cards that scroll and tilt behind you, with a yellow marker swipe on the line that matters and a black-and-yellow reaction chip.
69
+ How it explains: Article cards slide in and stack behind you, the camera drifts down the top card, and the key line gets a yellow highlighter swipe as you read it. A second card swaps in for the counterpoint, and a reaction chip pops beside your head on the punchline.
70
+
71
+ ```
72
+
73
+ ---
74
+
75
+ ## Voiceover & Storyboard Prompt
76
+
77
+ ```markdown
78
+ I want an animated video in the "Headline Backdrop" style (Edit Overlay) from the Motion Graphics Style Library. Below is a complete, working reference animation in this style: its core helpers (CM), a synthesized sound kit (SFX), the style's scenes, its sound score and the player page. Treat that file as the ground truth for how this style looks, moves and sounds, and rebuild it around my content.
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. A card slides in as you mention it, the highlighter swipes along the line while you read it, and the reaction chip pops on the punchline.
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, Load footage) and the CM and SFX blocks unchanged. Also keep the shared library helpers block (track, txt, chip, slam, rise, wordLine, hd, footage, composite, cam, punch, makeGL and the sound helpers) unchanged.
104
+ - Keep the canvas at 720x1280 (9:16, for Shorts, Reels and TikTok).
105
+ - Keep window.loadFootage(url) and the Load footage button working so I can drop in my own clip and see the overlay on it; until then the stand-in presenter shows where I sit in the frame.
106
+ - Replace the demo's story: TL, ARTICLES (invented site name, headline lines, which line is highlighted), the reaction text and scoreSound(); load your clip with Load footage (shot against a plain background for the cut-out look). Keep and reuse the style's helpers (the pale background, invented article cards with grey body lines, the stack-and-scroll motion, the yellow marker swipe, the sticker-edge cut-out treatment of the footage, the drop shadow and the reaction chip).
107
+ - Aim for 15 to 40 seconds unless my content needs more, and set the duration in TL.D.
108
+ - Keep window.seek(t), window.DURATION, window.scoreSound and window.SFX exposed, so the video can be rendered frame by frame.
109
+ - Load the style's fonts before the first draw, as the reference does: Playfair Display (700 and 900), Inter (800 and 900).
110
+
111
+ THE STYLE
112
+ - Built for your footage: the presenter is cut out (with your clip: a centred crop in a rounded mask; with the stand-in: a real silhouette) and gets a thick white sticker outline and a soft shadow so it sits in front of the cards.
113
+ - Articles are always invented: an invented site name in Playfair Display 900, a serif headline, grey placeholder body lines. Never mock up a real outlet, a real person's quote or a real post.
114
+ - The key line gets a yellow (#ffd60a) marker swipe that grows left to right behind the text.
115
+ - Cards tilt slightly (±4°) and stack with soft shadows on a pale grey-blue background (#e6eaef).
116
+ - Reaction chips: black with yellow Inter 900 text, popping next to the head.
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 headlines at 40 px or more, the reaction chip at 30 px or more, and keep your face clear of the cards. Fill the frame.
122
+ - Keep each frame fast, well under 50 ms.
123
+ - Give my topic its own demo content; do not reuse the reference's story ("Reacting to a (made-up) headline about laundry-folding robots") unless my content asks for it.
124
+
125
+ SOUND
126
+ - No music by default (your clip leads).
127
+ - Map events to the kit: cards get SND.paper; the highlight gets "marker"; the reaction gets "pop" and a short comic sting; the card swap gets a soft "whoosh".
128
+ - Voiceover mix: the player calls SFX.live with { voiceover: true } once narration is loaded. Mark everything 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: Headline Backdrop
136
+ Family: Edit Overlay
137
+ Look: Commentary layout: you, cut out with a thick white sticker edge and a soft shadow, standing in front of invented article cards that scroll and tilt behind you, with a yellow marker swipe on the line that matters and a black-and-yellow reaction chip.
138
+ How it explains: Article cards slide in and stack behind you, the camera drifts down the top card, and the key line gets a yellow highlighter swipe as you read it. A second card swaps in for the counterpoint, and a reaction chip pops beside your head on the punchline.
139
+
140
+ ```
141
+
142
+ ---
143
+
144
+ ## Reference Source Code Location
145
+ File: `plugins/motion-styles/sources/headline-backdrop.html` (55.5 KB)
@@ -0,0 +1,147 @@
1
+ # Motion graphics style #16: Iso Cutaway
2
+
3
+ - **ID:** `iso-cutaway`
4
+ - **Family:** 3D
5
+ - **Canvas:** `720x1280`
6
+ - **Fonts:** Bricolage Grotesque (600 and 800), JetBrains Mono (700)
7
+ - **Three.js 3D:** Yes
8
+ - **Footage Overlay:** No
9
+
10
+ ## Look
11
+ An isometric cutaway building in Three.js with an orthographic camera: floors like a doll house, warm wall colours, tiny people, and a sky that goes from night blue to morning warm as a clock chip runs.
12
+
13
+ ## How It Explains
14
+ A clock chip ticks through the day while each floor lights up in turn: tiny people move between spots, machines glow, small props appear, and a dark time-stamped label points at the floor that is busy. The takeaway lands once the day is done.
15
+
16
+ ## Demo
17
+ A day inside a bakery
18
+
19
+ ---
20
+
21
+ ## Ready-to-Copy Prompt (Standard)
22
+
23
+ ```markdown
24
+ I want an animated video in the "Iso Cutaway" style (3D) from the Motion Graphics Style Library. Below is a complete, working reference animation in this style: its core helpers (CM), a synthesized sound kit (SFX), the style's scenes, its sound score and the player page. Treat that file as the ground truth for how this style looks, moves and sounds, and rebuild it around my content.
25
+
26
+ MY CONTENT
27
+ [No topic yet. Ask me for my topic or script before building anything.]
28
+
29
+ BUILD DIRECTLY
30
+ Skip the storyboard and build the full animation now. Afterwards, list any facts or numbers you assumed.
31
+
32
+ WHAT TO BUILD
33
+ One self-contained HTML file (an artifact if you can), built on the reference file below:
34
+ - Keep the page, the player (play/pause, scrub, time, sound toggle, loop, Load voiceover) and the CM and SFX blocks unchanged. Also keep the shared library helpers block (track, txt, chip, slam, rise, wordLine, hd, footage, composite, cam, punch, makeGL and the sound helpers) unchanged.
35
+ - Keep the canvas at 720x1280 (9:16, for Shorts, Reels and TikTok).
36
+ - Keep the Three.js r128 script tag and build every 3D object in code: no models or textures from the web.
37
+ - Replace the demo's story: TL, FLOORS (wall colours, props, people and their paths), the clock range, the labels, the headline and takeaway and scoreSound(). Keep and reuse the style's helpers (makeGL(), the orthographic iso camera, the floor slab and two back walls per storey, tiny capsule people that walk between waypoints, the night-to-day sky and light ramp, the clock chip, the dark labels on leader lines, wordLine()).
38
+ - Aim for 15 to 40 seconds unless my content needs more, and set the duration in TL.D.
39
+ - Keep window.seek(t), window.DURATION, window.scoreSound and window.SFX exposed, so the video can be rendered frame by frame.
40
+ - Load the style's fonts before the first draw, as the reference does: Bricolage Grotesque (600 and 800), JetBrains Mono (700).
41
+
42
+ THE STYLE
43
+ - One building, seen in true isometric with an OrthographicCamera, built from boxes: a slab per floor, two back walls per floor in a distinct warm colour, props from boxes, cylinders and spheres, people as tiny capsules with round heads.
44
+ - Time is the story: a clock chip at the top runs through the day, the sky colour and light warm from night blue (#1d2a4a) to morning cream (#fde8d2), and each floor gets its moment.
45
+ - Only the active floor is fully lit; the others sit slightly darker. People walk between waypoints with an ease and a small bob.
46
+ - Labels: dark brown chips (#3b2416) with a mono time and verb, on leader lines from the floor to the right edge.
47
+ - Type: Bricolage Grotesque 800 headline in dark brown with the second line in the accent (#d9542b).
48
+ - Pace: one floor beat every 2.5 to 3 seconds, clock ticks every half hour of story time.
49
+
50
+ RULES THAT KEEP IT IN STYLE
51
+ - Change the story, the words and the props; do not change the medium. Draw every subject accurately for my topic and double-check any facts and numbers you show.
52
+ - Every frame is a pure function of t. Use CM.rng(seed) and CM.noise1(seed) for all randomness, never Math.random. Caching static layers is fine.
53
+ - It will be watched on phones: at 720x1280 keep the headline at 60 px or more, labels at 22 px or more and the clock at 40 px or more. Fill the frame.
54
+ - Keep each frame fast, well under 50 ms.
55
+ - Give my topic its own demo content; do not reuse the reference's story ("A day inside a bakery") unless my content asks for it.
56
+
57
+ SOUND
58
+ - Bed: a cosy, warm pad (padBed) and a steady soft clock tick.
59
+ - Map events to the kit: each floor lighting up gets a soft "whoosh" and a pluck; machines get a low hum; people stepping get soft taps; the shop opening gets a two-note bell (SND.chime); the takeaway gets an open chord.
60
+ - Full mix (no voiceover): keep the cosy pad and the clock ticks, at most about 3 sounds at once.
61
+ - Sync is everything: the sound score reads the same TL times as the picture.
62
+
63
+ IF YOU CAN RUN CODE
64
+ Render an MP4: open the file in headless Chrome, call window.seek(i / 30) for every frame, capture the canvas and pipe the frames into ffmpeg. Render the effects with SFX.render(window.scoreSound, window.DURATION, 48000, { voiceover: false }), which returns interleaved stereo floats, and mux them in. With a voiceover, render the effects with { voiceover: true } and mix them under my audio file.
65
+
66
+ STYLE CARD
67
+ Name: Iso Cutaway
68
+ Family: 3D
69
+ Look: An isometric cutaway building in Three.js with an orthographic camera: floors like a doll house, warm wall colours, tiny people, and a sky that goes from night blue to morning warm as a clock chip runs.
70
+ How it explains: A clock chip ticks through the day while each floor lights up in turn: tiny people move between spots, machines glow, small props appear, and a dark time-stamped label points at the floor that is busy. The takeaway lands once the day is done.
71
+
72
+ ```
73
+
74
+ ---
75
+
76
+ ## Voiceover & Storyboard Prompt
77
+
78
+ ```markdown
79
+ I want an animated video in the "Iso Cutaway" style (3D) from the Motion Graphics Style Library. Below is a complete, working reference animation in this style: its core helpers (CM), a synthesized sound kit (SFX), the style's scenes, its sound score and the player page. Treat that file as the ground truth for how this style looks, moves and sounds, and rebuild it around my content.
80
+
81
+ MY CONTENT
82
+ [No topic yet. Ask me for my topic or script before building anything.]
83
+
84
+ VOICEOVER TIMING
85
+ [No timing pasted yet. Before building, ask me for a word-level SRT or word timestamps of my voiceover. If I only have the audio file, offer to transcribe it into word timings.]
86
+
87
+ How to use the timing:
88
+ - Turn it into a list of words with start and end times in seconds. If the timing is per line only, spread each line's words across its span in proportion to their length.
89
+ - Set the duration to the last word's end plus about 1.2 seconds.
90
+ - Build the timeline (TL) from these times. The clock jumps to each time as it is said, the floor it names lights up on the same word, and its label lands on the time.
91
+ - Cut between scenes only at idea boundaries (a new step, a new claim, a reveal), never mid-word, and finish each cut just before the next idea's first spoken word.
92
+ - Put the emphasis moves on stressed words. A counter lands at the exact moment its number is spoken.
93
+ - Keep the player's "Load voiceover" button working so I can drop in my audio and hear it in sync.
94
+
95
+ STORYBOARD FIRST
96
+ Before building, show me a storyboard and wait for my OK:
97
+ - One HTML page (an artifact if you can) with a grid of 6 to 10 panels, one per beat. Draw each panel on a canvas with the reference's own helpers, scene drawing and finishing pass, so the stills already look like the finished piece. No animation or sound yet.
98
+ - Under each panel: the beat number, its start and end time, the exact on-screen words, the camera move or emphasis, how it gets there from the previous beat (the same scene continuing, or a cut and which kind), and its key sounds.
99
+ - Below the grid, list any facts or numbers you had to assume.
100
+ When I approve it (or after my changes), build the full animation and reuse the storyboard's drawing code.
101
+
102
+ WHAT TO BUILD
103
+ One self-contained HTML file (an artifact if you can), built on the reference file below:
104
+ - Keep the page, the player (play/pause, scrub, time, sound toggle, loop, Load voiceover) and the CM and SFX blocks unchanged. Also keep the shared library helpers block (track, txt, chip, slam, rise, wordLine, hd, footage, composite, cam, punch, makeGL and the sound helpers) unchanged.
105
+ - Keep the canvas at 720x1280 (9:16, for Shorts, Reels and TikTok).
106
+ - Keep the Three.js r128 script tag and build every 3D object in code: no models or textures from the web.
107
+ - Replace the demo's story: TL, FLOORS (wall colours, props, people and their paths), the clock range, the labels, the headline and takeaway and scoreSound(). Keep and reuse the style's helpers (makeGL(), the orthographic iso camera, the floor slab and two back walls per storey, tiny capsule people that walk between waypoints, the night-to-day sky and light ramp, the clock chip, the dark labels on leader lines, wordLine()).
108
+ - Aim for 15 to 40 seconds unless my content needs more, and set the duration in TL.D.
109
+ - Keep window.seek(t), window.DURATION, window.scoreSound and window.SFX exposed, so the video can be rendered frame by frame.
110
+ - Load the style's fonts before the first draw, as the reference does: Bricolage Grotesque (600 and 800), JetBrains Mono (700).
111
+
112
+ THE STYLE
113
+ - One building, seen in true isometric with an OrthographicCamera, built from boxes: a slab per floor, two back walls per floor in a distinct warm colour, props from boxes, cylinders and spheres, people as tiny capsules with round heads.
114
+ - Time is the story: a clock chip at the top runs through the day, the sky colour and light warm from night blue (#1d2a4a) to morning cream (#fde8d2), and each floor gets its moment.
115
+ - Only the active floor is fully lit; the others sit slightly darker. People walk between waypoints with an ease and a small bob.
116
+ - Labels: dark brown chips (#3b2416) with a mono time and verb, on leader lines from the floor to the right edge.
117
+ - Type: Bricolage Grotesque 800 headline in dark brown with the second line in the accent (#d9542b).
118
+ - Pace: one floor beat every 2.5 to 3 seconds, clock ticks every half hour of story time.
119
+
120
+ RULES THAT KEEP IT IN STYLE
121
+ - Change the story, the words and the props; do not change the medium. Draw every subject accurately for my topic and double-check any facts and numbers you show.
122
+ - Every frame is a pure function of t. Use CM.rng(seed) and CM.noise1(seed) for all randomness, never Math.random. Caching static layers is fine.
123
+ - It will be watched on phones: at 720x1280 keep the headline at 60 px or more, labels at 22 px or more and the clock at 40 px or more. Fill the frame.
124
+ - Keep each frame fast, well under 50 ms.
125
+ - Give my topic its own demo content; do not reuse the reference's story ("A day inside a bakery") unless my content asks for it.
126
+
127
+ SOUND
128
+ - Bed: a cosy, warm pad (padBed) and a steady soft clock tick.
129
+ - Map events to the kit: each floor lighting up gets a soft "whoosh" and a pluck; machines get a low hum; people stepping get soft taps; the shop opening gets a two-note bell (SND.chime); the takeaway gets an open chord.
130
+ - Voiceover mix: the player calls SFX.live with { voiceover: true } once narration is loaded. Keep the clock ticks soft: true and very low.
131
+ - Sync is everything: the sound score reads the same TL times as the picture.
132
+
133
+ IF YOU CAN RUN CODE
134
+ Render an MP4: open the file in headless Chrome, call window.seek(i / 30) for every frame, capture the canvas and pipe the frames into ffmpeg. Render the effects with SFX.render(window.scoreSound, window.DURATION, 48000, { voiceover: false }), which returns interleaved stereo floats, and mux them in. With a voiceover, render the effects with { voiceover: true } and mix them under my audio file.
135
+
136
+ STYLE CARD
137
+ Name: Iso Cutaway
138
+ Family: 3D
139
+ Look: An isometric cutaway building in Three.js with an orthographic camera: floors like a doll house, warm wall colours, tiny people, and a sky that goes from night blue to morning warm as a clock chip runs.
140
+ How it explains: A clock chip ticks through the day while each floor lights up in turn: tiny people move between spots, machines glow, small props appear, and a dark time-stamped label points at the floor that is busy. The takeaway lands once the day is done.
141
+
142
+ ```
143
+
144
+ ---
145
+
146
+ ## Reference Source Code Location
147
+ File: `plugins/motion-styles/sources/iso-cutaway.html` (60.0 KB)
@@ -0,0 +1,145 @@
1
+ # Motion graphics style #29: Isotype
2
+
3
+ - **ID:** `isotype`
4
+ - **Family:** Data
5
+ - **Canvas:** `720x1280`
6
+ - **Fonts:** Archivo Black, Inter (500 and 800), JetBrains Mono (700)
7
+ - **Three.js 3D:** No
8
+ - **Footage Overlay:** No
9
+
10
+ ## Look
11
+ Pictogram statistics in the Isotype tradition: a grid of small grey people icons that pop in row by row, then the share that matters turns coral one by one and regroups into its own block, under one huge number.
12
+
13
+ ## How It Explains
14
+ The crowd fills in first so you feel the size, then the stat colours in person by person, the big ratio slams in, and the coloured people walk into their own block so the split is obvious. A plain source line stays at the bottom.
15
+
16
+ ## Demo
17
+ 1 in 3 US adults sleep less than 7 hours
18
+
19
+ ---
20
+
21
+ ## Ready-to-Copy Prompt (Standard)
22
+
23
+ ```markdown
24
+ I want an animated video in the "Isotype" style (Data) from the Motion Graphics Style Library. Below is a complete, working reference animation in this style: its core helpers (CM), a synthesized sound kit (SFX), the style's scenes, its sound score and the player page. Treat that file as the ground truth for how this style looks, moves and sounds, and rebuild it around my content.
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 stat (RATIO, the headline text and the big number), the icon shape in personIcon() if the subject is not people, the source line, the takeaway and scoreSound(). Keep and reuse the style's helpers (the 9 by 9 icon grid, the row-by-row pop in, the one-by-one colour fill, the regroup into a solid block (sorted target slots), the big number, the source line and the restrained palette).
37
+ - Aim for 15 to 40 seconds unless my content needs more, and set the duration in TL.D.
38
+ - Keep window.seek(t), window.DURATION, window.scoreSound and window.SFX exposed, so the video can be rendered frame by frame.
39
+ - Load the style's fonts before the first draw, as the reference does: Archivo Black, Inter (500 and 800), JetBrains Mono (700).
40
+
41
+ THE STYLE
42
+ - One icon equals a fixed number of people (say so if it is not 1). Use a real, sourced ratio and keep the count of coloured icons exact for it.
43
+ - Icons are simple and identical: a round head and a rounded body, grey (#c3ced8) by default, coral (#ff5a3c) for the share that matters. No other colours.
44
+ - Background: cool pale grey-blue (#edf2f6); text in deep navy (#13212e).
45
+ - Order: fill the crowd row by row, colour the share one by one, then move the coloured icons into a solid block at the start of the grid (sorted target slots) so the split reads at a glance.
46
+ - Type: Archivo Black for the big number, Inter 800 for the statement (second line in coral), JetBrains Mono for the source line at the bottom.
47
+ - Pace: crowd in about 1.5 seconds, colour fill about 2 seconds, regroup about 1.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 the big number at 120 px or more, the statement at 30 px or more and the source at 20 px or more. Fill the frame.
53
+ - Keep each frame fast, well under 50 ms.
54
+ - Give my topic its own demo content; do not reuse the reference's story ("1 in 3 US adults sleep less than 7 hours") unless my content asks for it.
55
+
56
+ SOUND
57
+ - Bed: a calm, light pad (padBed).
58
+ - Map events to the kit: each row gets a soft "tick"; each coloured icon gets a short pluck that climbs; the big number gets "slam"; the regroup gets a soft "whoosh"; the takeaway gets an open chord.
59
+ - Full mix (no voiceover): a calm pad, a soft tick per row, a rising pluck per coloured icon, and a low hit on the big number.
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: Isotype
67
+ Family: Data
68
+ Look: Pictogram statistics in the Isotype tradition: a grid of small grey people icons that pop in row by row, then the share that matters turns coral one by one and regroups into its own block, under one huge number.
69
+ How it explains: The crowd fills in first so you feel the size, then the stat colours in person by person, the big ratio slams in, and the coloured people walk into their own block so the split is obvious. A plain source line stays at the bottom.
70
+
71
+ ```
72
+
73
+ ---
74
+
75
+ ## Voiceover & Storyboard Prompt
76
+
77
+ ```markdown
78
+ I want an animated video in the "Isotype" style (Data) from the Motion Graphics Style Library. Below is a complete, working reference animation in this style: its core helpers (CM), a synthesized sound kit (SFX), the style's scenes, its sound score and the player page. Treat that file as the ground truth for how this style looks, moves and sounds, and rebuild it around my content.
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 crowd fills while the group is described, the colour fill runs while the share is said, the big number slams on the number, and the regroup happens on the comparison.
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 stat (RATIO, the headline text and the big number), the icon shape in personIcon() if the subject is not people, the source line, the takeaway and scoreSound(). Keep and reuse the style's helpers (the 9 by 9 icon grid, the row-by-row pop in, the one-by-one colour fill, the regroup into a solid block (sorted target slots), the big number, the source line and the restrained palette).
106
+ - Aim for 15 to 40 seconds unless my content needs more, and set the duration in TL.D.
107
+ - Keep window.seek(t), window.DURATION, window.scoreSound and window.SFX exposed, so the video can be rendered frame by frame.
108
+ - Load the style's fonts before the first draw, as the reference does: Archivo Black, Inter (500 and 800), JetBrains Mono (700).
109
+
110
+ THE STYLE
111
+ - One icon equals a fixed number of people (say so if it is not 1). Use a real, sourced ratio and keep the count of coloured icons exact for it.
112
+ - Icons are simple and identical: a round head and a rounded body, grey (#c3ced8) by default, coral (#ff5a3c) for the share that matters. No other colours.
113
+ - Background: cool pale grey-blue (#edf2f6); text in deep navy (#13212e).
114
+ - Order: fill the crowd row by row, colour the share one by one, then move the coloured icons into a solid block at the start of the grid (sorted target slots) so the split reads at a glance.
115
+ - Type: Archivo Black for the big number, Inter 800 for the statement (second line in coral), JetBrains Mono for the source line at the bottom.
116
+ - Pace: crowd in about 1.5 seconds, colour fill about 2 seconds, regroup about 1.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 the big number at 120 px or more, the statement at 30 px or more and the source at 20 px or more. Fill the frame.
122
+ - Keep each frame fast, well under 50 ms.
123
+ - Give my topic its own demo content; do not reuse the reference's story ("1 in 3 US adults sleep less than 7 hours") unless my content asks for it.
124
+
125
+ SOUND
126
+ - Bed: a calm, light pad (padBed).
127
+ - Map events to the kit: each row gets a soft "tick"; each coloured icon gets a short pluck that climbs; the big number gets "slam"; the regroup gets a soft "whoosh"; the takeaway gets an open chord.
128
+ - Voiceover mix: the player calls SFX.live with { voiceover: true } once narration is loaded. Mark ticks and 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: Isotype
136
+ Family: Data
137
+ Look: Pictogram statistics in the Isotype tradition: a grid of small grey people icons that pop in row by row, then the share that matters turns coral one by one and regroups into its own block, under one huge number.
138
+ How it explains: The crowd fills in first so you feel the size, then the stat colours in person by person, the big ratio slams in, and the coloured people walk into their own block so the split is obvious. A plain source line stays at the bottom.
139
+
140
+ ```
141
+
142
+ ---
143
+
144
+ ## Reference Source Code Location
145
+ File: `plugins/motion-styles/sources/isotype.html` (55.8 KB)
@@ -0,0 +1,145 @@
1
+ # Motion graphics style #49: Karaoke Subs
2
+
3
+ - **ID:** `karaoke-subs`
4
+ - **Family:** Edit Overlay
5
+ - **Canvas:** `720x1280`
6
+ - **Fonts:** Inter (800)
7
+ - **Three.js 3D:** No
8
+ - **Footage Overlay:** Yes
9
+
10
+ ## Look
11
+ Clean, readable subtitles for any talking video: a rounded dark glass box in the lower third holding two lines, where the word being spoken sits on a bright green pill, spoken words stay white and upcoming words wait at half opacity.
12
+
13
+ ## How It Explains
14
+ The subtitle box shows one phrase (up to two lines) at a time; the green pill glides from word to word exactly as each is spoken, and the box swaps to the next phrase with a soft fade and lift. Nothing else moves, so it suits any edit.
15
+
16
+ ## Demo
17
+ A morning-routine talking clip
18
+
19
+ ---
20
+
21
+ ## Ready-to-Copy Prompt (Standard)
22
+
23
+ ```markdown
24
+ I want an animated video in the "Karaoke Subs" style (Edit Overlay) from the Motion Graphics Style Library. Below is a complete, working reference animation in this style: its core helpers (CM), a synthesized sound kit (SFX), the style's scenes, its sound score and the player page. Treat that file as the ground truth for how this style looks, moves and sounds, and rebuild it around my content.
25
+
26
+ MY CONTENT
27
+ [No topic yet. Ask me for my topic or script before building anything.]
28
+
29
+ BUILD DIRECTLY
30
+ Skip the storyboard and build the full animation now. Afterwards, list any facts or numbers you assumed.
31
+
32
+ WHAT TO BUILD
33
+ One self-contained HTML file (an artifact if you can), built on the reference file below:
34
+ - Keep the page, the player (play/pause, scrub, time, sound toggle, loop, Load voiceover, Load footage) and the CM and SFX blocks unchanged. Also keep the shared library helpers block (track, txt, chip, slam, rise, wordLine, hd, footage, composite, cam, punch, makeGL and the sound helpers) unchanged.
35
+ - Keep the canvas at 720x1280 (9:16, for Shorts, Reels and TikTok).
36
+ - Keep window.loadFootage(url) and the Load footage button working so I can drop in my own clip and see the overlay on it; until then the stand-in presenter shows where I sit in the frame.
37
+ - Replace the demo's story: PHRASES (each phrase as words with start times, from your word-level SRT) and the pill colour; load your clip with Load footage. Keep and reuse the style's helpers (footage(), the rounded glass box with blur-look fill, two-line layout with automatic wrapping, the gliding highlight pill (it slides between word boxes), spoken/upcoming opacities and the phrase swap).
38
+ - Aim for 15 to 40 seconds unless my content needs more, and set the duration in TL.D.
39
+ - Keep window.seek(t), window.DURATION, window.scoreSound and window.SFX exposed, so the video can be rendered frame by frame.
40
+ - Load the style's fonts before the first draw, as the reference does: Inter (800).
41
+
42
+ THE STYLE
43
+ - Built for your footage and your word timings: paste a word-level SRT and every word gets its own start time.
44
+ - The box: dark glass (#0e1014 at 74%), 22 px corners, centred in the lower third, sized to its text with 28 px padding.
45
+ - Words: Inter 800 at 40 px or more. Spoken words white, upcoming words white at 45%, the current word dark (#0b1a10) on a green pill (#3ddc84) that slides and resizes between words with a quick ease.
46
+ - One phrase at a time, at most two lines of about 22 characters; phrases swap with a 0.2 s fade and a 10 px lift.
47
+ - Accessibility first: high contrast, no effects that hurt readability, exact timing.
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 subtitle words at 40 px or more, never more than two lines, and keep the box above the bottom 15% (phone UI). Fill the frame.
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 morning-routine talking clip") unless my content asks for it.
55
+
56
+ SOUND
57
+ - No music: the clip's own audio leads.
58
+ - Optional: a barely audible "tick" at the start of each phrase; nothing on individual words.
59
+ - Full mix (no voiceover): none needed; the clip's own audio is the soundtrack. A very faint tick per phrase is optional.
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: Karaoke Subs
67
+ Family: Edit Overlay
68
+ Look: Clean, readable subtitles for any talking video: a rounded dark glass box in the lower third holding two lines, where the word being spoken sits on a bright green pill, spoken words stay white and upcoming words wait at half opacity.
69
+ How it explains: The subtitle box shows one phrase (up to two lines) at a time; the green pill glides from word to word exactly as each is spoken, and the box swaps to the next phrase with a soft fade and lift. Nothing else moves, so it suits any edit.
70
+
71
+ ```
72
+
73
+ ---
74
+
75
+ ## Voiceover & Storyboard Prompt
76
+
77
+ ```markdown
78
+ I want an animated video in the "Karaoke Subs" style (Edit Overlay) from the Motion Graphics Style Library. Below is a complete, working reference animation in this style: its core helpers (CM), a synthesized sound kit (SFX), the style's scenes, its sound score and the player page. Treat that file as the ground truth for how this style looks, moves and sounds, and rebuild it around my content.
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 pill reaches each word at its start time from the SRT, within 0.03 s; a new phrase appears 0.1 s before its first word.
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, Load footage) and the CM and SFX blocks unchanged. Also keep the shared library helpers block (track, txt, chip, slam, rise, wordLine, hd, footage, composite, cam, punch, makeGL and the sound helpers) unchanged.
104
+ - Keep the canvas at 720x1280 (9:16, for Shorts, Reels and TikTok).
105
+ - Keep window.loadFootage(url) and the Load footage button working so I can drop in my own clip and see the overlay on it; until then the stand-in presenter shows where I sit in the frame.
106
+ - Replace the demo's story: PHRASES (each phrase as words with start times, from your word-level SRT) and the pill colour; load your clip with Load footage. Keep and reuse the style's helpers (footage(), the rounded glass box with blur-look fill, two-line layout with automatic wrapping, the gliding highlight pill (it slides between word boxes), spoken/upcoming opacities and the phrase swap).
107
+ - Aim for 15 to 40 seconds unless my content needs more, and set the duration in TL.D.
108
+ - Keep window.seek(t), window.DURATION, window.scoreSound and window.SFX exposed, so the video can be rendered frame by frame.
109
+ - Load the style's fonts before the first draw, as the reference does: Inter (800).
110
+
111
+ THE STYLE
112
+ - Built for your footage and your word timings: paste a word-level SRT and every word gets its own start time.
113
+ - The box: dark glass (#0e1014 at 74%), 22 px corners, centred in the lower third, sized to its text with 28 px padding.
114
+ - Words: Inter 800 at 40 px or more. Spoken words white, upcoming words white at 45%, the current word dark (#0b1a10) on a green pill (#3ddc84) that slides and resizes between words with a quick ease.
115
+ - One phrase at a time, at most two lines of about 22 characters; phrases swap with a 0.2 s fade and a 10 px lift.
116
+ - Accessibility first: high contrast, no effects that hurt readability, exact timing.
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 subtitle words at 40 px or more, never more than two lines, and keep the box above the bottom 15% (phone UI). Fill the frame.
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 morning-routine talking clip") unless my content asks for it.
124
+
125
+ SOUND
126
+ - No music: the clip's own audio leads.
127
+ - Optional: a barely audible "tick" at the start of each phrase; nothing on individual words.
128
+ - Voiceover mix: the player calls SFX.live with { voiceover: true } once narration is loaded. Keep everything silent or near-silent.
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: Karaoke Subs
136
+ Family: Edit Overlay
137
+ Look: Clean, readable subtitles for any talking video: a rounded dark glass box in the lower third holding two lines, where the word being spoken sits on a bright green pill, spoken words stay white and upcoming words wait at half opacity.
138
+ How it explains: The subtitle box shows one phrase (up to two lines) at a time; the green pill glides from word to word exactly as each is spoken, and the box swaps to the next phrase with a soft fade and lift. Nothing else moves, so it suits any edit.
139
+
140
+ ```
141
+
142
+ ---
143
+
144
+ ## Reference Source Code Location
145
+ File: `plugins/motion-styles/sources/karaoke-subs.html` (54.0 KB)