# Novel Architect

> 中文商业连载网文/男频爽文创作工作流。用于开书、市场定位、番茄网文、玄幻升级、都市逆袭、历史权谋、悬疑破局、继续写下一章、生成章节、修章、审校爽点追更、角色声纹、前三章留存、前十章规划、卷级体检、拆书建模、改纲重建、读者反馈诊断。用户提到写小说、写网文、爽文、追更、爆点、章节续写、开新书、检查章节、修复 gate/门禁、first3、market pack、beat competition、reader promise、去 AI 味时使用本技能。不要用于逐字模仿在世作者、纯文学短篇或不需要连载商业门禁的普通写作。

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

---


# Novel Architect — 商业连载网文创作 Skill

版本 3.0.0。目标是让 Agent 以“脚本状态守卫 + 模型文学判断”的混合方式，稳定完成中文商业连载网文的开书、续写、审校、修稿和长线维护。

## 0. 总原则

把本 skill 当成可自主执行的工作流，不要把 CLI 命令清单转交给用户。

- 用户负责提供高层创作目标、题材、平台、偏好、限制和重大方向选择。
- Agent 负责读取本 `SKILL.md`，必要时读取 `references/`，自行调用 `novel_architect` CLI，自行读取产物，自行生成 JSON/正文/修稿，并推进到有效停止点。
- Python CLI 是确定性工具层，负责项目状态、索引、账本、门禁、信号、hash 和文件落盘；它不是给用户手动执行的说明书。
- 模型负责文学判断和创作输出：market pack、beat 选择、正文写作、model signal、修稿、反馈诊断。
- 只有在缺少 shell/文件工具、项目路径不明且无法推断、或需要真正的创作方向取舍时，才询问用户。

有效停止点只有这些：章节 `gate.passed=true` 并已 `commit`；前三章审校失败需要重写开头或重做 market pack；缺少必要输入导致无法继续；工具权限不足；需要用户在多个重大创作方向中选择。

## 1. 运行命令约定

在能导入 `novel_architect` 的工作区执行命令。优先使用项目仓库根目录下的：

```bash
uv run python -m novel_architect <command> ...
```

如果当前环境没有 `uv` 但包已安装，使用：

```bash
python -m novel_architect <command> ...
```

如果 console script 可用，也可以使用：

```bash
novel-architect <command> ...
```

执行前先确定项目路径：用户给出路径则使用该路径；用户只说“这本书/继续写”时，先检查常见 `projects/<书名>/` 目录和 `project.json`；多个候选项目无法判断时再问用户。

`review`、`save-first3-review` 等命令返回非 0 通常表示门禁未过，不代表程序崩溃。此时读取输出 JSON、`gate.json` 或 `repair.json`，修复后重试。

## 2. Agent 自主执行契约

### 必须自己执行的动作

当任务涉及开书、续写、审校、修稿、改纲、重建、反馈诊断或状态检查时，Agent 必须自己调用 CLI、读取输出、写入文件并继续流程。

不要只回复：

```text
请运行 python -m novel_architect prepare ...
```

应当实际运行命令，检查产物，再继续下一步。只有环境没有 shell/文件权限时，才给用户命令。

### 导出的 prompt 都是 Agent 工作项

这些命令会导出 prompt 或 input 文件。Agent 需要读取它们并亲自生成对应 JSON/文本，再调用保存命令或更新文件。

| 导出命令 | 产物 | Agent 下一步 |
|---|---|---|
| `market-open` | `editorial/market_pack_prompt.md`、`market_pack_input.json` | 生成严格 JSON，调用 `market-save` |
| `beat-candidates` | `editorial/chXXXX/beat_competition_prompt.md`、`beat_competition_input.json`、`beat_options.json` | 选择/生成最强方案，调用 `beat-select`，再 `apply-beat-selection` |
| `export-signal-prompts` | 12 个 signal prompt JSON | 逐个生成 model signal JSON，调用 `save-model-signal` |
| `first3-review` | `data/reviews/first3_review_prompt.md`、`first3_review_input.json` | 生成含 `review_input_hash` 和 8 个分数的 verdict，调用 `save-first3-review` |
| `feedback-diagnose` | `data/feedback/chXXXX_diagnosis_prompt.md`、input | 生成诊断；如需保存，将诊断写入反馈 JSON 的 `diagnosis` 后调用 `save-feedback` |
| `export-title-review-prompt` / `export-intro-review-prompt` | 书名/简介审校 prompt | 生成诊断，必要时更新 `market_pack.json`、书名/简介候选或开书资料 |

