@oh-story/dsh 0.1.8 → 0.1.10

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 (360) hide show
  1. package/README.md +14 -14
  2. package/lib/client.js +237 -84
  3. package/lib/client.js.map +3 -3
  4. package/lib/drama/manifest.json +183 -77
  5. package/lib/drama/skills/short-drama/SKILL.md +5 -1
  6. package/lib/drama/skills/short-drama/scripts/creator_markdown_check.py +140 -9
  7. package/lib/drama/skills/short-drama/scripts/project_tool.py +11 -0
  8. package/lib/drama/skills/short-drama-assets/references/character-and-look.md +28 -0
  9. package/lib/drama/skills/short-drama-assets/references/continuity-lock.md +8 -2
  10. package/lib/drama/skills/short-drama-assets/references/voice-direction.md +28 -0
  11. package/lib/drama/skills/short-drama-edit/SKILL.md +146 -0
  12. package/lib/drama/skills/short-drama-edit/agents/openai.yaml +4 -0
  13. package/lib/drama/skills/short-drama-edit/assets/remotion/README.md +60 -0
  14. package/lib/drama/skills/short-drama-edit/assets/remotion/package.json +15 -0
  15. package/lib/drama/skills/short-drama-edit/assets/remotion/remotion.config.ts +6 -0
  16. package/lib/drama/skills/short-drama-edit/assets/remotion/src/Root.tsx +26 -0
  17. package/lib/drama/skills/short-drama-edit/assets/remotion/src/Subtitles.tsx +88 -0
  18. package/lib/drama/skills/short-drama-edit/assets/remotion/src/font.ts +46 -0
  19. package/lib/drama/skills/short-drama-edit/assets/remotion/src/index.ts +4 -0
  20. package/lib/drama/skills/short-drama-edit/assets/remotion/src/schema.ts +32 -0
  21. package/lib/drama/skills/short-drama-edit/assets/remotion/tsconfig.json +13 -0
  22. package/lib/drama/skills/short-drama-edit/assets//345/211/252/350/276/221/345/215/225.md +43 -0
  23. package/lib/drama/skills/short-drama-edit/references/cut-craft.md +38 -0
  24. package/lib/drama/skills/short-drama-edit/references/delivery-verify.md +29 -0
  25. package/lib/drama/skills/short-drama-edit/references/generated-footage.md +54 -0
  26. package/lib/drama/skills/short-drama-edit/references/sound-and-subtitles.md +60 -0
  27. package/lib/drama/skills/short-drama-edit/references/stage-contract.md +51 -0
  28. package/lib/drama/skills/short-drama-edit/scripts/edit_tool.py +1156 -0
  29. package/lib/drama/skills/short-drama-edit/scripts/selftest.py +520 -0
  30. package/lib/drama/skills/short-drama-image-prompts/SKILL.md +2 -0
  31. package/lib/drama/skills/short-drama-image-prompts/assets/image-prompts.md +5 -0
  32. package/lib/drama/skills/short-drama-image-prompts/assets/lookdev-prompts.md +3 -0
  33. package/lib/drama/skills/short-drama-image-prompts/references/common-recipe.md +11 -0
  34. package/lib/drama/skills/short-drama-novel-analyze/references/aggregation-and-entities.md +2 -2
  35. package/lib/drama/skills/short-drama-novel-analyze/references/chapter-extraction.md +4 -1
  36. package/lib/drama/skills/short-drama-produce/SKILL.md +29 -4
  37. package/lib/drama/skills/short-drama-produce/references/adapter-contract.md +22 -0
  38. package/lib/drama/skills/short-drama-produce/references/providers/minimax-h3-video.md +13 -12
  39. package/lib/drama/skills/short-drama-produce/references/providers/minimax-speech.md +41 -0
  40. package/lib/drama/skills/short-drama-produce/references/providers/seedance.md +7 -0
  41. package/lib/drama/skills/short-drama-produce/scripts/fixture_adapter.py +18 -1
  42. package/lib/drama/skills/short-drama-produce/scripts/production_tool.py +181 -2
  43. package/lib/drama/skills/short-drama-produce/scripts/provider_adapters.py +199 -3
  44. package/lib/drama/skills/short-drama-review/SKILL.md +2 -0
  45. package/lib/drama/skills/short-drama-review/references/production-quality-gates.md +7 -0
  46. package/lib/drama/skills/short-drama-review/references/rubric-visual-motion.md +10 -0
  47. package/lib/drama/skills/short-drama-storyboard/SKILL.md +12 -1
  48. package/lib/drama/skills/short-drama-storyboard/assets/keyframe-prompts.md +4 -0
  49. package/lib/drama/skills/short-drama-storyboard/references/lighting-craft.md +39 -0
  50. package/lib/drama/skills/short-drama-storyboard/references/shot-craft.md +78 -2
  51. package/lib/drama/skills/short-drama-storyboard/references/stage-contract.md +2 -0
  52. package/lib/drama/skills/short-drama-video-prompts/SKILL.md +12 -5
  53. package/lib/drama/skills/short-drama-video-prompts/references/camera-audio-continuity.md +17 -0
  54. package/lib/drama/skills/short-drama-video-prompts/references/minimax-h3.md +76 -7
  55. package/lib/drama/skills/short-drama-video-prompts/references/motion-recipe.md +5 -2
  56. package/lib/drama/skills/short-drama-video-prompts/references/performance-action-timing.md +21 -0
  57. package/lib/drama/skills/short-drama-video-prompts/references/production-prompt-grammar.md +6 -17
  58. package/lib/drama/skills/short-drama-video-prompts/references/seedance-2.0.md +12 -3
  59. package/lib/drama/skills/short-drama-video-prompts/references/seedance-2.5.md +61 -5
  60. package/lib/drama/skills/short-drama-video-prompts/references/stage-contract.md +3 -3
  61. package/lib/drama/skills/short-drama-write/SKILL.md +11 -2
  62. package/lib/drama/skills/short-drama-write/references/screenplay-format.md +6 -0
  63. package/lib/drama/skills/short-drama-write/references/stage-contract.md +1 -0
  64. package/lib/index.js +290 -90
  65. package/lib/index.js.map +4 -4
  66. package/lib/novel-to-game/README.md +299 -59
  67. package/lib/novel-to-game/README_ZH.md +299 -56
  68. package/lib/novel-to-game/VERSION +1 -1
  69. package/lib/novel-to-game/examples/jin-ping-mei/build/BUILD_BRIEF.md +3 -1
  70. package/lib/novel-to-game/examples/jin-ping-mei/build/app/RUN.md +11 -3
  71. package/lib/novel-to-game/examples/jin-ping-mei/build/app/css/new-guofeng.css +397 -8
  72. package/lib/novel-to-game/examples/jin-ping-mei/build/app/css/style.css +0 -31
  73. package/lib/novel-to-game/examples/jin-ping-mei/build/app/js/data.js +71 -73
  74. package/lib/novel-to-game/examples/jin-ping-mei/build/app/js/engine.js +78 -89
  75. package/lib/novel-to-game/examples/jin-ping-mei/build/app/js/main.js +37 -14
  76. package/lib/novel-to-game/examples/jin-ping-mei/build/app/js/text.js +5 -5
  77. package/lib/novel-to-game/examples/jin-ping-mei/build/app/package.json +2 -1
  78. package/lib/novel-to-game/examples/jin-ping-mei/qa/README.md +11 -16
  79. package/lib/novel-to-game/examples/jin-ping-mei/qa/verification.json +11 -11
  80. package/lib/novel-to-game/examples/jin-ping-mei/qa/verify_playable_model.mjs +23 -0
  81. package/lib/novel-to-game/manifest.json +77 -87
  82. package/lib/novel-to-game/skills/game-art-direction/SKILL.md +9 -35
  83. package/lib/novel-to-game/skills/game-art-direction/references/art-direction-method.md +27 -106
  84. package/lib/novel-to-game/skills/game-build/SKILL.md +17 -35
  85. package/lib/novel-to-game/skills/game-build/references/blender-asset-workflow.md +24 -0
  86. package/lib/novel-to-game/skills/game-build/references/build-brief-contract.md +45 -82
  87. package/lib/novel-to-game/skills/game-build/references/generative-media-pipeline.md +14 -45
  88. package/lib/novel-to-game/skills/game-build/references/playable-model-contract.md +30 -65
  89. package/lib/novel-to-game/skills/game-build/references/tts-production-contract.md +13 -27
  90. package/lib/novel-to-game/skills/game-concept/SKILL.md +16 -34
  91. package/lib/novel-to-game/skills/game-concept/references/concept-method.md +28 -75
  92. package/lib/novel-to-game/skills/game-qa/SKILL.md +9 -20
  93. package/lib/novel-to-game/skills/game-qa/references/test-design-method.md +10 -6
  94. package/lib/novel-to-game/skills/game-world-design/SKILL.md +19 -32
  95. package/lib/novel-to-game/skills/game-world-design/references/narrative-design-method.md +23 -72
  96. package/lib/novel-to-game/skills/game-world-design/references/numeric-design-method.md +14 -48
  97. package/lib/novel-to-game/skills/game-world-design/references/world-design-method.md +36 -103
  98. package/lib/novel-to-game/skills/novel-game-analyze/SKILL.md +9 -18
  99. package/lib/novel-to-game/skills/novel-game-analyze/references/gameability-protocol.md +4 -4
  100. package/lib/novel-to-game/skills/novel-to-game/SKILL.md +10 -27
  101. package/lib/novel-to-game/skills/novel-to-game/references/intake-method.md +5 -6
  102. package/lib/novel-to-game/skills/novel-to-game/references/pipeline-contract.md +6 -11
  103. package/lib/oh-story/manifest.json +419 -254
  104. package/lib/oh-story/roles/chapter-extractor.md +177 -237
  105. package/lib/oh-story/roles/character-designer.md +1 -1
  106. package/lib/oh-story/roles/consistency-checker.md +4 -4
  107. package/lib/oh-story/roles/narrative-writer.md +56 -243
  108. package/lib/oh-story/roles/story-architect.md +6 -6
  109. package/lib/oh-story/roles/story-explorer.md +11 -11
  110. package/lib/oh-story/skills/story/SKILL.md +13 -7
  111. package/lib/oh-story/skills/story/VERSION +1 -1
  112. package/lib/oh-story/skills/story/references/author-memory.md +61 -29
  113. package/lib/oh-story/skills/story/scripts/author_memory_commit.py +934 -170
  114. package/lib/oh-story/skills/story-cover/SKILL.md +10 -1
  115. package/lib/oh-story/skills/story-deslop/SKILL.md +54 -229
  116. package/lib/oh-story/skills/story-deslop/references/anti-ai-writing.md +29 -56
  117. package/lib/oh-story/skills/story-deslop/references/author-memory.md +61 -29
  118. package/lib/oh-story/skills/story-deslop/references/banned-words.md +3 -1
  119. package/lib/oh-story/skills/story-deslop/references/deslop-gates.md +154 -0
  120. package/lib/oh-story/skills/story-deslop/references/style-resolution.md +27 -0
  121. package/lib/oh-story/skills/story-deslop/scripts/author_memory_commit.py +934 -170
  122. package/lib/oh-story/skills/story-deslop/scripts/check-ai-patterns.js +6 -1
  123. package/lib/oh-story/skills/story-deslop/scripts/check-degeneration.js +39 -20
  124. package/lib/oh-story/skills/story-deslop/scripts/normalize-punctuation.js +10 -5
  125. package/lib/oh-story/skills/story-deslop/scripts/style-whitelist.js +39 -0
  126. package/lib/oh-story/skills/story-import/SKILL.md +78 -82
  127. package/lib/oh-story/skills/story-import/references/character-state-reverse.md +1 -1
  128. package/lib/oh-story/skills/story-import/references/format-and-structure.md +2 -2
  129. package/lib/oh-story/skills/story-import/references/state-tracking.md +4 -69
  130. package/lib/oh-story/skills/story-import/references/structure-mapping-long.md +10 -8
  131. package/lib/oh-story/skills/story-import/references/tracking-initialization.md +31 -0
  132. package/lib/oh-story/skills/story-import/references/tracking-transaction.md +9 -34
  133. package/lib/oh-story/skills/story-import/scripts/check-outline-contract.js +197 -15
  134. package/lib/oh-story/skills/story-import/scripts/tracking_commit.py +210 -2
  135. package/lib/oh-story/skills/story-import/scripts/wordcount_core.py +3 -0
  136. package/lib/oh-story/skills/story-long-analyze/SKILL.md +91 -258
  137. package/lib/oh-story/skills/story-long-analyze/references/author-facing.md +245 -0
  138. package/lib/oh-story/skills/story-long-analyze/references/deconstruction-notes.md +2 -2
  139. package/lib/oh-story/skills/story-long-analyze/references/inspiration-library.md +105 -0
  140. package/lib/oh-story/skills/story-long-analyze/references/material-decomposition.md +113 -105
  141. package/lib/oh-story/skills/story-long-analyze/references/output-templates.md +169 -125
  142. package/lib/oh-story/skills/story-long-analyze/references/pipeline-ops.md +172 -64
  143. package/lib/oh-story/skills/story-long-analyze/references/semantic-acceptance-fixtures.md +84 -0
  144. package/lib/oh-story/skills/story-long-analyze/references/style-profile-generator.md +42 -132
  145. package/lib/oh-story/skills/story-long-analyze/references/style-profile-protocol.md +5 -5
  146. package/lib/oh-story/skills/story-long-analyze/scripts/build_chapter_index.py +466 -0
  147. package/lib/oh-story/skills/story-long-analyze/scripts/inspect_existing_assets.py +702 -0
  148. package/lib/oh-story/skills/story-long-analyze/scripts/inspiration_index.py +864 -0
  149. package/lib/oh-story/skills/story-long-analyze/scripts/manage_analysis_run.py +1106 -0
  150. package/lib/oh-story/skills/story-long-analyze/scripts/render_relation_chart.py +425 -0
  151. package/lib/oh-story/skills/story-long-scan/SKILL.md +4 -1
  152. package/lib/oh-story/skills/story-long-write/SKILL.md +52 -216
  153. package/lib/oh-story/skills/story-long-write/references/anti-ai-writing.md +29 -56
  154. package/lib/oh-story/skills/story-long-write/references/artifact-protocols.md +72 -12
  155. package/lib/oh-story/skills/story-long-write/references/author-memory.md +61 -29
  156. package/lib/oh-story/skills/story-long-write/references/banned-words.md +3 -1
  157. package/lib/oh-story/skills/story-long-write/references/benchmark-recall.md +20 -0
  158. package/lib/oh-story/skills/story-long-write/references/cross-book-recall.md +26 -0
  159. package/lib/oh-story/skills/story-long-write/references/dialogue-mastery.md +10 -4
  160. package/lib/oh-story/skills/story-long-write/references/emotional-methods.md +2 -2
  161. package/lib/oh-story/skills/story-long-write/references/long-chapter-quality.md +6 -15
  162. package/lib/oh-story/skills/story-long-write/references/long-format.md +2 -0
  163. package/lib/oh-story/skills/story-long-write/references/outline-structure-theory.md +2 -0
  164. package/lib/oh-story/skills/story-long-write/references/project-files.md +110 -0
  165. package/lib/oh-story/skills/story-long-write/references/reader-contract-and-progression.md +12 -4
  166. package/lib/oh-story/skills/story-long-write/references/reference-index.md +86 -0
  167. package/lib/oh-story/skills/story-long-write/references/style-combat-face.md +1 -1
  168. package/lib/oh-story/skills/story-long-write/references/style-craft.md +9 -29
  169. package/lib/oh-story/skills/story-long-write/references/style-genre-modules.md +1 -1
  170. package/lib/oh-story/skills/story-long-write/references/style-resolution.md +27 -0
  171. package/lib/oh-story/skills/story-long-write/references/tracking-initialization.md +31 -0
  172. package/lib/oh-story/skills/story-long-write/references/tracking-transaction.md +9 -34
  173. package/lib/oh-story/skills/story-long-write/references/workflow-chapter.md +88 -118
  174. package/lib/oh-story/skills/story-long-write/references/workflow-daily.md +55 -119
  175. package/lib/oh-story/skills/story-long-write/references/workflow-revision.md +15 -11
  176. package/lib/oh-story/skills/story-long-write/references/workflow-setup.md +73 -54
  177. package/lib/oh-story/skills/story-long-write/references/writer-prompt-fallback.md +22 -0
  178. package/lib/oh-story/skills/story-long-write/references/writing-craft.md +63 -4
  179. package/lib/oh-story/skills/story-long-write/scripts/author_memory_commit.py +934 -170
  180. package/lib/oh-story/skills/story-long-write/scripts/build_writer_prompt.py +531 -0
  181. package/lib/oh-story/skills/story-long-write/scripts/check-ai-patterns.js +6 -1
  182. package/lib/oh-story/skills/story-long-write/scripts/check-degeneration.js +39 -20
  183. package/lib/oh-story/skills/story-long-write/scripts/check-outline-contract.js +197 -15
  184. package/lib/oh-story/skills/story-long-write/scripts/check-outline-copy.js +90 -23
  185. package/lib/oh-story/skills/story-long-write/scripts/normalize-punctuation.js +10 -5
  186. package/lib/oh-story/skills/story-long-write/scripts/outline_view.py +285 -0
  187. package/lib/oh-story/skills/story-long-write/scripts/storyctl.py +58 -0
  188. package/lib/oh-story/skills/story-long-write/scripts/style-whitelist.js +39 -0
  189. package/lib/oh-story/skills/story-long-write/scripts/tracking_commit.py +210 -2
  190. package/lib/oh-story/skills/story-long-write/scripts/wordcount_core.py +3 -0
  191. package/lib/oh-story/skills/story-review/SKILL.md +80 -87
  192. package/lib/oh-story/skills/story-review/references/anti-ai-writing.md +29 -56
  193. package/lib/oh-story/skills/story-review/references/author-memory.md +61 -29
  194. package/lib/oh-story/skills/story-review/references/banned-words.md +3 -1
  195. package/lib/oh-story/skills/story-review/references/dialogue-mastery.md +10 -4
  196. package/lib/oh-story/skills/story-review/references/review-quality.md +6 -12
  197. package/lib/oh-story/skills/story-review/references/style-resolution.md +27 -0
  198. package/lib/oh-story/skills/story-review/references/tracking-initialization.md +31 -0
  199. package/lib/oh-story/skills/story-review/references/tracking-transaction.md +9 -34
  200. package/lib/oh-story/skills/story-review/scripts/author_memory_commit.py +934 -170
  201. package/lib/oh-story/skills/story-review/scripts/check-ai-patterns.js +6 -1
  202. package/lib/oh-story/skills/story-review/scripts/check-degeneration.js +39 -20
  203. package/lib/oh-story/skills/story-review/scripts/normalize-punctuation.js +10 -5
  204. package/lib/oh-story/skills/story-review/scripts/style-whitelist.js +39 -0
  205. package/lib/oh-story/skills/story-review/scripts/tracking_commit.py +210 -2
  206. package/lib/oh-story/skills/story-review/scripts/wordcount_core.py +3 -0
  207. package/lib/oh-story/skills/story-setup/SKILL.md +58 -43
  208. package/lib/oh-story/skills/story-setup/references/agent-references/anti-ai-writing.md +29 -56
  209. package/lib/oh-story/skills/story-setup/references/agent-references/banned-words.md +3 -1
  210. package/lib/oh-story/skills/story-setup/references/agent-references/deslop-gates.md +154 -0
  211. package/lib/oh-story/skills/story-setup/references/agent-references/dialogue-mastery.md +10 -4
  212. package/lib/oh-story/skills/story-setup/references/agent-references/format-and-structure.md +2 -2
  213. package/lib/oh-story/skills/story-setup/references/agent-references/long-emotional-methods.md +2 -2
  214. package/lib/oh-story/skills/story-setup/references/agent-references/long-quality.md +1 -1
  215. package/lib/oh-story/skills/story-setup/references/agent-references/short-genre-formulas.md +1 -1
  216. package/lib/oh-story/skills/story-setup/references/agent-references/style-combat-face.md +1 -1
  217. package/lib/oh-story/skills/story-setup/references/agent-references/style-genre-modules.md +1 -1
  218. package/lib/oh-story/skills/story-setup/references/agent-references/style-resolution.md +27 -0
  219. package/lib/oh-story/skills/story-setup/references/agent-references/writing-craft.md +63 -4
  220. package/lib/oh-story/skills/story-setup/references/diagnostics.md +38 -0
  221. package/lib/oh-story/skills/story-short-analyze/SKILL.md +22 -3
  222. package/lib/oh-story/skills/story-short-analyze/references/analysis-writing-techniques.md +1 -1
  223. package/lib/oh-story/skills/story-short-analyze/references/material-decomposition.md +5 -1
  224. package/lib/oh-story/skills/story-short-analyze/references/source-story-quality.md +2 -2
  225. package/lib/oh-story/skills/story-short-scan/SKILL.md +5 -1
  226. package/lib/oh-story/skills/story-short-write/SKILL.md +15 -324
  227. package/lib/oh-story/skills/story-short-write/references/author-memory.md +61 -29
  228. package/lib/oh-story/skills/story-short-write/references/banned-words.md +3 -1
  229. package/lib/oh-story/skills/story-short-write/references/benchmark-recall.md +60 -0
  230. package/lib/oh-story/skills/story-short-write/references/dialogue-mastery.md +10 -4
  231. package/lib/oh-story/skills/story-short-write/references/genre-styles//344/270/226/346/203/205/346/211/223/350/204/270.md +2 -2
  232. package/lib/oh-story/skills/story-short-write/references/genre-styles//345/217/214/347/224/267/344/270/273.md +1 -1
  233. package/lib/oh-story/skills/story-short-write/references/genre-styles//345/244/215/344/273/207/346/211/223/350/204/270.md +3 -3
  234. package/lib/oh-story/skills/story-short-write/references/genre-styles//345/256/205/346/226/227/345/256/253/346/226/227.md +3 -3
  235. package/lib/oh-story/skills/story-short-write/references/genre-styles//346/200/273/350/243/201/350/261/252/351/227/250.md +3 -3
  236. package/lib/oh-story/skills/story-short-write/references/genre-styles//346/202/254/347/226/221.md +5 -5
  237. package/lib/oh-story/skills/story-short-write/references/genre-styles//346/260/221/344/277/227/346/200/252/350/260/210.md +4 -4
  238. package/lib/oh-story/skills/story-short-write/references/genre-styles//347/224/234/345/256/240.md +5 -5
  239. package/lib/oh-story/skills/story-short-write/references/genre-styles//350/277/275/345/246/273/347/201/253/350/221/254/345/234/272.md +3 -3
  240. package/lib/oh-story/skills/story-short-write/references/genre-writing-formulas.md +1 -1
  241. package/lib/oh-story/skills/story-short-write/references/genre-writing-techniques.md +1 -1
  242. package/lib/oh-story/skills/story-short-write/references/reference-index.md +55 -0
  243. package/lib/oh-story/skills/story-short-write/references/short-craft.md +12 -14
  244. package/lib/oh-story/skills/story-short-write/references/short-deslop.md +10 -10
  245. package/lib/oh-story/skills/story-short-write/references/short-format.md +3 -1
  246. package/lib/oh-story/skills/story-short-write/references/short-prose-quality.md +2 -2
  247. package/lib/oh-story/skills/story-short-write/references/style-resolution.md +27 -0
  248. package/lib/oh-story/skills/story-short-write/references/workflow-design.md +78 -0
  249. package/lib/oh-story/skills/story-short-write/references/workflow-draft.md +126 -0
  250. package/lib/oh-story/skills/story-short-write/references/workflow-revision.md +32 -0
  251. package/lib/oh-story/skills/story-short-write/references/writing-workflow.md +5 -5
  252. package/lib/oh-story/skills/story-short-write/scripts/author_memory_commit.py +934 -170
  253. package/lib/oh-story/skills/story-short-write/scripts/check-ai-patterns.js +6 -1
  254. package/lib/oh-story/skills/story-short-write/scripts/check-degeneration.js +39 -20
  255. package/lib/oh-story/skills/story-short-write/scripts/check-delivery-contract.js +34 -5
  256. package/lib/oh-story/skills/story-short-write/scripts/check-outline-copy.js +90 -23
  257. package/lib/oh-story/skills/story-short-write/scripts/normalize-punctuation.js +10 -5
  258. package/lib/oh-story/skills/story-short-write/scripts/style-whitelist.js +39 -0
  259. package/lib/types/client/drama-production-view.d.ts.map +1 -1
  260. package/lib/types/client/file-activity.d.ts +19 -1
  261. package/lib/types/client/file-activity.d.ts.map +1 -1
  262. package/lib/types/client/index.d.ts.map +1 -1
  263. package/lib/types/client/production-prompts.d.ts +7 -0
  264. package/lib/types/client/production-prompts.d.ts.map +1 -1
  265. package/lib/types/client/production-runtime.d.ts +33 -0
  266. package/lib/types/client/production-runtime.d.ts.map +1 -1
  267. package/lib/types/drama-adapters.d.ts +5 -3
  268. package/lib/types/drama-adapters.d.ts.map +1 -1
  269. package/lib/types/native-hooks.d.ts +52 -0
  270. package/lib/types/native-hooks.d.ts.map +1 -1
  271. package/lib/types/role-identity.d.ts +17 -0
  272. package/lib/types/role-identity.d.ts.map +1 -0
  273. package/lib/types/role-tool.d.ts.map +1 -1
  274. package/lib/types/skill-provider.d.ts.map +1 -1
  275. package/lib/video-recap/CHANGELOG.md +31 -1
  276. package/lib/video-recap/manifest.json +162 -162
  277. package/lib/video-recap/skills/video-assemble/scripts/artifacts.py +4 -9
  278. package/lib/video-recap/skills/video-assemble/scripts/assemble.py +47 -60
  279. package/lib/video-recap/skills/video-assemble/scripts/assembly_contract.py +77 -115
  280. package/lib/video-recap/skills/video-assemble/scripts/assembly_settings.py +41 -40
  281. package/lib/video-recap/skills/video-assemble/scripts/audio_automation.py +22 -32
  282. package/lib/video-recap/skills/video-assemble/scripts/audio_mix.py +102 -192
  283. package/lib/video-recap/skills/video-assemble/scripts/jianying_builders.py +14 -35
  284. package/lib/video-recap/skills/video-assemble/scripts/jianying_model.py +14 -12
  285. package/lib/video-recap/skills/video-assemble/scripts/jianying_optional.py +8 -9
  286. package/lib/video-recap/skills/video-assemble/scripts/jianying_schema.py +3 -14
  287. package/lib/video-recap/skills/video-assemble/scripts/jianying_timeline_contract.py +23 -12
  288. package/lib/video-recap/skills/video-assemble/scripts/jianying_tracks.py +1 -4
  289. package/lib/video-recap/skills/video-assemble/scripts/jianying_writer.py +24 -25
  290. package/lib/video-recap/skills/video-assemble/scripts/lib.py +31 -85
  291. package/lib/video-recap/skills/video-assemble/scripts/media.py +100 -144
  292. package/lib/video-recap/skills/video-assemble/scripts/narration_audio.py +101 -195
  293. package/lib/video-recap/skills/video-assemble/scripts/render_preflight.py +10 -21
  294. package/lib/video-recap/skills/video-assemble/scripts/source_subtitles.py +90 -169
  295. package/lib/video-recap/skills/video-assemble/scripts/subtitle_core.py +69 -122
  296. package/lib/video-recap/skills/video-assemble/scripts/subtitle_render.py +10 -17
  297. package/lib/video-recap/skills/video-assemble/scripts/timeline.py +33 -48
  298. package/lib/video-recap/skills/video-assemble/scripts/timeline_emit.py +14 -20
  299. package/lib/video-recap/skills/video-assemble/scripts/visual_render.py +135 -213
  300. package/lib/video-recap/skills/video-cut/scripts/cut_cli.py +49 -57
  301. package/lib/video-recap/skills/video-cut/scripts/cut_contract.py +38 -74
  302. package/lib/video-recap/skills/video-cut/scripts/cut_render.py +46 -95
  303. package/lib/video-recap/skills/video-cut/scripts/lib.py +23 -25
  304. package/lib/video-recap/skills/video-cut/scripts/media_geometry.py +70 -173
  305. package/lib/video-recap/skills/video-cut/scripts/narration_mapping.py +28 -53
  306. package/lib/video-recap/skills/video-cut/scripts/sentence_boundaries.py +162 -322
  307. package/lib/video-recap/skills/video-recap/references/timeline-and-jianying.md +6 -7
  308. package/lib/video-recap/skills/video-recap/scripts/doctor.py +104 -124
  309. package/lib/video-recap/skills/video-recap/scripts/final_qc.py +255 -412
  310. package/lib/video-recap/skills/video-recap/scripts/lib.py +30 -52
  311. package/lib/video-recap/skills/video-recap/scripts/materials.py +97 -120
  312. package/lib/video-recap/skills/video-recap/scripts/mimo_qc_client.py +7 -12
  313. package/lib/video-recap/skills/video-recap/scripts/mimo_qc_evidence.py +46 -97
  314. package/lib/video-recap/skills/video-recap/scripts/mimo_qc_observations.py +18 -36
  315. package/lib/video-recap/skills/video-recap/scripts/mimo_qc_payload.py +29 -47
  316. package/lib/video-recap/skills/video-recap/scripts/mimo_qc_report.py +43 -76
  317. package/lib/video-recap/skills/video-recap/scripts/mimo_qc_runner.py +2 -1
  318. package/lib/video-recap/skills/video-recap/scripts/qc_contract.py +2 -1
  319. package/lib/video-recap/skills/video-recap/scripts/recap_cli.py +2 -2
  320. package/lib/video-recap/skills/video-recap/scripts/recap_inspect.py +129 -145
  321. package/lib/video-recap/skills/video-recap/scripts/recap_review.py +27 -20
  322. package/lib/video-recap/skills/video-recap/scripts/recap_runner.py +20 -31
  323. package/lib/video-recap/skills/video-recap/scripts/recap_runtime.py +31 -106
  324. package/lib/video-recap/skills/video-recap/scripts/recap_stage_qc.py +43 -113
  325. package/lib/video-recap/skills/video-recap/scripts/recap_timeline.py +196 -377
  326. package/lib/video-recap/skills/video-script/scripts/agent_brief.py +1 -1
  327. package/lib/video-recap/skills/video-script/scripts/agent_text.py +63 -172
  328. package/lib/video-recap/skills/video-script/scripts/brief_context.py +80 -135
  329. package/lib/video-recap/skills/video-script/scripts/brief_inputs.py +125 -167
  330. package/lib/video-recap/skills/video-script/scripts/brief_timeline.py +93 -208
  331. package/lib/video-recap/skills/video-script/scripts/deslop_qc.py +20 -46
  332. package/lib/video-recap/skills/video-script/scripts/lib.py +30 -26
  333. package/lib/video-recap/skills/video-script/scripts/narration_lint.py +145 -140
  334. package/lib/video-recap/skills/video-script/scripts/review_response.py +12 -42
  335. package/lib/video-recap/skills/video-script/scripts/review_runner.py +0 -6
  336. package/lib/video-recap/skills/video-script/scripts/speech_ownership.py +39 -100
  337. package/lib/video-recap/skills/video-script/scripts/timeline_fusion.py +33 -124
  338. package/lib/video-recap/skills/video-understanding/scripts/agent_brief.py +1 -1
  339. package/lib/video-recap/skills/video-understanding/scripts/agent_text.py +63 -172
  340. package/lib/video-recap/skills/video-understanding/scripts/asr.py +1 -2
  341. package/lib/video-recap/skills/video-understanding/scripts/brief_context.py +80 -135
  342. package/lib/video-recap/skills/video-understanding/scripts/brief_inputs.py +125 -167
  343. package/lib/video-recap/skills/video-understanding/scripts/brief_timeline.py +93 -208
  344. package/lib/video-recap/skills/video-understanding/scripts/consolidate.py +1 -1
  345. package/lib/video-recap/skills/video-understanding/scripts/deslop_qc.py +20 -46
  346. package/lib/video-recap/skills/video-understanding/scripts/lib.py +31 -26
  347. package/lib/video-recap/skills/video-understanding/scripts/narration_lint.py +145 -140
  348. package/lib/video-recap/skills/video-understanding/scripts/speech_ownership.py +39 -100
  349. package/lib/video-recap/skills/video-understanding/scripts/timeline_fusion.py +33 -124
  350. package/lib/video-recap/skills/video-understanding/scripts/vlm.py +1 -4
  351. package/lib/video-recap/skills/video-voiceover/scripts/dub.py +7 -13
  352. package/lib/video-recap/skills/video-voiceover/scripts/fish_audio.py +12 -30
  353. package/lib/video-recap/skills/video-voiceover/scripts/lib.py +98 -131
  354. package/lib/video-recap/skills/video-voiceover/scripts/tts_audio.py +17 -28
  355. package/lib/video-recap/skills/video-voiceover/scripts/voiceover.py +151 -240
  356. package/package.json +45 -45
  357. package/lib/novel-to-game/skills/game-world-design/references/dialogue-design-method.md +0 -59
  358. package/lib/novel-to-game/skills/game-world-design/references/game-writing-craft.md +0 -53
  359. package/lib/novel-to-game/skills/novel-to-game/references/intake-benchmark-reference.md +0 -42
  360. package/lib/oh-story/skills/story-long-write/references/state-tracking.md +0 -108
