@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
@@ -127,22 +127,22 @@
127
127
 
128
128
  ### 情绪操控高级技法
129
129
 
130
- 1. **阶梯式背叛**:每一章揭露一个更大的背叛(道德→经济→生命)
131
- 2. **冷热对比法**:主角越冷,对方越歇斯底里,反差越大越爽
130
+ 1. **阶梯式背叛**:让背叛在类别、代价或关系后果上升级(道德→经济→生命);相关揭露可在同一证据链汇合,不按章配额
131
+ 2. **冷热对比法**:用筹码、选择和行动后果形成反差;角色情绪服从现场,不强制主角冷、对方歇斯底里
132
132
  3. **双面人剥皮术**:先写表面好,再层层剥开真相(复制粘贴的关心模板)
133
- 4. **前世记忆穿插法**:每章穿插一小段前世回忆,让读者理解"反常行为"
134
- 5. **审判式对话**:主角永远在提问、永远在审判、永远居高临下
133
+ 4. **前世记忆穿插法**:只在前世记忆会改变当下判断、选择或信息时穿插,不按章配回忆
134
+ 5. **审判式对话**:只在提问能迫使对方选择、暴露矛盾或改变关系时使用;没有筹码的连续审问会变成模板
135
135
 
136
136
  ### 结构创新技法
137
137
 
138
- 1. **超短章节制**:每章500-1000字,每章一个小爆点,适合手机阅读
138
+ 1. **短章推进**:小节通常偏短,长度服从完整动作链;让爆点、选择、信息或后果持续前推,不设逐章字数和爆点配额
139
139
  2. **线索物贯穿法**:一个物件贯穿全文,承载情绪+剧情双重功能
140
140
  3. **时空对照法**:同一时间两个空间对比(哥哥被打vs渣男给小三挑飞机)
141
141
  4. **定时炸弹式证据**:主角生前设置的自动发送证据,关键时刻引爆
142
142
 
143
143
  ### 回旋镖布局
144
144
 
145
- 把"因果报应"落到写作上:写前期男主每件施害、每句狠话时,顺手在伏笔回查清单记一笔;后期逐条原样还回去——同场景、同台词、攻守对调。这是 `reversal-toolkit.md` 报应兑现型在写作端的做法,与伏笔回收合用;对得准比还得多更重要。
145
+ 把"因果报应"落到写作上:写前期男主每件施害、每句狠话时,顺手在伏笔回查清单记一笔;后期逐条原样还回去——同场景、同台词、攻守对调。这是 `short-reversal.md` 报应兑现型在写作端的做法,与伏笔回收合用;对得准比还得多更重要。
146
146
 
147
147
  | 前期(埋) | 后期(还) |
148
148
  |-----------|-----------|
@@ -157,11 +157,13 @@
157
157
  3. **大长镜头式**:主角一步步走向大门,身后所有人震惊
158
158
  4. **反讽对位式**:用反派视角写最讽刺的结局——漠视比报复更有力
159
159
 
160
- ### 对话密度与功能
160
+ ### 对话功能与边界
161
161
 
162
- | 平台 | 对话占比 | 功能分布 |
163
- |------|----------|----------|
164
- | 知乎盐言 | 50-60% | 情绪推动40%、信息揭露35%、人物塑造25% |
162
+ | 场景倾向 | 对白主要作用 | 无对白时的推进引擎 |
163
+ |----------|--------------|--------------------|
164
+ | 情绪拉扯 / 关系博弈 | 改变信息、策略、权力、关系或下一步行动 | 选择、物件、证据、空间距离或行动后果 |
165
+
166
+ 对白占比只作同题材、同平台样本的观察数据,不设全文通过阈值。对白驱动场景可以密,核验证据、手艺、等待、悬疑观察等场景可以少或没有对白。
165
167
 
166
168
  ### 核心金句模板
167
169
 
@@ -174,18 +176,18 @@
174
176
  | 最终漠视 | "那是他们的故事了,与我再无瓜葛。" |
175
177
  | 讽刺审判 | "你三十三岁了,不是十三岁。一句被迷惑,就能把责任推干净?" |
176
178
 
177
- ### 短篇写作硬性规范
179
+ ### 短篇写作边界
178
180
 
