# Skill Movie

> 当用户要制作完整影视视频，且任务需要从创意到成片跨多个阶段推进时使用，包括影视剧集、短片、预告片、MV 等。负责整体制作流程的总控、阶段推进、关键节点把关和最终交付收口，适合尚未拆解的完整成片任务。

- Skill: `wangzai-double-milk/skill-movie` (Agent Skill)
- Install (CLI): `npx skillmds@latest add wangzai-double-milk/skill-movie`
- Raw SKILL.md: https://api.skillmd.com/api/skills/wangzai-double-milk/skill-movie/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: wangzai-double-milk (https://skillmd.com/u/wangzai-double-milk)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/wangzai-double-milk/skill-movie

---


# Skill · 影视制作主流程（总控）

## 执行卡
- **何时读我**：用户要从需求生成完整视频 / 短片 / 预告片 / 广告片，或要在已有项目上继续制作、返工、合成、交付时。
- **我负责**：串起主流程，维护唯一状态源，决定什么时候可以进下一环，什么时候必须回流。
- **我不负责**：替剧本、编导、提示编译、审查重复写全部专业细则；具体细则回对应阶段规则。
- **输入**：用户需求、项目工作目录、`script.md`、`director_plan.json`、素材、故事板、生成结果、审查记录。
- **输出**：按阶段推进的项目产物、可追踪版本、终版段清单、合成成片和审查结论。
- **失败回流**：任何阶段缺关键产物或审查不通过，回到根因环节补齐；不跳闸门、不靠目录扫文件猜状态。

## 开拍前先过这 12 个闸门
1. 项目必须有落盘的剧本、执行计划和阶段状态源；不能靠聊天摘要或目录猜当前版本。
2. 每段必须有 3×3 九宫格故事板，但故事板只管剧情梗概、事件顺序、情绪 / 信息推进；不代表分镜、人物细节、材质、场景结构或镜头视角。
3. 人物穿过场景、追逐、逃跑、横穿街道、从场景一端到另一端时，必须先有场景左 / 中 / 右视图 + 红线 scene route map；红线只代表路线，不代表镜头视角。
4. 每段视频必须有段内时间轴变化设计：执行计划先粗拆，生成要求再细化；不能只写一串总体动作。
5. 执行计划必须有钉死的调色板和色卡：`style_contract.color_palette` 写清主 / 辅 / 点缀色、色温、对比度、影调、LUT，色卡登记进资产；每段图和视频生成前都复述同一份颜色，不能只靠一张风格锚点图控色。
6. 主要人物、关键道具、核心场景若有关键视觉状态变化，必须先有状态变体参考图或状态参考组；不能只拿基础参考图靠文字临场改（STATE-1）。
7. 需要观众看清的食材、材质、产品、文字、屏幕、破损或状态证据，必须先有单独关键特写素材；特写要从基础资产 / 状态资产 / 所在场景参考放大而来，不能从全景硬裁，也不能凭空另画导致场景偏移（CU-3）。
8. 涉及吃、喝、拿、夹、舀、切、吸、抿、咀嚼的段落，执行计划和生成要求必须按对象属性写清处理方式；不能把所有东西都手拿、所有饮品都大口喝、所有食物都一口吞（USE-1）。
9. 有食物、液体、热量、重量、湿滑、锋利、燃烧、碰撞的段落，执行计划和生成要求必须写清生活物理与人类本能反应；酱汁会滴、热汤先吹、大块食物分口、液体会晃（PHYS-1）。
10. 每次生成前都要先做调用前自检：能说清本次生成依据、参考素材职责、故事板边界和关键生成设置；自检没明确通过，主流程停。
11. 最终图像 / 视频生成要求必须写满画面细节，并保留执行计划给出的镜头参数、段初段末承接和关键道具持有链。
12. 链式延展必须串行等待上一段过审终版，并把它作为下一段的真实参考依据；不能只用首尾帧文字冒充连续性。

## 红线速查（主流程层）

主流程层只做闸门，不另起本地编号体系。
需要定位到具体创作硬伤时，回对应阶段规则使用共享故障标签。

