@oh-story/dsh 0.1.3 → 0.1.5

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 (524) hide show
  1. package/README.md +58 -12
  2. package/lib/client.js +2970 -537
  3. package/lib/client.js.map +4 -4
  4. package/lib/drama/manifest.json +218 -178
  5. package/lib/drama/skills/short-drama/SKILL.md +110 -117
  6. package/lib/drama/skills/short-drama/references/audience-reveal.md +14 -67
  7. package/lib/drama/skills/short-drama/references/contract-and-ownership.md +26 -77
  8. package/lib/drama/skills/short-drama/references/creator-documents.md +204 -0
  9. package/lib/drama/skills/short-drama/references/creator-workflow.md +73 -63
  10. package/lib/drama/skills/short-drama/references/knowhow-index.md +5 -0
  11. package/lib/drama/skills/short-drama/references/look-development.md +2 -3
  12. package/lib/drama/skills/short-drama/references/pickup-and-alternate.md +14 -48
  13. package/lib/drama/skills/short-drama/references/production-form-profiles.md +1 -1
  14. package/lib/drama/skills/short-drama/references/reference-roles.md +32 -135
  15. package/lib/drama/skills/short-drama/references/runtime-preflight.md +16 -19
  16. package/lib/drama/skills/short-drama/scripts/creator_markdown_check.py +1002 -0
  17. package/lib/drama/skills/short-drama/scripts/project_tool.py +485 -5
  18. package/lib/drama/skills/short-drama-assets/SKILL.md +59 -170
  19. package/lib/drama/skills/short-drama-assets/references/asset-review-checklist.md +18 -25
  20. package/lib/drama/skills/short-drama-assets/references/character-and-look.md +13 -15
  21. package/lib/drama/skills/short-drama-assets/references/continuity-delta.md +11 -14
  22. package/lib/drama/skills/short-drama-assets/references/continuity-lock.md +116 -0
  23. package/lib/drama/skills/short-drama-assets/references/identity-vs-variant.md +6 -12
  24. package/lib/drama/skills/short-drama-assets/references/occurrence-extraction.md +8 -11
  25. package/lib/drama/skills/short-drama-assets/references/prop-and-state.md +21 -2
  26. package/lib/drama/skills/short-drama-assets/references/stage-contract.md +12 -105
  27. package/lib/drama/skills/short-drama-assets/references/voice-direction.md +12 -32
  28. package/lib/drama/skills/short-drama-assets/scripts/asset_check.py +1 -1
  29. package/lib/drama/skills/short-drama-image-prompts/SKILL.md +45 -155
  30. package/lib/drama/skills/short-drama-image-prompts/references/character-and-look.md +12 -13
  31. package/lib/drama/skills/short-drama-image-prompts/references/common-recipe.md +12 -13
  32. package/lib/drama/skills/short-drama-image-prompts/references/edit-and-revision.md +39 -51
  33. package/lib/drama/skills/short-drama-image-prompts/references/location-plate.md +3 -4
  34. package/lib/drama/skills/short-drama-image-prompts/references/look-and-state-variant.md +15 -14
  35. package/lib/drama/skills/short-drama-image-prompts/references/lookdev-frame.md +11 -15
  36. package/lib/drama/skills/short-drama-image-prompts/references/production-sheet-recipes.md +1 -1
  37. package/lib/drama/skills/short-drama-image-prompts/references/prop-plate.md +4 -7
  38. package/lib/drama/skills/short-drama-image-prompts/references/review-and-fixtures.md +23 -23
  39. package/lib/drama/skills/short-drama-image-prompts/references/stage-contract.md +8 -65
  40. package/lib/drama/skills/short-drama-image-prompts/scripts/image_prompt_check.py +8 -8
  41. package/lib/drama/skills/short-drama-image-prompts/scripts/selftest.py +4 -2
  42. package/lib/drama/skills/short-drama-produce/SKILL.md +67 -15
  43. package/lib/drama/skills/short-drama-produce/references/adapter-contract.md +65 -8
  44. package/lib/drama/skills/short-drama-produce/references/providers/minimax-h3-video.md +85 -0
  45. package/lib/drama/skills/short-drama-produce/references/providers/seedance.md +27 -10
  46. package/lib/drama/skills/short-drama-produce/scripts/production_tool.py +362 -3
  47. package/lib/drama/skills/short-drama-produce/scripts/provider_adapters.py +627 -40
  48. package/lib/drama/skills/short-drama-produce/scripts/selftest.py +5 -4
  49. package/lib/drama/skills/short-drama-review/SKILL.md +61 -123
  50. package/lib/drama/skills/short-drama-review/references/anti-template-repair.md +10 -15
  51. package/lib/drama/skills/short-drama-review/references/production-quality-gates.md +15 -16
  52. package/lib/drama/skills/short-drama-review/references/project-calibration.md +7 -9
  53. package/lib/drama/skills/short-drama-review/references/review-method.md +8 -9
  54. package/lib/drama/skills/short-drama-review/references/rubric-assets-prompts.md +9 -13
  55. package/lib/drama/skills/short-drama-review/references/rubric-story-script.md +104 -4
  56. package/lib/drama/skills/short-drama-review/references/rubric-visual-motion.md +27 -19
  57. package/lib/drama/skills/short-drama-review/references/stage-contract.md +4 -63
  58. package/lib/drama/skills/short-drama-review/scripts/review_check.py +1 -1
  59. package/lib/drama/skills/short-drama-storyboard/SKILL.md +116 -238
  60. package/lib/drama/skills/short-drama-storyboard/assets/shot-template.jsonl +1 -1
  61. package/lib/drama/skills/short-drama-storyboard/references/blocking-playbooks.md +9 -34
  62. package/lib/drama/skills/short-drama-storyboard/references/comic-keyframe-lexicon.md +156 -0
  63. package/lib/drama/skills/short-drama-storyboard/references/coverage-audition.md +5 -10
  64. package/lib/drama/skills/short-drama-storyboard/references/keyframe-craft.md +12 -7
  65. package/lib/drama/skills/short-drama-storyboard/references/production-shot-grammar.md +19 -4
  66. package/lib/drama/skills/short-drama-storyboard/references/review-and-fixtures.md +27 -62
  67. package/lib/drama/skills/short-drama-storyboard/references/scene-visual-plan.md +16 -25
  68. package/lib/drama/skills/short-drama-storyboard/references/screenplay-to-keyframe-example.md +21 -23
  69. package/lib/drama/skills/short-drama-storyboard/references/shot-craft.md +8 -10
  70. package/lib/drama/skills/short-drama-storyboard/references/shot-revision-identity.md +9 -13
  71. package/lib/drama/skills/short-drama-storyboard/references/stage-contract.md +16 -71
  72. package/lib/drama/skills/short-drama-storyboard/scripts/storyboard_check.py +1 -1
  73. package/lib/drama/skills/short-drama-video-prompts/SKILL.md +123 -230
  74. package/lib/drama/skills/short-drama-video-prompts/assets/motion-spec.jsonl.md +6 -1
  75. package/lib/drama/skills/short-drama-video-prompts/assets/video-prompts.md +17 -1
  76. package/lib/drama/skills/short-drama-video-prompts/references/camera-audio-continuity.md +10 -8
  77. package/lib/drama/skills/short-drama-video-prompts/references/delivery-profile.md +24 -6
  78. package/lib/drama/skills/short-drama-video-prompts/references/generability.md +2 -2
  79. package/lib/drama/skills/short-drama-video-prompts/references/minimax-h3.md +154 -0
  80. package/lib/drama/skills/short-drama-video-prompts/references/motion-recipe.md +35 -27
  81. package/lib/drama/skills/short-drama-video-prompts/references/performance-action-timing.md +8 -11
  82. package/lib/drama/skills/short-drama-video-prompts/references/production-prompt-grammar.md +13 -10
  83. package/lib/drama/skills/short-drama-video-prompts/references/review-and-fixtures.md +34 -63
  84. package/lib/drama/skills/short-drama-video-prompts/references/seedance-2.0.md +41 -0
  85. package/lib/drama/skills/short-drama-video-prompts/references/seedance-2.5.md +66 -0
  86. package/lib/drama/skills/short-drama-video-prompts/references/stage-contract.md +17 -73
  87. package/lib/drama/skills/short-drama-video-prompts/references/target-model-profile.md +115 -0
  88. package/lib/drama/skills/short-drama-video-prompts/scripts/container_check.py +1 -1
  89. package/lib/drama/skills/short-drama-video-prompts/scripts/music_spec_check.py +1 -1
  90. package/lib/drama/skills/short-drama-write/SKILL.md +74 -268
  91. package/lib/drama/skills/short-drama-write/references/dialogue-craft.md +7 -0
  92. package/lib/drama/skills/short-drama-write/references/scene-handoff-capsule.md +17 -43
  93. package/lib/drama/skills/short-drama-write/references/screenplay-format.md +15 -15
  94. package/lib/drama/skills/short-drama-write/references/script-craft.md +208 -21
  95. package/lib/drama/skills/short-drama-write/references/stage-contract.md +11 -70
  96. package/lib/drama/skills/short-drama-write/scripts/duration_estimate.py +1 -1
  97. package/lib/drama/skills/short-drama-write/scripts/screenplay_index.py +2 -2
  98. package/lib/drama/skills/short-drama-write/scripts/voice_sheet_check.py +1 -1
  99. package/lib/index.js +971 -46
  100. package/lib/index.js.map +4 -4
  101. package/lib/novel-to-game/LICENSE +21 -0
  102. package/lib/novel-to-game/README.md +180 -0
  103. package/lib/novel-to-game/README_ZH.md +178 -0
  104. package/lib/novel-to-game/VERSION +1 -0
  105. package/lib/novel-to-game/examples/jin-ping-mei/build/BUILD_BRIEF.md +217 -0
  106. package/lib/novel-to-game/examples/jin-ping-mei/build/app/.vercelignore +3 -0
  107. package/lib/novel-to-game/examples/jin-ping-mei/build/app/RUN.md +130 -0
  108. package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/bg/compound_new_guofeng.webp +0 -0
  109. package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/cg/finale/fate_coda.webp +0 -0
  110. package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/cg/finale/meng.webp +0 -0
  111. package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/cg/finale/pan.webp +0 -0
  112. package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/cg/finale/pinger.webp +0 -0
  113. package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/cg/finale/xuee.webp +0 -0
  114. package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/cg/finale/yue.webp +0 -0
  115. package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/cg/group/inner_court_accord_five.webp +0 -0
  116. package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/cg/group/inner_court_afterglow_five.webp +0 -0
  117. package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/cg/group/inner_court_alliance.webp +0 -0
  118. package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/cg/group/public_day10.webp +0 -0
  119. package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/cg/group/public_day15.webp +0 -0
  120. package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/cg/group/public_day5.webp +0 -0
  121. package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/cg/group/title_new_guofeng.webp +0 -0
  122. package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/cg/joint/pan_pinger.webp +0 -0
  123. package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/cg/joint/pan_xuee.webp +0 -0
  124. package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/cg/joint/yue_meng.webp +0 -0
  125. package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/cg/joint/yue_pan.webp +0 -0
  126. package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/cg/joint/yue_pinger.webp +0 -0
  127. package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/cg/meng/explicit.webp +0 -0
  128. package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/cg/meng/prelude.webp +0 -0
  129. package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/cg/milestone/meng.webp +0 -0
  130. package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/cg/milestone/pan.webp +0 -0
  131. package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/cg/milestone/pinger.webp +0 -0
  132. package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/cg/milestone/xuee.webp +0 -0
  133. package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/cg/milestone/yue.webp +0 -0
  134. package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/cg/pan/explicit.webp +0 -0
  135. package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/cg/pan/prelude.webp +0 -0
  136. package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/cg/pinger/explicit.webp +0 -0
  137. package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/cg/pinger/prelude.webp +0 -0
  138. package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/cg/xuee/explicit.webp +0 -0
  139. package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/cg/xuee/prelude.webp +0 -0
  140. package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/cg/yue/explicit.webp +0 -0
  141. package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/cg/yue/prelude.webp +0 -0
  142. package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/heroine/meng/night.webp +0 -0
  143. package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/heroine/pan/night.webp +0 -0
  144. package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/heroine/pinger/night.webp +0 -0
  145. package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/heroine/xuee/night.webp +0 -0
  146. package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/heroine/yue/night.webp +0 -0
  147. package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/household/li_jiaoer.webp +0 -0
  148. package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/scene/gate_collector.webp +0 -0
  149. package/lib/novel-to-game/examples/jin-ping-mei/build/app/css/new-guofeng.css +1105 -0
  150. package/lib/novel-to-game/examples/jin-ping-mei/build/app/css/style.css +2539 -0
  151. package/lib/novel-to-game/examples/jin-ping-mei/build/app/index.html +18 -0
  152. package/lib/novel-to-game/examples/jin-ping-mei/build/app/js/assets.js +147 -0
  153. package/lib/novel-to-game/examples/jin-ping-mei/build/app/js/audio.js +332 -0
  154. package/lib/novel-to-game/examples/jin-ping-mei/build/app/js/data.js +7472 -0
  155. package/lib/novel-to-game/examples/jin-ping-mei/build/app/js/engine.js +13077 -0
  156. package/lib/novel-to-game/examples/jin-ping-mei/build/app/js/main.js +3028 -0
  157. package/lib/novel-to-game/examples/jin-ping-mei/build/app/js/text.js +32 -0
  158. package/lib/novel-to-game/examples/jin-ping-mei/build/app/package.json +10 -0
  159. package/lib/novel-to-game/examples/jin-ping-mei/build/app/vercel.json +23 -0
  160. package/lib/novel-to-game/examples/jin-ping-mei/build/art/generated-art.json +161 -0
  161. package/lib/novel-to-game/examples/jin-ping-mei/example.json +12 -0
  162. package/lib/novel-to-game/examples/jin-ping-mei/qa/README.md +31 -0
  163. package/lib/novel-to-game/examples/jin-ping-mei/qa/playable-model.json +99 -0
  164. package/lib/novel-to-game/examples/jin-ping-mei/qa/verification.json +41 -0
  165. package/lib/novel-to-game/examples/jin-ping-mei/qa/verify_playable_model.mjs +129 -0
  166. package/lib/novel-to-game/manifest.json +508 -0
  167. package/lib/novel-to-game/skills/game-art-direction/SKILL.md +73 -0
  168. package/lib/novel-to-game/skills/game-art-direction/agents/openai.yaml +4 -0
  169. package/lib/novel-to-game/skills/game-art-direction/references/art-direction-method.md +119 -0
  170. package/lib/novel-to-game/skills/game-build/SKILL.md +84 -0
  171. package/lib/novel-to-game/skills/game-build/agents/openai.yaml +4 -0
  172. package/lib/novel-to-game/skills/game-build/references/build-brief-contract.md +109 -0
  173. package/lib/novel-to-game/skills/game-build/references/generative-media-pipeline.md +56 -0
  174. package/lib/novel-to-game/skills/game-build/references/playable-model-contract.md +81 -0
  175. package/lib/novel-to-game/skills/game-build/references/tts-production-contract.md +37 -0
  176. package/lib/novel-to-game/skills/game-concept/SKILL.md +72 -0
  177. package/lib/novel-to-game/skills/game-concept/agents/openai.yaml +4 -0
  178. package/lib/novel-to-game/skills/game-concept/references/concept-method.md +94 -0
  179. package/lib/novel-to-game/skills/game-qa/SKILL.md +50 -0
  180. package/lib/novel-to-game/skills/game-qa/agents/openai.yaml +4 -0
  181. package/lib/novel-to-game/skills/game-qa/references/qa-contract.md +66 -0
  182. package/lib/novel-to-game/skills/game-qa/references/test-design-method.md +45 -0
  183. package/lib/novel-to-game/skills/game-world-design/SKILL.md +63 -0
  184. package/lib/novel-to-game/skills/game-world-design/agents/openai.yaml +4 -0
  185. package/lib/novel-to-game/skills/game-world-design/references/dialogue-design-method.md +59 -0
  186. package/lib/novel-to-game/skills/game-world-design/references/game-writing-craft.md +53 -0
  187. package/lib/novel-to-game/skills/game-world-design/references/narrative-design-method.md +84 -0
  188. package/lib/novel-to-game/skills/game-world-design/references/numeric-design-method.md +56 -0
  189. package/lib/novel-to-game/skills/game-world-design/references/world-design-method.md +124 -0
  190. package/lib/novel-to-game/skills/novel-game-analyze/SKILL.md +77 -0
  191. package/lib/novel-to-game/skills/novel-game-analyze/agents/openai.yaml +4 -0
  192. package/lib/novel-to-game/skills/novel-game-analyze/references/gameability-protocol.md +65 -0
  193. package/lib/novel-to-game/skills/novel-to-game/SKILL.md +71 -0
  194. package/lib/novel-to-game/skills/novel-to-game/agents/openai.yaml +4 -0
  195. package/lib/novel-to-game/skills/novel-to-game/references/intake-benchmark-reference.md +42 -0
  196. package/lib/novel-to-game/skills/novel-to-game/references/intake-method.md +51 -0
  197. package/lib/novel-to-game/skills/novel-to-game/references/pipeline-contract.md +65 -0
  198. package/lib/oh-story/manifest.json +419 -309
  199. package/lib/oh-story/roles/character-designer.md +4 -4
  200. package/lib/oh-story/roles/consistency-checker.md +1 -1
  201. package/lib/oh-story/roles/narrative-writer.md +41 -42
  202. package/lib/oh-story/roles/story-architect.md +19 -23
  203. package/lib/oh-story/roles/story-explorer.md +8 -5
  204. package/lib/oh-story/skills/browser-cdp/SKILL.md +1 -1
  205. package/lib/oh-story/skills/story/SKILL.md +16 -9
  206. package/lib/oh-story/skills/story/VERSION +1 -1
  207. package/lib/oh-story/skills/story/references/author-memory.md +163 -0
  208. package/lib/oh-story/skills/story/scripts/author_memory_commit.py +871 -0
  209. package/lib/oh-story/skills/story-cover/SKILL.md +1 -1
  210. package/lib/oh-story/skills/story-deslop/SKILL.md +10 -5
  211. package/lib/oh-story/skills/story-deslop/references/anti-ai-writing.md +2 -1
  212. package/lib/oh-story/skills/story-deslop/references/author-memory.md +163 -0
  213. package/lib/oh-story/skills/story-deslop/references/banned-words.md +6 -4
  214. package/lib/oh-story/skills/story-deslop/scripts/author_memory_commit.py +871 -0
  215. package/lib/oh-story/skills/story-deslop/scripts/check-ai-patterns.js +64 -1
  216. package/lib/oh-story/skills/story-import/SKILL.md +21 -8
  217. package/lib/oh-story/skills/story-import/references/format-and-structure.md +9 -10
  218. package/lib/oh-story/skills/story-import/references/structure-mapping-long.md +2 -2
  219. package/lib/oh-story/skills/story-import/references/structure-mapping-short.md +1 -1
  220. package/lib/oh-story/skills/story-import/references/tracking-transaction.md +14 -6
  221. package/lib/oh-story/skills/story-import/scripts/check-outline-contract.js +251 -0
  222. package/lib/oh-story/skills/story-import/scripts/tracking_commit.py +98 -9
  223. package/lib/oh-story/skills/story-import/scripts/wordcount_core.py +246 -0
  224. package/lib/oh-story/skills/story-long-analyze/SKILL.md +4 -4
  225. package/lib/oh-story/skills/story-long-scan/SKILL.md +1 -1
  226. package/lib/oh-story/skills/story-long-write/SKILL.md +35 -21
  227. package/lib/oh-story/skills/story-long-write/references/anti-ai-writing.md +2 -1
  228. package/lib/oh-story/skills/story-long-write/references/artifact-protocols.md +7 -3
  229. package/lib/oh-story/skills/story-long-write/references/author-memory.md +163 -0
  230. package/lib/oh-story/skills/story-long-write/references/banned-words.md +6 -4
  231. package/lib/oh-story/skills/story-long-write/references/cross-book-recall.md +6 -6
  232. package/lib/oh-story/skills/story-long-write/references/genre-prose-cards.md +1 -1
  233. package/lib/oh-story/skills/story-long-write/references/genre-readers.md +1 -1
  234. package/lib/oh-story/skills/{story-setup/references/agent-references/hooks-chapter.md → story-long-write/references/long-chapter-hooks.md} +5 -5
  235. package/lib/oh-story/skills/story-long-write/references/{quality-checklist.md → long-chapter-quality.md} +2 -1
  236. package/lib/oh-story/skills/story-long-write/references/long-format.md +42 -0
  237. package/lib/oh-story/skills/{story-setup/references/agent-references/genre-catalog.md → story-long-write/references/long-genre-catalog.md} +11 -97
  238. package/lib/oh-story/skills/story-long-write/references/{genre-core-mechanics.md → long-genre-mechanics.md} +1 -1
  239. package/lib/oh-story/skills/story-long-write/references/{reversal-toolkit.md → long-reversal.md} +18 -32
  240. package/lib/oh-story/skills/story-long-write/references/{hooks-suspense.md → long-suspense.md} +6 -6
  241. package/lib/oh-story/skills/story-long-write/references/opening-design.md +1 -1
  242. package/lib/oh-story/skills/story-long-write/references/outline-structure-theory.md +1 -1
  243. package/lib/oh-story/skills/story-long-write/references/style-genre-modules.md +1 -1
  244. package/lib/oh-story/skills/story-long-write/references/tracking-transaction.md +14 -6
  245. package/lib/oh-story/skills/story-long-write/references/workflow-chapter.md +32 -27
  246. package/lib/oh-story/skills/story-long-write/references/workflow-daily.md +5 -4
  247. package/lib/oh-story/skills/story-long-write/references/workflow-revision.md +2 -2
  248. package/lib/oh-story/skills/story-long-write/references/workflow-setup.md +17 -11
  249. package/lib/oh-story/skills/story-long-write/references/writing-craft.md +54 -54
  250. package/lib/oh-story/skills/story-long-write/scripts/author_memory_commit.py +871 -0
  251. package/lib/oh-story/skills/story-long-write/scripts/check-ai-patterns.js +64 -1
  252. package/lib/oh-story/skills/story-long-write/scripts/check-outline-contract.js +251 -0
  253. package/lib/oh-story/skills/story-long-write/scripts/storyctl.py +303 -0
  254. package/lib/oh-story/skills/story-long-write/scripts/tracking_commit.py +98 -9
  255. package/lib/oh-story/skills/story-long-write/scripts/wordcount_core.py +246 -0
  256. package/lib/oh-story/skills/story-review/SKILL.md +26 -17
  257. package/lib/oh-story/skills/story-review/references/anti-ai-writing.md +2 -1
  258. package/lib/oh-story/skills/story-review/references/author-memory.md +163 -0
  259. package/lib/oh-story/skills/story-review/references/banned-words.md +6 -4
  260. package/lib/oh-story/skills/story-review/references/{quality-checklist.md → review-quality.md} +22 -21
  261. package/lib/oh-story/skills/story-review/references/tracking-transaction.md +14 -6
  262. package/lib/oh-story/skills/story-review/scripts/author_memory_commit.py +871 -0
  263. package/lib/oh-story/skills/story-review/scripts/check-ai-patterns.js +64 -1
  264. package/lib/oh-story/skills/story-review/scripts/tracking_commit.py +98 -9
  265. package/lib/oh-story/skills/story-review/scripts/wordcount_core.py +246 -0
  266. package/lib/oh-story/skills/story-setup/SKILL.md +85 -41
  267. package/lib/oh-story/skills/story-setup/references/agent-references/agent-quality.md +72 -0
  268. package/lib/oh-story/skills/story-setup/references/agent-references/agent-reference-profiles.md +55 -0
  269. package/lib/oh-story/skills/story-setup/references/agent-references/anti-ai-writing.md +2 -1
  270. package/lib/oh-story/skills/story-setup/references/agent-references/banned-words.md +6 -4
  271. package/lib/oh-story/skills/story-setup/references/agent-references/format-and-structure.md +9 -10
  272. package/lib/oh-story/skills/story-setup/references/agent-references/genre-prose-cards.md +1 -1
  273. package/lib/oh-story/skills/story-setup/references/agent-references/genre-readers.md +1 -1
  274. package/lib/oh-story/skills/{story-short-analyze/references/hooks-chapter.md → story-setup/references/agent-references/long-chapter-hooks.md} +5 -5
  275. package/lib/oh-story/skills/story-setup/references/agent-references/long-emotional-methods.md +209 -0
  276. package/lib/oh-story/skills/{story-long-write/references/genre-catalog.md → story-setup/references/agent-references/long-genre-catalog.md} +11 -97
  277. package/lib/oh-story/skills/story-setup/references/agent-references/{genre-core-mechanics.md → long-genre-mechanics.md} +1 -1
  278. package/lib/oh-story/skills/story-setup/references/agent-references/long-quality.md +40 -0
  279. package/lib/oh-story/skills/{story-short-write/references/reversal-toolkit.md → story-setup/references/agent-references/long-reversal.md} +18 -32
  280. package/lib/oh-story/skills/{story-short-write/references/hooks-suspense.md → story-setup/references/agent-references/long-suspense.md} +6 -6
  281. package/lib/oh-story/skills/story-setup/references/agent-references/opening-design.md +1 -1
  282. package/lib/oh-story/skills/story-setup/references/agent-references/{emotional-methods.md → short-emotional-methods.md} +4 -4
  283. package/lib/oh-story/skills/{story-long-write/references/genre-writing-formulas.md → story-setup/references/agent-references/short-genre-formulas.md} +32 -44
  284. package/lib/oh-story/skills/story-setup/references/agent-references/short-quality.md +39 -0
  285. package/lib/oh-story/skills/story-setup/references/agent-references/{reversal-toolkit.md → short-reversal.md} +29 -23
  286. package/lib/oh-story/skills/story-setup/references/agent-references/{hooks-suspense.md → short-suspense.md} +31 -31
  287. package/lib/oh-story/skills/story-setup/references/agent-references/style-genre-modules.md +1 -1
  288. package/lib/oh-story/skills/story-setup/references/agent-references/writing-craft.md +55 -55
  289. package/lib/oh-story/skills/story-short-analyze/SKILL.md +28 -28
  290. package/lib/oh-story/skills/story-short-analyze/references/{character-basics.md → analysis-character-basics.md} +1 -1
  291. package/lib/oh-story/skills/story-short-analyze/references/{character-design-methods.md → analysis-character-design.md} +1 -1
  292. package/lib/oh-story/skills/story-short-analyze/references/{character-relations.md → analysis-character-relations.md} +1 -1
  293. package/lib/oh-story/skills/story-short-analyze/references/{hooks-paragraph.md → analysis-paragraph-hooks.md} +1 -1
  294. package/lib/oh-story/skills/story-short-analyze/references/{genre-readers.md → analysis-reader-profile.md} +2 -2
  295. package/lib/oh-story/skills/story-short-analyze/references/analysis-report-style.md +45 -0
  296. package/lib/oh-story/skills/story-short-analyze/references/analysis-short-genres.md +65 -0
  297. package/lib/oh-story/skills/story-short-analyze/references/analysis-short-hooks.md +77 -0
  298. package/lib/oh-story/skills/story-short-analyze/references/analysis-short-mechanics.md +82 -0
  299. package/lib/oh-story/skills/story-short-analyze/references/analysis-short-patterns.md +50 -0
  300. package/lib/oh-story/skills/story-short-analyze/references/analysis-short-suspense.md +98 -0
  301. package/lib/oh-story/skills/story-short-analyze/references/{genre-writing-techniques.md → analysis-writing-techniques.md} +21 -19
  302. package/lib/oh-story/skills/story-short-analyze/references/deconstruction-examples.md +1 -1
  303. package/lib/oh-story/skills/story-short-analyze/references/material-decomposition.md +21 -28
  304. package/lib/oh-story/skills/story-short-analyze/references/output-contract.md +1 -1
  305. package/lib/oh-story/skills/story-short-analyze/references/output-templates.md +17 -17
  306. package/lib/oh-story/skills/story-short-analyze/references/{quality-checklist.md → source-story-quality.md} +28 -49
  307. package/lib/oh-story/skills/story-short-analyze/references/zhihu-style.md +2 -2
  308. package/lib/oh-story/skills/story-short-scan/SKILL.md +1 -1
  309. package/lib/oh-story/skills/story-short-write/SKILL.md +78 -55
  310. package/lib/oh-story/skills/story-short-write/references/author-memory.md +163 -0
  311. package/lib/oh-story/skills/story-short-write/references/banned-words.md +6 -4
  312. package/lib/oh-story/skills/story-short-write/references/cross-book-recall.md +3 -3
  313. package/lib/oh-story/skills/story-short-write/references/emotional-methods.md +4 -4
  314. package/lib/oh-story/skills/story-short-write/references/genre-styles//344/270/226/346/203/205/346/211/223/350/204/270.md +3 -3
  315. package/lib/oh-story/skills/story-short-write/references/genre-styles//345/217/214/347/224/267/344/270/273.md +2 -2
  316. 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
  317. package/lib/oh-story/skills/story-short-write/references/genre-styles//345/256/205/346/226/227/345/256/253/346/226/227.md +6 -6
  318. 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
  319. package/lib/oh-story/skills/story-short-write/references/genre-styles//346/202/254/347/226/221.md +4 -4
  320. package/lib/oh-story/skills/story-short-write/references/genre-styles//346/260/221/344/277/227/346/200/252/350/260/210.md +7 -7
  321. package/lib/oh-story/skills/story-short-write/references/genre-styles//346/262/231/351/233/225/350/204/221/346/264/236.md +5 -5
  322. package/lib/oh-story/skills/story-short-write/references/genre-styles//347/224/234/345/256/240.md +4 -4
  323. 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
  324. package/lib/oh-story/skills/story-short-write/references/genre-writing-formulas.md +32 -44
  325. package/lib/oh-story/skills/story-short-write/references/genre-writing-techniques.md +20 -18
  326. package/lib/oh-story/skills/story-short-write/references/output-contract.md +1 -1
  327. package/lib/oh-story/skills/story-short-write/references/short-craft.md +18 -18
  328. package/lib/oh-story/skills/story-short-write/references/short-deslop.md +1 -1
  329. package/lib/oh-story/skills/story-short-write/references/short-format.md +38 -8
  330. package/lib/oh-story/skills/story-short-write/references/{quality-checklist.md → short-prose-quality.md} +22 -21
  331. package/lib/oh-story/skills/story-short-write/references/short-reversal.md +355 -0
  332. package/lib/oh-story/skills/{story-short-analyze/references/hooks-suspense.md → story-short-write/references/short-suspense.md} +31 -31
  333. package/lib/oh-story/skills/story-short-write/references/submission-craft.md +2 -2
  334. package/lib/oh-story/skills/story-short-write/references/writing-workflow.md +31 -22
  335. package/lib/oh-story/skills/story-short-write/scripts/author_memory_commit.py +871 -0
  336. package/lib/oh-story/skills/story-short-write/scripts/check-ai-patterns.js +64 -1
  337. package/lib/oh-story/skills/story-short-write/scripts/check-delivery-contract.js +212 -0
  338. package/lib/oh-story/skills/story-short-write/scripts/check-phase2-contract.js +363 -0
  339. package/lib/types/client/drama-production-view.d.ts +34 -0
  340. package/lib/types/client/drama-production-view.d.ts.map +1 -0
  341. package/lib/types/client/drama-production.d.ts +92 -0
  342. package/lib/types/client/drama-production.d.ts.map +1 -0
  343. package/lib/types/client/file-activity.d.ts +9 -2
  344. package/lib/types/client/file-activity.d.ts.map +1 -1
  345. package/lib/types/client/index.d.ts +1 -1
  346. package/lib/types/client/index.d.ts.map +1 -1
  347. package/lib/types/client/production-intents.d.ts +9 -0
  348. package/lib/types/client/production-intents.d.ts.map +1 -0
  349. package/lib/types/client/production-prompts.d.ts +9 -0
  350. package/lib/types/client/production-prompts.d.ts.map +1 -0
  351. package/lib/types/client/production-runtime.d.ts +58 -0
  352. package/lib/types/client/production-runtime.d.ts.map +1 -0
  353. package/lib/types/client/video-studio.d.ts +41 -0
  354. package/lib/types/client/video-studio.d.ts.map +1 -0
  355. package/lib/types/client/workbench-ui.d.ts +5 -0
  356. package/lib/types/client/workbench-ui.d.ts.map +1 -0
  357. package/lib/types/game-verification.d.ts +16 -0
  358. package/lib/types/game-verification.d.ts.map +1 -0
  359. package/lib/types/index.d.ts +5 -2
  360. package/lib/types/index.d.ts.map +1 -1
  361. package/lib/types/production-intent.d.ts +21 -0
  362. package/lib/types/production-intent.d.ts.map +1 -0
  363. package/lib/types/production-tool.d.ts +5 -0
  364. package/lib/types/production-tool.d.ts.map +1 -0
  365. package/lib/types/reference-tool.d.ts +6 -0
  366. package/lib/types/reference-tool.d.ts.map +1 -0
  367. package/lib/types/role-provider.d.ts.map +1 -1
  368. package/lib/types/role-tool.d.ts +3 -1
  369. package/lib/types/role-tool.d.ts.map +1 -1
  370. package/lib/types/skill-provider.d.ts +7 -0
  371. package/lib/types/skill-provider.d.ts.map +1 -1
  372. package/lib/types/video-project.d.ts +42 -0
  373. package/lib/types/video-project.d.ts.map +1 -0
  374. package/lib/types/workspace-request-trust.d.ts +6 -0
  375. package/lib/types/workspace-request-trust.d.ts.map +1 -1
  376. package/lib/types/workspace-route.d.ts +20 -0
  377. package/lib/types/workspace-route.d.ts.map +1 -1
  378. package/lib/video-recap/CHANGELOG.md +282 -0
  379. package/lib/video-recap/LICENSE +21 -0
  380. package/lib/video-recap/README.en.md +257 -0
  381. package/lib/video-recap/README.md +255 -0
  382. package/lib/video-recap/manifest.json +684 -0
  383. package/lib/video-recap/skills/video-assemble/SKILL.md +97 -0
  384. package/lib/video-recap/skills/video-assemble/references/jianying/LICENSE.duo-video +21 -0
  385. package/lib/video-recap/skills/video-assemble/references/jianying/SOURCE.md +15 -0
  386. package/lib/video-recap/skills/video-assemble/references/jianying/empty_draft_meta_info.json +69 -0
  387. package/lib/video-recap/skills/video-assemble/references/jianying/empty_jy_combination_segment.json +84 -0
  388. package/lib/video-recap/skills/video-assemble/references/jianying/empty_jy_combination_video_material.json +98 -0
  389. package/lib/video-recap/skills/video-assemble/references/jianying/empty_jy_draft.json +204 -0
  390. package/lib/video-recap/skills/video-assemble/references/jianying/empty_jy_material_video.json +83 -0
  391. package/lib/video-recap/skills/video-assemble/references/jianying/empty_jy_meta_material_value.json +23 -0
  392. package/lib/video-recap/skills/video-assemble/references/jianying/empty_jy_project_info.json +133 -0
  393. package/lib/video-recap/skills/video-assemble/references/jianying/empty_jy_segment.json +70 -0
  394. package/lib/video-recap/skills/video-assemble/references/jianying/empty_jy_text_styles.json +30 -0
  395. package/lib/video-recap/skills/video-assemble/references/jianying/empty_yj_material_audio.json +41 -0
  396. package/lib/video-recap/skills/video-assemble/references/jianying/empty_yj_material_text.json +109 -0
  397. package/lib/video-recap/skills/video-assemble/scripts/artifacts.py +88 -0
  398. package/lib/video-recap/skills/video-assemble/scripts/assemble.py +345 -0
  399. package/lib/video-recap/skills/video-assemble/scripts/assemble_constants.py +34 -0
  400. package/lib/video-recap/skills/video-assemble/scripts/assembly_contract.py +305 -0
  401. package/lib/video-recap/skills/video-assemble/scripts/assembly_settings.py +94 -0
  402. package/lib/video-recap/skills/video-assemble/scripts/audio_automation.py +205 -0
  403. package/lib/video-recap/skills/video-assemble/scripts/audio_mix.py +555 -0
  404. package/lib/video-recap/skills/video-assemble/scripts/export_jianying.py +261 -0
  405. package/lib/video-recap/skills/video-assemble/scripts/jianying_builders.py +767 -0
  406. package/lib/video-recap/skills/video-assemble/scripts/jianying_model.py +111 -0
  407. package/lib/video-recap/skills/video-assemble/scripts/jianying_optional.py +24 -0
  408. package/lib/video-recap/skills/video-assemble/scripts/jianying_schema.py +109 -0
  409. package/lib/video-recap/skills/video-assemble/scripts/jianying_templates.py +37 -0
  410. package/lib/video-recap/skills/video-assemble/scripts/jianying_timeline_contract.py +191 -0
  411. package/lib/video-recap/skills/video-assemble/scripts/jianying_tracks.py +75 -0
  412. package/lib/video-recap/skills/video-assemble/scripts/jianying_writer.py +394 -0
  413. package/lib/video-recap/skills/video-assemble/scripts/lib.py +239 -0
  414. package/lib/video-recap/skills/video-assemble/scripts/media.py +243 -0
  415. package/lib/video-recap/skills/video-assemble/scripts/narration_audio.py +477 -0
  416. package/lib/video-recap/skills/video-assemble/scripts/render_preflight.py +46 -0
  417. package/lib/video-recap/skills/video-assemble/scripts/source_subtitles.py +486 -0
  418. package/lib/video-recap/skills/video-assemble/scripts/subtitle_core.py +376 -0
  419. package/lib/video-recap/skills/video-assemble/scripts/subtitle_render.py +88 -0
  420. package/lib/video-recap/skills/video-assemble/scripts/timeline.py +248 -0
  421. package/lib/video-recap/skills/video-assemble/scripts/timeline_emit.py +89 -0
  422. package/lib/video-recap/skills/video-assemble/scripts/visual_render.py +512 -0
  423. package/lib/video-recap/skills/video-cut/SKILL.md +90 -0
  424. package/lib/video-recap/skills/video-cut/scripts/cut.py +67 -0
  425. package/lib/video-recap/skills/video-cut/scripts/cut_cli.py +320 -0
  426. package/lib/video-recap/skills/video-cut/scripts/cut_contract.py +545 -0
  427. package/lib/video-recap/skills/video-cut/scripts/cut_render.py +348 -0
  428. package/lib/video-recap/skills/video-cut/scripts/lib.py +77 -0
  429. package/lib/video-recap/skills/video-cut/scripts/media_geometry.py +341 -0
  430. package/lib/video-recap/skills/video-cut/scripts/narration_mapping.py +249 -0
  431. package/lib/video-recap/skills/video-cut/scripts/sentence_boundaries.py +745 -0
  432. package/lib/video-recap/skills/video-recap/SKILL.md +216 -0
  433. package/lib/video-recap/skills/video-recap/references/config-playbook.md +61 -0
  434. package/lib/video-recap/skills/video-recap/references/creative-editing-playbook.md +225 -0
  435. package/lib/video-recap/skills/video-recap/references/data-schema.md +534 -0
  436. package/lib/video-recap/skills/video-recap/references/research-guide.md +74 -0
  437. package/lib/video-recap/skills/video-recap/references/shift-left-qc-schema.md +23 -0
  438. package/lib/video-recap/skills/video-recap/references/timeline-and-jianying.md +251 -0
  439. package/lib/video-recap/skills/video-recap/scripts/doctor.py +483 -0
  440. package/lib/video-recap/skills/video-recap/scripts/final_qc.py +737 -0
  441. package/lib/video-recap/skills/video-recap/scripts/lib.py +242 -0
  442. package/lib/video-recap/skills/video-recap/scripts/materials.py +457 -0
  443. package/lib/video-recap/skills/video-recap/scripts/mimo_qc.py +95 -0
  444. package/lib/video-recap/skills/video-recap/scripts/mimo_qc_client.py +18 -0
  445. package/lib/video-recap/skills/video-recap/scripts/mimo_qc_contract.py +9 -0
  446. package/lib/video-recap/skills/video-recap/scripts/mimo_qc_evidence.py +371 -0
  447. package/lib/video-recap/skills/video-recap/scripts/mimo_qc_observations.py +201 -0
  448. package/lib/video-recap/skills/video-recap/scripts/mimo_qc_payload.py +227 -0
  449. package/lib/video-recap/skills/video-recap/scripts/mimo_qc_report.py +362 -0
  450. package/lib/video-recap/skills/video-recap/scripts/mimo_qc_runner.py +129 -0
  451. package/lib/video-recap/skills/video-recap/scripts/qc_contract.py +338 -0
  452. package/lib/video-recap/skills/video-recap/scripts/recap.py +9 -0
  453. package/lib/video-recap/skills/video-recap/scripts/recap_cli.py +140 -0
  454. package/lib/video-recap/skills/video-recap/scripts/recap_inspect.py +550 -0
  455. package/lib/video-recap/skills/video-recap/scripts/recap_review.py +77 -0
  456. package/lib/video-recap/skills/video-recap/scripts/recap_runner.py +654 -0
  457. package/lib/video-recap/skills/video-recap/scripts/recap_runtime.py +335 -0
  458. package/lib/video-recap/skills/video-recap/scripts/recap_stage_qc.py +217 -0
  459. package/lib/video-recap/skills/video-recap/scripts/recap_timeline.py +795 -0
  460. package/lib/video-recap/skills/video-script/SKILL.md +248 -0
  461. package/lib/video-recap/skills/video-script/references/creative-editing-playbook.md +225 -0
  462. package/lib/video-recap/skills/video-script/references/research-guide.md +75 -0
  463. package/lib/video-recap/skills/video-script/scripts/agent_brief.py +399 -0
  464. package/lib/video-recap/skills/video-script/scripts/agent_text.py +410 -0
  465. package/lib/video-recap/skills/video-script/scripts/brief_context.py +403 -0
  466. package/lib/video-recap/skills/video-script/scripts/brief_inputs.py +332 -0
  467. package/lib/video-recap/skills/video-script/scripts/brief_timeline.py +442 -0
  468. package/lib/video-recap/skills/video-script/scripts/deslop_qc.py +237 -0
  469. package/lib/video-recap/skills/video-script/scripts/evidence_bundle.py +492 -0
  470. package/lib/video-recap/skills/video-script/scripts/lib.py +327 -0
  471. package/lib/video-recap/skills/video-script/scripts/narration.py +12 -0
  472. package/lib/video-recap/skills/video-script/scripts/narration_lint.py +678 -0
  473. package/lib/video-recap/skills/video-script/scripts/review.py +42 -0
  474. package/lib/video-recap/skills/video-script/scripts/review_grounding.py +262 -0
  475. package/lib/video-recap/skills/video-script/scripts/review_response.py +761 -0
  476. package/lib/video-recap/skills/video-script/scripts/review_runner.py +200 -0
  477. package/lib/video-recap/skills/video-script/scripts/speech_ownership.py +204 -0
  478. package/lib/video-recap/skills/video-script/scripts/timeline_fusion.py +199 -0
  479. package/lib/video-recap/skills/video-script/scripts/validate.py +164 -0
  480. package/lib/video-recap/skills/video-understanding/SKILL.md +75 -0
  481. package/lib/video-recap/skills/video-understanding/references/data-schema.md +299 -0
  482. package/lib/video-recap/skills/video-understanding/references/prompt-templates.md +37 -0
  483. package/lib/video-recap/skills/video-understanding/references/research-guide.md +74 -0
  484. package/lib/video-recap/skills/video-understanding/scripts/agent_brief.py +399 -0
  485. package/lib/video-recap/skills/video-understanding/scripts/agent_text.py +410 -0
  486. package/lib/video-recap/skills/video-understanding/scripts/asr.py +260 -0
  487. package/lib/video-recap/skills/video-understanding/scripts/brief.py +12 -0
  488. package/lib/video-recap/skills/video-understanding/scripts/brief_context.py +403 -0
  489. package/lib/video-recap/skills/video-understanding/scripts/brief_inputs.py +332 -0
  490. package/lib/video-recap/skills/video-understanding/scripts/brief_timeline.py +442 -0
  491. package/lib/video-recap/skills/video-understanding/scripts/consolidate.py +647 -0
  492. package/lib/video-recap/skills/video-understanding/scripts/deslop_qc.py +237 -0
  493. package/lib/video-recap/skills/video-understanding/scripts/detect.py +513 -0
  494. package/lib/video-recap/skills/video-understanding/scripts/extract.py +62 -0
  495. package/lib/video-recap/skills/video-understanding/scripts/lib.py +470 -0
  496. package/lib/video-recap/skills/video-understanding/scripts/narration_lint.py +678 -0
  497. package/lib/video-recap/skills/video-understanding/scripts/speech_ownership.py +204 -0
  498. package/lib/video-recap/skills/video-understanding/scripts/storyboard.py +507 -0
  499. package/lib/video-recap/skills/video-understanding/scripts/timeline_fusion.py +199 -0
  500. package/lib/video-recap/skills/video-understanding/scripts/understand.py +9 -0
  501. package/lib/video-recap/skills/video-understanding/scripts/understanding_brief.py +216 -0
  502. package/lib/video-recap/skills/video-understanding/scripts/understanding_cache.py +327 -0
  503. package/lib/video-recap/skills/video-understanding/scripts/understanding_runner.py +367 -0
  504. package/lib/video-recap/skills/video-understanding/scripts/understanding_storyboard.py +162 -0
  505. package/lib/video-recap/skills/video-understanding/scripts/vlm.py +705 -0
  506. package/lib/video-recap/skills/video-voiceover/SKILL.md +81 -0
  507. package/lib/video-recap/skills/video-voiceover/scripts/dub.py +637 -0
  508. package/lib/video-recap/skills/video-voiceover/scripts/fish_audio.py +109 -0
  509. package/lib/video-recap/skills/video-voiceover/scripts/lib.py +421 -0
  510. package/lib/video-recap/skills/video-voiceover/scripts/tts_audio.py +113 -0
  511. package/lib/video-recap/skills/video-voiceover/scripts/voiceover.py +782 -0
  512. package/package.json +57 -41
  513. package/lib/drama/skills/short-drama/references/lifecycle-commands.md +0 -130
  514. package/lib/oh-story/skills/story-deslop/scripts/check-outline-copy.js +0 -241
  515. package/lib/oh-story/skills/story-long-write/references/format-and-structure.md +0 -169
  516. package/lib/oh-story/skills/story-setup/references/agent-references/genre-writing-formulas.md +0 -444
  517. package/lib/oh-story/skills/story-setup/references/agent-references/quality-checklist.md +0 -247
  518. package/lib/oh-story/skills/story-short-analyze/references/anti-ai-writing.md +0 -582
  519. package/lib/oh-story/skills/story-short-analyze/references/banned-words.md +0 -147
  520. package/lib/oh-story/skills/story-short-analyze/references/genre-catalog.md +0 -490
  521. package/lib/oh-story/skills/story-short-analyze/references/genre-core-mechanics.md +0 -425
  522. package/lib/oh-story/skills/story-short-analyze/references/genre-writing-formulas.md +0 -453
  523. /package/lib/oh-story/skills/{story-long-write/references/hooks-chapter.md → story-setup/references/agent-references/short-chapter-hooks.md} +0 -0
  524. /package/lib/oh-story/skills/{story-long-write/references/hooks-paragraph.md → story-setup/references/agent-references/short-paragraph-hooks.md} +0 -0