不要让用户把这些 prompt 粘给另一个模型，除非用户明确要求这种人工协作模式。

## 3. 任务入口速查

| 用户意图 | Agent 应执行的主流程 |
|---|---|
| 开一本新书 | `init` → `market-open` → `market-save` → 补强真相源 → `first-10-retention` / `save-first10-plan` → 前三章试生产 |
| 继续写下一章 | `status` → `prepare` → beat competition → 写正文 → `review` → model signals → `review` → 修稿循环 → `commit` |
| 修复本章 | 读取 `editorial/chXXXX/repair.json` 和 `gate.json` → 改正文 → `review` → 必要 model signals → 再 `review` → 通过后 `commit` |
| 前三章审校 | 第 1-3 章已提交后运行 `first3-review` → 生成 verdict → `save-first3-review` |
| 改纲/改设定 | 修改 `src/*.json` 真相源 → `rebuild` → `status` → 必要时重跑受影响章节 review |
| 卷级/批量体检 | `batch-review`、`volume-review`、`benchmark`、`status` |
| 平台反馈回流 | `save-feedback` → `feedback-diagnose` → 生成诊断 → 更新后续滚动规划/market pack/章节 notes |
| 拆书建模 | `learn --sample-dir <dir>`，再把结论转成可执行的题材/节奏/章节规划调整 |

`gen-prompt` 只用于用户明确要求“导出给外部写作模型/Claude Code 的独立提示词”时。普通续写不要用 `gen-prompt` 替代 `prepare → beat → writing_task → review → commit` 主流程。

## 4. 开书流程

开新书时，不要直接开始写第 1 章。先建立市场定位和真相源。

### 4.1 初始化项目

```bash
python -m novel_architect init --project <project_dir> --title <title> --genre <genre> --platform <platform> --premise <premise> --core-hook <core_hook> --protagonist <name>
```

初始化会生成 `project.json`、`src/`、`manuscript/`、`data/`、`editorial/` 等目录。初始化只提供骨架，不代表开书策划完成。

### 4.2 生成并保存 market pack

运行 `market-open`，读取导出的 prompt/input，自行生成严格 JSON，再运行 `market-save`。

market pack 必须至少包含：

- `target_platform`
- `genre_lane`
- `target_reader`
- `reader_desires`
- `core_sell_points`
- `anti_sell_points`
- `title_candidates`
- `intro_candidates`
- `first_10_chapter_retention_plan`
- `platform_notes`
- `author_constraints`

前 10 章计划中每章必须有 `chapter`、`hook`、`visible_payoff`、`drop_off_risk`。不要写“加强冲突”“提高爽感”这种不可执行空话。

### 4.3 补强真相源

`src/` 是人工确认真相源。开书后检查并补强：

- `src/blueprint.json`：前提、核心钩子、核心冲突、主角目标。
- `src/characters.json`：角色身份、欲望、恐惧、弱点、弧线、slug。
- `src/character_voice_bible.json`：角色声纹规则、禁用口吻、行动偏好、情绪泄漏点。结构为 `{"schema_version":1,"characters":{"角色名":{...}}}`；如果文件还是 skeleton 或角色 `needs_completion=true`，先补全再正式写正文。
- `src/world.json`：世界/行业/力量规则，只保留服务冲突和爽点的设定。
- `src/taboos.json`：绝对不能碰的桥段、AI 味、题材反模式。
- `src/volumes.json`：卷级目标和滚动章纲。不要一次性把整本每章写死。
- `src/genre_config.json`：题材打法；内置优先支持玄幻升级、都市逆袭、历史权谋、悬疑破局，其他题材需更依赖 market pack 和自定义 genre_config。

修改真相源后运行：

```bash
python -m novel_architect rebuild --project <project_dir>
python -m novel_architect status --project <project_dir>
```

不要手动修改 `data/` 里的账本或派生状态来“修好”剧情；长期语义修正写入 `src/ledger_overrides.json` 或对应 `src/*.json`，再重建。

### 4.4 前十章留存计划

使用 `first-10-retention` 导出/生成计划；必要时自行细化后用 `save-first10-plan` 保存。前十章是入口漏斗，规划应具体到每章的 hook、可见收益、弃读风险和不能做什么。