@@ -1,7 +1,7 @@
1
1
  # 拆文输出模板
2
2
  按需加载,配合 SKILL.md 和 material-decomposition.md 使用。
3
3
 
4
- 本文件按 story-long-analyze 唯一管道的阶段编号组织:Stage 0-5 各阶段输出模板 + 停靠点「快速预览报告」模板 + 跨阶段通用速查。
4
+ 本文件按 story-long-analyze 唯一管道的阶段编号组织:Stage 0-5 各阶段输出模板 + 跨阶段通用速查。作者直接阅读的 `快速预览.md`、`拆文报告.md` 和对话回复模板见 [author-facing.md](author-facing.md)。
5
5
 
6
6
  ---
7
7
 
@@ -62,57 +62,13 @@
62
62
 
63
63
  ## 快速预览报告
64
64
 
65
- Stage 1 停靠点交付物,输出 `拆文库/{书名}/快速预览.md`。**字段全部取自 Stage 0/1 已产出数据**(概要.md + 黄金三章深度拆解),不引入需 Stage 2-6 才能算出的字段。与终态 `拆文报告.md` 向上兼容——「基本信息」「黄金三章评分」两节同名同结构,全量拆完后 `拆文报告.md` 是 `快速预览.md` 的超集。
66
-
67
- ```markdown
68
- # 快速预览:{书名}
69
-
70
- > 基于黄金三章 + 全书概要的早期判断。完整拆解见后续 Stage 2-6。
71
- > 状态:已完成 Stage 0-1,{已暂停 / 已继续全量拆解}
72
-
73
- ## 基本信息
74
-
75
- 书名 | 题材 | 总章数 | 总字数 | 目标平台(源书所在平台,拆解时识别,无则留空)
76
-
77
- ## 黄金三章评分
78
-
79
- 直接复用 Stage 1 三章深度拆解结论,5 维评分表:
80
-
81
- | 维度 | 评分 | 说明 |
82
- |------|------|------|
83
- | 开篇钩子 | 1-5 | |
84
- | 主角塑造 | 1-5 | |
85
- | 爽点设计 | 1-5 | |
86
- | 世界观铺设 | 1-5 | |
87
- | 章尾悬念 | 1-5 | |
88
-
89
- ## 开篇判断
90
-
91
- - 开篇钩子类型与效果(来自 Stage 1 第1章「开篇钩子」)
92
- - 主角立人设手法
93
- - 世界观铺设方式
94
- - 黄金三章节奏:三章各自功能
95
-
96
- ## 早期可借鉴点
97
-
98
- 来自 Stage 1 各章「可借鉴要素」的汇总,3-5 条。
99
-
100
- ## 是否值得全量拆解 — 建议
101
-
102
- 一句话结论:基于黄金三章质量,建议{继续全量拆解 / 重点拆解某部分 / 此书参考价值有限}。
103
-
104
- ## 下一步
105
-
106
- 继续全量拆解将产出:逐章摘要、剧情聚合、角色档案、世界观设定、完整拆文报告。
107
- ```
108
-
109
- > `快速预览.md` 与 `拆文报告.md` 并存:前者是停靠点快照,后者是终态。终态生成后不删除 `快速预览.md`,保留早期判断痕迹。
65
+ Stage 1 停靠点交付物 `拆文库/{书名}/快速预览.md`,模板见 [author-facing.md](author-facing.md)「快速预览.md」。字段只取 Stage 0/1 已产出数据(概要.md + 黄金三章深度拆解),不引入需 Stage 2-6 才能算出的内容;「基本信息」「黄金三章评分」两节与终态 `拆文报告.md` 同名同结构。终态生成后不删除 `快速预览.md`。
110
66
 