@@ -93,7 +93,7 @@
93
93
 
94
94
  ### 拉扯原则
95
95
 
96
- 1. **每 3-5 个小节有一次情绪转向**(不能一路虐到底或一路爽到底)
96
+ 1. **情绪不能一路虐到底或一路爽到底**(连续多个小节没有情绪立场、期待或压力变化时,查是否停滞)
97
97
  2. **每次转向都要有触发事件**(不能无理由地改变情绪)
98
98
  3. **最后一次转向决定结尾余韵的基调**
99
99
  4. **爽文允许快速反弹,虐文需要更长铺垫**
@@ -104,8 +104,8 @@
104
104
 
105
105
  ### 世情/爽文
106
106
 
107
- - 情绪反弹速度:快(受辱后 2-3 节内打脸)
108
- - 打脸密度:每 3-5 节一次
107
+ - 情绪反弹速度:快(受辱后先取证或布局,再落打脸,不拖到读者已经忘记)
108
+ - 打脸节奏:沿反派嚣张度递增持续兑现,不按固定节距补打脸
109
109
  - 反派嚣张度:递增(第一次小嚣张,最后一次大嚣张)
110
110
  - 结尾基调:痛快、解气
111
111
  - 案例:《准儿媳打分》— 打分制反制、铁盒零分、断绝关系
