各语言版本如有出入,以英文版为准。
一个 Agent Skill,用于制作多镜头 AI 视频:每个镜头都从一张生成的关键帧图片开始。覆盖从分析原作、分镜、出关键帧,到生成视频、合成带字幕成片的全过程。
适用于任何关键帧驱动的视频模型;基于 Agnes 视频 API(agnes-video-2.5-flash)编写并验证。
不是演示稿,是在真实制作里一次次打磨出来的。 这个 skill 里的每一条规则,都来自实际做片时踩过的坑或找到的解法:截至 2026 年 9 月 30 日,已经用它跑完约 20 个真实视频项目——儿童英语跟读片和读前生词短片、有旁白的系列课程片、带对白的剧情片段、一部电影开场的 31 镜复刻——累计 540 多个视频生成任务、约 570 个成品片段。只观察到一次的结论,skill 里都会注明「只是一个样本」。
tangbao-hatches.mp4
用这套流程做的 15 秒三镜头样片,带中文对白。原文件:tangbao-hatches.mp4
价值不在「怎么调一个视频 API」,而在调用周围的纪律:
- 先审批,后花钱。 分镜、调度、提示词、角色卡、关键帧、托管,每一步都停下来等人批准——批准的是方案,而不是花完钱之后拿到一段不想要的成品再来评价。
- 连续性靠结构保证。 角色设定由脚本拼进每一条提示词,从不手抄;身份参考用中性灰底的角色卡,并在片子依赖它之前做压力测试;每个镜头里有谁,由摄影机的视野算出来,而不是靠记忆。
- 诚实的验证。 Agent 听不见声音。这个 skill 只拿「确实有人在说话」的客观证据,绝不把它当成「说的语言和台词正确」的结论;检查贯穿整条片段的多个时间点,而不是一两帧;任何自动检测器都要先在已知干净的样本上验证,才能相信它。
- 声线稳得住。 旁白的声音靠
reference模式挂一段已通过的声音样本锁定;每个角色的声音先让人耳试听选定一次,再把选中的声音描述原样写进这个角色的每一个镜头。 - 无人值守也能跑完。 一个调度器按顺序、每 61 秒提交一次;遇到队列满或断网就重试,最多挂 48 小时;已经拿到任务号的绝不重复提交,等待期间照常下载——长片可以整夜自己跑完。
- 把真正耗过时间的坑写下来——没有台词的镜头自己编出一句套话、空镜里冒出对着镜头讲话的主持人、重试被自己的防重复提交机制挡回、验证命令的报错被读成「全部被删了」。
flowchart LR
A["0 · 原作分析"] --> B["1 · 剧本与分镜"]
B --> C["1.5 · 调度"]
C --> D["2 · 提示词"]
D --> E["2.5 · 角色卡"]
E --> F["3 · 关键帧"]
F --> G["4 · 托管"]
G --> H["5 · 视频任务"]
H --> I["6 · 合成与检查"]
I --> J["7 · 记录"]
classDef gate fill:#fff4d6,stroke:#c9a227,color:#222;
class B,C,D,E,F,G gate;
高亮的是审批关:到这里 Agent 会停下来,等人确认再往下走。
| 阶段 | 输入 | 产出 | 关键纪律 |
|---|---|---|---|
| 0 · 原作分析(长篇作品) | 原作文本(只读工作副本) | 从原文统计出的角色名单、按形象阶段写并标注章节的角色圣经、分集对照表 | 先量篇幅、查缺章;角色靠统计不靠记忆;原文不入库 |
| 1 · 剧本与分镜 | 一场戏或一集对应的章节 | 剧情节拍、原创台词、镜头表 | 借结构,不借句子 |
| 1.5 · 调度 | 分镜 | 每个场景的演员与机位俯视图;由每台摄影机的视野算出的每镜出场名单 | 在出第一张图之前,就能抓出「说话人不在画面里」,甚至整段画外旁白 |
| 2 · 提示词 | 资产块(画风、场景、角色、声音) | 每镜一条拼装好的提示词,外加中英对照审阅表 | 块由脚本拼装;台词单独成段;每条负面约束都对应本镜自己做过的决定;无台词镜头要把声音写出来 |
| 2.5 · 角色卡 | 角色圣经 | 中性灰底的正面、背面、面部特写卡,以及压力测试 | 及格线在看图之前定;不及格返工卡,不返工镜头 |
| 3 · 关键帧 | 提示词 + 角色卡 | 每镜一张 t = 0 的图 | Agent 先自己看;问题和优点一样直说 |
| 4 · 托管 | 已批准的关键帧 | 视频接口能取到的网址——如果走法不需要托管,这一步可以跳过(见下文) | 单独审批;上传目录先扫描;每个网址重新下载比对哈希;生产环境不动 |
| 5 · 视频任务 | 已托管的关键帧 + 提示词 | 每镜一段视频 | 提交前先写任务记录;重试前先按记录里的状态给每个失败分类 |
| 6 · 合成与检查 | 视频片段 + 剧本 | 带字幕的成片 | 时长靠实测不靠假设;按镜头类型处理响度;字幕由流程自己叠,不用模型烧的;跨时间点抽帧检查;语言对不对留给人耳判定 |
| 7 · 记录 | 以上全部 | 制作记录 | 还没验证的事项单独列一节 |
完整的操作步骤、已验证的能力说明、校验清单、回归测试与故障模式见 SKILL.md(英文,为最新权威版本)。
任何 Agent 都能用。 这个 skill 本身就是 Markdown 文档加一套约定。只要 Agent 能读文件、跑命令行、发 HTTP 请求,就能照着做——Claude Code、Codex、Hermes Agent,或者你自己的 Agent 都可以。
视频模型:用 agnes-video-2.5-flash 验证。 本仓库里的每一条规则都是在它上面实测出来的,720p,包括首帧(keyframe)模式和挂声音样本的 reference 模式。注册和创建 API Key:platform.agnes-ai.com。按 2026 年 9 月 11 日查看的官方价目页,agnes-video-2.5-flash 目前限时免费(原价 720p 视频每秒 $0.025);不带「Flash」的 agnes-video-2.5 是收费的。优惠会结束,用之前请再看一眼价目页。
出图模型:随你选。 关键帧和角色卡用过 OpenAI 的图像模型,也用过 agnes-image-2.5-flash(同一价目页上也是 $0)。其他支持首帧的出图、视频模型,比如 MiniMax 的,也能套用同样的审批关;本仓库没有实测过它们,各家的限制请自行确认。
首帧模式下,视频接口要自己去取每一张图。Agnes 只收公网网址,而且要一直有效到任务完成。怎么满足这一点,决定了第 4 步「托管」要不要做:
| 走法 | 需要托管吗 | 状态 |
|---|---|---|
Agnes 出图 → Agnes 视频:agnes-image-2.5-flash 直接返回一个图片网址,把这个网址原样交给 agnes-video-2.5-flash |
不需要 | ✅ 2026-09-11 实测通过 |
| 直接传图片数据:MiniMax 的视频接口首帧可以直接传 Base64 数据 | 不需要 | 📄 仅厂商文档 |
| 临时静态托管:Cloudflare Pages 预览部署(静态流量不计费)、Firebase Hosting 预览频道,或对象存储加带时效的签名链接 | 需要 | ✅ Cloudflare Pages 2026-09-25 实测,此后每部片都用它;Firebase 实测;对象存储未测 |
| 本机服务器 + 隧道:在自己电脑上放关键帧,用 Cloudflare 临时隧道暴露成公网网址,不用注册 | 需要 | ✅ 2026-09-11 实测通过 |
2026 年 9 月 11 日两次测试的结论:
- Agnes 出图 → Agnes 视频,完全不用托管就跑通了。 图片网址不带过期参数,视频做完之后仍能打开;但 Agnes 会保留多久,文档里没写——拿到网址就立刻下载一份存档。
- 光有本机服务器不够。 Agnes 的服务器看不到你电脑的
localhost或局域网地址,家庭宽带大多也没有公网 IP,所以要用隧道给它一个公网网址。Agnes 在提交任务约 15 秒后来取了一次图。 - 在你自己的网络里先试一遍。 第一次测隧道时看起来像是隧道坏了,其实是本机 DNS 解析不出这个刚建的新域名;改用公共 DNS 解析就正常了。尤其是中国大陆的用户,Firebase 和部分公共 DNS 可能访问不了——「全用 Agnes」或「本机服务器 + 隧道」这两条路都用不到托管服务。
自 2026-09-25 起,每部片的关键帧都走 Cloudflare Pages 预览部署:之前一个月的 Firebase 预览频道用光了那个项目每月 10 GB 的免费托管流量。Pages 没有自动过期,片子做完要把预览删掉——而且删掉的部署有时还会继续提供部分文件一段时间。
以下图片来自之后用同一套流程做的一集 20 个镜头的片子。
角色卡与压力测试(第 2.5 步)。 两个角色用的是同一套造型,所以给每个角色两处互相独立的区分标志——头发长短、身体里的花纹——并且要在片子实际需要的 8 个姿态里都立得住。
调度俯视图(第 1.5 步)。 绿点是演员,蓝色扇形是摄影机的视野。每个镜头引用一台摄影机,落在扇形里的人就是这一镜的出场名单。
关键帧(第 3 步)。 每张图画的是镜头动作开始之前、t = 0 时的状态。
检查一个无台词镜头(第 6 步)。 在音频最响的几个时刻截帧。用英文提示词时角色一直在开口(左);改用中文、把声音逐项写清楚、人声一项写「无台词」之后,嘴从头到尾都闭着(右)。之后再由人耳确认这一镜确实没有人声。
examples/tangbao-hatches/
├── README.md 这个示例是什么、怎么做出来的
├── shots.json 实际提交的三条镜头提示词与台词
├── keyframes/ shot-01.png … shot-03.png —— 已批准的 t = 0 关键帧
└── tangbao-hatches.mp4 15 秒成片(1280×720,H.264 + AAC)
| 镜头 | 时长 | 画面 | 台词(原创) | 说话人 |
|---|---|---|---|---|
| 01 · 破壳 | 5 秒 | 夜里石台上,少女俯身看着一枚发光、正在裂开的蛋,一位年轻男子在她身后看着 | 「动了……它真的动了!」 | 少女,屏着气 |
| 02 · 睁眼 | 5 秒 | 一只发光的小虫破壳而出、睁开眼睛,两个人在它身后虚化 | 「爸爸……妈妈……」 | 小虫,童声 |
| 03 · 傻眼 | 5 秒 | 从小虫身后的低角度看:少女愣住,年轻男子开始忍不住笑 | 「我什么时候当妈了?」/「你孵的,可不就是你。」 | 少女/年轻男子 |
这一轮证实了什么。 agnes-video-2.5-flash 能直接根据一张关键帧和一条写着台词的提示词,生成听得懂的中文对白,而且口型对得上——不需要另外的文字转语音。三句台词是否都是中文、是否和剧本一致,由人收听后确认;没有拿任何自动分析来代替这个判定。
它走过各个阶段的方式:选定这场戏和三句原创台词并批准(第 1 步);图片提示词批准(第 2 步);第一版关键帧被退回——小虫的脸有点诡异,而且 03 的构图跟 01 雷同——重出时锁定可爱的虫体设定,03 改成低角度的虫视角(第 3 步);已批准的关键帧托管到临时预览频道(第 4 步);每个镜头提交一个 agnes-video-2.5-flash 任务,首帧模式、720p(第 5 步);片段归一化后拼接(第 6 步)。四道审批关本身就是在这一轮定下来的。
这是这套流程的第二轮。它早于调度、角色卡、提示词语言规则,以及「每个镜头都配字幕」这条规矩——这条成片没有字幕。放在这里是为了展示整条流水线和中文语音的效果,而不是 SKILL.md 里现在的每一条规则。
SKILL.md skill 本体(英文,权威版本)
SKILL.zh.md 中文版,与 SKILL.md 同步更新
README*.md 本页:简体中文(默认)、英文、繁体中文
examples/ 上面的示例
docs/images/ 本页的插图
LICENSE
把 skill 复制到你的 Agent 的 skills 目录,例如:
mkdir -p ~/.claude/skills/keyframe-video-production
cp SKILL.md ~/.claude/skills/keyframe-video-production/然后让你的 Agent 根据一场戏做一段短视频,它就会用上这个 skill。
examples/和docs/images/里的所有素材都是 AI 生成的。关键帧和角色卡来自图像模型,关键帧 PNG 里仍保留该生成器的 C2PA 溯源信息;运动和声音来自agnes-video-2.5-flash。- 画面灵感来自 Fresh果果 的网络小说《花千骨》。没有使用小说中的任何文字;台词、标题和视觉设计都是为这些项目原创的。角色版权归原作者所有;这些素材仅用于说明工作流程,不作商业用途。
提炼自 2026 年 9 月 8 日至 30 日的真实制作——约 20 个项目、540 多个视频生成任务:几个简短的技术演示;一部 17 个镜头的儿童成语片;改编自小说的两集(18 个和 20 个镜头);一套有旁白的系列课程片;一部电影开场的 31 镜复刻;以及儿童英语跟读片,每篇配一支读前生词短片。SKILL.md 里的每一条规则都记录了是哪一次制作为它付出了代价。关于说话语言的判定一律来自人耳收听,从不来自自动分析。
- gpt-image-style-atlas:同一个画面、116 种画风的 GPT Image 2 风格对照卡,每张配可复制的提示词。给关键帧选画风时可以先在这里比一比。(在线浏览)
skill 与文档采用 MIT 许可,见 LICENSE。示例素材仅供说明,见上文。