179
181
  | 规范 | 要求 | 违规示例 |
180
182
  |------|------|----------|
181
183
  | 开头100字内冲突 | 第一句就是信息炸弹 | "在一个阳光明媚的早晨..." |
182
- | 对话占正文45-65% | 每个对话推进剧情或揭示性格 | 大段独白/旁白 |
183
- | 每段不超过3句话 | 1句强调,2-3句正常,4句+拆分 | 超过4句的段落 |
184
+ | 对白服从场景功能 | 改变信息、策略、权力、关系或行动 | 为抬高占比补问答、复述或无效狠话 |
185
+ | 段落服从戏剧单元 | 一件事、一个镜头或一条推理链完成再断段 | 按句数强拆,形成提纲体或电报体 |
184
186
  | 情绪词后接具体动作 | 直写情绪成语,后面接一个场景里的具体动作或物件(见 short-craft 第2节),只删后面接不上具体东西的情绪总结句 | 《为给白月光出气,男友群发我私密照》我紧紧抿着嘴唇,直到尝到血腥味 |
185
- | 每个场景两个功能 | 推进+揭示 / 铺垫+推高 / 呈现信息 | 单功能场景删除 |
187
+ | 场景产生真实变化 | 改变风险、信息、关系、资源、决定、行动或读者理解之一 | 为凑多功能添加旁人反应、回忆或独立障碍 |
186
188
  | 结尾用动作/对话 | 不升华、不总结、不感慨 | "从此以后她明白了..." |
187
- | 主角有标志性动作 | 复仇型端水杯;系统型吐槽面板 | 无辨识度 |
188
- | 每章一个信息炸弹 | 改变读者认知的新信息 | 章尾无新信息 |
189
+ | 主角有辨识度 | 冷静落在取证、选择、延迟回应或资源调度上;用本篇独有的动作,不套通用标志 | 端水杯、整理西装、转笔等通用动作当必备项,或全篇无辨识度 |
190
+ | 信息与后果持续前推 | 新信息、行动、关系变化、局部兑现或后果均可承接 | 为逐章达标另造信息炸弹 |
189
191
 
190
192
  **结尾三种黄金模式**:A. 反派视角收尾;B. 开放式暗示;C. 仪式感收场。
191
193
 
@@ -477,12 +479,12 @@
477
479
  写作时对照:
478
480
 
479
481
  - [ ] 开头 100 字内有信息炸弹(不是风景/天气)?
480
- - [ ] 每个场景至少两个功能(推进+揭示 / 铺垫+推高)?
482
+ - [ ] 每个场景都改变了风险、信息、关系、资源、决定、行动或读者理解之一?
481
483
  - [ ] 情绪是否通过锚点触碰读者内心,而非直接描写出来?
482
484
  - [ ] 震惊场景有落差铺垫(先建立角色原有认知再打破)?
483
485
  - [ ] 感情线推进没跳阶段(熟悉→试探→暧昧→确认)?
484
486
  - [ ] 反派 flag 必收、主角 flag 不收或搞笑收?
485
487
  - [ ] 视角控制在 2-3 个(不超过 3)?
486
- - [ ] 对话占正文 45-65%,每句对话推剧情或揭示性格?
488
+ - [ ] 对白是否改变信息、策略、权力、关系或行动;无对白场景是否有其他清晰推进引擎?
487
489
  - [ ] 结尾用动作/对话收(不升华、不总结、不感慨)?
488
490
  - [ ] 没有"该爽不爽"的段落(金手指效果展示清楚)?
@@ -111,7 +111,7 @@ Stage 6 内容写完后、`stages_completed[6]` append 前,跑三道检查:
111
111
  | `structure_counts.reversal_type` | 在枚举内(含「无反转」)| 阻断 |
112
112
  | `genre_detected` | 非空 | 阻断 |
113
113
 
114
- > 情节节点数(15-60 个,按字数分档)走 `情节节点.md` 自己的密度校验(见 material-decomposition.md),不在本表。`beats` 是结构段数,不是情节节点数。
114
+ > 情节节点数不设阈值,按 `情节节点.md` 的语义变化边界提取(见 material-decomposition.md),不在本表。`beats` 是结构段数,不是情节节点数。
115
115
 