@@ -164,7 +164,7 @@
164
164
  - [ ] 前 1/3 有具体羁绊细节(不是抽象描述)?
165
165
  - [ ] 中段有反差/撕裂(读者以为 A → 实际是 B)?
166
166
  - [ ] 结尾有安静细节(不是大段抒情)?
167
- - [ ] 每 3-5 节有情绪转向?
167
+ - [ ] 情绪立场/期待/压力持续有变化,没有连续多个小节原地打转?
168
168
  - [ ] 反派行为符合其人设逻辑?
169
169
  - [ ] 不存在上述 6 种失败模式?
170
170
 
@@ -1,9 +1,9 @@
1
- # 题材写作公式
1
+ # 短篇题材写作公式
2
2
 
3
- > **用途**:21个题材的结构骨架、情绪节拍、必选场景、关键规则。按题材分类,可直接套用。
3
+ > **用途**:短篇题材的结构骨架、情绪节拍、必选场景、关键规则。章数只是小节编排方式,不代表长篇卷级结构。
4
4
  > **语气**:指令式——每个公式都是可直接套用的结构骨架。
5
5
  > **配合**:优先使用当前 skill 内的通用技法 reference;story-setup 部署后使用项目本地 agent reference bundle 中的写作技法、结构格式、题材风格模块副本。