111
67
  ---
112
68
 
113
69
  ## Stage 0 概要(thin first-pass)
114
70
 
115
- > **范围说明**:Stage 0 只能基于章节标题 + 卷段结构 + 抽样开头/结尾产出 thin first-pass(~200 字)。**禁止**在此阶段写出 500-1000 字 plot-aware 概要——读取范围不足以支撑那个密度。完整版在 Stage 5 落盘覆盖(见本文件「Stage 5 拆文报告 + 全书概要」节)。
71
+ > **范围说明**:Stage 0 只能基于章节标题 + 卷段结构 + 抽样开头/结尾产出 thin first-pass(~200 字)。**禁止**在此阶段写出 500-1000 字 plot-aware 概要——读取范围不足以支撑那个密度。完整版在 Stage 5 落盘覆盖(见本文件「Stage 5 汇总报告」节)。
116
72
 
117
73
  输出 `概要.md`:总字数{X}万 | 总章数{N} | 题材{类型}
118
74
 
@@ -165,79 +121,138 @@ Stage 1 停靠点交付物,输出 `拆文库/{书名}/快速预览.md`。**字
165
121
  > 第二、三章额外关注:信息密度 / 冲突升级(vs上章) / 节奏变化 / 爽点间隔字数。
166
122
  > 反派若为非人形(灵气复苏/末世/国运等抽象对抗型),在「爽点分析」处改用抽象对抗型路由:核心对抗面{描述} | 紧迫感来源{描述} | 升级机制{描述} | 叙事替代{用什么替代传统打脸}。
