# Novel To Script

> 将小说文本改编为视频分镜脚本，包含角色卡生成、场景拆分、分镜设计、画面提示词和声音标注。当用户提供小说内容需要改写成视频脚本、或需要从小说提取角色/场景用于AI视频生成时调用此技能。

- Skill: `xiongxianzhu/novel-to-script` (Agent Skill)
- Install (CLI): `npx skillmds@latest add xiongxianzhu/novel-to-script`
- Raw SKILL.md: https://api.skillmd.com/api/skills/xiongxianzhu/novel-to-script/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: xiongxianzhu (https://skillmd.com/u/xiongxianzhu)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/xiongxianzhu/novel-to-script

---


# 小说转视频脚本技能

将小说文本系统化地改编为可直接用于 AI 视频生成的分镜脚本，包含角色卡、场景设定、分镜设计、画面提示词和声音标注全流程。

---

## 一、适用场景

- 用户提供一段小说/故事，需要改写成视频脚本
- 需要从小说中提取角色设定并生成角色卡
- 需要将小说章节拆分为场景和分镜
- 需要为每个分镜生成 AI 图像/视频提示词
- 需要为脚本添加音效、配乐、台词等声音标注

---

## 二、工作流程总览

```
小说文本 → 角色提取 → 场景拆分 → 三幕结构大纲 → 分镜脚本 → 画面提示词 → 声音标注 → 完整剧本
```

---

## 三、详细步骤

### 步骤 1：理解输入与确认参数

先从用户输入中提取以下信息，如缺失则主动询问：

| 参数 | 说明 | 默认值 |
|------|------|--------|
| 小说原文 | 用户提供的小说片段/章节 | 必填 |
| 题材 | 悬疑/爱情/奇幻/都市/古装/科幻 等 | 从原文推断 |
| 目标时长 | 单集总时长（秒/分钟） | 60 秒（短视频） |
| 画面比例 | 9:16 竖屏 / 16:9 横屏 / 1:1 方形 | 9:16 |
| 画风 | 动漫/写实/国漫/赛博朋克 等 | 动漫风格 |
| 集数编号 | 第几集 / 第几章 | EP01 |
| 输出粒度 | 仅大纲 / 分镜脚本 / 含提示词完整脚本 | 完整脚本 |

---

### 步骤 2：角色提取与角色卡生成

从小说中提取所有出场角色，为每个主要角色生成角色卡。

#### 2.1 提取维度

| 字段 | 提取方法 |
|------|----------|
| id | 角色名拼音小写，如 `lin_xia` |
| name | 中文名 |
| role_type | 主角/配角/反派/路人 |
| appearance | 从原文描写中提取：脸型、发型、发色、眼睛、身材、标志性特征 |
| clothing | 典型服装（日常/正式/特殊场景） |
| expression_library | 8 种基础表情：happy, sad, angry, surprised, fearful, neutral, contempt, smirking |
| style_tags | 画风标签（英文） |
| negative_prompt | 通用负面提示词 |

#### 2.2 角色卡模板

```markdown
# 角色卡：{角色名}

| 字段 | 值 |
|------|-----|
| id | `{角色id}` |
| name | {角色名} |
| age | {年龄段} |
| gender | {性别} |
| role_type | {主角/配角/反派} |
| body_ratio | {身材比例} |

## 外观

{外观综合描述，含面部+发型+体貌+标志性特征}

## 服装

- **日常便装**：{描述}
- **戏剧场景**：{描述}

## 配饰

{配饰描述}

## 标志性元素

{贯穿始终的视觉符号}

## 表情库

| 表情 | 描述 |
|------|------|
| happy | {描述} |
| sad | {描述} |
| angry | {描述} |
| surprised | {描述} |
| fearful | {描述} |
| neutral | {描述} |
| contempt | {描述} |
| smirking | {描述} |

## 风格标签

`{tag1}` `{tag2}` `{tag3}`

## 反面提示词

```
worst quality, low quality, normal quality, lowres,
blurry, deformed, ugly, bad anatomy,
extra fingers, missing limbs,
3d, photorealistic, realistic
```

## 种子建议

`{数字}`

## 气质标签

`{tag1}` `{tag2}`
```

---

### 步骤 3：场景拆分

将小说内容按时间/地点/事件拆分为独立场景。

#### 3.1 场景划分原则

- **地点变化** → 新场景
- **时间跳转** → 新场景
- **核心事件切换** → 新场景
- **每个场景 1-3 分钟**（短视频可更短）

#### 3.2 场景信息表

| 字段 | 说明 |
|------|------|
| scene_id | S01, S02, ... |
| location | 场景地点 |
| time_of_day | 白天/夜晚/黎明/黄昏 |
| weather | 晴/雨/雪/雾 等 |
| mood | 场景整体情绪 |
| key_event | 核心事件 |
| characters_in_scene | 出场角色列表 |

---

### 步骤 4：三幕结构大纲

