# 口播模块化后期规范

本文件是后期包装的**执行规范**。先完成 A-roll 粗剪、④.5 通读和字幕文本审查，再按本规范
生成 `output/postproduction_plan.json`。不得先看时间轴空不空再凑效果；所有条件模块都必须
绑定触发台词、结束台词、理由和证据等级。

## 目录

1. 总体目标
2. 信息层级与画面安全区
3. 模块架构
4. 基础模块
5. 结构模块
6. 语义强调模块
7. 证据与情境模块
8. 音频模块
9. 视频类型预设
10. 模块选择算法
11. 计划文件格式
12. 执行顺序
13. QA 与验收
14. 当前实现边界

## 1. 总体目标

通用口播后期服务五件事，按优先级排序：

1. **保证表达完整、自然、可信**；
2. **让观众随时知道视频讲什么、讲到哪里**；
3. **降低字幕阅读负担**；
4. **只在结论、结构和语义转折处增强记忆**；
5. **用 B-roll、图形和音效补充信息，不制造无意义热闹**。

总原则：

- 没有语义理由的效果不加；
- 一句话通常只有一个主视觉重点；
- 人声永远是最高音频层；
- 脸、眼神、关键手势永远是最高画面保护对象；
- 普通字幕负责阅读，花字负责结论，二者不能在同一区域重复同一句；
- 不确定的规则标为 `candidate`，不得当作默认规律批量应用。

## 2. 信息层级与画面安全区

### 2.1 信息层级

从稳定到瞬时分为五层：

| 层级 | 作用 | 典型组件 |
|---|---|---|
| L0 画面底层 | 记录人物和环境 | 原始画面、基础调色、基础景别 |
| L1 导航层 | 告诉观众“讲什么、讲到哪” | 顶部主题、章节导航 |
| L2 身份层 | 告诉观众“谁在说” | 用户提供的姓名与身份 |
| L3 阅读层 | 让观众读懂当前口播 | 普通跟读字幕、关键词着色 |
| L4 强调层 | 让观众记住结构或结论 | 章节卡、累积花字、观点花字、语义图形 |

同一时刻通常只允许一个 L4 主重点。L4 出现时，L3 在冲突区域让位。

### 2.2 1080×1920 基准安全区

所有数值按比例缩放到其他 9:16 分辨率：

- 顶部主题区：画面高度约 `6%–20%`；
- 人脸保护区：由抽帧或人脸检测确定，任何文字不得遮挡眼睛、鼻口；
- 人物头衔区：人物肩侧负空间，高度通常约 `48%–66%`；
- 普通字幕区：高度通常约 `61%–78%`，默认底距约画面高 `25%`；
- 花字区：高度约 `38%–72%`，与普通字幕互斥；
- 抖音右侧交互保护：右侧约 `10%` 尽量不放重要文字；
- 底部说明/来源：底部约 `82%–88%`，避开平台说明和进度条。

版式优先级：

`脸/手势 > 顶部主题 > 当前花字 > 普通字幕 > 人物头衔 > 来源标注`

人物头衔和来源标注可移动；脸、主题和当前结论不可被牺牲。

## 3. 模块架构

后期由四组模块组合：

### 3.1 基础常驻模块

每条片默认都要做：

- `topic`：顶部主题；
- `captions`：普通字幕；
- `voice`：人声优先；
- `identity`：人物身份，允许条件关闭或分段显示。

### 3.2 结构模块

只有视频结构需要时才用：

- `hook-intro`：开场主题入场；
- `chapter-nav`：长视频章节导航；
- `chapter-card`：准则、误区1、误区2等同级章节；
- `shot-state`：基础/强调两档景别；
- `cta`：行动号召。

### 3.3 语义与证据模块

只有明确语义事件触发：

- `cumulative-flower`：并列项逐条累积；
- `claim-flower`：一句核心观点；
- `keyword-emphasis`：普通字幕内少量着色；
- `semantic-icon`：问号、金币、警示等同义图形；
- `broll-evidence`：商品、截图、数据或第三方素材；
- `story-portal`：进入他人故事/回忆的短入口；
- `quote-simulation`：直接引语或角色模拟，当前仅候选。