167
123
 
168
- ## Stage 2 章节摘要+情节点
124
+ 同一次黄金三章阅读优先另写 `_style-sample.txt`,减少 Stage 6 的定点取样;旧项目没有该缓存时,Stage 6 仍可按索引选择 4–6 章并只读取对应行段:
169
125
 
170
- 输出 `章节/第{N}章_摘要.md`:
126
+ ```text
127
+ <!-- STYLE_SAMPLE:v1 -->
128
+ ## 片段 A
129
+ source_locator: 原文/原文.txt:L{起始行}-L{结束行}
130
+ 基调: {紧张/压抑/轻松/温馨/热血}
131
+ 示范点: {句长节奏/标点/对话潜台词/动作与反应等}
132
+ {300—500字连续原句}
133
+ ```
171
134
 
172
- **概要**:{100-300字,写成单行的一个自然段,不折行、不拆条目。按事件发生的顺序连贯讲清本章发生了什么、为什么发生、结果如何。因果照实写,但不靠"因为…所以…"这类同一连接词反复串联。优先写进:改变剧情走向的动作与结果、反常信息、会延续到后续章节的伏笔线索、有辨识度的具体细节(数字、原话、反常现象)。只写本章原文有的事实,不加空泛评价(如"感人""精彩""震撼")和主观解读}
173
- **关键事件**:1.{事件} 2.{事件} 3.{事件}
135
+ 共选4—6段,允许同章多段,但范围不得重叠;只保留用于表达分析的最小样本,不建立第二套剧情事实。
174
136
 