## 5. 续写下一章标准流程

每章必须走完整闭环。不要直接根据聊天上下文写正文。

### 5.1 状态检查

先运行：

```bash
python -m novel_architect status --project <project_dir>
```

确定当前完成章数、gate 状态、索引健康和待处理风险。不要依赖聊天记忆判断下一章号。

### 5.2 PREPARE

```bash
python -m novel_architect prepare --project <project_dir> --query "<本章高层创作要求>"
```

产物：`editorial/chXXXX/writing_task.json`。这是写作阶段的自包含任务包，必须读取。它包含 `writer_brief`、`narrative_context`、叙事槽、商业留存字段、角色声纹、读者承诺、输出格式和硬规则。

第 4 章以后，`prepare` 会检查前三章专项审校。正常新书不得使用 `--force-after-first3-fail`；该参数只用于旧项目迁移或调试。

### 5.3 Beat competition

第 1-10 章必须执行 beat competition；第 10 章以后默认也建议执行，除非用户明确要求快速草稿。

```bash
python -m novel_architect beat-candidates --project <project_dir> --chapter <n>
```

读取导出的 prompt，生成或选择一个策略最强的方案，保存并应用：

```bash
python -m novel_architect beat-select --project <project_dir> --chapter <n> --file <selection.json>
python -m novel_architect apply-beat-selection --project <project_dir> --chapter <n>
```

选择标准：可见爽点最清楚、敌人损失最具体、角色按钮最鲜明、章尾追更理由最强、弃读风险最低。应用后重新读取最新 `writing_task.json`。

### 5.4 WRITE

根据 `writing_task.json` 写正文并保存到 `manuscript/第XXX章-标题.md`。标题必须有点击感，不要只保存为 `第XXX章.md`。

正文必须严格遵守 `writing_task.output_format.field_template`：

1. `# 第XXX章-标题`
2. `## 章节信息`
3. `## 本章大纲`
4. `## 正文`
5. `## 记忆回写`

关键要求：

- 正文不少于 2000 字，目标 2000-2500 字。
- 使用中文弯引号 `“”`。
- 第一段承接上章钩子；第 1 章则快速建立压迫、主角欲望和可见机会。
- 每章必须有普通读者 5 秒内能复述的可见爽点。
- 专业流程/术语必须转译成钱、权、脸面、身份、关系、秘密、战力、资源或安全得失。
- 角色对白必须体现 `character_voice_bible`，禁止所有人同一种战略总结口吻。
- 如制造新的读者期待，必须在记忆回写中填写新增读者承诺；如兑现期待，必须填写兑现 ID 和可见证据。

### 5.5 REVIEW 第一轮

```bash
python -m novel_architect review --project <project_dir> --chapter <n>
```

如果返回非 0，读取 `editorial/chXXXX/gate.json` 和 `repair.json`，不要跳过。

### 5.6 模型信号评估

导出信号 prompt：

```bash
python -m novel_architect export-signal-prompts --project <project_dir> --chapter <n>
```

前 10 章、卷首、卷末、高潮、转折、发布前章节：12 个 signal 都要生成并保存 model signal。

稳定期最低也要覆盖：

- `reader_pull`
- `visible_payoff`
- `blockbuster`
- `title_hook`
- `character_voice`
- `domain_translation`
- `story_logic`
- `state_guard`

保存每个模型信号：

```bash
python -m novel_architect save-model-signal --project <project_dir> --chapter <n> --signal <signal_type> --file <signal.json>
```

模型信号必须输出严格 JSON。若评分低于 7，不得写 `pass`。模型 `pass` 不能覆盖 heuristic `warn/fail`；最终采用 strictest merge。

### 5.7 REVIEW 第二轮与修稿循环

保存 model signals 后重新运行：

```bash
python -m novel_architect review --project <project_dir> --chapter <n>
```

只有 `gate.json` 中 `passed=true` 才能提交。若 `passed=false`，读取 `repair.json`，改正文后重复 review/model-signal/review，直到通过或到达有效停止点。

### 5.8 COMMIT

```bash
python -m novel_architect commit --project <project_dir> --chapter <n>
```

只在 gate 通过后执行。`commit` 会推进状态、重建索引、更新账本、处理 reader promise 创建/兑现/逾期。不要跳章提交；不要手动改 `gate.json` 或 signals 来强行通过。