6
- > **适用范围**:本文件的节奏参数(500-800 字/节、短句白描等)只适用于短篇和爽文小节;长篇正文的叙述句仍以逗号长句为主(句长标准),不要把短篇小节的句法带进长篇。
6
+ > **适用范围**:本文件的节奏参数只适用于短篇和短篇小节;长篇任务转交 `story-long-write`,本文件不提供长篇开局公式。
7
7
 
8
8
  ---
9
9
 
@@ -16,7 +16,6 @@
16
16
  | 现代复仇/打脸 | 公式一 | 6章短篇 |
17
17
  | 古代宅斗/身份反转 | 公式二 | 8节 |
18
18
  | 虐恋复仇/灵魂视角 | 公式三 | 7节 |
19
- | 都市系统/逆袭长篇 | 公式四 | 前3章 |
20
19
  | 玄幻仙侠/重生逆袭 | 公式六 | 19章 |
21
20
  | 年代重生/双重复仇 | 公式七 | 19章 |
22
21
  | 宫闱宅斗/女帝逆袭 | 公式八 | 19章 |
@@ -89,19 +88,6 @@
89
88
 
90
89
  ---
91
90
 
92
- ## 公式四:都市系统/逆袭长篇(前3章)
93
-
94
- | 章 | 节点 | 要点 |
95
- |----|------|------|
96
- | 1 | 离婚+系统激活 | 仙人跳反转→离婚→系统激活 |
97
- | 2 | 系统面板+新手奖励 | "报废边缘"吐槽→新手礼包→离婚 |
98
- | 3 | 离婚后+新装备 | 机车出场→前妻后悔伏笔→父子关系 |
99
-
100
- **必选场景**:中年危机够惨;系统面板讽刺数据;新手礼包立刻见效;前妻后悔伏笔;隐藏装备;子女关系
101
- **规则**:系统评价+主角吐槽是核心笑点;每章结尾必有系统奖励;反差是爽点来源;生活化细节建真实感
102
-
103
- ---
104
-
105
91
  ## 公式六:玄幻仙侠/重生逆袭(19章)