| 红线（出现即停） | 正解 |
|---|---|
| 从用户需求或文学剧本直接跳到视频生成 | 先有落盘剧本，再有可执行 `director_plan` |
| 用对话记忆、摘要笔记或素材目录当状态源 | 全片状态只认 `director_plan.json`，阶段状态只认 `manifest.json` |
| 读写项目产物用相对路径赌 `cwd` | 一律用项目返回的绝对路径（`project_dir` / `project_id` 解析），不默认 `cwd` 是项目根或仓库根 |
| 用代码手拼项目数据时照抄 JSON 的 `null` / `true` / `false` | 写宿主语言的值（Python 用 `None` / `True` / `False`）；先构造数据对象再一次性序列化，别在代码里手敲另一种语言字面量 |
| 在通用代码里裸调 `ffmpeg` / `ffprobe`（探时长、探音轨、拼接、抽帧） | 一律走项目视频 / 音频工具；SDK 统一使用 `imageio-ffmpeg` 自带的 ffmpeg，不依赖系统 PATH，也不需要 ffprobe |
| 剧本只在聊天上下文里，没有 `script.md` | 剧本正文必须落盘，含人物小传、分场剧情、逐字台词 / 旁白 |
| plan 没有一句话主线或每段功能 | 回编导，先钉主线和段落功能 |
| 开场黄金三秒不成立 | 回剧本 / 编导，不带平淡开场往下拍 |
| 中途只把后半段换画风 | 要么源头修原风格，要么全片从 `style_contract` 开始重做 |
| plan 只有一句"电影感色调"或一张风格锚点图，没显式调色板和色卡 | 回编导钉死 `style_contract.color_palette` 并登记色卡 |
| plan 声明的视角数 / 色卡 / blocking / 轨迹图 / 状态变体只写在字段里没真生成，就想进下一环 | 素材收口逐条点数，plan 承诺几个就要有几个过审资产，缺的回素材补 |
| 各段颜色各漂各的，生成前没复述统一调色板 | 每段图和视频都逐字复述 `color_palette`，缺色卡回编导补 |
| 计划里需要的角色、场景、道具、关键特写没有参考资产 | 回素材补参考包，不靠文字硬生 |
| 参考包没复用，或把全项目素材一股脑塞进每段 | 每镜只用本镜需要的参考，并说明职责 |
| 没有过审故事板就进视频生成 | 每段先有 3×3 九宫格手绘故事板并过审 |
| 人物穿过场景 / 追逐 / 长距离移动，没有场景运动轨迹图就进视频生成 | 先补左 / 中 / 右场景视图和红线 scene route map |
| 视频段没有段内时间轴变化设计就进生成 | 回编导补 3-6 阶段粗时间轴，回提示编译环节扩写每阶段变化 |
| 下游按故事板格数切镜头 | 切镜头数看 `director_plan`，不是看故事板格数 |
| 调用生成前说不清本次生成依据、参考职责、故事板边界或关键设置 | 回提示编译环节重写生成要求并重新自检；任一硬项缺失 / 冲突不得调用模型 |
| 发现乱码、错字、假字后不定位坏字位置，直接乱重生，或只加旁白却不修画面文字 | 先定位段落 / 时间 / 区域 / 文字载体和应读内容，补局部可读素材或清晰落版，再重做受影响镜头；旁白可补强但不替代修字 |
| 链式延展段没等上一段终版、没把上一段作为真实参考依据 | 串行等待上一段过审终版；用上一段参考往后扩写 |
| 单段各审各的就放行，没有滑窗审和终审 | 相邻两段拼接滑窗审 + 成片终审 |
| 多个阶段状态一次性齐刷刷标 done，或终审结论没等审查实际跑完就写"全部通过" | 每个阶段各自等到真实产物过审再落状态；审查结论以实际审查记录为准，不提前盖章 |
| 合成时扫素材目录自动拼 | 只按 `director_plan.json` 的终版段清单、顺序和版本合成 |
| 对中间段用 `video_crossfade` / 叠化补接缝（`offset` 用默认值吃掉前段） | 中间接缝在生成层设计咬合帧，合成用 `video_concat` 硬切；crossfade 只留片尾 |
| 把音轨识别结果交给 VLM 判通过 / 不通过 | 音频是制作计划，不作为当前审片模型放行条件 |
| 不通过后覆盖旧版、原样重抽或只修表面 | 新版本另存，按根因回流，修完逐条复审 |