175
- **关键信息与扩写技法**:
137
+ ## Stage 2 章节块与剧情点
176
138
 
177
- | 关键信息/剧情走向 | 原文如何扩写 | 扩写技法 | 对读者情绪的作用 | 可复用提醒 |
178
- |---|---|---|---|---|
179
- | {本章必须让读者知道/误判/期待/确认的信息} | {作者用了哪些事件、对话、反应层、细节、误导或回扣把它扩成场景} | {铺垫后置/反应层放大/信息差/对比锚点/延迟揭示/身体反应/小目标嵌套/其他} | {好奇/期待/压抑/爽/心疼/紧张/甜/热血/其他} | {保留情绪逻辑,替换人物、场景、事件素材;禁止照搬具体桥段} |
139
+ Stage 2 有两种互斥输入。`raw-original` 只处理运行计划列出的未拆章节块;`existing-results` 只读取旧成果做二次提取。两种结果都形成批次剧情点,只有 `raw-original` 生成新的逐章兼容投影。
140
+
141
+ ### 未拆章节的紧凑语义结果
142
+
143
+ `chapter-extractor` 在一次章节块阅读中按章输出以下紧凑字段。它是模型输出,不直接充当旧接口文件:
144
+
145
+ ```markdown
146
+ ## 第{N}章 {标题}
147
+
148
+ **概要**:{60-160字,按文本披露顺序说明主要行动、原文给出的原因和结果}
149
+
150
+ **因果**:目标:{谁想做什么}|阻碍:{具体阻碍}|行动:{改变局面的选择/行动/外部事件}|结果:{局面变化}|得失:{承担者及得失}
151
+
152
+ **关键行动**:{真正改变局面的一个选择、行动或外部事件}
153
+
154
+ **局面结果**:{行动后的目标、风险、资源或关系净变化}
180
155
 
181
- **逐章写法公式**:
156
+ **涉及人物**:{关键人物,顿号分隔;没有写无}
182
157
 
183
- - **情绪流向**:起:{开篇情绪} → 承:{铺垫/加压情绪} → 转:{爆发/反转情绪} → 合:{余波/钩子情绪}
184
- - **节奏配比**:慢铺垫 {X%} / 快冲突 {X%} / 爽点爆发 {X%} / 悬念留白 {X%}
185
- - **本章结构公式**:{节点1动作(目的)} + {节点2动作(目的)} + {节点3动作(目的)} + {节点4动作(目的)}
186
- - **本章核心技巧**:{一句话概括本章最可迁移的结构手法,如用反应层放大信息差、用小目标承接大矛盾;只描述写法,不评价质量}
187
- - **卡点与伏笔**:结尾卡点:{类型+内容+下章期待};埋设/回收伏笔:{伏笔名/物件/信息 → 章节功能}
158
+ **信息变化**:{新披露内容|读者所知|关键角色所知或未知}
188
159
 
189
- **出场人物**:| 角色 | 本章重要性 | 别名 | 本章表现 |
160
+ **状态变化**:{角色/关系/资源/风险的净变化}
190
161
 
191
- **情节点**(每章10-40个,按字数动态调节,150-200字/个;硬下限10——短章按关键步骤拆足):
162
+ **三维节奏**:事件{1-5}/5|情绪{类型+1-5}/5|篇幅{1-3}/3|{三轴差异的一句话原因}
192
163
 
193
- 太粗(整段打架)→丢细节;太细(举起右手)→碎片化。恰当:完整戏剧事件("主角三招击败反派,围观者震惊")。
164
+ **章尾钩子**:{类型与具体等待;没有写无}
194
165
 
195
- P{序号} **{标题}**:类型{转折点/信息揭示/冲突/解决/铺垫/行动/对话/状态变化} | {白描一句话:谁做了什么、结果如何;原文给出起因或理由的一并写进来,不推测动机;埋伏笔的写出伏笔线索} | 涉及{全名,多人逗号分隔;纯环境铺垫无具体人物时保留"涉及"标签、值留空} | 地点{如明确} | 物品{如涉及} | 时间{如明确}
166
+ **证据**:{source_locator+5-15字定位词}
196
167
 
197
- > 标题是 ≤15 字的短标签(如「衙门见闻」「龙血针检测」),白描才是承载事实的那一句。两者不要写成同一句话——标题复述一遍不算白描。
168
+ **情节点**:
169
+
170
+ P{序号} **{标题}**:类型{转折点/信息揭示/冲突/解决/铺垫/行动/对话/状态变化} | {白描一句话:谁做了什么、结果如何;原文给出的起因一并写进来,不推测动机;埋伏笔的写出伏笔线索} | 涉及{全名,逗号分隔;无人物写无} | 地点{如明确,否则无} | 物品{如涉及,否则无} | 时间{如明确,否则无}
171
+ {可选引用行:≤400字原文连续切片,或 `原文定位:{可 grep 的原句片段}`}
198
172
 
199
- {可选引用行:≤400字原文直接引用,不加“原文引用:”标签。只给关键情节点加,挑选标准见下;不选中的情节点直接跳到下一行}
200
173
  主题标签{爱情/亲情/友情/权力/金钱/成长/复仇/悬念/搞笑/热血/日常/其他} | 基调:{紧张/轻松/悲伤/热血/爽/甜/温馨/恐怖/压抑/其他}
201
174
 
202
- > **`{}` 是占位标记,不是要输出的字符**:上面每个 `{...}` 都表示「把内容填在这里」,`/` 是候选项之间的分隔号。落盘文本里不应出现花括号,也不应把候选项列表原样抄下来。照抄成 `类型{行动}`、`主题标签{搞笑}`、`地点{未明确}` 都是错的。
203
- >
204
- > 一个完整的正确样例(照这个写,两行为一组):
205
- >
206
- > ```
207
- > P7 **龙血针检测**:类型信息揭示 | 许七安用龙血针验出对方身份,当场揭穿 | 涉及许七安,郑兴怀 | 地点府衙后堂 | 物品龙血针 | 时间入夜
208
- > 主题标签悬念 | 基调:紧张
209
- > ```
210
- >
211
- > - **字段名后不加冒号、不加括号**:写 `类型信息揭示`,不写 `类型:信息揭示` 或 `类型{信息揭示}`。
212
- > - **`主题标签` 只填一个值**:本章该情节点最主导的那一个。不要用 `/`、`、`、`,` 或空格并列多个——落盘校验按「一个值」读,并列写法会被判成枚举越界而触发重跑。
213
- > - **空字段统一写「无」**:如 `物品无`、`时间无`。不要用 `—`、`未知`,也不要整段省略(`涉及` 段必须保留,纯环境铺垫时值写「无」)。
214
- > - **每个情节点后紧跟自己的那一行 `主题标签X | 基调:Y`**,不要把所有标签行堆到文件末尾,也不要把它并进 P 行内部。
215
- >
216
- > 末行硬约束:`基调:` 全角冒号不可省略(Stage 6 文风按它 grep);`主题标签` 不加冒号;两者各取上列枚举、勿混(温馨/紧张/甜是基调、非主题);都不贴合用「其他」。
217
- >
218
- > 枚举消歧:爽=打脸/复仇得手/反转的解气感;热血=拼搏战斗的燃;甜=恋爱暧昧的甜;温馨=亲情/友情的暖;恐怖=惊悚诡异/生理恐惧;紧张=危机悬而未决。主题里,亲情=家人/师徒/类亲情;爱情=恋爱;友情=朋友/伙伴/兄弟;金钱=财富/利益/算计;权力=地位/权势。都不贴合才用「其他」,勿硬塞近义项。
219
-
220
- **白描铁律**(P 行的白描是情节点的主要证据,写不准下游全歪):
221
-
222
- | 维度 | 禁止 | 正确 |
223
- |------|------|------|
224
- | 情感 | 邵阳感到心碎和愤怒(原文只写了他看见拥抱) | 邵阳目睹宋丽与人拥抱,表情由刺痛转为冷漠 |
225
- | 评价 | 这是一段精彩的打斗 | 林雷三招击败对手,围观者倒吸一口凉气 |
226
- | 氛围 | 气氛变得紧张起来 | 所有人停止说话,目光集中在门口 |
227
- | 意图 | 他想借此展示实力 | 他将石锁单手举过头顶,环视众人 |
228
- | 叙事框架词 | 通过对话,郑松得知张子豪在韩国训练 | 吴志斌告诉郑松,张子豪在韩国训练 |
175
+ ---
176
+
177
+ P{序号+1} ……
178
+ ```
229
179
 