## 6. 前三章专项门禁

新书第 1-3 章是试生产阶段。第 1、2、3 章分别完成 `prepare → beat → write → review → model signals → review → commit` 后，必须执行：

```bash
python -m novel_architect first3-review --project <project_dir>
```

读取 `data/reviews/first3_review_prompt.md` 和 `first3_review_input.json`，生成 verdict JSON，再保存：

```bash
python -m novel_architect save-first3-review --project <project_dir> --file <first3_verdict.json>
```

允许继续第 4 章必须同时满足：

- `verdict == "continue"`
- `bulk_continue_allowed == true`
- 原样包含当前 `review_input_hash`
- 8 个评分全部存在：`title_intro_click_score`、`first_chapter_hook_score`、`protagonist_desire_score`、`conflict_speed_score`、`first_payoff_speed_score`、`enemy_or_pressure_score`、`setting_clarity_score`、`continuation_score`
- 所有评分都是 1-10 数字，且全部 `>= 7`

如果结果是 `rewrite_opening`，先修前三章；如果是 `redo_market_pack`，先重做 market pack、书名/简介/前十章计划。不要用 `--force-after-first3-fail` 正常推进新书。

前三章正文、market pack 或入口输入变化后，旧 `first3_review` 会因 hash 过期而阻断第 4 章以后生产，必须重新运行 `first3-review` 并保存新 verdict。

## 7. 门禁与 12 个信号

`review` 生成 12 个信号、verdict、gate、repair。每次 review 都重新运行 heuristic signal；新鲜 model signal 保存为 `.model.json` 变体参与 strictest merge；final signal 取更严格结果。

| 信号 | 检测内容 | 失败处理 |
|---|---|---|
| `anti_ai` | AI 套话、抽象密度、空段落、直引号 | hard，必须修 |
| `story_logic` | POV、信息来源、力量/商业逻辑、信息倾泻 | hard，必须修 |
| `state_guard` | 钩子、代价、敌人线、必需元素、禁区、逾期 reader promise | hard/quality，必须修 |
| `emotion` | 情绪弧线、关系动态、后效 | quality，失败不可提交 |
| `blockbuster` | 压迫/反制/兑现/代价四段爽点弧线 | quality，失败不可提交 |
| `visible_payoff` | 钱/权/脸面/身份/关系/秘密/能力/资源/安全得失 | quality，失败不可提交 |
| `reader_pull` | 开场钩子、中段悬念、章尾追更、成瘾循环 | quality，失败不可提交 |
| `title_hook` | 章节标题点击感、标题/文件名一致性、章末钩子 | quality，失败不可提交 |
| `character_voice` | 角色声纹差异、禁用口吻、对白归属 | quality，失败不可提交 |
| `domain_translation` | 专业设定是否转译成普通读者可见得失 | quality，失败不可提交 |
| `novelty` | 结构/章法/结尾模式重复 | market，失败也会阻塞 |
| `continuity` | 钩子、代价、敌人线程承接 | market，失败也会阻塞 |

简单规则：只看 `gate.passed`。`passed=true` 才能 commit；`passed=false` 就修。

## 8. 长线维护

- 每章：完整执行 `prepare → beat → write → review → model signals → review → repair → commit`。
- 每 3 章：运行 `status`，检查 active/overdue reader promises、gate 变化、索引健康。
- 每 5 章：运行 `batch-review --start <a> --end <b>`，检查连续弱项和重复模式。
- 每 10 章或关键节点：运行 `volume-review`、`benchmark`，滚动更新 `volumes.json` 和后续 5-10 章规划。
- 每卷结束：检查卷目标、敌人损失、读者承诺兑现、下一卷钩子。
- 发布后：用 `save-feedback` 记录数据和评论，用 `feedback-diagnose` 转成下一轮实验建议。样本很小时不要过拟合单条评论。

## 9. 真相源与目录规则

项目结构：

```text
projects/<书名>/
├── project.json
├── src/                  # 真相源，人工确认设定和规划
├── manuscript/           # 正文章节 .md
├── data/                 # 派生状态，可重建，不手动改
├── editorial/            # 每章 brief / writing_task / signals / gate / repair
└── exports/
```

重要规则：