106
92
 
107
93
  ```
@@ -152,7 +138,7 @@
152
138
 
153
139
  **情绪**:好奇→紧张→爽→更爽→震撼→痛快
154
140
  **必选场景**:设定一句话说清;被骗后"不慌反喜";鬼视角独特信息差;每次升级解锁前世记忆;反派反应是爽点;双重惩罚比单杀更解气
155
- **规则**:鬼视角是独特卖点;"鬼不怕恶人,恶人怕鬼";悬疑线+复仇线交织;每章结尾有反转或新发现
141
+ **规则**:鬼视角是独特卖点;"鬼不怕恶人,恶人怕鬼";悬疑线+复仇线交织;章尾可落在反转、新发现、局部兑现或明确的下一步,不为逐章达标另造异常
156
142
 
157
143
  ---
158
144
 
@@ -202,18 +188,18 @@
202
188
 
203
189
  ## 公式十四:女频 vs 男频复仇/打脸
204
190
 
205
- ### 女频万能公式
206
- - **开头(前10%)**:第一人称「我」;3句内建立核心矛盾;重生则150字内完成前世回顾
207
- - **发展(10-50%)**:反派每500字升级一次;主角表面隐忍;心声制造信息差;每800字一次小打脸
208
- - **高潮(50-80%)**:终极真相/身份揭露;公开审判式打脸;每500字一次大打脸
209
- - **收尾(80-100%)**:反派下场;新生活开启;≤200字温情收尾
191
+ ### 女频常见路径
192
+ - **开头**:第一人称「我」;3句内建立核心矛盾;重生则150字内完成前世回顾
193
+ - **发展**:让反派施压、主角选择、信息差与局部反制沿因果链升级;连续多个叙事单元没有状态变化时再调整,不按字数配打脸
194
+ - **高潮**:终极真相、身份或关键证据在前因足以支撑时汇合;公开审判只在围观关系网能放大权力翻转时使用
195
+ - **收尾**:交代反派下场、主角选择与可感后果;温情段长度服从余波,不按固定字数截断
210
196
 
211
- ### 男频万能公式
212
- - **开头(前10%)**:第一段最大屈辱;不铺垫直接炸裂;关键数据具体
213
- - **发展(10-40%)**:隐忍篇幅比女频短;靠行动非心声展示能力
214
- - **反击(40-70%)**:直接碾压不解释;碾压必须当众
215
- - **高潮(70-90%)**:身份揭露;称呼改变=身份揭露;集体震惊
216
- - **收尾(90-100%)**:反派覆灭;200-400字温情线
197
+ ### 男频常见路径
198
+ - **开头**:第一段最大屈辱;不铺垫直接炸裂;关键数据具体
199
+ - **发展**:隐忍篇幅通常较短;靠行动而非心声展示能力
200
+ - **反击**:用选择、资源和行动形成碾压;公开场合只在关系网见证会改变结果时使用
201
+ - **高潮**:身份、实力或关键证据在前因足以支撑时汇合;称呼改变可作为关系翻转证据,不强配集体震惊
202
+ - **收尾**:反派覆灭后交代主角选择和余波;温情线长度服从结局职责
217
203
 
218
204
  ### 核心差异
219
205
 
@@ -308,7 +294,7 @@
308
294
 
309
295
  ---
310
296
 
311
- ## 公式十九:细节线索驱动型复仇(8-13章超短章节制)
297
+ ## 公式十九:细节线索驱动型复仇
312
298
 
313
299
  ```
