Communitygithub.com

Bang Motion

渲染 Bang Motion 风格的短片:高端电影级动态图形,包含多层发光地平线背景、浮动彩色网格斑点、生动胶片颗粒、毛玻璃 UI 卡片、编辑式动态排版、呼吸式摄像机以及反 PPT 节奏。

Bang Motion 是什么?

Bang Motion 是一个用于 AI 编码代理(如 Claude Code、Cursor、Codex)的特殊技能,旨在创作动态图形网页,使其感觉像高质量视频而非 PowerPoint 演示文稿。它定义了一套严格的设计规则和视觉语言,以对抗常见陷阱,例如类似幻灯片的过渡、静态背景和信息过载的片段。该技能强制使用“单一连续世界”的方法,其中背景始终在移动,摄像机呼吸,并且每个片段仅传递一个关键信息。它支持多个渲染引擎(Remotion、fframes、kyfram),并提供全面的参考文档和脚本工具。输出是单个自包含的 HTML 文件,不需要 Node.js 或 Python 即可查看,从而确保运行时独立性。工作流程包括通过风格简报生成概念、从特定启动器模板搭建项目,以及通过机械检查来验证输出是否符合“非 PPT”标准。

兼容平台~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/boytegar/motion-skills/tree/main/style/bang-motion

在你喜欢的 AI 中提问

打开一个已预加载此 Agent Skill 的新对话。

文档

Bang Motion — 非 PPT 的动态图形网页


属于动态解说库。 下方正文是独立 Bang Motion 导演手册,适用于单个自包含的 index.html(HTML + CSS + GSAP)。在此库中,相同外观也会作为三个引擎发布,并接入正常管线,因此短片可以像选择任何其他风格一样选用它:

  • style.json:清单(bang-motion,画布 1080x1920,30 fps,引擎 remotion、fframes 和 kyfram)
  • remotion/:kit/(GlowHorizon、GrainyMeshBlob、GlassCard、KineticTitle、StatusPill、BangBanner、GlassCaptions、LivingGrain)、template/、sync_kit.sh、CATALOG.md、AGENT_BRIEF.md
  • fframes/:Cargo.toml、src/(lib、tokens、kit、look、video、main)、tools/ff.sh
  • kyfram/PRELUDE.lgv:调色板令牌以及 .lgv 场景的节拍家具(drawBackdrop、drawBanner、drawCaptions、drawPanel、drawDot、drawFrame)
  • docs/style-guide.md 和 docs/style-prompt.md:压缩样式表和便携提示

使用 ./core/new_episode.sh <series-dir> 01-slug Episode out-name --style bang-motion --engine remotion(或 --engine fframes|kyfram)搭建一集。管线技能将风格名称作为 $MOTION_STYLE 接收,因此工作流中的其他内容无需更改。

风格 DNA,一言以蔽之:一个连续的世界,至少两层的背景(深层基底加上发光地平线)始终移动,相对于 t 偏移的颗粒而非随机噪声,呼吸式摄像机而非静态画框,有动机的过渡而非单一重复的擦拭,以及每个镜头一个陈述而非一张幻灯片的全部信息。

v1.19.0 · 由 Bang Tutorial 提供 · MIT。 变更历史见 CHANGELOG.md;安装方法见 README.md。

此技能适用于任何 AI 编码代理(开放代理技能格式)。 内容是动态图形(像视频一样移动,而非演示文稿)的法则和配方 — 在编写代码前务必遵守。

先决条件 — 仅需浏览器

交付物(index.html)仅需要现代浏览器 + 联网以加载 CDN(GSAP、字体)。Python 和 Node 可选,仅用于工作工具:scripts/serve.py(无缓存服务器,仅在需要使用本地模块时需要)、puppeteer(快照/自动验证,scripts/export-frames.mjs → MP4)。如果用户两者都没有:(1) 仍然构建单文件,双击打开;(2) 通过 ?debug=1(面板拖动)和关键秒数的手动截图进行视觉验证;(3) 通过屏幕录制(OBS / 浏览器标签页录制)获取 MP4 — 说明屏幕录制可能掉帧,而逐帧渲染需要 Node。切勿生成需要 npm install 才能观看的交付物。