### 3.4 音频模块

- `voice-cleanup`：必要时降噪、响度与音色整理；
- `bgm-bed`：通过风格适配门槛才启用；
- `sfx-cue`：与视觉事件同拍的短提示音。

## 4. 基础模块

### M01 `topic` 顶部主题

**职责**：全片导航，不跟随口播闪动。

**文案**：

- 提炼成 6–14 个汉字；
- 最多两行；
- 不是逐字抄第一句；
- 问题型、结论型均可，但必须覆盖整条片主题。

**两种稳定风格**：

1. `topic-serif-yellow`
   - 单行或两行金黄色粗宋/宋楷感标题；
   - 右倾约 `7°–9°`；
   - 深色短投影；
   - 适合户外、明亮、正面口播。
2. `topic-two-tone`
   - 第一行白色、第二行黄色；
   - 顶部居中；
   - 同样使用粗宋/宋楷感标题和深色投影；
   - 适合问题型两行主题，如“怎样把目标／变成行动计划”。

**1080 宽基准**：

- 字号约 `92–105px`，按文本宽度缩小；
- 总宽不超过画面 `88%`；
- 顶部起点约画面高 `7%–15%`；
- 阴影偏移约 `6–9px`。

**时间**：默认全片；如果有开场大标题入场，常驻态可在入场完成后开始。

**禁止**：

- 与章节卡使用完全相同的样式；
- 因为背景复杂就随意更换字体；
- 超过两行；
- 把 CTA 写进主题标题。

### M02 `identity` 人物头衔

**职责**：建立身份，不承担视频主题。

**内容约束**：

- 姓名和身份只能来自用户在当前任务中明确提供的信息；
- 未提供时关闭人物头衔，不得使用模板占位文字；
- 学历、职位、组织关系、家庭状态和其他背书必须逐项经用户确认。

**视觉**：

- 姓名青绿色，建议 `#39D8D0`；
- 身份白色；
- 与普通字幕使用同一正文中文字体；
- 1080 宽：姓名约 `46–50px`，身份约 `39–43px`；
- 字距收紧，行距紧凑；
- 使用短距离黑色投影；
- 放人物肩侧负空间，默认自动判断左右。

**显示策略**：

- 开场建立一次；
- B-roll、花字、故事状态或明显景别重置后，回到完整 A-roll 时可再次出现；
- 两次重新出现之间一般至少相隔 `12–15s`；
- 单次显示通常 `4–20s`，取决于画面空间；
- 与中部大花字冲突时优先隐藏头衔；
- 不要求全片常驻，也不要求只在前 5 秒出现。

计划使用 `spans:[[start,end], ...]` 表示分段显示。

### M03 `captions` 普通字幕

**职责**：承担阅读，不承担结构导航。

**默认视觉**：

- Skill 内的开源中文字体；
- 白字＋柔和黑色投影；
- 自然字重；
- 字距约 `-3%`；
- 1080 宽默认字号约 `69px`；
- 中下部居中；
- 一行优先，必要时两行。

**分页规则**：

- 每页约 `4–8` 个汉字为软目标；
- 语义完整优先，可适度超过；
- 数字＋单位、百分号、英文词组不得拆开；
- 不在助动词、介词、数量词、否定词或强粘连短语中间断开；
- 相邻字幕不得重叠；
- 每页只表达一个立即可读的意群。

**关键词着色**：

- 每个字幕页通常不超过 1 个重点；
- 金黄用于题眼、数据、品牌、卖点；
- 红色只用于否定、紧迫或强设问；
- 已经使用花字时，不再在同一句字幕里重复着色。

### M04 `voice` 人声层

**职责**：所有音频设计以听清口播为前提。