314
300
  1 发现异常(微小细节→冷静应对)
@@ -320,7 +306,7 @@
320
306
 
321
307
  **情绪**:警觉→压抑→冷静→爽→极爽→豁达
322
308
  **必选场景**:一个触发细节(钥匙扣/避孕套品牌/发票/香水味);职业优势展示;证据链系统构建;"笑着点头"时刻;反向利用对方棋子;"人情味很贵"收尾
323
- **规则**:超短章节制(每章500-1000字);主角永远冷静;证据逐章释放;双面人写法;背叛层层加码;冷描写大情绪
309
+ **规则**:小节长度服从调查与反击动作链;主角的冷静体现在策略和选择上,失控若有因果与后果也可成立;证据按判断变化分批释放;双面人写法;背叛层层加码;冷描写大情绪
324
310
 
325
311
  ### 调查链条模板
326
312
  ```
@@ -343,7 +329,7 @@
343
329
 
344
330
  **情绪**:了然→爽→更爽→极爽→痛快→豁达
345
331
  **必选场景**:"给你吧"时刻;白月光三连试探(撒娇→哭闹→威胁);渣男"既要又要";身份揭露名场面;冷眼旁观对方自毁;"头也不回"式离开
346
- **规则**:"给你就是最好的惩罚";前世记忆每章穿插一小段;主角情绪是"苍凉的笑";最大蔑视是漠视
332
+ **规则**:"给你就是最好的惩罚";前世记忆只在改变当下判断、选择或信息时穿插,不按章配额;主角的克制通过具体选择呈现,不固定成"苍凉的笑";最大蔑视是漠视
347
333
 
348
334
  ---
349
335
 
@@ -383,12 +369,12 @@
383
369
  ## 短篇题材创作要点速查表
384
370
 
385
371
  ### 世情/爽文
386
- - 打脸密度:每3-5节一次,反派嚣张度逐级递增
387
- - 受辱后2-3节内必须反击
372
+ - 打脸沿反派嚣张度逐级递增兑现;连续多个叙事单元没有新作恶、反制或代价变化时再查停滞
373
+ - 受辱后先给取证或布局再落反制,不把反击拖到读者已经忘记
388
374
  - 主角主动设局或果断反击
389
375
  - 反派有自洽作恶逻辑
390
376
  - 打脸后不拖泥带水,断绝/收走/报警干脆利落
391
- - 爽文章节500-800字/节,感官细节揉进动作节拍中(不单独成句),身体反应用动作白描
377
+ - 爽文小节通常偏短,长度服从动作链是否完整;感官细节揉进动作节拍中(不单独成句),身体反应用动作白描
392
378
 
393
379
  ### 情感/虐心
394
380
  - 前1/3用具体物件/数字/习惯建立关系质感
@@ -418,15 +404,17 @@
418
404
  - 断亲有反复和挣扎
419
405
  - 断裂后用新关系填补
420
406
 
421
- ### 钩子密度分级
407
+ ### 牵引强度分级
422
408
 
423
- | 题材 | 密度 | 偏好 |
424
- |------|------|------|
425
- | 复仇/爽文 | 极高:每2节 | 打脸、底牌、代价 |
426
- | 悬疑 | 高:每2-3节 | 信息差、倒计时、反转 |
427
- | 情感/虐心 | 中高:每3节 | 情感、反差、余韵 |
428
- | 古言/宫斗 | 中高:每2-3节 | 底牌、打脸、代价 |
429
- | 年代/亲情 | 中:每3-4节 | 情感、反差、余韵 |
409
+ > 强度描述题材期待,不是逐节配额。钩子落在读者预期、行动方向或关系判断发生变化的位置;连续多个小节只提问不兑现时再复核。
410
+
411
+ | 题材 | 牵引强度 | 偏好 |
412
+ |------|----------|------|
413
+ | 复仇/爽文 | 极强 | 打脸、底牌、代价 |
414
+ | 悬疑 | 强 | 信息差、倒计时、反转 |
415
+ | 情感/虐心 | 中强 | 情感、反差、余韵 |
416
+ | 古言/宫斗 | 中强 | 底牌、打脸、代价 |
417
+ | 年代/亲情 | 中 | 情感、反差、余韵 |
430
418
 
431
419
  ---
432
420
 
@@ -440,5 +428,5 @@
440
428
  - [ ] **核心规则遵守**:公式"规则"部分的每一条都已落实
441
429
  - [ ] **篇幅合规**:章/节数量在公式规定范围内
442
430
  - [ ] **女频/男频区分**:如果是复仇打脸类,已按公式十四的核心差异调整写法
443
- - [ ] **钩子密度达标**:按题材速查表的密度要求,每N节有明确钩子
431
+ - [ ] **牵引不断线**:钩子落在预期、行动方向或关系判断变化处,没有连续多个小节只提问不兑现
444
432
  - [ ] **开头3秒抓人**:第一段/第一句已建立核心冲突或信息炸弹,没有慢热铺垫
@@ -0,0 +1,39 @@
1
+ # 短篇质量覆盖
2
+
3
+ > 与 `agent-quality.md` 配套,仅在 `short` profile 加载。按全文和小节审查;长篇黄金三章、卷级张弛与跨十几章回收周期不适用。
4
+
5
+ ## 全文密度与兑现
6
+
7
+ - [ ] 每节至少改变信息、关系、风险、目标、证据归属或情绪立场之一;不为“每 300 字一次冲突”机械加戏。
8
+ - [ ] 主悬念只有一个,副悬念服务证据、误导或情绪代价,不扩成新故事。
9
+ - [ ] 每次延迟答案都交付新证据、误判修正、关系撕裂或局部反击,不能连续两节只抬问题。
10
+ - [ ] 最大情绪/认知兑现留有铺垫和后果空间;70–85% 只可作为复仇/悬疑常见规划带,不是跨题材硬门槛。
11
+ - [ ] 付费点卡在未完成动作、证据归属变化、身份异常或两难选择上,不靠空喊危险。
12
+
13
+ ## 反转与证据链
14
+
15
+ - [ ] 每层反转前至少有可回溯线索,误导信息本身真实,只是解释方向错误。
16
+ - [ ] 第一层给出可信阶段答案,第二层同时解释旧线索并改变情绪判断。
17
+ - [ ] 证据分批释放,最后一批改变全局认知;具体批次数由全文长度和题材决定。
18
+ - [ ] 揭示后仍有行动、关系或代价结算,不用大段独白解释全部机关。
19
+ - [ ] 若后半程出现更深冲突或第二议题,开篇问题与它之间至少已有两处因果或证据绑定;否则不是升级,而是换主线。
20
+ - [ ] 证据链形成“来源/实物 → 解释争夺 → 归属或责任翻转”的阶梯;每一级都改变角色下一步行动,不只补设定。
21
+
22
+ ## 对话与人物
23
+
24
+ - [ ] 对话承担取证、权力变化、关系撕裂或信息差,密度服从题材和源文基线,不套统一 45–65%。
25
+ - [ ] 主角冷静、失控或强势必须来自人设和处境,不要求标志性端杯、转笔等模板动作。
26
+ - [ ] 反派/操盘者有独立动机,不能只为最后一翻突然改设定。
27
+ - [ ] 每个决定性证据转折都标明谁取得、谁验证、谁选择公开;主角至少拥有一次决定性发现和最终不可逆选择,不能一路被配角喂答案。
28
+
29
+ ## 审查输出合同
30
+
31
+ - 阻断项和高风险项必须同时给出:可定位证据、失败影响、最小修法;确有不同方向时再给一个可选替代。
32
+ - 最小修法要说明改哪一节、补哪条因果或移走哪笔结算,不能只写“加强铺垫”“提升主动性”。
33
+ - 同类症状合并到一个根因,不用问题数量冒充审查深度。
34
+
35
+ ## 结尾
36
+
37
+ - [ ] 结局完成核心因果和情绪结算,不在最后一节另开长篇式新线。
38
+ - [ ] 收尾落到动作、物件、关系选择或可见后果;余韵不是作者总结。
39
+ - [ ] 反转后的解释和清算长度服从实际欠账,不强制固定 500–800 字。
@@ -1,4 +1,4 @@
1
- # 反转设计工具箱
1
+ # 短篇反转设计
2
2
  > 操作手册:反转类型、嵌套反转、误导技巧、打脸节奏。按决策路由选用,按设置/揭示步骤执行,用自检清单验收。
3
3
  > 反转类型枚举与拆文 `_meta.json.reversal_type` 字段一致:视角/身份/动机/时间线/信息/认知/无反转。
4
4
 
@@ -175,7 +175,7 @@
175
175
  **写法要点**:
176
176
  1. 不为"显得有设计感"硬加反转
177
177
  2. 报应型:每个报应要让读者等过、铺过,兑现时才解气
178
- 3. 甜宠型:升温节拍密集,每节给一个甜点/反差点
178
+ 3. 甜宠型:升温节拍保持连续变化;若多个叙事单元都没有心动、试探、选择或关系后果,再检查是否停滞,不为逐节达标硬塞甜点
179
179
 
180
180
  > 拆文时遇到此类,`reversal_type` 填「无反转」,`setup_clues`(反转铺垫)一项跳过阈值(见 analyze output-contract 的「structure_counts 数值校验」)。
181
181
 
@@ -185,12 +185,14 @@
185
185
 
186
186
  一篇短篇可叠 2-3 层反转,必须主次分明。
187
187
 
188
+ 每层都按同一条可执行链设计:`铺垫事实 → 当时的错误解释 → 触发证据 → 真相揭示 → 行动/关系后果`。第一层必须是能暂时结案的可信阶段答案;第二层不仅推翻第一层,还要解释读者为什么曾相信表层答案。
189
+
188
190
  ### 双层嵌套
189
191
 
190
192
  ```