ffmpeg 也是可选的。 先检查(ffmpeg -version);如果没有:

需求有 ffmpeg无 ffmpeg
同步 VO(句子/段落边界)silencedetectscripts/vo-pauses.html — 在浏览器中打开,选择音频,复制 SEG/PARA;结果完全相同(Web Audio,无需安装)
音频时长/格式ffprobe来自 vo-pauses.html 的 DUR 数值;浏览器直接播放 wav/mp3/m4a/ogg
导出 MP4从 export-frames.mjs 合并 PNG无 MP4 — 提供一键安装命令(winget install Gyan.FFmpeg / brew install ffmpeg)或屏幕录制
学习参考视频(提取帧)fps= + tile=要求用户在关键秒数发送截图,或在浏览器中打开视频并在特定秒数截图

没有 ffmpeg,解说流程仍然完整直到 VO 同步;仅 MP4 需要安装。

播放器 — 无,自动播放,循环

默认交付物:屏幕上没有任何面板或播放器,打开即自动播放,并在完成后从头循环(onComplete → play(0);如果有声音,音频也会一起循环)。隐藏控制:R 重新播放,空格暂停。拖动面板/时间码仅在 ?debug=1 时出现(审查工具),?clean=1 阻止自动播放以用于导出。有声音?尝试 play() 直接播放;如果被浏览器阻止,停在帧 0 并在首次点击时开始 — 无“点击开始”文本。这已内置于两个启动器中。

结构禁令 — 可机械检查的 PPT 测试

其他模型(以及你,如果疲倦)即使阅读了以下法则,也会陷入这些模式。在提交前,检查代码,而非感觉:

  1. grep -c "class=\"scene\"\|\<section" index.html — 如果 ≥ 3 个场景使用 <section> 并通过 autoAlpha/opacity 开关显示/隐藏 → 那就是幻灯片。场景变化应源于世界/摄像机的移动(摄像机移动、甩至另一角、推入、背景变换),而非通过淡入淡出切换 section。合法例外:舞台动画(references/kartun-panggung.md)使用剪/滑动 96 像素在舞台间切换 — 允许,因为每个舞台充满生命(≥10 个动作物体),而非淡入淡出的静止图像。

  2. 存在持续视觉主线:一个主题(连续动作)或一个由摄像机探索的拼贴/纸张/白色世界(动画、照片、目录、草图)。全出血照片交替出现,无共同世界 → PPT。每场景一张图片 + 一句话,场景切换 → 即使摄像机移动仍是幻灯片:每场景 3–5 个元素,按短语逐步进入(explainer.md“每场景=3–5个元素”)。

  3. 每场景计算文本层级:eyebrow/kicker + 标题 + 正文/图注 = 3 级 → PPT。最多两级:一个数字/大句子 + 一个世界标签。文档/印章/日期块包含 ≤ 3 行短文本计为对象,而非文本层级。

  4. Ken Burns(照片缩放 1.0→1.05)作为唯⼀运动 → PPT。每秒运动必须来自背景运动语言,从 techniques.md §7c 的风格简报菜单中选择(纹理背景中呼吸的摄像机、渐变移动、漂浮斑点、生动颗粒、每段光扫、大形状缓慢旋转、粒子上升、呼吸网格、幻影文本偏移、Ken Burns + 视差…)。向侧面移动的条/线/片(“车道”、“范围”、“条纹”、“水平粒子雨”)已在连续两个项目中使用不同名称 — 那不是默认;仅在主题确实是速度/流动时,且不能连续两个项目使用。

  5. 所有剪切中仅使用淡入淡出 + 缩放凸起 + 光漏的过渡 → PPT 模板。甩向另一角、切换到工具(地图/速度计/个人资料)、推入。

  6. Explainer 从其风格的启动器开始:starter-explainer-kartun、-jurnalisme、-katalog、-sketsa(拼贴模式:摄像机探索静态资产)、starter-explainer(连续动作:世界流动)、或 starter-explainer-panggung(舞台动画:每场景一个舞台,关节绑定,摄像机仅在舞台内)。拼贴模式有⼀套绑定;舞台模式有另⼀种。不是从 assets/starter-opener.html(文本开场)开始,也不是从零开始。

  7. 缩略图就是幻灯片。 摄像机缩放 < 1.08 导致房屋拇指大小,空地面占半屏 → PPT,即使所有元素在移动。世界被分割为画框大小的舞台,而非一个被探索的大地图(kartun-panggung.md 法则 1)。

  8. 模板框架(开场/推广)。 检查运行表和代码:第一个场景是放大的文本然后向左退出;三个特性磁贴/卡片平行;输入框/搜索栏被输入;钩子 → 特性 → 特性 → 承诺 → 标志 → CTA 的顺序。两次或以上无概念要求 → 模板,即使外观新颖。从 references/opener-konsep.md 重新选择框架。

