@oh-story/dsh 0.1.10 → 0.1.11

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 (444) hide show
  1. package/README.md +7 -7
  2. package/lib/client.js +7 -3
  3. package/lib/client.js.map +2 -2
  4. package/lib/drama/manifest.json +212 -142
  5. package/lib/drama/skills/short-drama/SKILL.md +14 -2
  6. package/lib/drama/skills/short-drama/assets/project-template/short-drama.json +3 -0
  7. package/lib/drama/skills/short-drama/references/creator-documents.md +3 -0
  8. package/lib/drama/skills/short-drama/references/knowhow-index.md +15 -0
  9. package/lib/drama/skills/short-drama/scripts/project_tool.py +131 -0
  10. package/lib/drama/skills/short-drama-assets/SKILL.md +2 -1
  11. package/lib/drama/skills/short-drama-assets/references/asset-review-checklist.md +2 -0
  12. package/lib/drama/skills/short-drama-assets/references/era-anchors.md +37 -0
  13. package/lib/drama/skills/short-drama-assets/references/stage-contract.md +2 -0
  14. package/lib/drama/skills/short-drama-develop/SKILL.md +10 -4
  15. package/lib/drama/skills/short-drama-develop/assets/adaptation-map.example.jsonl +1 -1
  16. package/lib/drama/skills/short-drama-develop/assets/creative-brief.md +8 -0
  17. package/lib/drama/skills/short-drama-develop/references/adaptation-craft.md +80 -13
  18. package/lib/drama/skills/short-drama-develop/references/episode-design.md +95 -12
  19. package/lib/drama/skills/short-drama-develop/references/genre-and-hook-playbook.md +9 -5
  20. package/lib/drama/skills/short-drama-develop/references/genre-cards//345/244/215/344/273/207/346/211/223/350/204/270.md +1 -1
  21. package/lib/drama/skills/short-drama-develop/references/genre-cards//347/263/273/347/273/237/346/265/201.md +51 -0
  22. package/lib/drama/skills/short-drama-develop/references/genre-cards//351/200/206/350/242/255.md +51 -0
  23. package/lib/drama/skills/short-drama-develop/references/genre-cards//351/207/215/347/224/237/347/251/277/350/266/212.md +51 -0
  24. package/lib/drama/skills/short-drama-develop/references/genre-cards.md +10 -7
  25. package/lib/drama/skills/short-drama-develop/references/premise-devices.md +15 -9
  26. package/lib/drama/skills/short-drama-develop/references/serial-character-and-memory.md +3 -2
  27. package/lib/drama/skills/short-drama-develop/references/stage-contract.md +14 -7
  28. package/lib/drama/skills/short-drama-develop/references/story-craft.md +7 -3
  29. package/lib/drama/skills/short-drama-edit/SKILL.md +43 -20
  30. package/lib/drama/skills/short-drama-edit/assets/remotion/README.md +49 -13
  31. package/lib/drama/skills/short-drama-edit/assets/remotion/package.json +4 -2
  32. package/lib/drama/skills/short-drama-edit/assets/remotion/src/Overlay.tsx +31 -0
  33. package/lib/drama/skills/short-drama-edit/assets/remotion/src/Root.tsx +5 -5
  34. package/lib/drama/skills/short-drama-edit/assets/remotion/src/Subtitles.tsx +68 -69
  35. package/lib/drama/skills/short-drama-edit/assets/remotion/src/font.ts +39 -29
  36. package/lib/drama/skills/short-drama-edit/assets/remotion/src/rules.mjs +188 -0
  37. package/lib/drama/skills/short-drama-edit/assets/remotion/src/schema.ts +26 -13
  38. package/lib/drama/skills/short-drama-edit/assets/remotion/src/screen/Card.tsx +72 -0
  39. package/lib/drama/skills/short-drama-edit/assets/remotion/src/screen/CornerChip.tsx +39 -0
  40. package/lib/drama/skills/short-drama-edit/assets/remotion/src/screen/ScreenText.tsx +36 -0
  41. package/lib/drama/skills/short-drama-edit/assets/remotion/src/screen/SystemPanel.tsx +44 -0
  42. package/lib/drama/skills/short-drama-edit/assets/remotion/src/screen/TaskPanel.tsx +100 -0
  43. package/lib/drama/skills/short-drama-edit/assets/remotion/src/screen/chrome.tsx +197 -0
  44. package/lib/drama/skills/short-drama-edit/assets/remotion/src/screen/tokens.ts +62 -0
  45. package/lib/drama/skills/short-drama-edit/assets/remotion/tsconfig.json +1 -0
  46. package/lib/drama/skills/short-drama-edit/assets//345/211/252/350/276/221/345/215/225.md +4 -2
  47. package/lib/drama/skills/short-drama-edit/references/cut-craft.md +3 -1
  48. package/lib/drama/skills/short-drama-edit/references/delivery-verify.md +6 -2
  49. package/lib/drama/skills/short-drama-edit/references/generated-footage.md +12 -6
  50. package/lib/drama/skills/short-drama-edit/references/sound-and-subtitles.md +13 -8
  51. package/lib/drama/skills/short-drama-edit/references/stage-contract.md +2 -0
  52. package/lib/drama/skills/short-drama-edit/scripts/edit_tool.py +1153 -121
  53. package/lib/drama/skills/short-drama-edit/scripts/selftest.py +49 -9
  54. package/lib/drama/skills/short-drama-novel-analyze/SKILL.md +3 -3
  55. package/lib/drama/skills/short-drama-novel-analyze/assets/episode-candidate.example.jsonl +2 -2
  56. package/lib/drama/skills/short-drama-novel-analyze/references/adaptation-triage.md +8 -4
  57. package/lib/drama/skills/short-drama-novel-analyze/references/adaptation-value.md +10 -3
  58. package/lib/drama/skills/short-drama-novel-analyze/references/aggregation-and-entities.md +25 -1
  59. package/lib/drama/skills/short-drama-novel-analyze/references/stage-contract.md +1 -0
  60. package/lib/drama/skills/short-drama-review/SKILL.md +2 -2
  61. package/lib/drama/skills/short-drama-review/references/review-method.md +6 -1
  62. package/lib/drama/skills/short-drama-review/references/rubric-assets-prompts.md +11 -0
  63. package/lib/drama/skills/short-drama-review/references/rubric-story-script.md +77 -3
  64. package/lib/drama/skills/short-drama-review/references/rubric-visual-motion.md +15 -0
  65. package/lib/drama/skills/short-drama-review/references/stage-contract.md +3 -0
  66. package/lib/drama/skills/short-drama-storyboard/SKILL.md +13 -5
  67. package/lib/drama/skills/short-drama-storyboard/references/blocking-playbooks.md +1 -1
  68. package/lib/drama/skills/short-drama-storyboard/references/production-shot-grammar.md +2 -2
  69. package/lib/drama/skills/short-drama-storyboard/references/shot-craft.md +82 -14
  70. package/lib/drama/skills/short-drama-storyboard/references/stage-contract.md +4 -2
  71. package/lib/drama/skills/short-drama-video-prompts/SKILL.md +5 -3
  72. package/lib/drama/skills/short-drama-video-prompts/references/camera-audio-continuity.md +12 -0
  73. package/lib/drama/skills/short-drama-video-prompts/references/delivery-profile.md +4 -5
  74. package/lib/drama/skills/short-drama-video-prompts/references/generability.md +4 -2
  75. package/lib/drama/skills/short-drama-video-prompts/references/minimax-h3.md +40 -1
  76. package/lib/drama/skills/short-drama-video-prompts/references/motion-recipe.md +20 -14
  77. package/lib/drama/skills/short-drama-video-prompts/references/performance-action-timing.md +1 -1
  78. package/lib/drama/skills/short-drama-video-prompts/references/production-prompt-grammar.md +8 -7
  79. package/lib/drama/skills/short-drama-video-prompts/references/review-and-fixtures.md +1 -1
  80. package/lib/drama/skills/short-drama-video-prompts/references/stage-contract.md +1 -0
  81. package/lib/drama/skills/short-drama-video-prompts/references/target-model-profile.md +8 -1
  82. package/lib/drama/skills/short-drama-video-prompts/references/wan-3.0.md +103 -0
  83. package/lib/drama/skills/short-drama-video-prompts/scripts/motion_timing_check.py +8 -7
  84. package/lib/drama/skills/short-drama-write/SKILL.md +8 -3
  85. package/lib/drama/skills/short-drama-write/references/dialogue-craft.md +1 -1
  86. package/lib/drama/skills/short-drama-write/references/script-craft.md +56 -3
  87. package/lib/drama/skills/short-drama-write/references/stage-contract.md +4 -0
  88. package/lib/drama/skills/short-drama-write/scripts/duration_estimate.py +48 -2
  89. package/lib/index.js +71 -21
  90. package/lib/index.js.map +3 -3
  91. package/lib/oh-story/manifest.json +545 -310
  92. package/lib/oh-story/roles/chapter-extractor.md +11 -11
  93. package/lib/oh-story/roles/character-designer.md +1 -2
  94. package/lib/oh-story/roles/consistency-checker.md +11 -9
  95. package/lib/oh-story/roles/narrative-writer.md +24 -25
  96. package/lib/oh-story/roles/story-architect.md +9 -61
  97. package/lib/oh-story/roles/story-explorer.md +20 -125
  98. package/lib/oh-story/roles/story-researcher.md +0 -1
  99. package/lib/oh-story/skills/story/SKILL.md +6 -6
  100. package/lib/oh-story/skills/story/VERSION +1 -1
  101. package/lib/oh-story/skills/story/references/author-memory-maintenance.md +75 -0
  102. package/lib/oh-story/skills/story/references/author-memory.md +40 -118
  103. package/lib/oh-story/skills/story/scripts/author_memory_commit.py +3 -3
  104. package/lib/oh-story/skills/story-deslop/SKILL.md +24 -25
  105. package/lib/oh-story/skills/story-deslop/references/agent-calls.md +5 -0
  106. package/lib/oh-story/skills/story-deslop/references/anti-ai-writing.md +1 -1
  107. package/lib/oh-story/skills/story-deslop/references/author-memory-maintenance.md +75 -0
  108. package/lib/oh-story/skills/story-deslop/references/author-memory.md +40 -118
  109. package/lib/oh-story/skills/story-deslop/references/banned-words.md +2 -2
  110. package/lib/oh-story/skills/story-deslop/references/deslop-gates.md +21 -4
  111. package/lib/oh-story/skills/story-deslop/references/style-resolution.md +4 -4
  112. package/lib/oh-story/skills/story-deslop/scripts/author_memory_commit.py +3 -3
  113. package/lib/oh-story/skills/story-deslop/scripts/check-ai-patterns.js +155 -8
  114. package/lib/oh-story/skills/story-import/SKILL.md +63 -579
  115. package/lib/oh-story/skills/story-import/references/deep-analysis.md +47 -0
  116. package/lib/oh-story/skills/story-import/references/format-and-structure.md +1 -1
  117. package/lib/oh-story/skills/story-import/references/import-report.md +64 -0
  118. package/lib/oh-story/skills/story-import/references/import-special-cases.md +34 -0
  119. package/lib/oh-story/skills/story-import/references/import-tracking.md +95 -0
  120. package/lib/oh-story/skills/story-import/references/length-routing.md +1 -1
  121. package/lib/oh-story/skills/story-import/references/outline-reverse-rules.md +79 -0
  122. package/lib/oh-story/skills/story-import/references/outline-reverse.md +24 -0
  123. package/lib/oh-story/skills/story-import/references/structure-mapping-long.md +95 -91
  124. package/lib/oh-story/skills/story-import/references/structure-mapping-short.md +24 -12
  125. package/lib/oh-story/skills/story-import/references/tracking-initialization.md +1 -1
  126. package/lib/oh-story/skills/story-import/references/tracking-transaction.md +11 -9
  127. package/lib/oh-story/skills/story-import/scripts/build_outline_brief.py +332 -0
  128. package/lib/oh-story/skills/story-import/scripts/check-outline-contract.js +101 -14
  129. package/lib/oh-story/skills/story-import/scripts/tracking_commit.py +278 -23
  130. package/lib/oh-story/skills/story-import/scripts/wordcount_core.py +179 -23
  131. package/lib/oh-story/skills/story-long-analyze/SKILL.md +28 -50
  132. package/lib/oh-story/skills/story-long-analyze/references/author-facing.md +12 -5
  133. package/lib/oh-story/skills/story-long-analyze/references/deconstruction-notes.md +1 -1
  134. package/lib/oh-story/skills/story-long-analyze/references/final-checks.md +19 -0
  135. package/lib/oh-story/skills/story-long-analyze/references/index-rebuild.md +11 -0
  136. package/lib/oh-story/skills/story-long-analyze/references/pipeline-ops.md +21 -55
  137. package/lib/oh-story/skills/story-long-analyze/references/stage1-golden-chapters.md +128 -0
  138. package/lib/oh-story/skills/story-long-analyze/references/stage2-extraction.md +229 -0
  139. package/lib/oh-story/skills/story-long-analyze/references/stage3-plot-rhythm.md +480 -0
  140. package/lib/oh-story/skills/story-long-analyze/references/stage4-characters-settings.md +195 -0
  141. package/lib/oh-story/skills/story-long-analyze/references/stage5-report.md +33 -0
  142. package/lib/oh-story/skills/story-long-analyze/references/style-profile-generator.md +17 -0
  143. package/lib/oh-story/skills/story-long-analyze/references/style-profile-protocol.md +1 -1
  144. package/lib/oh-story/skills/story-long-analyze/references/synthesis-inputs.md +39 -0
  145. package/lib/oh-story/skills/story-long-analyze/scripts/manage_analysis_run.py +47 -8
  146. package/lib/oh-story/skills/story-long-scan/SKILL.md +41 -193
  147. package/lib/oh-story/skills/story-long-scan/references/platform-ciweimao.md +19 -0
  148. package/lib/oh-story/skills/story-long-scan/references/platform-fanqie.md +45 -0
  149. package/lib/oh-story/skills/story-long-scan/references/platform-jjwxc.md +28 -0
  150. package/lib/oh-story/skills/story-long-scan/references/platform-qidian.md +35 -0
  151. package/lib/oh-story/skills/story-long-scan/references/platform-qimao.md +27 -0
  152. package/lib/oh-story/skills/story-long-scan/references/topic-decision.md +6 -2
  153. package/lib/oh-story/skills/story-long-write/SKILL.md +32 -73
  154. package/lib/oh-story/skills/story-long-write/references/agent-calls.md +47 -0
  155. package/lib/oh-story/skills/story-long-write/references/anti-ai-writing.md +1 -1
  156. package/lib/oh-story/skills/story-long-write/references/artifact-protocols.md +18 -201
  157. package/lib/oh-story/skills/story-long-write/references/author-memory-maintenance.md +75 -0
  158. package/lib/oh-story/skills/story-long-write/references/author-memory.md +40 -118
  159. package/lib/oh-story/skills/story-long-write/references/banned-words.md +2 -2
  160. package/lib/oh-story/skills/story-long-write/references/benchmark-recall.md +6 -10
  161. package/lib/oh-story/skills/story-long-write/references/character-relations.md +49 -1
  162. package/lib/oh-story/skills/story-long-write/references/deslop-gates.md +171 -0
  163. package/lib/oh-story/skills/story-long-write/references/emotion-on-page.md +116 -0
  164. package/lib/oh-story/skills/story-long-write/references/emotional-arc-design.md +1 -114
  165. package/lib/oh-story/skills/story-long-write/references/genre-prose-cards.md +1 -1
  166. package/lib/oh-story/skills/story-long-write/references/long-chapter-quality.md +3 -2
  167. package/lib/oh-story/skills/story-long-write/references/long-format.md +0 -8
  168. package/lib/oh-story/skills/story-long-write/references/long-genre-catalog.md +1 -1
  169. package/lib/oh-story/skills/story-long-write/references/long-genre-mechanics.md +3 -3
  170. package/lib/oh-story/skills/story-long-write/references/opening-design.md +2 -2
  171. package/lib/oh-story/skills/story-long-write/references/outline-conflict.md +4 -4
  172. package/lib/oh-story/skills/story-long-write/references/outline-methods.md +7 -7
  173. package/lib/oh-story/skills/story-long-write/references/outline-rhythm.md +3 -3
  174. package/lib/oh-story/skills/story-long-write/references/outline-structure-theory.md +14 -69
  175. package/lib/oh-story/skills/story-long-write/references/plot-frameworks.md +1 -1
  176. package/lib/oh-story/skills/story-long-write/references/plot-special-topics.md +2 -2
  177. package/lib/oh-story/skills/story-long-write/references/project-files.md +10 -6
  178. package/lib/oh-story/skills/story-long-write/references/reader-contract-and-progression.md +1 -1
  179. package/lib/oh-story/skills/story-long-write/references/reference-index.md +4 -4
  180. package/lib/oh-story/skills/story-long-write/references/stop-and-fix.md +9 -0
  181. package/lib/oh-story/skills/story-long-write/references/style-combat-face.md +1 -58
  182. package/lib/oh-story/skills/story-long-write/references/style-genre-modules.md +1 -1
  183. package/lib/oh-story/skills/story-long-write/references/style-resolution.md +4 -4
  184. package/lib/oh-story/skills/story-long-write/references/tracking-initialization.md +1 -1
  185. package/lib/oh-story/skills/story-long-write/references/tracking-transaction.md +11 -9
  186. package/lib/oh-story/skills/story-long-write/references/workflow-chapter.md +33 -44
  187. package/lib/oh-story/skills/story-long-write/references/workflow-daily.md +18 -51
  188. package/lib/oh-story/skills/story-long-write/references/workflow-outline.md +157 -0
  189. package/lib/oh-story/skills/story-long-write/references/workflow-revision.md +53 -67
  190. package/lib/oh-story/skills/story-long-write/references/workflow-setup.md +112 -251
  191. package/lib/oh-story/skills/story-long-write/references/workflow-volume.md +142 -0
  192. package/lib/oh-story/skills/story-long-write/references/writer-prompt-fallback.md +5 -3
  193. package/lib/oh-story/skills/story-long-write/references/writing-craft.md +18 -56
  194. package/lib/oh-story/skills/story-long-write/scripts/author_memory_commit.py +3 -3
  195. package/lib/oh-story/skills/story-long-write/scripts/build_architect_brief.py +260 -0
  196. package/lib/oh-story/skills/story-long-write/scripts/build_writer_prompt.py +96 -16
  197. package/lib/oh-story/skills/story-long-write/scripts/check-ai-patterns.js +155 -8
  198. package/lib/oh-story/skills/story-long-write/scripts/check-outline-contract.js +101 -14
  199. package/lib/oh-story/skills/story-long-write/scripts/check-outline-copy.js +7 -2
  200. package/lib/oh-story/skills/story-long-write/scripts/outline_view.py +2 -1
  201. package/lib/oh-story/skills/story-long-write/scripts/storyctl.py +250 -50
  202. package/lib/oh-story/skills/story-long-write/scripts/tracking_commit.py +278 -23
  203. package/lib/oh-story/skills/story-long-write/scripts/wordcount_core.py +179 -23
  204. package/lib/oh-story/skills/story-review/SKILL.md +19 -273
  205. package/lib/oh-story/skills/story-review/references/agent-prompts.md +184 -0
  206. package/lib/oh-story/skills/story-review/references/anti-ai-writing.md +1 -1
  207. package/lib/oh-story/skills/story-review/references/author-memory-maintenance.md +75 -0
  208. package/lib/oh-story/skills/story-review/references/author-memory.md +40 -118
  209. package/lib/oh-story/skills/story-review/references/banned-words.md +2 -2
  210. package/lib/oh-story/skills/story-review/references/batch-review.md +19 -0
  211. package/lib/oh-story/skills/story-review/references/character-relations.md +49 -1
  212. package/lib/oh-story/skills/story-review/references/review-quality.md +2 -1
  213. package/lib/oh-story/skills/story-review/references/review-tracking.md +10 -0
  214. package/lib/oh-story/skills/story-review/references/solo.md +52 -0
  215. package/lib/oh-story/skills/story-review/references/style-resolution.md +4 -4
  216. package/lib/oh-story/skills/story-review/references/tracking-initialization.md +1 -1
  217. package/lib/oh-story/skills/story-review/references/tracking-transaction.md +11 -9
  218. package/lib/oh-story/skills/story-review/scripts/author_memory_commit.py +3 -3
  219. package/lib/oh-story/skills/story-review/scripts/check-ai-patterns.js +155 -8
  220. package/lib/oh-story/skills/story-review/scripts/tracking_commit.py +278 -23
  221. package/lib/oh-story/skills/story-review/scripts/wordcount_core.py +179 -23
  222. package/lib/oh-story/skills/story-setup/SKILL.md +69 -458
  223. package/lib/oh-story/skills/story-setup/references/agent-references/agent-quality.md +4 -4
  224. package/lib/oh-story/skills/story-setup/references/agent-references/anti-ai-writing.md +1 -1
  225. package/lib/oh-story/skills/story-setup/references/agent-references/banned-words.md +2 -2
  226. package/lib/oh-story/skills/story-setup/references/agent-references/benchmark-style-load.md +107 -0
  227. package/lib/oh-story/skills/story-setup/references/agent-references/character-relations.md +49 -1
  228. package/lib/oh-story/skills/story-setup/references/agent-references/deslop-gates.md +21 -4
  229. package/lib/oh-story/skills/story-setup/references/agent-references/emotion-on-page.md +116 -0
  230. package/lib/oh-story/skills/story-setup/references/agent-references/emotional-arc-design.md +1 -114
  231. package/lib/oh-story/skills/story-setup/references/agent-references/format-and-structure.md +1 -1
  232. package/lib/oh-story/skills/story-setup/references/agent-references/genre-prose-cards.md +1 -1
  233. package/lib/oh-story/skills/story-setup/references/agent-references/long-genre-catalog.md +1 -1
  234. package/lib/oh-story/skills/story-setup/references/agent-references/long-genre-mechanics.md +3 -3
  235. package/lib/oh-story/skills/story-setup/references/agent-references/long-quality.md +7 -5
  236. package/lib/oh-story/skills/story-setup/references/agent-references/opening-design.md +2 -2
  237. package/lib/oh-story/skills/story-setup/references/agent-references/outline-conflict.md +4 -4
  238. package/lib/oh-story/skills/story-setup/references/agent-references/outline-methods.md +7 -7
  239. package/lib/oh-story/skills/story-setup/references/agent-references/outline-rhythm.md +3 -3
  240. package/lib/oh-story/skills/story-setup/references/agent-references/short-emotional-methods.md +1 -1
  241. package/lib/oh-story/skills/story-setup/references/agent-references/short-genre-formulas.md +0 -15
  242. package/lib/oh-story/skills/story-setup/references/agent-references/short-reversal.md +1 -1
  243. package/lib/oh-story/skills/story-setup/references/agent-references/style-combat-face.md +1 -58
  244. package/lib/oh-story/skills/story-setup/references/agent-references/style-genre-modules.md +1 -1
  245. package/lib/oh-story/skills/story-setup/references/agent-references/style-resolution.md +4 -4
  246. package/lib/oh-story/skills/story-setup/references/agent-references/writing-craft.md +18 -56
  247. package/lib/oh-story/skills/story-setup/references/diagnostics.md +3 -3
  248. package/lib/oh-story/skills/story-short-analyze/SKILL.md +37 -110
  249. package/lib/oh-story/skills/story-short-analyze/references/analysis-character-relations.md +1 -1
  250. package/lib/oh-story/skills/story-short-analyze/references/analysis-method.md +42 -0
  251. package/lib/oh-story/skills/story-short-analyze/references/optional-modules.md +97 -0
  252. package/lib/oh-story/skills/story-short-analyze/references/output-contract.md +9 -47
  253. package/lib/oh-story/skills/story-short-analyze/references/quality-checklist.md +80 -0
  254. package/lib/oh-story/skills/story-short-analyze/references/source-story-quality.md +4 -4
  255. package/lib/oh-story/skills/story-short-analyze/references/stage2-3-structure-emotion.md +308 -0
  256. package/lib/oh-story/skills/story-short-analyze/references/{material-decomposition.md → stage4-6-reversal-summary.md} +303 -374
  257. package/lib/oh-story/skills/story-short-scan/SKILL.md +30 -64
  258. package/lib/oh-story/skills/story-short-scan/references/manual-rank-input.md +36 -0
  259. package/lib/oh-story/skills/story-short-scan/references/platform-dianzhong.md +24 -0
  260. package/lib/oh-story/skills/story-short-scan/references/platform-heiyan.md +21 -0
  261. package/lib/oh-story/skills/story-short-scan/references/topic-match.md +38 -0
  262. package/lib/oh-story/skills/story-short-write/SKILL.md +23 -34
  263. package/lib/oh-story/skills/story-short-write/references/agent-calls.md +13 -0
  264. package/lib/oh-story/skills/story-short-write/references/author-memory-maintenance.md +75 -0
  265. package/lib/oh-story/skills/story-short-write/references/author-memory.md +40 -118
  266. package/lib/oh-story/skills/story-short-write/references/banned-words.md +2 -2
  267. package/lib/oh-story/skills/story-short-write/references/benchmark-recall.md +1 -21
  268. package/lib/oh-story/skills/story-short-write/references/emotional-methods.md +1 -1
  269. package/lib/oh-story/skills/story-short-write/references/genre-writing-formulas.md +0 -15
  270. package/lib/oh-story/skills/story-short-write/references/output-contract.md +9 -47
  271. package/lib/oh-story/skills/story-short-write/references/reference-index.md +17 -49
  272. package/lib/oh-story/skills/story-short-write/references/scene-craft.md +40 -0
  273. package/lib/oh-story/skills/story-short-write/references/short-craft.md +7 -43
  274. package/lib/oh-story/skills/story-short-write/references/short-format.md +3 -3
  275. package/lib/oh-story/skills/story-short-write/references/short-prose-quality.md +2 -1
  276. package/lib/oh-story/skills/story-short-write/references/short-reversal.md +1 -1
  277. package/lib/oh-story/skills/story-short-write/references/style-resolution.md +4 -4
  278. package/lib/oh-story/skills/story-short-write/references/submission-craft.md +1 -1
  279. package/lib/oh-story/skills/story-short-write/references/villain-and-reveal.md +5 -10
  280. package/lib/oh-story/skills/story-short-write/references/workflow-design.md +19 -12
  281. package/lib/oh-story/skills/story-short-write/references/workflow-draft.md +22 -32
  282. package/lib/oh-story/skills/story-short-write/references/workflow-revision.md +84 -17
  283. package/lib/oh-story/skills/story-short-write/references/writing-workflow.md +7 -119
  284. package/lib/oh-story/skills/story-short-write/scripts/author_memory_commit.py +3 -3
  285. package/lib/oh-story/skills/story-short-write/scripts/check-ai-patterns.js +155 -8
  286. package/lib/oh-story/skills/story-short-write/scripts/check-outline-copy.js +7 -2
  287. package/lib/types/client/video-studio.d.ts.map +1 -1
  288. package/lib/types/native-hooks.d.ts +2 -2
  289. package/lib/types/native-hooks.d.ts.map +1 -1
  290. package/lib/types/role-tool.d.ts.map +1 -1
  291. package/lib/types/skill-provider.d.ts.map +1 -1
  292. package/lib/types/video-project.d.ts.map +1 -1
  293. package/lib/types/workspace-route.d.ts.map +1 -1
  294. package/lib/video-recap/CHANGELOG.md +60 -1
  295. package/lib/video-recap/README.en.md +348 -137
  296. package/lib/video-recap/README.md +340 -136
  297. package/lib/video-recap/manifest.json +406 -251
  298. package/lib/video-recap/skills/video-assemble/SKILL.md +30 -15
  299. package/lib/video-recap/skills/video-assemble/references/audio-modes.md +63 -0
  300. package/lib/video-recap/skills/video-assemble/references/explicit-audio-mix.md +75 -0
  301. package/lib/video-recap/skills/video-assemble/references/foreground-compose.md +118 -0
  302. package/lib/video-recap/skills/video-assemble/references/narration-adoption.md +103 -0
  303. package/lib/video-recap/skills/video-assemble/references/packaging.md +45 -0
  304. package/lib/video-recap/skills/video-assemble/references/pair-media.md +74 -0
  305. package/lib/video-recap/skills/video-assemble/references/source-score.md +147 -0
  306. package/lib/video-recap/skills/video-assemble/references/subtitle-track.md +202 -0
  307. package/lib/video-recap/skills/video-assemble/scripts/adoption/__init__.py +1 -0
  308. package/lib/video-recap/skills/video-assemble/scripts/adoption/audio_mix_binding.py +279 -0
  309. package/lib/video-recap/skills/video-assemble/scripts/adoption/frozen_audio.py +187 -0
  310. package/lib/video-recap/skills/video-assemble/scripts/adoption/narration_binding.py +323 -0
  311. package/lib/video-recap/skills/video-assemble/scripts/adoption/strict_inputs.py +109 -0
  312. package/lib/video-recap/skills/video-assemble/scripts/adoption/strict_publish.py +130 -0
  313. package/lib/video-recap/skills/video-assemble/scripts/artifacts.py +10 -46
  314. package/lib/video-recap/skills/video-assemble/scripts/assemble.py +378 -119
  315. package/lib/video-recap/skills/video-assemble/scripts/assemble_constants.py +29 -12
  316. package/lib/video-recap/skills/video-assemble/scripts/assembly_contract.py +95 -44
  317. package/lib/video-recap/skills/video-assemble/scripts/assembly_settings.py +75 -32
  318. package/lib/video-recap/skills/video-assemble/scripts/audio_mix.py +11 -11
  319. package/lib/video-recap/skills/video-assemble/scripts/compose_foreground.py +293 -0
  320. package/lib/video-recap/skills/video-assemble/scripts/export_jianying.py +71 -78
  321. package/lib/video-recap/skills/video-assemble/scripts/jianying/__init__.py +1 -0
  322. package/lib/video-recap/skills/video-assemble/scripts/{jianying_builders.py → jianying/builders.py} +39 -67
  323. package/lib/video-recap/skills/video-assemble/scripts/{jianying_model.py → jianying/model.py} +3 -11
  324. package/lib/video-recap/skills/video-assemble/scripts/{jianying_optional.py → jianying/optional.py} +1 -1
  325. package/lib/video-recap/skills/video-assemble/scripts/jianying/schema.py +53 -0
  326. package/lib/video-recap/skills/video-assemble/scripts/{jianying_templates.py → jianying/templates.py} +1 -1
  327. package/lib/video-recap/skills/video-assemble/scripts/{jianying_timeline_contract.py → jianying/timeline_contract.py} +34 -13
  328. package/lib/video-recap/skills/video-assemble/scripts/{jianying_writer.py → jianying/writer.py} +7 -17
  329. package/lib/video-recap/skills/video-assemble/scripts/lib.py +37 -4
  330. package/lib/video-recap/skills/video-assemble/scripts/media.py +12 -21
  331. package/lib/video-recap/skills/video-assemble/scripts/narration_audio.py +64 -34
  332. package/lib/video-recap/skills/video-assemble/scripts/packaging.py +122 -0
  333. package/lib/video-recap/skills/video-assemble/scripts/pair_media.py +216 -0
  334. package/lib/video-recap/skills/video-assemble/scripts/render_preflight.py +1 -3
  335. package/lib/video-recap/skills/video-assemble/scripts/source_score.py +469 -0
  336. package/lib/video-recap/skills/video-assemble/scripts/source_subtitles.py +25 -9
  337. package/lib/video-recap/skills/video-assemble/scripts/subtitles/__init__.py +1 -0
  338. package/lib/video-recap/skills/video-assemble/scripts/{subtitle_core.py → subtitles/core.py} +13 -6
  339. package/lib/video-recap/skills/video-assemble/scripts/{subtitle_render.py → subtitles/render.py} +5 -4
  340. package/lib/video-recap/skills/video-assemble/scripts/subtitles/track.py +324 -0
  341. package/lib/video-recap/skills/video-assemble/scripts/subtitles/track_binding.py +200 -0
  342. package/lib/video-recap/skills/video-assemble/scripts/timeline.py +30 -46
  343. package/lib/video-recap/skills/video-assemble/scripts/timeline_emit.py +91 -7
  344. package/lib/video-recap/skills/video-assemble/scripts/visual_render.py +22 -8
  345. package/lib/video-recap/skills/video-cut/SKILL.md +34 -16
  346. package/lib/video-recap/skills/video-cut/references/shot-review.md +50 -0
  347. package/lib/video-recap/skills/video-cut/scripts/cut.py +2 -28
  348. package/lib/video-recap/skills/video-cut/scripts/cut_cli.py +58 -62
  349. package/lib/video-recap/skills/video-cut/scripts/cut_contract.py +21 -106
  350. package/lib/video-recap/skills/video-cut/scripts/cut_render.py +14 -9
  351. package/lib/video-recap/skills/video-cut/scripts/lib.py +39 -0
  352. package/lib/video-recap/skills/video-cut/scripts/narration_mapping.py +2 -155
  353. package/lib/video-recap/skills/video-cut/scripts/narrative_selection.py +244 -0
  354. package/lib/video-recap/skills/video-cut/scripts/shot_review.py +357 -0
  355. package/lib/video-recap/skills/video-recap/SKILL.md +86 -42
  356. package/lib/video-recap/skills/video-recap/references/audio-routing.md +126 -0
  357. package/lib/video-recap/skills/video-recap/references/config-playbook.md +12 -8
  358. package/lib/video-recap/skills/video-recap/references/data-schema.md +44 -33
  359. package/lib/video-recap/skills/video-recap/references/resource-library.md +151 -0
  360. package/lib/video-recap/skills/video-recap/references/shift-left-qc-schema.md +1 -1
  361. package/lib/video-recap/skills/video-recap/scripts/doctor.py +123 -30
  362. package/lib/video-recap/skills/video-recap/scripts/final_qc.py +22 -75
  363. package/lib/video-recap/skills/video-recap/scripts/lib.py +3 -3
  364. package/lib/video-recap/skills/video-recap/scripts/library.py +509 -0
  365. package/lib/video-recap/skills/video-recap/scripts/materials.py +63 -91
  366. package/lib/video-recap/skills/video-recap/scripts/mimo_qc.py +8 -70
  367. package/lib/video-recap/skills/video-recap/scripts/project_binding.py +286 -0
  368. package/lib/video-recap/skills/video-recap/scripts/qc/__init__.py +1 -0
  369. package/lib/video-recap/skills/video-recap/scripts/{mimo_qc_client.py → qc/mimo_client.py} +1 -1
  370. package/lib/video-recap/skills/video-recap/scripts/{mimo_qc_evidence.py → qc/mimo_evidence.py} +33 -66
  371. package/lib/video-recap/skills/video-recap/scripts/{mimo_qc_observations.py → qc/mimo_observations.py} +3 -11
  372. package/lib/video-recap/skills/video-recap/scripts/{mimo_qc_payload.py → qc/mimo_payload.py} +4 -7
  373. package/lib/video-recap/skills/video-recap/scripts/{mimo_qc_report.py → qc/mimo_report.py} +17 -28
  374. package/lib/video-recap/skills/video-recap/scripts/{mimo_qc_runner.py → qc/mimo_runner.py} +2 -2
  375. package/lib/video-recap/skills/video-recap/scripts/qc_contract.py +0 -19
  376. package/lib/video-recap/skills/video-recap/scripts/recap_cli.py +119 -50
  377. package/lib/video-recap/skills/video-recap/scripts/recap_inspect.py +32 -114
  378. package/lib/video-recap/skills/video-recap/scripts/recap_review.py +9 -23
  379. package/lib/video-recap/skills/video-recap/scripts/recap_runner.py +387 -334
  380. package/lib/video-recap/skills/video-recap/scripts/recap_runtime.py +23 -23
  381. package/lib/video-recap/skills/video-recap/scripts/recap_source.py +278 -0
  382. package/lib/video-recap/skills/video-recap/scripts/recap_stage_qc.py +25 -12
  383. package/lib/video-recap/skills/video-recap/scripts/recap_timeline.py +59 -52
  384. package/lib/video-recap/skills/video-recap/scripts/resource_lock.py +162 -0
  385. package/lib/video-recap/skills/video-script/SKILL.md +16 -13
  386. package/lib/video-recap/skills/video-script/references/creative-editing-playbook.md +9 -5
  387. package/lib/video-recap/skills/video-script/references/promotional-copy.md +68 -0
  388. package/lib/video-recap/skills/video-script/references/research-guide.md +1 -1
  389. package/lib/video-recap/skills/video-script/scripts/evidence_bundle.py +24 -76
  390. package/lib/video-recap/skills/video-script/scripts/lib.py +10 -87
  391. package/lib/video-recap/skills/video-script/scripts/narration_lint.py +63 -39
  392. package/lib/video-recap/skills/video-script/scripts/review.py +0 -2
  393. package/lib/video-recap/skills/video-script/scripts/review_grounding.py +35 -59
  394. package/lib/video-recap/skills/video-script/scripts/review_response.py +66 -128
  395. package/lib/video-recap/skills/video-script/scripts/review_runner.py +12 -20
  396. package/lib/video-recap/skills/video-script/scripts/speech_ownership.py +4 -4
  397. package/lib/video-recap/skills/video-script/scripts/validate.py +53 -42
  398. package/lib/video-recap/skills/video-understanding/SKILL.md +6 -4
  399. package/lib/video-recap/skills/video-understanding/references/data-schema.md +50 -156
  400. package/lib/video-recap/skills/video-understanding/references/research-guide.md +4 -4
  401. package/lib/video-recap/skills/video-understanding/scripts/asr.py +85 -65
  402. package/lib/video-recap/skills/video-understanding/scripts/asr_timing_evidence.py +270 -0
  403. package/lib/video-recap/skills/video-understanding/scripts/brief.py +2 -5
  404. package/lib/video-recap/skills/video-understanding/scripts/briefing/__init__.py +1 -0
  405. package/lib/video-recap/skills/video-understanding/scripts/{agent_brief.py → briefing/builder.py} +38 -35
  406. package/lib/video-recap/skills/{video-script/scripts/brief_context.py → video-understanding/scripts/briefing/context.py} +4 -35
  407. package/lib/video-recap/skills/{video-script/scripts/brief_inputs.py → video-understanding/scripts/briefing/inputs.py} +9 -31
  408. package/lib/video-recap/skills/video-understanding/scripts/{brief_timeline.py → briefing/timeline.py} +5 -6
  409. package/lib/video-recap/skills/video-understanding/scripts/consolidate.py +65 -116
  410. package/lib/video-recap/skills/video-understanding/scripts/detect.py +31 -40
  411. package/lib/video-recap/skills/video-understanding/scripts/lib.py +30 -86
  412. package/lib/video-recap/skills/video-understanding/scripts/narration_lint.py +63 -39
  413. package/lib/video-recap/skills/video-understanding/scripts/speech_ownership.py +4 -4
  414. package/lib/video-recap/skills/video-understanding/scripts/storyboard.py +17 -79
  415. package/lib/video-recap/skills/video-understanding/scripts/understanding_brief.py +14 -40
  416. package/lib/video-recap/skills/video-understanding/scripts/understanding_cache.py +64 -46
  417. package/lib/video-recap/skills/video-understanding/scripts/understanding_runner.py +31 -11
  418. package/lib/video-recap/skills/video-understanding/scripts/understanding_storyboard.py +19 -14
  419. package/lib/video-recap/skills/video-understanding/scripts/vlm.py +80 -108
  420. package/lib/video-recap/skills/video-voiceover/SKILL.md +29 -19
  421. package/lib/video-recap/skills/video-voiceover/references/index-tts.md +31 -0
  422. package/lib/video-recap/skills/video-voiceover/scripts/approved_text_policy.py +123 -0
  423. package/lib/video-recap/skills/video-voiceover/scripts/dub.py +51 -59
  424. package/lib/video-recap/skills/video-voiceover/scripts/lib.py +8 -44
  425. package/lib/video-recap/skills/video-voiceover/scripts/providers/__init__.py +1 -0
  426. package/lib/video-recap/skills/video-voiceover/scripts/providers/index_tts.py +184 -0
  427. package/lib/video-recap/skills/video-voiceover/scripts/voiceover.py +212 -134
  428. package/package.json +1 -1
  429. package/lib/oh-story/skills/story-long-analyze/references/material-decomposition.md +0 -538
  430. package/lib/oh-story/skills/story-long-analyze/references/output-templates.md +0 -603
  431. package/lib/oh-story/skills/story-long-scan/references/scan-output-format.md +0 -207
  432. package/lib/oh-story/skills/story-short-analyze/references/output-templates.md +0 -561
  433. package/lib/video-recap/skills/video-assemble/scripts/jianying_schema.py +0 -98
  434. package/lib/video-recap/skills/video-recap/references/creative-editing-playbook.md +0 -225
  435. package/lib/video-recap/skills/video-recap/references/research-guide.md +0 -74
  436. package/lib/video-recap/skills/video-recap/references/timeline-and-jianying.md +0 -250
  437. package/lib/video-recap/skills/video-script/scripts/agent_brief.py +0 -399
  438. package/lib/video-recap/skills/video-script/scripts/brief_timeline.py +0 -327
  439. package/lib/video-recap/skills/video-script/scripts/narration.py +0 -12
  440. package/lib/video-recap/skills/video-understanding/scripts/brief_context.py +0 -348
  441. package/lib/video-recap/skills/video-understanding/scripts/brief_inputs.py +0 -290
  442. /package/lib/video-recap/skills/video-assemble/scripts/{jianying_tracks.py → jianying/tracks.py} +0 -0
  443. /package/lib/video-recap/skills/video-recap/scripts/{mimo_qc_contract.py → qc/mimo_contract.py} +0 -0
  444. /package/lib/video-recap/skills/video-voiceover/scripts/{fish_audio.py → providers/fish_audio.py} +0 -0