191
193
  读者以为:A(铺垫阶段)
192
- 第一层反转:其实是 B!(70%处)
193
- 第二层反转:B 也是假的,其实是 C!(90%处)
194
+ 第一层反转:其实是 B!(中后段阶段答案)
195
+ 第二层反转:B 仍不完整,其实是 C!(终局前揭示)
194
196
  ```
195
197
 
196
198
  **执行要求**:
@@ -201,17 +203,17 @@
201
203
  示例:
202
204
  ```
203
205
  铺垫:丈夫出轨了,妻子收集证据准备离婚
204
- 第一层(70%):丈夫没出轨,那女人是他线人——他在调查妻子的公司
205
- 第二层(90%):妻子公司确实有问题;举报人换成妻子自己,丈夫只是被引导发现
206
+ 第一层:丈夫没出轨,那女人是他线人——他在调查妻子的公司
207
+ 第二层:妻子公司确实有问题;举报人换成妻子自己,丈夫只是被引导发现
206
208
  ——她故意让丈夫发现,只有丈夫「不经意」揭发她才能拿到保险赔偿
207
209
  ```
208
210
 
209
211
  ### 三层嵌套(慎用)
210
212
 
211
- **使用条件**:只有15000字以上能装下三层。
213
+ **使用条件**:只有篇幅、线索容量和情绪结算空间都足够时才用;多数短篇优先把一至两层做透。
212
214
 
213
215
  **执行要求**:
214
- - 间隔递减:第一层50-60%,第二层75-80%,第三层90-95%
216
+ - 间隔通常递减,但按小节功能和结算欠账定位,不套固定全文百分比
215
217
  - 第三层必须最短最狠——一句话就够
216
218
  - 最后一层必须回答前面所有疑问
217
219
  - 每层都要有情感冲击,不只是信息冲击
@@ -221,23 +223,23 @@
221
223
 
222
224
  ## 反转时机
223
225
 
224
- ### 最佳揭示位置
226
+ ### 揭示位置判断
225
227
 
226
- | 反转类型 | 最佳位置 | 原因 |
227
- |----------|----------|------|
228
- | 身份反转 | 65-75% | 留够时间展示身份变化后的新冲突 |
229
- | 视角反转 | 70-80% | 需要足够篇幅建立错误认知 |
230
- | 动机反转 | 75-85% | 动机要在角色做出关键选择前揭示 |
231
- | 时间线反转 | 80-90% | 时间线需要最长铺垫 |
232
- | 信息反转 | 70-80% | 揭示后需要展示连锁反应 |
233
- | 认知反转 | 75-90% | 感情色彩要全程积累够才翻得动 |
228
+ | 反转类型 | 揭示前必须积累什么 | 揭示后必须留下什么 |
229
+ |----------|-------------------|-------------------|
230
+ | 身份反转 | 表面身份成立且行为有裂缝 | 新身份带来的选择与关系后果 |
231
+ | 视角反转 | 单一视角已形成稳定误判 | 另一视角触发的新行动 |
232
+ | 动机反转 | 表面动机能解释大多数行为 | 真动机导致的关键选择 |
233
+ | 时间线反转 | 两套顺序都能回看成立 | 时间重排后的责任变化 |
234
+ | 信息反转 | 错误事实已真正影响决策 | 纠错后的连锁反应 |
235
+ | 认知反转 | 感情色彩已经积累 | 关系判断和情绪结算 |
234
236
 
235
- ### 时机铁律
237
+ ### 时机原则
236
238
 
237
- - 禁止在50%之前揭示——铺垫不够,反转没力度
238
- - 禁止在95%之后揭示——揭示后没有展开空间
239
- - 最优区间:70-85%
240
- - 双反转:第一个在55-65%,第二个在80-90%
239
+ - 用功能而非固定百分比定位:先让误判参与至少一次重要决策,再揭示。
240
+ - 揭示不能晚到只剩解释;必须给行动、关系或代价留出结算空间。
241
+ - 双层反转间至少发生一次基于阶段答案的新行动,否则只是连续口供。
242
+ - 平台付费断点优先卡在未完成动作、证据归属变化或两难选择。先选一个主断点,再按载体需求选择少量支撑断点,不把每节都标成强钩子。
241
243
 
242
244
  ---
243
245
 
@@ -282,10 +284,14 @@
282
284
  - [ ] 揭示方式自然,不靠角色大段独白解释
283
285
 
284
286
  ### 节奏
285
- - [ ] 反转揭示不超过300字(快速、干脆)
287
+ - [ ] 反转揭示以一个集中场景完成,长度服从证据复杂度,不靠长篇口供拖延
286
288
  - [ ] 揭示后有足够篇幅展示反转影响
287
289
  - [ ] 反转后结尾在反转产生的情绪上收束
288
290
 
291
+ ### 逐节落表
292
+
293
+ 设计完成后,用一张表检查每节的 `功能 / 新证据或误判 / 主动者 / 节尾钩子 / 是否主付费点`。没有改变证据归属、嫌疑判断、关系立场或风险等级的节,应合并或改写;强钩子只标真正改变读者预期的节点。
294
+
289
295
  ---
290
296
 
291
297
  ## 常见反转错误
@@ -1,4 +1,4 @@
1
- # 悬念编排操作手册
1
+ # 短篇悬念编排
2
2
 
3
3
  悬念构建、强度分级、多线周期、分层钩子、期待接力、震惊分层的完整操作指南。
4
4
 
@@ -8,9 +8,9 @@
8
8
 
9
9
  | 你在写什么 | 用什么方法 |
10
10
  |------------|------------|
11
- | 设计悬念体系 | 多线悬念周期 + 强度5级分级 |
12
- | 单章悬念 | 四种信息顺序模板 + 触发型分层钩子 |
13
- | 跨卷悬念 | 期待接力法 + 震惊分层 |
11
+ | 设计悬念体系 | 主悬念/副悬念 + 强度5级分级 |
12
+ | 单节悬念 | 四种信息顺序模板 + 触发型分层钩子 |
13
+ | 全文悬念 | 期待接力法 + 震惊分层 |
14
14
  | 判断悬念强度 | 强度5级分级表 |
15
15
 
16
16
  使用方法:先看左列定位你的当前任务,再用右列指定的方法。
@@ -28,7 +28,7 @@
28
28
  | 维度 | 悬念 | 伏笔 |
29
29
  |------|------|------|
30
30
  | 目的 | 让读者猜测接下来会怎样 | 为后面的揭示埋下前期线索 |
31
- | 位置 | 章节结尾/段落结尾 | 叙事中自然带出 |
31
+ | 位置 | 小节结尾/段落结尾 | 叙事中自然带出 |
32
32
  | 揭示时机 | 短期内揭晓 | 长期后才揭示 |
33
33
  | 情绪效果 | 紧张/好奇/期待 | 震惊/恍然大悟 |
34
34
 
@@ -47,7 +47,7 @@
47
47
 
48
48
  ### 触发型钩子(分层钩子)
49
49
 
50
- 单章内多层递进悬念,按以下步骤操作:
50
+ 单节内多层递进悬念,按以下步骤操作:
51
51
 
52
52
  ```