仅一条不通过 → 重做,然后才能展示给用户。

涵盖的工作类型

此技能适用于通用动态图形网页。Explainer 只是其中一种 — 它有独立的文档,因为结构不同,而非因为是主要的。

启动器按类别命名:starter-opener.html 用于开场、推广、开场片头、片头、动态排版;starter-explainer-*.html 用于解说,带模式/风格后缀(-kartun、-jurnalisme、-katalog、-sketsa = 拼贴;无后缀 = 连续动作;-panggung = 舞台动画)。舞台动画是解说模式(风格 6),而非独立类别:其目标仍是通过 VO 解释,只是制作方式不同。

类型常见时长特征配方
开场 / 产品推广25–40 秒一个来自菜单的概念(框架源自产品,非固定顺序),一个特殊时刻,品牌收尾references/opener-konsep.md + 下方工作流 + references/techniques.md
开场片头 / 标志 / 标志短篇3–8 秒标志构建,一个标志性动作,观众意识到前结束techniques.md(标志构建,光漏)
频道片头 / 片尾5–12 秒频道名称 + 每集相同的标志性动作下方工作流
动态排版 / 歌词15–60 秒文本是主体;按词/字母分割;节奏跟随音频techniques.md(分割 + 方向模糊,每词 3D 平移)
标题 / 下方三分之一 / 段落开场片头2–6 秒覆盖在素材上的小元素,干净进出,透明背景techniques.md
Explainer / 解释视频30–90 秒事实有来源,实体出现,视角改变,五种风格references/explainer.md + 按风格的启动器

Explainer 与角色:确定镜头前请阅读

对于带角色的扁平教育动画解说(第六种风格,舞台动画),或感觉像幻灯片/缩略图的修订,请阅读 references/kartun-panggung.md:每场景一个舞台,缩放 1.08–1.95,舞台内连续,舞台之间剪/滑动 96 像素,手动转换的关节绑定,无说明文字,明亮扁平调色板。区分句子、视觉节拍、构图和舞台切换。要直接在 After Effects 中构建,请阅读 references/ae-bridge-higgsfield.md。这些专门的解说指南澄清了下方的开场规则;字体、场景数量和效果示例并非通用配方。

法则 #1 — 这是视频,不是幻灯片

最常见的疾病:模型像幻灯片一样排列场景 — 标题 + 副标题 + 正文 + 徽章行。这立即被识别为“PPT”并被拒绝。

硬规则:

  • 对于开场:每场景一个短句 + 最多一个主要对象。 没有 kicker(“01 — 特性”)、副标题、说明段落、特性芯片/徽章或技术元数据(软件包名称、长 URL)。正在使用的产品 UI 部分的芯片、按钮和标签除外。
  • 新信息 = 新的视觉反应。 在解说中,如果仍相关,在同一个世界中改变状态/动作;句子更改不一定需要更换镜头。
  • 要点列表用视觉替代,而非自动三个磁贴。 从 references/opener-konsep.md 的特性菜单中选择方式(演示一个特性、单词更改、对象转换、卡片洗牌、网格磁贴…);连续两个开场不使用相同方式。
  • 场景必须活跃。 对象携带动作时摄像机可以停留。移动摄像机以跟随或揭示某物;不要依赖在静态背景上淡入/滑动文本,或在所有片段中重复平移/缩放。
  • “放大缩小” = 景别大小,非摄像机呼吸。 如果视频感觉静态或用户要求缩放,摄像机靠近正在讲述的元素(中近景 / 特写),然后根据内容节拍后退到广角;百分之几的呼吸几乎不可见(techniques.md §3b)。