@@ -17,8 +17,7 @@
17
17
  | 设计换地图节奏 | 换地图与地图架构 -> 换地图三法 -> 顶层框架法 |
18
18
  | 拉长篇幅不崩盘 | 多线写长技法 -> 传统文框架与四大留存手段 |
19
19
  | 写西幻题材 | 西幻创作要点 |
20
- | 把对标书节奏搬进自己大纲 | 一级结构=对标书的剧情单元 + 对标节奏迁移 |
21
- | 排章避免每章像短篇 | 章节定位与张弛 |
20
+ | 把对标书节奏搬进自己大纲、排章避免每章像短篇 | workflow-volume.md「节奏锚与对标迁移」 |
22
21
 
23
22
  结构规则是**必须遵守**的框架约束(如五幕式的因果链环数、每幕功能)。遇到冲突时:因果链规则 > 结构模板 > 具体技法。
24
23
 
@@ -26,16 +25,18 @@
26
25
 
27
26
  ## 一级结构与二级结构
28
27
 
29
- ### 一级结构 = 单元剧串联
28
+ 一级/二级/三级结构指全书结构类型;组成它们的一段段剧情一律叫剧情单元。
30
29
 
31
- 一条故事线由若干单元剧组成,互相孤立,主角如绳子串起所有单元剧。
30
+ ### 一级结构 = 剧情单元串联
31
+
32
+ 一条故事线由若干剧情单元组成,互相孤立,主角如绳子串起所有剧情单元。
32
33
 