---

## 一、唯一真相源和项目状态

### `director_plan.json` 是全片唯一事实源
长任务上下文会被压缩。
不要另写独立摘要便签来维护半截真相。
回看进度、取台词、取段顺序、取终版文件，一律读 `director_plan.json`。

`director_plan.json` 至少维护：
- 一句话故事主线。
- segment 清单、顺序、计划时长、累计时长。
- 每段功能、不可丢信息、逐字台词 / 旁白、画面文字。
- 每段镜头节拍、故事板规划、资产需求、段初承接和段末交接。
- 每段状态：待拍、已生成待审、已过审、需返工。
- 每段终版文件：`final_file`、版本号、选择理由。
- 关键道具持有链、剪辑决策、音频计划。

素材目录里常有多版本、试验片段、废弃文件。
合成、复审、交付都不能扫目录自动猜。

### `manifest.json` 只管粗粒度阶段状态
每个阶段开始、完成、阻塞、复审失败时，更新 phase：
`in_progress`、`done`、`blocked`。

记录关键产物或阻塞点。
如果压缩摘要、工作记忆和落盘文件冲突，以 `director_plan.json` 和 `reviews/` 里的实际文件为准。

### 落盘纪律（读写项目产物时的实操铁律）
项目里的 `script.md`、`director_plan.json`、`manifest.json` 等产物，读写路径一律用创建项目时返回的**绝对路径**（`project_dir` / `project_id` 解析而来）。
- **不靠相对路径赌当前工作目录**：agent 的运行 `cwd` 不一定是项目目录（常见是临时目录），相对路径 `projects/...` 会被解析到 `cwd` 之下而落空或写错地方。要么用绝对路径，要么显式基于项目根拼接，别默认 `cwd` 就是仓库根。
- **用代码生成项目数据时，写宿主语言的值，不要手敲另一种语言的字面量**：比如在 Python 里构造 plan / manifest 这类结构，空值写 `None`、真假写 `True` / `False`，不要照抄 JSON 的 `null` / `true` / `false`——那会直接 `NameError` 崩掉，产物写不出来。
- **能结构化写盘就别用通用代码手拼再 dump**：优先用项目工具直接落盘结构化产物；确需用代码兜底时，先构造好宿主语言的数据对象、再一次性序列化，不在字符串里手拼另一种语言的语法。
- **不在通用代码里裸调 `ffmpeg` / `ffprobe`**：探视频时长、探音轨、拼接、转场、抽帧这类活，一律走项目的视频 / 音频工具，别在 `code_run` 里自己 `subprocess.run(["ffprobe", ...])`。SDK 直接使用 `imageio-ffmpeg` 自带的 ffmpeg；系统 PATH 上可能既没有 ffmpeg 也没有 ffprobe。要探测或处理媒体就用项目工具，不要赌系统环境。

---

## 二、完整制作流程

### 1. 需求进入剧本阶段
剧情类内容开拍前必须有过审剧本。
哪怕用户给了现成剧本，也不能仅凭"文件已存在"直接开拍。

剧本必须落盘为 `script.md` 或等价文件，包含：
- 人物小传。
- 分场景剧情。
- 逐字台词、旁白、画外音。
- 关键道具、场景、风格方向。

只在状态备注里写"剧本完成"，或剧本只活在聊天上下文里，都不算完成。

### 2. 进入编导阶段
剧本定稿后，必须产出可执行编导方案。
最低要求：
- 一句话主线和每段如何推进主线。
- 黄金三秒钩子。
- 叙事顺序和结构选择。
- 不可丢信息清单。
- 段间因果链、段初承接、段末交接。
- 镜头节拍表。
- 画面文字计划。
- 资产清单。
- 故事板规划。
- 剪辑决策和音频计划。

整片先在 `director_plan` 写死 `style_contract`（可复制文字风格契约），后续所有片段逐字沿用。
不能从文学剧本直接跳到生成 prompt。

开拍前检查时长：
- 单段视频生成建议不超过约 15 秒。
- 超长内容必须在编导规划期拆分，写进 `director_plan.json`。
- 生成阶段发现超时或超过上限，只能停下回编导补拆分，不能由提示编译 / 调用层临时生成 `seg02a/seg02b` 直接提交。
- 正式子段必须有自己的 ID、时长、镜头节拍、首尾承接、参考资产和审查记录。
- 3 段及以上如果时长全相同，默认怀疑机械均分。
- 机械均分必须回编导按剧情轻重重排，或逐段写清确实同长的创作理由。