- 默认保持原速 `1.0`；
- 不用全片倍速弥补内容冗长，应从文字层剪；
- 底噪明显时先做降噪，不用 BGM 掩盖；
- 音频切口保留完整字尾；
- 任何 BGM/SFX 不得盖住品牌名、数字、否定词和句首辅音；
- 交付前必须戴耳机检查全部删除接口。

## 5. 结构模块

### M10 `hook-intro` 开场钩子入场

**触发**：开场存在明确问题、反常识观点或一句能独立成立的强结论。

**推荐组合**：

- 主题标题先以大字号置于画面中部；
- `0.3–0.7s` 内缩小/切换到顶部常驻态；
- 画面进入强调景别；
- 可短时加暗角；
- 人物头衔在 `0.1–0.5s` 后进入；
- 如钩子含明确语义图形，可在钩子尾部出现。

**退出**：钩子说完整或正文第一句开始，通常 `2–4s`。

**不触发**：开场只是普通铺垫、问候或不完整句。

### M11 `shot-state` 两档景别

**状态**：

- `base`：解释、举例、长段铺陈；
- `close`：设问、结论、评价、强转折、关键建议。

**倍率**：`close` 通常为 `base` 的 `1.15–1.25×`；特殊钩子最高约 `1.30×`。

**规则**：

- 在完整语义边界直接切换；
- 同一重点内保持状态，不做频繁呼吸缩放；
- 新章节常回 `base`，结论进入 `close`；
- 跳剪姿态明显时可用景别切换掩饰；
- 不按固定秒数切换。

### M12 `chapter-nav` 章节导航

**触发**：2–4 分钟视频具有三个或更多明确同级章节。

**用途**：持续告诉观众当前讲到哪个章节。

**规则**：

- 主题标题下方显示短章节名；
- 当前章节用亮色，其他章节降明度；
- 全部章节必须同一字体、字号、卡片和位置；
- 30–60 秒单线视频默认不使用。

### M13 `chapter-card` 章节卡

**触发**：准则、误区1、误区2、误区3、步骤一等同级结构节点。

**规则**：

- 同级章节必须共用一套视觉语法；
- 文案控制在 `2–8` 个字；
- 在章节核心名称说出时进入；
- 显示约 `1.2–2.5s`；
- 花字区隐藏普通字幕；
- 不把章节内的普通重点也画成同样的章节卡。

### M14 `cta` 行动号召

**触发**：直播间、评论区、私信、课程了解、预约等明确行动。

**规则**：

- CTA 信息清楚优先，不使用复杂滤镜；
- 可切近或保持稳定近景；
- 使用一个轻提示音即可；
- 同一 CTA 不同时叠加强 hit、闪烁、多个图标；
- 必须通过广告法与平台合规检查。

## 6. 语义强调模块

### M20 `cumulative-flower` 累积式并列花字

**触发**：口播明确列出 2–4 个并列项，且每项都支撑同一个结论。

**合成示例**：

- 先确定目标；
- 再拆分每天的行动；
- 最后按周复盘。

**时间**：

- 每项在说到核心词时进入；
- 前一项不退出，后续逐项累积；
- 全部在并列结构结束时一起退出。

**视觉**：

- 每项单独一行；
- 同一字号、字重和对齐方式；
- 可使用同色或轻微色阶；
- 总行数不超过 4；
- 花字区隐藏普通字幕；
- 第一项可配一个轻提示音，后续使用更轻提示或不加，避免连续“叮”。

### M21 `claim-flower` 观点型花字

**触发**：一句话能被提炼成 1–2 行完整观点，且是当前段落的 payoff。

**合成示例**：

> 先确定目标  
> 再拆成每天的行动

**规则**：

- 第一行先进入，解释推进后第二行可补全；
- 总字数建议不超过 18 个汉字；
- 显示约 `2–5s`；
- 文案可以提炼，但不能改变原意；
- 花字能替代普通字幕时才使用；
- 落在“最高语义相关句”，不能提前覆盖铺垫。

### M22 `keyword-emphasis` 字幕内关键词强调

**触发**：普通句中只有一个短词需要加重，但不足以做花字。

适合：