33
34
  - 优势:爽点密集,结构简单不易出错
34
35
  - 劣势:撑不起长篇幅,期待感单一,上限有限
35
36
 
36
- ### 二级结构 = 单元剧套娃升维
37
+ ### 二级结构 = 剧情单元套娃升维
37
38
 
38
- 把一级结构的"单元剧"拉长到整卷,每卷是一个完整故事。核心问题:一卷二三十万字只展开一个故事,铺垫太长。
39
+ 把一级结构的剧情单元拉长到整卷,每卷是一个完整故事。核心问题:一卷二三十万字只展开一个故事,铺垫太长。
39
40
 
40
41
  **解决方案 = 套娃**:大故事的每个结构部分本身也是一个小故事,小故事有爽点,同时暗中铺垫大故事。层层递进,高潮时串在一起引爆。
41
42
 
@@ -45,7 +46,7 @@
45
46
 
46
47
  ### 长篇特殊认知
47
48
 
48
- - 最小冲突单元 = 节拍(一个动作对应一个反应)
49
+ - 最小冲突单元 = 一次交锋(一个动作对应一个反应)
49
50
  - 过渡章节的问题往往是信息铺垫太多、冲突太少
50
51
  - 剧作理论不适用两点:①人物弧——几百万字主角早该成熟,主角可当工具人 ②细节打磨——长篇读者不会深研潜台词
