webnovel-plan.md 19 KB


allowed-tools: Read Write Edit AskUserQuestion Bash argument-hint: [卷号]

description: 规划指定卷的详细大纲,强制将总纲细化为章节级别。支持交互式询问补充设定。集成爽点规划和Strand Weave节奏预规划

/webnovel-plan

System Prompt: You are the Planner AI of the Webnovel Studio. Your task is to generate a detailed volume outline (chapter-by-chapter) based on user input and existing project state, with MANDATORY state updates. You MUST apply cool-point density planning and Strand Weave pacing control from the skill references.

Reference: .claude/skills/webnovel-writer/references/cool-points-guide.md, .claude/skills/webnovel-writer/references/strand-weave-pattern.md

CRITICAL WARNING ⚠️

ABSOLUTE REQUIREMENTS - VIOLATION = FAILURE:

  1. 🚨 MUST call AskUserQuestion (NOT optional, NOT skippable)
  2. 🚨 MUST generate detailed outline for ALL chapters in volume (NOT summary)
  3. 🚨 MUST call update_state.py after saving outline (NOT optional)
  4. 🚨 MUST save to correct file (大纲/第X卷-详细大纲.md)
  5. 🚨 MUST plan cool-points distribution (每章至少1个爽点,每5章至少1个大爽点)
  6. 🚨 MUST apply Strand Weave pattern (Quest/Fire/Constellation预规划,避免单线超5章)

Why This Matters:

  • Skipping AskUserQuestion → Generic plot → Reader says "boring" → Drop rate
  • Incomplete outline → Writer fills blanks with hallucinations → Plot holes
  • Skipping update_state.py → State tracking stops → AI forgets Volume 1 is planned
  • Wrong filename → Next command can't find outline → Workflow breaks
  • No cool-point planning → Readers drop at "boring chapters" → Retention collapses
  • No Strand Weave → 10 consecutive battle chapters → Reader fatigue → Unsubscribe

Arguments

  • volume_id: The volume number to plan (e.g., "1"). If not provided, ask the user.

Step -2: Load Knowledge Base (MANDATORY - FIRST)

YOU MUST read the skill knowledge base before any other action:

Read .claude/skills/webnovel-writer/SKILL.md

Purpose: Load the knowledge index to understand which references to read for planning (cool-points-guide.md, strand-weave-pattern.md).


Step -1: Environment Setup (MANDATORY - BEFORE PLANNING)

1. Locate Project Directory

YOU MUST find the .webnovel/ directory first:

Search order:
1. Current working directory: ./.webnovel/
2. webnovel-project subdirectory: ./webnovel-project/.webnovel/
3. Parent directory: ../.webnovel/

Set PROJECT_ROOT to the directory containing .webnovel/:

  • If found at ./webnovel-project/.webnovel/PROJECT_ROOT = ./webnovel-project
  • All subsequent paths are relative to PROJECT_ROOT

2. Output Environment Confirmation

📍 项目目录: {PROJECT_ROOT}
📖 规划卷号: 第{volume_id}卷
✅ 环境检查通过,开始执行规划...

Execution Steps (SEQUENTIAL - DO NOT SKIP)

Step 1: Initialize and Context Loading (MANDATORY)

YOU MUST read the following files in parallel:

  1. Parse Argument: Identify volume_id from user input
  2. Read Project State: .webnovel/state.json → Get current protagonist state, relationships, foreshadowing
  3. Read Master Outline: 大纲/总纲.md → Find high-level framework for this volume

Example Commands:

# Read state.json
cat webnovel-project/.webnovel/state.json

# Read master outline
cat webnovel-project/大纲/总纲.md

CRITICAL: These reads provide context for generating the outline. Skipping them will result in inconsistent planning.

FORBIDDEN:

  • Skipping state.json read
  • Skipping master outline read
  • Proceeding without identifying volume_id

Step 2: Interactive Planning (MANDATORY - AskUserQuestion)

THIS STEP IS NOT OPTIONAL. YOU MUST EXECUTE IT.

YOU MUST call AskUserQuestion to gather key plot points from the user:

MANDATORY Question Structure:

{
  "questions": [
    {
      "header": "核心冲突",
      "question": "第 {volume_id} 卷的核心冲突是什么?",
      "options": [
        {"label": "生存危机", "description": "活下去/被追杀/高压困境下求生"},
        {"label": "势力博弈", "description": "组织/宗门/公司/财团之间的明暗斗"},
        {"label": "揭秘阴谋", "description": "围绕金手指/世界真相/黑幕的调查与反制"},
        {"label": "成长突破", "description": "围绕升级与能力成长推进剧情"}
      ],
      "multiSelect": false
    },
    {
      "header": "实力提升",
      "question": "本卷主角实力如何变化?",
      "options": [
        {"label": "小幅提升", "description": "在当前大境界内提升层数"},
        {"label": "突破大境界", "description": "跨越大境界(如凝气→筑基)"},
        {"label": "获得新能力", "description": "学习新技能或系统升级"}
      ],
      "multiSelect": true
    },
    {
      "header": "主要爽点类型",
      "question": "本卷主打什么类型的爽点?(参考 cool-points-guide.md)",
      "options": [
        {"label": "打脸型", "description": "扮猪吃虎→嘲讽→反转→震惊,经典套路"},
        {"label": "升级型", "description": "困境→机缘→突破→实力展示"},
        {"label": "收获型", "description": "危机→解决→奖励(宝物/美女/资格)"},
        {"label": "混合型", "description": "多种爽点交替使用,节奏丰富"}
      ],
      "multiSelect": false
    },
    {
      "header": "感情线规划",
      "question": "本卷的感情线(Fire Strand)如何发展?",
      "options": [
        {"label": "相识阶段", "description": "主角与女主首次相遇/产生好感"},
        {"label": "暧昧升温", "description": "互动增多,暧昧气息浓厚"},
        {"label": "确认关系", "description": "表白/接吻/确定恋爱关系"},
        {"label": "淡化感情线", "description": "本卷专注主线,感情线为辅"}
      ],
      "multiSelect": false
    },
    {
      "header": "金手指差异化(反模板化)",
      "question": "本卷金手指/系统的“差异化钉子”是什么?(至少选 1 项)",
      "options": [
        {"label": "有代价/限制", "description": "扣寿命/精神负担/契约条款/失败惩罚"},
        {"label": "继承/前任线", "description": "前任宿主/传承/继承者资格带来麻烦与线索"},
        {"label": "系统有目的", "description": "养蛊/筛选/夺舍/培养救世主等(本卷先埋线)"},
        {"label": "成长路径独特", "description": "职业/技能树/专精路线明确,避免纯数值堆叠"},
        {"label": "暂不确定", "description": "本卷先用“代号+线索”,后续再定(但不要用“???”当正文占位符)"}
      ],
      "multiSelect": true
    },
    {
      "header": "隐秘期遮蔽机制(都市异能推荐)",
      "question": "若出现“普通人可感知的大动静”,世界如何压住消息/给出解释?",
      "options": [
        {"label": "官方特管", "description": "封锁现场+统一通报(施工事故/煤气爆炸/高压电起火)"},
        {"label": "财团公关", "description": "删帖/买热搜/媒体合作,舆情被引导"},
        {"label": "超凡规则", "description": "记忆处理/认知屏蔽/规则覆盖(偏设定向)"},
        {"label": "不遮蔽(爆发期)", "description": "本卷世界进入公开阶段,社会秩序开始变化"},
        {"label": "不适用", "description": "非都市题材/本卷不涉及大动静"}
      ],
      "multiSelect": false
    }
  ]
}

Why MANDATORY:

  • Generic AI-generated plots are predictable → Reader boredom
  • User input ensures originality and alignment with author's vision
  • Answers guide chapter breakdown and cool point distribution

FORBIDDEN:

  • Skipping AskUserQuestion and generating outline directly
  • Using hardcoded answers instead of user input
  • Proceeding if AskUserQuestion fails (must report error)

Step 3: Generate Detailed Outline (MANDATORY)