116
116
  ### Step 3:`story-short-analyze` BLOCK 项扫描
117
117
 
@@ -61,13 +61,13 @@
61
61
 
62
62
  按平台两套节奏:
63
63
 
64
- | 平台 | 小节标记 | 段落 | 单节字数 |
64
+ | 平台 | 小节标记 | 段落 | 篇幅倾向 |
65
65
  |------|----------|------|----------|
66
- | 黑岩 | `###` + 数字(`###1.`) | 段落短、多换行留白 | 800-1200 |
67
- | 番茄 / 七猫 | `###第N章` 或 `###1.` | 短段为底色,允许多句回溯叙述段交织对话 | 1000-2000(古言 2000-4000) |
66
+ | 黑岩 | `###` + 数字(`###1.`) | 段落短、多换行留白 | 小节偏短,长度服从炸点或行动链是否完整 |
67
+ | 番茄 / 七猫 | `###第N章` 或 `###1.` | 短段为底色,允许多句回溯叙述段交织对话 | 可承载较完整场景,古言因礼制、空间与关系动作通常更展开;均不设单节硬线 |
68
68
 
69
- - 每个小节:**一个背叛升级 / 一次态度反转 + 一句更狠的台词 + 一条读者新获知信息**。
70
- - 章尾**不收束情绪、必留钩**。
69
+ - 每个小节围绕一个主问题推进:背叛升级、态度反转、读者新获知信息、行动或后果至少发生一项真实变化;相关变化可由同一动作链同时完成,不强配狠话。
70
+ - 章尾按当前职责落在未完成动作、新信息、局部兑现、关系变化或明确下一步;不强制每节同一种悬钩。
71
71
  - **疏密**:背叛 / 打脸 / 反转 / 决裂处详写慢放,逐拍展开;过场 / 赶路 / 信息交代一句带过,把字数预算让给情绪节点。
72
72
  - 任务卡点必须服务“一次背叛升级 / 一次态度反转 / 一条新信息”,不能单独变成生活流程;没有情绪或证据收益就不写。
73
73
 
@@ -75,17 +75,17 @@
75
75
 
76
76
  ## 5. 钩子:极高密度,阶梯式背叛
77
77
 
78
- - 导语 50-300 字塞 3-5 个事件 / 反转;正文几乎每节一个新爆料或一次态度反转;黑岩密到每 3-5 句一拐。
78
+ - 导语 50-300 字塞 3-5 个事件 / 反转;正文让爆料、态度、行动或后果持续变化。连续多个单元不变再查停滞,不为逐节达标塞障碍。
79
79
  - **阶梯式升级**:道德踩踏 → 经济 → 生命,越揭越大。一页里敢叠多重雷(绝症骗局 + 当众拥吻 + 孩子药引…),别单点反复抒情。
80
- - **爽点章章前推**:每章必须推进一个反打 / 行动 / 亮牌(扇耳光、取消婚礼、删 B 超单转身走、当众揭穿、亮身份),不要停在情绪闭环;章尾留反杀预告(「已联系律师」「已查到他的致命把柄」),制造追读缺口。读者要的是「下一章想看她怎么打脸」。
80
+ - **爽点持续前推**:连续若干叙事单元应能看到反打、行动、亮牌或后果,不要长期停在同一情绪闭环;章尾可用反杀预告、局部兑现、关系变化或明确的下一步制造追读缺口,不要求每章同一种炸点。
81
81
  - **当众围观放大羞辱**:把背叛 / 打脸放在有外人见证的场合(宴席、股东会、群聊截图、请安),用众人的起哄 / 鄙夷 / 沉默放大屈辱与出气感;独角戏起不来「丢脸感」。
82
82
  - 共通钩子母题(题材包细化):白月光 / 小青梅触发背叛、偷听 / 撞破真相一次性砸、灾难期求救反被辱、朋友圈 / 物证坐实、数字 / 年限承重再清零、身份反差底牌、当众羞辱 + 反转倒计时。
83
83
 
84
84
  ---
85
85
 
