动态图形工作室
视频由代码渲染而成:一个带有纯 seek(t) 的 HTML 页面通过 Playwright 逐帧截图,并经由 ffmpeg 编码输出。文本、UI、图表、图示和动态效果始终由代码控制。 AI 模型负责提供插图、实拍画面和配音(见 references/ai-assets.md)。
阶段门控(切勿跳过;在每个 ✋ 处获得批准)
- 创意简报:目标、受众、平台/格式、时长、语言及方言、行动号召(CTA)、品牌、是否需要配音(VO)、事实依据。选择流派(见
references/genres.md);它将确定结构、能量预设和开场钩子。 - 概念 ✋:三个真正不同的创意,每个附带一句话描述及其钩子。用户选择其中一个。
- 脚本 + 故事板 ✋:场景节拍表(每个场景一个信息点,钩子 ≤ 1.5 秒)、风格圣经以及核心资产(GenerateImage →
cut2.py)。以风格帧形式构建场景,然后运行node scripts/storyboard.mjs film.html storyboard/name --template templates/storyboard.html --title "…"生成由影片本身制作的 html/png/pdf/json 文件(见references/storyboard.md)。在故事板获得批准之前,不得以完整动画形式制作任何内容。 - 动态分镜 ✋:
node scripts/render.mjs film.html checks_layout.txt --check必须报告 0 个布局问题、0 个遗漏提示和 0 个页面错误。然后制作一个 30 fps 无模糊草稿(render_chunks.mjs film.html out_draft 30 1),并混入音效,用于时间节奏审核。 - 最终版:
render_chunks.mjs film.html out 60 4→sfx.mjs→mix.sh→export.sh→qa.sh应用于主片 以及 社交版本。然后检查联系表与转场表(见references/render-qa.md)。之后仅允许范围修订:只修改被要求改动的地方。
硬性规则(每一条都来自真实失败的教训)
- 颗粒是静态的:一次种子的平铺绘制,绝不在每一帧重新随机化。闪烁扫描的 FLICKER 测试必须通过。
- 默认无音乐:动作同步的音效 + 配音。仅在有要求且获得许可的情况下使用音乐(见
references/sound.md)。 - 单一运动系统:时长仅来自
ENERGY令牌。弹簧 z ≥ 0.78(过冲 ≤ 2%),无抖动,无弹跳,长距离移动使用弧线,每次状态变化时应用交叉淡变(见references/motion-system.md)。 - 使用分块渲染器(
render_chunks.mjs):每个分块使用全新的浏览器,支持重试,并通过重新运行相同命令来恢复。对于时长超过约 20 秒的影片,绝不要使用单一长进程渲染。 - 正确转写:
align.py(large-v3 模型,启用/禁用 VAD 的多次通过、间隙通过,强制对齐脚本) →words.json。绝不要使用单次 whisper 通。 - 字幕属于其所在场景:字幕随场景一起清除和推入,并使用该场景的颜色。一个元素在其对应单词被说出时,应有 80% 处于画面上(±2 帧)。
- 风格:插画风格,角色保持一致(一张参考图片 → 每个姿势)。技术解说类使用概念性视觉元素(流程图、图表、对比、时间线),按每一句口语规划,而非装饰性素材。
- 两种导出格式:60 fps 主片 + 一张 30 fps 手机/社交版本文件。以附件形式发送。仅在获得用户明确同意后才能提供直接下载链接、上传或发布。
- 长片(3–10 分钟):规划章节、场景数量(约每 4–7 秒一个场景)、节奏变化周期和视觉多样性,每个章节一页(见
references/genres.md→ 长片)。 - 保持包结构分离:scripts/、references/、templates/。不要膨胀成一个巨型文件。
此外:阿拉伯语仅按整个词进行动画(见 references/arabic-rtl.md)· 画面中不得出现 AI 生成的文字 · 虚构产品、价格和评级应标注 SAMPLE · 事实仅来源于用户 · 核心内容占据画面的 60–70% · 广告中至少使用 3 种不同的转场,且不得连续两次相同(见 references/transitions.md)· 不得有超过 1 秒的静音。
默认设置(说明你的选择)
社交平台 9:16 1080×1920,网页/YouTube 16:9 · 广告和短视频能量预设为 ad,配音解说类为 explainer,奢侈品/长章节为 calm · 60 fps 主片 + 30 fps 社交版本 · −14 LUFS,真峰值 ≤ −1.5 dBTP · 音效 + 配音,无音乐 · 静态颗粒 0.06 · 插画扁平风格,一种强调色,Noto Kufi Arabic / Cairo + Figtree。
配置
所有 scripts/、templates/ 和 references/ 路径均相对于本技能所在的文件夹(即存放此 SKILL.md 的文件夹,无论安装在任何位置:.claude/skills/motion-graphics、.agents/skills/motion-graphics、~/.cursor/skills/motion-graphics 等)。将其视为 $SKILL_DIR,并从项目文件夹中运行脚本,例如 node "$SKILL_DIR/scripts/render.mjs" …。在 $SKILL_DIR 内运行 npm i。
npm i(Playwright),然后运行 npx playwright install chromium 一次。你还需要 ffmpeg/ffprobe、Python 3(包含 numpy/scipy/pillow,用于 QA 和 cut2),以及 pip install faster-whisper 以支持 align.py。
工作示例(位于 GitHub 仓库 mr0ibrahim/motion 的 examples/ 目录下,安装时不复制):demo-ar/(一个 13 秒的海湾阿拉伯语应用广告:RTL 动态文字、AI 角色、视差、摄像机推近、缩放/推近/划像/分割转场)· demo/(一个 10.5 秒的英语 SAMPLE 广告)。