Communitygithub.com

stedra-animatic

用于创建带旁白和音乐的动画演示视频、短片或产品展示。根据用户的第一条提示,在 Chrome 中实时生成完整的动态分镜(画面、字幕、草稿配音、临时配乐、音效),然后逐层升级直到最终成品。

stedra-animatic 是什么?

**stedra-animatic** 是一个 AI 辅助动画制作技能,专为需要快速生成并迭代带旁白和音乐的动画影片(如演讲开场、产品演示、入职视频、培训片)而设计。它遵循“第一版快速,后期精修”的实际工作流:用户只需给出第一句提示,系统便会在大约 15 分钟内自动搭建一版完整的动态分镜——包括画面、字幕、草稿配音(Kokoro TTS)、临时配乐和音效——并在 Chrome 中通过 Motion Canvas 实时预览。此后,用户作为导演,逐层指示修改:脚本、真人配音、正式配乐和最终润色。该技能的核心是 `events.json` 提示表,由强制对齐生成,所有图层(画面、音乐、音效)都以此为唯一时间源,确保语音替换后一切自动重新对齐,无需手动调整偏移。它主要面向 Motion Canvas + Node.js 技术栈,支持 macOS、Linux 和 Windows,并内置了环境检查、缓存和小批量提交等工程最佳实践。

兼容平台✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/stedra-demoscene/claude-animator/tree/HEAD/plugins/stedra-animatic/skills/stedra-animatic

在你喜欢的 AI 中提问

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

文档

stedra-animatic 是做什么的?

你与用户共同构建一部有旁白、配乐和画面的动画影片。用户负责导演,你来负责搭建。 该工作流源自一个真实项目:一部 11 分钟的影片,约 109 次提交,三天内完成,每一个节拍都由真人导演。它不是“一次性提示,然后喝咖啡”。第一版现在很快了。但打磨完成并非如此。

第 0 阶段:设定预期(始终,第一回复)

用不超过 10 行的篇幅告诉用户:

  • 第一条提示约 15 分钟就能给你一个完整的动态分镜:每一层都以草稿品质呈现(画面、字幕、草稿配音、临时配乐、音效),并在 Chrome 中实时播放。
  • 打磨完成需要数天的定向迭代,而不是一个下午。一段 3-5 分钟的影片意味着脚本、配音重录、音乐注释和润色的数十轮修改。动态分镜只是起跑线。
  • 用户只做人类才能做的事:决策(故事、审美、什么是真实的)、录制自己的声音(你自己的声音效果最好,草稿配音只是临时替代品)、以及观看和聆听并提出意见。你无法实时听到或看到。你通过电平、频谱、音起和采样帧来工作,这些对于确定时间很好,但对于审美判断不可靠。
  • 快速成果模式:一个动画场景或图表,大约 30 分钟,无需音频。参见 references/workflow.md。

根据提示判断你假设采用哪种模式(一个场景或图表意味着快速成果;带旁白的影片意味着动态分镜)。然后开始执行。用户如果发现错误会纠正你。

预览规则(硬性规定)