- 数字与单位；
- 品牌/产品名；
- 一个题眼词；
- 一个否定词或风险词。

不适合：

- 整句变色；
- 连续三页都高亮；
- 花字已经表达同一个重点。

### M23 `semantic-icon` 语义图形

**触发**：语言与图形存在直接、瞬时、无需解释的同义关系。

高置信示例：

- “打问号”→大问号；
- 明确说“钱、收入、价格”且需要视觉提示→金币/货币图形；
- 明确警示→警示符号。

**规则**：

- 图形放人物侧边负空间；
- 通常显示 `0.8–2s`；
- 不遮脸、不遮标题；
- 同一语义图形在同一视频最多重复 1–2 次；
- 只“相关”但不能直接互相解释时不使用；
- 问号、感叹号、警示三角、简化金币等基础图形优先由渲染器用字体、SVG 或矢量路径
  程序化生成，**不要求用户额外提供素材**；
- 只有需要特定插画风、品牌 IP、复杂三维金币或现成动画时，才绑定外部素材；
- 外部素材必须已授权或自行制作。

## 7. 证据与情境模块

### M30 `broll-evidence` 证据型 B-roll

**触发**：

- 明确商品、截图、新闻、数据图；
- 第三方人物或地点；
- 口播中的具体物件和案例；
- 画面能比文字更快说明事实。

**形式**：

- 全屏替换；
- 下半部半透明叠加；
- 画中画；
- 连续多张素材内部硬切。

**规则**：

- 进入点必须与具体名词或证据句对齐；
- 单张通常 `1.5–4s`，整组通常 `4–12s`；
- 保留顶部主题；
- 根据画面决定是否保留人物；
- 第三方素材必须显示 `CR：来源`；
- B-roll 结束回到 A-roll 时，可重新显示人物头衔；
- 不使用只有装饰作用、与内容无关的库存素材。

### M31 `story-portal` 故事/回忆入口

**触发**：从当前观点明确跨入某个具体家长、读者、朋友或过去事件。

**处理**：

- 入口短时切近；
- 画面外围柔和暗角，由渲染器生成椭圆/径向透明蒙版，不需要额外图片素材；
- 可配一个轻提示音；
- 进入稳定叙述后退出暗角，恢复基础画面。

**建议参数**：

- 暗角只作用于画面外围约 `15%–25%`；
- 中心人物脸部亮度尽量保持；
- 黑色蒙版最高不透明度约 `20%–35%`；
- 入场/退出各使用约 `0.12–0.25s` 的短淡化；
- 整个入口状态通常持续 `0.8–2.5s`。

**限制**：

- 暗角只标记入口，不覆盖整个第三人称故事；
- 普通泛指“很多家长”不触发；
- 当前证据仍属于条件规则，不是每个案例都自动加。

### M32 `quote-simulation` 引语/角色模拟

**触发候选**：

- 明确引用别人原话；
- 主讲人用明显不同的语气模仿他人；
- 字幕中可明确标出引语边界。

**候选处理**：

- 默认使用程序化的轻微色温、饱和度或对比变化；
- 可程序化绘制引号、`引用内容`/`角色发言`标签或简洁对话框；
- 必要时对原始人声做短时轻量声线区分。
- 标签必须根据抽帧选择人物肩侧负空间；默认 `label_y≈0.55` 只是退路值，不得遮脸、
  普通字幕或人物头衔。

**素材要求**：

- 默认滤镜、引号、标签、暗角和轻量变声都**不需要用户额外提供素材**；
- 轻量变声直接处理当前视频中的原始人声，可选择轻微升/降调、音色共振峰调整、
  电话感 EQ 或极短空间感；幅度必须小，保持中文可懂度；
- 如果要使用某个真实第三方的声音、做声音克隆或替换成指定人物，则需要合法授权的
  声音样本和用户明确确认；这不属于默认角色模拟；
- 如果要使用固定品牌对话框、手绘贴纸或角色头像，可额外提供一次并沉淀为可复用资产，
  但不是模块运行的前置条件。

**当前限制**：