将场景组织成三幕结构，确保节奏合理。

#### 4.1 三幕比例

| 幕次 | 占比 | 功能 |
|------|------|------|
| 第一幕（开场） | ~20% | 建立场景、引入角色、设定冲突 |
| 第二幕（发展） | ~60% | 冲突升级、角色互动、情节推进 |
| 第三幕（结局） | ~20% | 高潮 + 悬念/反转/收尾 |

#### 4.2 大纲输出格式

```markdown
## 三幕结构大纲

### 第一幕（开场）— {时长}
- 场景 S01：{地点} — {事件概述}
- 场景 S02：{地点} — {事件概述}

### 第二幕（发展）— {时长}
- 场景 S03：{地点} — {事件概述}
- 场景 S04：{地点} — {事件概述}
- 场景 S05：{地点} — {事件概述}

### 第三幕（结局）— {时长}
- 场景 S06：{地点} — {事件概述}
- 结尾钩子：{悬念/反转内容}
```

---

### 步骤 5：分镜脚本设计

为每个场景设计分镜，这是核心产出。

#### 5.1 分镜节奏参考

| 分镜类型 | 建议时长 | 用途 |
|----------|----------|------|
| 环境 establishing | 3-5s | 场景开场，交代环境 |
| 角色出场 | 3-4s | 角色第一次出现 |
| 对话 MS | 2-4s | 常规对话 |
| 对话 CU 反应 | 1-3s | 听话方表情反应 |
| 情绪特写 | 2-3s | 关键情绪放大 |
| 动作场景 | 3-6s | 肢体动作、移动 |
| 转场 | 1-2s | 场景过渡 |
| 悬念收尾 | 3-5s | 集末钩子 |

#### 5.2 景别变化原则

- 避免连续 3 个以上同景别分镜
- 对话场景：MS/CU 交替 + OTS（过肩）
- 情绪递进：LS → MS → CU → ECU（越来越近）
- 动作场景：LS/MS 为主，配合动态运镜

#### 5.3 分镜字段定义

每个分镜包含以下字段：

| 字段 | 说明 |
|------|------|
| shot_id | S{场景号}_{序号}，如 S01_01 |
| shot_type | 景别：EELS/ELS/LS/FS/MS/MCU/CU/ECU |
| camera_angle | 机位：eye_level/low_angle/high_angle/dutch_angle/ots/pov |
| composition | 构图：rule_of_thirds/centered/symmetrical/leading_lines/diagonal |
| camera_movement | 运镜：static/pan/tilt/zoom/tracking/handheld/snap_zoom |
| description | 中文画面描述 |
| characters | 出场角色 id 列表 |
| actions | 角色动作描述 |
| expressions | 角色表情 |
| dialogue | 台词（角色: 内容） |
| monologue | 内心独白 |
| narration | 旁白 |
| voice_off | 画外音 |
| sound | 音效列表 |
| music | 配乐描述 |
| duration_sec | 时长（秒） |
| lighting | 光影描述 |
| color_tone | 色调 |
| mood | 氛围 |
| prompt | AI 画面生成提示词 |
| negative_prompt | 负面提示词 |
| subtitle_area | 字幕位置：top/bottom/none |

---

### 步骤 6：画面提示词生成

为每个分镜生成中英文混合的 AI 图像提示词。

#### 6.1 提示词公式

```
[画质标签] + [画风标签] + [景别] + [机位] + [构图] + [运镜] +
[角色描述] + [动作] + [表情] + [服装] +
[场景背景] + [光影] + [色调] + [氛围]
```

#### 6.2 画质标签（固定前置）

```
masterpiece, best quality, highres, detailed, ultra-detailed
```

#### 6.3 负面提示词（固定追加）

```
worst quality, low quality, normal quality, lowres,
blurry, deformed, ugly, bad anatomy,
extra fingers, missing limbs
```

#### 6.4 提示词示例

```
masterpiece, best quality, highres,
动漫风格，柔和光影，
中景，平视，三分法构图，静止镜头, medium shot, eye level, rule of thirds, static,
林夏，及肩微卷黑发，杏仁形深褐色眼眸，左眼下小痣，穿着宽松毛衣，
双手捧书低头阅读，柔和微笑,
温馨咖啡馆室内，木质桌椅，
柔和自然光从侧窗射入，暖色调，橙黄与米白，
宁静温馨氛围
```

---

### 步骤 7：声音标注设计

**重要：声音设计默认无BGM，无字幕，仅保留环境音与Foley音效。**

为每个分镜添加完整的声音信息。

#### 7.1 声音层次

| 层次 | 说明 | 示例 |
|------|------|------|
| 环境音 | 场景基础声音 | 咖啡馆环境音、雨声、车流 |
| 动作音效 | 角色动作产生的声音 | 脚步声、翻书声、门开/关 |
| 情绪音效 | 烘托情绪的音效 | 心跳声、突然寂静、紧张上升音 |
| 配乐 | 背景音乐 | 温馨钢琴曲、紧张弦乐、悲伤大提琴 |
| 台词/旁白 | 人声 | 对话、内心独白、旁白 |