230
- 原文明说的起因、理由和内心活动照写("存款花光了,他去找许新年借钱"里的起因是原文给的),只是不替角色推测原文没写出来的动机;原文同时给了外部表现时优先写表现。情节点严格按原文事件的时间顺序排列,不重排、不逻辑归纳。
180
+ **情节点**是逐章节拍序列,下游对标挑章、结构关键点定位和导入反推情绪弧线都按它读:
231
181
 
232
- **原文引用规则(精选,不逐点铺满)**:情节点的主要证据是 P 行的白描——事实、结果、原文给出的起因、伏笔线索必须在白描里写全。引用是补充证据,只给三类情节点保留:关键转折(改变本章或全书走向的转折点/解决)、关键台词(有辨识度、后续会被回扣的原话)、写法样本(值得当句式/节奏/对话样本回查的段落)。
182
+ - 原文块每章 10–20 个,按字数调节,长章最多 30;旧成果补摘要下限 1 个,按旧资料写到的事件拆,不凑数;编号从 P1 连续。太粗(整段打架)丢细节,太细(举起右手)碎片化,恰当粒度是一个完整戏剧事件。
183
+ - 严格按原文事件时间顺序,不重排、不归纳。标题 ≤15 字,不与白描同句。
184
+ - 白描只写可见事实:不替角色补原文没写的情感、意图,不写“精彩”“气氛紧张”这类评价,不用“通过对话得知”这类叙事框架词;原文明说的起因和内心活动照写。
185
+ - 字段名后不加冒号;`主题标签` 只填一个值;每个情节点紧跟自己的 `主题标签X | 基调:Y` 行,`基调:` 用全角冒号。
186
+ - 引用只给关键转折、关键台词、写法样本,每章至多 8 条,其余情节点不写引用行。
233
187
 
234
- - 每章至多 8 条;其余情节点不写引用行。本章确实没有值得回查的段落时一条都可以不留,不要为凑数给过场和纯环境铺垫配引用
235
- - 引用 ≤400 字,逐字连续切片,保留原文语气,不改写、不缩写、不跨段拼接
236
- - 选中的段落过长或分散时,用一行 `原文定位:{5-15字可 grep 回原文的原句片段}` 代替整段引用
188
+ ### 批次提交格式
189
+
190
+ 提交给 `manage_analysis_run.py commit` 的文件按下列标记包裹,子代理与主线程自己写批次都一样;标记缺失或顺序不对整批拒收:
191
+
192
+ ```markdown
193
+ <!-- CHAPTER_START:{N} -->
194
+ ## 第{N}章 {标题}
195
+ {上面的紧凑字段与情节点}
196
+ <!-- CHAPTER_END:{N} -->
197
+ (本批每章一块,章号连续、各恰好一次)
198
+
199
+ <!-- BATCH_OBSERVATIONS_START -->
200
+ ## 跨章观察
201
+ {下方「批次剧情点」的五个小节}
202
+ <!-- BATCH_OBSERVATIONS_END -->
203
+ ```
237
204
 
238
- **Stage 2 输出自检**(并行 agent 与 solo/direct 串行两条路径同一份要求):概要为按时序的连贯叙述(非条目罗列、非同一连接词反复串联)|每个情节点白描客观且写全事实/结果/原文给出的起因|标题为 ≤15 字短标签且不与白描同句|情节点严格按时序|情节点数 10-40(按字数动态调节,硬下限 10)|关键转折/关键台词/写法样本类情节点留了引用或 `原文定位`,全章不超过 8 条|角色用全名|类型/基调/主题标签只取规定枚举|角色描述不跨章|`关键信息与扩写技法` 与 `逐章写法公式` 齐全。
205
+ - 旧成果批次(`REUSE-*`):计划列出的摘要缺口落在本批时,为本批每章都写章节块(情节点至少 1 个);没有缺口时不写章节块,改在开头写一行 `<!-- REUSED_CHAPTERS:{起章}-{止章} -->`。
206
+ - 跨章观察块恰好一个,放在所有章节块之后。不要输出 `MODEL_OUTPUT_START/END` 或 `story-long-analyze:cache` 标记(脚本自己加)。
239
207
 