86
- ## 6. 对话:占比高,三类台词撑全篇
86
+ ## 6. 对话:按场景功能调节,三类台词承压
87
87
 
88
- - 占比约 40-60%(盐言 / 黑岩打脸篇可到 60%;抒情虐 / 心死篇可低到 30-40%)。**按情绪驱动还是事件驱动浮动,不设死线。**
88
+ - 对白驱动的关系博弈、审判和打脸场景可以密;抒情、心死、证据核验、手艺、等待或悬疑观察场景可以少或没有对白。全文不设占比目标,只保留会改变信息、策略、权力、关系或行动的台词。
89
89
  - 三类台词:① 施害者道德踩踏 / PUA 狠话(钩子本体,越理直气壮越好);② 白月光「娇弱委屈」软刀(对不起 / 我不是故意的 / 都怪我);③ 主角心死后冷静审判金句。
90
90
  - 权力博弈靠对话长度反转标记:施害方前期长篇 PUA,主角后期一句话冷怼。详见 `dialogue-mastery.md`。
91
91
 
@@ -121,7 +121,7 @@
121
121
  | 维度 | 长篇规则 | 短篇底座 |
122
122
  |------|----------|----------|
123
123
  | 视角 | 深度限知、不剧透 | 第一人称在场、主动剧透火葬场 |
124
- | 情绪 | 身体动作替代情绪词 | 情绪词直接写 + 后接具体反应 |
124
+ | 情绪 | 不设固定译法,按场景落到选择/台词/后果,必要时直写 | 情绪可直给;不强接身体反应 |
125
125
  | 章尾 | 禁总结 / 升华 / 预告 | 审判金句 / 火葬场预告是卖点 |
126
126
  | 结构 | 贯穿道具三次 / 数字阶梯 | 偷听 / 底牌 / 回旋镖 / 次数累积 |
127
127
  | 内心 | 独白 ≤ 2 段 | 成段宣泄独白 + 连环反问是主引擎 |
@@ -131,15 +131,15 @@
131
131
 
132
132
  ## 10. 场景写法:三维度揉进
133
133
 
134
- 每个子事件不是一句话就完,包含三个维度,**织进同一段连续正文,不按维度分段**:
134
+ 发生、感知、反应是可选信息维度,不是逐段配额。关键子事件只把确有新信息的维度**织进同一段连续正文,不按维度分段**;上下文已清楚时可以留空:
135
135
 
136
136
  | 维度 | 内容 | 要点 |
137
137
  |------|------|------|
138
138
  | 发生 | 事情出现了 | 1-2 句,含一个具体细节 |
139
- | 感知 | 主角注意到什么 | 至少 1 个感官细节,聚焦一个物件或身体部位 |
140
- | 反应 | 身体如何回应 | 具体身体动作(手 / 眼 / 呼吸 / 姿势),可含一句极短心理定格 |
139
+ | 感知 | 主角注意到什么 | 只取会改变理解、判断或气氛的声音、物件、空间或身体感受,不按感官凑数 |
140
+ | 反应 | 角色接下来怎么办 | 选择、台词、策略、任务动作、明确感受或有后果的身体变化;不默认补手/眼/呼吸微动作 |
141
141
 
142
- 任务卡点也按三维度揉进:发生 = 事情办不下去;感知 = 主角看到、摸到或听到卡住的具体证据;反应 = 当场更冷、更怒、更心死,或立刻改用下一步反击。不要把流程单独写成说明段,也不要在场景末尾补动作尾巴解释意义。
142
+ 任务卡点也按需取三维:发生 = 事情办不下去;感知 = 主角看到、摸到或听到卡住的具体证据;反应 = 当场判断、选择或下一步反击。不要把流程单独写成说明段,也不要在场景末尾补动作尾巴解释意义。
143
143
 
144
144
  反模式(绝对禁止):把三维度拆成三段依次写完,同一件事掰开写三遍。
145
145
 
@@ -150,7 +150,7 @@
150
150
 
151
151
  ---
152
152
 
153
- ## 11. 疏密分配 + 一动一静
153
+ ## 11. 疏密分配 + 动静起伏
154
154
 
155
155
  **疏密**:不要每个 beat 一样长一样细(平均用力是 AI 腔的根)。
156
156
 
