@cloud411716/fancy-webnovel 1.0.46 → 2.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (134) hide show
  1. package/client.js +183 -0
  2. package/cordis.patch.yml +0 -14
  3. package/index.js +21 -37
  4. package/lib/chinese-num.js +111 -0
  5. package/lib/deployed-state.js +141 -0
  6. package/lib/error-codes.js +104 -0
  7. package/lib/infra.js +569 -0
  8. package/lib/llm-wiki.js +109 -0
  9. package/lib/safe-rm.js +94 -0
  10. package/lib/scraper-utils.js +165 -0
  11. package/package.json +37 -5
  12. package/plugins/fancy-analyze/command-input.js +65 -0
  13. package/plugins/fancy-analyze/index.js +973 -0
  14. package/plugins/fancy-analyze/schema-analyze.md +379 -0
  15. package/plugins/fancy-analyze/schema-write.md +178 -0
  16. package/plugins/fancy-analyze/scripts/split_source.js +292 -0
  17. package/plugins/fancy-analyze/summary-progress.js +431 -0
  18. package/plugins/fancy-analyze/templates.js +881 -0
  19. package/plugins/fancy-bootstrap/index.js +168 -0
  20. package/plugins/fancy-bootstrap/scripts/init.js +143 -0
  21. package/plugins/fancy-bootstrap/scripts/path-utils.js +21 -0
  22. package/plugins/fancy-bootstrap/templates.js +54 -0
  23. package/plugins/fancy-import/import-core.js +1118 -0
  24. package/plugins/fancy-import/import-driver.js +581 -0
  25. package/plugins/fancy-import/index.js +730 -0
  26. package/plugins/fancy-import/prompts/01-import-prompt.md +106 -0
  27. package/plugins/fancy-import/templates.js +49 -0
  28. package/plugins/fancy-scan/index.js +319 -0
  29. package/plugins/fancy-scan/scripts/run-scan.js +520 -0
  30. package/plugins/fancy-scan/scripts/scrapers/fanqie-rank-scraper.js +794 -0
  31. package/plugins/fancy-scan/scripts/scrapers/jjwxc-rank-scraper.js +339 -0
  32. package/plugins/fancy-scan/scripts/scrapers/qimao-rank-scraper.js +611 -0
  33. package/plugins/fancy-scan/templates.js +295 -0
  34. package/plugins/fancy-story-builder/deploy-manifest.js +239 -0
  35. package/plugins/fancy-story-builder/deslop-driver.js +821 -0
  36. package/plugins/fancy-story-builder/flesh-output.js +155 -0
  37. package/plugins/fancy-story-builder/index.js +3152 -0
  38. package/plugins/fancy-story-builder/prompts/01-skeleton-prompt.md +553 -0
  39. package/plugins/fancy-story-builder/prompts/02-flesh-prompt.md +540 -0
  40. package/plugins/fancy-story-builder/prompts/03-rhythm-prompt.md +504 -0
  41. package/plugins/fancy-story-builder/prompts/04-writing-prompt.md +188 -0
  42. package/plugins/fancy-story-builder/prompts/05-deslop-prompt.md +96 -0
  43. package/plugins/fancy-story-builder/purpose-template.md +107 -0
  44. package/plugins/fancy-story-builder/references/formulas-rhythm.json +302 -0
  45. package/plugins/fancy-story-builder/references/formulas-skeleton.json +229 -0
  46. package/plugins/fancy-story-builder/references/glossary.md +585 -0
  47. package/plugins/fancy-story-builder/references/index.md +490 -0
  48. package/plugins/fancy-story-builder/references//345/206/231/344/275/234/346/214/207/345/257/274/00-index.md +174 -0
  49. package/plugins/fancy-story-builder/references//345/206/231/344/275/234/346/214/207/345/257/274/01-scene.md +150 -0
  50. package/plugins/fancy-story-builder/references//345/206/231/344/275/234/346/214/207/345/257/274/02-chapter-workflow.md +99 -0
  51. package/plugins/fancy-story-builder/references//345/206/231/344/275/234/346/214/207/345/257/274/03-opening-chapter.md +104 -0
  52. package/plugins/fancy-story-builder/references//345/206/231/344/275/234/346/214/207/345/257/274/04-dialogue-mastery.md +274 -0
  53. package/plugins/fancy-story-builder/references//345/206/231/344/275/234/346/214/207/345/257/274/05-genre-formulas.md +432 -0
  54. package/plugins/fancy-story-builder/references//345/206/231/344/275/234/346/214/207/345/257/274/06-tone-ensemble.md +259 -0
  55. package/plugins/fancy-story-builder/references//345/206/231/344/275/234/346/214/207/345/257/274/07-ledger-audit.md +222 -0
  56. package/plugins/fancy-story-builder/references//345/206/231/344/275/234/346/214/207/345/257/274/08-diagnosis-revision.md +205 -0
  57. package/plugins/fancy-story-builder/references//345/206/231/344/275/234/346/214/207/345/257/274/09-reading-power.md +135 -0
  58. package/plugins/fancy-story-builder/references//345/206/231/344/275/234/346/214/207/345/257/274/10-deslop.md +129 -0
  59. package/plugins/fancy-story-builder/references//350/212/202/345/245/217/346/214/207/345/257/274/00-index.md +98 -0
  60. package/plugins/fancy-story-builder/references//350/212/202/345/245/217/346/214/207/345/257/274/01-upgrade-rhythm.md +300 -0
  61. package/plugins/fancy-story-builder/references//350/212/202/345/245/217/346/214/207/345/257/274/02-arc-rhythm.md +168 -0
  62. package/plugins/fancy-story-builder/references//350/212/202/345/245/217/346/214/207/345/257/274/03-highpoint-hooks.md +189 -0
  63. package/plugins/fancy-story-builder/references//350/212/202/345/245/217/346/214/207/345/257/274/04-satisfaction.md +226 -0
  64. package/plugins/fancy-story-builder/references//350/212/202/345/245/217/346/214/207/345/257/274/05-foreshadow-density.md +195 -0
  65. package/plugins/fancy-story-builder/references//350/212/202/345/245/217/346/214/207/345/257/274/06-chapter-outline.md +226 -0
  66. package/plugins/fancy-story-builder/references//350/212/202/345/245/217/346/214/207/345/257/274/07-audit.md +163 -0
  67. package/plugins/fancy-story-builder/references//350/241/200/350/202/211/346/214/207/345/257/274/00-index.md +100 -0
  68. package/plugins/fancy-story-builder/references//350/241/200/350/202/211/346/214/207/345/257/274/01-character.md +239 -0
  69. package/plugins/fancy-story-builder/references//350/241/200/350/202/211/346/214/207/345/257/274/02-worldbuilding.md +245 -0
  70. package/plugins/fancy-story-builder/references//350/241/200/350/202/211/346/214/207/345/257/274/03-relations.md +181 -0
  71. package/plugins/fancy-story-builder/references//350/241/200/350/202/211/346/214/207/345/257/274/04-emotion-methods.md +286 -0
  72. package/plugins/fancy-story-builder/references//350/241/200/350/202/211/346/214/207/345/257/274/05-audit.md +177 -0
  73. package/plugins/fancy-story-builder/references//351/252/250/346/236/266/346/214/207/345/257/274/00-index.md +91 -0
  74. package/plugins/fancy-story-builder/references//351/252/250/346/236/266/346/214/207/345/257/274/01-positioning.md +208 -0
  75. package/plugins/fancy-story-builder/references//351/252/250/346/236/266/346/214/207/345/257/274/02-packaging.md +135 -0
  76. package/plugins/fancy-story-builder/references//351/252/250/346/236/266/346/214/207/345/257/274/03-entities.md +305 -0
  77. package/plugins/fancy-story-builder/references//351/252/250/346/236/266/346/214/207/345/257/274/04-conflict.md +328 -0
  78. package/plugins/fancy-story-builder/references//351/252/250/346/236/266/346/214/207/345/257/274/05-quota.md +187 -0
  79. package/plugins/fancy-story-builder/references//351/252/250/346/236/266/346/214/207/345/257/274/06-audit.md +142 -0
  80. package/plugins/fancy-story-builder/rhythm-output.js +140 -0
  81. package/plugins/fancy-story-builder/schema-setting.md +324 -0
  82. package/plugins/fancy-story-builder/scripts/ai-patterns.js +619 -0
  83. package/plugins/fancy-story-builder/scripts/check-guide-compliance.js +289 -0
  84. package/plugins/fancy-story-builder/scripts/content-quality.js +413 -0
  85. package/plugins/fancy-story-builder/scripts/deslop-validate.js +143 -0
  86. package/plugins/fancy-story-builder/scripts/error-classes.js +112 -0
  87. package/plugins/fancy-story-builder/scripts/flesh-validate.js +1189 -0
  88. package/plugins/fancy-story-builder/scripts/formula-engine.js +112 -0
  89. package/plugins/fancy-story-builder/scripts/graph-utils.js +1385 -0
  90. package/plugins/fancy-story-builder/scripts/label-coverage.js +171 -0
  91. package/plugins/fancy-story-builder/scripts/prompt-drift-check.js +441 -0
  92. package/plugins/fancy-story-builder/scripts/reading-power.js +298 -0
  93. package/plugins/fancy-story-builder/scripts/rhythm-validate.js +1216 -0
  94. package/plugins/fancy-story-builder/scripts/semantic-lint.js +377 -0
  95. package/plugins/fancy-story-builder/scripts/skeleton-quota.js +145 -0
  96. package/plugins/fancy-story-builder/scripts/skeleton-validate.js +1832 -0
  97. package/plugins/fancy-story-builder/scripts/stage-batches.js +1371 -0
  98. package/plugins/fancy-story-builder/scripts/stage-contract.js +417 -0
  99. package/plugins/fancy-story-builder/scripts/upstream-query.js +198 -0
  100. package/plugins/fancy-story-builder/scripts/writing-rules.js +167 -0
  101. package/plugins/fancy-story-builder/scripts/writing-validate.js +682 -0
  102. package/plugins/fancy-story-builder/skeleton-output.js +199 -0
  103. package/plugins/fancy-story-builder/stage-driver.js +1049 -0
  104. package/plugins/fancy-story-builder/templates//350/212/202/345/245/217//346/227/266/345/272/217/346/230/240/345/260/204/346/250/241/346/235/277.json +204 -0
  105. package/plugins/fancy-story-builder/templates//350/212/202/345/245/217//347/253/240/350/212/202/347/273/206/347/272/262/346/250/241/346/235/277.json +34 -0
  106. package/plugins/fancy-story-builder/templates//350/212/202/345/245/217//347/253/240/350/212/202/350/247/204/345/210/222/346/250/241/346/235/277.json +24 -0
  107. package/plugins/fancy-story-builder/templates//350/212/202/345/245/217//350/212/202/345/245/217/345/217/202/346/225/260/346/250/241/346/235/277.json +27 -0
  108. package/plugins/fancy-story-builder/templates//350/241/200/350/202/211//344/270/226/347/225/214/350/247/202/350/247/204/345/210/231/346/250/241/346/235/277.json +66 -0
  109. package/plugins/fancy-story-builder/templates//350/241/200/350/202/211//345/205/263/351/224/256/351/201/223/345/205/267/346/250/241/346/235/277.json +76 -0
  110. package/plugins/fancy-story-builder/templates//350/241/200/350/202/211//345/206/262/347/252/201/346/250/241/346/235/277.json +72 -0
  111. package/plugins/fancy-story-builder/templates//350/241/200/350/202/211//345/211/247/346/203/205/346/250/241/346/235/277.json +37 -0
  112. package/plugins/fancy-story-builder/templates//350/241/200/350/202/211//345/212/277/345/212/233/346/250/241/346/235/277.json +53 -0
  113. package/plugins/fancy-story-builder/templates//350/241/200/350/202/211//345/234/260/347/202/271/346/250/241/346/235/277.json +40 -0
  114. package/plugins/fancy-story-builder/templates//350/241/200/350/202/211//347/273/223/345/261/200/346/250/241/346/235/277.json +79 -0
  115. package/plugins/fancy-story-builder/templates//350/241/200/350/202/211//350/247/222/350/211/262/346/250/241/346/235/277.json +132 -0
  116. package/plugins/fancy-story-builder/templates//351/252/250/346/236/266//345/205/263/347/263/273/346/250/241/346/235/277.json +133 -0
  117. package/plugins/fancy-story-builder/templates//351/252/250/346/236/266//345/256/236/344/275/223/346/250/241/346/235/277.json +160 -0
  118. package/plugins/fancy-story-builder/templates//351/252/250/346/236/266//345/261/202/347/272/247/346/250/241/346/235/277.json +65 -0
  119. package/plugins/fancy-story-builder/templates//351/252/250/346/236/266//346/241/206/346/236/266/346/250/241/346/235/277.json +134 -0
  120. package/plugins/fancy-story-builder/templates.js +1248 -0
  121. package/plugins/fancy-story-builder/wiki-references.js +204 -0
  122. package/plugins/fancy-story-builder/writing-driver.js +1061 -0
  123. package/plugins/fancy-topic/index.js +704 -0
  124. package/plugins/fancy-topic/scripts/select-topic.js +274 -0
  125. package/plugins/fancy-topic/templates.js +373 -0
  126. package/commands/bootstrap/index.js +0 -164
  127. package/commands/bootstrap/init-project.js +0 -121
  128. package/commands/scan/index.js +0 -283
  129. package/commands/scan/platforms/fanqie.js +0 -146
  130. package/commands/scan/platforms/jinjiang.js +0 -143
  131. package/commands/scan/platforms/qidian.js +0 -102
  132. package/commands/scan/platforms/qimao.js +0 -127
  133. package/commands/scan/scraper.js +0 -195
  134. package/infra.js +0 -160
