---
name: scene-scriptwriter
description: 编写详细的场景剧本，定义每个场景的出场人物、对白/旁白、动作指示、镜头提示和情绪节奏。是连接角色设计与分镜生图的桥梁。
---

# Scene Scriptwriter — 场景剧本编剧

为视频编写按场景组织的详细剧本。每个场景明确定义出场人物、对白/旁白文本、角色动作、情绪变化和镜头提示，为后续分镜和剧照生成提供精确的内容基础。

## When to Use This Skill

- 从整体大纲展开为详细的场景级剧本
- 为角色编写对白和动作指示
- 规划多角色互动的场景
- 编写口播视频的完整台词
- 为分镜师/生图系统提供画面描述依据

## What This Skill Does

1. **场景划分**: 将视频切分为逻辑场景 (Scene)
2. **人物编排**: 定义每个场景的出场人物
3. **对白编写**: 编写口播词/对话/旁白
4. **动作指示**: 描述角色在场景中的行为和姿态
5. **情绪标注**: 标记情绪起伏和表演指导
6. **镜头提示**: 为每段内容建议镜头类型
7. **B-Roll 标记**: 标注需要 B-Roll 插入的位置
8. **音频标记**: 标注音效和 BGM 变化点

## How to Use

### 从大纲展开

```
根据大纲编写场景剧本: [outline 文件名]
```

### 从主题开始

```
为以下主题编写场景剧本:
- 主题: [话题]
- 角色: [已设计的角色名]
- 时长: 2 分钟
- 风格: 口播讲解
```

### 多场景故事

```
编写 5 个场景的故事视频剧本:
场景 1: [大致描述]
场景 2: [大致描述]
...
角色: [角色名列表]
```

## Instructions

When user requests scene script writing:

1. **加载角色信息**

   ```markdown
   ## 出场角色确认

   **已加载角色** (from `./output/characters/`):

   | 角色 | 定位 | 一致性 Token | 状态 |
   |------|------|-------------|------|
   | [Name 1] | 主持人 | ✅ 已加载 | 可用 |
   | [Name 2] | 配角 | ✅ 已加载 | 可用 |

   > 如果需要新角色，请先使用 `character-designer` 创建。
   ```

2. **场景规划**

   ```markdown
   ## 场景规划表

   **视频标题**: [标题]
   **总时长**: [X:XX]
   **场景数**: [N]
   **风格**: [口播 / 叙事 / 教程 / 对话]

   | 场景 # | 标题 | 出场人物 | 时长 | 内容概要 |
   |--------|------|---------|------|---------|
   | 1 | 开场 Hook | [角色 A] | 0:08 | 抛出问题/吸引注意 |
   | 2 | 介绍 | [角色 A] | 0:15 | 自我介绍、本期主题 |
   | 3 | 第一要点 | [角色 A, B] | 0:30 | 核心内容展开 |
   | 4 | 案例展示 | [角色 B] | 0:25 | 具体例子说明 |
   | 5 | 第二要点 | [角色 A] | 0:25 | 深入分析 |
   | 6 | 总结 CTA | [角色 A] | 0:12 | 总结 + 行动号召 |
   ```