- 已有样例不足以确定统一滤镜、变声参数和持续时间；
- 默认只标 `candidate`；
- 没有人工确认时，默认只做视觉区分，不自动变声；
- 首次确定一套可接受的视觉/声音参数后，再把它固化为当前用户的自定义预设；不得写回公开 Skill。

## 8. 音频模块

### A01 `voice-cleanup`

- 有底噪先降噪；
- 保持自然口腔音和环境感，不能处理成水下声；
- 统一响度但避免把每个换气都推到前景；
- 清理爆点、切口和被截字尾；
- 降噪与 BGM 是两件事，不能互相替代。

### A02 `bgm-bed`

启用前必须写清：

- 视频情绪；
- 音乐情绪；
- 为什么同向；
- 音乐文件；
- 起止、淡入淡出和音量。

预设：

- `serious-commentary`：默认关闭；
- `structured-knowledge`：默认关闭或使用极克制、无明显欢快律动的底乐；
- `light-leadgen`：可使用轻快/温暖底乐；
- `story-quote`：可使用温暖、轻悬疑或克制氛围乐，取决于故事。

默认音量：

- 人声 `1.0`；
- BGM 线性音量从 `0.04–0.06` 起；
- 开头淡入 `0.6–1.0s`；
- 结尾淡出 `1.0–1.5s`。

找不到明确适配音乐时，宁可不加。

### A03 `sfx-cue`

**用途类别**：

- `suspense-light`：问题/悬疑入口；
- `ding-light`：编号、数据、结论；
- `whoosh-short`：章节/画面复位；
- `hit-soft`：强否定、强态度；
- `cta-light`：行动提醒；
- `draw`：圈画动画。

**规则**：

- 一个语义事件最多一个主音效；
- 与花字/图形入场同拍，不机械对齐句首；
- 30–60 秒单线视频约 `3–5` 个；
- 2–4 分钟视频按章节分配，每章通常 `1–3` 个；
- 连续两个音效间隔小于约 `0.6s` 时合并或删弱项；
- 具体文件只有高置信波形匹配或人工确认后才能写死。

## 9. 视频类型预设

### P01 `serious-commentary` 严肃观点

适合：职业选择、学习方法、风险提醒和价值观讨论。

默认组合：

- `topic-two-tone` 或克制的 `topic-serif-yellow`；
- 分段人物头衔；
- 普通字幕；
- 两档景别；
- 少量 `claim-flower`、`cumulative-flower`、`semantic-icon`；
- 有证据时使用 B-roll；
- BGM 默认关闭；
- 音效低密度。

预算：主要视觉事件约 `2–6 个/分钟`，不要求凑满。

### P02 `structured-knowledge` 结构化知识

适合：一个准则、三大误区、三条建议、选校步骤。

默认组合：

- 顶部主题；
- `chapter-nav`；
- 同一套 `chapter-card`；
- 章节内用 `claim-flower` 或 `keyword-emphasis`；
- 每章基础景别开场、结论切近；
- BGM 默认关闭或极克制。

预算：每章 `2–4` 个主要事件，章节卡另计。

### P03 `light-leadgen` 轻引流/带货

适合：导直播间、课程体验、产品介绍。

默认组合：

- 快速 `hook-intro`；
- 顶部主题；
- 卖点花字；
- 产品/页面 B-roll；
- 品牌名关键词强调；
- 清楚 CTA；
- 音乐风格匹配时可加低音量 BGM；
- 30–60 秒约 `4–8` 个主要事件。

必须额外检查广告法和承诺用语。

### P04 `story-quote` 故事/引用

适合：用户案例、朋友、家庭成员或第三方经历。

默认组合：

- 顶部主题；
- 开场身份；
- `story-portal` 只标入口；
- 具体人物/物件用 B-roll；
- 直接引语可列 `quote-simulation` 候选；
- 结论回到基础画面并用 `claim-flower`；
- BGM 根据故事情绪裁决。

## 10. 模块选择算法

必须按以下顺序做：

