---
name: ai-video-studio
version: 1.2.0
description: FableForge 通用视频生成流水线 SOP。支持两种生产模式（图片流、视频 B-roll 流）和三种体裁（叙事寓言、商业分析、产品宣发）。包含从概念生成、剧本创作、TTS 配音、素材采集、到 HyperFrames 视频渲染的完整工业化 SOP，以及视觉风格指南与技术陷阱手册。v1.2.0 新增 VAD 物理声学平铺匹配、语速自动健康度审计（防脱节门禁）、大分镜 GSAP 变量解耦与生命周期显隐控制。
---

# 🔨 FableForge · 视频生成工业流水线 AI Agent SOP

本 Skill 是一份**命令级可执行 SOP**，而非经验教训集。每个 Stage 均包含**具体执行命令**和**退出验收标准**，严禁跳步或在退出标准未满足时进入下一阶段。

### ⛔ 全局禁令（违反任意一条即判定为生产事故）

1. **严禁复用旧集素材**：每一集的 `assets/` 目录下的所有文件（视频、音频、图片、BGM）必须为本次任务全新生成或下载。严禁从其他 `episodes/` 目录复制任何媒体文件。唯一例外是 `narration.wav`（由 TTS 脚本生成）和模板代码结构（非媒体文件）。
2. **严禁跳过退出标准**：每个 Stage 的退出标准中的所有检查项必须逐一验证并标记为通过，才能进入下一个 Stage。
3. **严禁无字幕渲染**：无论模式 A 还是模式 B，最终视频必须包含与配音同步的逐字滚动字幕。
4. **严禁无封面/封底渲染**：所有视频必须包含封面标题幕（`#scene_cover`）和封底互动幕（`#scene_end`）。
5. **严禁复用旧集 BGM**：每集的背景音乐必须根据本集剧本的情绪主题全新搜索并下载，不得复用历史集的 `bgm.mp3`。

---

## 0. 视频规格与体裁定义（内容优先定档制）

**核心原则：内容的可理解性永远优先于时长限制。**

视频时长不是预设的固定值，而是由内容倒推得出的。错误的做法是「先定 60 秒，然后把内容往里塞」；正确的做法是「先确认内容讲完需要多少字，再据此选档」。

### 0.0 视频体裁系统 (Genre)

本流水线支持三种核心体裁。在构思内容前，**必须首先确定体裁**：

| 体裁 (Genre) | 特征与核心要求 | 适用场景 | 常用视觉模式 |
|-------------|-----------|---------|---------|
| **Genre X: 叙事/隐喻 (Narrative)** | 有角色、有冲突。旁白重感受轻动作，追求悬念与结局升华。 | 寓言故事、历史重现、管理隐喻 | + 模式 A (图片) |
| **Genre Y: 分析/科普 (Analytical)** | 论点驱动、逻辑递进。追求清晰的结构拆解和痛点直击。 | 商业分析、职场洞察、技术科普 | + 模式 B (B-roll) |
| **Genre Z: 宣发/展示 (Promotional)**| 产品中心、利益点明确。强节奏感与转化引导 (CTA)。 | 产品宣发、网站转视频、功能展示 | 混合模式 |

### 0.1 三档体系

| 档位 | 适用场景 | 旁白总字数 | 预估时长 | 分镜数 |
|------|---------|-----------|---------|-------|
| S · 短片 | 单一概念解释、痛点直击、高密度短平快 | 150～450 字 | 45～120 秒 | 1+5~12+1 |
| M · 标准 | 完整叙事、多维度拆解、深度论证 | 450～900 字 | 120～270 秒 | 1+12~20+1 |
| L · 长篇 | 复杂案例剖析、连续剧集 | 900～1500 字 | 270～420 秒 | 1+20~30+1 |

> 超过 1500 字的内容必须拆成上下集（每集独立成片，各自包含封面和结尾）。

### 0.2 定档公式

```
旁白总字数 = 原始故事中【不可删减要素】的合计字数（见 0.3）
预估时长(秒) = 旁白总字数 ÷ 3.5（中文语速）
根据预估时长选择对应档位
```

### 0.3 不可删减要素（内容完整性红线）

不同体裁有不同的不可删减要素。如果被删除，观众将无法理解视频的核心价值。**剧本转化阶段（Stage 1.2）严禁删除这些要素：**