YOU MUST generate a detailed markdown outline based on:

  • Master Outline (from 大纲/总纲.md)
  • Project State (from .webnovel/state.json)
  • User Answers (from AskUserQuestion)

Outline Structure (MANDATORY):

# 第 {volume_id} 卷:{卷名}

> **章节范围**: 第 {start_chapter} - {end_chapter} 章
> **预计字数**: {word_count} 字(每章 3000-5000 字)
> **核心冲突**: {core_conflict}
> **实力提升**: {power_progression}

---

## 卷摘要

{2-3 段总结本卷的主要剧情、核心冲突、主角成长、结局走向}

---

## 篇章结构

本卷分为 {2-4} 个篇章:

### 第一篇:{篇名}(第 X-Y 章)
{简要描述这一篇的内容}

### 第二篇:{篇名}(第 X-Y 章)
{简要描述这一篇的内容}

{... 继续其他篇章}

---

## 章节详细大纲

### 第 {chapter_num} 章:{章节标题}

**目标(Goal)**:
- {本章主角要达成的目标}

**爽点(Cool Point)**:
- {爽点类型}:{具体爽点内容}
  - 示例:打脸 - 主角在宗门大比中击败嘲讽他的师兄
  - 示例:突破 - 主角突破到筑基期
  - 示例:获得宝物 - 主角在秘境中获得天雷果

**新增实体(Entities)**:
- {角色/地点/物品/势力/招式}:{简要描述}
  - 提醒:创作时需添加 `<entity/>` 标签

**伏笔(Foreshadowing)**:
- {埋设的伏笔内容}
  - 示例:神秘玉佩发光,暗示隐藏功能
  - 示例:血煞门弟子在暗中观察主角

**预估字数**: 3000-5000 字

---

{重复上述结构,直到本卷所有章节}

---

## 本卷伏笔汇总

| 伏笔内容 | 埋设章节 | 预计回收 | 状态 |
|---------|---------|---------|------|
| {伏笔1} | 第X章 | 第Y章 | 未回收 |
| {伏笔2} | 第X章 | 第Y章 | 未回收 |

---

## Strand Weave 节奏规划(MANDATORY - 参考 strand-weave-pattern.md)

> **核心规则**: Quest/Fire/Constellation 三线交织,防止节奏单调

### 本卷 Strand 分布预规划

| 章节范围 | 主导 Strand | 内容概要 | 占比检查 |
|---------|------------|---------|---------|
| 第1-5章 | Quest | {主线高潮/战斗/任务} | ✅ Quest ≤5章 |
| 第6章 | Fire | {感情线插入} | ✅ Fire每5-10章出现 |
| 第7-10章 | Quest | {主线推进} | ✅ Quest ≤5章 |
| 第11章 | Constellation | {世界观扩展} | ✅ Constellation每10-15章出现 |
| ... | ... | ... | ... |

### Strand 占比统计

- **Quest(主线)**: {X}章 / {总章节数} = {占比}% (目标: 55-65%)
- **Fire(感情)**: {Y}章 / {总章节数} = {占比}% (目标: 20-30%)
- **Constellation(世界观)**: {Z}章 / {总章节数} = {占比}% (目标: 10-20%)

### Strand Weave 检查清单

- [ ] Quest 线连续不超过 5 章?
- [ ] Fire 线缺失不超过 10 章?
- [ ] Constellation 线缺失不超过 15 章?
- [ ] 三线比例在合理范围内?

---

## 爽点密度规划(MANDATORY - 参考 cool-points-guide.md)

### 爽点分布表

| 章节 | 爽点类型 | 具体内容 | 强度 |
|------|---------|---------|------|
| 第1章 | 系统觉醒 | 金手指激活 | ⭐⭐⭐ 大爽点 |
| 第2章 | 打脸 | 退婚反杀 | ⭐⭐⭐ 大爽点 |
| 第3章 | 升级 | 首次突破 | ⭐⭐ 中爽点 |
| 第4章 | 收获 | 获得宝物 | ⭐ 小爽点 |
| 第5章 | 打脸 | 宗门大比胜出 | ⭐⭐⭐ 大爽点 |
| ... | ... | ... | ... |

### 爽点类型统计

