# LibTV 制作操作指南 — YellowLine NYC 模块动画

在 [LibTV](https://www.liblib.tv/) 中制作 **mod-00 … mod-09** 培训 intro 视频的完整操作流程。基于现有旁白脚本，视觉风格对标 **Snowflake 企业培训视频**（简洁动效、章节卡、下三分之一字幕条、UI 合成、纪录片式旁白）。

**英文版**：配音脚本见 [animation-production-scripts.md](animation-production-scripts.md)（本项目无独立英文版制作指南）

**参考资料**

| 文档 | 用途 |
|------|------|
| [animation-production-scripts.md](animation-production-scripts.md) | **一站式制作文档**：旁白全文 + 分镜时间码 + LibTV CLI 命令 + 图片/视频 prompt |
| [animation-style-guide.md](animation-style-guide.md) | 品牌色、角色、交付规格 |
| [LibTV使用指南.md](../../LibTV使用指南.md) | LibTV 官方完整手册（本地） |
| [LibTV 使用指南（飞书）](https://resonate.feishu.cn/wiki/Loxfw6XHziYRk0kKzdjcFfp9nhb) | 在线 wiki |
| `.qoder/skills/libtv-cli/` | **`libtv` CLI 完整命令手册**（Qoder skill） |
| [vectorlogo.zone](https://www.vectorlogo.zone/) | Logo SVG/PNG 下载来源 |

**交付物**：`workshop-2026-v2/media/modules/mod-XX-*.mp4` · 1920×1080 · 30 fps · **全英文**旁白 + **全英文**烧录字幕 + **画面内所有可见文字均为英文**

> **语言策略（必守）**：观看对象为 **英语受众**。本指南正文为中文（方便制作人员操作），但成片里 **不得出现中文**：章节卡、下三分之一、标语、图表标签、UI 截图内文字、烧录字幕、旁白/TTS — **全部英文**。中文仅用于 LibTV 操作说明类 prompt，不用于观众可见内容。

---

## 第一部分 — 打开 LibTV 之前

### 1.1 Snowflake 培训风格（我们要复制的样子）

Snowflake 官方培训 / Summit 视频采用 **专业 e-learning** 美学，不是电影短片：

| 元素 | Snowflake 做法 | YellowLine NYC 适配 |
|------|----------------|-------------------|
| 片头 | 品牌标题卡、模块编号、轻微动效 | MHP 海军蓝渐变 + NYC 黄色强调 + 模块标题 |
| 字体 | 粗体无衬线、大号屏幕标签 | Source Sans Pro 风格；每节拍最多 8 个英文词 |
| 下三分之一 | 角色首次出现时显示姓名 + 职务 | Marcus · Operations Manager 等 |
| 章节卡 | 概念之间全屏过渡 | 每 25–40 秒一幕，对齐旁白脚本 |
| 数据可视化 | 动画图表、粒子流、分层堆叠 | 奖牌架构 Bronze → Silver → Gold；管道箭头 |
| UI 演示 | 设备框内的真实截图 | Databricks 笔记本、Snowflake 工作表、dbt 血缘、Power BI |
| 旁白 | 中性纪录片 VO，非角色表演 | 过渡由 Narrator；角色台词单独轨道 |
| 音乐 | 轻量企业配乐，duck 在 VO 下 | Module 7 静默书写段无音乐 |
| 节奏 | 每模块 2–4 分钟；一幕一概念 | 对齐旁白脚本时长表 |
| 字幕 | 烧录；每行 ≤ 42 字符；**仅英文** | 与旁白脚本英文一致；禁止中文字幕 |

**避免**：写实人脸、花哨转场、梗图幽默、暗调电影调色、**画面或字幕中的中文/汉字**。

### 1.2 素材准备（一次性）

1. 按 [animation-style-guide.md](animation-style-guide.md) 从 [`powerbi/`](../../powerbi/) 导出 Power BI 截图（**英文 UI**）。
2. 准备 **角色参考图**（2D 插画头像，扁平矢量）：
   - Marcus Chen — 调度室工牌、商务休闲
   - Elena Vasquez — 架构师、白板
   - Bob Müller — 笔记本、初级 DE
   - Sofia Alvarez — 导师
   - Priya Sharma — 仪表盘 / KPI
   - James Okonkwo — SQL / 验证
3. 准备 **Logo PNG**（优先使用本地 `shared/assets/images/logos/` 中的官方 SVG → 转 PNG 512×512 透明背景；缺少的从 [vectorlogo.zone](https://www.vectorlogo.zone/) 补充下载）：

   | Logo | 本地文件路径 | 备选下载 | 使用模块 |
   |------|-------------|----------|----------|
   | Databricks | `shared/assets/images/logos/logo_databricks_01.svg` | `vectorlogo.zone/logos/databricks/` | 0, 1, 2, 4, 5, 6, 7, 9 |
   | Snowflake | `shared/assets/images/logos/logo_snowflake_01.svg` | `vectorlogo.zone/logos/snowflake/` | 0, 1, 3, 4, 5, 6, 7, 9 |
   | dbt | `shared/assets/images/logos/logo_dbt.svg` | `vectorlogo.zone/logos/getdbt/` | 0, 1, 4, 5, 7, 9 |
   | Power BI | `shared/assets/images/logos/logo_powerbi.svg` | `vectorlogo.zone/logos/microsoft_power_bi/` | 0, 1, 2, 3, 4, 7, 8, 9 |
   | Apache Spark | `shared/assets/images/logos/logo_apache_spark.svg` | `vectorlogo.zone/logos/apache_spark/` | 2, 9 |
   | Apache Kafka | `shared/assets/images/logos/logo_apache_kafka.svg` | `vectorlogo.zone/logos/apache_kafka/` | 8 |
   | GitHub Actions | `shared/assets/images/logos/logo_github.svg` | `vectorlogo.zone/logos/github/` | 5 |
   | Azure | `shared/assets/images/logos/logo_azure_01.svg` | `vectorlogo.zone/logos/microsoft_azure/` | 2, 3, 5 |
   | Python | `shared/assets/images/logos/logo_python.svg` | `vectorlogo.zone/logos/python/` | 2, 9 |
   | MLflow | `shared/assets/images/logos/logo_mlflow.svg` | `vectorlogo.zone/logos/mlflow/` | 9 |
   | AWS | `shared/assets/images/logos/logo_aws.svg` | `vectorlogo.zone/logos/amazon_aws/` | 0, 1（评估矩阵） |
   | Cloudera | `shared/assets/images/logos/logo_cloudera.svg` | — | 0, 1（评估矩阵） |
   | **MHP** | `shared/assets/images/mhp-logo.png` | 品牌资产（海军蓝 `#01065c`） | 0, 1, 7 |
   | **YellowLine NYC** | ❌ **缺少 — 需自制** | 品牌资产（黄 `#FBBF24`） | 0, 1, 7 |

   上传到 LibTV CLI：`libtv upload "logo-databricks" -f ./logos/logo_databricks_01.svg`

4. 准备 **示意图 PNG**：奖牌分层、ADLS2 → Gold → PBI 流程、三大约束图标（**英文标签** Cost / Performance / Compliance）。
5. 按 [animation-production-scripts.md](animation-production-scripts.md) 录制或生成每模块 **英文旁白 WAV**。

### 1.3 语言与字幕（英语受众 — 硬性规则）

| 内容类型 | 语言 | 说明 |
|----------|------|------|
| 旁白 / TTS | **英文** | 见 [animation-production-scripts.md](animation-production-scripts.md) |
| 烧录字幕 | **英文** | 与旁白一致；≤ 42 字符/行；禁止中文 |
| 章节卡 / 标语 / 下三分之一 | **英文** | 见第五部分各幕「屏幕文字」 |
| 图表与图标标签 | **英文** | 如 Bronze / Silver / Gold、Cost / Performance / Compliance |
| Power BI / 产品 UI | **英文** | 用真实英文截图合成；勿 AI 生成中文 UI |
| LibTV 操作 prompt | 中文 OK | 仅给制作人员看；**勿把中文写进会出现在画面里的字段** |
| 本指南正文 | 中文 | 操作说明；不等于成片语言 |

**每个图片 prompt 末尾必须追加 §4.6「画面英文后缀」**（防止模型生成中文标题或汉字标签）。

---

## 第二部分 — LibTV 平台要点（基于官方手册）

> 来源：[`LibTV使用指南.md`](../../LibTV使用指南.md) · 推荐 **Chrome / Edge** · 导演台打不开时开启浏览器 **硬件加速 / 图形加速**。

### 2.0 官方手册目录对照

| 章节 | 内容 |
|------|------|
| **1. 无限画布** | 项目、五大节点、工作流、画布 UI |
| 1.1 新建画布 | 开始创作、全部项目、项目库 |
| 1.2 五大基础节点 | 文本 / 图片 / 视频 / 音频 / 脚本 + 常用操作 |
| 1.3 工作流搭建 | 基础 Showcase、打组、创建工作流、整组执行 |
| 1.4 四大画布功能 | 项目菜单栏 · 左侧栏 · 个人中心 · 小地图 |
| **2. 画布实用工具** | Slash、图像工具、视频工具、导演台 |
| 2.1 Slash | 九宫格 · 四宫格 · 25 宫格 · 三视图 · 光影 · 画面推演 |
| 2.2 图像工具 | 720° 全景 · 多角度 · 打光 · 宫格切分 · **分镜组** 等 |
| 视频工具 | 高清 · 解析 · 剪辑 · **视频合成** · 人声分离 |
| 导演台 | 3D 摆景 → 机位截图 → 发送到画布 |
| 图像 / 视频生成器 | 风格库 · 焦点编辑 · 主体库 · 运镜 |
| 模型清单 | 图像 / 视频 / 大语言 / 音频模型 |
| 快捷键 | 跨画布复制、打组、缩放 |

### 2.1 访问与项目结构

| 步骤 | 手册操作 | YellowLine NYC 用法 |
|------|----------|------------------|
| 1 | 打开 https://www.liblib.tv/ 并登录 | 一个账号管理全部模块画布 |
| 2 | 首页 → **最新项目** → **开始创作** | 创建 **`MHP-DE-Masterclass-2026`** |
| 3 | **全部项目** | 子项目 `mod-00` … `mod-09` |
| 4 | 左上角 Logo → **项目菜单栏** | 双击标题重命名；**项目库** 查看历史 |
| 5 | 导演台示例 | https://www.liblib.tv/canvas/share?shareId=W713Ltb3p |

**要点**：一个无限画布 = 一个项目。双击画布名称重命名（如 `mod-03-snowflake`）。

**缩放**：滚轮 10%–400%；左下角 **小地图** 拖拽高亮框快速跳转。

### 2.2 五大基础节点（双击空白画布）

| 节点 | 手册说明 | YellowLine NYC 用途 |
|------|----------|------------------|
| **脚本** | 剧本 → 分镜；全屏编辑 | 粘贴第四、五部分 Master + 场景提示词 |
| **文本** | 屏幕标题、说明 | Snowflake 式章节卡、下三分之一 |
| **图片** | 生成器 + 顶栏工具 | 关键帧、示意图、PBI 合成 |
| **视频** | 图生视频 → **视频合成** | 每场景 5–15 秒动效 |
| **音频** | 上传或 TTS | 旁白 WAV + 配乐 |

**常用操作（手册 1.2.7）**

- 双击 / 右键 **添加节点** / 左侧栏 **添加**
- 拖入 PNG / MP4 / WAV（**添加资源**，可多选）
- 输出端口 → 输入端口连线
- 右键 → **创建资产**（存入 **我的资产** 跨模块复用）
- **Ctrl+C / Ctrl+V** 复制节点（**不保留**连线）
- **副本** 复制节点（**保留**连线，做 A/B 变体）
- **Delete** + **Ctrl+Z** 撤销
- **历史记录**：批量下载 / 删除 / **使用**（最多 10 个发到画布）

### 2.3 画布四大功能模块（手册 1.4）

#### 2.3.1 项目菜单栏

| 功能 | 说明 |
|------|------|
| 回到主页 | 返回 LibTV 首页 |
| 创建新项目 | 新标签页空白画布 |
| 全部项目 / 项目库 | 浏览管理 |
| 删除项目 | 永久删除（二次确认） |
| 分享 | 协作者可见实时编辑 |
| 发布 | 审核通过后社区展示 |

#### 2.3.2 画布左侧栏

| 标签 | YellowLine NYC 用法 |
|------|------------------|
| **添加** | 上传 PBI 截图、Logo、角色图 |
| **工作流**（我的工具箱） | 插入已保存工作流；**整组执行** |
| **资产** | 角色文件夹、已保存工作流 |
| **历史记录** | 恢复关键帧；跨模块批量复用 |
| **教程** | 应用内手册 |

#### 2.3.3 个人中心（右上角）

发布分享、通知、会员、积分、账号设置。

#### 2.3.4 小地图（左下角）

节点超过 20 个时用 minimap + 缩放百分比导航。

### 2.4 工作流搭建（手册 1.3）

**推荐 YellowLine NYC 画布结构**

```
[脚本节点：分镜脚本 → 生成分镜 → 批量生成视频]
        │
        ├── [图片 × N] 关键帧
        │        └── [视频 × N] 图生视频
        ├── [文本 × N] 章节卡 / 标语
        ├── [音频] 旁白 WAV 或 Minimax TTS
        └── [视频合成] → 合成 → 下载 MP4
```

**从 Showcase 搭建（四步）**

1. **风格参考图** — 从参考端口拉线 → 新图片节点（上传 MHP 色板参考）
2. **角色设定** — 文本节点接角色圣经（第四部分 4.2）→ 连到图片生成器
3. **图像生成** — 场景提示词 + 模型 + **16:9** → 生成
4. **视频生成** — 从图片拉线 → 视频节点 + 动态提示词 → 生成

**工作流操作**

| 操作 | 方法 | 用途 |
|------|------|------|
| **打组** | 框选 → 右键 → 打组（Ctrl+G） | 单模块所有场景打一组 |
| **创建工作流** | 已打组 → 保存到 **我的工具箱** | 跨模块复用模板 |
| **整组执行** | 改提示词后一键重跑 | Global Style 变更时批量重生 |

注意：选区含 **分镜表** 节点时无法打组。

### 2.5 Slash 快捷功能（手册 2.1）

在 **图片节点生成器**（有参考图时）输入 `/`：

| 功能 | YellowLine NYC 用途 |
|------|------------------|
| 多机位九宫格 | 同一场景 9 种构图对比 |
| 剧情推演四宫格 | 场景衔接（Module 7 回顾蒙太奇） |
| 25 宫格连贯分镜 | 整模块分镜预演 |
| **角色三视图** | **必做**：Marcus / Elena / Bob / Priya 一致性 |
| 电影级光影矫正 | 企业培训干净布光 |
| 画面推演 ±3s/5s | 镜头间动效规划 |

修改角色设定与动态提示词后，整组会自动重新执行。

### 2.6 图像工具（手册 2.2）

| 工具 | 入口 | 用途 |
|------|------|------|
| 720° 全景 | 顶栏 **全景** / 生成器全景模式 | 调度室、会议室环境；4/12 视角截图 |
| 多角度 | 图片顶栏 | 8 水平 + 4 垂直 + 3 景别 |
| 打光 | 图片顶栏 | 扁平企业光 |
| **风格库** | 生成器 **风格** | 选 **摄影写真**；避免动漫 |
| 焦点编辑 | 高级 | 从 PBI 截图提取 UI 元素 |
| 主体库 | 左侧栏（完善中） | 角色文件夹整包加载 |

**风格一致性**：优先 **风格库**；Midjourney 类无法 100% 一致 → 用 **三视图** + 固定风格标签。自定义模板：https://www.liblib.art/ai-tool/upload-template

### 2.7 导演台（手册重点功能）

轻量 **3D 构图节点**，无需写实人脸。

| 步骤 | 操作 |
|------|------|
| 1 | 双击画布 → **新建** → **导演台** |
| 2 | 添加人体素模、几何体、道具（桌椅、屏幕） |
| 3 | **移动 V / 旋转 R / 缩放 S**；**网格吸附 X** |
| 4 | 切换 **机位视角**；调 FOV；**注视目标** 绑定角色 |
| 5 | **导演视角** → **截图** → 自动创建机位 |
| 6 | **发送到画布** 作为图生视频参考 |

适用：Story 调度室、Module 3 董事会、Module 7 汇报厅。打不开 → 浏览器开启 **图形加速**。

### 2.8 视频合成与导出（手册 — 最终成片）

| 步骤 | 操作 |
|------|------|
| 1 | 连接 ≥2 个视频节点（或视频+音频）→ 右拖 → **视频合成** |
| 2 | 或：视频节点 → **打开视频合成** → 底部时间轴 |
| 3 | 拖拽排序；**I/O** 出入点；**Delete** 删除；**空格** 播放 |
| 4 | 独立音轨放配乐；duck 在旁白下 |
| 5 | **播放** 预览 |
| 6 | **合成** → **下载** MP4（最长约 20 分钟） |

半屏剪辑：右下角收起 → 画布上增删片段。**分离音视频** / **人声分离** 可提取干净旁白轨。

### 2.9 脚本节点 — 官方三步流程（手册 1.2.6）

**最快路径**。右键 → **添加节点 → 脚本节点**。

**输入模式**

| 模式 | 何时使用 |
|------|----------|
| 上传剧本 | 粘贴 [animation-production-scripts.md](animation-production-scripts.md) 全文 |
| 角色图 + 剧情 | 上传角色参考 + 第四部分 Master 提示词 |
| 参考视频 | YellowLine NYC **不用**（我们靠旁白脚本，不做风格复刻） |

**第一步 — 生成分镜脚本**

1. 选 **通过角色生成分镜脚本**（或粘贴剧本）
2. 挂载角色图；粘贴 **Global Style + Module Master + 场景提示词**
3. **生成** → 检查分镜表
4. **全屏**：双击改文案；替换角色/风格参考；**调整字段可见性** / **筛选画面**
5. **视图** 切换卡片布局

**第二步 — 生成分镜图**

1. 顶部 **生成分镜**
2. 第一列勾选行（可批量）
3. 底部生成器：**风格**、模型、**16:9**、分辨率 → **生成**

**第三步 — 批量生成视频**

1. 连脚本 → 视频节点，或顶部 **批量生成视频**
2. 设视频模型 + 时长（对齐旁白时间码）
3. 动态提示词宜 subtle：slow pan, gentle zoom, minimal camera movement

最后：**视频合成**（§2.8）+ 上传旁白 WAV。

### 2.10 分镜组（手册 2.2.9）

关键帧完成后：

1. 框选多张图片 → **打组** → **合并分镜组**
2. 快捷键：**Ctrl+Alt+G**（Win）/ **Cmd+Option+G**（Mac）
3. 宫格 2×2 … 5×5；画幅 **16:9**
4. **拼接** 合成预览大图（非最终导出）
5. **宫格切分** 拆回单格重新渲染

### 2.11 YellowLine NYC 模型选择（优化配置）

> **原则**：固定模型组合以优化成本与一致性。全部通过 **`libtv` CLI** 操作。

**图像模型（分镜关键帧）**

| 模型 | `libtv -s model=` | 用途 | 说明 |
|------|-------------------|------|------|
| **nebula-ultra** ⭐ 首选 | `-s model=nebula-ultra` | 分镜关键帧、角色肖像 | Lib Navo Pro，最佳一致性，2K/4K，16:9 |
| **lib-image** | `-s model=lib-image` | 标题卡、含英文文字场景 | 画面内英文/UI 文字渲染好 |
| **libnavo-2** | `-s model=libnavo-2` | 快速迭代预览、章节卡 | 速度快，适合初稿 |

**nebula-ultra CLI 参数**：

```bash
-s model=nebula-ultra -s ratio=16:9 -s quality=2K
```

**避免**：写实模型、Midjourney V7（风格漂移）。

**视频模型（图生视频）**

| 模型 | `libtv -s model=` | 用途 | 说明 |
|------|-------------------|------|------|
| **Seedance 2.0 VIP** ⭐ 首选 | `-s model=star-video2` | 全部模块视频片段 | VIP-only，~2min/clip，15s 音视频同步，成本优化 |
| **Seedance 2.0 Fast VIP** | `-s model=star-video2-fast` | 快速预览版本 | 速度更快，质量略低 |

**star-video2 CLI 参数**：

```bash
-s model=star-video2 \
-s modeType=singleImage2video \
-s ratio=16:9 \
-s resolution=720p \
-s duration=10   # 4–15 秒，匹配场景时间码
```

Marcus/Elena 等角色：**2D 插画 + 三视图** 后图生视频，勿用写实人脸管线。

**脚本 / 大语言模型**

| 模型 | `libtv -s model=` | 用途 |
|------|-------------------|------|
| **aurora-3-prime** ⭐ 首选 | `-s model=aurora-3-prime` | 脚本节点分镜行生成 |
| **CVLM5.5** / **GVLM 3.1** | | 从旁白 bullet 扩展场景提示词（可选） |

**音频**

| 方式 | 用途 |
|------|------|
| **Minimax Speech 2.8** | Narrator / 角色 TTS；克隆后保留 |
| 上传 WAV | 人工或 ElevenLabs 导出（**推荐**） |

**风格库**：**摄影写真** 分类；或上传 5–20 张 YellowLine NYC 参考帧到 liblib 自定义模板。

**一致性**：每角色先跑 **角色三视图**（`libtv image shortcut "角色三视图" -n <肖像节点>`）；满意后 **创建资产**。

### 2.12 第二部分各步骤 Prompt 全文（中文）

以下补充 §2.4–§2.9 中需要粘贴文字的步骤。

#### A. Showcase 四步 — 各步 prompt

**步骤 1 — 风格参考图（文本节点或图片 prompt）**：

```text
MHP YellowLine NYC 品牌参考：海军蓝 #01065c 主色、出租车黄 #FBBF24 强调、白/浅灰背景、Snowflake 企业培训 2D 动效、扁平插画、16:9，无写实人脸
```

**步骤 2 — 角色设定（文本节点 → 连图片生成器）**：粘贴 **§4.2.1 全局角色风格** + **§4.2.2 角色圣经**；首帧用 **§4.2.3**，锁定后用 **§4.2.4 三视图**。

**步骤 3 — 图像生成（图片节点底部）**：粘贴 **§4.1 全局风格** + 当前幕 **§5 图片 prompt** + **§4.4 风格附加句**。

**步骤 4 — 视频生成（视频节点动态框）**：粘贴 **§4.5 通用模板** 或当前幕 **§5 视频动态 prompt**。

#### B. 脚本节点 — 上传剧本模式

**输入位置**：脚本节点 → 上传剧本 / 粘贴框。

```text
【说明】以下为 MHP 数据工程师大师班模块 {编号} **英文**旁白脚本摘要，请按 Scene 拆分为分镜表：每行一幕；**画面描述列**可用中文给制作人员看；**台词列与任何会出现在画面上的文字列必须为英文**（与 voiceover 脚本一致）。

{从 animation-production-scripts.md 粘贴该模块全文}
```

#### C. 脚本节点 — 角色图 + 剧情模式

**输入位置**：脚本节点 → 上传角色参考图 + 剧情框。

```text
{粘贴 §4.1 全局风格全文}

{粘贴 §4.2 角色圣经全文}

{粘贴 §4.3 模块 Master（已填好占位符）}

{粘贴 §5 该模块各幕「分镜描述」合并为一段，或逐幕列出}
```

#### D. Slash — 25 宫格连贯分镜（整模块预演）

**输入位置**：图片生成器 `/` → 25 宫格连贯分镜。

```text
按 YellowLine NYC 模块 {编号} 旁白顺序生成 25 格连贯分镜预览：Snowflake 企业培训 2D 插画，海军蓝黄，Marcus Elena Bob Priya 等角色一致，每格一镜头，含章节卡与数据图，非写实，16:9 构图变化
```

#### E. Slash — 剧情推演四宫格（Module 7 闪回）

```text
四格剧情推演：notebook 实验 → Snowflake worksheet → dbt lineage → Power BI dashboard，快切 recap 风格，同一色板，2D 培训插画
```

#### F. CVLM / GVLM 扩展场景 prompt（可选）

**输入位置**：文本节点 LLM → 输入框。

```text
你是 LibTV 分镜 prompt 助手。根据以下旁白 bullet，输出 3 条英文 image prompt + 1 条中文分镜描述，风格：Snowflake 企业培训 2D 插画，海军蓝 #01065c、黄 #FBBF24，禁止写实人脸，每 prompt 不超过 80 词。

旁白 bullet：
{粘贴 animation-production-scripts.md 中该 Scene 段落}
```

#### G. 导演台场景描述（新建导演台后参考）

```text
YellowLine NYC 调度中心：L 型 desk、三块 monitor、简化 NYC 地图屏、黄色工牌角色站位；或董事会：长桌、投影屏、Marcus 与 Elena 位置。企业培训布光，均匀明亮，无戏剧阴影。
```

---

## 第三部分 — 标准制作流程（每模块）

> **双轨并行**：每个阶段同时列出 **画布操作**（GUI）和 **`libtv` CLI 命令**。CLI 适合批量与自动化；画布适合精修角色一致性和 PBI 合成。详细 CLI 参数见 [animation-production-scripts.md](animation-production-scripts.md) §2.6。

### 阶段 A — 脚本与分镜

**画布操作**：
- [ ] 打开 `mod-0X` 画布；双击重命名
- [ ] 右键 **脚本节点**；粘贴剧本或角色图 + 第四部分提示词
- [ ] **第一步**：分镜脚本 → **全屏** 编辑 → 场景数 = 旁白 Scene N
- [ ] **第二步**：**生成分镜** → 16:9 → **摄影写真** 风格
- [ ] 可选：**分镜组**（§2.10）通览全部关键帧
- [ ] 新角色：§4.2.3 初始肖像 → §4.2.4 三视图 → **创建资产**（§4.2.8）
- [ ] **场景 ≠ 镜头**：`libtv script storyboard` 会根据旁白节奏将一个 Scene 拆为多个 shot（如 Story 的 7 Scene → 18 shot）。master prompt 中每个 Scene 需提供足够视觉描述以支持多镜头拆分。

**CLI 命令**：

```bash
# 1. 创建模块分组
libtv group create "mod-{XX}-{slug}"

# 2. 创建脚本节点（aurora-3-prime 生成分镜行）
libtv node create "mod-{XX}-script" -t script \
  --prompt "$(cat prompts/mod-{XX}-master.txt)" \
  -s model=aurora-3-prime
libtv node "mod-{XX}-script" --run

# 3. 生成分镜图组（nebula-ultra 关键帧）
libtv script storyboard "mod-{XX}-script" \
  -s model=nebula-ultra -s ratio=16:9 -s quality=2K

# 4. 角色三视图（首次出现时）
libtv node create "char-{name}-portrait" -t image \
  --prompt "<肖像 prompt>" \
  -s model=nebula-ultra -s ratio=16:9 -s quality=2K
libtv node "char-{name}-portrait" --run
libtv image shortcut "角色三视图" -n "char-{name}-portrait"

# 4b. ⚠️ 必做：切换分镜图为 image2image 模式 + 链接角色参考
# libtv script storyboard 默认生成 text2image 模式节点。
# 必须切换为 image2image 后，--left 链接的角色三视图/logo 才会生效。
# 对每个包含角色或 logo 的分镜图片节点执行：
libtv node "<storyboard-node-id>" \
  -s modeType=image2image \
  --left "char-marcus-turnaround" \
  --run
# 不含角色/logo 的纯场景分镜图无需切换，保持 text2image 即可。
# ⚠️ --group 参数需要分组 UUID（libtv group list 获取），不是分组名称。
```

### 阶段 B — 关键帧

**画布操作**：
- [ ] 按第五部分 Image 提示词生成
- [ ] PBI / UI 处上传真实截图合成
- [ ] 拒绝写实人脸；改 prompt 为 flat 2D corporate illustration
- [ ] 色板：黄 `#FBBF24`、海军蓝 `#01065c`、反思蓝 `#2563eb`

**CLI 命令**：

```bash
# 上传 PBI 截图等参考素材
libtv upload "mod-{XX}-pbi-overview" -f ./powerbi/mod-{XX}-overview.png

# 手动创建关键帧图片节点（覆盖分镜组外的特定场景）
libtv node create "mod-{XX}-scene-{N}-image" -t image \
  --prompt "<图片 prompt + §4.6 英文后缀>" \
  -s model=nebula-ultra -s ratio=16:9 -s quality=2K
libtv node "mod-{XX}-scene-{N}-image" --run
```

### 阶段 C — 动态片段（图生视频）

**画布操作**：
- [ ] **第三步**：**批量生成视频** 或逐场景 Image → Video
- [ ] 模型：**Seedance 2.0 VIP**（`star-video2`）；仅 slow pan / subtle zoom
- [ ] **逐镜头独特 prompt**：每个 shot 的 video prompt 必须描述该镜头特有运动（如 "heatmap zoom to Manhattan"），禁止使用通用模板（如 "subtle slow pan, stable camera"）
- [ ] 时长 ≈ 旁白各 Scene 时间码
- [ ] 仪表盘勿 AI 生文字 — 用真实 PNG

**CLI 命令**：

```bash
# 逐场景图生视频（star-video2 = Seedance 2.0 VIP）
libtv node create "mod-{XX}-scene-{N}-video" -t video \
  --prompt "<该镜头独特的视频动态 prompt>" \
  -s model=star-video2 \
  -s modeType=singleImage2video \
  -s ratio=16:9 \
  -s resolution=720p \
  -s duration={SECONDS} \
  -s enableSound=off \
  --left "mod-{XX}-scene-{N}-image" \
  --group <GROUP_UUID>
libtv node "mod-{XX}-scene-{N}-video" --run
# ⚠️ enableSound=off 是正确的静音参数（不是 sound=false）
# ⚠️ CLI 命令间需 2-3 秒延迟以避免 API 限流
```

**引用验证（必做）**：
- [ ] 生成视频前，确认每个视频节点的 `--left` 指向的是**最新的**分镜图片节点
- [ ] 如果分镜图曾被重新生成（如修复肤色、角色一致性后），旧视频节点仍指向旧图片 URL（stale 引用）
- [ ] 检测方法：对比视频节点 `params.imageList[0].url` 与分镜节点当前 `data.url[0]`，不一致则为 stale
- [ ] 修复：`libtv node <video-id> --left <最新分镜节点id> --run` 重新生成

### 阶段 D — 音频与字幕

**画布操作**：
- [ ] 旁白 WAV/MP3 导入音频节点（推荐 edge-tts 生成，见 §6.3）
- [ ] 配乐 duck 约 −12 dB
- [ ] 烧录 **英文** 字幕（≤ 70 字符/行；与旁白脚本一致；**无中文**）
- [ ] Module 7 Scene 4（2:30–2:50）：**无配乐**

**CLI 命令**：

```bash
# 上传旁白（MP3 或 WAV）
libtv upload "mod-{XX}-voiceover" -f ./audio/mod-{XX}-voiceover.mp3
```

### 阶段 E — 合成、导出与 QA

**画布操作**（备选方案）：
- [ ] 全部视频节点 + 旁白轨 → **视频合成**（§2.8）
- [ ] 时间轴顺序对齐 Scene；**I/O** 裁剪
- [ ] Module 7 静默段无配乐
- [ ] **合成** → **下载**；确认 1920×1080 H.264

**ffmpeg 合成（推荐方案）**：

```bash
# 1. 拼接所有视频片段（按镜头顺序）
# 先创建 concat_list.txt:
# file 'shot01.mp4'
# file 'shot02.mp4'
# ...
ffmpeg -f concat -safe 0 -i concat_list.txt -c copy mod-{XX}-concat.mp4

# 2. 叠加旁白音轨 + 烧录字幕
ffmpeg -i mod-{XX}-concat.mp4 \
  -i audio/mod-{XX}-voiceover.mp3 \
  -vf "subtitles=audio/mod-{XX}-subtitles.srt:force_style='FontName=Arial,FontSize=22,PrimaryColour=&H00FFFFFF,OutlineColour=&H00000000,Outline=2,Alignment=2'" \
  -c:v libx264 -preset medium -crf 18 \
  -c:a aac -b:a 192k \
  -shortest \
  mod-{XX}-final.mp4
```

- [ ] 保存 `workshop-2026-v2/media/modules/mod-XX-slug.mp4`
- [ ] 运行 `python workshop-2026-v2/scripts/_scaffold_generate.py`；检查 Quarto 嵌入

> **注**：推荐使用 ffmpeg 合成（支持 burned-in 字幕、精确控制编码参数）。画布 UI 合成可作为快速预览的备选方案。

---

## 第四部分 — 可复用 Prompt 全文（中文）

> **用法**：每个代码块均可直接复制到 LibTV 对应输入框。  
> **语言**：本部分 prompt 用中文描述画面意图；**观众可见的一切文字必须为英文**（见 §1.3）。分镜描述不会直接上屏；章节卡/标语用第五部分「屏幕文字」英文原文。  
> **建议**：图片 prompt 末尾 **必加 §4.6**；可与 §4.1 英文粘贴版同时粘贴（LibTV 对英文关键词更稳）。  
> **旁白与字幕**：完整 **英文** 台词见 [animation-production-scripts.md](animation-production-scripts.md)，粘贴到 **音频节点 / 视频合成音轨 / 字幕**，不要写进画面 prompt。

### 4.0 Prompt 输入位置一览

| 步骤 | LibTV 位置 | 粘贴内容 |
|------|------------|----------|
| 开画布 | 脚本节点 → 剧情/剧本框 | §4.1 全局风格 + §4.3 模块 Master |
| 角色一致 | 图片生成器输入 `/` → 角色三视图 | §4.2.4 各角色三视图 prompt |
| 角色首帧 | 图片节点（无参考图） | §4.2.3 初始肖像 prompt → 满意后再跑三视图 |
| 角色绑定 | 脚本节点 → 角色图 + 角色描述 | §4.2.2 角色圣经 + §4.2.5 单角色绑定 |
| 分镜表 | 脚本节点 → **全屏** 每行「画面」列 | 第五部分各幕「分镜描述」 |
| 关键帧 | 图片节点 → 底部生成器 prompt | 第五部分「图片 prompt」+ §4.4 + **§4.6 英文后缀** |
| 风格 | 图片生成器 → **风格** 图标 | 选「摄影写真」+ §4.6 风格附加句 |
| 动效 | 视频节点 → 动态/运镜 prompt | 第五部分各幕「视频 prompt」或 §4.5 通用模板 |
| 章节字 | 文本节点 | 第五部分「屏幕文字」**英文原文**（禁止中文） |
| 旁白 | 音频节点 / Minimax | 第六部分旁白说明（英文台词） |
| 批量 | 脚本顶栏 **生成分镜** / **批量生成视频** | 先勾选分镜行再生成 |

### 4.1 全局风格 Prompt（每个模块画布粘贴一次）

**输入位置**：脚本节点最顶部，或文本节点连到所有图片节点。

**中文全文（复制粘贴）**：

```text
【风格】Snowflake 官方企业培训视频风格的 2D 动效，不是电影、不是写实、不是动漫。

【画面】
- 扁平 2D 插画角色，几何化面部，禁止写实皮肤质感
- 背景：白色或浅灰 + 海军蓝面板（#01065c）+ 出租车黄强调色（#FBBF24）
- 字体：粗体无衬线，投影可读，每屏文字不超过 8 个英文词
- 章节卡：全屏模块标题，轻微几何动效
- 角色首次出现：下三分之一显示英文名 + 职务
- 数据图：奖牌架构 Bronze→Silver→Gold 分层、管道箭头、简洁图标（少用粒子特效）
- UI：圆角设备框内嵌真实 Power BI 截图（若已提供素材）
- 画幅 16:9，1920×1080，镜头稳定，纪录片节奏
- **屏幕内所有可见文字仅英文**：章节卡、标语、下三分之一、图表标签、UI 内文字；禁止中文汉字

【音频】英文旁白；角色英文台词分轨；轻量企业配乐压在旁白下方

【禁止】写实人脸、恐怖/戏剧光、梗图、画面拥挤、每屏超过 8 词、**任何中文或汉字出现在画面上**
```

**英文粘贴版（建议与中文同时粘贴；画面文字规则以此为准）**：

```text
STYLE: Corporate e-learning motion graphics, Snowflake training style. NOT cinematic, NOT photorealistic, NOT anime.
Flat 2D illustrated characters, navy #01065c and yellow #FBBF24, 16:9 1920x1080, stable camera.
MANDATORY: All visible on-screen text in English only — titles, lower-thirds, labels, UI. No Chinese characters anywhere in frame.
English burned-in subtitles match voiceover script. Forbidden: photorealistic faces, cluttered frames, meme humor, non-English text.
```

### 4.2 角色生成 Prompt 全文

> **顺序**：§4.2.1 全局角色风格 → §4.2.3 **初始肖像**（图片节点）→ 满意后 `/` **角色三视图**（§4.2.4）→ **创建资产** → 全模块引用同一 Image 节点。  
> **语言**：操作说明可中文；工牌、下三分之一、屏幕文字 **仅英文**（§4.2.7）。  
> **模型**：肖像 / 三视图优先 **Z Image Turbo** 或 **Seedream 5.0 Lite**；工牌英文清晰时用 **Lib Image**。勿用写实人脸模型。

#### 4.2.0 角色生成流程（LibTV 操作）

| 步骤 | LibTV 位置 | 粘贴内容 |
|------|------------|----------|
| 1 | 文本节点 → 连图片生成器 | §4.2.1 + §4.2.2 |
| 2 | 图片节点 → 风格「摄影写真」→ 16:9 | §4.2.3 该角色「初始肖像」+ §4.6 |
| 3 | 选中步骤 2 输出 → `/` → **角色三视图** | §4.2.4 该角色「三视图」+ §4.6 |
| 4 | 满意的三视图 | 右键 → **创建资产** → 命名 `char-marcus` 等 |
| 5 | 脚本节点 | 上传三视图 / 肖像 + §4.2.5 单角色描述 |
| 6 | 各场景图片节点 | 参考端口拖入 **同一资产**；prompt 写 `same design as reference turnaround` |
| 7 | 需换表情时 | §4.2.6 表情变体（仍引用同一三视图资产） |

#### 4.2.1 全局角色风格 Prompt（所有角色生成必贴）

**输入位置**：文本节点连到角色图片生成器，或拼在 §4.2.3 / §4.2.4 开头。

**中文说明**：

```text
【角色画风 — 六人统一】
Snowflake 企业培训 2D 矢量插画角色，非写实、非 3D、非动漫大眼。
简化几何面部：小鼻、少阴影、纯色皮肤块、清晰轮廓线。
全身或半身均可；背景纯白 #FFFFFF 或浅灰 #F8FAFC（角色表专用）。
品牌色点缀：MHP 海军蓝 #01065c、YellowLine NYC 黄 #FBBF24；Priya 场景可加 PBI 绿 #107c10。
光照均匀明亮；无戏剧阴影；无恐怖/性感元素。
工牌/名牌上文字仅英文；禁止中文汉字。
```

**英文粘贴版（与中文同时粘贴）**：

```text
CHARACTER STYLE LOCK: Flat 2D corporate e-learning illustration, Snowflake training video style.
NOT photorealistic, NOT 3D render, NOT anime. Simple geometric face, solid color blocks, clean outlines.
White or light gray background for character sheets. Brand accents navy #01065c and yellow #FBBF24.
Even bright lighting, no dramatic shadows. English text only on badges and name tags. No Chinese characters.
```

#### 4.2.2 角色圣经（脚本节点 — 六人总表）

**输入位置**：脚本节点 → 「角色描述」；或文本节点连所有角色相关图片节点。

```text
【CAST — MHP Data Engineer Masterclass 2026 · 全模块同一套设计】

Marcus Chen · Operations Manager · YellowLine NYC (CLIENT)
- 年龄感 40 左右；务实、略疲惫但专业；商务休闲（开领衬衫，无厚重西装）
- 肤色：warm beige (浅棕暖肤色)
- 标志物：黄色 YellowLine NYC 工牌（英文）、调度中心/Excel 多屏背景
- 出现模块：0–8；语气 pragmatic, business-focused
- 下三分之一：Marcus Chen · Operations Manager
- edge-tts 声音：en-US-ChristopherNeural

Elena Vasquez · Data Architect · MHP (CONSULTANT LEAD)
- 年龄感 35–45；冷静权威、结构化讲解；MHP 海军蓝职业装
- 肤色：fair warm (白皙偏暖肤色)
- 标志物：白板 + 马克笔、Bronze/Silver/Gold 奖牌图标
- 出现模块：0–7；白板/架构图场景为主
- 下三分之一：Elena Vasquez · Data Architect
- edge-tts 声音：en-US-JennyNeural

Bob Müller · Junior Data Engineer · MHP (TRAINEE PROXY — 学员代入)
- 年龄感 25–32；好奇 eager；休闲商务 + 笔记本电脑
- 肤色：fair (白皙肤色)
- 标志物：笔记本、举手发言、Databricks 模块主角
- 出现模块：0–2, 4–7；与 Sofia 搭档
- 下三分之一：Bob Müller · Junior Data Engineer
- edge-tts 声音：en-US-GuyNeural

Sofia Alvarez · Senior Data Engineer · MHP (MENTOR)
- 年龄感 30–40；简洁、支持性、技术权威；与 Bob 并排辅导
- 肤色：fair warm (白皙偏暖肤色)
- 标志物：笔记本/平板、ADLS2 路径、Delta Bronze 标签场景
- 出现模块：0–2；Module 2 辅导 Bob 为重点
- 下三分之一：Sofia Alvarez · Senior Data Engineer
- edge-tts 声音：en-US-EmmaNeural

Priya Sharma · BI Analyst · MHP (DASHBOARD OWNER)
- 年龄感 28–38；清晰、结果导向、展示姿态；简洁职业装
- 肤色：light brown (浅棕色肤色)
- 标志物：Power BI 屏幕、KPI 卡片、绿色 #107c10 图表点缀
- 出现模块：0–7；所有 PBI 合成场景
- 下三分之一：Priya Sharma · BI Analyst
- edge-tts 声音：en-US-AriaNeural

James Okonkwo · Data Analyst · MHP (VALIDATION / SQL)
- 年龄感 28–38；理性、数据验证；平板或显示器上 SQL 图标
- 肤色：dark brown (深棕色肤色)
- 标志物：与 Priya 同框、SQL/验证场景
- 出现模块：0–1, 4, 7
- 下三分之一：James Okonkwo · Data Analyst
- edge-tts 声音：en-US-EricNeural

Narrator (旁白): en-US-AndrewNeural

【跨角色规则】
- 六人体现 NYC 团队多样性；respectful 企业插画，无刻板漫画
- 同一角色：发型、服装色、脸型简笔画全模块一致
- 首次出场必须显示英文下三分之一（§4.2.7）
```

#### 4.2.3 初始肖像 Prompt（图片节点 — 三视图之前）

**输入位置**：新建图片节点 → §4.2.1 + 下面对应角色 + **§4.6**。**风格**：摄影写真。

**Marcus Chen — 初始肖像**

```text
【中文意图】YellowLine NYC 运营经理半身像，40 岁感，东亚或混血企业管理者，商务休闲开领衬衫，黄色 YellowLine NYC 英文工牌，短发，略皱眉但专业，浅灰背景，2D 扁平插画

【English】Half-body illustrated avatar, Marcus Chen, Operations Manager, age 40s, East Asian or mixed-heritage NYC executive, warm beige skin tone, business casual open-collar shirt, yellow YellowLine English name badge, neat short dark hair, slightly stressed professional, flat 2D corporate training, light gray background, navy yellow accents, NOT photorealistic. All visible text on screen must be in English only. No Chinese characters.
```

**Elena Vasquez — 初始肖像**

```text
【中文意图】MHP 数据架构师半身像，35–45 岁拉丁裔女性，深棕 shoulder-length 发，海军蓝 MHP blazer，持白色马克笔， calm authoritative smile，白底 2D 插画

【English】Half-body avatar, Elena Vasquez, Data Architect, Latina woman 35-45, fair skin with warm undertone, dark brown shoulder-length hair, navy MHP blazer #01065c, whiteboard marker, calm authoritative, flat 2D corporate e-learning, white background, NOT photorealistic. All visible text on screen must be in English only. No Chinese characters.
```

**Bob Müller — 初始肖像**

```text
【中文意图】初级 DE 半身像，25–32 岁，休闲商务 + 笔记本电脑， curious friendly smile，浅灰背景 2D 插画

【English】Half-body avatar, Bob Müller, Junior Data Engineer, age 25-32, fair skin tone, smart casual shirt, laptop, curious eager smile, flat 2D corporate training, light gray background, NOT photorealistic. All visible text on screen must be in English only. No Chinese characters.
```

**Sofia Alvarez — 初始肖像**

```text
【中文意图】高级 DE 导师半身像，30–40 岁拉丁裔女性，MHP 海军蓝职业装，持平板或笔记本， supportive confident，白底 2D 插画

【English】Half-body avatar, Sofia Alvarez, Senior Data Engineer, Latina woman 30-40, fair skin with warm undertone, navy MHP attire, tablet or notebook, supportive confident, flat 2D corporate e-learning, white background, NOT photorealistic. All visible text on screen must be in English only. No Chinese characters.
```

**Priya Sharma — 初始肖像**

```text
【中文意图】BI 分析师半身像，28–38 岁南亚女性，简洁发型，中性职业 blazer，持英文 KPI 卡片示意， presenter 姿态， subtle green #107c10，2D 插画

【English】Half-body avatar, Priya Sharma, BI Analyst, South Asian woman 28-38, light brown skin tone, professional blazer, small KPI card English labels, presenter pose, subtle green #107c10, flat 2D corporate training, NOT photorealistic. All visible text on screen must be in English only. No Chinese characters.
```

**James Okonkwo — 初始肖像**

```text
【中文意图】数据分析师半身像，28–38 岁黑人男性，商务休闲，平板显示抽象 SQL 图标， analytical focused，浅灰背景 2D 插画

【English】Half-body avatar, James Okonkwo, Data Analyst, Black man 28-38, dark brown skin tone, business casual, tablet with abstract SQL icons, analytical focused, flat 2D corporate e-learning, light gray background, NOT photorealistic. All visible text on screen must be in English only. No Chinese characters.
```

#### 4.2.4 角色三视图 Prompt（`/ ` → 角色三视图）

**输入位置**：以 §4.2.3 满意输出为参考 → `/` → **角色三视图** → 下面对应块 + **§4.6**。布局：front · profile · back；白底。

**Marcus Chen — 三视图**

```text
【中文】Marcus Chen 正/侧/背三视图，YellowLine NYC 英文工牌三面可见，商务休闲一致，2D 扁平，白底，无写实

【English】Character turnaround sheet, Marcus Chen Operations Manager, front side back, same outfit and hair, yellow YellowLine NYC English badge all views, flat 2D corporate training, white background, NOT photorealistic
```

**Elena Vasquez — 三视图**

```text
【中文】Elena 三视图，海军蓝 MHP 装，深棕长发，马克笔 accessory， calm 一致，2D 白底

【English】Turnaround sheet, Elena Vasquez Data Architect, front side back, navy MHP blazer, dark brown hair, marker accessory, calm authoritative, flat 2D illustration, white background, NOT photorealistic
```

**Bob Müller — 三视图**

```text
【中文】Bob 三视图，休闲商务 + 电脑/背包， curious 一致，2D 白底

【English】Turnaround sheet, Bob Müller Junior Data Engineer, front side back, smart casual, laptop or bag on back view, curious friendly, flat 2D corporate training, white background, NOT photorealistic
```

**Sofia Alvarez — 三视图**

```text
【中文】Sofia 三视图，海军蓝职业装，平板/笔记本 prop 一致， supportive 专业，2D 白底

【English】Turnaround sheet, Sofia Alvarez Senior Data Engineer, front side back, navy attire, tablet notebook prop consistent, supportive confident, flat 2D e-learning, white background, NOT photorealistic
```

**Priya Sharma — 三视图**

```text
【中文】Priya 三视图，职业装与发型一致， KPI 卡片 prop， presenter 站姿， subtle green，2D 白底

【English】Turnaround sheet, Priya Sharma BI Analyst, front side back, consistent outfit hair, KPI card prop, presenter stance, subtle green #107c10, flat 2D corporate training, white background, NOT photorealistic
```

**James Okonkwo — 三视图**

```text
【中文】James 三视图，商务休闲一致，平板 prop， analytical 一致，2D 白底

【English】Turnaround sheet, James Okonkwo Data Analyst, front side back, business casual consistent, tablet prop, analytical focused, flat 2D illustration, white background, NOT photorealistic
```

#### 4.2.5 脚本节点单角色绑定 Prompt

**输入位置**：脚本节点 → 上传三视图 + 「角色描述」。

**模板**：

```text
Character: {NAME} · {ROLE}
Visual lock: Match uploaded turnaround exactly — face, hair, outfit, props.
On-screen lower-third (English, first appearance): {NAME} · {ROLE}
Flat 2D illustration only. Do not change ethnicity or costume between scenes.
```

**六人快速复制**：

```text
Character: Marcus Chen · Operations Manager · yellow YellowLine badge · pragmatic · lower-third Marcus Chen · Operations Manager
Character: Elena Vasquez · Data Architect · whiteboard marker · calm authoritative · lower-third Elena Vasquez · Data Architect
Character: Bob Müller · Junior Data Engineer · laptop · curious eager · lower-third Bob Müller · Junior Data Engineer
Character: Sofia Alvarez · Senior Data Engineer · tablet notebook · supportive mentor · lower-third Sofia Alvarez · Senior Data Engineer
Character: Priya Sharma · BI Analyst · KPI cards green accent · presenter · lower-third Priya Sharma · BI Analyst
Character: James Okonkwo · Data Analyst · SQL tablet · analytical · lower-third James Okonkwo · Data Analyst
```

#### 4.2.6 表情 / 姿态变体（同资产，场景内追加）

**英文后缀（追加到含该角色的场景图片 prompt）**：

```text
Same character as reference turnaround. Expression: {neutral | curious | presenting | concerned | approving}. Pose: {standing | seated | pointing at screen | whiteboard gesture}. Minimal change, flat 2D.
```

| 角色 | 常用模块 | 追加英文 |
|------|----------|----------|
| Marcus | 0, 3, 5, 7, 8 | `slightly stressed reviewing reports` / `pushback concerned` / `production decision serious` / `live dispatch frustrated` |
| Elena | 1–5 | `teaching at whiteboard` / `calm approval nod` |
| Bob | 2 | `raising hand pitching` / `learning beside Sofia` |
| Sofia | 2 | `mentoring pointing at notebook ADLS2` |
| Priya | 2–7 | `presenting dashboard` / `pointing at KPI` |
| James | 0–1 | `validating data thoughtful` |

#### 4.2.7 下三分之一英文（文本节点 — 首次出场）

```text
Marcus Chen · Operations Manager
Elena Vasquez · Data Architect
Bob Müller · Junior Data Engineer
Sofia Alvarez · Senior Data Engineer
Priya Sharma · BI Analyst
James Okonkwo · Data Analyst
```

样式：海军蓝 `#01065c` 条 + 白字 + 可选黄 `#FBBF24` 竖线；3–5 秒 fade。

#### 4.2.8 角色 QA

| 检查项 | 通过标准 |
|--------|----------|
| 三视图 | 正/侧/背一致；白底；已 **创建资产** `char-{slug}` |
| 跨模块 | 所有镜头 reference **同一** 资产 |
| 文字 | 工牌、下三分之一 **仅英文** |
| 画风 | 2D 扁平；无写实 |
| 失败 | 脸型漂移 → 重跑三视图换资产，勿只改 prompt |

### 4.3 模块 Master 模板（中文）

**输入位置**：脚本节点 → 在 §4.1 全局风格 **下方** 粘贴；替换 `{占位符}`。

```text
【项目】MHP 数据工程师大师班 2026 — YellowLine NYC 出租车分析工作坊
【模块】{模块编号} — {模块中文/英文标题}
【目标时长】{如 3:45}
【输出】单条 MP4 培训片头，在课堂反思讨论前播放
【场景数】{N} 幕 — 必须与旁白脚本 Scene 时间码一一对应

【故事线（中文摘要）】
{从 animation-production-scripts.md 摘 3–5 句}

【必须出现的标语卡（如有）】
{英文标语，如 "What would YOU design?"}

【反复出现的视觉母题 — 画面标签用英文】
- 数据层：Bronze → Silver → Gold
- 平台：ADLS2 → pipeline → Gold KPI tables → Power BI
- 决策约束：Cost / Performance / Compliance（勿用中文）

【结尾】淡出至反思问题（**屏幕英文标语** + 英文旁白过渡句）
```

### 4.4 风格库附加 Prompt（图片生成器）

**输入位置**：图片节点 → 底部 **风格** → 选「摄影写真」→ 在 prompt 末尾追加：

```text
企业在线培训视频风格，Snowflake 式简洁动效，扁平插画，明亮均匀布光，干净背景，专业可信，非 cinematic。画面内所有文字必须为英文，禁止中文汉字。
```

### 4.5 视频动态 Prompt 通用模板（中文）

> **⚠️ 重要**：以下模板仅供参考。实际生产中，每个 shot 的 video prompt **必须描述该镜头特有的运动**（如 "heatmap zoom to Manhattan"、"avatar cards slide in left to right"），不能使用通用模板。通用模板会导致所有镜头动效雷同，降低视觉丰富度。参见 [animation-production-scripts.md](animation-production-scripts.md) 中各模块的逐镜头 video prompt。

**输入位置**：视频节点 → 动态描述 / 运镜（每幕可改 `{时长}` `{动作}`）：

```text
【通用 — 培训片首选】
轻微缓慢横移或微妙推近，镜头完全稳定无抖动，2D 插画企业培训风格，动作幅度极小，无快速切镜，时长约 {时长} 秒，保持画面可读性

【章节卡专用】
英文标题文字轻微 fade-in，背景几何形状缓慢移动，无人物动作，时长约 {时长} 秒

【蒙太奇专用】
快速但清晰的硬切（每卡 1–2 秒），保持同一色板，无模糊转场

【禁止】
手持摇晃、电影级景深、角色大动作、面部特写动画
```

### 4.6 画面英文后缀（每个图片 prompt 必加）

**输入位置**：第五部分各幕「图片 prompt」**末尾**（或文本节点连到所有图片节点时粘贴一次）。

**中文说明（给操作者）**：追加在每条图片 prompt 最后，防止 LibTV 在标题卡、标签、UI 里生成中文。

**英文后缀（复制粘贴）**：

```text
All visible text on screen must be in English only: chapter titles, lower-thirds, chart labels, sticky notes, UI text. No Chinese characters. English subtitles will be burned in separately — do not render Chinese in the image.
```

---

## 第五部分 — 分模块 Prompt 全文（中文）

完整 **英文** 旁白见 [animation-production-scripts.md](animation-production-scripts.md) — 粘贴到 **音频轨 + 烧录字幕**，不要写进画面 prompt。

**语言规则**：本分镜/图片/视频 prompt 用中文描述构图与动效（给制作人员）；**观众能读到的全部文字** 使用各幕「**屏幕文字**」中的 **英文原文**，或通过文本节点单独烧录。**禁止**在章节卡、便签、图表标签中使用中文。

**每幕标准输入顺序**：
1. 脚本节点分镜表 → **分镜描述**（中文 OK，仅内部；勿让分镜表「台词/画面文字」列出现中文）
2. 图片节点 → **图片 prompt** + §4.4 + **§4.6 英文后缀**
3. 视频节点 → **视频动态 prompt**
4. 文本节点 → **屏幕文字（英文）** — 与成片一致，可直接烧录

---

### 模块 0 — `mod-00-welcome.mp4`（约 3:45，7 幕）

**剧情**：Marcus 缺乏统一数据源 → MHP 组队 → Priya 提 KPI → Elena 讲奖牌架构 → 工具评估 → 「你会如何设计？」

**模块 Master（粘贴到脚本节点，在 §4.1 下方）**：

```text
【模块】0 — Welcome & Setup 欢迎与设定
【时长】3:45
【场景数】7
【标语卡】"What would YOU design?"
【故事线】Marcus 没有 NYC 出租车运营单一可信数据源。MHP 团队集结。Priya 提出 KPI 问题。Elena 介绍奖牌 Bronze/Silver/Gold。多种工具并列评估但不选赢家。学员代入 Bob 开始设计。
【结尾】反思问题卡 + 大师班标题
```

#### 第 1 幕 — 问题（0:00–0:40）

**分镜描述（脚本节点「画面」列）**：
```text
纽约夜景天际线切入 YellowLine NYC 调度中心。Marcus 桌前多屏 Excel 混乱，简化车队地图上有红色延误标记。Marcus 2D 插画头像，专业但压力可见。Snowflake 培训风格下三分之一：Marcus Chen · Operations Manager。海军蓝+出租车黄配色。
```

**图片 prompt（中文）**：
```text
纽约夜景天际线，企业培训插画，调度中心多显示器上多个 Excel 窗口，简化车队地图红色延误指示，Marcus Chen 2D 插画头像在桌前，有压力但专业，Snowflake 风格下三分之一文字「Marcus Chen · Operations Manager」，海军蓝与黄色色板，干净动效，非写实，16:9
```

**视频动态 prompt（中文）**：
```text
轻微缓慢横移扫过调度中心，Marcus 小幅点头动作，屏幕 Excel 窗口轻微闪烁，地图延误点缓慢 pulse，镜头稳定无抖动，时长约 40 秒，企业培训纪录片节奏
```

**屏幕文字**：`Marcus Chen · Operations Manager`

#### 第 2 幕 — 猜测游戏（0:40–1:10）

**分镜描述**：
```text
NYC 各区热力图动画：曼哈顿最亮，外区较暗。24 小时时钟旋转。企业信息图风格，非写实地图，黄色强调高峰时段。
```

**图片 prompt（中文）**：
```text
NYC 各区热力图动画示意，曼哈顿峰值明亮、外区较暗，24 小时时钟，企业信息图风格，非写实地图，黄色强调，白色背景，海军蓝面板，Snowflake 培训插画
```

**视频动态 prompt（中文）**：
```text
热力图 subtle 缩放聚焦曼哈顿，时钟指针缓慢旋转，各区颜色渐变 pulse，时长约 30 秒，稳定镜头
```

#### 第 3 幕 — MHP 到场（1:10–1:35）

**分镜描述**：
```text
MHP Logo 卡片，六张角色头像卡（Elena、Bob、Sofia、Priya、James 等）横向滑入，团队集结动效，白底海军蓝面板。
```

**图片 prompt（中文）**：
```text
MHP logo 卡片，六张 2D 角色头像卡横向排列 Elena Bob Sofia Priya James，团队集结企业动效，白色背景，海军蓝面板，培训视频章节过渡，扁平插画
```

**视频动态 prompt（中文）**：
```text
头像卡片从左向右依次 slide-in，轻微 bounce 停稳，Logo 轻微 fade-in，时长约 25 秒，无快速切镜
```

#### 第 4 幕 — Priya 提问（1:35–2:05）

**分镜描述**：
```text
圆角设备框内空 Power BI 线框仪表盘。KPI 问题便签动画出现。左侧 Priya、右侧 James 2D 头像。绿色 #107c10 点缀 BI 元素。
```

**图片 prompt（中文）**：
```text
圆角设备框内空 Power BI 线框仪表盘，动画便签出现 KPI 问题，左侧 Priya Sharma 头像、右侧 James Okonkwo 头像，干净 BI  mockup，绿色 #107c10 点缀，2D 企业插画
```

**视频动态 prompt（中文）**：
```text
便签一张张 fade-in 贴到线框上，线框图表占位框轻微 pulse，Priya 轻微手势，时长约 30 秒
```

#### 第 5 幕 — 奖牌预览（2:05–2:40）

**分镜描述**：
```text
Elena 在白板画 Bronze、Silver、Gold 三层。出租车图标从混乱→清洗→金星 KPI。中央奖牌堆叠图，Snowflake 分层数据可视化。
```

**图片 prompt（中文）**：
```text
Elena 在白板绘制 Bronze Silver Gold 三层，出租车图标从混乱流向清洗再到金星 KPI，中央奖牌堆叠图，Snowflake 风格分层数据可视化，2D 插画，海军蓝黄配色
```

**视频动态 prompt（中文）**：
```text
白板三层标签依次 reveal，管道箭头从左向右缓慢流动，奖牌层 subtle 高亮，时长约 35 秒
```

#### 第 6 幕 — 工具展望（2:40–3:10）

**分镜描述**：
```text
评估板：Databricks、Snowflake、dbt、AWS、Cloudera logo，无一高亮为赢家，问号点缀，企业对比矩阵，扁平图标，海军蓝背景。
```

**图片 prompt（中文）**：
```text
评估板工具 logo Databricks Snowflake dbt AWS Cloudera，无赢家高亮，问号，企业对比矩阵，扁平图标，海军蓝背景，2D 培训风格
```

**视频动态 prompt（中文）**：
```text
各 logo 依次轻微 fade-in，问号 subtle pulse，无选中动画，时长约 30 秒，稳定镜头
```

#### 第 7 幕 — CTA（3:10–3:45）

**分镜描述**：
```text
教室剪影观众，大字动画「What would YOU design?」，标题卡「MHP Data Engineer Masterclass 2026」，黄色下划线， gentle 淡出。
```

**图片 prompt（中文）**：
```text
教室剪影观众，大字「What would YOU design?」，标题卡 MHP Data Engineer Masterclass 2026，黄色强调下划线，海军蓝渐变背景，Snowflake 章节卡风格
```

**视频动态 prompt（中文）**：
```text
标语字 fade-in 后 hold，标题卡 subtle 缩放，背景几何形状缓慢移动，时长约 35 秒，章节卡专用动效
```

---

### 模块 1 — `mod-01-fundamentals.mp4`（约 2:45，5 幕）

**模块 Master**：

```text
【模块】1 — Data Engineering Fundamentals 数据工程基础
【时长】2:45
【场景数】5
【标语】"Module 1 — Think first. Then build."
【故事线】Elena 讲解奖牌分层与 ELT。Priya 等待 Gold 层。工具 landscape 不选赢家。过渡到 Silver vs Gold 反思。
```

#### 第 1 幕 — 架构（0:00–0:35）

**分镜描述**：Elena 白板展开 Bronze/Silver/Gold；Bronze 旁 ADLS2 Parquet 图标；Silver 质量与 join；Gold KPI 表。

**图片 prompt（中文）**：
```text
Elena 白板展开 Bronze Silver Gold 标签，Bronze 旁 ADLS2 Parquet 图标，Silver 层质量与 join，Gold 层 KPI 表，企业培训架构图，2D 插画，逐层 reveal
```

**视频动态 prompt（中文）**：
```text
三层标签依次从左向右 reveal，每层 subtle 高亮 2 秒，箭头向下流动，时长约 35 秒
```

#### 第 2 幕 — ETL vs ELT（0:35–1:05）

**分镜描述**：分屏动效：左 ETL 先 transform 再入库；右 ELT 先 raw load 再在仓内 transform。

**图片 prompt（中文）**：
```text
分屏动效：左 ETL transform 框在数据库前，右 ELT 先 load raw 再在 warehouse 内 transform，动画箭头，极简 Snowflake 培训风格，2D
```

**视频动态 prompt（中文）**：
```text
左右两屏箭头同步动画，transform 框 subtle pulse，时长约 30 秒，稳定分屏
```

#### 第 3 幕 — Priya 等待（1:05–1:35）

**分镜描述**：Priya 面对空 Power BI 线框，占位图表框 gentle pulse，等待状态，反射蓝 #2563eb 点缀。

**图片 prompt（中文）**：
```text
Priya 在空 Power BI 线框前，占位图表框 gentle pulse，等待状态，反射蓝 #2563eb，下三分之一字幕空间，2D 插画
```

**视频动态 prompt（中文）**：
```text
占位框缓慢 pulse，Priya 轻微耸肩或看表动作，时长约 30 秒，情绪 calm
```

#### 第 4 幕 — 工具 landscape（1:35–2:15）

**分镜描述**：Logo 评估矩阵，成本/技能/可维护性行，无选中高亮。

**图片 prompt（中文）**：
```text
Logo 评估矩阵 Databricks Snowflake dbt AWS Cloudera，成本技能可维护性行，无选中高亮，企业信息图，扁平图标
```

**视频动态 prompt（中文）**：
```text
矩阵行依次 fade-in，criteria 图标 subtle 出现，时长约 40 秒
```

#### 第 5 幕 — 过渡（2:15–2:45）

**分镜描述**：章节卡 Module 1，问题文字「What belongs in Silver vs Gold?」

**图片 prompt（中文）**：
```text
章节卡「Module 1 — Data Engineering Fundamentals」，问题文字 What belongs in Silver vs Gold?，海军蓝渐变背景，Snowflake 风格
```

**视频动态 prompt（中文）**：
```text
章节卡 fade-in，问题字 subtle 下划线动画，时长约 30 秒
```

**屏幕文字**：`Module 1 — Data Engineering Fundamentals` · `What belongs in Silver vs Gold?`

---

### 模块 2 — `mod-02-databricks.mp4`（约 2:30，5 幕）

**模块 Master**：

```text
【模块】2 — Databricks Pipeline
【时长】2:30
【场景数】5
【标语】"Module 2 — Databricks: Bronze → Silver → Gold"
【故事线】Bob 提案 Databricks。Sofia 辅导 ADLS2  ingest。管道蒙太奇。Priya Overview 页填充。实验过渡。
```

#### 第 1 幕 — Bob 提案（0:00–0:30）

**分镜描述**：会议室，Bob 举手，Databricks logo 柔和发光，Elena 点头批准。

**图片 prompt（中文）**：
```text
会议室，Bob 举手，Databricks logo 柔和发光，Elena 批准，2D 插画头像，企业培训场景，海军蓝黄配色
```

**视频动态 prompt（中文）**：
```text
Bob 举手动作，logo gentle glow pulse，Elena 点头，时长约 30 秒
```

#### 第 2 幕 — Sofia 辅导（0:30–0:50）

**分镜描述**：Notebook mockup 显示 abfss:// ADLS2 路径，Sofia 与 Bob 并排，Delta Lake Bronze 标签。

**图片 prompt（中文）**：
```text
Notebook mockup 显示 ADLS2 路径 abfss://，Sofia 与 Bob 并排，Delta Lake Bronze 标签，UI 设备框，2D 培训风
```

**视频动态 prompt（中文）**：
```text
代码行 subtle 高亮滚动，Bronze 标签 fade-in，时长约 20 秒
```

#### 第 3 幕 — 管道蒙太奇（0:50–1:40）

**分镜描述**：快切：Spark 读 Parquet → Bronze Delta → Silver 过滤 join → Gold 12 KPI 表 → Unity Catalog 标签。

**图片 prompt（中文）**：
```text
培训蒙太奇：spark 读 parquet 箭头，Bronze Delta 表，Silver 过滤 join，Gold 十二 KPI 表，Unity Catalog 标签， kinetic 但可读动效，2D
```

**视频动态 prompt（中文）**：
```text
蒙太奇硬切每卡 3–5 秒，管道箭头向右流动，保持同一色板，时长约 50 秒
```

#### 第 4 幕 — Priya Overview（1:40–2:10）

**分镜描述**：**合成**：真实 Power BI Overview 截图，按小时行程折线、按日柱状图、KPI 卡变绿，Priya 讲解。

**图片 prompt（中文）**：
```text
合成：真实 Power BI Overview 截图于圆角设备框，按小时行程折线填充，按日柱状图，KPI 卡变绿 pulse，Priya 头像讲解，勿 AI 生成仪表盘文字
```

**视频动态 prompt（中文）**：
```text
图表数据 subtle 填充动画（若用静态截图则轻微 pan），Priya 手势，时长约 30 秒
```

#### 第 5 幕 — 过渡（2:10–2:30）

**图片 prompt（中文）**：
```text
章节卡 Module 2 — Databricks: Bronze → Silver → Gold，管道箭头动画，海军蓝背景
```

**视频动态 prompt（中文）**：
```text
章节卡 + 箭头从左到右 flow，时长约 20 秒
```

---

### 模块 3 — `mod-03-snowflake.mp4`（约 2:30，5 幕）

**必现标语卡**：*Same architecture. Different implementation philosophy.*

**模块 Master**：

```text
【模块】3 — Snowflake Pipeline
【时长】2:30
【场景数】5
【结尾标语】"Same architecture. Different implementation philosophy."
【故事线】Marcus 要求 SQL 可维护性。Databricks 与 Snowflake Gold schema 并排对齐。Snowflake SQL 蒙太奇。Priya Map 页不变。实验过渡。
```

#### 第 1 幕 — Marcus 阻力（0:00–0:35）

**分镜描述**：Marcus 审阅打印仪表盘，背景 SQL 团队剪影，气泡「My team lives in SQL」，企业董事会插画。

**图片 prompt（中文）**：
```text
Marcus 审阅打印仪表盘，背景 SQL 团队剪影，对话气泡 My team lives in SQL，企业董事会 2D 插画，海军蓝黄，非写实
```

**视频动态 prompt（中文）**：
```text
Marcus 翻阅纸张，气泡 fade-in，轻微推近，时长约 35 秒
```

#### 第 2 幕 — 相同 KPI（0:35–1:05）

**分镜描述**：并排 Databricks Gold schema 与 Snowflake Gold schema，列名对齐高亮；结尾 fade-in 标语卡。

**图片 prompt（中文）**：
```text
并排两列 Databricks Gold schema 与 Snowflake Gold schema，列名对齐高亮，结尾文字卡 Same architecture. Different implementation philosophy.，Snowflake 蓝白培训 aesthetic，2D
```

**视频动态 prompt（中文）**：
```text
两列 schema 同步 scroll 对齐，高亮列 pulse，结尾标语卡 fade-in hold 5 秒，时长约 30 秒
```

**屏幕文字**：`Same architecture. Different implementation philosophy.`

#### 第 3 幕 — Snowflake 蒙太奇（1:05–1:35）

**分镜描述**：Snowflake worksheet 标签页：external stage ADLS2、COPY INTO Bronze、Silver CTAS、Gold KPI SQL。

**图片 prompt（中文）**：
```text
Snowflake worksheet 标签页：external stage ADLS2，COPY INTO Bronze，Silver CTAS，Gold KPI SQL，干净 UI mock 动效，2D 培训风
```

**视频动态 prompt（中文）**：
```text
标签页 subtle 横向 pan，SQL 行 gentle 高亮，时长约 30 秒
```

#### 第 4 幕 — Priya Map（1:35–2:05）

**分镜描述**：**合成** Power BI Map 页： borough 填色地图 + bubble zones，标注 kpi_borough_analysis、kpi_top_pickup_zones。

**图片 prompt（中文）**：
```text
合成 Power BI Map 页 borough 填色地图与 bubble zones，标注 kpi_borough_analysis kpi_top_pickup_zones，Priya 讲解，真实截图设备框
```

**视频动态 prompt（中文）**：
```text
地图 subtle pan，标注 callout fade-in，时长约 30 秒
```

#### 第 5 幕 — 过渡（2:05–2:30）

**图片 prompt（中文）**：
```text
章节卡 Module 3 — Snowflake: SQL the team can own，Snowflake logo subtle 不 dominant，2D 培训
```

**视频动态 prompt（中文）**：
```text
章节卡 fade-in，时长约 25 秒
```

---

### 模块 4 — `mod-04-dbt.mp4`（约 2:45，5 幕）

**模块 Master**：

```text
【模块】4 — dbt Pipeline
【时长】2:45
【场景数】5
【标语】"Module 4 — dbt: Transform with lineage"
【故事线】董事会审计要求。dbt DAG 血缘与测试。Priya Revenue 与质量页。dbt 双目标可移植。实验过渡。
```

#### 第 1 幕 — 审计（0:00–0:35）

**分镜描述**：董事会 Marcus 持打印仪表盘，合规盾牌图标，Elena 介绍 dbt 层在 Snowflake 之上而非替换。

**图片 prompt（中文）**：
```text
董事会 Marcus 持打印仪表盘，合规盾牌图标，Elena 介绍 dbt 层叠在 Snowflake 非替换，企业培训 2D 插画
```

**视频动态 prompt（中文）**：
```text
盾牌图标 fade-in，Elena 手势讲解，时长约 35 秒
```

#### 第 2 幕 — 血缘（0:35–1:15）

**分镜描述**：dbt DAG staging→silver→gold，ref() 箭头，dbt test 绿勾，docs lineage 图。

**图片 prompt（中文）**：
```text
dbt DAG 动画 staging 到 silver 到 gold，ref() 箭头，dbt test 绿色勾，docs lineage 图，数据治理信息图 Snowflake 风格，2D
```

**视频动态 prompt（中文）**：
```text
DAG 节点依次点亮，箭头 flow，绿勾 pop-in，时长约 40 秒
```

#### 第 3 幕 — Priya Revenue（1:15–1:50）

**分镜描述**：**合成** Power BI Revenue 与 quality scorecard，血缘箭头从 tile→dbt model→Silver 表。

**图片 prompt（中文）**：
```text
合成 Power BI Revenue 与 quality scorecard，动画血缘箭头从 tile 到 dbt model 到 Silver 表，信任叙事视觉，真实截图
```

**视频动态 prompt（中文）**：
```text
血缘箭头 draw-on 动画，tile subtle 高亮，时长约 35 秒
```

#### 第 4 幕 — 可移植性（1:50–2:15）

**分镜描述**：dbt 项目图双目标 Snowflake + Databricks，同一 models 两引擎。

**图片 prompt（中文）**：
```text
dbt 项目图双目标 Snowflake 与 Databricks 徽章，同一 models 两引擎，分屏动效，2D 企业培训
```

**视频动态 prompt（中文）**：
```text
两引擎 badge 对称 fade-in，中间 models 框 pulse，时长约 25 秒
```

#### 第 5 幕 — 过渡（2:15–2:45）

**图片 prompt（中文）**：
```text
章节卡 Module 4 — dbt: Transform with lineage，海军蓝渐变
```

**视频动态 prompt（中文）**：
```text
章节卡 fade-in，时长约 30 秒
```

---

### 模块 5 — `mod-05-production.mp4`（约 2:15，3 幕）

**模块 Master**：

```text
【模块】5 — Production Patterns 生产模式
【时长】2:15
【场景数】3
【标语】"Module 5 — Production: Run without MHP in the room"
【故事线】夜间可靠性问题。各平台调度模式。Checklist 过渡。
```

#### 第 1 幕 — 夜间问题（0:00–0:35）

**分镜描述**：空办公室夜景，日历翻页，管道图标 idle，Elena 与 Marcus，时钟 2am，calm 不恐怖。

**图片 prompt（中文）**：
```text
空办公室夜景，日历翻页，管道图标 idle，Elena 与 Marcus 2D 头像，calm 不 scary，时钟显示 2am，企业培训插画
```

**视频动态 prompt（中文）**：
```text
时钟指针缓慢移动，日历翻一页，灯光 subtle dim，时长约 35 秒
```

#### 第 2 幕 — 平台模式（0:35–1:20）

**分镜描述**：三栏：Databricks Workflow、Snowflake Task chain、GitHub Actions dbt build；增量 load、幂等 job 徽章。

**图片 prompt（中文）**：
```text
三栏动效：Databricks Workflow 图，Snowflake Task 链，GitHub Actions dbt build，增量 load 图标，幂等 job 徽章，2D 信息图
```

**视频动态 prompt（中文）**：
```text
三栏依次 reveal，workflow 节点 subtle pulse，时长约 45 秒
```

#### 第 3 幕 — 过渡（1:20–2:15）

**分镜描述**：动画 checklist：schedule / monitor / alert / version control，章节卡 Module 5。

**图片 prompt（中文）**：
```text
动画 checklist schedule monitor alert version control，章节卡 Module 5 Production，海军蓝黄，2D
```

**视频动态 prompt（中文）**：
```text
checklist 项逐条打勾 fade-in，章节卡最后出现，时长约 55 秒
```

---

### 模块 6 — `mod-06-ai.mp4`（约 2:15，3 幕）

**模块 Master**：

```text
【模块】6 — AI Features
【时长】2:15
【场景数】3
【标语】"Module 6 — AI: Augment, don't replace"
【故事线】Marcus 问 AI 能否帮分析师。演示蒙太奇在治理栈内。AI 在奖牌之上而非取代。
```

#### 第 1 幕 — Marcus 提问（0:00–0:30）

**分镜描述**：Marcus 看 Priya 筛选仪表盘，问号气泡，企业办公室插画。

**图片 prompt（中文）**：
```text
Marcus 看 Priya 筛选 dashboard，问号 speech bubble，企业办公室 2D 插画，海军蓝黄
```

**视频动态 prompt（中文）**：
```text
Marcus 指向屏幕，问号 bubble pop-in，时长约 30 秒
```

#### 第 2 幕 — AI 蒙太奇（0:30–1:20）

**分镜描述**：NL 查询→SQL 建议、Copilot 式 worksheet、Genie dashboard hint；均在治理奖牌框内；紫色 #7c3aed AI 标注。

**图片 prompt（中文）**：
```text
NL 查询转 SQL 建议，Copilot 式 worksheet 辅助，Genie dashboard hint，均在治理奖牌框内，紫色 #7c3aed AI 标注，2D 培训
```

**视频动态 prompt（中文）**：
```text
蒙太奇三卡硬切，AI 标注 purple pulse，时长约 50 秒
```

#### 第 3 幕 — 过渡（1:20–2:15）

**分镜描述**：AI 图标浮在 Bronze Silver Gold 堆叠之上（不替换），章节卡 Module 6。

**图片 prompt（中文）**：
```text
AI 图标浮在 Bronze Silver Gold 堆叠之上不替换，章节卡 Module 6 — AI: Augment don't replace，2D
```

**视频动态 prompt（中文）**：
```text
AI 图标 gentle float，奖牌层 static，章节卡 fade-in，时长约 55 秒
```

---

### 模块 7 — `mod-07-wrapup.mp4`（约 3:45，7 幕）

**开场标语**：*Six months later — YellowLine NYC HQ.*  
**结尾标语**：*Technology is a decision. Architecture is responsibility.*  
**第 4 幕：无配乐、最小动效**

**模块 Master**：

```text
【模块】7 — Dashboard Payoff & Tool Choice
【时长】3:45
【场景数】7（含 Scene 0 时间跳跃）
【开场】"Six months later — YellowLine NYC HQ."
【结尾】"Technology is a decision. Architecture is responsibility."
【故事线】时间跳跃。Priya 完整 dashboard 交接。Marcus 生产选型问题。前模块闪回。静默书写。讨论。三段式结尾卡。
【特殊】第 4 幕 2:30–2:50 无背景音乐
```

#### 第 0 幕 — 时间跳跃（0:00–0:15）

**分镜描述**：台历快速翻页，字幕「Six months later — YellowLine NYC HQ」，NYC 天际线窗景，MHP 团队已离开，安静反思 tone。

**图片 prompt（中文）**：
```text
台历页快速翻页，字幕 Six months later — YellowLine NYC HQ，NYC 天际线窗户，MHP 团队已离开，安静反思 tone，2D 插画
```

**视频动态 prompt（中文）**：
```text
日历 rapid flip 3–4 页后停，字幕 fade-in hold，时长约 15 秒
```

**屏幕文字**：`Six months later — YellowLine NYC HQ`

#### 第 1 幕 — 完整 Dashboard（0:15–1:25）

**分镜描述**：**合成蒙太奇** 五页 Power BI：Overview / Map / Time / Revenue / Efficiency 全绿 live，Priya 向 Marcus 交接。

**图片 prompt（中文）**：
```text
合成蒙太奇五页 Power BI Overview Map Time Revenue Efficiency 全绿 live，Priya 向 Marcus 交接，真实截图设备框，flashback 边框可选
```

**视频动态 prompt（中文）**：
```text
五页 hard cut 每页 10–12 秒，图表 subtle pulse，时长约 70 秒
```

#### 第 2 幕 — 生产问题（1:10–1:45）

**分镜描述**：评估板三平台图标 Databricks / Snowflake / dbt，Marcus 问生产选型，Elena 交给学员决定。

**图片 prompt（中文）**：
```text
评估板三平台图标 Databricks Snowflake dbt，Marcus 问生产选型，Elena 交给学员，2D 董事会插画
```

**视频动态 prompt（中文）**：
```text
三图标依次 highlight pulse，Marcus 手势，时长约 35 秒
```

#### 第 3 幕 — 闪回 recap（1:45–2:30）

**分镜描述**：快切闪回：notebook、worksheet、lineage 图、charts；黄海军蓝一致。

**图片 prompt（中文）**：
```text
快切闪回 notebook worksheet lineage charts，split-second cuts，黄海军蓝一致，前模块视觉 callback
```

**视频动态 prompt（中文）**：
```text
蒙太奇每卡 1–2 秒 hard cut，时长约 45 秒
```

#### 第 4 幕 — 静默书写（2:30–2:50）⚠️ 无配乐

**分镜描述**：教室文字「Write your recommendation」，**无背景音乐**，最小动效，hold 供反思。

**图片 prompt（中文）**：
```text
教室场景大字 Write your recommendation，极简构图，无人物大动作，2D 培训，留白多
```

**视频动态 prompt（中文）**：
```text
文字 static hold，几乎无 motion，仅 subtle fade-in，时长约 20 秒，禁止配乐与快速动效
```

**屏幕文字**：`Write your recommendation`

#### 第 5 幕 — 讨论（2:50–3:20）

**分镜描述**：学员剪影讨论，白板对比列 Databricks / Snowflake / dbt，协作培训场景。

**图片 prompt（中文）**：
```text
学员剪影讨论，白板对比列 Databricks Snowflake dbt，协作培训场景，2D 插画
```

**视频动态 prompt（中文）**：
```text
白板列 fade-in，剪影 subtle 点头，时长约 30 秒
```

#### 第 6 幕 — 结尾（3:20–3:45）

**分镜描述**：三张标题卡各约 5 秒：(1) Choose with evidence (2) Three constraints: Cost / Performance / Compliance (3) Technology is a decision. Architecture is responsibility.

**图片 prompt（中文）**：
```text
三张 sequential 标题卡各 5 秒：(1) Choose with evidence (2) Three constraints Cost Performance Compliance (3) Technology is a decision. Architecture is responsibility.，slow zoom，音乐 fade out
```

**视频动态 prompt（中文）**：
```text
三卡 hard cut 各 hold 5 秒，轻微 slow zoom，最后卡 hold 至结束，时长约 25 秒
```

**屏幕文字**：三卡英文全文见上

---

### 模块 8 — `mod-08-streaming.mp4`（可选，约 2:45，6 幕）

**模块 Master**：

```text
【模块】8 — Streaming（Optional）
【时长】2:45
【场景数】6
【标语】"Module 8 — Streaming (Optional)"
【故事线】Marcus 需要 live dispatch。Batch vs stream。Kafka 入门。Aiven 训练代理诚实标注。Priya DirectQuery。实验过渡。
```

#### 第 1 幕 — Marcus 升级诉求（0:00–0:35）

**分镜描述**：调度地图 stale 时间戳，batch 图标「last run 6 hours ago」，Marcus 沮丧，live demand 叙事。

**图片 prompt（中文）**：
```text
调度地图 stale 时间戳，batch 图标 last run 6 hours ago，Marcus 沮丧，live demand 叙事，2D 培训
```

**视频动态 prompt（中文）**：
```text
时间戳 red pulse，Marcus 皱眉，时长约 35 秒
```

#### 第 2 幕 — Batch vs Stream（0:35–1:05）

**分镜描述**：分屏时钟：batch 日历 vs 连续 event stream，对比信息图。

**图片 prompt（中文）**：
```text
分屏时钟 batch 日历 vs 连续 event stream，对比信息图，企业培训 diagram，2D
```

**视频动态 prompt（中文）**：
```text
左右对比箭头 animate，stream 侧 continuous flow，时长约 30 秒
```

#### 第 3 幕 — Kafka 入门（1:05–1:30）

**分镜描述**：Kafka topic 两 partition，events flow，Avro messages，简化技术图不拥挤。

**图片 prompt（中文）**：
```text
Kafka topic 两 partitions events flow Avro messages，简化技术 diagram 不 cluttered，2D 培训
```

**视频动态 prompt（中文）**：
```text
events 点沿 partition 流动，时长约 25 秒
```

#### 第 4 幕 — 训练代理标注（1:30–1:50）

**分镜描述**：叠加标签「Training: Aiven User Activity」于 ghosted YellowLine NYC 地图，workshop 数据集诚实徽章。

**图片 prompt（中文）**：
```text
标签 overlay Training: Aiven User Activity 于 ghosted YellowLine NYC 地图，honesty badge workshop 数据集，2D
```

**视频动态 prompt（中文）**：
```text
标签 fade-in hold，地图 ghosted static，时长约 20 秒
```

**屏幕文字**：`Training: Aiven User Activity`

#### 第 5 幕 — Priya Live（1:50–2:15）

**分镜描述**：Power BI DirectQuery 页 bar chart by country 更新，last refreshed 卡每分钟 tick。

**图片 prompt（中文）**：
```text
Power BI DirectQuery 页 bar chart by country 更新，last refreshed 卡 ticking one minute，真实或 mock 截图
```

**视频动态 prompt（中文）**：
```text
refresh 时间 tick 动画，bar subtle 变化，时长约 25 秒
```

#### 第 6 幕 — 过渡（2:15–2:45）

**图片 prompt（中文）**：
```text
章节卡 Module 8 — Streaming (Optional)，海军蓝渐变
```

**视频动态 prompt（中文）**：
```text
章节卡 fade-in，时长约 30 秒
```

---

### 模块 9 — `mod-09-ml.mp4`（可选，约 2:45，6 幕）

**模块 Master**：

```text
【模块】9 — Machine Learning（Optional）
【时长】2:45
【场景数】6
【标语】"Module 9 — Machine Learning (Optional)"
【故事线】小费预测需求。ML 生命周期在奖牌内。Leakage 警告。三工具路径。Priya 预测视图。实验过渡。
```

#### 第 1 幕 — Marcus 新需求（0:00–0:35）

**分镜描述**：Priya Revenue dashboard，Marcus 高亮 tip variance by hour，prediction use case。

**图片 prompt（中文）**：
```text
Priya Revenue dashboard Marcus 高亮 tip variance by hour，prediction use case，企业培训 2D
```

**视频动态 prompt（中文）**：
```text
hour 柱状 highlight pulse，Marcus 指向，时长约 35 秒
```

#### 第 2 幕 — ML 生命周期（0:35–1:05）

**分镜描述**：Silver 分支→Gold KPIs 与 ML feature table→model→predictions Gold→Power BI。

**图片 prompt（中文）**：
```text
Diagram Silver 分支到 Gold KPIs 与 ML feature table 到 model 到 predictions Gold 到 Power BI，lifecycle 信息图，2D
```

**视频动态 prompt（中文）**：
```text
分支箭头 flow 从左到右，节点依次点亮，时长约 30 秒
```

#### 第 3 幕 — Leakage 警告（1:05–1:25）

**分镜描述**：total_amount / tip_percentage 红 X；fare_amount / trip_distance / pickup_hour / borough 绿勾。

**图片 prompt（中文）**：
```text
红 X 在 total_amount tip_percentage，绿勾 fare_amount trip_distance pickup_hour borough，warning card 风格，2D 培训
```

**视频动态 prompt（中文）**：
```text
红 X pop-in，绿勾依次出现，时长约 20 秒
```

#### 第 4 幕 — 三路径（1:25–1:55）

**分镜描述**：四栏 Databricks MLflow、Snowflake Cortex ML SQL、Snowpark Python、dbt feature model Git。

**图片 prompt（中文）**：
```text
四栏 Databricks MLflow，Snowflake Cortex ML SQL，Snowpark Python，dbt feature model Git，四 panel 培训 graphic，2D
```

**视频动态 prompt（中文）**：
```text
四栏依次 reveal，logo subtle pulse，时长约 30 秒
```

#### 第 5 幕 — Priya 预测（1:55–2:15）

**分镜描述**：Power BI scatter actual vs predicted tip，可选 feature importance bars，Gold scoring table callout。

**图片 prompt（中文）**：
```text
Power BI scatter actual vs predicted tip，可选 feature importance bars，Gold scoring table callout，设备框截图
```

**视频动态 prompt（中文）**：
```text
scatter 点 subtle fade-in，callout fade-in，时长约 20 秒
```

#### 第 6 幕 — 过渡（2:15–2:45）

**图片 prompt（中文）**：
```text
章节卡 Module 9 — Machine Learning (Optional)，海军蓝渐变
```

**视频动态 prompt（中文）**：
```text
章节卡 fade-in，时长约 30 秒
```

---

## 第六部分 — 旁白接入与最终合成

| 方法 | 工具 | 输出 | 优先级 |
|------|------|------|--------|
| **edge-tts**（推荐） | Python `edge_tts` 包 | 逐段 MP3 → 拼接 + 自动生成 SRT | ★ 首选 |
| Minimax Speech 2.8 | LibTV 音频节点 | TTS + 可克隆音色 | 备选 |
| ElevenLabs | ElevenLabs Studio | WAV 导出 | 备选 |
| 人工录制 | 外部 DAW | 逐模块 WAV | 高质量需求 |

**旁白工作流（推荐 edge-tts）**：

| 步骤 | 操作 |
|------|------|
| 1 | 用 edge-tts Python 脚本按角色生成逐段 MP3（见 §6.3） |
| 2 | 拼接所有段为 `mod-XX-voiceover.mp3` |
| 3 | 自动生成 `mod-XX-subtitles.srt`（≤ 70 字符/行，英文） |
| 4 | 用 ffmpeg 合成最终视频（见阶段 E） |
| 5 | Module 7 Scene 4（2:30–2:50）：**无配乐** |

### 6.1 Minimax TTS Prompt 前缀（中文说明 + 英文粘贴）

**输入位置**：音频节点 → Minimax Speech 2.8 → 文本框 **最开头** 粘贴前缀，其后接该 Scene 或整模块英文旁白。

**中文说明（给操作者）**：
- 音色：中性美式纪录片旁白，语速中等，无戏剧腔
- 角色台词（Marcus / Elena 等）可另开音频节点，前缀加「Character voice: {角色名}, {性格简述}」
- 克隆后 **立即再生成一次**，避免 7 天未用被清除

**英文前缀（复制粘贴到 Minimax）**：

```text
Speak as a corporate e-learning narrator: clear, neutral American English, moderate pace,
professional training video tone, no drama, suitable for data engineering workshop audience.
Pronounce clearly: YellowLine NYC, Databricks, Snowflake, dbt, ADLS2, Power BI, Unity Catalog.
```

**角色台词前缀示例（单独轨道）**：

```text
Character voice — Marcus Chen, Operations Manager: pragmatic, slightly stressed but professional American English, short sentences, not theatrical.
```

```text
Character voice — Elena Vasquez, Data Architect: calm, authoritative, teaching tone, American English, measured pace.
```

### 6.2 字幕文本节点 Prompt（可选 LLM 格式化）

**输入位置**：文本节点 LLM，或外部 SRT 工具。

```text
Format English burned-in subtitles only: max 70 characters per line, max 2 lines. Output SRT timecode placeholders + English text. Do not translate to Chinese. Preserve product names: YellowLine NYC, Power BI, Snowflake, Databricks, dbt, ADLS2.

Voiceover (English):
{paste Scene English lines from animation-production-scripts.md}
```

**注意**：Minimax 克隆音色 7 天未使用会被清除 — 克隆后立刻生成一次以保留。

### 6.3 edge-tts 旁白管线（推荐方案）

**工具**：Python `edge_tts` 包（`pip install edge-tts`）。参考脚本：`workshop-2026-v2/prompts/generate-voiceover-srt.py`。

**角色声音分配**：

| 角色 | edge-tts 声音 | 特点 |
|------|--------------|------|
| Marcus Chen | `en-US-ChristopherNeural` | 务实、略带压力 |
| Elena Vasquez | `en-US-JennyNeural` | 冷静权威 |
| Bob Müller | `en-US-GuyNeural` | 好奇 eager |
| Sofia Alvarez | `en-US-EmmaNeural` | 支持性导师 |
| Priya Sharma | `en-US-AriaNeural` | 清晰展示 |
| James Okonkwo | `en-US-EricNeural` | 理性分析 |
| 旁白 | `en-US-AndrewNeural` | 中性纪录片旁白 |

**脚本模式**：

```python
# 1. 定义角色→声音映射
VOICES = {
    "marcus": "en-US-ChristopherNeural",
    "elena": "en-US-JennyNeural",
    # ...
}

# 2. 定义旁白段落（角色, 文本）
SCRIPT = [
    ("marcus", "I'm Marcus Chen, Operations Manager at YellowLine NYC..."),
    ("narrator", "Should we add cars in Midtown..."),
    # ...
]

# 3. 逐段生成 MP3（带重试逻辑）
# 4. 拼接所有段为 mod-XX-voiceover.mp3（二进制拼接，无需 ffmpeg）
# 5. 自动生成 SRT 字幕文件（70 chars/line，按段分配时间码）
```

**输出**：`audio/mod-XX-voiceover.mp3` + `audio/mod-XX-subtitles.srt`

**注意事项**：
- edge-tts 使用 Microsoft Edge TTS 服务，需要网络连接
- 生成前先用 `edge-tts --list-voices` 确认声音名称可用
- MP3 二进制拼接对同格式文件有效，无需 ffmpeg
- SRT 时间码通过解析 MP3 帧头估算段时长，精度足够用于字幕

---

## 第七部分 — 批量制作顺序

| 顺序 | 模块 | 可复用素材 |
|------|------|------------|
| 1 | mod-00 | 角色圣经、奖牌图、空 PBI 线框 |
| 2 | mod-01 | 奖牌、角色、工具矩阵 |
| 3 | mod-02 | 管道图、Overview PBI |
| 4 | mod-03 | Gold  schema 对照、Map PBI |
| 5 | mod-04 | dbt 血缘 DAG |
| 6 | mod-05 | 调度图标 |
| 7 | mod-06 | 奖牌 + AI  overlay |
| 8 | mod-07 | 全部 PBI 页、前模块闪回 |
| 9 | mod-08 | 可选 — Kafka 图 |
| 10 | mod-09 | 可选 — ML 生命周期图 |

**预估**：首遍每模块 2–3 小时；模板锁定后 1–1.5 小时。

---

## 第八部分 — 导出 QA 清单

- [ ] 1920×1080，30 fps，H.264
- [ ] 时长与旁白脚本目标 ±5 秒内
- [ ] 字幕与画面文字 **仅英文**（章节卡、下三分之一、图表标签、UI；**无中文汉字**）
- [ ] 字幕校对（Marcus Chen、YellowLine NYC、产品名英文拼写）
- [ ] 六角色三视图资产已创建（§4.2.8）；跨镜头 reference 同一节点
- [ ] 角色首次出场下三分之一英文（§4.2.7）
- [ ] 无写实人脸（2D 扁平插画）
- [ ] Module 3 结尾卡：*Same architecture. Different implementation philosophy.*
- [ ] Module 7 开场 *Six months later…*；结尾 *Technology is a decision. Architecture is responsibility.*
- [ ] Module 7 Scene 4 无背景音乐
- [ ] Priya 截图与当前 `powerbi/` 一致
- [ ] 文件路径 `media/modules/mod-XX-slug.mp4`
- [ ] 已运行 `scripts/_scaffold_generate.py`；预览模块页嵌入

---

## 第九部分 — 故障排除

| 问题 | 处理 |
|------|------|
| 角色脸跨镜头不一致 | 重跑 **§4.2.4 三视图**；**创建资产** 替换；所有镜头 reference 同一 Image 节点 |
| UI 文字乱码 | 用 **英文** 真实截图合成；勿 AI 生成仪表盘文字 |
| 画面出现中文 / 汉字 | 重生成并加 §4.6 后缀；章节卡改用文本节点贴 **英文**「屏幕文字」 |
| 画面过电影感 / 过暗 | 重贴 Global Style；加 Snowflake corporate flat illustration |
| 成片过长 | 缩短单镜；严格对齐旁白时间码 |
| 分镜表拆分不对 | 脚本节点 **全屏** 手改；每 Scene 对应一行 |
| 导演台打不开 | 浏览器开启 **图形加速** |
| 手册细节 | 见 [`LibTV使用指南.md`](../../LibTV使用指南.md) |
| 角色参考图被忽略，生成的人脸不一致 | 检查分镜节点是否已切换为 `modeType=image2image`。`libtv script storyboard` 默认 text2image，必须手动切换后再 `--left` 链接角色三视图 |
| 角色肤色跨镜头不一致 | 在图片 prompt 中显式指定肤色（如 `warm beige skin tone`），仅靠三视图参考不够 |
| 视频节点引用旧分镜图（stale） | 分镜图重新生成后，视频节点仍指向旧 URL。用 check-status 模式检测；`libtv node <video-id> --left <最新分镜id> --run` 修复 |
| `--group` 参数报错 | `--group` 需要分组 UUID（通过 `libtv group list` 获取），不是分组名称 |
| `sound=false` 参数无效 | 视频静音的正确参数是 `enableSound=off`（不是 `sound=false`） |
| API 限流 / 请求失败 | CLI 命令间加 2-3 秒延迟（`sleep 2`）；批量脚本中使用 `await sleep(2000)` |
| 旧视频节点需要清理 | 使用 `libtv node delete <name>` 显式删除旧节点；仅创建新节点不会自动清除旧节点 |

---

## 第十部分 — `libtv` CLI 自动化

通过 **`libtv` CLI** 在命令行完成全部画布操作：登录、项目管理、节点创建、分镜生成、视频生成、素材上传。CLI 完整文档见 **`.qoder/skills/libtv-cli/`**（Qoder skill）。

### 10.1 前置条件

| 项 | 说明 |
|----|------|
| `libtv` CLI | 已安装（`libtv --version` 验证） |
| 登录 | `libtv login web`（浏览器 OAuth） |
| 项目 | `libtv project use 5da20fc3ac8d43b6bece1b842471d08d`（MHP-DE-Masterclass-2026） |

### 10.2 模块一键生成流程（CLI）

以 Story 为例的完整 CLI 流程（其余模块同理，替换 `{XX}` 和 prompt 即可）。

> **⚠️ 重要**：CLI 命令间需要 2-3 秒延迟以避免 API 限流。批量脚本中使用 `sleep 2` 或 `await sleep(2000)`。

```bash
# 1. 登录 + 绑定项目
libtv login web
libtv project use e727f43626e547dba2534be3c7783054

# 2. 创建模块分组（记录 UUID，后续 --group 参数需要 UUID）
libtv group create "mod-00-welcome"
# → 用 libtv group list 获取分组 UUID

# 3. 上传参考素材（Logo 从 vectorlogo.zone 下载 + PBI 截图）
libtv upload "logo-databricks" -f ./logos/databricks.png
libtv upload "logo-snowflake" -f ./logos/snowflake.png

# 4. 创建脚本节点（aurora-3-prime 生成分镜行）
libtv node create "mod-00-script" -t script \
  --prompt "$(cat prompts/mod-00-master.txt)" \
  -s model=aurora-3-prime
libtv node "mod-00-script" --run

# 5. 生成分镜图组（nebula-ultra 关键帧，16:9）
libtv script storyboard "mod-00-script" \
  -s model=nebula-ultra -s ratio=16:9 -s quality=2K

# 5b. ⚠️ 必做：切换含角色的分镜图为 image2image + 链接角色三视图
libtv node "<storyboard-node-id>" \
  -s modeType=image2image \
  --left "char-marcus-turnaround" \
  --run
# 对每个含角色/logo 的分镜图节点重复此步骤

# 6. 逐镜头图生视频（star-video2 = Seedance 2.0 VIP）
# ⚠️ 每个 shot 使用独特的 video prompt，不要用通用模板
libtv node create "mod-00-shot01-video" -t video \
  --prompt "<该镜头独特的动态 prompt>" \
  -s model=star-video2 -s modeType=singleImage2video \
  -s ratio=16:9 -s resolution=720p -s duration=10 \
  -s enableSound=off \
  --left "<storyboard-node-id>" \
  --group <GROUP_UUID>
libtv node "mod-00-shot01-video" --run
# ... 重复其余 shots

# 6b. 引用验证：对比视频节点 imageList 与分镜图当前 URL
# 如果 stale（不一致），修复：
libtv node "<video-id>" --left "<最新分镜节点id>" --run

# 7. 旁白生成（推荐 edge-tts Python 脚本，见 §6.3）
python prompts/generate-voiceover-srt.py
# → 输出 audio/mod-00-voiceover.mp3 + audio/mod-00-subtitles.srt

# 8. 最终合成（推荐 ffmpeg，见阶段 E）
ffmpeg -f concat -safe 0 -i concat_list.txt -c copy mod-00-concat.mp4
ffmpeg -i mod-00-concat.mp4 -i audio/mod-00-voiceover.mp3 \
  -vf "subtitles=audio/mod-00-subtitles.srt:force_style='FontName=Arial,FontSize=22,PrimaryColour=&H00FFFFFF,OutlineColour=&H00000000,Outline=2,Alignment=2'" \
  -c:v libx264 -preset medium -crf 18 -c:a aac -b:a 192k \
  -shortest mod-00-final.mp4
```

### 10.3 CLI 命令速查

| 命令 | 用途 |
|------|------|
| `libtv login web` | 浏览器 OAuth 登录 |
| `libtv project use <UUID>` | 绑定画布项目 |
| `libtv project create <name>` | 新建项目 |
| `libtv group create <name>` | 新建模块分组 |
| `libtv group list` | 列出所有分组（**获取分组 UUID**） |
| `libtv node create <name> -t <type>` | 创建节点（text/image/video/audio/script） |
| `libtv node <name> --run` | 触发生成 |
| `libtv node <name> -s key=value` | 设置生成器参数 |
| `libtv node <name> --left <upstream>` | 连线（上游 → 当前） |
| `libtv node <name> --prompt <text>` | 更新节点 prompt |
| `libtv node delete <name>` | 删除节点（清理旧视频节点时使用） |
| `libtv node list` | 列出画布节点 |
| `libtv script storyboard <node>` | 从脚本节点生成分镜图组 |
| `libtv image shortcut list` | 列出可用 Slash 快捷（三视图等） |
| `libtv image shortcut <label> -n <node>` | 执行 Slash（角色三视图等） |
| `libtv upload <name> -f <path>` | 上传文件（logo / PBI 截图 / WAV） |
| `libtv model search --type <type>` | 列出某类型可用模型 |
| `libtv model <modelKey>` | 查看模型完整 schema |

### 10.4 CLI 与手动画布的分工

| 方式 | 适用场景 |
|------|----------|
| **`libtv` CLI** | 批量创建节点、分镜图组、视频生成、素材上传、自动化流水线 |
| **手动画布** | 精修角色一致性、PBI 截图合成、video-clip 时间轴编辑、Module 7 无配乐 QA |

入库前仍执行 **第八部分 QA**。

---

## 文档历史

| 日期 | 变更 |
|------|------|
| 2026-05-30 | 中文版初稿 |
| 2026-05-30 | 第四–六部分：各 LibTV 输入步骤补充完整中文 prompt（分镜/图片/视频/Slash/TTS） |
| 2026-05-30 | §1.3 / §4.6：明确英语受众 — 旁白、烧录字幕、画面内所有文字均为英文 |
| 2026-05-30 | §4.2 扩展：六人初始肖像、三视图、脚本绑定、表情变体、下三分之一与 QA |
| 2026-05-30 | §1.2：Logo 素材优先使用本地 `shared/assets/images/logos/` 官方 SVG，补充缺失清单 |
| 2026-05-30 | §2.11：模型选择优化为 Seedance 2.0 VIP（`star-video2`）+ nebula-ultra，补充 CLI 参数 |
| 2026-05-30 | §3：标准制作流程双轨化（画布操作 + `libtv` CLI 命令并行） |
| 2026-05-30 | §10：Agent 自动化替换为 `libtv` CLI 批量工作流（含完整命令速查） |
| 2026-05-30 | 交叉引用：与 [animation-production-scripts.md](animation-production-scripts.md) 合并优化（一站式旁白 + CLI 制作文档） |
| 2026-05-30 | 修复：§4.2.2 角色出场模块校正（Marcus +8, Sofia -5/6/7, James -5/6）；Logo 表补充 Module 5/6；英文版断链移除 |
| 2026-05-30 | §4.2 角色内容合并至 `animation-production-scripts.md`（CAST 圣经、三视图、绑定模板、表情变体、下三分之一、QA）；交叉引用更新 |
| 2026-05-31 | Module 0 制作经验纳入：§3 Phase A 新增 image2image 模式切换步骤(4b)和场景→镜头说明；Phase C 新增逐镜头 prompt 要求、enableSound=off、引用验证步骤；Phase D 字幕行宽 42→70；Phase E 新增 ffmpeg 合成流程（推荐）；§4.2.2 CAST 块添加肤色和 edge-tts 声音；§4.2.3 肖像 prompt 添加肤色描述；§4.5 添加逐镜头 prompt 警告；§6 重构为 edge-tts 首选 + 新增 §6.3 edge-tts 管线；§9 新增 8 条故障排除；§10.2 完善 CLI 流程（image2image、引用验证、edge-tts、ffmpeg）；§10.3 新增 group list、node delete、node prompt 命令 |