1. 通读最终逐字稿，写一句主题；
2. 列结构树：钩子、章节、例子、结论、CTA；
3. 选一个主预设；不确定时选 `custom`，不要混合多个预设名称；
4. 放入四个基础模块；
5. 标注真正的结构节点；
6. 标注并列项、核心观点、具体证据、故事入口和 CTA；
7. 每个标注只选择一个主模块；
8. 映射最终成片时间；
9. 做区域碰撞检查；
10. 再裁决 BGM 和 SFX；
11. 运行计划校验；
12. 预览后人工删掉显得多余的效果。

每个条件事件要通过四问：

1. 这句的信息功能是什么？
2. 不加效果，观众会不会更难理解或记住？
3. 这个模块能否直接解释这句，而不是只“沾边”？
4. 它是否与已有标题、字幕、人物头衔或另一个花字抢空间？

第 2、3 问答不清楚时不加。

## 11. 计划文件格式

使用 `assets/postproduction_plan.template.json` 创建
`output/postproduction_plan.json`。

核心结构：

```json
{
  "version": "1.0",
  "profile": "serious-commentary",
  "duration": 201.015,
  "topic_summary": "如何建立可执行的学习计划",
  "modules": {
    "foundation": {
      "topic": {
        "style": "topic-two-tone",
        "lines": ["怎样把目标", "变成行动计划"],
        "mode": "persistent"
      },
      "identity": {
        "name": "主讲人姓名",
        "lines": ["身份标签一", "身份标签二"],
        "side": "right",
        "spans": [[0.13, 3.83], [14.5, 30.8]]
      },
      "captions": {
        "style": "speaker-default",
        "max_chars_soft": 8,
        "semantic_paging": true
      },
      "voice": {
        "priority": "highest",
        "global_speed": 1.0
      }
    },
    "audio": {
      "bgm": {"enabled": false},
      "sfx_budget": 8
    }
  },
  "events": [
    {
      "id": "action-list",
      "module": "cumulative-flower",
      "trigger_text": "先确定目标",
      "end_text": "每周复盘",
      "start": 53.9,
      "end": 60.6,
      "confidence": "default",
      "reason": "三项并列后果需要逐层建立",
      "text": {
        "items": [
          {"content": "先确定目标", "start": 53.9},
          {"content": "拆成每天的行动", "start": 55.2},
          {"content": "每周复盘结果", "start": 57.833}
        ]
      },
      "visual": {"shot": "close", "region": "caption-zone"},
      "caption_policy": "hide"
    }
  ]
}
```

字段要求：

- `trigger_text`、`end_text`：语义边界；
- `start`、`end`：最终成片时间，尚未映射时可暂时省略；
- `confidence`：`default`、`conditional` 或 `candidate`；
- `reason`：为什么偏偏在这里使用；
- `caption_policy`：花字必须为 `hide`；
- `media.source_credit`：第三方 B-roll 必填；
- `visual.region`：用于碰撞检查；
- `audio.resource_name`：只有确认具体音效时填写，否则写 `category`。

校验：

```bash
<PYTHON> <SKILL_DIR>/scripts/validate_postproduction_plan.py \
  output/postproduction_plan.json
```

校验通过后编译：

```bash
<PYTHON> <SKILL_DIR>/scripts/compile_postproduction_plan.py \
  output/postproduction_plan.json --out output/
```

编译器生成：

- `brand_plan.json`：顶部主题和人物头衔；
- `effect_plan.json`：章节卡、观点花字、累积花字；
- `emphasis_plan.json`：普通字幕关键词；
- `visual_plan.json`：故事入口暗角、引语/角色模拟滤镜；
- `audio_plan.json`：已绑定具体文件的 BGM/SFX；
- `postproduction_manifest.json`：已编译事件与尚未支持的事件。

`renderer_pending` 中的事件没有被执行，交付前必须补素材/补渲染器或明确移除。

渲染故事入口暗角和引语滤镜：

```bash
<PYTHON> <SKILL_DIR>/scripts/apply_visual_filters.py \
  output/preview.mp4 output/visual_plan.json --out output/
```

