制作动画剧集 是做什么的?
概述
一个纵向的、有声的、带字幕的动画剧集:角色艺术、画面、克隆或库语音、音乐、图片转视频剪辑和口型同步,由引擎根据真实对话音频进行每镜头的计时。单个 episode.json 文件包含整个项目,engine/episode.py 根据它运行所有阶段。同族的技能负责特定提供商的实现。
使用引擎;不要自己编写编辑脚本。 时间线、覆盖层、字幕、从右到左文本、混音、持续时间和口型同步连接都已存在于 engine/ 中。它已通过重建一个真实的 3.5 分钟剧集得到验证:相同的帧、相同的音频,以及原始版本错过的精确长度。手写编辑会重新发现 references/troubleshooting.md 中的每一个错误。
音频是主导。 镜头长度、字幕时间和口型同步部分都来自完成的对话文件。切勿根据文本估算时间。
你无法观看或收听。 你检查帧、持续时间和数字。人类判断相似度、语音、发音、时间和笑话。规划好他们的检查点并遵循。
需要:
- 与此技能相邻的这些技能:
image-generation、elevenlabs-tts、generating-video-clips。 - Python 3,带有
pip install -r <此技能目录>/requirements.txt(Pillow 需使用 RAQM 编译,numpy;OpenCV 可选)。 - ffmpeg 7 或更新版本。
- 字体:样式和字幕使用字体键(示例中的
bold、hblack、black),fonts映射到已安装的.ttf文件。对于希伯来语和拉丁语,Rubik 和 Heebo(免费,Google Fonts)效果很好;check会在缺失字体时阻止。 - 环境变量中的密钥,在运行引擎的每个 shell 中设置:
OPENAI_IMAGE_API_KEY、ELEVENLABS_API_KEY、GEMINI_API_KEY、FAL_KEY。
要查看完整流程(无需 API 调用),运行 python3 <此技能目录>/engine/episode.py /tmp demo,然后对创建的演示项目执行 check 和 build。
流程及其检查点
每个检查点都是一个停止点:发送产物,询问,等待。命令格式为 python3 <此技能目录>/engine/episode.py PROJECT <command>。成本按 2026-10 月测算。
| # | 阶段 | 命令 | 检查点(人类) | 成本 |
|---|---|---|---|---|
| 1 | 故事和剧本 | 从 templates/script.template.md 创建 script.md | 剧本,以及每个敏感话题 | - |
| 2 | 角色圣经 | templates/characters.template.md,然后在 episode.json 中设置 characters | - | - |
| 3 | 面孔、卡片、推广 | chars face、chars card key=face.png、chars final keys | 相似度,在一张所有卡片的概览页上 | 每个角色约 $0.30 |
| 4 | 画面 | panels draft,然后 panels final ids | 每个画面,在一张概览页上 | 每个画面约 $0.30 |
| 5 | 语音 | 每个语音一个样本(elevenlabs-tts) | 每个语音,在批量之前,凭耳朵判断 | 美分 |
| 6 | 台词 | lines | 台词集,凭耳朵判断,带时间戳;名字 A/B 对比 | 美分到几美元 |
| 7 | 音乐和音效 | sound | 音乐 | 美分 |
| 8 | 故事板 | build(尚无剪辑:静态帧带摄像机移动) | 节奏和顺序,在任何视频投入之前 | 免费 |
| 9 | 动画 | animate、概览表、使用 animate S --takes 2 + animate pick S K 重拍 | 运动,从概览表 | 每秒钟剪辑每次拍摄约 $0.10 |
| 10 | 口型同步 | lipsync prep、配置中的面部点、lipsync run | 抽检帧 | 每秒钟约 $0.13 |
| 11 | 剪辑和交付 | build、sheet、deliver | 人类观看 mp4 | 免费 |
每个阶段的命令、输入、输出和故障处理:references/pipeline.md。
编写剧本
以下规则经过验证(详细内容和实例:references/script-writing.md):
- 前 3-4 秒设置钩子(对问题的冷开场),然后显示标题。对于 30 秒以下的视频,将标题和结束卡作为覆盖层放在故事画面上,并跳过蒙太奇。
- 每个常驻角色至少发言一次。 一个介绍蒙太奇,每个角色用自己的语音说一个词(约每张卡片 1.2-1.5 秒),既便宜又受欢迎。
- 屏幕文本必须可读: 大约 0.8 秒加上每个字符 0.06 秒;短卡片 1.2-1.5 秒;最终标题文字 4-6 秒。给卡片设置
mindur。 - 早期埋下线索并在后期揭示。 对群体真实内部笑话的呼应效果最强。
- 敏感话题由用户决定。 列出你想要使用的每个私人细节(健康、金钱、关系、家庭、争吵),逐个询问,仅使用他们确认的内容。
- 每句台词不超过 12 个单词,数字用文字表示。 屏幕文本保持正常拼写;发音修正放在
pronounce中。 - 音乐和音效,即使有旁白也需要。 至少一个音乐背景和几个效果(切换时的嗖嗖声、揭示时的重击);无声的背景听起来未完成。
episode.json 一屏概览
templates/episode.example.json 是一个完整的小剧集;每个键都在 references/config-schema.md 中。你最常编辑的部分:
characters:显示名称、颜色、语音以及来自角色圣经的提示字段。speakers:从不绘制的语音,例如旁白({"display": null, "voice": "<id>"}提供无名称的字幕)。lines:id、说话者、带音频标签的文本;单词语句的trim和level。shots:图像、台词("[email protected]"与上一句台词重叠)、填充、mindur、摄像机、特效、音效、覆盖层、剪辑偏移和速度。music_cues:[提示音, 起始镜头, 结束镜头, 音量, 偏移]。当提示音持续时间短于其窗口时,构建会发出警告。lipsync:哪些镜头、要跳过的台词、每个部分的一个面部点。prompts:覆盖char_style和panel_style以获得不同的外观(3D 卡通、水彩、真实感)。
构建和审阅
- 批量修复。 一次完整构建需要几分钟。收集审阅轮次中的所有笔记(一段台词的录制、一个填充、一个剪辑偏移),全部应用,然后重新构建一次。
- 片段被缓存和跟踪。
build只重新渲染输入发生变化的镜头:新的剪辑或口型同步版本、推广的画面、编辑过的台词、镜头或样式。build --only S05,S06强制渲染这些镜头;--force重新渲染所有内容。 - 口型同步镜头在其剪辑、偏移、速度或台词发生任何更改后需要重做:
lipsync prep S05 && lipsync run S05。在此之前,构建会发出警告并提示该口型不同步已过时,并使用原始剪辑。 - 重新生成现有资源需要
--force(sound theme --force、animate S05 --force);没有它,现有文件将被保留,仅填补空白。 - 使用概览表进行审阅。
sheet将每镜头 3 帧放在一页上。当人类按时间提及某个时刻时,提取并阅读那些帧再回答(ffmpeg -ss T -i build/<output>.mp4 -frames:v 1 f.jpg)。 - 每次构建前执行
check: 检查缺失的资源、密钥、同级技能,以及比帧更宽的覆盖文本。 - 每次构建结束时验证持续时间。 音频短于视频将导致构建失败,而不是切断结尾。
- 发送前:
references/qa-checklist.md。
与人类协作
- 使用你的文件发送工具发送每个产物,并主动提供在 Finder 中显示;不要只打印路径。最后一步是
deliver并发送该文件。 - 对于音频,说明要听什么以及在哪里听(“在 0:41 处,Dani 的名字听起来对吗?”)。永远不要声称你听到了。
- 发音和语音选择由他们决定:带时间戳的 A/B 文件(elevenlabs-tts)。
- 在每个付费阶段之前,给出成本估算;之后,给出累计总额。
当某些东西看起来不对时
| 症状 | 修复方法 |
|---|---|
| 卡片或字幕太快,无法阅读 | 提高 mindur / post:短卡片约 1.2-1.5 秒,最终标题文字 4-6 秒 |
| 标题在两边被裁剪 | check 会警告;降低样式的 size 或添加 wrap |
| 音乐在段落结束前停止 | 构建已警告:提高提示音的 seconds,sound <cue> --force;或将段落拆分为两个提示音 |
| 结尾被截断 | 使用引擎无法发生(精确长度的混音,持续时间检查);在手动的复用中,参见 deck-to-video |
| 台词被音乐淹没 | 在该台词上运行 level_clips.py --report,然后换一个更强的录制;降低该提示音的音量 |
| 角色在台词前做动作或指着 | 将 clip_off 设置到该点之后,或拆分镜头并使用 clip_cam 裁剪第一部分 |
| 嘴巴与单词不匹配 | 口型同步阶段;如果错误的嘴巴在动,修复其面部点 |
| 群像中一张脸特别大 | 安装 OpenCV(面孔会被均衡),或者镜像一个其道具覆盖了邻居的卡片 |
| 希伯来语渲染成反向或未连接 | 未安装 RAQM 的 Pillow:check 会说明如何修复 |
| 名字或借词发音错误 | 添加 pronounce 条目,通过耳朵进行 A/B 对比 |
更多信息及原因:references/troubleshooting.md。
相关技能
- image-generation:角色卡片和画面(“常驻角色和故事画面”)。
- elevenlabs-tts:语音、单词语句、发音、音乐和音效。
- generating-video-clips:剪辑、录制概览表、口型同步。
- deck-to-video:针对幻灯片视频的相同 ffmpeg 经验教训。