预览意味着在 Chrome 中实时观看。绝不生成编码文件。 预览的方法是:

  1. 在后台启动 Motion Canvas 编辑器(在 film/ 目录下执行 npm start),或者保持其运行状态,
  2. 将 URL(通常是 http://localhost:9000)提供给用户,并在可能的情况下在 Chrome 中打开它,
  3. 将混合好的音频轨道加载到编辑器中,使画面和声音同步播放,
  4. 依赖文件变更时的热重载。不要为了编辑而重启编辑器。

仅限以下两种情况编码输出: (a) 用户要求的审查样片,以及 (b) 最终成品。永远不要为了“检查”某个东西而渲染 mp4,也不要要求用户打开一个渲染文件来审查工作。如果编辑器没有运行,就启动它。如果你更改了音频,请告诉用户重新加载页面(音频只加载一次)。

第 0b 阶段:引导(仅工具,每个阶段按需执行)

查找项目根目录下的 animator.config.json。如果存在,读取它,重新运行检查,然后继续。 否则:

  1. 运行环境检查:scripts/check_env.sh(macOS, Linux)或 scripts/check_env.ps1(Windows,powershell -NoProfile -ExecutionPolicy Bypass -File <path>,也可以从 Git Bash 执行)。一个工具只有能运行才算数,而不是因为它存在于 PATH 上(在 Windows 上 python 通常是一个商店存根)。内存、核心数和磁盘空间来自报告。不要询问用户。
  2. 展示一个一屏计划,包含各项大小,并等待确认。引导阶段只涉及工具。不涉及创意问题。
  3. 按照 references/setup.md 进行安装(brew / apt / winget,通过项目本地虚拟环境中的 uv 安装 Python)。此时请查找最新的 URL 和许可证。永远不要将模型或样本复制到仓库中。
  4. 进行冒烟测试,写入 animator.config.json(工具路径、目录),然后提交。

动态分镜需要什么(优先安装这些):Node、Motion Canvas、ffmpeg、uv 以及 Python(numpy、scipy、soundfile)、Kokoro(草稿配音)、一个强制对齐器。推迟到后续阶段再安装:FluidSynth、样本库、Chatterbox、最终配乐所需的一切。小量下载没问题。大文件等到用户进入需要它们的阶段再下载。

架构(不要偏离它)

script.md -> voice (scratch, then real) -> forced alignment -> events.json -> Motion Canvas scenes (picture)
                                                    |
                                                    +--> temp score + SFX (synth), later MIDI + samples -> mix.wav
                                                                  mix.wav is loaded in the editor and in the final mux
  • events.json 是唯一的时间来源。 画面、音乐和音效都读取它。没有手动测量的偏移量。
  • 一个场景是时间的一个纯函数。 相同输入,相同帧。没有 Date.now(),没有未设置种子的随机数。
  • 一个全局时钟。 整部影片在时间轴上以秒为单位。整个配乐也基于此。
  • 锚定故事,而不是时钟。 音乐乐句和节拍附加到命名的事件上,从不附加到小节编号或绝对秒数。
  • 更换配音会重新计时所有内容。 用真实录音替换草稿配音,重新生成 events.json,画面和音乐将随之自动移动,无需任何手动编辑。这是此管线的验收测试。

阶段

详情见 references/workflow.md。动态分镜阶段是对每一层进行一次快速遍历。升级阶段是缓慢的部分,一次一层,每一层都有用户的把关和一次提交。

#阶段输出时间
A动态分镜:简要说明 + 假设、脚本、草稿旁白(Kokoro)、对齐、events.json、包含字幕的草稿场景、临时配乐和音效、mix.wav、在 Chrome 中实时预览一部完整的草稿影片~15 分钟
U1脚本:大声朗读、>>> 注释、重写、重新运行管线最终脚本数小时
U2配音:用户选择 (a) 自己录制或 (b) Chatterbox(可选从自己的声音克隆,需征得同意),两者平等。选择、编辑、重新对齐、重新生成事件最终旁白,所有内容重新计时数小时
U3配乐:从事件生成 MIDI,用样本库渲染,混音真实音乐数小时
U4润色:画面细节、素材、音效、隐藏字幕、时间点微调成品影片数天
F最终:图片序列或视频导出,ffmpeg 混流out/film_1080p60.mp4分钟

不要跳过。每一轮只升级一层,实时展示,获取反馈,然后提交。

你始终遵循的规则

与用户合作

  • 像剧组听取导演的简介一样工作。 第一条提示就是简介。做出假设,一次性构建整个动态分镜,并在 brief.md 顶部列出这些假设(时长、基调、配音、音乐、平台、模拟了什么),供用户纠正。不要事先进行访谈。只有当确实遇到阻碍时才提问(没有主题、没有受众、目标矛盾),并且只问一个问题。
  • 在转向之前问一个简短的问题,而不是之后。当他们说缺少某些东西或出问题时,首先询问自上次正确以来发生了什么变化(重录、删减、重新计时),然后再添加新内容。
  • 永远不要说“你听到了或看到了什么”。说出你测量到的内容,并请用户观看和聆听。
  • 注释存在于文件中:用户在 script.md 中写入 >>> note 行。将每条注释合并到脚本或舞台说明中,删除标记,并说明你做了什么。
  • 告诉他们草稿配音是临时替代品,他们自己的录音效果最好。

脚本和配音(references/voice.md)

  • 英语口语:简短、具体、有力。没有 AI 套话:“quietly”、“seamlessly”、“delve”、“tapestry”、“testament”、“it's not X, it's Y”,以及堆砌的三连词。
  • 每一行都有一个 ID,并且是单独录制的。平直录制,在后期调整电平。
  • 草稿配音:Kokoro,免费且离线。绝不使用操作系统自带语音(say、SAPI、espeak)。避免使用非商业权重。对齐也在草稿音频上运行,因此从第一个动态分镜开始 events.json 就已存在。

画面(references/motion-canvas.md)

  • 默认 1920x1080,60 fps。除非要求,否则不生成 4K。
  • 内存保护。 没有 shadowBlur,没有每帧重绘的大模糊层,没有数千个单独过滤的形状。用少量宽透明度低描边或一个缓存的精灵来模拟发光。在用户打开之前,通过看门狗测试一个高负载场景(RSS 限制)。一次只能运行一个高负载进程。永远不要在渲染运行时重建音频或事件。
  • 如果场景在画布上绘制,请在每个辅助函数中恢复状态(save/restore、重置 globalAlpha)。泄漏的 alpha 值会导致闪烁。
  • 影片中的产品演示是一个道具:脚本化、录制或模拟的 UI,绝不是实时界面。

音乐(references/music.md),用户可覆盖的默认值;它们也适用于临时配乐

  • 在配音下方保持固定电平,无闪避,大约比语音低 10 dB。各层添加色彩,而非响度。
  • 旁白下没有琶音或节奏填充。使用 Pad、低音、主题、渐强、渐弱、静音。
  • 切到静音时是干声,在混响之前,因此房间声能自然消失。
  • 临时配乐和音效在 Python 中基于 events.json 时钟合成,零大型下载。样本库等待 U3 阶段。

流程

  • Windows: 首先阅读 references/setup.md 的 Windows 部分。对路径加引号,保持生成的 shell 脚本为 LF 换行符,保持项目路径简短。
  • 小批量提交,每轮审核一次。显式指定要暂存的文件路径。不要提交原始录音、模型、样本、node_modules 或渲染输出。提供一个 .gitignore。
  • 审查样片:仅在用户要求时才提供。仅编码发生更改的片段,带前后 2 秒上下文,分辨率为 720p30,包含音频。
  • 构建保护:如果混音在其帧导出后发生更改,则拒绝组装最终版;如果渲染正在进行,也拒绝构建。通过代码强制执行(锁定文件,导出旁边的哈希值),而不是口头承诺。
  • 以输入哈希为键,缓存昂贵的步骤(对齐、合成、分轨)。

当出现问题时

首先阅读 references/lessons.md。已知陷阱:吃掉爆破音的去咔嗒声插件、从浏览器缓存提供的过时混音、两个标签页共用一个麦克风、行尾注释吞掉了右花括号、空间音频耳机导致立体声混音听起来像单声道。

文件

  • references/workflow.md:动态分镜和每个升级阶段、把关点、快速成果
  • references/events-schema.md:events.json 格式和规则
  • references/motion-canvas.md:项目设置、事件驱动的场景、预览、导出、性能保护
  • references/music.md:临时配乐和音效合成、基于一个时钟的 MIDI、样本、混音
  • references/voice.md:脚本配音规则、草稿 TTS、录音、选择、编辑
  • references/lessons.md:经验教训总结
  • references/setup.md:引导、带有安装命令的默认值、animator.config.json
  • scripts/check_env.sh、scripts/check_env.ps1:紧凑的工具报告(幂等、只读)
  • templates/:events.example.json、Motion Canvas 的 events.ts 和场景骨架

相关技能