| 体裁 (Genre) | 核心不可删减要素 | 删除后果 |
|-------------|----------------|----------|
| **Narrative (叙事类)** | 因果链、角色动机、关键对话、认知翻转事件、结局因果闭环 | 观众不知道“为什么”，悬念消失，结论像硬塞的 |
| **Analytical (分析类)**| 痛点现象描述、核心矛盾拆解、数据对比/逻辑支撑、金句结论 | 视频变成空洞的说教，缺乏说服力 |
| **Promotional(宣发类)**| 目标受众痛点、核心利益点 (Benefit)、差异化价值、明确的 CTA | 看完后不知道自己能得到什么，无法转化 |

**可以精简的要素：**
- 重复的环境描写或冗长的数据罗列（保留首次，后续可省略）
- 纯装饰性的形容词堆叠
- 不影响主线的次要信息
- 已被画面传达的信息（如「山很高」——画面已经表达了）

### 0.4 通用规格（所有档位共享）

| 规格项 | 标准值 | 说明 |
|--------|--------|------|
| 每幕旁白字数 | 中文 30～80 字 / 英文 20～50 词 | 中文约 3.5 字/秒，英文约 2.5 词/秒 |
| 每幕预估时长 | 5 ～ 15 秒 | 最终以音频实测为准 |
| 分镜编号格式 | `scene_cover`, `scene1`~`scene{N}`, `scene_end` | 与 `assets/` 下的图片名严格一一对应 |
| 旁白与分镜对应 | 1 幕 == 1 张图 == 1 段旁白 | 封面通常对应标题旁白，结尾对应金句旁白 |

---

## 0.5 质量门禁（三重内容验收）

视频质量的上限由三个核心因素决定。**每一重门禁未通过，不得进入下一阶段。**

### 门禁一：概念与大纲验收（概念生成后、停机确认前执行）

AI 容易生成"结构正确但洞察平庸"的内容。在向用户展示前，必须根据体裁完成自检：

**强制自检（全部通过方可提交用户确认）：**
- [ ] **反常识测试 (通用)**：这个洞察/角度是"大家都知道"还是"大家都经历但从没被命名"的？前者没传播价值，重写。
- [ ] **Genre X (叙事) 专属**：结局是否让人感到轻微不适或醍醐灌顶？隐喻是否太直白（能在前10秒猜到结局）？
- [ ] **Genre Y (分析) 专属**：逻辑链条是否严密？是否提出了具有实操性的认知升华？
- [ ] **现实锚定测试 (通用)**：结尾的解释/结论，是否映射到了用户**今天就可能遭遇**的具体场景？

---

### 门禁二：脚本节奏验收（剧本转化后执行）

脚本是情绪与逻辑的乐谱。全片节奏必须有起伏，禁止平铺直叙。

**体裁节奏铁律：**

- **Genre X (叙事类) — 情绪驱动**：
  - **写感受，不写动作**。旁白描述情绪状态，而不是画面动作（❌ `"十只狼排成一列"` → ✅ `"山谷里没有声音，只有风"`）。
  - **采用 1-4 情绪档位系统**（1舒缓/2蓄力/3爆发/4留白），并在剧本中标注。
- **Genre Y (分析类) — 逻辑驱动**：
  - **结构清晰**：必须遵循“现象引入 → 核心矛盾 → 数据/逻辑支撑 → 升华结论”的节奏。
  - **金句前置或垫后**：关键论点必须短小精悍。
- **所有体裁通用**：
  - **结论幕字数减半**：最后一幕旁白不超过 20 字。越重要的道理，越要用更少的字。
  - **剧本格式补充档位字段**：每幕必须标注 `- **情绪/节奏档位**：{X}`，指导配音语气与画面。
  - **剔除字幕语气省略号（黄金审美红线）**：严禁在生成的 HTML 字幕、文本及海报中包含任何由于配音语气停顿而产生的 `……`、`...` 或是拖泥带水的标点冗余。配音的停顿必须纯粹通过声音的节奏（如 TTS 音频）去表现，而屏幕上的视觉文字与金句必须保持绝对干净利索、斩钉截铁，字字铿锵有力。

---

### 门禁三：图片质量验收（图片生成后、进入 Stage 2 前执行）

**构图与画幅规范（强制）：**
- **画幅固定**：必须生成 **9:16 竖屏**图片（DALL-E 3 使用 `1024x1792`）。严禁使用横屏图片。
- **主体位置**：主体人物/物件必须在画面**上方 1/3** 区域，底部留给字幕区。
- **提示词必加**：`cinematic vertical shot, 9:16 aspect ratio, subject positioned in upper third of frame, dark atmospheric space at bottom`
- **全片一致性**：主光源方向统一，保持跨幕视觉连贯。