53
53
  第1层:展示初步成果 → 观众初步反应
@@ -64,27 +64,27 @@
64
64
 
65
65
  | 等级 | 名称 | 效果 | 适用 |
66
66
  |------|------|------|------|
67
- | 1 | 微悬念 | 好奇 | 过渡章 |
68
- | 2 | 小悬念 | 想看下一段 | 正文章 |
69
- | 3 | 中悬念 | 想看下一章 | 关键章 |
70
- | 4 | 大悬念 | 放不下书 | 爆发章 |
71
- | 5 | 极悬念 | 睡不着 | 卷末高潮 |
67
+ | 1 | 微悬念 | 好奇 | 过渡节 |
68
+ | 2 | 小悬念 | 想看下一段 | 推进节 |
69
+ | 3 | 中悬念 | 想看下一节 | 关键节 |
70
+ | 4 | 大悬念 | 愿意付费继续 | 付费断点/爆发节 |
71
+ | 5 | 极悬念 | 必须知道真相 | 终局前 |
72
72
 
73
- 使用方法:写完每章后对照此表判断悬念等级。过渡章至少要达到1级,正文章至少2级,关键章至少3级。不达标则需要补强。
73
+ 使用方法:用此表描述当前悬念效果,不给每类小节设置最低等级。若连续多个叙事单元既没有未完成动作、身份/证据变化、两难选择,也没有局部兑现或明确下一步,再检查牵引是否中断;付费点须由真实变化形成,不靠空喊危险。
74
74
 
75
75
  ---
76
76
 
77
- ## 多线悬念周期
77
+ ## 短篇悬念层级
78
78
 
79
- | 弧线长度 | 跨度 | 示例 |
80
- |----------|------|------|
81
- | 短弧 | 2-3 章 | 一场打斗、一次冲突 |
82
- | 中弧 | 5-8 章 | 一段关系变化、一个小谜题 |
83
- | 长弧 | 整卷 | 终极秘密、主线大反转 |
79
+ | 层级 | 跨度 | 示例 |
80
+ |------|------|------|
81
+ | 即时钩子 | 当前段到下一段 | 一条证据、一句没说完的话 |
82
+ | 节间钩子 | 1-2 节 | 一次取证、关系异常或行动后果 |
83
+ | 全文主悬念 | 开篇到终局 | 谁在操盘、角色真正隐瞒了什么 |
84
84
 
85
- 规划时同时铺设三种弧线,保证任何时刻都有至少两条悬念线在运行。
85
+ 全文保持一个主悬念,最多搭配一个副悬念。副悬念必须给主悬念提供证据、误导或情绪代价,不另开长篇式支线。
86
86
 
87
- ### 三段钩子设计(单章内)
87
+ ### 三段钩子设计(单节内)
88
88
 
89
89
  按章节进度分配悬念节奏:
90
90
 
@@ -92,7 +92,7 @@
92
92
  2. **养**(中 50%):逐步加压,让读者意识到不对劲
93
93
  3. **收**(末 20%):引爆或延迟引爆
94
94
 
95
- 延迟引爆 = 比引爆更强的钩子,用于拉到下一章。
95
+ 延迟引爆 = 比当前答案更强的问题,用于拉到下一节;终局前不得靠无关新谜题续命。
96
96
 
97
97
  ---
98
98
 
@@ -106,9 +106,9 @@
106
106
 
107
107
  ### 持续拉期待操作框架
108
108
 
109
- 1. 每章结尾必须有至少一个未解的问题或未达成的期待
110
- 2. 期待分三层同时运作:短期(下章)、中期(本卷)、远期(全书)
111
- 3. 当一层即将满足时,先铺好下一层的期待,形成"期待链"不断裂
109
+ 1. 关键节结尾必须有至少一个未解的问题、未完成动作或关系变化;呼吸节可用弱钩子,不机械强卡。
110
+ 2. 期待分两层运作:短期(下一节/付费点)与全文(终局真相或关系结算)。
111
+ 3. 当短期问题解决时,答案必须推进全文主悬念,不能只换一个同级谜语。
112
112
 
113
113
  ### 不间断期待与钩子链
114
114
 
@@ -318,15 +318,15 @@
318
318
 
319
319
  ### 章末断章留悬念
320
320
 
321
- 每章结尾让人物面临未解决的危险,读者不得不回来。
321
+ 章末牵引可以来自未完成动作、身份/证据变化、两难选择、关系变化或局部兑现后的新后果;不要求每章都制造危险。
322
322
 
323
323
  ### 时间锁
324
324
 
325
325
  故事前期设置必须在限定时间内发生的事件,压缩时间增强紧张感。
326
326
 
327
- ### 期待 > 爽点
327
+ ### 期待与兑现并行
328
328
 
329
- 铺垫期待远比展现爽点更重要。爽是释放过程,不是情绪本身——紧张/好奇/担忧/愤怒/憋屈比"爽"更持久。长篇关键 = 延迟满足。
329
+ 短篇没有无限延迟满足的篇幅。每次延迟都要支付一笔可见收益:新证据、关系撕裂、误判修正或一次局部反击;连续两节只抬问题不交答案,会让读者感觉拖延。
330
330
 
331
331
  ### "麻烦消失"是失去读者的根本原因
332
332
 
@@ -336,17 +336,17 @@
336
336
 
337
337
  ## 质量检查清单
338
338
 
339
- 写完每一章/每一卷后,逐项检查:
339
+ 写完每一节/全文后,逐项检查:
340
340
 
341
- - [ ] **悬念等级达标**:对照强度5级分级表,本章悬念等级是否符合章节定位
341
+ - [ ] **悬念等级达标**:对照强度5级分级表,本节悬念等级是否符合小节功能
342
342
  - [ ] **期待链不断裂**:是否至少有一条未解的期待线在运行
343
343
  - [ ] **角色反应到位**:每个悬念点是否有角色反应来验证力度
344
344
  - [ ] **信息差存在**:读者与角色之间、角色与角色之间是否有信息差
345
- - [ ] **章末有钩子**:每章结尾是否有至少一个未解决的问题或未达成的期待
345
+ - [ ] **节末有钩子**:关键节结尾是否有未解决问题、未完成动作或关系变化;弱节是否至少有明确承接
346
346
  - [ ] **下行力度适中**:挫折是否控制在"小波折"范围,没有导致节奏断裂
347
347
  - [ ] **震惊有层次**:震惊是否从点 → 网 → 深度递进,而非一次性爆发
348
348
  - [ ] **道具变化可视化**:震惊递进是否有明确的视觉/物理变化支撑
349
349
  - [ ] **爽感递增**:每次释放后的爽感是否比上一次更强
350
350
  - [ ] **麻烦没有消失**:主角解决问题后是否有新的困境或挑战出现
351
- - [ ] **多线并行**:是否保持至少两条期待线同时运行
351
+ - [ ] **主副线克制**:是否只有一个全文主悬念,副悬念是否服务主线而非扩成新故事
352
352
  - [ ] **底牌有压制**:展示底牌后反派是否受到对应压制
@@ -30,7 +30,7 @@
30
30
 
31
31
  正文写作采用「通用正文要求 + 题材正文提示卡 + 本书文风」三件套,不再为每个题材复制一整套正文 prompt。
32
32
 
33
- - **通用正文要求**由 `story-long-write` Phase 4 负责:严格消费细纲,按情节点预算写,缓慢推进,不提前写后续剧情,完成字数/钩子/禁用词/退化校验。
33
+ - **通用正文要求**由 `story-long-write` Phase 4 负责:严格消费细纲,按情节点义务写,缓慢推进,不提前写后续剧情,完成确定性字数/钩子/禁用词/退化校验。
34
34
  - **题材正文提示卡**只管题材层的稳定核心:世界观或生活逻辑、读者期待、核心爽点/情绪、节奏密度、场景颗粒、禁止漂移。项目优先从 `genre-prose-cards.md` 索引匹配,再读取 `genre-prose-cards/{题材}.md` 单卡,本文件只作通用流派补充。
35
35
  - **本书文风**来自 `设定/文风.md` 或对标 `文风.md`:只管句长、标点、潜台词、锚点片段和笔调,不覆盖题材核心与章节意图。
36
36
  - 三者冲突时:章节细纲与连续性 > 题材正文提示卡 > 本书文风 > 通用技巧建议。