@@ -160,7 +160,7 @@
160
160
  | 过场 / 赶路 / 信息交代 / 时间跳转 | 疏(1-2 句带过,不展开三维度) |
161
161
  | 铺垫 / 日常 / 关系升温 | 中(挑一两个有代入感的细节写实,其余略) |
162
162
 
163
- **一动一静**:动作冲击段后接安静感知段。情绪最高点(打脸 / 反转)用「动」,最低点(心死 / 余韵)用「静」。不连续 2 节全动(暴力疲劳),不连续 2 节全静(拖沓)。
163
+ **动静有起伏**:整篇要有推进与停顿,但不要求动作冲击后固定接一段安静感知。停顿可以是信息悬置、对话空白、等待或环境压力,不用微动作填格。避免长时间全动造成疲劳,也避免长时间全静造成拖沓。
164
164
 
165
165
  **主语节奏**:段首 / 场景切换 / 多人同场用主角名建立主语;同一动作链内用代词 / 省略流动;关键转折再点名。避免连续多句都以同一主角名开头。
166
166
 
@@ -180,6 +180,6 @@
180
180
  ## 配套通用技法(这些文件保留,按需取用)
181
181
 
182
182
  - 对话权力博弈、潜台词、弹幕递进:见 `dialogue-mastery.md`。
183
- - 反转类型、嵌套反转、打脸节奏:见 `reversal-toolkit.md`。
184
- - 章首 / 章尾钩子模板:见 `hooks-chapter.md` / `hooks-paragraph.md` / `hooks-suspense.md`。
183
+ - 反转类型、嵌套反转、打脸节奏:见 `short-reversal.md`。
184
+ - 章首 / 章尾钩子模板:见 `hooks-chapter.md` / `hooks-paragraph.md` / `short-suspense.md`。
185
185
  - 情感三板斧(羁绊铺设 / 情感撕裂 / 余韵钝痛):见 `emotional-methods.md`。
@@ -122,7 +122,7 @@
122
122
  - [ ] **一个情绪只写一次**,没有写完再补一句解释它多疼
123
123
  - [ ] **在场叙述保留**:第一人称审判句 / 剧透 / 火葬场预告在,没误删
124
124
  - [ ] **没有中立的作者讲解**(和角色情绪无关、纯交代的句子)
125
- - [ ] **章尾有钩或有判**:审判金句 / 火葬场预告 / 心死余韵在;没有空洞哲理升华
125
+ - [ ] **章尾按职责承接**:审判金句、火葬场预告、心死余韵、局部兑现、关系变化或明确下一步择其自然者;没有空洞哲理升华
126
126
  - [ ] **章尾没为工整收口**:没凑对仗 / 排比 / 押韵 / 抖机灵的总结
127
127
  - [ ] **每篇写法不雷同**:招式、开头、结尾和上一篇不一样
128
128
  - [ ] **三连排比有内容**:每条带新信息;凑数的砍掉
@@ -26,8 +26,8 @@
26
26
 
27
27
  ### 黑岩:一句一段,留白快读
28
28
 
29
- - 一句一段为主,多换行制造下坠和停顿感。
30
- - 节奏密,每节体量小,节尾必留钩。
29
+ - 一句一段为主,靠频繁断行制造下坠和停顿感;段与段之间仍只有一个换行符。
30
+ - 节奏偏密、小节体量通常较小;节尾可用未完成动作、新信息、局部兑现或明确下一步承接,不强制每节另造悬钩。
31
31
  - 单句成段是常态,不要为了「凑够字数」把句子焊回长段。
32
32
 
33
33
  模板示意:
@@ -36,11 +36,8 @@
36
36
  ###1.
37
37
 
38
38
  我们家有个规矩,每年清明节都要拜"福祸盘"。
39
-
40
39
  一个盘子,一半装着山珍海味,一半盛着清汤寡水。
41
-
42
40
  哥哥抽中了肉,爸妈奖励他一个大红包。
43
-
44
41
  轮到我,我再次抽中了那碗清汤。