3. **场景剧本格式**

   为每个场景编写详细剧本：

   ```markdown
   ---

   # Scene [###]: [场景标题]

   **时间**: [起止时间] ([时长])
   **地点/环境**: [场景描述 — 办公室/演播室/户外/...]
   **出场人物**: [角色列表]
   **情绪基调**: [轻松/紧张/兴奋/严肃/温暖]
   **BGM**: [音乐风格或指定曲目 / 无 / 延续上场景]

   ---

   ## 镜头 & 对白

   ### Shot 1 | [镜头类型: 全景/中景/近景/特写]

   **画面描述**:
   [详细描述画面内容 — 环境、人物位置、构图]

   **[角色 A]** *(语气: 自信, 微笑)*:
   > "大家好，欢迎来到xxx。今天我要跟你聊一个99%的人都不知道的秘密。"

   **动作**: [角色 A 对着镜头，轻微前倾，表现出分享秘密的感觉]

   📷 **镜头提示**: 中景 → 缓慢推近到近景

   ---

   ### Shot 2 | [镜头类型]

   **[B-ROLL 插入]**
   **画面描述**: [产品特写 / 网页截图 / 数据图表 / 空镜头]
   **时长**: 3-5 秒

   **[旁白/画外音]** *(角色 A 继续说话)*:
   > "根据最新数据显示，..."

   🎵 **音效**: [提示音 / 数据出现的 whoosh 音]

   ---

   ### Shot 3 | [镜头类型]

   **画面描述**:
   [切回到角色]

   **[角色 A]** *(语气: 认真)*:
   > "那么具体是怎么做到的呢？让我给你拆解一下。"

   **动作**: [角色 A 竖起一根手指，做出列举的姿势]

   📷 **镜头提示**: 近景，焦点锐利

   **[TEXT OVERLAY]**: "方法一：xxx"

   ---

   ## 场景转场

   **转场到下一场景**: [硬切 / 渐隐 / 滑动 / 缩放]
   **转场提示**: [如何衔接下一个场景的内容]

   ---

   ## 场景制作清单

   - [ ] 角色素材: [角色 A — 需 3 个镜头的剧照]
   - [ ] B-Roll: [产品特写 × 1, 数据图表 × 1]
   - [ ] 字幕: [3 条对白字幕]
   - [ ] 音效: [whoosh × 1]
   - [ ] 文字叠加: ["方法一：xxx"]
   ```

4. **对白编写指南**

   ```markdown
   ## 对白编写原则

   ### 口播视频
   - 像跟朋友聊天一样写 — 口语化
   - 每句话不超过 20 个字 (中文) / 15 个词 (英文)
   - 多用"你"直接跟观众对话
   - 用问句激发好奇: "你有没有想过为什么..."
   - 每 15-20 秒一个信息节拍
   - 标注重音: **这个** 词需要强调
   - 标注停顿: [停顿 1 秒]

   ### 多角色对话
   - 明确标注说话人
   - 角色语言风格要有区分度
   - 避免多人同时说话 (除非刻意设计)
   - 对话自然，避免"书面体"

   ### 旁白 / 画外音
   - 用 `[旁白]` 或 `[VO]` 标记
   - 与画面配合 — 说到什么就看到什么
   - 旁白语速: ~140 字/分钟 (偏慢，留给画面)

   ### 情绪标注系统
   - *(语气: XX)* — 放在角色名后
   - *(动作: XX)* — 用单独一行
   - *(表情: XX)* — 如需精确控制
   - *(节奏: 加快/放慢/停顿)* — 节奏变化
   ```

5. **B-Roll 标注**

   在剧本中明确标注 B-Roll 插入点：

   ```markdown
   ## B-Roll 标注规范

   **在对白中标注**:
   ```
   **[角色 A]**: "我们的产品可以帮你节省 50% 的时间..."
   
   **[B-ROLL: 产品界面操作画面, 3s]**
   **[B-ROLL: 时钟快进效果, 2s]**
   
   **[角色 A]**: "而且操作非常简单。"
   ```

   **B-Roll 类型标记**:
   - `[B-ROLL: PRODUCT]` — 产品特写/界面
   - `[B-ROLL: DATA]` — 数据图表/统计
   - `[B-ROLL: AMBIENCE]` — 氛围空镜/环境
   - `[B-ROLL: DEMO]` — 操作演示/动画
   - `[B-ROLL: SOCIAL]` — 社交证据/用户反馈
   ```

6. **音频标注**

   ```markdown
   ## 音频标注规范

   **BGM 变化**:
   ```
   🎵 BGM: 轻快电子乐 (16 kHz, -20dB)
   🎵 BGM: 渐强 → 高潮段
   🎵 BGM: 渐弱至静音
   ```

   **音效 (SFX)**:
   ```
   🔊 SFX: 转场 whoosh
   🔊 SFX: 文字弹出 pop
   🔊 SFX: 成功提示音 ding
   🔊 SFX: 倒计时 tick-tick-tick
   ```

   **静音时刻**:
   ```
   🔇 [静默 2 秒 — 留白效果]
   ```
   ```