**风格圣经与一致性工作流（强制）：**
为了保证多幕生图的视觉一致性，在生成任何图片之前，必须先根据体裁和设定定义一套「风格圣经」作为所有提示词的前缀，并为主要角色建立角色特征词组。

详细的风格圣经编写步骤、提示词工程公式以及角色一致性锚定工作流，请务必直接阅读 [🎨 视觉风格参考手册](file://./resources/style_bible.md)。

**逐张自检：**
- [ ] **封面图 (scene_cover)**：视觉冲击力极强，具备悬念感，能瞬间抓住注意力。
- [ ] **结尾图 (scene_end)**：意境深远，具备“神性”或“哲学感”，完美呼应主题并实现情感/认知升华。
- [ ] 主体在画面上 1/3，底部有足够深色安全区供字幕叠加
- [ ] 图片情绪与该幕的「情绪档位」匹配（档位 3 的图不能是平静场景）
- [ ] 全片光影/色调风格一致
- [ ] 无明显 AI 瑕疵（多余手指、文字乱码、比例失调等）

---

## 0.6 生产模式决策（内容定型后执行）

FableForge 支持两种生产模式。**在用户确认内容方向后、动手写剧本之前**，必须先确定生产模式。

### 两种模式概览

| 维度 | 模式 A：纯图片 | 模式 B：视频 + 文字叠加 |
|------|-------------|----------------------|
| **适用题材** | 寓言故事、有角色弧线的隐喻 | 职场分析、管理洞察、观点输出 |
| **画幅** | 16:9 横屏（1920×1080） | 9:16 竖屏（1080×1920） |
| **视觉素材** | AI 生成的场景图片 | Pexels/Pixabay 免费 B-roll 视频 |
| **文字呈现** | 底部字幕条 | 全屏文字叠加排版（暗化遮罩 + 大字） |
| **叙事结构** | 角色驱动的故事弧线 | 论点驱动的拆解/金句输出 |
| **产出节奏** | 较慢（等图片生成 + 风格校准） | 较慢（等图片生成 + 风格校准） |

### 快速决策表

| 判断条件 | 选择 |
|---------|------|
| 有具体角色名字和对话（僧人、狼王、船夫……） | 模式 A |
| 叙事主语是「我」「你」「我们」「很多公司」 | 模式 B |
| 需要展示隐喻（灯 → 认知、桥 → 管理） | 模式 A |
| 需要展示数据对比（3 → 13）、金句输出 | 模式 B |
| 用户明确说"拍成视频" / "竖版" / "短视频" | 模式 B |
| 用户明确说"写个寓言" / "讲个故事" | 模式 A |

> ⚠️ 用户可在停机确认时手动覆盖 AI 的模式推荐。模式确定后写入 `视频脚本.md` 头部的「内容定档」章节。

### 模式选定后的流程分叉

- **模式 A**：走 §1.5A（图片素材生成）→ §3.2（横屏 HTML 模板）→ 正常流程
- **模式 B**：走 §1.5B（视频 B-roll 采集）→ §3.2B（竖屏 HTML + 文字叠加模板）→ 正常流程
- 其余阶段（概念、剧本、TTS、BGM、音频解析、动画、渲染、发布）两种模式共享。

---

## 视频生产核心流水线 (Stages)

为确保 AI 执行各阶段时的高精准度与低上下文占用，制片厂流水线已全面重构为模块化架构。**当您执行某一个特定阶段时，请直接调阅并遵循该阶段对应的子 SOP 指南**：

### 🛠️ [Stage 0: 自动化环境部署 (Scaffolding)](file://./resources/stages/stage_0_env.md)
*   **用途**：首次运行或初始化项目环境时执行。
*   **动作**：部署模板、检测并下载静态 `ffmpeg` / `ffprobe` 环境、构建 VoxCPM2 隔离 Python 环境。
*   **核心指南**：[阅读 Stage 0 SOP](file://./resources/stages/stage_0_env.md)

### ✍️ [Stage 1：概念、剧本与物料生成](file://./resources/stages/stage_1_creatives.md)
*   **用途**：创意策划与声画素材（文字海报、B-roll、配音与BGM）准备。
*   **动作**：根据 Genre 生成大纲并在停机确认后进行内容定档与剧本拆解，运行声纹克隆脚本，使用图片 API 或自动化下载裁剪 B-roll，并强制生成纯文字封面/封底海报。
*   **核心指南**：[阅读 Stage 1 SOP](file://./resources/stages/stage_1_creatives.md)

### ⏱️ [Stage 2：音频解析与数据驱动时间轴](file://./resources/stages/stage_2_timeline.md)
*   **用途**：解析配音，进行像素级音视频时间戳对齐。
*   **动作**：通过 `ffprobe` 获取音频绝对时长，使用 Whisper (A方案) / RMS 能量分析 (B方案) 获得精确断句，映射生成 `data-start` 时间轴。
*   **核心指南**：[阅读 Stage 2 SOP](file://./resources/stages/stage_2_timeline.md)

### 📐 [Stage 3：静态排版构建与验收](file://./resources/stages/stage_3_static.md)
*   **用途**：横版/竖屏 HTML 与 CSS 样式搭建。
*   **动作**：搭建 `#composition` DOM 骨架。模式 B 下严格执行视频标签扁平化，配置组件库（`.headline`, `.neq` 等），确保静态显示 100% 正确并通运 `lint` 校验。
*   **核心指南**：[阅读 Stage 3 SOP](file://./resources/stages/stage_3_static.md)

### 🎬 [Stage 4：动画集成与预检发版](file://./resources/stages/stage_4_animation.md)
*   **用途**：GSAP 动画渲染与 MP4 导出。
*   **动作**：集成 Ken Burns 等情绪转场动画，运行 `inspect` 实施最终质量门禁，使用 `render` 导出 MP4 视频。
*   **核心指南**：[阅读 Stage 4 SOP](file://./resources/stages/stage_4_animation.md)

### 📦 [Stage 5：发布与归档](file://./resources/stages/stage_5_publish.md)
*   **用途**：补充宣发策划，作品归档。
*   **动作**：自动补充脚本元数据，**强制追加小红书爆款宣发案**（标题、大字封面文案及 Emoji 社交文案），更新 README 并在本地进行 Git 提交。
*   **核心指南**：[阅读 Stage 5 SOP](file://./resources/stages/stage_5_publish.md)

---

## 附录：核心指南与排坑规范

为了保持核心 SOP 的精炼度，以下核心手册与技术参考已存为独立的资源文件，Agent 在执行时可按需读取：

- **🎨 视觉风格参考手册**：提供详细风格词典、提示词公式及文化锚点，请查阅 [视觉风格参考手册](file://./resources/style_bible.md)。
- **🐛 技术陷阱与排坑规范**：汇总图片裁切、视频冻结、音轨对齐等已知 Bug 解决方案，请查阅 [技术排坑手册](file://./resources/troubleshooting.md)。

### 附录 C：项目归档规范结构

**模式 A（纯图片叙事视频）：**
```text
/YYYYMMDD/
  ├── index.html          (核心时间轴，Stage 3/4 产物)
  ├── assets/
  │   ├── scene_cover.png (封面图，纯文字海报)
  │   ├── scene1.png ~ sceneN.png
  │   ├── scene_end.png   (结尾图，纯文字海报)
  │   ├── narration.wav   (TTS 配音)
  │   ├── bgm.mp3         (背景配乐，Stage 1.7 产物)
  │   └── transcript.json (Whisper 时间戳，Stage 2.2 产物)
  ├── 视频脚本.md          (剧本，Stage 1.2 产物)
  └── promo_video.mp4     (最终成品，Stage 4.3 产物，Git 豁免名单)
```

**模式 B（视频 B-roll + 文字叠加）：**
```text
/YYYYMMDD_{project_name}/
  ├── index.html               (核心时间轴，竖屏 1080×1920)
  ├── style.css                (独立样式表，文字叠加组件库)
  ├── download_and_process.py   (B-roll 自动化下载/裁剪脚本)
  ├── assets/
  │   ├── scene1.mp4 ~ sceneN.mp4  (裁剪后的 B-roll 视频，1080×1920，无音轨)
  │   ├── narration.wav            (TTS 配音)
  │   └── bgm.mp3                  (背景音乐)
  ├── 视频脚本.md                   (剧本 + B-roll 素材规划表)
  └── renders/
      └── {project}_YYYY-MM-DD_HH-MM-SS.mp4  (渲染成品)
```