对白段要预留尾音 / 呼吸 / 反应空间。
最后一句台词不要刚好卡在段边界上被硬切。

### 3. 素材生成和资产覆盖
按 `director_plan.json` 收敛资产清单。
只生成后续片段会用到的角色、场景、道具、关键特写、空间参考、运镜参考。
没用到的不生成，计划里有的必须补齐。

素材阶段只做流程闸门，不重新决定专业规划。
哪些对象要单独出图、场景要几张视角、是否需要 blocking 图 / 动线参考，以编导方案为准。

硬闸门：
- `director_plan.json` 里有固定 `style_contract`，不是只有一张风格锚点图。
- `style_contract.color_palette` 钉死主 / 辅 / 点缀色、色温、对比度、影调、LUT，并有一张登记进资产的色卡；色卡只锁颜色规格，不当画面参考。
- 主要角色有角色卡 / character sheet，同图包含正面全身、侧面全身、背面全身三视图。
- 需要表演或特写时，补面部近景、表情、手部、服饰、配饰细节。
- 每个实际拍摄场景都有多视角参考包：主视角、反向或侧向视角、俯视 / 总览或关键区域视角。
- 人物穿过场景、追逐、逃跑、横穿街道、进入房间这类空间运动段，场景参考包升级为左 / 中 / 右三视图 + 俯视场景运动轨迹图；红线只代表人物 / 物体路线，不代表镜头视角。
- 多人进出、推门、穿街、追逐、对峙、换手等关键调度，
  有 blocking 图标出人物站位、运动路线和门内外关系。
- 关键道具、产品、屏幕、纸条、表盘、UI、文字特写等有清晰参考；关键特写继承对应基础资产、状态资产或所在场景参考，不能脱离母资产另起一套画面。
- 风格锚点图只锚色调、光影、构图、质感，不塞复杂人物、手、文字和道具。
- 角色、场景、道具、关键特写和视频生成要求都继承 `style_contract`。
  写实片必须持续排除动漫、插画、游戏 CG、塑料 3D 和玩具感。

素材收口前，对着 `director_plan.json` 逐段做资产对照：
- beat 里推进到"观众必须看清"的内容是否都有参考。
- 故事板里出现的角色、场景、关键道具是否都有终版资产依据。
- 计划里写"可选 / 如需要 / 靠描述兜底"的，退回编导补明确。

**声明即承诺：plan 写了就得真做出来，不能只在文字里存在。**
编导方案里凡是列成清单、数组、字段的规划件——每个场景要几个视角、要不要色卡、要不要 blocking / 轨迹图、哪些主体 / 道具 / 场景要状态变体——都是承诺，不是可选建议。
素材收口不是"看 plan 里写没写"，是"逐条点数：plan 承诺了 N 个，实际生成并过审了几个"。承诺 3 个视角只出 1 个、承诺登记色卡却一张色卡都没生成、承诺 blocking / 轨迹图却只有一张单机位场景图，都算素材阶段未完成，不能进故事板 / 生成环节。
把颜色、空间、调度这类控制信息**只写进后续每条 prompt 的文字里**（"全片调色板是…""从门口视角看…"），当成已经落地，是这一环最隐蔽的漏法：文字口述对生成模型的约束远弱于一张真实参考图，缺图就等于没有视觉锚点，颜色会各段漂、空间会跨镜跳。声明了视觉锚点就必须生成出对应的图，让它真正作为参考进入下游，不能用一句描述替代。
自检一句话：合上 plan，只看 `entities` 里真实存在的图，能不能凑齐 plan 承诺的每一类锚点？凑不齐就回素材补，别靠"生成时我会在 prompt 里带"糊过去。

参考图和故事板默认保留官方 AI 生成标识。
只有用户明确要裸图交付，且该图不再作为视频参考时，才考虑去掉。