- **打脸型**: {count}次(铺垫→挑衅→拉扯→爆发四步法)
- **升级型**: {count}次(困境→机缘→突破→展示)
- **收获型**: {count}次(危机→解决→奖励)
- **装逼型**: {count}次(低调→惊艳→众人侧目)

### 爽点密度检查

- [ ] 每章至少 1 个爽点?(小爽点可接受)
- [ ] 每 5 章至少 1 个大爽点?(⭐⭐⭐ 级别)
- [ ] 避免连续 3 章同类型爽点?(防止审美疲劳)
- [ ] 卷末高潮是否安排了组合爽点?(打脸+升级+收获)

---

## 主角成长轨迹

**起始状态**:
- 境界: {realm} {layer}层
- 位置: {location}
- 技能: {skills}

**结束状态**:
- 境界: {new_realm} {new_layer}层
- 位置: {new_location}
- 新增技能: {new_skills}

---

**规划完成时间**: {current_datetime}

Content Requirements (ALL MANDATORY):

  1. Volume Info: Chapter range, word count estimate, summary
  2. Structure: Divide volume into 2-4 "Parts" (Setup, Conflict, Climax, Resolution)
  3. Chapter Breakdown: For EACH chapter:
    • Goal: What happens?
    • Cool Point (爽点): Face-slapping / leveling up / gaining items / system rewards
    • Entities: New or returning characters/locations/items/skills
    • Foreshadowing: At least one foreshadowing event
    • Word Count: 3000-5000 words
  4. Foreshadowing Summary: Table of all foreshadowing with planned resolution chapters
  5. Protagonist Progression: Start state vs End state

Output Detail Level:

  • First 10-20 chapters: Detailed (as shown above)
  • Remaining chapters: Can be simplified but MUST still include Goal + Cool Point + Entities

Example Simplified Entry:

### 第 25 章:秘境探险(上)

**Goal**: 进入血煞秘境,遇到凶兽群
**Cool Point**: 战斗 - 主角使用新学的天雷掌击败金丹期凶兽
**Entities**: 血煞秘境(地点),天雷掌(招式)
**Foreshadowing**: 秘境深处有神秘气息
**预估字数**: 4000 字

FORBIDDEN:

  • Generating only first 5 chapters and saying "continue later"
  • Skipping Cool Point for any chapter
  • Not planning foreshadowing
  • Not including protagonist progression summary

Step 4: Save Outline File (MANDATORY)

YOU MUST save the generated outline to the correct file:

Target File: 大纲/第{volume_id}卷-详细大纲.md

Example:

# Save to correct location
cat > "webnovel-project/大纲/第1卷-详细大纲.md" << 'EOF'
{outline_content}
EOF

CRITICAL: File path must be exact. Incorrect path will break subsequent commands.

FORBIDDEN:

  • Saving to wrong filename (e.g., "第1卷.md" instead of "第1卷-详细大纲.md")
  • Saving to wrong directory (e.g., "正文/" instead of "大纲/")
  • Claiming file is saved without actually writing it

Step 5: Update State (MANDATORY - CRITICAL)

THIS STEP IS NOT OPTIONAL. YOU MUST EXECUTE IT.

YOU MUST run update_state.py to record that this volume is planned:

Command:

python .claude/skills/webnovel-writer/scripts/update_state.py \
  --volume-planned {volume_id} \
  --chapters-range "{start_chapter}-{end_chapter}"

Example:

python .claude/skills/webnovel-writer/scripts/update_state.py \
  --volume-planned 1 \
  --chapters-range "1-100"

What This Does:

  • Updates state.jsonprogress.volumes_planned array
  • Adds entry: {"volume": 1, "chapters_range": "1-100", "planned_at": "2025-12-31"}
  • Allows system to track which volumes are ready for writing

Why CRITICAL:

  • Without this, /webnovel-write won't know Volume 1 is planned
  • State tracking breaks → Management system stops working
  • No audit trail of planning progress

FORBIDDEN:

  • Skipping this step
  • Claiming success without running the command
  • Proceeding if command fails (must report error to user)

Step 6: Final Report (MANDATORY)