7. **节奏编排**

   ```markdown
   ## 全片节奏图

   ```
   情绪
   高 ┤         ╱╲              ╱╲
      │        ╱  ╲     ╱╲    ╱  ╲
   中 ┤   ╱╲  ╱    ╲   ╱  ╲  ╱    ╲
      │  ╱  ╲╱      ╲ ╱    ╲╱      ╲
   低 ┤╱              ╲              ╲____
      └──┬───┬───┬───┬───┬───┬───┬───→ 时间
        S1  S2  S3  S4  S5  S6  S7  S8
       Hook 介绍 要点1 案例 要点2 高潮 总结 CTA
   ```

   **节奏规则**:
   - 开头 5 秒必须抓住注意力
   - 每 20-30 秒一次信息/视觉节拍
   - 中段设置一次情绪高潮
   - CTA 前有一个短暂的"沉淀"
   - B-Roll 在信息密集处提供视觉呼吸
   ```

8. **保存场景剧本**

   按场景分文件保存到 `./output/scripts/scenes/`:

   ```
   ./output/scripts/scenes/
   ├── scene-overview.md          # 场景总览表
   ├── scene-001-opening.md       # 场景 1 剧本
   ├── scene-002-intro.md         # 场景 2 剧本
   ├── scene-003-point1.md        # 场景 3 剧本
   └── ...
   ```

   同时生成汇总文件 `scene-overview.md`:

   ```markdown
   # Scene Overview — [视频标题]

   **总时长**: [X:XX]
   **场景数**: [N]
   **角色数**: [N]
   **生成日期**: [Date]

   ## 场景列表

   | # | 标题 | 时间 | 人物 | 镜头数 | B-Roll | 文件 |
   |---|------|------|------|--------|--------|------|
   | 1 | 开场 | 0:00-0:08 | A | 2 | 0 | scene-001.md |
   | 2 | 介绍 | 0:08-0:23 | A | 3 | 1 | scene-002.md |
   | ... | ... | ... | ... | ... | ... | ... |

   ## 统计

   - 总对白字数: [XXX] 字
   - 预估配音时长: [X:XX]
   - B-Roll 数量: [N] 处
   - 音效数量: [N] 个
   - 文字叠加: [N] 处
   ```

9. **输出总结**

   ```markdown
   ✅ 场景剧本编写完成！

   **视频**: [标题]
   **场景**: [N] 个场景, 总时长 [X:XX]
   **角色**: [角色名列表]
   **保存位置**: `./output/scripts/scenes/`

   **对白统计**:
   - 总字数: [XXX] 字
   - 预计配音: [X:XX]
   - B-Roll: [N] 处
   - 音效: [N] 处

   **Next Steps**:
   1. 生成分镜: `从场景剧本生成分镜表`
   2. 修改场景: `修改场景 [N] 的对白`
   3. 添加场景: `在场景 [N] 后面添加一个新场景`
   4. 生成配音: `为这些场景生成配音和字幕`

   **Quick Preview**:
   > Scene 1 Hook: "[第一句对白预览]"
   > Scene 2 Intro: "[介绍段预览]"
   ```

## Tips

- **先有大纲再展开**: 用 `script-planner` 先确定整体结构
- **角色先行**: 确保所有出场角色已通过 `character-designer` 创建
- **口播节奏**: 中文约 200 字/分钟，英文约 150 词/分钟
- **视觉优先**: 每句对白都想想"观众此刻看到什么"
- **B-Roll 提前规划**: 在写剧本时就标注，而不是后期补
- **情绪曲线**: 不要平铺直叙，要有起伏

## Related Skills

- `script-planner` — 先创建整体大纲
- `character-designer` — 先设计出场角色
- `storyboard-generator` — 将场景剧本转为分镜表
- `audio-subtitle-manager` — 从对白生成配音和字幕