产出 `preview_视觉滤镜.mp4`。必须先渲染滤镜，再以该文件为输入叠顶部主题、人物头衔、
花字和普通字幕，避免滤镜把文字一起压暗或改色。

## 12. 执行顺序

1. 完成 A-roll 和逐字稿复查；
2. 完成字幕纠错与语义分页；
3. 生成 `postproduction_plan.json` 并校验；
4. 应用画面底层：景别、裁切、暗角、基础调色；
5. 放 B-roll；
6. 放顶部主题、章节导航和人物头衔；
7. 放章节卡、花字和语义图形；
8. 生成普通字幕，并在花字区间让位；
9. 做人声处理；
10. 最后混 BGM 和 SFX；
11. 进行视觉、字幕、听觉三轮 QA；
12. 保留无音乐版和最终版，不覆盖前一版。

不得先烧字幕再加暗角/调色，否则文字也会被压暗。

## 13. QA 与验收

### 13.1 内容 QA

- 所有效果是否绑定完整、通顺的最终台词？
- 花字有没有改变原意？
- 结构卡是否真的属于同级结构？
- B-roll 是否证明当前内容，而不是纯装饰？

### 13.2 视觉 QA

- 顶部主题是否全片可读？
- 人脸和关键手势是否被遮挡？
- 人物头衔是否放在负空间？
- 普通字幕是否有奇怪断句？
- 花字出现时普通字幕是否让位？
- 同一时刻是否存在两个 L4 主重点？
- 字体、颜色、阴影和间距是否保持同一套系统？
- B-roll 是否有来源？

### 13.3 时间 QA

- 景别切换是否落在语义边界？
- 花字是否落在最高相关句，而不是提前？
- 累积花字是否逐项进入、共同退出？
- 语义图形是否与关键词同拍？
- 花字退出后字幕是否从完整页恢复？

### 13.4 音频 QA

- 每个删除接口的字尾是否完整？
- 人声是否始终最清楚？
- BGM 情绪是否与话题同向？
- 音效是否盖住句首、数字或品牌？
- 音效是否过密或连续重复同类声音？
- 是否试图用 BGM 盖住底噪？

### 13.5 交付 QA

- 分辨率、画幅、帧率与任务要求一致；
- 原片未被覆盖；
- 无字幕、字幕包装、音效版按需分别保留；
- `postproduction_plan.json`、字幕审查和剪辑报告一并落盘；
- 所有 `candidate` 效果在交付前得到人工确认或被移除。

## 14. 当前实现边界

现有脚本已经支持：

- 普通字幕与语义分页；
- 字幕关键词着色；
- 顶部静态单色/两色主题；
- 人物头衔多区间复现；
- 章节卡与单项观点花字；
- 累积式多行花字（由总计划编译成多个共享结束时间的花字层）；
- 花字期间隐藏普通字幕；
- 故事入口暗角的渐入、稳定和渐出；
- 引语/角色模拟的 `neutral`、`cool`、`warm`、`memory` 四种克制滤镜；
- 引语状态的程序化“引用内容/角色发言”等标签；
- 两档静态推近；
- BGM/SFX 计划混音；
- 参考视频抽帧、OCR 辅助和音效候选匹配。

优先继续补齐：

- 问号、金币、警示等程序化语义图形；
- 章节导航状态更新；
- 经人工确认后，再增加可选的轻量变声预设。

当前明确不作为自动化优先项：

- 标题从大到小的连续入场动画：没有动画也不影响成片，保留静态顶部主题即可；
- B-roll 自动选材与布局：暂时不纳入自动渲染；用户明确提供素材并要求使用时再人工规划。

在渲染器未支持前，计划中写：

- `status:"procedural"`：不需要外部素材，但渲染器尚待实现；
- `status:"manual"`：当前按人工流程处理；
- `status:"requires-asset"`：确实必须绑定外部素材；
- `status:"renderer-pending"`：规则已定但实现尚未完成。

不得把上述状态假装成已经执行。
