# Storyboard Generator

> 将剧本转换为分镜表（Shot List）和静帧提示词，支持即梦/banana模型。当需要生成分镜、制作镜头表、批量生成图片提示词时使用。

- Skill: `johnalbertini14-glitch/storyboard-generator` (Agent Skill, multi-file: 4 files)
- Install (CLI): `npx skillmds@latest add johnalbertini14-glitch/storyboard-generator`
- Raw SKILL.md: https://api.skillmd.com/api/skills/johnalbertini14-glitch/storyboard-generator/raw
- Safety review: pending (external: skill-scanner PASS, skillspector PASS)
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: johnalbertini14-glitch (https://skillmd.com/u/johnalbertini14-glitch)
- Updated: 2026-09-09
- Page: https://skillmd.com/skills/johnalbertini14-glitch/storyboard-generator

---


# 分镜表生成器

将剧本转换为分镜表和静帧提示词，输出可直接用于图像生成的标准化数据。

## 核心原则

- **叙事层对齐**：每镜头只交代 1 个"唯一信息点"
- **镜头层对齐**：景别/机位/定格瞬间必须明确
- **画面层对齐**：构图、主体位置、光色、风格锚点一致
- **提示词三段式**：风格段 + 主体段 + 画面段，引用资产库

## 输入要求

### 必填
- **剧本正文**：标准格式剧本（含场标题、人物表、镜头动作、台词）
- **STYLE_BASE**：风格锚点
- **角色卡列表**：带 @角色ID
- **场景卡列表**：带 SceneKey

### 可选
- **道具卡列表**：带 PropKey
- **STYLE_VAR**：风格变体（回忆/梦境等）
- **画幅**：默认 16:9
- **镜头密度**：默认 18 镜头/集

## 生成流程

### 步骤 1：分析剧本结构

提取本集信息：
- 本集目标/主情绪
- 钩子点
- 场景列表
- 主要角色

### 步骤 2：导演三帧分镜（每场）

为每场生成 3 张关键帧：
- **起帧**：建立环境与关系
- **爆帧**：冲突/动作爆点
- **钩帧**：悬念/转场/情绪余波

### 步骤 3：展开完整镜头表

基于三帧法展开为完整镜头表。

### 步骤 4：生成提示词

为每个镜头生成三段式提示词。

## 输出格式

### 1. 本集导演锚点总结

```text
## 本集导演锚点

- **本集目标：**{一句话目标}
- **主情绪：**{紧张/热血/温馨/压抑}
- **钩子：**{前10秒抓手}
- **场景列表：**
  - 1-1 {场景名}
  - 1-2 {场景名}
  - ...
- **主要角色：**@角色1, @角色2
```

### 2. 导演三帧分镜法（每场）

```text
### 场次：{场号} {场景名}

#### 起帧 (KF_A)
- **镜头ID：**E{集}_S{场}_KF_A
- **目的标签：**信息/情绪/动作/反转/钩子（选1）
- **唯一信息点：**{一句话}
- **定格瞬间：**{一句话，可截图}
- **景别/机位：**{全景/中景/近景/特写} + {平视/俯视/仰视/主观}
- **主导运镜：**静止/微推/拉远/轻摇/跟拍（选1）

**提示词（banana版）：**
- 风格：{STYLE_BASE}
- 主体：{@角色ID形象描述}，{本镜头表情动作}
- 画面：{SceneKey场景描述}，{景别}，{机位}，{构图}，{定格瞬间}

**提示词（即梦版）：**
- 风格：{STYLE_BASE}
- 主体：{@角色ID形象描述}，{本镜头表情动作}
- 画面：{SceneKey场景描述}，{景别}，{机位}，{光线}，{材质}，{定格瞬间}

#### 爆帧 (KF_B)
...

#### 钩帧 (KF_C)
...
```

### 3. 镜头表（Shot List）

```text
## 镜头表

| ShotID | SceneID | 景别 | 机位 | 运镜 | 目的 | 唯一信息点 | 定格瞬间 | 动作链 | 台词/OS | CharID | SceneKey | 优先级 | 状态 |
|--------|---------|------|------|------|------|------------|----------|--------|---------|--------|----------|--------|------|
| E01_S01 | 1-1 | 全景 | 平视 | 静止 | 信息 | {信息点} | {定格} | {动作} | {台词} | @xxx | scene_xxx | P0 | todo |
| E01_S02 | 1-1 | 近景 | 平视 | 微推 | 情绪 | {信息点} | {定格} | {动作} | {台词} | @xxx | scene_xxx | P1 | todo |
| ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... |
```

### 4. 静帧提示词清单

```text
## 静帧提示词

### E01_S01

**三段式提示词（banana版 - 构图优先）：**
- 风格：{STYLE_BASE一句话}
- 主体：{角色形象}，{表情动作}
- 画面：{场景描述}，{景别}{机位}，{构图描述}，{主体位置}，{定格瞬间}

**三段式提示词（即梦版 - 画风优先）：**
- 风格：{STYLE_BASE一句话}
- 主体：{角色形象}，{表情动作}
- 画面：{场景描述}，{景别}{机位}，{光线}，{材质}，{氛围}，{定格瞬间}

**完整提示词（直接复制用）：**
```
{STYLE_BASE}，{角色形象}，{表情动作}，{场景描述}，{景别}{机位}，{构图}，{定格瞬间}，高清细节
```

**负向提示词：**
文字、水印、logo、边框、二维码、现代建筑、现代服饰、枪械、车辆、血腥特写、内脏、喷溅、恐怖猎奇、低清晰度、模糊、噪点、过曝、透视错误、肢体畸形、多余手指、画面脏乱

---

### E01_S02
...
```

### 5. QC 检查清单

```text
## QC 检查

### P0（必须修复 - 影响剪辑）
- [ ] 是否缺建立/反应/转场镜头？
- [ ] 定格瞬间是否"一眼看懂"？
- [ ] 是否有轴线跳跃？
- [ ] 信息点是否清晰？

### P1（第二优先 - 影响一致性）
- [ ] 角色脸/服装是否漂移？
- [ ] 道具是否与角色卡一致？
- [ ] 场景锚点是否保持？

### P2（最后修复 - 美观问题）
- [ ] 画面是否足够干净？
- [ ] 光影是否统一？
- [ ] 是否足够电影化？
```

## 镜头表字段说明

| 字段 | 说明 | 示例 |
|------|------|------|
| ShotID | 镜头唯一标识 | E01_S01 |
| SceneID | 场次号 | 1-1 |
| 景别 | 远景/全景/中景/近景/特写 | 近景 |
| 机位 | 平视/俯视/仰视/越肩/主观 | 平视 |
| 运镜 | 静止/微推/拉远/轻摇/跟拍 | 静止 |
| 目的 | 信息/情绪/动作/反转/钩子 | 情绪 |
| 唯一信息点 | 本镜头传达的唯一信息 | 陈风发现敌人 |
| 定格瞬间 | 可截图的关键帧描述 | 陈风猛然转身，眼神警觉 |
| 动作链 | 2-4 步可视化动作 | 转身→拔剑→戒备 |
| 台词/OS | 本镜头台词或内心独白 | OS：有杀气！ |
| CharID | 主体角色 ID | @jl_chenfeng |
| SceneKey | 场景 Key | scene_jl_yaoshougu |
| 优先级 | P0/P1/P2 | P0 |
| 状态 | todo/ok/fix | todo |

## 提示词三段式拼装规则（强制）

```
最终提示词 = 风格段 + 主体段 + 画面段

┌──────────┐   ┌──────────┐   ┌──────────┐
│ 风格段    │ + │ 主体段    │ + │ 画面段    │
└────┬─────┘   └────┬─────┘   └────┬─────┘
     │              │              │
     ▼              ▼              ▼
┌──────────┐   ┌──────────┐   ┌──────────┐
│STYLE_BASE│   │@角色ID   │   │SceneKey  │
│风格一句话 │   │形象描述  │   │场景描述  │
│          │   │+表情动作 │   │+景别机位 │
│          │   │增量      │   │+定格瞬间 │
└──────────┘   └──────────┘   └──────────┘
```

## 景别选择指南

| 景别 | 用途 | 示例场景 |
|------|------|----------|
| 远景 | 建立环境、展示规模 | 山川全貌、城池远眺 |
| 全景 | 展示人物全身、空间关系 | 角色站立、多人场景 |
| 中景 | 展示动作、人物互动 | 对话、交手 |
| 近景 | 展示表情、情绪 | 反应、独白 |
| 特写 | 强调细节、关键道具 | 眼神、手部、道具 |

## 机位选择指南

| 机位 | 情绪效果 | 示例 |
|------|----------|------|
| 平视 | 中性、客观 | 日常对话 |
| 俯视 | 弱势、渺小 | 角色陷入困境 |
| 仰视 | 强势、威严 | 强者出场、压迫感 |
| 越肩 | 代入、对峙 | 两人对话 |
| 主观 | 沉浸、紧张 | 发现敌人、探索 |

## 18 镜头默认覆盖

每集建议 18 镜头分布：

```
1-1 场（约 6 镜头）
├── 建立镜头 ×1（环境/关系）
├── 信息镜头 ×1（关键道具/人物）
├── 动作镜头 ×2（主要动作）
├── 反应镜头 ×1（情绪反应）
└── 转场镜头 ×1（切出/悬念）

1-2 场（约 6 镜头）
├── ...

1-3 场（约 6 镜头）
├── ...
```

## 通用负向提示词

```text
文字、水印、logo、边框、二维码、现代建筑、现代服饰、枪械、车辆、血腥特写、内脏、喷溅、恐怖猎奇、低清晰度、模糊、噪点、过曝、透视错误、肢体畸形、多余手指、画面脏乱
```

## 质量检查

生成后必须自检：
- [ ] 每镜头是否只有 1 个唯一信息点？
- [ ] 定格瞬间是否可截图？
- [ ] 提示词是否引用资产库（STYLE_BASE/@角色ID/SceneKey）？
- [ ] 是否有建立/反应/转场镜头？
- [ ] 主体是否只有 1 个（配角虚化/剪影）？

## HTML 展示输出

### 必须输出

完成分镜表生成和图片生成后，**必须**生成 HTML 展示页面。

### 模板位置

```
assets/templates/gallery.html
```

### 输出文件命名

```
{项目名}_分镜展示_第{集数}集.html
```

保存到与分镜表相同的目录。

### 占位符替换

| 占位符 | 替换内容 | 示例 |
|--------|----------|------|
| `{{PROJECT_NAME}}` | 项目名称 | 剑来 |
| `{{EPISODE_TITLE}}` | 集数标题 | 第一集 |
| `{{TOTAL_COUNT}}` | 总镜头数 | 36 |
| `{{P0_COUNT}}` | P0核心镜头数 | 18 |
| `{{P1_COUNT}}` | P1重要镜头数 | 14 |
| `{{P2_COUNT}}` | P2氛围镜头数 | 4 |
| `{{NAV_ITEMS}}` | 导航项HTML | - |
| `{{GALLERY_SECTIONS}}` | 分组HTML（见下方格式） | - |
| `{{SHOT_DATA_JSON}}` | 镜头数据JSON对象 | - |
| `{{GENERATED_TIME}}` | 生成时间 | 2026-02-02 |

### 导航项 HTML 格式

```html
<a href="#scene-1-1" class="gallery-nav-item active">1-1 陈平安院子</a>
<a href="#scene-1-2" class="gallery-nav-item">1-2 龙窑方向</a>
<!-- 更多导航项 -->
```

### 分组 HTML 格式（按场次分组）

```html
<section id="scene-1-1" class="gallery-section">
    <div class="gallery-section-header">
        <h2 class="gallery-section-title">1-1 陈平安院子 夜内</h2>
        <span class="gallery-section-count">3镜</span>
    </div>
    <div class="gallery-grid">
        <div class="gallery-card" onclick="openLightbox('E01_S01')">
            <div class="gallery-card-image">
                <img src="{图片URL}" alt="E01_S01">
                <div class="gallery-card-badges">
                    <span class="gallery-card-badge priority p0">P0</span>
                    <span class="gallery-card-badge purpose">信息</span>
                </div>
            </div>
            <div class="gallery-card-info">
                <p class="gallery-card-shot">E01_S01</p>
                <h3 class="gallery-card-title">烛光少年</h3>
                <p class="gallery-card-desc">破败小院中有个孤苦少年</p>
                <div class="gallery-card-meta">
                    <span class="gallery-card-meta-item">景别: <span>近景</span></span>
                    <span class="gallery-card-meta-item">机位: <span>平视</span></span>
                </div>
            </div>
        </div>
        <!-- 更多镜头卡片 -->
    </div>
</section>
```

### 镜头数据 JSON 格式

```javascript
{
    "E01_S01": {
        "id": "E01_S01",
        "title": "烛光少年",
        "scene": "1-1",
        "image": "{图片URL}",
        "shotSize": "近景",
        "angle": "平视",
        "movement": "静止",
        "purpose": "信息",
        "priority": "P0",
        "info": "破败小院中有个孤苦少年",
        "moment": "清瘦的手持蜡烛，烛光摇曳，照亮昏暗的房梁",
        "prompt": "二次元国风仙侠风格，国漫赛璐璐+轻厚涂融合，干净利落线稿，柔和月光，降低饱和度15%偏冷蓝调，14岁亚洲男性少年，乌发蓬松微乱，灰褐色粗布短衫，指节粗糙有茧，手持白蜡烛，烛光映照面部，神情专注带孤寂，古代破败小屋内，木质房梁，近景，平视，烛光暖黄与月光冷蓝对比，孤寂氛围，高清细节"
    },
    // 更多镜头...
}
```

### 生成后操作

1. 保存 HTML 文件
2. 使用 `open {文件路径}` 命令在浏览器中打开展示

## 额外资源

- 完整分镜规则：[format-rules.md](references/format-rules.md)
- HTML模板：[gallery.html](assets/templates/gallery.html)

