Communitygithub.com

mr0ibrahim/motion-graphics

制作专业动态图形视频,涵盖广告、解说、教程、产品演示、短视频、标志动画、数据故事及长达10分钟的长片,支持阿拉伯语和英语,从创意简报、故事板到AI素材、代码动画、音效和QA,最终交付MP4文件。

motion-graphics 是什么?

这是一个基于代码驱动的高端动态图形工作室技能,专为AI编码代理(如Claude Code、Cursor、Codex)设计,旨在从零创建专业级视频。该技能通过HTML + CSS/JavaScript代码定义每一帧动画,利用Playwright逐帧截图并用ffmpeg编码输出MP4,确保文本、UI、图表、图示和动态效果完全由代码精确控制。AI模型用于辅助生成插图、实拍画面和语音(VO)。 工作流程严格遵循五个阶段门控:创意简报→三个概念(选一)→脚本与故事板(含风格圣经和核心资产)→动态分镜(布局与时间审查)→最终渲染(60fps主片与30fps社交版本)。每个阶段必须获得用户批准后方可进入下一步,杜绝返工风险。 技能内置了从实际项目中总结的硬性规则,包括:静态颗粒噪声(避免闪烁)、默认无音乐(仅音效+VO)、单一运动系统(使用能量令牌控制时长,限制弹簧过冲)、分块渲染(避免长片崩溃)、正确语音转写(多通道对齐)、字幕与场景绑定、两种导出格式、长片章节规划等。支持阿拉伯语(按整个词动画)、RTL布局以及严格的文本规范。 配置要求包括Node.js(Playwright)、ffmpeg/ffprobe、Python 3(numpy/scipy/pillow)和faster-whisper。所有脚本、模板和参考文件均位于技能目录内,通过$SKILL_DIR变量引用。仓库中提供阿拉伯语和英语的完整演示示例。

兼容平台✓Claude Code~Codex CLI✓Cursor
npx skills add https://github.com/mr0ibrahim/motion/tree/HEAD/skills/motion-graphics

在你喜欢的 AI 中提问

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

文档

动态图形工作室

视频由代码渲染而成:一个带有纯 seek(t) 的 HTML 页面通过 Playwright 逐帧截图,并经由 ffmpeg 编码输出。文本、UI、图表、图示和动态效果始终由代码控制。 AI 模型负责提供插图、实拍画面和配音(见 references/ai-assets.md)。

阶段门控(切勿跳过;在每个 ✋ 处获得批准)

  1. 创意简报:目标、受众、平台/格式、时长、语言及方言、行动号召(CTA)、品牌、是否需要配音(VO)、事实依据。选择流派(见 references/genres.md);它将确定结构、能量预设和开场钩子。
  2. 概念 ✋:三个真正不同的创意,每个附带一句话描述及其钩子。用户选择其中一个。
  3. 脚本 + 故事板 ✋:场景节拍表(每个场景一个信息点,钩子 ≤ 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)。在故事板获得批准之前,不得以完整动画形式制作任何内容。
  4. 动态分镜 ✋:node scripts/render.mjs film.html checks_layout.txt --check 必须报告 0 个布局问题、0 个遗漏提示和 0 个页面错误。然后制作一个 30 fps 无模糊草稿(render_chunks.mjs film.html out_draft 30 1),并混入音效,用于时间节奏审核。
  5. 最终版:render_chunks.mjs film.html out 60 4 → sfx.mjs → mix.sh → export.sh → qa.sh 应用于主片 以及 社交版本。然后检查联系表与转场表(见 references/render-qa.md)。之后仅允许范围修订:只修改被要求改动的地方。

硬性规则(每一条都来自真实失败的教训)

  1. 颗粒是静态的:一次种子的平铺绘制,绝不在每一帧重新随机化。闪烁扫描的 FLICKER 测试必须通过。
  2. 默认无音乐:动作同步的音效 + 配音。仅在有要求且获得许可的情况下使用音乐(见 references/sound.md)。
  3. 单一运动系统:时长仅来自 ENERGY 令牌。弹簧 z ≥ 0.78(过冲 ≤ 2%),无抖动,无弹跳,长距离移动使用弧线,每次状态变化时应用交叉淡变(见 references/motion-system.md)。
  4. 使用分块渲染器(render_chunks.mjs):每个分块使用全新的浏览器,支持重试,并通过重新运行相同命令来恢复。对于时长超过约 20 秒的影片,绝不要使用单一长进程渲染。
  5. 正确转写:align.py(large-v3 模型,启用/禁用 VAD 的多次通过、间隙通过,强制对齐脚本) → words.json。绝不要使用单次 whisper 通。
  6. 字幕属于其所在场景:字幕随场景一起清除和推入,并使用该场景的颜色。一个元素在其对应单词被说出时,应有 80% 处于画面上(±2 帧)。
  7. 风格:插画风格,角色保持一致(一张参考图片 → 每个姿势)。技术解说类使用概念性视觉元素(流程图、图表、对比、时间线),按每一句口语规划,而非装饰性素材。
  8. 两种导出格式:60 fps 主片 + 一张 30 fps 手机/社交版本文件。以附件形式发送。仅在获得用户明确同意后才能提供直接下载链接、上传或发布。
  9. 长片(3–10 分钟):规划章节、场景数量(约每 4–7 秒一个场景)、节奏变化周期和视觉多样性,每个章节一页(见 references/genres.md → 长片)。
  10. 保持包结构分离: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 广告)。

相关技能