### 4. 故事板闸门
每个片段进入视频生成前，必须有过审的 3×3 九宫格手绘故事板。
本层只验三件事：
- `director_plan.json` 写清本段故事板分格规划。
- 实际故事板能看出九宫格、顺序箭头和剧情流动。
- 故事板中出现的角色、场景、关键道具有终版资产依据。

故事板只提供故事梗概、剧情流动、事件顺序和情绪 / 信息推进。
它不代表分镜，不决定切几刀，不锁人物细节、材质细节、场景结构或镜头视角。
成片外观、材质、光影、颜色和统一风格，回到角色 / 场景 / 道具参考图和风格锚点决定。
人物穿过场景的精确空间路线，回到场景运动轨迹图 / blocking 图决定。

故事板必须真实参与下一步视频生成。
只画不用，或视频完全没有继承故事板的剧情流动和事件顺序，算本阶段失败。
但故事板不决定成片切几刀，切镜按 `director_plan`。

### 5. 生成前提示编译与自检
每次正式生成之前，都要先把执行计划、剧本文字、参考素材职责和本次生成要求统一编译成一份完整输入。
编译完成后，先做调用前自检，再进入生成。
主流程只要求 agent 能说明本次生成为什么可以继续：依据哪段计划、用了哪些参考、故事板边界是什么、关键设置是否和生成要求一致。
这不是固定工作流产物，不规定具体工具、字段名、记录格式或文件名。
自检明确可继续，才进入生成；说不清、缺参考、边界冲突或设置互相打架，主流程必须停下。

调用前自检至少要覆盖：
- 本段逐字对白 / 旁白没有丢。
- 画面文字逐字落进生成要求。
- prompt 没改写 direct plan 的镜头参数、光圈数字、画面文字、段初段末承接和关键道具持有链。
- 真实生成设置和生成要求不冲突：例如画幅、时长、音频、参考输入等关键设置不能互相打架。
- 角色、场景、道具、状态变体参考图、九宫格故事板、blocking 图、场景运动轨迹图、风格锚点作为真实参考参与。
- 每张参考的职责写清：锁身份、锁空间结构、锁材质、锁风格、锁剧情流动、锁人物 / 物体运动路线。
- 若本段主要人物 / 关键道具 / 核心场景处于特殊状态，已绑定正确状态参考图，写清 `state_id` 和状态从哪来、延续到哪（STATE-1）。
- 若本段有食材、材质、产品、文字、屏幕、破损或状态证据的看清任务，已绑定单独关键特写素材，写清 `closeup_id`、用途和它继承的原始素材；特写没有漂成另一件物品或另一处场景（CU-3）。
- 最终图像 / 视频生成要求已按七层骨架写清镜头、主体、材质、空间、天气空气、光和色彩；没有因为怕长省略。
- 视频生成要求已按本段时长拆出段内时间轴，覆盖主体动作、表情、道具、副主体、环境、镜头和声音变化；不能只写动作链。
- plan 给过焦距 / 光圈数字时，prompt 原样保留数字。
- 视频生成要求已写清副主体运动和物理细节，不只写主体动作。
- 涉及吃、喝、拿、夹、舀、切、吸、抿、咀嚼的动作，已按对象属性写清处理方式和入口节奏；没有该用工具却手拿、该抿却大口灌、该嚼却直接吞这种 USE-1 问题。
- 涉及食物、液体、热量、重量、湿滑、锋利、燃烧、碰撞的动作，已写清生活物理和人的本能反应；没有热汤不吹就喝、大块食物一口吞、酱汁不滴、液体不晃这种 PHYS-1 问题。
- 如果本段是链式延展，上一段终版已经存在且过审，并作为本段真实参考依据；生成要求写清"基于参考继续往后扩写"。
- 故事板只作为故事梗概、剧情流动、事件顺序和情绪 / 信息推进参考；未注册资产、箭头、编号、格号、标签、说明字不进入成片。
- 人物穿过场景 / 追逐 / 长距离移动时，prompt 已把场景运动轨迹图红线翻译成自然语言路线，并声明红线不代表镜头视角、不出现在成片里。
- 人物与场景构图比例明确，大场景里人物该小就小。
- 段初承接状态、段末交接状态、关键道具持有链写清。
- 人声用固定音色档案，不写"同上"。
- 成片镜头没有把参考白底带进去，环境和光照由提示编译环节重建。
- 生成要求里没有工具层字段、路径、参数和轮询细节。