- `src/` 与 `manuscript/` 是 truth input。
- `data/`、`editorial/` 是运行时/派生产物；不要手动改它们来绕过门禁。
- 改设定、改卷纲、改角色时修改 `src/*.json`，再 `rebuild`。
- 改正文时修改 `manuscript/第XXX章-标题.md`，再 `review`。
- 长期人工账本修正写入 `src/ledger_overrides.json`，再 `rebuild`。

## 10. 禁止事项

不要做以下事情：

- 不要把 CLI 工作转交给用户手动执行。
- 不要没有 `prepare` 就直接写正式章节。
- 不要跳过 beat competition 写前 10 章。
- 不要 `gate.passed=false` 还 commit 或继续下一章。
- 不要为正常新书使用 `--force-after-first3-fail`。
- 不要只保存 heuristic review 就认为商业质量足够；关键章节必须做 model signal。
- 不要手动改 `gate.json`、signals 或 `data/ledgers` 来制造通过。
- 不要让章节没有标题或只叫 `第XXX章.md`。
- 不要让记忆回写长期填“无”，尤其是 reader promise。
- 不要把专业流程写成会议纪要、授权记录、复核清单，而不转译成读者可见得失。
- 不要承诺逐字模仿某位作者或某本现成作品的语言风格。

## 11. 需要读取的参考文件

按需读取，避免把全部资料一次性塞入上下文。

| 文件 | 何时读取 |
|---|---|
| `references/pipeline-spec.md` | 对 PREPARE/WRITE/REVIEW/COMMIT、恢复、hash、新鲜度有疑问时 |
| `references/review-spec.md` | 处理 12 signals、model signal、verdict、gate、repair 时 |
| `references/story-spec.md` | 不确定章节格式、章节模式、节奏变体、记忆回写字段时 |
| `references/state-spec.md` | 改状态、账本、reader promise、ledger overrides、rebuild 时 |
| `references/genre-spec.md` | 题材打法、genre_config、题材 marker、内置 playbook 时 |
| `references/learning-spec.md` | 拆书建模和样本结构学习时 |
| `references/longrun-spec.md` | batch/volume/benchmark 和长篇稳定性检查时 |

如果实现行为、README 和 references 冲突，以当前 Python CLI 行为为准，并在维护任务中同步文档。

## 12. 常用命令清单

```bash
python -m novel_architect --help
python -m novel_architect init --project <dir> --title <title> --genre <genre> [--platform <platform>] [--premise <text>] [--core-hook <text>] [--protagonist <name>]
python -m novel_architect market-open --project <dir> [--platform <platform>] [--genre-hint <genre>] [--seed-idea <idea>] [--author-intent <intent>] [--constraint <text>] [--stdout]
python -m novel_architect market-save --project <dir> --file <market_pack.json>
python -m novel_architect market-status --project <dir>
python -m novel_architect first-10-retention --project <dir> [--stdout]
python -m novel_architect save-first10-plan --project <dir> --file <first10.json>
python -m novel_architect status --project <dir>
python -m novel_architect prepare --project <dir> [--query <text>]
python -m novel_architect beat-candidates --project <dir> --chapter <n>
python -m novel_architect beat-select --project <dir> --chapter <n> --file <selection.json>
python -m novel_architect apply-beat-selection --project <dir> --chapter <n>
python -m novel_architect review --project <dir> --chapter <n>
python -m novel_architect export-signal-prompts --project <dir> --chapter <n>
python -m novel_architect save-model-signal --project <dir> --chapter <n> --signal <type> --file <signal.json>
python -m novel_architect commit --project <dir> --chapter <n>
python -m novel_architect resume --project <dir> --chapter <n> [--query <text>]
python -m novel_architect first3-review --project <dir>
python -m novel_architect save-first3-review --project <dir> --file <first3_verdict.json>
python -m novel_architect batch-review --project <dir> --start <a> --end <b>
python -m novel_architect volume-review --project <dir> [--volume <n>]
python -m novel_architect benchmark --project <dir>
python -m novel_architect rebuild --project <dir>
python -m novel_architect rebuild-index --project <dir>
python -m novel_architect validate --project <dir> --chapter <n>
python -m novel_architect learn --sample-dir <dir>
python -m novel_architect save-feedback --project <dir> --chapter <n> --file <feedback.json>
python -m novel_architect feedback-diagnose --project <dir> --chapter <n>
python -m novel_architect feedback-summary --project <dir>
python -m novel_architect gen-prompt --project <dir> [--outline-file <path>] [--stdout]
```