在设计场景之前阅读 references/anti-ppt.md — 包含实际违规及其修复的列表。

法则 #2 — 确定性或死亡

没有一行代码读取系统时间。所有视觉元素都是 tl.time()(GSAP 时间线时间)的纯函数:光谱、运行数字、粒子、摄像机抖动(高频正弦,非 Math.random())、对象“流动”位置(缓冲距离,非逐帧速度累积)。结果:像 After Effects 时间线一样精确的拖动,且逐帧渲染到 MP4 每次产生相同图像。

法则 #3 — 风格来自主题,而非启动器,也非参考

常见失败:其他产品的开场与前一个产品的开场完全相同的外观 — 深色、蓝色强调、发光、星云、相同字体 — 因为模型从启动器提取样式。动画可能很好,但仍然失败:开场是产品的面孔,两个产品不能有相同面孔。

  1. 先写风格简报,后写代码。 在接触启动器之前,编写这六行,并向用户展示以及场景运行表:
    • 主题/产品 + 描述期望留下的感受的三个形容词;
    • 概念与结构指纹(开场/推广):从 references/opener-konsep.md 提供三个候选概念,选择⼀个并给出产品理由,然后 概念 · 场景数量 · 每场景主要对象 · 开场 · 收尾;
    • 调色板:一个主要颜色来自品牌/主题(标志、应用图标、网站、包装),一个背景颜色,一个强调色 — 为每种颜色提供十六进制值和来源;非品牌颜色标记为“派生: 理由”;
    • 具有与感受相符字符的展示字体(非 Poppins/Inter/Roboto/Montserrat/Arial)+ 辅助字体;例外:概念声明 → 方式 → 结果使用产品自己的 UI 字体(references/opener-konsep.md);
    • 文本强调:无单词高亮,或一种高亮形式(提及)— 单词强调可选,非每个开场的默认项;
    • 每段的背景语言:从“风格方向”表中为所有片段选择一种方向,或计划变化(哪些段变化、变化成什么、为什么、触发什么);
    • 动作签名:一种重复作为身份的动作类型(对象擦拭、每词 3D 滚动、飞纸、绘图线条、色块撞击边缘…);
    • 背景运动:从 techniques.md §7c 菜单中选择一种语言 — 与动作签名不同,也非自动的“物体划过”;

…

Individual skills in this repo

This repo contains 6 individual skills — each has its own dedicated page.

isometric

Render a reel in the Isometric style: calm precise product line art in 2:1 dimetric isometric on a white or dark ground, drawn only with constant 2px hairlines, white-filled faces so nearer objects hide farther lines, rounded slabs with visible thickness, stacked layers, repeated-part grids, and one tiny dark accent per frame. Use when the user says isometric, product line art, technical illustration, exploded hardware view, or asks for a clean documentation-grade diagram look.

motion-build

Build and render a papercut episode from a storyboard with the library. Scaffolds the project, builds scenes with parallel agents, assets and audio, renders the mp4, then harvests reusables. Use for "build the reel", "scaffold an episode", "rebuild scene 4", "render it".

motion-explainer

Make a papercut reel, video or explainer end to end. Short vertical (9:16) cut-paper explainers from a link (repo, product page, announcement), idea to mp4. Also routes partial asks to the stage skills and hands out the style prompt for other tools.

motion-script

Turn a link into a papercut reel script. Researches a sourced facts list, writes the 75-95 word script on the 10-beat spine, a banner fact track, a staging table with one set per banner, and the humour pass. Use for "write the script", "research this repo for a reel".

motion-storyboard

Storyboard a papercut script before any code. Writes the Camera / Cut table, one block per scene with frame-level events on each stressed word, the SFX plan and the proof beat. Use for "storyboard this script" or "plan the camera moves and cuts".

papercut

Render a reel in the Papercut style: layered construction paper brought to life with paper grain, torn edges, stacked shade strips, drop shadows, rigid cut-out animation, a slow camera push, taped headline banners and word-by-word torn-tag captions. Use when the user says cut paper, papercraft, paper cutout, paper collage, construction paper, or asks for the default handcrafted explainer look.

相关技能