#### 7.2 配乐情绪对应表

| 情绪 | 配乐描述 |
|------|----------|
| 温馨/日常 | 温柔的钢琴曲，轻柔原声吉他 |
| 浪漫 | 钢琴与小提琴二重奏，慢华尔兹 |
| 悲伤 | 独奏大提琴，缓慢哀伤 |
| 紧张/悬疑 | 低环境氛围音，滴答时钟，不和谐弦乐 |
| 追逐/动作 | 快节奏打击乐，断奏弦乐 |
| 史诗/高潮 | 史诗管弦乐，鼓声渐强，铜管号角 |
| 回忆/怀旧 | 八音盒旋律，遥远钢琴，温暖梦幻 |
| 神秘 | 黑暗氛围音，空灵垫音，散落的钢琴音符 |

---

## 四、完整输出结构

### 4.1 剧本主文件

输出到 `scripts/EP{集号}_{标题}.md`

```markdown
# {剧名} - {集号}：{集标题}

## 一、基本信息

| 字段 | 值 |
|------|-----|
| title | {剧名} |
| episode | {集号} |
| duration | {总时长} |
| genre | {题材} |
| episode_theme | {本集主题} |
| aspect_ratio | {9:16 / 16:9} |
| art_style | {画风} |

## 二、出场角色

- {角色A}：{身份/简介}
- {角色B}：{身份/简介}
- ...

## 三、三幕结构大纲

### 第一幕（开场）— {占比}
{内容}

### 第二幕（发展）— {占比}
{内容}

### 第三幕（结局）— {占比}
{内容}

## 四、分镜脚本

### 场景 S01：{场景名}

| # | shot_id | 景别 | 机位 | 运镜 | 画面描述 | 台词 | 时长 |
|---|---------|------|------|------|----------|------|------|
| 1 | S01_01 | MS | eye_level | static | {描述} | {台词} | 3s |
| ... | ... | ... | ... | ... | ... | ... | ... |

### 场景 S02：{场景名}
...

## 五、剧本总结

- 本集要点：{总结}
- 下集伏笔：{悬念}
- 总时长：{合计秒数}秒
- 总分镜数：{数量}个
```

### 4.2 角色卡文件

输出到 `prompts/characters/{角色id}.md`，每个角色一个文件。

### 4.3 场景分镜详细文件

输出到 `prompts/scenes/S{场景号}_{场景名}.md`，每个场景一个文件，包含完整提示词。

---

## 五、质量检查清单

完成脚本后，逐项检查：

### 画面维度

- [ ] 景别多样，无连续 3 个以上同景别
- [ ] 机位有变化（平视/低角/高角交替）
- [ ] 构图有节奏（三分法/居中/对称交替）
- [ ] 静态与动态运镜交替
- [ ] 角色描述完整，包含标志性特征
- [ ] 表情与情绪匹配
- [ ] 光影与场景时间/天气匹配
- [ ] 色调反映情绪（暖=温馨，冷=紧张）

### 声音维度

- [ ] **默认无BGM，无字幕**
- [ ] 每个场景有基础环境音
- [ ] 关键动作有对应Foley音效
- [ ] 情绪变化有音效切换标注（如心跳声渐强、寂静等）
- [ ] 台词与画面对位（如有台词）
- [ ] 内心独白有标注（如有）
- [ ] 悬念/高潮时刻有音效配合

### 结构维度

- [ ] 三幕结构完整，比例合理
- [ ] 角色性格一致
- [ ] 节奏张弛有度
- [ ] 结尾有钩子/悬念
- [ ] 总时长符合要求

---

## 六、使用示例

### 输入

```
请把这段小说改成短视频脚本，60秒，竖屏9:16，动漫风格：

林夏推开咖啡馆的门，风铃叮咚作响。她走到靠窗的位置坐下，点了一杯拿铁。
阳光从窗外洒进来，落在她翻开的书页上。
忽然，一个黑影笼罩了她的书页。她抬起头，看见一个穿着黑色西装的男人站在桌前。
"林小姐，我等你很久了。"男人说，嘴角带着意味深长的笑。
林夏皱眉："你是谁？"
男人没有回答，只是将一张照片放在桌上。照片上，是年轻时的林夏，和一个她从未见过的男人。
"想知道你父母的真相吗？"
林夏的瞳孔猛地收缩。
```

### 输出结构

1. 生成角色卡：林夏、神秘男人
2. 拆分场景：咖啡馆内（1个场景）
3. 三幕结构：
   - 第一幕：林夏在咖啡馆看书（约 12s）
   - 第二幕：神秘男人出现，对话对峙（约 36s）
   - 第三幕：照片揭示，悬念收尾（约 12s）
4. 分镜脚本：约 10-12 个分镜
5. 每个分镜含画面提示词和声音标注

