| name | scene-plan |
| description | 场景规划工具,完成场景清单(步骤8)→场景详细规划(步骤9)的完整场景设计链。当用户说"场景规划"、"规划场景"、"场景设计"、"场景清单"、"规划章节"时自动激活。可独立使用,也可在 snowflake-fiction 主流程中被调用。支持全量规划和局部重跑。 |
| version | 1.0.0 |
场景规划 Skill
覆盖雪花写作法中场景线的完整两步链:
| 步骤 | 内容 | 输出物 |
|---|
| 步骤8 | 场景清单(所有场景的结构化列表) | 07-场景清单.md |
| 步骤9 | 场景详细规划(每个场景的三要素展开) | 08-场景规划/场景[##]-[名].md |
使用时机
- 大纲完成后,进入正文创作前
- 修改大纲后,需要重新规划受影响的章节
- 创作中途发现某章节场景设计有问题,局部重跑
- 独立设计某几章的场景,不走完整流程
三种使用模式
模式A:全量规划(默认)
基于完整大纲,生成所有章节的场景清单和详细规划。
/scene-plan
/scene-plan --from 03-完整大纲.md
执行顺序:步骤8(全量清单)→ 步骤9(逐场景规划)
模式B:局部规划(指定章节)
只规划指定章节范围,适合修改大纲后的局部重跑。
/scene-plan 第3章
/scene-plan 第3章-第5章
/scene-plan 第3章 第7章 第10章
执行顺序:更新清单中对应行 → 重新生成指定章节的场景规划文件
模式C:仅生成清单(步骤8)
只生成场景清单,不展开详细规划。适合快速预览结构。
/scene-plan --list-only
/scene-plan 第1章-第5章 --list-only
详细执行流程
步骤8:场景清单
目标:将大纲中的每个章节拆解为具体场景,形成结构化清单
执行方式:
- 读取完整大纲文件(
03-完整大纲.md 或用户指定文件)
- 如果存在人物宝典,一并读取(确保 POV 和人物信息准确)
- 为每个章节拆解场景,遵守以下规则:
- 每个场景必须有明确冲突,无纯过渡场景
- 标注场景类型(主动/被动)
- 主动-被动场景交替出现,避免连续同类型
- 生成统计信息(总场景数、类型分布、冲突类型分布)
- 用户确认清单后,进入步骤9
场景拆解原则:
| 原则 | 说明 |
|---|
| 冲突必须存在 | 每个场景都要有人vs人/人vs自我/人vs环境的冲突 |
| 无过渡场景 | "主角走去咖啡馆"不是场景,"主角在咖啡馆被拒绝"才是 |
| 主被动交替 | 主动场景后接被动场景,形成节奏感 |
| 冲突强度递增 | 后期场景的冲突强度要高于前期 |
副本结构标注
每个副本(一段完整的故事事件)由多个场景组成,场景清单中需标注每个场景在副本三段式中的位置:
| 副本阶段 | 场景功能 | 标注 |
|---|
| 起因 | 铺垫期待,丢饵让读者预见即将发生的事 | [预热] |
| 经过 | 故事主干,冲突展开,爽点逐步引爆 | [爆发] |
| 结果 | 收获成长,高潮延续,舒缓节奏 | [回味] |
检查:每个副本是否三段齐全?是否有只有"经过"没有"起因"和"结果"的副本?
副本核心人数控制
来源:番茄巅峰榜作家纸老虎(百万字群像文实战经验)。
每个副本中参与的核心角色数量需要控制,避免角色扎堆导致反应处理困难:
| 篇幅 | 主角团总人数建议 | 单副本核心人数 | 说明 |
|---|
| 短篇(<30万字) | 3人最佳 | 1-2人 | 充分彰显圆形人物的成长 |
| 长篇(30-100万字) | 3-5人 | 1-3人 | 其余适当隐没淡化 |
| 超长篇(100万字+) | 5-7人 | 1-3人 | 每副本聚焦少数角色 |
场景清单中标注:在每个副本的场景中标注「本副本核心角色」,确保不超过3人。
群像角色引入的事件触发规则
每个角色的引入都必须通过事件触发,不能扎堆出场。
引入原则:
- 从核心人物(主角)起笔,建立读者代入感
- 其余角色通过事件逐个引入,分批次展现
- 每个角色的引入事件必须展露其至少一个人设标签
- 引入动机分两类:外部压力驱动(被动入局)或内部价值驱动(主动入局)
场景清单检查:
引入事件设计模板:
角色:[名]
引入场景:[场景名]
引入方式:[主动入局/被动入局]
引入事件:[什么事件让这个角色与主角团产生连接]
展露标签:[通过这个事件展露的人设标签]
与主角的牵扯:[为什么这个角色会留在主角团]
锁链模式编排
场景编排不要用串联模式(A副本全部结束→B副本开始),要用锁链模式——下一个副本的起因场景嵌入前一个副本的经过中:
副本A场景1[预热] → 副本A场景2[爆发] → 副本B场景1[预热] → 副本A场景3[回味] → 副本B场景2[爆发]...
这样期待感不会断,高潮过后不会因为期待感耗尽而掉追读。
倒推法规划
规划场景时推荐使用倒推法:
- 先确定副本的高潮场景(爽点/结局)
- 从高潮倒推需要哪些前置场景
- 最后补充起因场景的铺垫和伏笔
时间线类型的场景编排策略
读取 00-一句话概括.md 中的时间线类型元数据,按对应策略编排场景。
顺叙:标准编排,按上述原则即可。
圆环时间线:三线并行编排
现在线 ═══╗═══════╗═══════╗═══ 闭合
过去线 ───╝───────╝ │
未来线 ───────────────────╝
- 三线占比建议:现在线 50-60%、过去线 20-30%、未来线 10-20%
- 场景清单扩展字段:增加「所属时间线」列(现在/过去/未来)
- 编排原则:
- 现在线是主线,承载核心冲突
- 过去线通过闪回揭示原因,每次闪回必须回答一个「为什么」
- 未来线制造悬念,暗示结局走向
- 时间线切换点必须有「锚点」(感官触发、物品关联、台词呼应)
- 每次切换后的第一句必须明确时间线归属
读档制:循环+分支编排
存档点 → 第1次尝试 → 失败 → 回档
存档点 → 第2次尝试(新策略)→ 失败 → 回档
存档点 → 第3次尝试(突破)→ 成功 → 新存档点
- 场景清单扩展字段:增加「循环轮次」「已知信息」列
- 防流水账要点:
- 每次循环必须有新发现(信息增量 > 0)
- 重复场景递减篇幅(第1次详写 → 第2次略写 → 第3次一笔带过)
- 情绪必须递进(好奇 → 焦虑 → 绝望 → 突破)
- 每轮循环的失败方式不同
纯循环:周期重复编排
与读档制的区别:纯循环中主角不一定记得上一轮,变化是外部的或潜意识的。
- 编排原则:
- 每个循环是一个完整的「微型三幕」
- 循环之间通过微小变化(一个细节不同)制造递进
- 用重复的句子/场景作为循环标记(读者的「锚」)
- 打破循环的关键在于主角的内在转变
多线并行:组合编排
| 常见组合 | 说明 | 切换频率 |
|---|
| 主角线 + 反派线 | 双视角对抗 | 每2-3章切换 |
| 现在线 + 回忆线 | 双时间叙事 | 每章穿插 |
| A组线 + B组线 + C组线 | 群像叙事 | 每1-2章轮转 |
- 编排原则:
- 每条线独立成立,有自己的冲突和节奏
- 交汇点是高潮,各线在此碰撞
- 切换时用「悬念钩」收尾,让读者期待回到这条线
- 场景清单中标注每个场景所属的线
输出格式:
## 场景清单
| # | 章节 | 场景名 | 地点 | POV | 参与人物 | 核心冲突 | 类型 | 副本阶段 | 预估字数 |
|---|------|--------|------|-----|----------|----------|------|----------|----------|
| 1 | 第1章 | 开场-梦想被否定 | 咖啡馆 | 主角 | 主、母 | 梦想被否定 | 主动 | [预热] | 800 |
| 2 | 第1章 | 独处-自我怀疑 | 出租屋 | 主角 | 主 | 自我怀疑 | 被动 | [爆发] | 600 |
### 统计
- 总场景数:X
- 主动场景:X(占X%)
- 被动场景:X(占X%)
- 预估总字数:X万字
### 冲突类型分布
- 人vs人:X个
- 人vs自我:X个
- 人vs环境:X个
步骤9:场景详细规划
目标:为每个场景展开三要素,形成写作时的详细参考
执行方式:
- 读取步骤8生成的场景清单
- 逐场景展开,根据类型选择对应模板:
- 主动场景:目标 → 冲突 → 挫折
- 被动场景:反应 → 困难 → 决定
- 补充场景细节(开场画面、关键对话、转折点、结尾画面)
- 绘制情绪曲线
- 每个场景保存为独立文件
主动场景三要素:
目标(Goal):主角在这一场景想要达成什么?
├── 表面目标(他说他想要什么)
└── 深层动机(他真正想要什么)
冲突(Conflict):什么力量阻碍他?
├── 人物冲突(谁在阻碍?)
├── 环境冲突(什么环境障碍?)
└── 内心冲突(什么内心挣扎?)
挫折(Disaster):结果如何?
├── 不能完全成功(要有代价)
└── 开启下一个场景的钩子
被动场景三要素:
反应(Reaction):主角对上一场景挫折的反应
├── 情绪反应(愤怒/悲伤/恐惧/困惑)
└── 行为反应(他做了什么?)
困难(Dilemma):内心的两难选择
├── 选项A(好处 vs 代价)
└── 选项B(好处 vs 代价)
决定(Decision):做出什么新决定?
└── 开启下一个主动场景
参考模板:场景规划完整模板
非顺叙时间线的场景规划补充
如果 00-一句话概括.md 中记录的时间线类型不是顺叙,步骤9的场景规划需要补充以下字段:
通用扩展字段(所有非顺叙时间线):
### 时间线信息
- **所属时间线**:[现在/过去/未来/A线/B线/第N轮循环]
- **与其他时间线的关联**:[与哪条线的哪个场景呼应]
- **信息差状态**:[读者此时知道什么/不知道什么]
- **切换锚点**:[从上一个时间线切换过来的触发物/感官/台词]
读档制场景的特殊三要素:
读档制的场景不适用标准的「目标→冲突→挫折」,改用:
已知信息(Know):主角从上一轮循环中带来了什么信息?
├── 确认的事实(上一轮验证过的)
└── 未验证的猜测(本轮要验证的)
新发现(Discover):本轮循环中发现了什么新东西?
├── 新线索(推动解谜)
└── 新规则(改变策略)
失败/突破(Fail/Break):本轮结果如何?
├── 失败 → 新的已知信息 → 下一轮循环
└── 突破 → 进入新阶段
输出管理
目录检测逻辑
1. 检查当前目录是否存在小说项目目录(含 05-完整大纲.md)
2. 如果存在 → 保存到该项目目录下
3. 如果不存在 → 询问用户大纲文件位置
4. 如果用户指定路径 → 优先使用用户指定路径
输出目录结构
[小说名]/
├── 07-场景清单.md ← 步骤8输出(全量清单)
└── 08-场景规划/
├── 场景01-开场-梦想被否定.md ← 步骤9输出(每场景一文件)
├── 场景02-独处-自我怀疑.md
└── ...
局部重跑的文件处理
重跑第3章-第5章时:
1. 更新 07-场景清单.md 中对应行(保留其他行不变)
2. 删除 08-场景规划/ 中对应章节的旧文件
3. 生成新的场景规划文件
4. 输出变更摘要(哪些文件被更新/删除/新增)
节奏检查
生成场景清单后,自动执行节奏检查:
| 检查项 | 规则 | 警告条件 |
|---|
| 主被动交替 | 避免连续3个以上同类型场景 | 连续≥3个主动或被动场景 |
| 冲突强度 | 后期场景冲突强度 ≥ 前期 | 高潮前冲突强度低于中段 |
| 场景密度 | 每章2-4个场景为宜 | 单章场景数 ≥5 或 =1 |
| 无冲突场景 | 每个场景必须有冲突 | 核心冲突栏为空 |
| 副本三段式 | 每个副本需包含预热→爆发→回味 | 副本缺少起因或结果阶段 |
| 锁链衔接 | 下一副本的预热场景嵌入前一副本中 | 副本之间无交叉铺垫 |
| 副本核心人数 | 每个副本核心角色≤3人 | 单副本核心角色>3人 |
| 角色引入 | 新角色通过事件逐个引入 | 多个新角色同一场景扎堆出场 |
节奏检查结果附在清单末尾,供用户调整。
悬念密度检查(崩文预防)
| 检查项 | 规则 | 警告条件 |
|---|
| 钩子密度 | 每章至少1.75个活跃钩子 | 钩子数 <1.5 |
| 悬念交替 | 悬念1揭晓前已铺垫悬念2 | 连续5个场景无新悬念铺垫 |
| 问题线追踪 | 每章至少1条未解决问题线 | 所有问题当章解决 |
场景规划时的悬念标注:
在步骤9(场景详细规划)中,为每个场景标注悬念点:
## 场景03:咖啡馆对峙
### 伏笔场景标注
在步骤9(场景详细规划)中,为每个场景标注伏笔信息:
```markdown
### 伏笔标注
- **埋设伏笔**:[本场景埋下的伏笔,标注深/浅]
- 深伏笔:长线铺垫,引爆时爽感强(如角色秘密、主线反转)
- 浅伏笔:短平快,当章或近章引爆(如即时打脸、小反转)
- **收束伏笔**:[本场景收束的前文伏笔]
- **主角闪光点**:[如有,标注主角的破局之策——不只是赢,而是怎么赢]
悬念点:
- 中段悬念:对方提到"你父亲的秘密"(0.5个钩子)
- 结尾悬念:对方留下神秘信封后离开(1个钩子)
- 未解决问题:信封里是什么?父亲到底隐瞒了什么?(0.5个钩子)
本场景钩子数:2个(合格)
### 换地图场景的特殊处理
换地图时,场景规划必须确保:
- 换地图的场景本身有冲突(不是纯过渡)
- 主线冲突在新地图延续
- 新地图设定通过冲突展示(不是背景说明)
```markdown
❌ 错误的换地图场景:
场景15:抵达北境
- 描写北境的雪景和城市布局
- 介绍北境的三大家族
(纯背景介绍,无冲突)
✅ 正确的换地图场景:
场景15:北境遇袭
- 主角刚进城就被杀手伏击(冲突延续)
- 通过战斗展示北境的"外来者必死"规矩(设定融入冲突)
- 结尾:杀手说"欢迎来到我的地盘"(悬念)
与主流程的集成
当 snowflake-fiction 主 skill 执行到步骤8、9时,自动调用本 skill。
主流程调用方式:
# 主流程内部调用(用户不感知)
scene-plan --step 8 --from 03-完整大纲.md
scene-plan --step 9 --from 05-场景清单.md
独立调用时,本 skill 自动检测项目上下文,读取已有大纲文件。
注意事项
- 先确认大纲:步骤8依赖完整大纲,大纲未定稿前不建议规划场景
- 清单先于规划:必须先完成步骤8的清单,再展开步骤9的详细规划
- 局部重跑时:只更新指定章节,不影响其他章节的已有规划
- 场景命名:场景名要有张力,体现核心冲突("梦想被否定"优于"咖啡馆对话")