45
42
  ```
46
43
 
@@ -56,9 +53,7 @@
56
53
  ###第一章
57
54
 
58
55
  我把热汤端到他面前的时候,他正低头看手机,屏幕亮着白月光的名字。三年了,我以为熬过了最难的日子,原来熬的只是我自己。
59
-
60
56
  "以后这种事不用你做。"他头也没抬,"她不喜欢闻油烟味。"
61
-
62
57
  我端着碗的手顿了一下。
63
58
  ```
64
59
 
@@ -105,6 +100,41 @@
105
100
 
106
101
  ---
107
102
 
103
+ ## 字数统计
104
+
105
+ 每节写完、全文交付前都要用机器统计,不要模型估算。
106
+
107
+ ```bash
108
+ for PYBIN in python3 python py; do "$PYBIN" -c "" 2>/dev/null && break; done
109
+ "$PYBIN" -c "from pathlib import Path; print(len(Path('正文.md').read_text(encoding='utf-8')))"
110
+ ```
111
+
112
+ 各节分布(按小节标记切开,逐节报非空白字符数):
113
+
114
+ ```bash
115
+ "$PYBIN" -c "
116
+ import re
117
+ from pathlib import Path
118
+ pat = re.compile(r'###\s*\d+\.|###\s*第[一二三四五六七八九十百千万两〇零0-9]+章|\d+\.')
119
+ cur, buf, out = None, [], []
120
+ for line in Path('正文.md').read_text(encoding='utf-8').splitlines():
121
+ if pat.fullmatch(line.strip()):
122
+ out.append((cur, buf)); cur, buf = line.strip(), []
123
+ else:
124
+ buf.append(line)
125
+ out.append((cur, buf))
126
+ for name, body in out:
127
+ if name is not None:
128
+ print(name, len(''.join(''.join(body).split())))
129
+ "
130
+ ```
131
+
132
+ 分布只用来定位异常节:某节明显短于相邻节时,回大纲核对该节批准的情节点、动作和后果是否已经写完;写完就保留,不为拉齐长度补戏。
133
+
134
+ 不要直接调 `python3`:Windows 上它会落到 Microsoft Store 占位程序并以 exit 49 静默失败,上面的探测按 `python3→python→py` 选出真正可用的解释器。`wc -m` 只作 macOS / Linux 备选,禁止 `wc -c`(那是字节数)。全文交付口径以 `scripts/check-delivery-contract.js` 的非空白字符为准。没有 Bash / Python 权限时必须声明“未完成机器字数验证”,按行数速算作临时估计,不得声称已通过硬验证。
135
+
136
+ ---
137
+
108
138
  ## 标点硬约束
109
139
 
110
140
  **本仓库正文统一不出现 `……` / `——` / `—` / `--`**(去 AI 脚本与 hook 强制收口,项目级红线)。叙述、对话、心理描写一律适用,无对话例外。
@@ -149,7 +179,7 @@
149
179
  | 知乎盐言 | `1.`(纯数字) | `「」` | 短段 + 叙述交织 | 导语需单独标注 |
150
180
  | 番茄 | `###第N章` | `""` | 短段为底色,允许叙述交织对话 | 首段需有吸引力 |
151
181
  | 红果 | `###1.` | `""` | 短段为底色 | 无 |
152
- | 黑岩 | `###1.` | `""` | 一句一段,多换行留白 | 节尾必留钩 |
182
+ | 黑岩 | `###1.` | `""` | 一句一段,多换行留白 | 节尾按职责承接,不另造悬钩 |
153
183
 
154
184
  用户未指定平台时,默认短篇通用格式:`###1.` + `""` + 番茄系短段底色。
155
185
 
@@ -1,5 +1,5 @@
1
1
 
2
- # 网文质量检查清单
2
+ # 短篇成稿质量检查清单
3
3
 
4
4
  ## 目录
5
5
 