上面任一条缺失，调用前自检必须阻塞，主流程不得进入生成。
先回提示编译环节改生成要求；若缺的是 plan、资产、故事板来源或生成设置，回对应上游补齐后再重编译，再跑一次调用前自检。

### 6. 视频片段生成
每段视频只使用本片段真正需要的参考。
不要把全项目素材一股脑塞进去。
多角度角色图尤其不能直接混入多人物视频，容易被误读成多个相似人物。

串行和并行分清：
- 同一镜头动作直连、长镜头延续、链式延展，必须传上一段**过审终版视频**当参考视频，串行等待。
  这种段不是靠首尾帧文字硬接，必须让模型看到上一段完整视频。
  prompt 第一段要写清：
  "基于参考视频继续往后扩写；参考视频最后状态是……，本段从这个状态无缝继续……"。
  同时写明不重置人物、服装、道具、光线、机位、运动方向和副主体运动。
- 正常切镜头、转场、不同视角，不传上一段视频，独立并行生成。
  这类段仍按 plan 写段初承接和咬合帧，但不冒充链式延展。

核心参考被拒时，不要为了成功把故事板、角色参考这些主参考逐个删掉硬生。
正确做法：
定位问题素材，回对应环节重做替代参考：故事板只重做剧情流动参考；画面比例、站位和空间路线回 blocking 图 / scene route map / 场景多视图补齐。
过审后再生。

开拍前确认交付平台和画幅。
竖屏信息流通常优先按竖屏设计镜头，不先横后裁。

### 7. 图片、故事板、视频审查
每张图、每张故事板、每段视频都必须审。
进入下一环前必须有明确通过结论。

本节只定义进入下一环前必须具备明确审查结论，不在总控规则中展开具体质检判据：
- 参考图用尺度 A，放松看能否锁一致性。
- 故事板独立审形式和剧情流动。
- 视频段用尺度 B，从严看画面、叙事、文字、角色、镜头语言、结构、生活物理和本能反应。
- 文字乱码 / 错字 / 假字打回时，先要求审查结论定位坏字载体和应读内容；修复只重做受影响镜头，不默认乱重抽整段。
- 视频段必须按相邻两段拼接滑窗审：`1+2、2+3……(N-1)+N`。
- 最后做成片终审，不能用逐段审替代。

当前版本审查不把音轨、人声、BGM、旁白、口型或尾音作为 VLM 通过 / 不通过条件。
这些属于制作计划和生成要求，不交给审片模型判断。

### 8. 合成和剪辑
合成前做故事 beat 审计：
- `director_plan.json` 的不可丢信息是否都已落地。
- 段间因果链是否连续。
- 终版片段顺序、版本和 `final_file` 是否明确。
- 是否漏转折、重复情绪 beat、用替代片段跳过因果。

合成只按 `director_plan.json` 的终版段清单、顺序和版本执行。
禁止扫素材目录自动拼。

写剪辑决策表：
- 每个衔接点的 `上一段 → 下一段`。
- 转场类型、时长、理由。
- 情绪与叙事承接。
- 是否需要文字卡。
- 原声 / 音频如何处理。

转场按 plan 逐切点执行。
硬切、叠化、白闪、擦除、匹配剪辑都可以，但禁止一个参数套全片。
转场只能改善视觉衔接和情绪过渡，不能替代补镜头或补关键信息。

**颜色统一兜底**：即使生成阶段每段都复述了同一份调色板，各段仍可能有轻微色温 / 亮度漂移。合成阶段按 `style_contract.color_palette` 的 LUT 氛围对全片过一遍统一调色，把段间残余漂色收敛到同一基准；这是兜底，不是替代——生成阶段的调色板复述该做的还得做，别指望后期救回大幅偏色。