240
- ## Stage 2 角色过滤
208
+ `manage_analysis_run.py commit` 校验这些字段后,机械生成缺失的 `章节/第{N}章_摘要.md`:情节点逐条投影并把类型、主题、基调映射到枚举,章级字段保留“概要、关键事件、涉及、章尾钩子、证据”标签。原文块每章情节点少于 10 或多于 30 时整批拒收。同一批完整模型结果和跨章观察写进 `_analysis_cache/批次-{范围ID}.md`,作为恢复证据;全局合并用 `manage_analysis_run.py digest` 取其跨章观察,不整批读取。模型不输出章节卡表,也不为兼容文件再次读取原文。
209
+
210
+ ### 批次剧情点
211
+
212
+ `raw-original` 与 `existing-results` 都按范围 ID 写完整批次缓存,内容共用下列结构:
213
+
214
+ ```markdown
215
+ ## 跨章观察
216
+
217
+ ### 剧情点
218
+
219
+ | 剧情点ID | 章节范围 | 起始目标 | 阻碍 | 关键选择/行动/外部事件 | 局面变化 | 得失与承担者 | 后续影响 | 状态 | 证据 |
220
+ |---|---|---|---|---|---|---|---|---|---|
221
+
222
+ ### 关键事件与披露候选
223
+
224
+ 只列可能进入主线或关键转折表的候选:候选ID|章节|客观事件及大致发生顺序|异常→线索→解释→确认的披露路径|读者所知|关键角色所知|判断变化|叙事作用|证据。过渡动作不建条目。
225
+
226
+ ### 关系变化
227
+
228
+ | 关系ID | 主体 → 客体 | 关系动作 | 表面/真实状态 | 触发 | 双方得失 | 变化后状态 | 证据强度 | 证据 |
229
+ |---|---|---|---|---|---|---|---|---|
230
+
231
+ ### 三维节奏
232
+
233
+ 只列峰值、谷值与三轴明显分离处:章节/剧情点|事件推进及理由|情绪类型/强度及触发|篇幅展开度|展开/压缩/省略/反复的作用|证据。普通章的紧凑分数不在这里重复。
234
+
235
+ ### 跨批状态
236
+
237
+ - 已确认别名:{别名→本名,含上一批传下来的}
238
+ - 未闭合剧情点:{ID、主体、目标、阻碍、最后证据}
239
+ - 未决悬念:{读者已知和等待确认的内容}
240
+ - 关系状态:{下一批需继承的有向状态}
241
+ - 待核事项:{冲突、C暂定或缺失}
242
+ ```
243
+
244
+ 剧情点回答“目标 → 阻碍 → 改变局面的行动或外部事件 → 得失 → 后续影响”。它可以跨章和跨读取批次,不能把每个处理批次直接当成剧情点。跨批未闭合时沿用剧情点 ID;Stage 3 再做合并、拆分和边界复核。
245
+
246
+ ### 已有成果二次提取
247
+
248
+ `existing-results` 的证据只指向只读计划列出的旧成果文件。完整旧项目增强时用 `<!-- REUSED_CHAPTERS:{起章}-{止章} -->` 声明覆盖,只写批次剧情点及关联观察。计划列出的摘要缺口落在本批时,必须为本批每章从黄金三章生成同一紧凑章块(情节点至少 1 个),否则摘要永远补不上;提交脚本只补缺失文件。旧资料没有的字段写“旧资料未提供”。
249
+
250
+ 每个成功批次由 `manage_analysis_run.py commit` 先写完整缓存、再补缺失摘要、最后写 `_progress.md` 状态行。没有逐文件收据、checkpoint 账本或 Stage receipt。
251
+
252
+ **Stage 2 输出自检**:输入模式与 `manage_analysis_run.py plan` 的内存计划一致|原文章节块连续、不重叠且不超过3章/25,000字符|已有成果模式没有读取原文|每章紧凑字段完整|情节点 10–20 个(长章最多 30)、按时序、白描客观|剧情点包含因果与得失|只保留关键事件/披露候选|三维节奏分别解释|跨批状态可继续。
253
+ ## Stage 4 角色过滤来源
254
+
255
+ Stage 4 从紧凑章块的 `涉及人物`、`状态变化` 和批次 `关系变化` 汇总角色提及,再应用下表过滤;不依赖已删除的独立“出场人物表”。
241
256
 
242
257
  | 分类 | 标准 | 提取深度 |
243
258
  |------|------|----------|
@@ -318,8 +333,12 @@ Stage 3 除剧情文件外,必须写一个轻量索引 `剧情/README.md`,
318
333
  | 标题 | 简洁有力,15字以内 |
319
334
  | 类型 | {主线/爱情/成长/复仇/寻宝/悬疑/战斗/权谋/修炼/危机/谜团/日常/其他} — 悬疑=主动推理调查,谜团=世界观/身世等未解之谜 |
320
335
  | 概要 | {150-300字,按时序连贯叙述这条剧情线的起承转合与因果,不靠同一连接词反复串联;含核心角色及定位、关键地点、关键道具(如有)、对主角/世界的影响} |
321
- | 核心目标 | {具体、可衡量的戏剧目标,如"赢得大比冠军"} |
322
- | 核心冲突 | {具体冲突对象+冲突事件} |
336
+ | 起始目标 | {谁起初想做什么;若目标在本单元前已建立,引用首次建立位置} |
337
+ | 主要阻碍 | {人物、规则、资源、信息或环境造成的具体阻碍} |
338
+ | 关键变化来源 | {谁的选择/行动,或什么外部事件改变了局面;不默认由主角主动造成} |
339
+ | 局面变化 | {目标、风险、关系、资源、知识或行动方向从什么状态变成什么状态} |
340
+ | 得失与承担者 | {谁得到什么、谁失去什么或承担什么代价} |
341
+ | 后续影响 | {结果如何促成、限制或迫使后续行动;未完成则标 open} |
323
342
  | 关键信息功能 | {这条剧情负责让读者获得/等待/误判/确认什么信息} |
324
343
  | 读者需求 | {满足安全感/优越感/期待感/情感补偿/认知反转/陪伴感等哪类需求} |
325
344
  | 情绪模块ID | {引用 `剧情/情绪模块.md` 中的 EM-001 等,不在此重复完整卡片} |
@@ -357,7 +376,7 @@ Stage 3 除剧情文件外,必须写一个轻量索引 `剧情/README.md`,
357
376
  ```markdown
358
377
  # 节奏索引:{书名}
359
378
 
360
- > 权威范围:关键信息推进、爽点循环、情绪触动点、爆发节奏。`拆文报告.md` 只引用本文件摘要。
379
+ > 权威范围:信息披露、读者/角色知识边界、事件/情绪/篇幅三维节奏、爽点循环和情绪触动点。`拆文报告.md` 只引用本文件摘要。
361
380
 
362
381
  ## 全书情绪节奏总览
363
382
 
@@ -379,6 +398,20 @@ Stage 3 除剧情文件外,必须写一个轻量索引 `剧情/README.md`,
379
398
  |---|---|---|---|---|---|
380
399
  | 第{N}章 | {读者必须获得/误判/等待的信息} | {对话铺垫/事件验证/反应层/延迟揭示/多段回扣} | {立目标/加压/释放/转场/埋钩} | {加速/减速/蓄力/爆发/冷却} | {剧情标题 / EM-001} |
381
400
 
401
+ ## 关键双时间线(全书约 8–15 个节点)
402
+
403
+ | 关键事件ID | 客观发生时间/顺序 | 事件事实 | 披露路径与章节 | 读者所知 | 关键角色所知 | 披露前后判断变化 | 叙事作用 | 证据位置 |
404
+ |---|---|---|---|---|---|---|---|---|
405
+ | EV-001 | {书内时间或相对顺序} | {只登记一次的关键事件} | {RV-001异常→RV-002线索→RV-003确认;对应章节} | {各披露阶段的边界} | {关键角色在各阶段知道/不知道什么} | {读者或角色从何种判断变成何种判断} | {悬念/误导/反转/共情/期待} | {章节+source_locator+定位词} |
406
+
407
+ 只选择改变主线、人物关系、核心风险或读者判断的节点。一个事件的多次披露合并进同一行的披露路径,不把多次披露算成多次客观事件;“作者真相”只填文本已经证实的事实。
408
+
409
+ ## 三维节奏表
410
+
411
+ | 节奏ID | 章节/剧情单元 | 事件推进1-5及理由 | 读者情绪类型/强度1-5及触发 | 篇幅展开度1-3 | 展开/压缩/省略/反复及作用 | 证据 |
412
+ |---|---|---|---|---|---|---|
413
+ | AX-001 | {第X-Y章/剧情单元} | {改变了哪些状态;重要性、范围、可逆性} | {情绪及文本触发} | {1/2/3} | {具体安排与作用;过程未知只写未展示} | {单元ID+章节定位} |
414
+
382
415
  ## 爽点循环索引
383
416
 
384
417
  | 循环ID | 章节范围 | 铺垫层 | 释放层 | 反应层 | 衔接层/新钩子 | 强度递进 |
@@ -420,20 +453,33 @@ Stage 3 除剧情文件外,必须写一个轻量索引 `剧情/README.md`,
420
453
  |---|---|---|---|---|
421
454
  | {退婚打脸/升级流/迟来追悔/掉马/以小搏大/修罗场/其他} | {章节/剧情单元} | {铺垫→延迟→释放→余波} | {对应读者需求} | {照搬会雷同/人设不适配/铺垫不足} |
422
455
 
456
+ ## 其他机制索引
457
+
458
+ 标题用字面量 `## 其他机制索引`,不改写成同义说法。除完整卡外只保留:机制ID|名称|用途|适用章节/关系|证据引用。不要复制完整卡片。
459
+
423
460
  ## 可复现模块卡
424
461
 