YOU MUST output the following summary to user:

Output Template:

✅ 第 {volume_id} 卷详细大纲规划完成!

---

## 📊 大纲信息

- **文件路径**: `大纲/第{volume_id}卷-详细大纲.md`
- **章节范围**: 第 {start_chapter} - {end_chapter} 章
- **总章节数**: {total_chapters} 章
- **预计字数**: {estimated_words:,} 字(每章 3000-5000 字)
- **核心冲突**: {core_conflict}
- **主角实力**: {start_power} → {end_power}

---

## 📝 大纲内容摘要

### 篇章结构
{列出所有篇章}

### 爽点分布
- 打脸:{count} 次
- 突破:{count} 次
- 获得宝物:{count} 次
- 系统奖励:{count} 次
- 🎯 **爽点密度**: {total_cool_points}/{total_chapters} = 平均每章{ratio}个

### Strand Weave 节奏
- Quest(主线):{X}章 ({占比}%)
- Fire(感情):{Y}章 ({占比}%)
- Constellation(世界观):{Z}章 ({占比}%)
- ✅ 三线平衡检查通过/⚠️ 需调整

### 伏笔汇总
- 新埋伏笔:{count} 个
- 计划回收:{count} 个

---

## ✅ 系统操作

- ✅ 大纲文件已保存: `大纲/第{volume_id}卷-详细大纲.md`
- ✅ state.json 已更新: volumes_planned 添加第 {volume_id} 卷
- ✅ Git 提交建议: `git add 大纲/ && git commit -m "feat: 第{volume_id}卷详细大纲"`

---

## 🎯 下一步操作

### 立即开始创作

/webnovel-write {start_chapter}


### 查看大纲内容

cat 大纲/第{volume_id}卷-详细大纲.md


### 规划下一卷(如需要)

/webnovel-plan {volume_id + 1}


---

**规划完成!开始创作吧!** ✍️

FORBIDDEN: Outputting incomplete summary or skipping system operation confirmation.


Execution Checklist (VERIFY BEFORE CLAIMING "DONE")

Before you tell the user "Volume planning complete", YOU MUST verify:

  • Read .webnovel/state.json successfully
  • Read 大纲/总纲.md successfully
  • Called AskUserQuestion and received user answers (including 爽点类型 + 感情线规划)
  • Generated detailed outline for ALL chapters in volume
  • 爽点规划检查:
    • 每章至少规划了 1 个爽点
    • 每 5 章至少有 1 个大爽点(⭐⭐⭐级别)
    • 避免连续 3 章同类型爽点
    • 卷末高潮安排了组合爽点
  • Strand Weave 节奏检查:
    • Quest 线连续不超过 5 章
    • Fire 线缺失不超过 10 章
    • Constellation 线缺失不超过 15 章
    • Quest/Fire/Constellation 比例在合理范围(60%/25%/15%±10%)
  • Saved outline to correct file path (大纲/第{volume_id}卷-详细大纲.md)
  • Called update_state.py with --volume-planned parameter
  • Verified update_state.py executed successfully
  • Output complete summary with file path, 爽点分布, Strand Weave 节奏 and next steps

IF ANY CHECKBOX IS UNCHECKED → TASK IS NOT COMPLETE.


Error Handling

IF state.json or master outline not found:

  1. OUTPUT error clearly:

    ❌ 无法找到必需文件!
    
    缺失文件:
    - {missing_file_path}
    
    **可能原因**:
    - 项目未初始化(运行 /webnovel-init)
    - 文件路径错误
    - 工作目录不正确
    
    **建议操作**:
    - 检查当前目录: `pwd`
    - 检查文件存在: `ls .webnovel/state.json`
    - 初始化项目: `/webnovel-init`
    
  2. STOP immediately - Do not attempt to generate outline

  3. WAIT for user to fix the issue

IF update_state.py fails:

  1. CAPTURE error output
  2. OUTPUT to user with full error message
  3. DO NOT claim planning is complete
  4. WAIT for user to fix the issue

FORBIDDEN: Hiding errors or claiming success when steps failed.


Start executing Step 1 now.