Individual skill
bb-video
Code-made videos (mp4, 16:9 / 9:16 / 1:1): narrated explainers and beat-synced promos for sites / apps. The user picks only the style: whiteboard, risograph, ink-wash, launch motion, origami, pop art, op art, Matisse cut-outs, ASCII art, shadow puppets, Bauhaus, pixel art, chat log, toy 3D, newsreel, film-room breakdown, suspense mystery, isometric miniatures, movie trailer, news clippings, manga, animated map, Swiss kinetic type, dark motivational short, blueprint, paper collage, flat grain illustration, storybook mascot, Bayeux tapestry, 3D stick-figure parable, pencil-test animation, pen-drawn picture washed with colour. For explainers, history, news, promos from a URL. Use when asked for an "explainer video", "a promo for this site / app", or in Chinese "做个科普视频" "白板动画" "讲个历史故事" "给这个网站 / App 做个宣传片" "产品发布视频", or names a style (孔版印刷, 水墨, 折纸, 波普, 欧普, 剪纸, 字符画, 皮影戏, 包豪斯, 像素, 聊天记录, 玩具三维, 老新闻片, 录像分析, 悬疑探秘, 等距微缩世界, 电影预告片, 剪报解说, 日漫, 地图动画, 瑞士风动态排版, 暗调励志动画, 蓝图工程图, 纸艺拼贴, 扁平颗粒插画, 手绘绘本吉祥物, 贝叶挂毯, 3D火柴人寓言, 铅笔手绘, 线稿成世界).
skills/bb-video/SKILL.md
Source commit 8bea3082c21f44766ee98a35d420cfee785c1a01
What was checked
- Matches the observed repository HEAD
- Yes
- Scanner rules are current
- Yes
- Repository scan complete
- No
- Skill scan complete
- No
- Observed behavior
- Network or broad shell
- Last checked
- Nov 4, 2026
These are observations at the recorded commit, not a guarantee of safety. Review the source before running it.
Install this skill
Choose an agent in your Stack or copy a command below. Commands fetch the pinned commit and copy only this skill directory. Existing destinations are refused. Copying a command does not install anything.
An install command is unavailable: current rules, complete repository and skill scans, an eligible behavior level and a permitted license are required.
Repository context
- Repository stars (not skill ratings)
- 148
- Repository last updated
- Nov 6, 2026
- License
- MIT
Observed agent integration: No specific integration evidence. Standard SKILL.md installation does not imply verified compatibility.
- agent-skills Repository topic
- claude-code Repository topic
- claude-skills Repository topic
- explainer-video Repository topic
- ffmpeg Repository topic
- headless-chrome Repository topic
- motion-graphics Repository topic
- video-generation Repository topic
- testing Derived category
- research Derived category
Files and excerpt
File metadata and permitted, redacted excerpts come from the recorded scan. Source links are pinned to that commit.
Browse files
SKILL.mdcore · 29,985 bytesSKILL.mdcore · 29,985 bytesSKILL.mdcore · 29,985 bytesSKILL.mdcore · 29,985 bytesSKILL.mdcore · 29,985 bytesSKILL.mdcore · 29,985 bytesSKILL.mdcore · 29,985 bytescore/runtime/core.jsruns · 23,425 bytescore/scripts/bgm.mjsruns · 20,602 bytescore/scripts/lang.mjsruns · 2,181 bytescore/scripts/music.mjsruns · 74,353 bytescore/scripts/net.mjsruns · 877 bytescore/scripts/render.mjsruns · 115,701 bytescore/scripts/scores/ambient.mjsruns · 1,314 bytescore/scripts/scores/cinematic.mjsruns · 1,315 bytescore/scripts/scores/lofi.mjsruns · 1,049 bytescore/scripts/scores/minimal.mjsruns · 1,253 bytescore/scripts/scores/pop.mjsruns · 1,299 bytescore/scripts/sound.mjsruns · 28,530 bytesexplainer/.gitignoreasset · 29 bytesexplainer/GUIDE.mddoc · 22,010 bytesexplainer/references/characters.mddoc · 11,782 bytesexplainer/references/modes.mddoc · 15,406 bytesexplainer/references/review.mddoc · 5,294 bytesexplainer/runtime/character.jsruns · 41,758 bytesexplainer/runtime/fonts-ink.cssasset · 452,194 bytesexplainer/runtime/fonts-riso.cssasset · 517,652 bytesexplainer/runtime/fonts.cssasset · 125,826 bytesexplainer/runtime/ink.cssasset · 811 bytesexplainer/runtime/ink.jsruns · 148,666 bytesexplainer/runtime/katex/LICENSEasset · 1,163 bytesexplainer/runtime/katex/fonts/KaTeX_AMS-Regular.woff2asset · 28,076 bytesexplainer/runtime/katex/fonts/KaTeX_Caligraphic-Bold.woff2asset · 6,912 bytesexplainer/runtime/katex/fonts/KaTeX_Caligraphic-Regular.woff2asset · 6,908 bytesexplainer/runtime/katex/fonts/KaTeX_Fraktur-Bold.woff2asset · 11,348 bytesexplainer/runtime/katex/fonts/KaTeX_Fraktur-Regular.woff2asset · 11,316 bytesexplainer/runtime/katex/fonts/KaTeX_Main-Bold.woff2asset · 25,324 bytesexplainer/runtime/katex/fonts/KaTeX_Main-BoldItalic.woff2asset · 16,780 bytesexplainer/runtime/katex/fonts/KaTeX_Main-Italic.woff2asset · 16,988 bytesexplainer/runtime/katex/fonts/KaTeX_Main-Regular.woff2asset · 26,272 bytesexplainer/runtime/katex/fonts/KaTeX_Math-BoldItalic.woff2asset · 16,400 bytesexplainer/runtime/katex/fonts/KaTeX_Math-Italic.woff2asset · 16,440 bytesexplainer/runtime/katex/fonts/KaTeX_SansSerif-Bold.woff2asset · 12,216 bytesexplainer/runtime/katex/fonts/KaTeX_SansSerif-Italic.woff2asset · 12,028 bytesexplainer/runtime/katex/fonts/KaTeX_SansSerif-Regular.woff2asset · 10,344 bytesexplainer/runtime/katex/fonts/KaTeX_Script-Regular.woff2asset · 9,644 bytesexplainer/runtime/katex/fonts/KaTeX_Size1-Regular.woff2asset · 5,468 bytesexplainer/runtime/katex/fonts/KaTeX_Size2-Regular.woff2asset · 5,208 bytesexplainer/runtime/katex/fonts/KaTeX_Size3-Regular.woff2asset · 3,624 bytesexplainer/runtime/katex/fonts/KaTeX_Size4-Regular.woff2asset · 4,928 bytesexplainer/runtime/katex/fonts/KaTeX_Typewriter-Regular.woff2asset · 13,568 bytesexplainer/runtime/katex/katex.min.cssasset · 24,788 bytesexplainer/runtime/katex/katex.min.jsruns · 272,755 bytesexplainer/runtime/media.jsruns · 12,007 bytesexplainer/runtime/riso.cssasset · 811 bytesexplainer/runtime/riso.jsruns · 76,530 bytesexplainer/runtime/whiteboard.cssasset · 2,485 bytesexplainer/runtime/whiteboard.jsruns · 101,228 bytesexplainer/scripts/assets.mjsruns · 11,640 bytesexplainer/scripts/bgm.mjsruns · 165 bytesexplainer/scripts/cast.mjsruns · 6,403 bytesexplainer/scripts/make-fonts-ink.mjsruns · 2,611 bytesexplainer/scripts/make-fonts-riso.mjsruns · 2,901 bytesexplainer/scripts/new.mjsruns · 9,181 bytesexplainer/scripts/render.mjsruns · 338 bytesexplainer/scripts/tts.pyruns · 8,819 bytesexplainer/templates/ink/index.htmlasset · 1,329 bytesexplainer/templates/riso/index.htmlasset · 953 bytesexplainer/templates/storyboard.mddoc · 1,240 bytesexplainer/templates/whiteboard/index.htmlasset · 1,322 bytespromo/.gitignoreasset · 29 bytespromo/GUIDE.mddoc · 36,359 bytespromo/references/kit.mddoc · 52,769 bytespromo/references/motion.mddoc · 16,516 bytespromo/references/music.mddoc · 15,209 bytespromo/references/review.mddoc · 12,543 bytespromo/references/sound.mddoc · 8,028 bytespromo/references/structure.mddoc · 7,448 bytespromo/runtime/ascii.jsruns · 30,083 bytespromo/runtime/bauhaus.jsruns · 35,234 bytespromo/runtime/blueprint.jsruns · 103,078 bytespromo/runtime/chat.jsruns · 67,683 bytespromo/runtime/collage.jsruns · 114,720 bytespromo/runtime/cutout.jsruns · 50,063 bytespromo/runtime/dossier.jsruns · 87,232 bytespromo/runtime/drawnworld.jsruns · 149,705 bytespromo/runtime/filmroom.jsruns · 59,572 bytespromo/runtime/formats.jsruns · 64,073 bytespromo/runtime/grain.jsruns · 80,188 bytespromo/runtime/isometric.jsruns · 88,667 bytespromo/runtime/kit.jsruns · 275,181 bytespromo/runtime/lumen.jsruns · 105,823 bytespromo/runtime/manga.jsruns · 115,043 bytespromo/runtime/map.jsruns · 106,477 bytespromo/runtime/mystery.jsruns · 176,086 bytespromo/runtime/newsreel.jsruns · 31,973 bytespromo/runtime/op.jsruns · 20,317 bytespromo/runtime/origami.jsruns · 55,895 bytespromo/runtime/parable.jsruns · 80,989 bytespromo/runtime/pencil.jsruns · 161,832 bytespromo/runtime/pixel.jsruns · 66,555 bytespromo/runtime/pop.jsruns · 44,030 bytespromo/runtime/promo.jsruns · 137,119 bytespromo/runtime/shadow.jsruns · 88,046 bytespromo/runtime/storybook.jsruns · 104,822 bytespromo/runtime/swiss.jsruns · 61,921 bytespromo/runtime/tapestry.jsruns · 102,076 bytespromo/runtime/toy3d.jsruns · 51,263 bytespromo/runtime/trailer.jsruns · 73,305 bytespromo/scripts/capture.mjsruns · 21,723 bytespromo/scripts/footage.mjsruns · 12,344 bytespromo/scripts/geodata.mjsruns · 33,039 bytespromo/scripts/music.mjsruns · 169 bytespromo/scripts/new.mjsruns · 13,454 bytespromo/scripts/render.mjsruns · 347 bytespromo/scripts/sound.mjsruns · 169 bytespromo/scripts/toy3d-model.mjsruns · 7,353 bytespromo/templates/formats/explain.htmlasset · 1,215 bytespromo/templates/formats/kinetic.htmlasset · 1,180 bytespromo/templates/project/brief-explain.mddoc · 1,293 bytespromo/templates/project/brief.mddoc · 1,383 bytespromo/templates/project/index.htmlasset · 1,745 bytespromo/templates/project/score.jsruns · 1,819 bytespromo/templates/project/shots.jsonasset · 272 bytespromo/templates/project/sound.jsruns · 1,069 bytesstyles/CHARACTERS.mddoc · 9,078 bytesstyles/TEMPLATE.mddoc · 2,052 bytesstyles/TEMPLATE.zh.mddoc · 2,215 bytesstyles/ascii/STYLE.mddoc · 10,663 bytesstyles/ascii/index.htmlasset · 2,148 bytesstyles/ascii/score.jsruns · 1,722 bytesstyles/ascii/sound.jsruns · 2,494 bytesstyles/bauhaus/STYLE.mddoc · 12,681 bytesstyles/bauhaus/index.htmlasset · 2,554 bytesstyles/bauhaus/score.jsruns · 1,728 bytesstyles/bauhaus/sound.jsruns · 2,488 bytesstyles/blueprint/STYLE.mddoc · 22,855 bytesstyles/blueprint/explain.htmlasset · 4,600 bytesstyles/blueprint/explain.jsonasset · 108 bytesstyles/blueprint/index.htmlasset · 4,978 bytesstyles/blueprint/score.jsruns · 2,187 bytesstyles/blueprint/sound.jsruns · 4,139 bytesstyles/chat/STYLE.mddoc · 16,156 bytesstyles/chat/index.htmlasset · 2,246 bytesstyles/chat/score.jsruns · 1,673 bytesstyles/chat/sound.jsruns · 2,381 bytesstyles/collage/STYLE.mddoc · 16,089 bytesstyles/collage/explain.htmlasset · 4,572 bytesstyles/collage/explain.jsonasset · 110 bytesstyles/collage/index.htmlasset · 4,321 bytesstyles/collage/score.jsruns · 2,287 bytesstyles/collage/sound.jsruns · 4,018 bytesstyles/cutout/STYLE.mddoc · 16,285 bytesstyles/cutout/index.htmlasset · 2,829 bytesstyles/cutout/score.jsruns · 1,787 bytesstyles/cutout/sound.jsruns · 3,407 bytesstyles/dossier/STYLE.mddoc · 14,763 bytesstyles/dossier/explain.htmlasset · 5,093 bytesstyles/dossier/explain.jsonasset · 107 bytesstyles/dossier/index.htmlasset · 6,636 bytesstyles/dossier/score.jsruns · 2,079 bytesstyles/dossier/sound.jsruns · 2,037 bytesstyles/drawnworld/STYLE.mddoc · 14,968 bytesstyles/drawnworld/explain.htmlasset · 2,929 bytesstyles/drawnworld/explain.jsonasset · 108 bytesstyles/drawnworld/index.htmlasset · 2,489 bytesstyles/drawnworld/score.jsruns · 2,034 bytesstyles/drawnworld/sound.jsruns · 1,603 bytesstyles/filmroom/STYLE.mddoc · 19,229 bytesstyles/filmroom/explain.htmlasset · 3,664 bytesstyles/filmroom/explain.jsonasset · 91 bytesstyles/filmroom/index.htmlasset · 3,287 bytesstyles/filmroom/score.jsruns · 1,689 bytesstyles/filmroom/sound.jsruns · 1,625 bytesstyles/grain/STYLE.mddoc · 16,846 bytesstyles/grain/explain.htmlasset · 3,117 bytesstyles/grain/explain.jsonasset · 108 bytesstyles/grain/index.htmlasset · 4,229 bytesstyles/grain/score.jsruns · 2,376 bytesstyles/grain/sound.jsruns · 2,914 bytesstyles/ink/STYLE.mddoc · 24,064 bytesstyles/ink/index.htmlasset · 1,935 bytesstyles/ink/score.jsruns · 1,387 bytesstyles/ink/sound.jsruns · 1,540 bytesstyles/isometric/STYLE.mddoc · 15,672 bytesstyles/isometric/explain.htmlasset · 4,819 bytesstyles/isometric/explain.jsonasset · 91 bytesstyles/isometric/index.htmlasset · 4,235 bytesstyles/isometric/score.jsruns · 1,809 bytesstyles/isometric/sound.jsruns · 2,395 bytesstyles/launch/STYLE.mddoc · 11,351 bytesstyles/lumen/STYLE.mddoc · 19,103 bytesstyles/lumen/explain.htmlasset · 3,250 bytesstyles/lumen/explain.jsonasset · 151 bytesstyles/lumen/index.htmlasset · 4,096 bytesstyles/lumen/score.jsruns · 2,812 bytesstyles/lumen/sound.jsruns · 3,405 bytesstyles/manga/STYLE.mddoc · 17,166 bytesstyles/manga/explain.htmlasset · 4,154 bytesstyles/manga/explain.jsonasset · 108 bytesstyles/manga/index.htmlasset · 3,993 bytesstyles/manga/score.jsruns · 3,073 bytesstyles/manga/sound.jsruns · 3,229 bytesstyles/map/STYLE.mddoc · 17,987 bytesstyles/map/explain.htmlasset · 5,291 bytesstyles/map/explain.jsonasset · 91 bytesstyles/map/index.htmlasset · 4,664 bytesstyles/map/score.jsruns · 1,757 bytesstyles/map/sound.jsruns · 2,140 bytesstyles/mystery/STYLE.mddoc · 18,423 bytesstyles/mystery/explain.htmlasset · 4,920 bytesstyles/mystery/explain.jsonasset · 159 bytesstyles/mystery/index.htmlasset · 4,547 bytesstyles/mystery/score.jsruns · 3,049 bytesstyles/mystery/sound.jsruns · 10,064 bytesstyles/newsreel/STYLE.mddoc · 14,552 bytesstyles/newsreel/explain.htmlasset · 3,731 bytesstyles/newsreel/explain.jsonasset · 115 bytesstyles/newsreel/index.htmlasset · 5,008 bytesstyles/newsreel/score.jsruns · 2,239 bytesstyles/newsreel/sound.jsruns · 2,367 bytesstyles/op/STYLE.mddoc · 12,214 bytesstyles/op/index.htmlasset · 1,813 bytesstyles/op/score.jsruns · 1,844 bytesstyles/op/sound.jsruns · 1,976 bytesstyles/origami/STYLE.mddoc · 19,456 bytesstyles/origami/index.htmlasset · 2,649 bytesstyles/origami/sound.jsruns · 2,921 bytesstyles/parable/STYLE.mddoc · 16,823 bytesstyles/parable/explain.htmlasset · 2,857 bytesstyles/parable/explain.jsonasset · 108 bytesstyles/parable/index.htmlasset · 3,828 bytesstyles/parable/score.jsruns · 1,970 bytesstyles/parable/sound.jsruns · 2,342 bytesstyles/pencil/STYLE.mddoc · 19,145 bytesstyles/pencil/explain.htmlasset · 2,930 bytesstyles/pencil/explain.jsonasset · 108 bytesstyles/pencil/index.htmlasset · 3,324 bytesstyles/pencil/score.jsruns · 2,244 bytesstyles/pencil/sound.jsruns · 2,878 bytesstyles/pixel/STYLE.mddoc · 14,887 bytesstyles/pixel/index.htmlasset · 2,349 bytesstyles/pixel/score.jsruns · 1,883 bytesstyles/pixel/sound.jsruns · 2,835 bytesstyles/pop/STYLE.mddoc · 14,910 bytesstyles/pop/index.htmlasset · 2,376 bytesstyles/pop/score.jsruns · 1,688 bytesstyles/pop/sound.jsruns · 2,039 bytesstyles/riso/STYLE.mddoc · 28,353 bytesstyles/riso/index.htmlasset · 1,939 bytesstyles/riso/score.jsruns · 1,584 bytesstyles/riso/sound.jsruns · 1,608 bytesstyles/shadow/STYLE.mddoc · 18,215 bytesstyles/shadow/explain.htmlasset · 4,619 bytesstyles/shadow/explain.jsonasset · 65 bytesstyles/shadow/index.htmlasset · 1,752 bytesstyles/shadow/score.jsruns · 1,699 bytesstyles/shadow/sound.jsruns · 2,345 bytesstyles/storybook/STYLE.mddoc · 19,836 bytesstyles/storybook/explain.htmlasset · 3,647 bytesstyles/storybook/explain.jsonasset · 108 bytesstyles/storybook/index.htmlasset · 3,800 bytesstyles/storybook/score.jsruns · 2,458 bytesstyles/storybook/sound.jsruns · 4,820 bytesstyles/swiss/STYLE.mddoc · 17,428 bytesstyles/swiss/explain.htmlasset · 4,867 bytesstyles/swiss/explain.jsonasset · 108 bytesstyles/swiss/index.htmlasset · 3,505 bytesstyles/swiss/score.jsruns · 2,253 bytesstyles/swiss/sound.jsruns · 3,748 bytesstyles/tapestry/STYLE.mddoc · 18,738 bytesstyles/tapestry/explain.htmlasset · 3,347 bytesstyles/tapestry/explain.jsonasset · 108 bytesstyles/tapestry/index.htmlasset · 2,870 bytesstyles/tapestry/score.jsruns · 3,438 bytesstyles/tapestry/sound.jsruns · 2,562 bytesstyles/toy3d/STYLE.mddoc · 18,812 bytesstyles/toy3d/blender/toy.pyruns · 5,945 bytesstyles/toy3d/explain.htmlasset · 4,858 bytesstyles/toy3d/index.htmlasset · 4,157 bytesstyles/toy3d/score.jsruns · 1,390 bytesstyles/toy3d/sound.jsruns · 1,859 bytesstyles/toy3d/toys.jsruns · 1,116 bytesstyles/trailer/STYLE.mddoc · 13,237 bytesstyles/trailer/explain.htmlasset · 4,049 bytesstyles/trailer/explain.jsonasset · 151 bytesstyles/trailer/index.htmlasset · 4,842 bytesstyles/trailer/score.jsruns · 4,917 bytesstyles/trailer/sound.jsruns · 4,653 bytesstyles/whiteboard/STYLE.mddoc · 32,621 bytesstyles/whiteboard/index.htmlasset · 1,973 bytesstyles/whiteboard/score.jsruns · 1,468 bytesstyles/whiteboard/sound.jsruns · 1,647 bytes
Read excerpt
# BB Video
Videos drawn in code: HTML + CSS / SVG / canvas frames, rendered frame by frame in Chrome, sound synthesized in code, assembled with ffmpeg. Every frame is the pure function `renderFrame(t)`, so any frame can be rendered on its own and every render is identical.
Relative paths in this file are relative to this skill's folder.
## One choice: the style
The style is the **only** thing the user picks. It decides how the video looks, moves and sounds — never what it says. If the user names a style, use it; otherwise recommend one from the topic or product and say why in the storyboard. When the user says "try another style", redo the same content in the new style.
| Style | Look | Best for | Explainer | Promo |
|---|---|---|---|---|
| `whiteboard` hand-drawn whiteboard | Drawing on an infinite whiteboard while explaining, camera moves, cartoon characters | Problem walkthroughs, derivations, phenomena, stories that need characters | ✓ | ✓ |
| `riso` risograph | Magazine pages with spot-color overprint, halftone, misregistration; page turns by drum roll | Everyday trivia, psychology, news, finance, data, food, vocabulary | ✓ | ✓ |