**中间接缝优先在生成阶段设计，合成阶段主用硬切拼接**：
段与段之间的消融、叠化、匹配转场，最稳的做法是在 Seedance 生成时就把上一段的段尾帧和下一段的段初帧设计成咬合（同构图、同色调、同运动方向、可承接的收束 / 起势），拼接时直接硬切，接缝自然由画面本身完成。
- 主拼接用 `video_concat`（视频硬切 + 音频切点短淡化 + 统一重编码），它不改总时长、不吃段、返回真实累加时长，可靠。
- **禁止对中间段套用 `video_crossfade` / 合成层叠化去"补"接缝**：它按 `offset` 把两段在时间轴上叠起来，一旦 `offset` 没按前段真实时长逐点传（用了默认值），就会把前段大部分内容叠掉丢弃，生成一个容器时长虚标、实际只剩十几秒的坏片。
- `video_crossfade` / 淡入淡出只留给片尾收束（如整片淡出到黑），那里不依赖 `offset` 对前段内容的精度，才安全。
- 合成后必须用 `-c copy -f null -` 复核成片真实解码时长，和 `director_plan` 的累计时长对齐；容器标称时长可能虚高，只信真实解码时长。

**音频过渡按剪辑决策表逐切点执行，不套默认值**：
每段是独立生成的，各自内嵌的 BGM 到段尾会戛然而止，拼接工具一个默认 `crossfade`（如 0.3 秒）盖不住。
所以合成前先看 plan 的 BGM 架构：
- 统一配乐轨：各段本就不内嵌 BGM，合成时把整轨音乐铺到成片上，段间画面转场不打断音乐。
- 分段自带 BGM：按每个衔接点的 `audio_handling` 执行真实的音频过渡（声音桥、渐弱、留白蓄力），
  过渡时长按该切点情绪定，音乐忽大忽小 / 段尾硬停的地方要加长音频交叉或补一层贯穿环境声，不是统一 0.3 秒了事。

合成阶段不后期烧录整段对白字幕 / CTA。
片名、人名牌、章节、时间地点卡应在视频生成阶段画进画面。

### 9. 音频和 BGM
BGM 是导演决策，不默认强加。
每段开拍前先判断：
- 只要人物对白、旁白、环境声。
- 还是需要配乐参与叙事。
- 是否明确静音。

需要配乐就写清音乐情绪、强弱、节奏和对白 / 旁白避让。
不需要就明确禁用。

**要 BGM 就先定架构**：成片是分段生成再拼接的，每段内嵌的音乐互相接不上。
编导要在 `audio_plan` 里二选一并写清落地方式：
- 统一配乐轨：各段生成时不内嵌 BGM，另出一条整轨音乐在合成阶段铺上（连贯情绪片推荐）。
- 分段自带 BGM：每段音乐要有头有尾、乐器调性连续、段尾不硬停，衔接点按 `audio_handling` 过渡。
"全片一条曲线"只写在 plan 里、却让每段各自现编完整曲子，就会出现段间忽大忽小、突然断掉。

没有角色对白的剧情片、宣传片、设定展示片、概念短片，除非用户明确要求纯视觉 / 无声，否则要设计旁白或画外音承担必要叙事。

音频计划是生成前和合成前的制作安排。
它不作为当前 VLM 审查的通过 / 不通过条件。

### 10. 成片终审和交付
合成后做成片终审：
- 风格是否统一。
- 角色和道具是否漂移。
- 故事主线能否盲看复述。
- 段间因果是否断裂。
- 画面转场和接缝是否自然。
- 关键画面文字和文字路标是否清楚。
- 关键物品流动是否连续。
- 画幅、节奏、交付平台是否适配。

终审必须给完整通过 / 不通过结论。
视频太大或输出截断，就拆小审，再汇总。

---

## 三、返工和版本

审查不通过时，先判断根因，不空手重抽。

回流规则：
- 剧情、主线、承接、镜头动机错，回编导。
- 角色、场景、道具、关键特写参考错或缺，回素材。
- 生成要求漏逐字台词、文字、光影、空间方向、参考职责，回提示编译环节。
- 片段本身对但剪辑顺序、切点、转场错，回合成。

版本规则：
- 个别局部瑕疵但整体方向对，在上一版基础上定向修。
- 整体跑偏才换思路重做。
- 每次重做用新版本名：`_v2`、`_v3`。
- 绝不覆盖上一版。
- 最终采用哪版，写回 `director_plan.json` 对应段的终版记录。

整片风格是全局属性。
中途要换风格，不能只改后半段。
正确做法：
把新风格当全新全片基准，按顺序统一重做：
`style_contract` → 风格锚点图 → 角色卡身份母版 → 场景 / 道具 → 故事板 → 视频。