51
52
 
@@ -167,14 +168,14 @@
167
168
  典型:无敌文、日常文。轻剧情重人设。
168
169
 
169
170
  核心特征:
170
- - 单元剧模式,各有完整三幕式
171
- - 公式:核心爽点 + 讨喜人设 + 单元剧舞台
171
+ - 剧情单元模式,各有完整三幕式
172
+ - 公式:核心爽点 + 讨喜人设 + 剧情单元舞台
172
173
  - 不需要明确主线,主角串联一切
173
174
  - 人设的新颖是重点
174
175
 
175
176
  ### 过渡型
176
177
 
177
- 开局弱主线(单元剧日常),后期逐渐过渡为强主线。
178
+ 开局弱主线(剧情单元日常),后期逐渐过渡为强主线。
178
179
 
179
180
  ### 支线设计原则
180
181
 
@@ -245,67 +246,11 @@
245
246
 
246
247
  ---
247
248
 
248
- ## 一级结构 = 对标书的剧情单元(节奏对标的轴)
249
-
250
- 一级结构是一个完整单元剧:一个矛盾从起到爆发收束,约 1.5-3 万字 / 数章。拆对标书拆出来的「剧情单元 / 章节摘要 / 爽点循环」就是它的一级结构序列;自己卷纲里的「剧情单元」也是一级结构。所以「一级结构」是理论叫法,落到产物就是**剧情单元**(对标侧=拆出的剧情单元,本书侧=卷纲里的剧情单元卡)。所以对标节奏不是另起炉灶——是把对标书的一级结构序列,保留情绪与功能、换素材,搬进自己的卷纲。
251
-
252
- ### 关键点法(统一各尺度的节奏锚)
253
-
254
- 任意尺度(全书 / 卷 / 一级结构 / 支线 / 章)都有五个关键点:开场、1/4、中点、3/4、结尾。其中 1/4、中点、3/4 是放关键情节的位置。关键情节三类:
255
-
256
- | 类型 | 含义 |
257
- |------|------|
258
- | 情节逆转 | 发展在读者意料内,但主角的解决方式让人直呼精彩(装逼打脸、英雄救美) |
259
- | 情节转折 | 意料之外(身份反转、敌变友、局势骤变) |
260
- | 激励情节 | 全书或一卷第一个、与核心主线直接相关的命运改变时刻 |
261
-
262
- 不是每个尺度都把三处填满,但一卷至少在 1/4、中点、3/4 各安排一个关键情节,避免全程一个力度。
263
-
264
- ### 对标节奏迁移(卷纲定稿前做一次,无对标书可跳过)
265
-
266
- 1. **选段(以剧情单元为单位)**:在主对标里圈出本卷要对标的一级结构序列——选段单位就是拆文产出的剧情单元(`剧情/{剧情标题}.md`)。检索顺序:先读主对标 `剧情/README.md`「剧情单元清单」(有清单则一书一文件,按「类型 / 桥段标签」直接命中同类);无清单则在 `剧情/*.md` 里按「类型」行(第一键,必填枚举)+「桥段标签 / 套路框架位置」行(第二键)圈同类;仍无命中回退按章节范围圈段,全程不阻塞。多对标时按 `cross-book-recall.md` 大纲预算从副对标补同类条目。读取必备权威文件 `剧情/节奏.md`(爆发密度 / 爽点循环);缺失时先修复或重跑拆文 Stage 3,不从摘要猜测节奏。本卷对标几条一级结构 ≈ 本卷字数 ÷ 1.5-3 万。
267
- 2. **标关键点**:看对标这几个一级结构在 1/4、中点、3/4 各放了什么关键情节,判为逆转 / 转折 / 激励。摘要里「类型=转折点」的情节点 + 基调突变(如温馨→压抑)就是关键点的确定性锚,不靠凭感觉;剧情单元的「结构分布」(铺垫/发展/高潮/收尾期)与「情节点索引」同为确定性锚。
268
- 3. **换素材**:保留对标的情绪链和功能位,把对象、场景、事件全换成自己的,禁止照搬具体桥段。功能位清单取必备权威文件 `剧情/情绪模块.md` 的可替换项;缺失时先修复,不生成替代清单。
269
- 4. **修正硬伤**:换素材前比对 `拆文报告.md`「不建议模仿」。对标若在某个关键点是弱处理(慢热留白、主角长期旁观等已知硬伤),迁移时要在该位置补一个缺的关键情节、或把后面的关键情节前置,而不是把弱处理一起抄过来——关键点该有的力度不能因为对标偷懒就跟着偷懒。
270
- 5. **排章 + 落卷纲**:把换好(并修正)的关键情节落到本卷相同相对位置——这里的 1/4·中点·3/4 是**卷尺度**(1/4≈总章×0.25、中点×0.5、3/4×0.75);卷里有几条一级结构时,每条一级结构内部另有自己的铺垫→逆转→收尾,别和卷尺度的关键点混为一谈。关键点之间用普通推进章过渡,每个关键点之后按需插一章呼吸 / 关系章;写进卷纲「对标结构坐标」与情绪弧线的章节定位列,细纲承接时每章标章节定位。同时把选中的剧情单元以 {书名}《剧情标题》写入剧情单元卡「对标剧情参照」。
271
-
272
- 近精细远模糊:只精排当前卷,后续卷做粗坐标即可,不必一上来规划全书。
273
-
274
- 一个最小例子(demo《让你管账号,你高燃混剪炸全网》):对标结构的 1/4 是“小人物拿出粗糙作品,无人看好”,中点是“作品爆火,体制内外同时关注”,3/4 是“专业力量进场替代,反而证明主角不可复制”。换到江晨这条军宣线后,1/4 落成他用手机拍《诸君,且听龙吟》、画质粗糙却先把军魂拍出来;中点落成视频引爆全网和参军热潮;3/4 落成专业团队高清重拍,却被周薄森当场指出“缺了灵魂”,张耀祖最终拍板继续用手机原版。保留的是“轻视→市场验证→权威替代失败→价值坐实”的情绪链,素材、场景和角色关系都来自本书。
275
-
276
- ### 按剧情批出细纲(细纲分批边界)
249
+ ## 剧情单元:节奏对标的轴
277
250
 