462
+ 至少展开全书最强的 3 个,值得复现的机制不设数量上限;不足 3 个按实际数量写,不用弱机制凑数。
463
+
425
464
  ### EM-001 {模块名}
426
465
 
466
+ `读者想看什么`、`情绪链`、`戏剧单元`、`可替换项`、`不可照搬` 五项是灵感库登记门禁,缺任一项登记被拒;其余各行按需增列。字段名按本表原样写,不用同义名(读者期待/替换项/不可照搬项等一律不识别)。值可多行:字段名行没写值时,其后到下一个字段/标题前的列表或段落都算该字段的值。`可替换项` 写「功能位→任意X」(如「欺压者→任何压制主角的人」),不写「原书专名→任意X」——专名一旦写进抽象字段就是泄漏,登记会拒。
467
+
427
468
  | 字段 | 内容 |
428
469
  |---|---|
429
470
  | 读者想看什么 | {一句话抽象需求} |
430
471
  | 情绪链 | {缺口 → 加压 → 触发 → 爆发 → 余波} |
431
472
  | 戏剧单元 | {去素材后的结构,如“被轻视者在公开场合用结果反证”} |
432
473
  | 关键触发物 | {可替换功能位:误判者/见证者/代价/证据/奖励} |
474
+ | 必要铺垫 | {哪些前置信息、行为、关系或承诺让读者形成期待} |
475
+ | 成立条件 | {人物关系、资源、信息边界、价值选择和读者预期} |
433
476
  | 复现步骤 | {1. 建缺口 2. 加反应层 3. 控制爆发点 4. 立新钩子} |
434
477
  | 可替换项 | {角色身份、场景、道具、对手类型、目标结果} |
435
478
  | 不可照搬 | {原文专名、具体事件顺序、标志性台词、独特设定} |
479
+ | 失效情形 | {换关系、动机、代价或披露顺序后为什么可能无效} |
480
+ | 反例/边界 | {文本中的弱兑现、失败尝试或当前无法验证之处} |
436
481
  | 关联节奏 | {`剧情/节奏.md` RH-001 / TR-001} |
482
+ | 证据来源 | {剧情单元、EV/RV/AX、章节和原文定位;旧资料则写实际路径与证据等级} |
437
483
 
438
484
  ## 重组与复现指南
439
485
 
@@ -512,35 +558,33 @@ Stage 3 除剧情文件外,必须写一个轻量索引 `剧情/README.md`,
512
558
  - 成长弧线(character_arc:如有明显变化则总结,如"从普通少年成长为觉醒血脉的强者")
513
559
  - 别名列表(标注类型和置信度)
514
560
 
515
- `角色/角色关系.md`(每5章批量,从情节点提取):A<->B:关系类型 | 情感 | 描述(50-200字)| 演变轨迹。同一对角色保留最新状态,历史变化写入演变轨迹。
561
+ `角色/角色关系.md` 从逐章事实和批次观察聚合,不重新读整本原文:
562
+
563
+ | 关系ID | 主体 → 客体 | 关系动作/类型 | 表面关系 | 真实关系 | 触发事件 | 双方得失 | 变化后状态 | 证据强度 | 证据 |
564
+ |---|---|---|---|---|---|---|---|---|---|
565
+
566
+ 同一对角色的最新状态和历史演变都保留;“甲保护乙”与“乙依赖甲”分别记录。关系图只由此文件生成,不手画、不另建关系事实:运行 `scripts/render_relation_chart.py --root "{拆文目录}" --png`。它总是写出 `人物关系图/人物关系图.md`(Mermaid 图 + 文字清单,任何 Markdown 查看器都显示中文,作为主产物);只有装了 matplotlib 且找到能显示图中全部文字的字体(不算 LastResort 这类只画方框的兜底字体)时,才另画 `核心人物关系.png` 与 `关键关系演变.png`,表情等符号不画进图片。字体不够就不出图,绝不改用拼音或首字母,并把脚本返回的说明转告作者。
516
567
 
517
568
  ## Stage 5 汇总报告
518
569
 
519
- 输出 `拆文报告.md`(`快速预览.md` 的超集,两节同名同结构,见「快速预览报告」节)。
520
-
521
- 报告章节:
522
-
523
- - **基本信息**:书名 | 题材 | 总章数 | 总字数 | 目标平台(与 `快速预览.md` 同结构)
524
- - **黄金三章评分**:5 维评分表(开篇钩子/主角塑造/爽点设计/世界观铺设/章尾悬念,与 `快速预览.md` 同结构)
525
- - **读者需求 / 情绪引擎**:摘要 `剧情/情绪模块.md` 的核心读者需求、情绪缺口、持续追读机制(报告只写摘要,详情以模块文件为准)
526
- - **结构分析**:主线 / 副线 / 剧情单元 / 覆盖率
527
- - **关键信息与扩写技法总览**:按章节/剧情单元汇总关键剧情信息如何被扩写(详情以 `章节/*_摘要.md` 与 `剧情/节奏.md` 为准)
528
- - **全书情绪节奏总览**:摘要 `剧情/节奏.md` 的情绪折线、爽点频率、小/中/大高潮分布、循环单元
529
- - **爽点密度**:{N}个循环/{M}章 | 完成率{X%} | 密度{高≥70%/中50-70%/低<50%}
530
- - **节奏与情绪触动点**:摘要 `剧情/节奏.md` 的爆发密度、触动点分布、长间隔风险、爆发节奏
531
- - **伏笔与冲突网络**:跨章伏笔地图(仅列跨度超过2章或影响主线的伏笔)+ 冲突升级路径(低级→中级→高级→终局)
532
- - **核心机制**:爽点类型 | 节奏模式 | 更新策略
533
- - **角色体系**:主角/反派/核心配角/功能角色分级概览
534
- - **质量评估**:置信度 / 覆盖率 / 重叠率
535
- - **可借鉴套路**:1.{套路+场景} 2.{...} 3.{...},必须标注对应 `EM-*` 模块ID
536
- - **可复现模块**:列出 `剧情/情绪模块.md` Top 3 模块的读者需求、情绪链、替换项、不可照搬项
537
- - **写法技巧**:1.{技巧名+用法} 2.{...}——覆盖一笔两用、延迟揭示、视角欺骗、对比锚点、行为循环、身体反应替代心理描写、**跨章回扣**(物品/意象在不同章节承担不同功能)
538
- - **不建议模仿**:1.{问题+原因}
570
+ 输出 `拆文报告.md`,模板与写法规则见 [author-facing.md](author-facing.md)「拆文报告.md」。它是 `快速预览.md` 的超集(「基本信息」「黄金三章评分」两节同名同结构),面向作者阅读:不出现脚本名、字段名、状态值、批次编号、质量指标名和证据分级字母;情绪模块卡、事件、披露、节奏节点的编号只在带名称时出现(如「退婚当众打脸」(EM-003)),关系写成「甲 → 乙:由……到……」。
571
+
572
+ 报告只综合权威底层结果,不为写总报告重新阅读全文,也不复制所有逐章摘要。每条结论写一句人话,再指向对应文件和章节;机械可追溯信息(`source_locator`、证据强度、`EV/RV/AX/EM` 全量编号)留在 `剧情/节奏.md`、`剧情/情绪模块.md`、剧情单元和 `角色/角色关系.md` 里。
573
+
574
+ ### 三层灵感库最小消费契约
575
+
576
+ - 单书案例以 `剧情/*.md` 的剧情单元为准,可迁移机制以 `剧情/情绪模块.md` 的 `EM-*` 为准;主报告是阅读入口,不作为第二份结构化真源。
577
+ - 客观事件、披露节点和三维节奏分别使用 `EV-*`、`RV-*`、`AX-*`;披露必须引用事件;机制卡通过 ID 引用,报告只用「名称(ID)」的带名引用,避免跨层复制全文。
578
+ - 每条可检索结论保留剧情单元/章节、`source_locator` 或定位词及证据强度;`chapter_index.csv` 的逐章 hash 和 `_progress.md` 批次范围 hash 用于判断原文范围是否变化。
579
+ - 下游先运行兼容检查器读取 `classification`、`current_capabilities`、`conflicts` 和覆盖范围。缺项时请求长篇拆文的定点增强;不得把旧资料概括成伪造的当前主产物,也不得为入库重新阅读全文。
580
+ - 是否进入灵感库、跨书归并、差异保留和检索策略由三层灵感库能力决定;单书拆文不自动入库。
539
581
 
540
582
  ## Stage 6 文风
541
583
 
542
584
  输出 `拆文库/{书名}/文风.md`。整书级写作技法视图,供 story-long-write 日更循环喂给 narrative-writer。
543
585
 
586
+ 优先使用有效 `_style-sample.txt`;不存在时按 `chapter_index.csv` 选择 4–6 章、定点读取各章局部行段。不得重扫全书。只缺文风时单独执行本阶段,不重跑 Stage 1–5;完整步骤见 `style-profile-generator.md`。
587
+
544
588
  **字段速查**:
545
589
 
546
590
  | 段落 | 内容 | 必标可信度 | 上限 |