---

## 四、放行自检
- 剧本正文已经落盘，不只存在于对话里。
- `director_plan.json` 是唯一事实源，`manifest.json` 更新了阶段状态。
- 主线和前三秒钩子已在编导方案中成立。
- 角色、场景、道具、关键特写、风格锚点、blocking 图、场景运动轨迹图、路径图按 plan 补齐。
- 风格契约已写入 plan，并被角色 / 场景 / 道具 / 视频 prompt 继承。
- 每段 3×3 九宫格故事板已过审，并作为剧情流动参考参与。
- 每段视频在执行计划中有段内时间轴粗设计，并在生成要求中细化为可执行变化。
- 每次生成前都有可回查的调用前自检通过结论；逐字台词、画面文字、参考职责、承接状态、生成设置一致性都已过审。
- 链式延展段已使用上一段过审终版作为真实参考依据，并在生成要求里明确"基于参考继续往后扩写"。
- 图、故事板、视频段、滑窗拼接、成片终审都已审。
- 合成按 `director_plan.json` 的终版段清单执行，不扫目录。
- 音频作为制作计划处理，不作为 VLM 放行条件。
- 返工另存版本，回根因环节修，修完逐条复审。

---

## 反例库（流程事故，别重犯）
- **直接从剧本跳视频**：文学剧本写得很好，但没有编导镜头节拍、资产清单和承接状态，生成出来就是人在场景里做动作。正解：先产出可执行 `director_plan`。
- **扫目录合成**：目录里混着 v1、v2、试验片段和废弃文件，自动扫描后乱序混料。正解：只按 `director_plan.json` 的终版段清单合成。
- **后面场景没参考包**：前几个场景有多视角，后面靠文字硬生，空间越来越漂。正解：素材阶段做 scene coverage check。
- **声明了却只出一张单机位图**：plan 每个场景都写了要 2-3 个视角、要登记色卡，素材阶段却每个场景只生成一张单机位图、一张色卡都没做，把颜色和视角全押在后续 prompt 的一句文字上。结果色彩没有视觉锚点各段乱漂、跨镜头空间关系失守、穿帮明显变多。正解：声明即承诺，素材收口逐条点数——承诺几个视角就出几个，承诺色卡就真生成一张登记进资产，凑不齐不进下一环。
- **齐刷刷盖章放行**：制作跑到收尾，把 entity / asset / animate / compose / review 几个阶段状态一次性全标成 done，终审还没等审查实际看完就写"全部通过"，实际接缝穿帮和漂色根本没被审到。正解：每个阶段各自等真实产物过审再落状态，终审结论以实际审查记录为准，不提前盖章。
- **画了不用**：故事板过审了，但视频生成没有拿它当剧情流动参考，成片事件顺序和情绪推进全漂。正解：故事板必须真实参与生成；画面比例、站位和精确路线另看 plan / blocking / route map。
- **参考全塞**：把角色多视角、场景、道具、风格图全丢进每段，模型误读成多人或风格冲突。正解：每镜只用必要参考，并写清职责。
- **单段都过，拼起来断**：单段看着没问题，1+2 接缝人物距离、背景、道具全跳。正解：必须滑窗审每个相邻拼接。
- **链式段没用上一段视频**：plan 已经把长镜头拆成链式延展，生成第二段时却只写"承接上一段"和首尾帧，不传上一段视频参考，成片人物姿态、光线和动作速度重置。正解：链式延展必须串行等待上一段过审终版，把上一段视频作为参考视频传入，并在 prompt 写"基于参考视频继续往后扩写"。
- **crossfade 吃掉前段**：最后一步图省事用 `video_crossfade` 把 47 秒的 mid_body 叠到 12 秒的片尾段，没传 `offset`，默认 4.0 让 xfade 输出总时长只有 4+12=16 秒，前段 43 秒被丢弃，成片容器还虚标 58 秒，肉眼看就是"后面内容没了"。正解：中间接缝在生成层设计咬合帧、合成用 `video_concat` 硬切，crossfade 只留片尾；合成后用 `-c copy -f null -` 复核真实解码时长。
- **覆盖旧版**：新抽一次把原来正确的构图和身份也丢了，还覆盖了旧文件。正解：另存新版本，保留可回退版本。