@@ -149,38 +149,39 @@
149
149
  ```
150
150
 
151
151
  检查规则:
152
- - 每 300 字至少 1 个小冲突
153
- - 虐点间隔不超过全文的 30%
154
- - 最大爽点必须出现在全文的 70-85% 位置
155
- - 结尾必须有情绪落点
152
+ - 每个场景或小节应改变风险、信息、关系、资源、决定、行动或读者理解之一,或让上一个选择的后果落地
153
+ - 压力可以来自任务、证据、等待、手艺、空间和关系,不把直接冲突当成固定字数配额
154
+ - 最大爽点放在前因汇合、主角选择和证据足以支撑的位置,并为后果留出篇幅;不按固定百分比挪动
155
+ - 结尾应有情绪落点、局部兑现或明确余波,不强制同一种收法
156
156
 
157
157
  ### 对话密度检查
158
158
 
159
- | 指标 | 合格标准 | 警戒线 |
160
- |------|----------|--------|
161
- | 对话占全文比 | 45-65% | <30%(太干)或>75%(太水) |
162
- | 每章对话条数 | 12-18条/千字 | <8条(缺交互)或>25条(碎片化) |
163
- | 伤人性对话占比 | 35-45%(虐文)/ 20-30%(爽文) | 虐文<20%(不够痛)/ 爽文>40%(太压抑) |
159
+ | 检查项 | 通过标准 | 需复核信号 |
160
+ |--------|----------|------------|
161
+ | 对白功能 | 改变信息、策略、权力、关系或下一步行动 | 删掉对白后场景没有任何变化 |
162
+ | 无对白场景 | 由任务、物件、证据、空间、等待或手艺推动 | 只有解释和情绪复述,没有可见动作或新信息 |
163
+ | 对话节奏 | 话轮长度服从人物权力和现场压力 | 连续微型问答、换说法重复、每句都配动作标签 |
164
+ | 对白占比/条数 | 只作同题材、同平台样本的观察数据 | 不设跨题材通过阈值,不为抬高占比补对白 |
164
165
 
165
- ### 主角冷静度检查(打脸/复仇文专用)
166
+ ### 主角筹码与情绪检查(打脸/复仇文专用)
166
167
 
167
- | 检查项 | 标准 |
168
- |--------|------|
169
- | 主角是否有标志性冷静动作? | 必须有(端水杯/整理西装/转笔等) |
170
- | 主角是否有情绪失控场面? | 复仇文最多1次,且必须在前30% |
171
- | 反派是否比主角更歇斯底里? | 必须是——反差是爽感来源 |
172
- | 主角台词是否短于反派? | 平均短30-50%——越短越有力 |
173
- | 是否有"审判式对话"? | 至少2处(主角提问→对方自爆) |
168
+ | 检查项 | 通过标准 |
169
+ |--------|----------|
170
+ | 主角的冷静是否可见? | 通过取证、选择、延迟回应或资源调度体现;不强配端水杯、整理西装、转笔等标志动作 |
171
+ | 情绪失控是否成立? | 次数和位置服从累积压力;失控必须改变行动、关系或代价,不按百分比禁用 |
172
+ | 主角与反派的反差来自哪里? | 来自筹码、判断、行动后果或信息差,不强制反派歇斯底里 |
173
+ | 台词长短是否体现权力? | 长短、打断、沉默和回避随现场筹码变化,不设固定比例 |
174
+ | 审判式对话是否必要? | 只在提问能迫使对方选择、暴露矛盾或改变关系时使用,不设最低处数 |
174
175
 
175
176
  ### 证据链完整性检查(复仇/打脸文专用)
176
177
 
177
178
  | 检查项 | 标准 |
178
179
  |--------|------|
179
- | 证据是否分章释放? | 至少分3次揭露,不能一次全给 |
180
+ | 证据是否按判断变化释放? | 每次释放都应改变行动或读者模型;完整证据链可在同一场景集中落地,不设次数 |
180
181
  | 每个证据是否有铺垫? | 前文必须埋过线索 |
181
- | 反派是否每次都先得意再被打脸? | 必须是——先扬后抑 |
182
+ | 反派反应是否有因果? | 由其筹码、误判和损失决定,不重复“先得意再被打脸”模板 |
182
183
  | 最终证据是否最致命? | 最后一个证据要改变全局认知 |
183
- | 是否有"定时炸弹"证据? | 至少1个主角提前布局的证据 |
184
+ | 是否需要"定时炸弹"证据? | 仅在提前布局符合主角能力、时间线和取证条件时使用 |
184
185
 
185
186
  ### 追妻/情绪流雷区检查(女频情绪流专用)
186
187