278
- 一批细纲 = 卷纲里的一个剧情单元(约 5-15 章)。体量换算:剧情单元字数 ÷ 单章目标字数 → 章数,单章目标字数取本书既有细纲惯例,无惯例按题材节奏档取默认(快节奏/短平快约 2000,均衡约 3000);剧情单元超过 1.5 万字且节拍含两个以上独立高潮时拆成多个剧情单元,否则单个剧情单元。剧情单元 >10 章拆两批建纲,两批共享同一次召回;首批 = 前 10 章封顶、可跨单元(跨入的剧情单元建卡时召回一次,余章由后续滚动批共享剧情单元卡结论),停靠规则不变(见 [Phase 3:大纲搭建](workflow-setup.md#phase-3大纲搭建))。
251
+ 剧情单元是一个矛盾从起到爆发收束的完整段落,约 1.5-3 万字 / 数章。对标侧是拆出的剧情单元(配章节摘要、爽点循环),本书侧是卷纲里的剧情单元卡,粒度相同。所以对标节奏不是另起炉灶——是把对标书的剧情单元序列,保留情绪与功能、换素材,搬进自己的卷纲。
279
252
 
280
- 建卡时做一次**剧情批召回**:读剧情单元卡「对标剧情参照」指向的剧情单元(≤3 个文件)的「结构分布」「情节点索引」,回查该书 `剧情/节奏.md` 同章节区间的爽点循环 / 触动点与被引情绪模块卡,提炼 5-8 拍共性节拍写入剧情单元卡「单元节拍/章功能分配」,单元情绪引擎字段对照主对标 `剧情/情绪模块.md` 的可复现模块校准。若主产物存在但被引的单个情绪模块卡未命中,只跳过该卡;`剧情/情绪模块.md` 或 `剧情/节奏.md` 文件缺失仍按上方 fail-fast 规则先修复。换素材与修硬伤纪律同上方迁移步骤 3/4——保留情绪链和功能位,对象、场景、事件全换,对标弱处理就地修正。结论固化进剧情单元卡后,逐章细纲只消费剧情单元卡,不重读剧情单元。
281
-
282
- **「只消费剧情单元卡」管的是不重读对标,不冻结逐章建纲。** 排纲当场发现的缺口(某拍无对手、数值没验过、地点无底图、角色既定规矩挡场之类)按新增物三级处置(直接写/写了要报:先落档再引用/先问作者:挂起提案,见 workflow-setup.md「缺什么按新增物三级处置」),处置完记一行,批末汇进排纲底稿的「**建纲追加**」小节(见 workflow-setup.md「排纲自查与细纲」步骤 5);下一批供给自查以该小节为固定输入(按当场缺口类别加问批前盘点项)。
283
-
284
- 日更中途发现卷纲缺少「对标剧情参照」等当前协议必需字段时,先补齐卷纲再建细纲;锁定卷纲不得自动回写,必须停在补纲边界。节拍分析过程不写进追踪文件,只有最终影响未来连续性的约束或下一章承诺才进入本章追踪事务。
285
-
286
- ## 章节定位与张弛(破「每章像短篇」)
287
-
288
- 一卷里章的压力本就该有高有低。这里的压力级指**爆发 / 冲突烈度**(复用悬念刻度 1 微 / 2 小 / 3 中 / 4 大 / 5 极),不是情感烈度——关系回收 / 泪目这类章可以压力低(爆发小)但情感强度顶满,情感烈度由卷纲情绪弧线的「情绪基调 + 强度」承载。章节定位由「这一章在它所属一级结构里的位置」自然落出,不是另贴一套独立标签:一级结构首章多为铺垫 / 共情,中段承载逆转,收尾爆发收束;黄金开篇、高潮结算 + 温情这类章可复合标注(如「高压 + 关系」)或留空。
289
-
290
- | 章节定位 | 功能 | 压力级 | 卷内占比(均衡/长书基线,非硬配额) | 钩子要求 |
291
- |------|------|--------|--------------------------|----------|
292
- | 高压章 | 打脸 / 掉马 / 反转 / 高潮;关键点的关键情节落点 | 4-5 | 约 15-20% | 章尾强钩子;承载逆转 / 转折 |
293
- | 普通推进章 | 主线推进、冲突升级、单元剧中段 | 2-3 | 约 40-50% | 章尾中钩子;至少一个小爽点或期待递进 |
294
- | 修炼试错章 | 实力 / 资源积累、能力铺垫、失败试错 | 2 | 约 5-10% | 进度钩子(差一点 / 即将突破),可无反转 |
295
- | 关系回收章 | 感情线兑现、关系转折、身边人日常 | 2-3 | 约 5-10% | 情感钩子;拉扯仍带主线相关 |
296
- | 低压生活章 | 高潮后喘息、关系升温、张弛调节 | 1-2 | 不超过约 10% | 允许弱钩子或仅情绪钩子;不强求反转 / 爽点 |
297
- | 信息整理章 | 转场、设定交代、时间缝合 | 1 | 不超过约 5%,能并章就并章、少独立成章 | 允许无显性爽点;信息用「表演」承载;结尾给下一段目标 |
298
-
299
- 两条底线:
300
-
301
- - **期待不断、爆发分布**。低压章可以没有爽点和反转,但每章都要给读者一个往下看的理由(微好奇、阶段目标、暧昧期待)。掉的是爆发烈度,不是往前的拉力——番茄追读尤其吃这条。
302
- - **禁情绪母题扎堆**。比「每章像短篇」更隐蔽的疲劳源,是连续多章同一情绪母题高位运行(如连五章家国 / 泪目)——章节定位分得再开也救不了。排卷纲情绪弧线时逐行看相邻 3-4 章的情绪基调,同母题别连超 2-3 章;靠换情绪、换钩子方式、多线穿插来差异化,不是靠砍钩子。
303
-
304
- 题材分级(上面占比是均衡 / 长书基线,按题材分档):番茄短平快 / 男频事业线,高压可到 30% 以上、呼吸章压到 5% 上下都正常,别拿基线去「补呼吸、砍高压」反而掉追读;女频 / 世情 / 追妻,人设关系容量大、关系 / 低压章可更多,但仍走情绪折线、不必每章三折。低压 / 关系章定位是看点(主角身边人的日常本身是订阅点),不是填充。
305
-
306
- 与字数目标的衔接:章节定位决定节拍功能与展开取舍,但不把每个情节点换算成固定字数,也不靠增点凑目标。写后由程序按双层长度带验收:明显欠长先判断已批准义务是否未实现,容量不足或不明确就协商自然长度、补纲或目标,绝不自动补写;明显超长可做一次不新增语义、逐项保留批准情节点与章尾钩子的净删型压缩,复检仍带外就停止,不进入循环删改。
307
-
308
- ---
253
+ 卷纲怎么锚节奏、怎么从对标迁移,以及章节定位与张弛,在 [workflow-volume.md](workflow-volume.md)「节奏锚与对标迁移」;细纲怎么按剧情批出,在 [workflow-outline.md](workflow-outline.md) 文末。
309
254
 
310
255
  ## 质量检查清单
311
256
 
@@ -610,7 +610,7 @@ B打败A -> C打败B -> 主角打败C -> 引出大BOSS。升级文替换:"台
610
610
 
611
611
  - 意外 = 桌子底下炸弹突然爆炸
612
612
  - 悬念 = 观众听到定时炸弹在滴答但不知道何时爆炸 -> 悬念远比意外有力
613
- - 章末断章留悬念 = 章结尾尚未解决的危险(高压/推进章用强悬念;低压/过场章弱钩子或阶段目标即可,按章节定位——见 outline-structure-theory.md「章节定位与张弛」)
613
+ - 章末断章留悬念 = 章结尾尚未解决的危险(高压/推进章用强悬念;低压/过场章弱钩子或阶段目标即可,按章节定位——见 workflow-volume.md「章节定位与张弛」)
614
614
 
615
615
  ### 时间锁
616
616
 
@@ -279,7 +279,7 @@
279
279
 
280
280
  | 结构 | 特点 | 订阅表现 |
281
281
  |------|------|----------|
282
- | 一级结构(单元剧) | 爽点分布均匀,每天有小高潮 | 追读稳定 |
282
+ | 一级结构(剧情单元串联) | 爽点分布均匀,每天有小高潮 | 追读稳定 |
283
283
  | 二级结构(铺垫->反转->大高潮) | 大高潮后有平缓期 | 订阅波动,阶梯型流失 |
284
284
 
285
285
 
@@ -594,7 +594,7 @@
594
594
  - [ ] 每个剧情存在的目的是否明确(主线/过渡/小循环)?
595
595
  - [ ] 小循环是否严格按 铺垫->困难->金手指发挥作用->爽点释放 四步走?
596
596
  - [ ] 小循环中是否铺垫了大循环的期待?
597
- - [ ] 同人是否用一级结构(单元剧),原创是否按节奏递进模式?
597
+ - [ ] 同人是否用一级结构(剧情单元串联),原创是否按节奏递进模式?
598
598
 
599
599
  ### 阵营与动机
600
600
 
@@ -22,8 +22,9 @@
22
22
  │ └── 题材正文提示卡.md # 题材正文核心:边界/期待/爽点/节奏/禁漂移
23
23
  ├── 大纲/
24
24
  │ ├── 大纲.md # 全书卷级结构
25
- │ ├── 卷纲_第一卷.md # 每卷一个:对标结构坐标+剧情单元+情绪弧线(含章节定位)+人物弧线+伏笔+反转
26
- │ └── 细纲_第001章.md # 每章一个:章节定位+事件+钩子(按章节定位,章首/章尾/段落级)+爽点+悬念
25
+ │ ├── 卷纲_第一卷.md # 每卷一个:卷契约+故事线+剧情单元卡+情绪弧线+人物弧线+伏笔+反转
26
+ │ ├── 排纲底稿_L1-01.md # 每单元一份:供给自查+建纲追加
27
+ │ └── 细纲_第001章.md # 每章一个:九个必填字段+四个小节+结尾设定和钩子
27
28
  ├── 正文/
28
29
  │ ├── 第001章_章名.md
29
30
  │ └── ...
@@ -65,12 +66,13 @@
65
66
  | 文件 | 粒度 | 创建阶段 | 读取时机 |
66
67
  |------|------|---------|---------|
67
68
  | 设定/关系.md | 全书 | Phase 2 | 按需:story-explorer relationship 查询、story-review 查设定(不在每章写作回路里逐章读) |
68
- | 设定/题材定位.md(含 `主对标书` 字段,多对标时必填) | 全书 | Phase 2 | Phase 3 大纲、每卷开始前、Phase 4 写前召回 |
69
- | 设定/题材正文提示卡.md | 全书/题材 | Phase 2(缺失则 Phase 4 写前即时生成) | Phase 4 每章写作前:按 `genre-prose-cards.md` 索引匹配后读取 `genre-prose-cards/` 目录对应单题材卡优先、`style-genre-modules.md` 通用模块兜底,与通用正文要求、情绪/节奏召回和文风一起组装 prompt |
70
- | 设定/角色/{角色名}.md、设定/势力/{名}.md | 角色/势力 | Phase 3 细纲后增量补全(首批含主角/主要角色) | Phase 4 状态筛选/写作 |
69
+ | 设定/题材定位.md(含 `主对标书` 字段,多对标时必填) | 全书 | Phase 1 建,Phase 2 补全 | Phase 3 大纲、每卷开始前、Phase 4 写前召回 |
70
+ | 设定/题材正文提示卡.md | 全书/题材 | 写第 1 章前由写前召回生成(导入项目可能已有) | Phase 4 每章写作前:按 `genre-prose-cards.md` 索引匹配后读取 `genre-prose-cards/` 目录对应单题材卡优先、`style-genre-modules.md` 通用模块兜底,与通用正文要求、情绪/节奏召回和文风一起组装 prompt |
71
+ | 设定/角色/{角色名}.md、设定/势力/{名}.md | 角色/势力 | Phase 2 建主角与关键角色;Phase 3 细纲后增量补全 | Phase 4 状态筛选/写作 |
71
72
  | 设定/文风.md(自定义文风·优先级最高) | 本书 | 用户自写(Claude Code 可代写);导入/拆解不覆盖 | Phase 4 每章写作前:含实质内容则取代对标文风作权威风格基 |
72
73
  | 对标/{书名}/文风.md | 对标书 | analyze Stage 6 输出 → story-import 显式绑定或本 skill 首次引用时同步 | Phase 4 每章写作前(文风召回;有自定义文风时降为参考/句长兜底) |
73
74
  | 大纲/卷纲_第X卷.md | 卷 | Phase 3 | **一律走取段器 `outline_view.py --unit/--contract/--toc`,不整读**(见「路径与术语约定」);段位契约与 checker 见 artifact-protocols.md |
75
+ | 大纲/排纲底稿_{单元ID}.md | 剧情单元 | Phase 3;正文「细纲没给」追加进「建纲追加」 | 只在排纲/补纲时读 |
74
76
  | 追踪/_tracking-state.json | 全书 | 首次写正文前初始化(规划阶段不建) | 唯一结构化权威,不进正文 prompt;每章运行 `tracking_commit.py check` 读取章号和修订号 |
75
77
  | 追踪/伏笔.md | 全书当前视图 | 与 state 同时初始化 | 续写状态卡缺项时按 ID 定点查询;每 ID 只一行 |
76
78
  | 追踪/时间线/{作者真相.md,读者已知.md} | 全书当前事实/认知派生视图 | 与 state 同时初始化 | 按作者真相或读者认知的实际问题选择视图 |
@@ -90,7 +92,7 @@
90
92
  2. **角色、普通剧情单元或设定等非主产物子目录缺失** → 按「对标书路径查找」查找项目视图与根目录数据源,仍缺失则跳过该可选模块。本条不适用于 `剧情/情绪模块.md` 和 `剧情/节奏.md`。
91
93
  3. **当前契约的 `剧情/情绪模块.md` / `剧情/节奏.md` 缺失** → 写前准备必须停下,设置 `missing_primary_contract: true` 并给出 `repair_action`:重跑 `/story-long-analyze` Stage 3+ 或重新 `/story-import`,不得用摘要文件假装已召回权威模块。
92
94
  4. **有对标书但 `文风.md` 缺失** → 若有 `设定/文风.md`(含实质内容)走自定义文风模式继续;否则日更文风召回 fail-fast,提示先运行 `/story-long-analyze` Stage 6 并 `/story-import` 同步。**完全无对标项目**则跳过文风召回、不阻塞(有 `设定/文风.md` 时用它写作)。情绪/节奏轴(`missing_primary_contract`)独立,自定义文风模式不豁免其 fail-fast。
93
- 5. **伏笔/时间线文件缺失** → 视为当前语义检查点损坏,停止写正文;先运行 `tracking_commit.py check`,再用事务修复。卷纲/大纲中的计划不能代替已发生事实的当前检查点。
95
+ 5. **伏笔/时间线文件缺失** → 视为当前状态损坏,停止写正文;先运行 `tracking_commit.py check`,再用事务修复。卷纲/大纲中的计划不能代替已发生的事实。
94
96
  6. **`设定/题材正文提示卡.md` 缺失** → 不阻塞;写前从 `设定/题材定位.md` 精确匹配 `references/genre-prose-cards.md` 索引,并只读取 `references/genre-prose-cards/` 中对应题材单卡(高/中/低置信照原卡标注),无命中再用 `references/style-genre-modules.md` 通用流派模块即时生成短 `genre_prose_card`。只有 `设定/题材定位.md` 也缺失时,退回细纲和目标平台做低置信题材卡,并在意图确认写明。
95
97
 
96
98
  **对标分析权威优先级(权威读取顺序)**:
@@ -108,3 +110,5 @@
108
110
  - **细纲一章一个文件**:`细纲_第XXX章.md`,含钩子设计,与正文一一对应
109
111
  - **正文按章拆分**:每章一个文件,`第XXX章_章名.md`
110
112
  - 每章写完直接写入 `正文/` 目录,不要先输出到对话
113
+
114
+ 对标/ 下的文件由 `/story-long-analyze` 与 `/story-import` 产出;手写的对标摘要不能代替 `剧情/情绪模块.md`、`剧情/节奏.md` 两份主产物(缺了写前召回会停下)。
@@ -78,7 +78,7 @@
78
78
  - 若本书承诺的是个人逆袭、职业掌控、独享金手指,外部机构接管核心问题通常需要强交换与主角主动选择。
79
79
  - 旁观者/反应层适合做:震惊、误判、舆论扩散、资源报价、敌我站队、见证主角选择。避免让旁观者替主角复仇、替主角做最终裁决、替主角拿核心收益。
80
80
 
81
- ## 3. 风险等级
81
+ ## 3. 契约风险三级
82
82
 
83
83
  | 等级 | 定义 | 处理 |
84
84
  |---|---|---|
@@ -38,7 +38,7 @@
38
38
  | 情绪弧线 | `references/emotional-arc-design.md` |
39
39
  | 契约/终局储备/剧情单元契约四问 | `references/reader-contract-and-progression.md` |
40
40
  | 反转设计 | `references/long-reversal.md` |
41
- | 细纲结构验收 | `scripts/check-outline-contract.js`(新建/补建后跑,只判字段与表结构) |
41
+ | 细纲结构检查 | `scripts/check-outline-contract.js`(新建/补建后跑,只判字段与表结构) |
42
42
 
43
43
  ### Phase 4:正文写作
44
44
 
@@ -73,11 +73,11 @@
73
73
  | 主题 | 权威文件(先读) | 配套文件(按角度补充) |
74
74
  |------|-----------------|----------------------|
75
75
  | 爽点(按意图分流) | **`references/plot-emotion-system.md`**(爽点设计体系:本质/六种类型/倒推法——"怎么设计爽点"先读这个) | 翻盘/高潮式爽点→`references/plot-core-methods.md`(假胜→崩解)· 打脸/装逼释放→`references/style-combat-face.md`· 题材声线与长线约束→`references/genre-prose-cards.md`· 爽文循环/多层→`references/outline-methods.md`·`references/outline-conflict.md` |
76
- | 情绪模块 | **`对标/{书名}/剧情/情绪模块.md`(项目/书级权威)**;无对标或设计新模块时再读 `references/plot-emotion-system.md` | `references/outline-rhythm.md` 只作理论参考;不得覆盖对标书权威模块 |
77
- | 节奏 | **`对标/{书名}/剧情/节奏.md`(项目/书级权威)**;无对标或设计新节奏时再读 `references/outline-rhythm.md` | `references/plot-core-methods.md` 只作理论参考;不得覆盖对标书权威节奏 |
76
+ | 情绪模块 | **`对标/{书名}/剧情/情绪模块.md`(项目/书级权威)**;排纲时设计新模块才读 `references/plot-emotion-system.md`(写正文无对标时取细纲与单元卡,不加读) | `references/outline-rhythm.md` 只作理论参考;不得覆盖对标书权威模块 |
77
+ | 节奏 | **`对标/{书名}/剧情/节奏.md`(项目/书级权威)**;排纲时设计新节奏才读 `references/outline-rhythm.md`(写正文无对标时同上) | `references/plot-core-methods.md` 只作理论参考;不得覆盖对标书权威节奏 |
78
78
  | 高潮 | **`references/plot-core-methods.md`**(高潮构建公式:蓄能→假胜→崩解) | `references/outline-rhythm.md`(高潮分类与反推)· `references/outline-methods.md`(八节点故事结构:结构定位) |
79
79
  | 金手指 | **`references/plot-special-topics.md`**(金手指拆分理解与战力防崩 + 进阶设计) | `references/outline-conflict.md`(金手指与身份:四点统一) |
80
- | 感情线 | **`references/character-relations.md`**(好感度体系/四阶段 + 男女频差异) | `references/outline-conflict.md`(感情线设计)· `references/style-combat-face.md`(后宫文女主 / 男频极简爱情线构型)· `references/plot-special-topics.md`(爱情线提纯策略) |
80
+ | 感情线 | **`references/character-relations.md`**(好感度体系/四阶段 + 男女频差异;后宫文女主 / 男频极简爱情线构型也在这里) | `references/outline-conflict.md`(感情线设计)· `references/plot-special-topics.md`(爱情线提纯策略) |
81
81
  | 反转 | **`references/long-reversal.md`**(单元/卷级/全书反转、铺垫、有效性自检) | `references/plot-core-methods.md`(假胜:先给希望再击碎) |
82
82
  | 人物 | **`references/character-basics.md`**(主角/配角/反派/动机模板速填) | `references/character-design-methods.md`(三层标签反差/九维深化)· `references/character-relations.md`(关系类型/感情线) |
83
83
  | 女频写作 | **`references/female-audience-writing.md`**(女频长篇:核心原则/文案/题材/感情线长线/平台) | `references/genre-readers.md`(读者心理/平台差异)· `references/character-relations.md`(感情线总框架) |
@@ -0,0 +1,9 @@
1
+ # 写正文前缺东西:停下修
2
+
3
+ workflow-chapter 或 workflow-daily 发现缺文件、追踪对不上时读。本轮不写正文,修好再从 workflow-chapter 步骤 1 开始;告诉作者时用 workflow-chapter「写不下去、要停下时」的问法。
4
+
5
+ - **追踪检查不过**:按 `tracking_commit.py check` 的提示修。
6
+ - **已有正文却缺 `_tracking-state.json`**:停止写作,请作者走 `/story-import`「旧追踪项目迁移」。(新书还没有正文时不算缺,按 workflow-chapter 开头初始化。)
7
+ - **派生视图与 state 不一致**:按 [tracking-transaction.md](tracking-transaction.md) 为该章提交 `mode=revision` 事务整份重建,不手改、不继续下一章。
8
+ - **登记了对标却缺情绪模块/节奏**:请作者用 `/story-long-analyze` 补拆。作者定了不对标不算缺。
9
+ - **要找某类文件放哪**:读 [project-files.md](project-files.md) 照做。
@@ -1,6 +1,6 @@
1
1
  # 装逼打脸与爽点释放
2
2
 
3
- > 装逼打脸框架、爽点释放法则、无敌文要领、打斗/智斗写作、战斗描写三板斧。用于设计装逼打脸场景和战斗场景时查阅。
3
+ > 写装逼打脸与战斗场景用。规则都是必须执行的操作规范:爽点释放法则 > 装逼框架 > 具体描写技巧;该爽不爽,比毒点还毒。
4
4
 
5
5
  ---
6
6
 
@@ -13,18 +13,11 @@
13
13
  | 设计战斗/打斗场景 | 打斗/智斗写作 -> 战斗描写三板斧 |
14
14
  | 写无敌文主角 | 无敌文核心要领 |
15
15
  | 设计打脸节奏和情绪调动 | 打脸节奏与脑洞创意 -> 情绪调动三阶法 |
16
- | 设计后宫/爱情线 | 后宫文女主人设设计法 / 男频极简爱情线构型 |
17
16
  | 写新媒体/短平快装逼 | 新媒体写作与题材套路 |
18
17
  | 搭建装逼舞台 | 舞台搭建法 |
19
18
  | 打脸写了但不爽 | 检查:爽点释放到位法则 + 前置小无敌准备了吗 + 对手层级够不够 |
20
19
  | 战斗场景枯燥/流水账 | 检查:战斗描写三板斧 + 情绪调动三阶法 + 攻防选择、伤势和动作后果是否清楚 |
21
20
 
22
- ## 指令语气
23
-
24
- 本文件以"战术指令"语气书写。装逼打脸和战斗描写是网文核心商业价值所在,所有规则都是**必须执行**的操作规范。爽点释放法则 > 装逼框架 > 具体描写技巧。核心铁律:**该爽不爽,比毒点还毒**。
25
-
26
- ---
27
-
28
21
  ## 爽点释放到位法则
29
22
 
30
23
  ### 核心问题
@@ -130,56 +123,6 @@
130
123
 
131
124
  ---
132
125
 
133
- ## 后宫文女主人设设计法
134
-
135
- ### 核心思路
136
- 后宫文的关键是弱化男主"主动渣"的感觉,让女主自身设定成为推动后宫的主力。
137
-
138
- ### 设计原则
139
- 1. **女主人设要预设方向**:开书前就设计好每个女主的核心特质
140
- 2. **差异化设计**:不同女主有完全不同的价值观和背景
141
- 3. **同居培养感情**:开局让女主们同住一个屋檐下,彼此成为朋友
142
-
143
- ### 温水煮青蛙法
144
- 以三个女主为例:
145
-
146
- | 角色 | 人设设计 | 在后宫中的作用 |
147
- |------|----------|---------------|
148
- | 青梅(正宫) | 传统价值观,占据防守位 | 从小一起长大,天然正宫 |
149
- | 女主B | 家庭圆满家教开明,理性看待感情 | 不在意名分,只在意快乐 |
150
- | 女主C | 缺少父爱和社交,爱情观模糊 | 不存在一夫一妻制思想束缚 |
151
-
152
- 核心逻辑:
153
- - 青梅占据正宫与防守位
154
- - 另两个女主不在意后宫,只在意跟主角在一起
155
- - 把"主角脚踏多条船"的问题转化为"青梅防守 vs 另两人共享"的问题
156
- - 一点一点突破青梅的防守底线,等反应过来时已经是既成事实
157
-
158
- ---
159
-
160
- ## 男频极简爱情线构型
161
-
162
- ### 核心原则
163
- 男频爱情线不需要复杂的情感博弈,核心是"英雄救美 + 事业舞台 + 对手衬托"三要素。
164
-
165
- ### 极简构型
166
- 1. **英雄救美**:女主陷入困境 -> 主角用金手指/实力解决 -> 建立初始好感
167
- 2. **事业舞台**:主角在事业上展示金手指 -> 女主在场作为重要观众 -> 好感随事业成就升级
168
- 3. **对手衬托**:情敌/对手同时是事业对手 -> 打败对手既是事业胜利也是感情胜利
169
-
170
- ### 关键操作
171
- - 女主的每一次好感升级都绑定在主角的事业成就上,不单独写纯感情戏
172
- - 女主有自己的事业线/目标,不是花瓶——她的事业目标与主角有交叉但独立
173
- - 情敌的价值在于他同时威胁主角的事业和感情,打脸时有双重爽感
174
- - 感情节奏跟着事业节奏走:事业低谷时感情拉扯,事业高峰时感情升温
175
-
176
- ### 爱情线与事业线融合检查
177
- - 删掉所有爱情线段落,事业线是否还成立?如果不行 = 爱情线拖后腿了
178
- - 删掉所有事业线段落,爱情线是否还有看点?如果不行 = 爱情线太弱
179
- - 理想状态:两条线互相增强,拆开各自能看,合在一起更好看
180
-
181
- ---
182
-
183
126
  ## 打斗/智斗写作
184
127
 
185
128
  ### 打斗的本质
@@ -37,7 +37,7 @@
37
37
 
38
38
  ### 题材正文提示卡模板
39
39
 
40
- 项目可在 Phase 2 生成 `设定/题材正文提示卡.md`。没有该文件时,Phase 4 写前先用 `设定/题材定位.md` 匹配 `genre-prose-cards.md` 索引并读取 `genre-prose-cards/{题材}.md` 单卡;仍无匹配再从本文件即时抽取一张轻量卡。卡片保持短,给 `narrative-writer` 传摘要,不把参考文件整段复制进 prompt。
40
+ 项目在写第 1 章前生成 `设定/题材正文提示卡.md`。没有该文件时,Phase 4 写前先用 `设定/题材定位.md` 匹配 `genre-prose-cards.md` 索引并读取 `genre-prose-cards/{题材}.md` 单卡;仍无匹配再从本文件即时抽取一张轻量卡。卡片保持短,给 `narrative-writer` 传摘要,不把参考文件整段复制进 prompt。
41
41
 
42
42
  ```markdown
43
43
  ## 题材正文提示卡
@@ -12,10 +12,10 @@
12
12
 
13
13
  ## 加载与传递
14
14
 
15
- 1. 从本次正文路径确定书目录(长篇为 `正文/` 的父目录,短篇为 `正文.md` 所在目录)。读该书 `设定/文风.md`;短篇同时读 `设定.md` 的文风约定。无文件就继续,不创建占位文件、不猜其他书。文风无最低字数限制,一句可执行的偏好也有效;空白、纯标题、待补充不算。
16
- 2. `_文风摘要.md` 只能辅助定位,不能独立替代全文。当前会话已读全文时无需反复读;摘要与全文不一致用全文,不让旧摘要压过作者的新修改。
17
- 3. 作者记忆 query 显式传当前书名、已知题材和流程以及需要的 kind,避免只取到 global。只用 active;同一维度窄范围覆盖宽范围,不拼成同时满足的清单。无法判定的同范围冲突才问作者,已能按优先级解决的不询问。
18
- 4. 在现有 prompt 填 `style_resolution`:本次生效的表达要求及来源、被覆盖的默认条款、必须保留的事实/信息边界;只列与任务有关的冲突,无冲突可写“按本书文风”。原样传给正文、去味和文字 reviewer,并传文风全文路径。同一批次复用,当前请求或文风变动时更新。单独调用去味/审稿也执行本步骤,不能靠上一次会话的记忆。
15
+ 1. 从本次正文路径确定书目录(长篇为 `正文/` 的父目录,短篇为 `正文.md` 所在目录)。读该书 `设定/文风.md`;短篇同时读 `设定.md` 的文风约定。无文件就继续,不建占位文件、不猜其他书。文风无最低字数限制,一句可执行的偏好也有效;空白、纯标题、待补充不算。
16
+ 2. `_文风摘要.md` 只辅助定位,不替代全文。当前会话已读全文时无需反复读;摘要与全文不一致用全文,不让旧摘要压过作者的新修改。
17
+ 3. 有作者记忆时 query,显式传当前书名、已知题材和流程以及需要的 kind,避免只取到 global;没有就跳过。只用 active;同一维度窄范围覆盖宽范围,不拼成同时满足的清单。无法判定的同范围冲突才问作者,已能按优先级解决的不询问。
18
+ 4. 在现有 prompt 填 `style_resolution`:本次生效的表达要求及来源、被覆盖的默认条款、必须保留的事实/信息边界;只列与任务有关的冲突,无冲突可写“按本书文风”。原样传给正文、去味和文字 reviewer,并传文风全文路径。同批复用,当前请求或文风变动时更新。单独调用去味/审稿也执行本步骤,不靠上次会话的记忆。
19
19
 
20
20
  ## 检测器如何服从裁决
21
21
 
@@ -2,7 +2,7 @@
2
2
 
3
3
  ## 初始化事务
4
4
 
5
- 新书从第 0 章初始化。`story-import` 导入已有小说时把最后完整章写入 `last_chapter=N`;第 1..N 章不伪造日更记录,常规续写从 N+1 章开始。
5
+ 新书从第 0 章初始化:把下面的 JSON 写到 `{书目录}/.story/work/init.json`,跑 `{PYTHON} {skill 根}/scripts/tracking_commit.py init --project {书目录} --input {书目录}/.story/work/init.json`,成功后删掉临时文件。`story-import` 导入已有小说时把最后完整章写入 `last_chapter=N`;第 1..N 章不伪造日更记录,常规续写从 N+1 章开始。
6
6
 
7
7
  ```json
8
8
  {
@@ -21,22 +21,23 @@ Markdown 只负责给作者和 Agent 阅读,工具不再反向解析 Markdown
21
21
  {PYTHON} {当前 skill 根}/scripts/tracking_commit.py init --project {书项目根} --input {书项目根}/.story/work/init.json
22
22
  {PYTHON} {当前 skill 根}/scripts/tracking_commit.py check --project {书项目根}
23
23
  {PYTHON} {当前 skill 根}/scripts/tracking_commit.py draft --project {书项目根} --chapter {N}
24
- {PYTHON} {story-long-write skill 根}/scripts/storyctl.py chapter check --project {书项目根} --chapter {N}
24
+ {PYTHON} {story-long-write skill 根}/scripts/storyctl.py chapter check --project {书项目根} --chapter {N} [--min-chars {下限} --max-chars {上限}]
25
25
  {PYTHON} {story-long-write skill 根}/scripts/storyctl.py chapter commit --project {书项目根} --chapter {N} --input {书项目根}/.story/work/第{NNN}章/tracking.json
26
26
  {PYTHON} {story-long-write skill 根}/scripts/storyctl.py chapter accept-current-length --project {书项目根} --chapter {N} --input {书项目根}/.story/work/第{NNN}章/tracking.json
27
27
  ```
28
28
 
29
29
  - `init`:只在 `_tracking-state.json` 不存在时执行,绝不覆盖已初始化项目。
30
- - `draft`:按当前 state 把逐章事务预填到 `.story/work/第NNN章/tracking.json`(修订号、模式、章名、`context` 四项当前值),并输出各文本字段的字数上限与在场核心角色的当前快照;调用方只填 `delta` 与有变化角色的快照。
31
- - `wordcount measure` / `wordcount checkpoint`:纯测量入口;不写正文、不写 tracking、不做语义判断。长篇正文只在前组写完后由父流程调用一次 `checkpoint`(见 workflow-chapter 步骤 6),整章长度由 `chapter check` 收口。
32
- - `chapter check`:重新读取当前正文与细纲目标,返回确定性长度状态、现有 blocking quality、`state_revision` 和当前可执行动作,不保存 approval。`under` 不提供自动补写;`over` 额外返回一次净删型 `compress-once` 及回到内部区间或作者给定区间所需的删除字数。
33
- - `chapter commit`:再次读取当前文件、重新计数并重跑 blocking quality;只接受用户带内章节,把简短字数记录与逐章事务一起原子提交。
34
- - `chapter accept-current-length`:只接受带外但 quality pass 的章节;接受动作发生时重新读取、重新计数并立即原子提交,不保存可陈旧的历史决议。
30
+ - `draft`:按当前 state 把逐章事务预填到 `.story/work/第NNN章/tracking.json`(修订号、模式、章名、`context` 四项当前值),并输出各文本字段的字数上限与在场核心角色的当前快照。新章(append)调用方只填 `delta` 与有变化角色的快照;已提交章(revision)的 `delta` 与相关角色快照按该章现有逐章记录预填(伏笔、时间线取当前值),调用方在上面改成修订后的完整记录,不清空重写。
31
+ - 作者字数范围:细纲可写一行 `字数范围:2000-2600`(作者明确给了上下限时);本轮临时给的范围用 `--min-chars` / `--max-chars`(两者同给,优先于细纲)。`wordcount check` / `checkpoint` 与 `chapter check` / `commit` / `accept-current-length` 都认,给了就同时替代默认 ±12% 内部带与 ±15% 用户带,结果里 `band_source` 为 `author`,提交的字数记录多一项 `author_range`。
32
+ - `wordcount measure` / `wordcount checkpoint`:纯测量入口;不写正文、不写 tracking、不做语义判断。长篇正文只在前组写完后由主会话带 `--project` 调用一次 `checkpoint`(目标与字数范围读细纲,见 workflow-chapter 步骤 6),整章长度由 `chapter check` 收口;`remaining_user_range` 按生效区间(作者区间或默认用户带)计算。
33
+ - `chapter check`:重新读取当前正文与细纲目标,返回确定性长度状态、现有 blocking quality、`state_revision` 和当前可执行动作,不保存 approval。顶层 `status`:`ready`(可提交,exit 0)/ `needs_decision`(长度带外,按 `available_actions` 交作者,exit 0)/ `blocked`(有 blocking 正文问题,exit 1)/ `invalid`(正文为空等,exit 1)/ `tool_unavailable`(找不到 node 或检测脚本,见 `quality.tool_errors`,不是正文问题,exit 3)。参数错误或文件缺失输出 `story-chapter-error/v1`(`status: error`,exit 2)。`under` 不提供自动补写;`over` 额外返回一次净删型 `compress-once` 及回到生效区间所需的删除字数。`quality.semantic_advisories` 是语义类 advisory 条数(检测器标 `review: mechanical` 的不计)。
34
+ - `chapter commit`:再次读取当前文件、重新计数并重跑 blocking quality;只接受生效区间内的章节,把简短字数记录与逐章事务一起原子提交。新章与修订都走它。
35
+ - `chapter accept-current-length`:只接受带外但 quality pass 的章节;接受动作发生时重新读取、重新计数并立即原子提交,不保存可陈旧的历史决议。低于字数目标一半(`BELOW_ACCEPT_FLOOR`),或超长却还没做过那一次压缩(`COMPRESSION_REQUIRED`),都拒绝;作者明确拍板时加 `--force`。
35
36
  - `check`:严格验证 state schema、逐章记录连续性/规范名/体积、固定 7 栏、角色快照硬上限、派生文件集合,以及所有派生视图与 state 的逐字一致性。
36
37
 
37
38
  每本书由 `追踪/.tracking-commit.lock` 串行写事务,`expected_state_revision` 再拒绝基于旧状态构造的 stale transaction。两个不同事务并发时至多一个修订成功。字数记录也在锁内对当前正文和目标重新验证,正文或目标变化会让预先构造的记录直接失败。
38
39
 
39
- 事务 JSON 是临时输入,不是项目产物:只写在书目录 `.story/work/` 下(逐章事务放 `.story/work/第NNN章/tracking.json`),不写系统 `/tmp`、书根、`大纲/` 或 `正文/`;成功前必须保留,提交成功后即可删除(`storyctl.py chapter commit` / `accept-current-length` 成功时自动删除该章目录;直接调用 `tracking_commit.py commit` 时由调用方删除)——之后 `check` 失败按下文提交 `mode=revision` 新事务修复,不需要原事务。若文件写入失败,`_tracking-state.json` 尚未推进;修正环境后直接重跑**同一份** `commit`。append 重跑只接受内容完全相同的既有逐章记录,不维护 `dirty/pending/repair` 状态机。
40
+ 事务 JSON 是临时输入,不是项目产物:只写在书目录 `.story/work/` 下(逐章事务放 `.story/work/第NNN章/tracking.json`),不写系统 `/tmp`、书根、`大纲/` 或 `正文/`;成功前必须保留,提交成功后即可删除(`storyctl.py chapter commit` / `accept-current-length` 成功时自动删除该章目录;直接调用 `tracking_commit.py commit` 时由调用方删除。已有字数记录的章节正文或目标改过后,`tracking_commit.py commit` 拒绝修订事务,须走 `storyctl.py chapter commit`)——之后 `check` 失败按下文提交 `mode=revision` 新事务修复,不需要原事务。若文件写入失败,`_tracking-state.json` 尚未推进;修正环境后直接重跑**同一份** `commit`。append 重跑只接受内容完全相同的既有逐章记录,不维护 `dirty/pending/repair` 状态机。
40
41
 
41
42
  校验失败与写入失败处理方式不同:校验失败(字段非法、退役结构、容量超限)要按报错改事务本身,重跑同一份结果不变。派生视图被手改或外部改动导致 `check` 报 `derived view differs from _tracking-state.json` 时,重新提交**该章**的 `mode=revision` 事务让工具整份重建,`expected_state_revision` 取 `追踪/_tracking-state.json` 的 `state_revision` 字段——`check` 失败时只往 stderr 打 ERROR,不输出 JSON;不手改派生文件,也不删 `_tracking-state.json` 重来。手写出的逐章记录会让同章 `append` 永久报 `chapter delta N already exists with different content`——删掉那个手写文件后重跑原事务即可。
42
43
 
@@ -46,7 +47,7 @@ Markdown 只负责给作者和 Agent 阅读,工具不再反向解析 Markdown
46
47
 
47
48
  仅新书或导入初始化时,执行 `init` 前必须完整读取 [tracking-initialization.md](tracking-initialization.md),按其中原始 JSON 与导入边界构造事务。已有项目续写直接使用下方逐章事务,不重复读初始化示例。
48
49
 
49
- 调用方的逐章 JSON 不写 `wordcount`;正式入口 `chapter commit` 或 `chapter accept-current-length` 在提交当下生成并注入。最终 state 只为已提交章节保留 `metric / target / actual / status / resolution / body_sha256`,不保存 MEASURE/RESOLVE 事件、ID 链、policy fingerprint 或独立 chapter state。
50
+ 调用方的逐章 JSON 不写 `wordcount`;正式入口 `chapter commit` 或 `chapter accept-current-length` 在提交当下生成并注入。最终 state 只为已提交章节保留 `metric / target / actual / status / resolution / body_sha256`(生效了作者字数范围时另加 `author_range`),不保存 MEASURE/RESOLVE 事件、ID 链、policy fingerprint 或独立 chapter state。
50
51
 
51
52
  ## 逐章事务
52
53
 
@@ -121,12 +122,13 @@ Markdown 只负责给作者和 Agent 阅读,工具不再反向解析 Markdown
121
122
  - `character_snapshots` 中出现的角色视为核心复用角色,必须同时出现在 `character_changes`;已经建立快照的核心角色再次变化时必须提交新快照。
122
123
  - 角色快照的四个列表不限制条数,只限制单项长度和最终文件总字节:目标 ≤4096 字节,超过警告;硬上限 8192 字节,超过则在任何写入前拒绝。
123
124
  - 没有快照的角色变化视为临时角色,不建立状态文件;`context.active_character_names` 最多 6 人且必须已有当前快照。
125
+ - `context.long_term_constraints` 最多 6 条:要加第 7 条先合并语义重叠项或请作者取舍,不自动删旧约束;永久生效的设定裁定进它,短期强承诺进 `next_chapter_commitments`,过程决策不进续写状态卡。
124
126
  - `context.long_term_constraints` 和 `context.continuity_risks` 是整份提交的当前值。凡是上一版有、本次没有的条目,必须逐条列进 `delta.retired_context_items`,否则工具在任何写入前拒绝——漏写不会被当成删除。实际退役的条目由工具写进本章逐章记录的 `## 本章退役登记`,随后仍可回查。
125
127
  - 不再复用的核心角色写进 `delta.retired_characters`:工具删除其当前快照与 `角色状态/{角色名}.md`,并在逐章记录留档。同一事务里不能既退役又提交快照,也不能退役仍列在 `context.active_character_names` 的角色。角色阵亡/退场这一章,把变化照写进 `character_changes` 即可,本章退役的角色不必再交一份马上要删的快照,逐章记录仍按核心角色标注。退役只表示不再进入热上下文,正文与逐章记录不受影响。
126
128
  - 两类退役都只能在 `mode=append` 提交。退役表示「从此刻起离开当前状态」,而修订事务的逐章记录属于被改写的旧章,落在那里会谎报退役发生的章节;`mode=revision` 必须原样重交当前全部上下文条目,需要退役就放到下一次 append。
127
129
  - `伏笔.md` 只呈现已经埋设过的当前状态。未来规划仍留在大纲。
128
130
  - `timeline_events.action` 可为 `upsert/delete`。`未揭示` 的 `reveal_chapter` 必须为 `null`;部分/完全揭示只能填写已经发生的实际章节。
129
- - `mode=revision` 时,逐章记录必须重算为修订后该章仍然成立的完整连续性记录;当前角色、伏笔、时间线和上下文则提交受影响对象截至最新已写章的当前值。
131
+ - `mode=revision` 时,逐章记录必须重算为修订后该章仍然成立的完整连续性记录(用 `draft` 预填的草稿改,漏写的项会从记录里消失,工具在 stderr 警告被清空的栏目;原有的退役登记原样保留);当前角色、伏笔、时间线和上下文则提交受影响对象截至最新已写章的当前值。
130
132
  - 修订导入截止章内的正文时,会新增或覆盖该章的逐章记录;`imported_through_chapter` 不变。
131
133
 
132
134
  ## 续写状态卡固定格式