@@ -0,0 +1,222 @@
1
+ # 台账与盘点
2
+
3
+ > 写作阶段第 7 份。台账记录"已发生",盘点检查"是否闭环"。写作阶段持续使用。
4
+ > 本文件不定义数据结构(台账结构在提示词的 7.6 节定义)、不写验证逻辑。
5
+
6
+ ---
7
+
8
+ ## 一、决策路由
9
+
10
+ | 你在做什么 | 用哪节 |
11
+ |---|---|
12
+ | 更新伏笔台账 | §2.1 |
13
+ | 更新人物台账 | §2.2 |
14
+ | 更新时间线 | §2.3 |
15
+ | 更新设定使用 | §2.4 |
16
+ | 更新桥段/爽点/钩子库 | §2.5 |
17
+ | 更新章节台账 | §2.6 |
18
+ | 更新势力台账 | §2.7 |
19
+ | 单元末盘点 | §3 |
20
+ | 卷末大盘点 | §4 |
21
+ | 上下文加载策略 | §5 |
22
+ | 改稿连锁影响 | §6 |
23
+
24
+ ---
25
+
26
+ ## 二、台账体系
27
+
28
+ ### 2.1 伏笔台账
29
+
30
+ 每个伏笔记录:类型/内容/埋设章/预期回收窗口/回收方式/依赖/唤醒/状态/实际回收章。
31
+
32
+ **每章更新**:新埋伏笔新增行;伏笔被推进改状态;伏笔被回收改状态 + 实际回收章;超期保持状态但标注"超期"。
33
+
34
+ **超期判定**:当前章 > 预期回收窗口上限 + 若干章(具体阈值由 `formulas-rhythm.json` 的 `foreshadow_overdue_threshold` 定义)。
35
+
36
+ ### 2.2 人物台账
37
+
38
+ 每个角色记录:当前位置/当前目标/已知信息/能力资源/伤势状态/上次出场章/与主角关系。
39
+
40
+ **每章更新**:角色移动更新位置;获得信息更新已知信息;受伤更新状态;关系变化更新关系。
41
+
42
+ **已知信息是核心**:信息差管理靠这张表。写对话前查"这个角色现在知道什么"。
43
+
44
+ ### 2.3 时间线台账
45
+
46
+ 每个事件记录:时间点/事件/涉及章/涉及角色/涉及线 ID。
47
+
48
+ **每章更新**:本章 in-world-time 起止新增行;多线并行标线 ID。
49
+
50
+ **时间矛盾排查**:写"三个月后"前查表,确认前文时间戳;多线交汇前查各线时间戳是否一致。
51
+
52
+ ### 2.4 设定使用记录
53
+
54
+ 每条设定记录:设定点/本章使用/与首次出现是否一致/是否需要补例外伏笔。
55
+
56
+ **每章更新**:本章用了哪些设定 → 查设定校验(在血肉阶段的世界观规则中)→ 是否一致 → 不一致则改文或补伏笔。
57
+
58
+ ### 2.5 桥段/爽点/钩子库
59
+
60
+ 每章记录:桥段类型/爽点类型/章首钩子/章尾钩子/观众层级。
61
+
62
+ **每章更新**:本章用了什么桥段/爽点/钩子 → 新增行。
63
+
64
+ **用途**:查"最近几章用了哪些钩子",避免重复;查"最近几章用了哪些爽点",确保递增。
65
+
66
+ ### 2.6 章节台账
67
+
68
+ 每章记录:实际字数/场景数/主功能/推进主线/伏笔动作/人物状态变化/时间推进/意外新增设定。
69
+
70
+ **每章更新**:写完即填。
71
+
72
+ **用途**:回顾"第某章主角第一次用金手指是什么时候"不再翻正文;"意外新增设定"需回填世界观规则。
73
+
74
+ ### 2.7 势力台账
75
+
76
+ 每个势力记录:当前立场/当前规模/当前资源/与主角关系/最近出场章/未解冲突。
77
+
78
+ **每章更新**:势力出场更新最近出场章;势力冲突升级更新未解冲突;势力关系变化更新关系。
79
+
80
+ ---
81
+
82
+ ## 三、单元末盘点
83
+
84
+ 每单元结束时做一次盘点:
85
+
86
+ ### 3.1 盘点清单
87
+
88
+ - 本单元伏笔:埋几个、收几个、超期几个?
89
+ - 本单元人物:谁退场、谁该出场没出场、谁状态需更新?
90
+ - 本单元爽点:类型分布、层级是否递增、有无连续重复?
91
+ - 本单元时间线:推进多少、有无矛盾?
92
+ - 本单元设定:有无新增、有无与旧设定冲突?
93
+ - 本单元势力:哪个势力出场、冲突升级、关系变化?
94
+ - 下一单元开环是否已埋?
95
+ - 下一单元主角目标是否清晰?
96
+
97
+ ### 3.2 盘点输出
98
+
99
+ | 项目 | 结果 | 处理动作 |
100
+ |---|---|---|
101
+ | 伏笔 | 埋多少、收多少、超期多少 | 超期伏笔立即回收或延期 |
102
+ | 人物 | 哪个配角长期未出场 | 下单元安排出场或标"背景提及" |
103
+ | 爽点 | 是否连续同类型 | 下单元换类型 |
104
+ | 时间线 | 有无矛盾 | 调整时间戳 |
105
+ | 设定 | 新增哪些 | 回填世界观规则 |
106
+ | 势力 | 哪个势力未出场 | 下单元安排施压 |
107
+
108
+ ---
109
+
110
+ ## 四、卷末大盘点
111
+
112
+ 每卷结束时做一次盘点:
113
+
114
+ ### 4.1 盘点清单
115
+
116
+ - 卷初目标完成多少?未完成原因?
117
+ - 全书 open 伏笔数、本卷新增、本卷回收、超期数?
118
+ - 主要角色弧线是否按计划推进?有无角色写丢?
119
+ - 主角战力/资源曲线是否符合升级感三步法?
120
+ - 卷末钩子是否立住?下一卷核心期待是什么?
121
+ - 设定总账:有无新增未回填、有无冲突未解决?
122
+ - 势力总账:本卷势力格局变化?下一卷势力冲突在哪?
123
+ - 跨卷衔接:上一卷钩子本卷接住没?本卷钩子下一卷能接住吗?
124
+
125
+ ### 4.2 盘点输出
126
+
127
+ | 项目 | 结果 | 处理动作 |
128
+ |---|---|---|
129
+ | 主线目标 | 完成多少 | 未完成转入下卷 |
130
+ | 伏笔 | open 多少、新增多少、回收多少、超期多少 | 超期下卷前几章处理 |
131
+ | 角色弧 | 是否符合计划 | 写丢的补戏份 |
132
+ | 升级曲线 | 是否符合 | 调整下卷升级节奏 |
133
+ | 卷末钩子 | 是否立住 | 强钩子已立 |
134
+ | 设定 | 新增未回填 | 回填世界观规则 |
135
+ | 势力 | 本卷变化 | 下卷主线:XX |
136
+
137
+ ---
138
+
139
+ ## 五、上下文加载策略
140
+
141
+ ### 5.1 每章写作前加载清单
142
+
143
+ | 类型 | 必须全文加载 | 只加载摘要 | 只加载索引 |
144
+ |---|---|---|---|
145
+ | 正文 | 上一章正文的最后部分 | | |
146
+ | 细纲 | 本章细纲 | | 全书大纲 |
147
+ | 人物 | 本章出场人物完整档案 | 其他主要人物一段话摘要 | 次要人物名单 |
148
+ | 伏笔 | 本章涉及伏笔 | 所有 open 伏笔摘要 | 已 resolved 伏笔列表 |
149
+ | 设定 | 本章涉及设定卡 | 相关设定校验记录 | 设定卡目录 |
150
+ | 势力 | 本章出场势力卡 | 其他势力一段话摘要 | 势力格局表 |
151
+
152
+ ### 5.2 摘要生成规则
153
+
154
+ - **人物摘要**:一句话(身份+当前目标+与主角关系+当前状态)
155
+ - **伏笔摘要**:一句话(埋设章+内容+预期回收窗口+状态)
156
+ - **势力摘要**:一句话(立场+当前与主角关系+未解冲突)
157
+
158
+ ### 5.3 长程记忆三级摘要
159
+
160
+ | 级别 | 粒度 | 用途 |
161
+ |---|---|---|
162
+ | 卷摘要 | 每卷几百字 | 跨卷写作时加载 |
163
+ | 单元摘要 | 每单元一两百字 | 跨单元写作时加载 |
164
+ | 章摘要 | 每章几十字 | 跨桥段写作时加载 |
165
+
166
+ **规则**:写第 N 章时,加载"全书大纲 + 第 N 章细纲 + 前 N-1 章章摘要 + 最近几章正文 + 相关人物/伏笔/设定"。不加载前 N-1 章全文。
167
+
168
+ ### 5.4 上下文超限处理
169
+
170
+ 当加载内容超模型窗口:
171
+ 1. 优先删"章摘要"(保留单元摘要)
172
+ 2. 再删"次要人物档案"(保留一段话摘要)
173
+ 3. 最后删"已 resolved 伏笔列表"(保留 open 伏笔)
174
+
175
+ ---
176
+
177
+ ## 六、改稿连锁影响
178
+
179
+ ### 6.1 改动影响清单
180
+
181
+ | 改什么 | 影响哪些 | 需同步改什么 |
182
+ |---|---|---|
183
+ | 主角金手指规则 | 前面所有用金手指的章 | 设定校验 + 相关章 + 伏笔 |
184
+ | 配角身份 | 前面所有提该配角的对话/伏笔 | 人物台账 + 相关章 + 伏笔 |
185
+ | 时间线 | 后面所有时间戳 | 时间线台账 + 相关章 |
186
+ | 伏笔回收方式 | 前面埋设章 | 伏笔台账 + 埋设章(补线索) |
187
+ | 势力关系 | 势力台账 + 相关章 | 势力卡 + 势力台账 + 相关章 |
188
+
189
+ ### 6.2 改稿流程
190
+
191
+ 1. 改前查台账:这个改动影响哪些章/人物/伏笔/设定/势力?
192
+ 2. 列影响清单
193
+ 3. 改主文件
194
+ 4. 同步改所有受影响章
195
+ 5. 同步更新所有受影响台账
196
+ 6. 复验:查章检查清单 + 相关台账
197
+
198
+ ### 6.3 回滚
199
+
200
+ 改坏了 → 回退到上一版 → 同步恢复台账(台账版本号与正文版本号绑定)。
201
+
202
+ ---
203
+
204
+ ## 七、与其他文件的关系
205
+
206
+ | 本文件输出 | 落到哪个文件 | 由哪个脚本验证 |
207
+ |---|---|---|
208
+ | 台账更新 | `台账/*.json` | 无(台账由方法论保证一致性) |
209
+ | 盘点结果 | 记录在章台账/人物台账/伏笔台账中 | 无(方法论) |
210
+ | 上下文加载 | 写作时的输入选择 | 无(方法论) |
211
+
212
+ **不输出到**:
213
+ - 台账的具体结构不建 JSON 字段(结构在提示词 7.6 节定义)
214
+ - 盘点结果不单独建 JSON 字段(记录在已有台账中)
215
+
216
+ ---
217
+
218
+ ## 八、版本记录
219
+
220
+ | 版本 | 变更 |
221
+ |---|---|
222
+ | v1.0 | 从原 04-07 精简。删除检查清单(改为"盘点清单"的方法论陈述);保留 7 类台账/单元末盘点/卷末大盘点/上下文加载/改稿影响;新增"与其他文件的关系"节 |
@@ -0,0 +1,205 @@
1
+ # 诊断与改稿
2
+
3
+ > 写作阶段第 8 份。出问题怎么诊断、先修哪个、怎么修、修完怎么验。改稿时加载。
4
+ > 本文件不定义数据结构、不写验证逻辑。
5
+
6
+ ---
7
+
8
+ ## 一、决策路由
9
+
10
+ | 你的问题 | 查 |
11
+ |---|---|
12
+ | 读者说平淡 | §2.1 |
13
+ | 读者说憋屈/虐主 | §2.2 |
14
+ | 读者说爽点不够爽 | §2.3 |
15
+ | 读者说看不下去/弃书 | §2.4 |
16
+ | 读者说人设崩了 | §2.5 |
17
+ | 读者说节奏拖 | §2.6 |
18
+ | 读者说对话水 | §2.7 |
19
+ | 读者说结局弱 | §2.8 |
20
+ | 修哪个 | §3 修改优先级 |
21
+ | 怎么修 | §4 四轮打磨 |
22
+ | 修完怎么验 | §5 复验 |
23
+
24
+ ---
25
+
26
+ ## 二、八种症状诊断树
27
+
28
+ ### 2.1 症状:平淡
29
+
30
+ - **分支 1**:没有价值改变 → 查本章是否有至少一个价值改变
31
+ - **分支 2**:有事件但无冲突 → 查事件是否有"有人阻止主角得到他想要的东西"
32
+ - **分支 3**:有冲突但无情绪 → 查本章在弧线哪个位置,调动段还是释放段,是否放错位置
33
+ - **分支 4**:有情绪但读者不关心 → 查读者是否已认同主角,开篇是否用了塑造人物性格的事件
34
+ - **分支 5**:钩子弱 → 查章首前 100 字、章尾后 100 字
35
+
36
+ ### 2.2 症状:憋屈/虐主
37
+
38
+ - **分支 1**:下行情节没有安全感 → 查下行安全原则(锅是别人的、功是主角的、有潜在解法)
39
+ - **分支 2**:压制过长 → 查题材红线,是否超过压制上限
40
+ - **分支 3**:期待未兑现 → 查断期待禁止,旧期待是否已到兑现窗口
41
+ - **分支 4**:对手太强且无弱点 → 查反派四层,反派是否至少有一个可被攻击的侧面
42
+ - **分支 5**:阶段豁免未用 → 查谷底段/压制段允许无回报,但需给"潜在解法"
43
+
44
+ ### 2.3 症状:爽点不够爽
45
+
46
+ - **分支 1**:铺垫不足 → 查爽点三要素,对手是否嚣张到让读者恨、吃瓜群众是否吹高对手逼格
47
+ - **分支 2**:落差不够 → 查主角逻辑(轻描淡写)与大众逻辑(不可战胜)的落差
48
+ - **分支 3**:观众层级太低 → 查群众反应四层,震惊的是路人甲还是有分量的人
49
+ - **分支 4**:释放太快 → 查期待最大化定律,爽点到来前那一刻是否全篇张力最高
50
+ - **分支 5**:连续爽点未递增 → 查三维度(影响范围/揭示深度/身份落差)
51
+ - **分支 6**:以强击弱太多 → 查每几次以强击弱需插一次以弱胜强/强强对决
52
+
53
+ ### 2.4 症状:看不下去/弃书
54
+
55
+ - **分支 1**:开篇未建立认同 → 查开篇是否用了塑造人物性格的事件
56
+ - **分支 2**:信息过载 → 查角色不当科普嘴,设定是否通过事件演绎
57
+ - **分支 3**:节奏拖沓 → 查大高潮/小高潮是否超时
58
+ - **分支 4**:钩子断层 → 查断期待禁止,拉期待速度是否 > 断期待速度
59
+ - **分支 5**:卖点偏移 → 查卖点一致性,爽点满足的需求是否与主需求一致
60
+ - **分支 6**:平台错配 → 查公式与平台适配,章字数/开篇窗口是否匹配平台
61
+
62
+ ### 2.5 症状:人设崩了
63
+
64
+ - **分支 1**:行为不符合核心价值观 → 查人物真相分层,核心价值观是否开篇建立
65
+ - **分支 2**:为了剧情改人设 → 先改剧情不改人设
66
+ - **分支 3**:"打破"与"崩"混淆 → 打破有伏笔,崩无伏笔
67
+ - **分支 4**:配角抢戏 → 查配角功能表,配角是否超出功能范围
68
+ - **分支 5**:缺陷类型用错 → 查缺陷五分类,是否把生理/身份缺陷写成"致命化"
69
+
70
+ ### 2.6 症状:节奏拖
71
+
72
+ - **分支 1**:大高潮超时 → 大高潮超过规定时长需压缩
73
+ - **分支 2**:小高潮超时 → 小高潮超过规定时长需压缩
74
+ - **分支 3**:桥段内拉扯过长 → 桥段的拉扯节拍是否超长
75
+ - **分支 4**:对话水 → 查对话是否推动剧情、是否超篇幅上限
76
+ - **分支 5**:场景缺转折 → 无转折场景删或合并
77
+
78
+ ### 2.7 症状:对话水
79
+
80
+ - **分支 1**:问答式 → 改为一方主动说另一方给反应
81
+ - **分支 2**:信息全用对话展示 → 转化为情节/心理/旁白/动作
82
+ - **分支 3**:所有角色说话一样 → 查语言档案 7 维是否已填
83
+ - **分支 4**:对话超篇幅 → 单次对话不超过全节四成(高潮豁免)
84
+ - **分支 5**:弹幕过多 → 每章不超过一组、总量不超一成多、连续几章不用
85
+
86
+ ### 2.8 症状:结局弱
87
+
88
+ - **分支 1**:结局与主线起点不呼应 → 查终局底牌四问
89
+ - **分支 2**:伏笔未全回收 → 查 open 伏笔是否全部 resolved
90
+ - **分支 3**:反派退场草率 → 大弧 Boss 需仪式感终战
91
+ - **分支 4**:结局类型与题材错配 → 查结局决策表
92
+ - **分支 5**:余韵不足 → 查余韵钝痛(情感题材)或悲剧收束
93
+ - **分支 6**:读者承诺未兑现 → 查书名/简介承诺,结局是否兑现
94
+
95
+ ---
96
+
97
+ ## 三、修改优先级
98
+
99
+ ### 3.1 五条优先级规则
100
+
101
+ 1. **结构问题 > 节奏问题 > 文字问题**:先修"这章没有价值改变",再修"这章钩子弱",最后修"这句话太长"
102
+ 2. **连锁问题先修根节点**:如果"平淡"的根因是"主角目标不清晰",修目标,不逐章加钩子
103
+ 3. **改一章 vs 改多章**:单章问题单章修;跨章问题(伏笔没回收、人物写丢)改台账 + 回改相关章
104
+ 4. **改稿成本估算**:改人设影响多章,改钩子影响一章。优先修低成本高收益的
105
+ 5. **平台优先级**:起点可几章铺垫一个爽点;番茄必须每章有爽点。"铺垫章过长"在起点可能是节奏问题,在番茄是致命问题
106
+
107
+ ### 3.2 不改清单
108
+
109
+ | 问题 | 是否必修 | 理由 |
110
+ |---|---|---|
111
+ | 文笔不够美 | 否 | 网文优先级最低 |
112
+ | 句子可以更短 | 否 | 除非影响节奏 |
113
+ | 某个配角名字不好听 | 否 | 除非影响记忆 |
114
+ | 某个场景描写不够细 | 否 | 除非影响画面感 |
115
+ | 主线有逻辑漏洞 | 是 | 结构问题 |
116
+ | 伏笔没回收 | 是 | 结构问题 |
117
+ | 人物写丢 | 是 | 结构问题 |
118
+ | 章尾无钩子 | 是 | 节奏问题 |
119
+ | 爽点不递增 | 是 | 节奏问题 |
120
+
121
+ ---
122
+
123
+ ## 四、四轮打磨
124
+
125
+ ### 4.1 第一稿(结构稿)
126
+
127
+ 只修结构:本章功能是否达成?价值改变是否有?场景是否完整?钩子是否在。不修文字。
128
+
129
+ ### 4.2 第二稿(节奏稿)
130
+
131
+ 修节奏:情绪曲线是否对?调动/释放是否配比?压制/爆发是否符合换算?对话是否推动剧情?钩子是否与上章不同类?
132
+
133
+ ### 4.3 第三稿(文字稿)
134
+
135
+ 修文字:句长是否跟情绪走?描写/叙述比例?画面感?对话差异化?删水词?
136
+
137
+ ### 4.4 终稿(钩子稿)
138
+
139
+ 只修章首前 100 字和章尾后 100 字,单独打磨。
140
+
141
+ ### 4.5 四轮流程
142
+
143
+ ```
144
+ 细纲 → 第一稿(结构)→ 自检结构 → 第二稿(节奏)→ 自检节奏 → 第三稿(文字)→ 自检文字 → 终稿(钩子)→ 钩子自检 → 入台账
145
+ ```
146
+
147
+ **每轮只修本轮范围,不越界**。越界修 = 一遍过 = 结构节奏文字互相打架。
148
+
149
+ ---
150
+
151
+ ## 五、复验
152
+
153
+ ### 5.1 同一症状复验
154
+
155
+ 修了"平淡",复验时用同一诊断树再走一遍,确认分支不再命中。
156
+
157
+ ### 5.2 连锁复验
158
+
159
+ 改了伏笔回收方式 → 查伏笔表状态是否更新、相关章是否同步、设定校验是否需补。
160
+
161
+ ### 5.3 回归检查
162
+
163
+ 修 A 问题时有没有引入 B 问题?(如为加钩子把章尾写太突兀,破坏情绪连贯)
164
+
165
+ ### 5.4 读者视角复验
166
+
167
+ 以"第一次读"的视角重读修改章:是否还有卡顿/疑惑/出戏?
168
+
169
+ ### 5.5 质检抽样规则
170
+
171
+ | 类型 | 范围 | 检查深度 |
172
+ |---|---|---|
173
+ | 全检章 | 第 1 章、每卷首末章、大高潮章、结局章 | 全文精读 + 全部台账核对 |
174
+ | 抽检章 | 每几章抽一章 | 全文精读 + 台账核对 |
175
+ | 免检章 | 过渡章、日常章 | 只做台账核对,不精读 |
176
+ | 触发式全检 | 读者反馈骤降的章、追读率跳水的章、评论区集中吐槽的章 | 全文精读 + 全部台账核对 + 诊断树 |
177
+
178
+ ### 5.6 质检记录
179
+
180
+ | 章 | 质检结果 | 高频问题 | 修复动作 | 复验 |
181
+ |---|---|---|---|---|
182
+ | 15 | 几条不过 | 钩子同类 | 换钩子 | 通过 |
183
+
184
+ **高频问题统计**:连续多章出现同一类问题 = 系统性问题,需改规则(如"连续多章钩子都是危机升级" → 改钩子规则或改钩子使用习惯)。
185
+
186
+ ---
187
+
188
+ ## 六、与其他文件的关系
189
+
190
+ | 本文件输出 | 落到哪个文件 | 由哪个脚本验证 |
191
+ |---|---|---|
192
+ | 改稿动作 | 修改对应章节正文 + 台账 | `writing-validate.js`(修改后重新校验) |
193
+ | 高频问题统计 | 反哺写作方法论修订 | 无(方法论层) |
194
+
195
+ **不输出到**:
196
+ - 诊断树不建 JSON 字段,是改稿时的思考框架
197
+ - 质检记录可记入章台账(如适用),不单独建字段
198
+
199
+ ---
200
+
201
+ ## 七、版本记录
202
+
203
+ | 版本 | 变更 |
204
+ |---|---|
205
+ | v1.0 | 从原 04-08 精简。删除检查清单(改为诊断树和优先级规则的方法论陈述);保留八种症状诊断树/修改优先级/四轮打磨/复验;新增"与其他文件的关系"节 |
@@ -0,0 +1,135 @@
1
+ # 09 · 阅读动力(钩子 / 爽点 / 微兑现)
2
+
3
+ > 这篇讲"读者为什么要继续读"。每章都要用。
4
+ >
5
+ > **取值以 `scripts/reading-power.js` 为准**(那是唯一真源,校验器拿它判定)。
6
+ > 本篇给的是**怎么写**;合法取值的清单由插件在派活时注入提示词,
7
+ > 不要凭记忆填 —— 填了词表里没有的类型会被 `HOOK_TYPE_INVALID` 拦下。
8
+
9
+ ---
10
+
11
+ ## 0. 与其它文件的关系
12
+
13
+ | 这篇讲的 | 其它文件讲的 | 关系 |
14
+ |---|---|---|
15
+ | 8 大爽点**模式**(通用结构) | `05-genre-formulas.md` 的题材**爽点公式** | 模式是骨架,公式是肉。复仇题材照样用"嘲讽→反转→震惊"这套结构,只是内容换成复仇公式里那几样。**不是二选一** |
16
+ | 30/40/30(一章内节奏) | `08-diagnosis-revision.md` 的平台节奏优先级 | 番茄要求每章有爽点,30% 的铺垫要压到 10% 以内;起点允许几章铺垫一次。**比例按平台调,结构不变** |
17
+ | 7 式章首引子 | `03-opening-chapter.md` 的开篇五段式 | 开篇章的引子从 7 式里选,五段式是开篇章专有的写法 |
18
+ | 场景五要素 | `01-scene.md` §2 | 场景怎么写在那儿,这篇不重复 |
19
+
20
+ ---
21
+
22
+ ## 1. 章末钩子 13 式(每章末必用 1 种)
23
+
24
+ 章末钩子回答一个问题:**读者为什么要翻下一章?**
25
+
26
+ 13 式分属 5 个大分类(危机 / 悬念 / 渴望 / 情绪 / 选择)。完整清单由插件注入提示词,下面给写法示例。
27
+
28
+ <!-- reading-power:tail-hooks -->
29
+ | 大分类 | 名称 | 写法示例 |
30
+ |---|---|---|
31
+ | 悬念钩 | 突然揭示 | 警官看着死者的手机,最后一条短信来自一个他认识的人——他自己三天前发出的号码。 |
32
+ | 危机钩 | 紧急危机 | 地板开始震动,灰尘从天花板簌簌落下。她抬头一看,裂缝正在迅速扩大。 |
33
+ | 选择钩 | 未完成的动作 | 他举起枪,手指扣在扳机上——"别动!"身后传来一个声音。 |
34
+ | 悬念钩 | 身份反转 | "我终于找到你了,弟弟。"那个说着完美普通话的男人摘下面具,露出了一张她父亲的脸。 |
35
+ | 选择钩 | 两难选择 | 救生艇只能载两个人。她的丈夫和女儿都在水里,海浪越来越大。她伸出手—— |
36
+ | 悬念钩 | 神秘物品 | 保险箱里只有一张照片,拍摄于昨天。照片里是熟睡中的她,从窗外角度拍摄。 |
37
+ | 危机钩 | 时间限制 | 定时器显示 03:00。而拆弹包里少了一根关键的红线。 |
38
+ | 情绪钩 | 承诺威胁 | "今晚午夜之前,我会让所有人知道你十年前真正做了什么。"匿名邮件只有这一行字。 |
39
+ | 悬念钩 | 离奇消失 | 他转身只一秒钟,再回头时,空荡荡的牢房里,那个戴着手铐的囚犯不见了。 |
40
+ | 情绪钩 | 言外之意 | "恭喜你通过面试,"面试官笑着握住她的手,"和你的姐姐一样优秀。"可她是独生女。 |
41
+ | 悬念钩 | 意象钩子 | 整章中反复出现那盏蜡烛——结尾:"她终于吹灭了蜡烛。黑暗中,有什么东西在移动。" |
42
+ | 情绪钩 | 回声钩子 | 开篇:"他第一次走进这间教室时,觉得一切都会很简单。"结尾:"他最后一次走出这间教室时,终于明白没有什么是简单的。" |
43
+ | 悬念钩 | 留白钩子 | 他打开信封,读完后,脸上的表情变了几变。他把信放回桌上,站起来,走到窗前,很久没有说话。——读者不会知道信里写了什么。 |
44
+ <!-- /reading-power:tail-hooks -->
45
+
46
+ ---
47
+
48
+ ## 2. 章首引子 7 式(每章首必用 1 种)
49
+
50
+ 章首引子决定读者会不会在第一段就滑走。
51
+
52
+ 完整清单由插件注入提示词,下面给写法示例。
53
+
54
+ <!-- reading-power:head-hooks -->
55
+ | 名称 | 写法示例 |
56
+ |---|---|
57
+ | 悬念对话引子 | "你丈夫让我转告你,"律师推了推眼镜,"他没死。" |
58
+ | 内心独白引子 | 她把那张化验单折好放进口袋的时候,他在门外叫她的名字。 |
59
+ | 反差场景引子 | 楼下,婚礼的烟花正在绽放。楼上,她在洗手间里一根一根拔掉指甲上的血迹。 |
60
+ | 未完成动作引子 | 她伸出手,指尖碰到了门把手——然后停住了。 |
61
+ | 意象伏笔引子 | 窗台上那盆茉莉,她浇了三年的水,从来没开过花。今早,有一个花苞。 |
62
+ | 时间错位引子 | 三年后他才明白,那天她为什么哭了。 |
63
+ | 物件细节引子 | 口袋里那枚旧玉佩,今天比昨天更冷。 |
64
+ <!-- /reading-power:head-hooks -->
65
+
66
+ ---
67
+
68
+ ## 3. 两条硬规则
69
+
70
+ 1. **不得连续 3 章用同一种章末钩子**(`HOOK_REPEAT`)。
71
+ 同一**大分类**连续 3 章也算 —— 13 式里有好几式同属悬念钩,换个名字但读者的感受没变。
72
+ 做法:翻 `scripts/reading-power.js` 的 `HOOK_CATEGORIES`(危机/悬念/渴望/情绪/选择),
73
+ 下一章换一个分类走。
74
+ 2. **钩子强度按章节位置选**(章台账 `hook_strength`):
75
+ 中间章用 1-2 级(好奇悬念 / 关切悬念),高潮章用 3-5 级(迫切 / 生存 / 终极悬念)。
76
+
77
+ ---
78
+
79
+ ## 4. 8 大爽点模式
80
+
81
+ 爽点是"这章爽不爽"的那一下。写法按**结构**走,不靠词表。
82
+
83
+ > 这是**通用结构模式**,不是题材公式。复仇题材照样用"嘲讽→反转→震惊"这套骨架,
84
+ > 内容换成 `05-genre-formulas.md` 里的复仇公式那几样。两者是骨架与肉的关系,不是二选一。
85
+
86
+ | 模式 | 英文标识 | 结构 |
87
+ |---|---|---|
88
+ | 装逼打脸 | Flex & Counter | 嘲讽 → 反转 → 震惊 |
89
+ | 扮猪吃虎 | Underdog Reveal | 示弱 → 暴露 → 碾压 |
90
+ | 越级反杀 | Underdog Victory | 差距 → 策略 → 逆转 |
91
+ | 打脸权威 | Authority Challenge | 权威 → 挑战 → 成功 |
92
+ | 反派翻车 | Villain Downfall | 得意 → 反杀 → 落幕 |
93
+ | 甜蜜超预期 | Sweet Surprise | 期待 → 超预期 → 升华 |
94
+ | 迪化误解 | Misunderstanding Elevation | 随意行为 → 配角脑补升华 |
95
+ | 身份掉马 | Identity Reveal | 身份伪装 → 关键时刻 → 揭露 |
96
+
97
+ ---
98
+
99
+ ## 5. 7 种微兑现(每章至少 1 个)
100
+
101
+ 大爽点撑不起每章。**微兑现**是让读者觉得"这章没白读"的小回报 —— 再小也得给一个。
102
+ 章台账里登记在 `micro_payoffs`(中文名或 id 都行,合法取值由插件注入提示词)。
103
+
104
+ <!-- reading-power:micro-payoffs -->
105
+ | 类型 | 描述 | 范例 |
106
+ |---|---|---|
107
+ | 信息兑现 | 揭示了新信息或线索 | "原来那把钥匙的真正用途是……" |
108
+ | 关系兑现 | 关系推进或确认 | "她第一次主动握住了他的手" |
109
+ | 能力兑现 | 能力提升或新技能 | "他终于掌握了这门功法的精髓" |
110
+ | 资源兑现 | 获得物品或资源 | "储物袋里竟然还藏着一颗聚气丹" |
111
+ | 认可兑现 | 获得认可或面子 | "在场所有人看他的眼神都变了" |
112
+ | 情绪兑现 | 情绪释放或共鸣 | "他终于说出了压在心底的那句话" |
113
+ | 线索兑现 | 伏笔回收或推进 | "三年前的那件事,终于有了眉目" |
114
+ <!-- /reading-power:micro-payoffs -->
115
+
116
+ 题材偏好(参考值,不是硬指标):
117
+
118
+ | 题材 | 偏好微兑现 | 每章数量 |
119
+ |---|---|---|
120
+ | 爽文 | 能力 / 资源 / 认可 | 2-3 |
121
+ | 言情 | 关系 / 情绪 / 认可 | 1-2 |
122
+ | 悬疑 | 信息 / 线索 | 1-2 |
123
+
124
+ ---
125
+
126
+ ## 6. 30/40/30 结构(一章内部)
127
+
128
+ | 阶段 | 占比 | 作用 |
129
+ |---|---|---|
130
+ | 铺垫 Setup | ~30% | 建立信息差、压力、期待 |
131
+ | 兑现 Delivery | ~40% | 核心爽点执行 |
132
+ | 余波 Aftermath | ~30% | 反应、收获、新期待 |
133
+
134
+ 比例是参考值(章节长度差异大,不作硬判定),但节奏别压平 ——
135
+ 把兑现全堆在最后 10%,前 90% 全是铺垫,读者会在兑现之前就流失。