@oh-story/dsh 0.1.4 → 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 (479) hide show
  1. package/README.md +56 -12
  2. package/lib/client.js +2692 -268
  3. package/lib/client.js.map +4 -4
  4. package/lib/drama/manifest.json +136 -101
  5. package/lib/drama/skills/short-drama/SKILL.md +61 -1
  6. package/lib/drama/skills/short-drama/references/contract-and-ownership.md +7 -4
  7. package/lib/drama/skills/short-drama/references/creator-documents.md +133 -8
  8. package/lib/drama/skills/short-drama/references/creator-workflow.md +38 -2
  9. package/lib/drama/skills/short-drama/references/knowhow-index.md +3 -0
  10. package/lib/drama/skills/short-drama/references/reference-roles.md +10 -7
  11. package/lib/drama/skills/short-drama/references/runtime-preflight.md +3 -0
  12. package/lib/drama/skills/short-drama/scripts/creator_markdown_check.py +1002 -0
  13. package/lib/drama/skills/short-drama/scripts/project_tool.py +485 -5
  14. package/lib/drama/skills/short-drama-assets/SKILL.md +13 -3
  15. package/lib/drama/skills/short-drama-assets/references/continuity-lock.md +116 -0
  16. package/lib/drama/skills/short-drama-assets/references/identity-vs-variant.md +2 -1
  17. package/lib/drama/skills/short-drama-assets/references/prop-and-state.md +19 -0
  18. package/lib/drama/skills/short-drama-assets/references/stage-contract.md +2 -0
  19. package/lib/drama/skills/short-drama-assets/scripts/asset_check.py +1 -1
  20. package/lib/drama/skills/short-drama-image-prompts/SKILL.md +6 -2
  21. package/lib/drama/skills/short-drama-image-prompts/references/common-recipe.md +4 -3
  22. package/lib/drama/skills/short-drama-image-prompts/references/lookdev-frame.md +1 -1
  23. package/lib/drama/skills/short-drama-image-prompts/references/review-and-fixtures.md +1 -1
  24. package/lib/drama/skills/short-drama-image-prompts/references/stage-contract.md +3 -1
  25. package/lib/drama/skills/short-drama-image-prompts/scripts/image_prompt_check.py +8 -8
  26. package/lib/drama/skills/short-drama-image-prompts/scripts/selftest.py +4 -2
  27. package/lib/drama/skills/short-drama-produce/SKILL.md +46 -10
  28. package/lib/drama/skills/short-drama-produce/references/adapter-contract.md +65 -8
  29. package/lib/drama/skills/short-drama-produce/references/providers/minimax-h3-video.md +85 -0
  30. package/lib/drama/skills/short-drama-produce/references/providers/seedance.md +27 -10
  31. package/lib/drama/skills/short-drama-produce/scripts/production_tool.py +362 -3
  32. package/lib/drama/skills/short-drama-produce/scripts/provider_adapters.py +627 -40
  33. package/lib/drama/skills/short-drama-produce/scripts/selftest.py +5 -4
  34. package/lib/drama/skills/short-drama-review/references/rubric-visual-motion.md +12 -0
  35. package/lib/drama/skills/short-drama-review/scripts/review_check.py +1 -1
  36. package/lib/drama/skills/short-drama-storyboard/SKILL.md +76 -7
  37. package/lib/drama/skills/short-drama-storyboard/assets/shot-template.jsonl +1 -1
  38. package/lib/drama/skills/short-drama-storyboard/references/keyframe-craft.md +6 -2
  39. package/lib/drama/skills/short-drama-storyboard/references/production-shot-grammar.md +19 -4
  40. package/lib/drama/skills/short-drama-storyboard/references/review-and-fixtures.md +5 -2
  41. package/lib/drama/skills/short-drama-storyboard/references/screenplay-to-keyframe-example.md +16 -0
  42. package/lib/drama/skills/short-drama-storyboard/references/stage-contract.md +8 -3
  43. package/lib/drama/skills/short-drama-storyboard/scripts/storyboard_check.py +1 -1
  44. package/lib/drama/skills/short-drama-video-prompts/SKILL.md +81 -13
  45. package/lib/drama/skills/short-drama-video-prompts/assets/motion-spec.jsonl.md +6 -1
  46. package/lib/drama/skills/short-drama-video-prompts/assets/video-prompts.md +17 -1
  47. package/lib/drama/skills/short-drama-video-prompts/references/delivery-profile.md +21 -1
  48. package/lib/drama/skills/short-drama-video-prompts/references/minimax-h3.md +154 -0
  49. package/lib/drama/skills/short-drama-video-prompts/references/motion-recipe.md +24 -6
  50. package/lib/drama/skills/short-drama-video-prompts/references/production-prompt-grammar.md +11 -7
  51. package/lib/drama/skills/short-drama-video-prompts/references/seedance-2.0.md +41 -0
  52. package/lib/drama/skills/short-drama-video-prompts/references/seedance-2.5.md +66 -0
  53. package/lib/drama/skills/short-drama-video-prompts/references/stage-contract.md +5 -2
  54. package/lib/drama/skills/short-drama-video-prompts/references/target-model-profile.md +115 -0
  55. package/lib/drama/skills/short-drama-video-prompts/scripts/container_check.py +1 -1
  56. package/lib/drama/skills/short-drama-video-prompts/scripts/music_spec_check.py +1 -1
  57. package/lib/drama/skills/short-drama-write/SKILL.md +3 -2
  58. package/lib/drama/skills/short-drama-write/scripts/duration_estimate.py +1 -1
  59. package/lib/drama/skills/short-drama-write/scripts/screenplay_index.py +2 -2
  60. package/lib/drama/skills/short-drama-write/scripts/voice_sheet_check.py +1 -1
  61. package/lib/index.js +865 -33
  62. package/lib/index.js.map +4 -4
  63. package/lib/novel-to-game/LICENSE +21 -0
  64. package/lib/novel-to-game/README.md +180 -0
  65. package/lib/novel-to-game/README_ZH.md +178 -0
  66. package/lib/novel-to-game/VERSION +1 -0
  67. package/lib/novel-to-game/examples/jin-ping-mei/build/BUILD_BRIEF.md +217 -0
  68. package/lib/novel-to-game/examples/jin-ping-mei/build/app/.vercelignore +3 -0
  69. package/lib/novel-to-game/examples/jin-ping-mei/build/app/RUN.md +130 -0
  70. package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/bg/compound_new_guofeng.webp +0 -0
  71. package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/cg/finale/fate_coda.webp +0 -0
  72. package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/cg/finale/meng.webp +0 -0
  73. package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/cg/finale/pan.webp +0 -0
  74. package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/cg/finale/pinger.webp +0 -0
  75. package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/cg/finale/xuee.webp +0 -0
  76. package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/cg/finale/yue.webp +0 -0
  77. package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/cg/group/inner_court_accord_five.webp +0 -0
  78. package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/cg/group/inner_court_afterglow_five.webp +0 -0
  79. package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/cg/group/inner_court_alliance.webp +0 -0
  80. package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/cg/group/public_day10.webp +0 -0
  81. package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/cg/group/public_day15.webp +0 -0
  82. package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/cg/group/public_day5.webp +0 -0
  83. package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/cg/group/title_new_guofeng.webp +0 -0
  84. package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/cg/joint/pan_pinger.webp +0 -0
  85. package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/cg/joint/pan_xuee.webp +0 -0
  86. package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/cg/joint/yue_meng.webp +0 -0
  87. package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/cg/joint/yue_pan.webp +0 -0
  88. package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/cg/joint/yue_pinger.webp +0 -0
  89. package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/cg/meng/explicit.webp +0 -0
  90. package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/cg/meng/prelude.webp +0 -0
  91. package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/cg/milestone/meng.webp +0 -0
  92. package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/cg/milestone/pan.webp +0 -0
  93. package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/cg/milestone/pinger.webp +0 -0
  94. package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/cg/milestone/xuee.webp +0 -0
  95. package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/cg/milestone/yue.webp +0 -0
  96. package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/cg/pan/explicit.webp +0 -0
  97. package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/cg/pan/prelude.webp +0 -0
  98. package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/cg/pinger/explicit.webp +0 -0
  99. package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/cg/pinger/prelude.webp +0 -0
  100. package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/cg/xuee/explicit.webp +0 -0
  101. package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/cg/xuee/prelude.webp +0 -0
  102. package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/cg/yue/explicit.webp +0 -0
  103. package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/cg/yue/prelude.webp +0 -0
  104. package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/heroine/meng/night.webp +0 -0
  105. package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/heroine/pan/night.webp +0 -0
  106. package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/heroine/pinger/night.webp +0 -0
  107. package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/heroine/xuee/night.webp +0 -0
  108. package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/heroine/yue/night.webp +0 -0
  109. package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/household/li_jiaoer.webp +0 -0
  110. package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/scene/gate_collector.webp +0 -0
  111. package/lib/novel-to-game/examples/jin-ping-mei/build/app/css/new-guofeng.css +1105 -0
  112. package/lib/novel-to-game/examples/jin-ping-mei/build/app/css/style.css +2539 -0
  113. package/lib/novel-to-game/examples/jin-ping-mei/build/app/index.html +18 -0
  114. package/lib/novel-to-game/examples/jin-ping-mei/build/app/js/assets.js +147 -0
  115. package/lib/novel-to-game/examples/jin-ping-mei/build/app/js/audio.js +332 -0
  116. package/lib/novel-to-game/examples/jin-ping-mei/build/app/js/data.js +7472 -0
  117. package/lib/novel-to-game/examples/jin-ping-mei/build/app/js/engine.js +13077 -0
  118. package/lib/novel-to-game/examples/jin-ping-mei/build/app/js/main.js +3028 -0
  119. package/lib/novel-to-game/examples/jin-ping-mei/build/app/js/text.js +32 -0
  120. package/lib/novel-to-game/examples/jin-ping-mei/build/app/package.json +10 -0
  121. package/lib/novel-to-game/examples/jin-ping-mei/build/app/vercel.json +23 -0
  122. package/lib/novel-to-game/examples/jin-ping-mei/build/art/generated-art.json +161 -0
  123. package/lib/novel-to-game/examples/jin-ping-mei/example.json +12 -0
  124. package/lib/novel-to-game/examples/jin-ping-mei/qa/README.md +31 -0
  125. package/lib/novel-to-game/examples/jin-ping-mei/qa/playable-model.json +99 -0
  126. package/lib/novel-to-game/examples/jin-ping-mei/qa/verification.json +41 -0
  127. package/lib/novel-to-game/examples/jin-ping-mei/qa/verify_playable_model.mjs +129 -0
  128. package/lib/novel-to-game/manifest.json +508 -0
  129. package/lib/novel-to-game/skills/game-art-direction/SKILL.md +73 -0
  130. package/lib/novel-to-game/skills/game-art-direction/agents/openai.yaml +4 -0
  131. package/lib/novel-to-game/skills/game-art-direction/references/art-direction-method.md +119 -0
  132. package/lib/novel-to-game/skills/game-build/SKILL.md +84 -0
  133. package/lib/novel-to-game/skills/game-build/agents/openai.yaml +4 -0
  134. package/lib/novel-to-game/skills/game-build/references/build-brief-contract.md +109 -0
  135. package/lib/novel-to-game/skills/game-build/references/generative-media-pipeline.md +56 -0
  136. package/lib/novel-to-game/skills/game-build/references/playable-model-contract.md +81 -0
  137. package/lib/novel-to-game/skills/game-build/references/tts-production-contract.md +37 -0
  138. package/lib/novel-to-game/skills/game-concept/SKILL.md +72 -0
  139. package/lib/novel-to-game/skills/game-concept/agents/openai.yaml +4 -0
  140. package/lib/novel-to-game/skills/game-concept/references/concept-method.md +94 -0
  141. package/lib/novel-to-game/skills/game-qa/SKILL.md +50 -0
  142. package/lib/novel-to-game/skills/game-qa/agents/openai.yaml +4 -0
  143. package/lib/novel-to-game/skills/game-qa/references/qa-contract.md +66 -0
  144. package/lib/novel-to-game/skills/game-qa/references/test-design-method.md +45 -0
  145. package/lib/novel-to-game/skills/game-world-design/SKILL.md +63 -0
  146. package/lib/novel-to-game/skills/game-world-design/agents/openai.yaml +4 -0
  147. package/lib/novel-to-game/skills/game-world-design/references/dialogue-design-method.md +59 -0
  148. package/lib/novel-to-game/skills/game-world-design/references/game-writing-craft.md +53 -0
  149. package/lib/novel-to-game/skills/game-world-design/references/narrative-design-method.md +84 -0
  150. package/lib/novel-to-game/skills/game-world-design/references/numeric-design-method.md +56 -0
  151. package/lib/novel-to-game/skills/game-world-design/references/world-design-method.md +124 -0
  152. package/lib/novel-to-game/skills/novel-game-analyze/SKILL.md +77 -0
  153. package/lib/novel-to-game/skills/novel-game-analyze/agents/openai.yaml +4 -0
  154. package/lib/novel-to-game/skills/novel-game-analyze/references/gameability-protocol.md +65 -0
  155. package/lib/novel-to-game/skills/novel-to-game/SKILL.md +71 -0
  156. package/lib/novel-to-game/skills/novel-to-game/agents/openai.yaml +4 -0
  157. package/lib/novel-to-game/skills/novel-to-game/references/intake-benchmark-reference.md +42 -0
  158. package/lib/novel-to-game/skills/novel-to-game/references/intake-method.md +51 -0
  159. package/lib/novel-to-game/skills/novel-to-game/references/pipeline-contract.md +65 -0
  160. package/lib/oh-story/manifest.json +415 -305
  161. package/lib/oh-story/roles/consistency-checker.md +1 -1
  162. package/lib/oh-story/roles/narrative-writer.md +32 -33
  163. package/lib/oh-story/roles/story-architect.md +16 -26
  164. package/lib/oh-story/skills/browser-cdp/SKILL.md +1 -1
  165. package/lib/oh-story/skills/story/SKILL.md +16 -9
  166. package/lib/oh-story/skills/story/VERSION +1 -1
  167. package/lib/oh-story/skills/story/references/author-memory.md +163 -0
  168. package/lib/oh-story/skills/story/scripts/author_memory_commit.py +871 -0
  169. package/lib/oh-story/skills/story-cover/SKILL.md +1 -1
  170. package/lib/oh-story/skills/story-deslop/SKILL.md +10 -5
  171. package/lib/oh-story/skills/story-deslop/references/anti-ai-writing.md +2 -1
  172. package/lib/oh-story/skills/story-deslop/references/author-memory.md +163 -0
  173. package/lib/oh-story/skills/story-deslop/references/banned-words.md +6 -4
  174. package/lib/oh-story/skills/story-deslop/scripts/author_memory_commit.py +871 -0
  175. package/lib/oh-story/skills/story-deslop/scripts/check-ai-patterns.js +64 -1
  176. package/lib/oh-story/skills/story-import/SKILL.md +19 -10
  177. package/lib/oh-story/skills/story-import/references/format-and-structure.md +9 -10
  178. package/lib/oh-story/skills/story-import/references/structure-mapping-long.md +2 -2
  179. package/lib/oh-story/skills/story-import/references/structure-mapping-short.md +1 -1
  180. package/lib/oh-story/skills/story-import/references/tracking-transaction.md +14 -6
  181. package/lib/oh-story/skills/story-import/scripts/check-outline-contract.js +251 -0
  182. package/lib/oh-story/skills/story-import/scripts/tracking_commit.py +98 -9
  183. package/lib/oh-story/skills/story-import/scripts/wordcount_core.py +246 -0
  184. package/lib/oh-story/skills/story-long-analyze/SKILL.md +4 -4
  185. package/lib/oh-story/skills/story-long-scan/SKILL.md +1 -1
  186. package/lib/oh-story/skills/story-long-write/SKILL.md +35 -21
  187. package/lib/oh-story/skills/story-long-write/references/anti-ai-writing.md +2 -1
  188. package/lib/oh-story/skills/story-long-write/references/artifact-protocols.md +7 -3
  189. package/lib/oh-story/skills/story-long-write/references/author-memory.md +163 -0
  190. package/lib/oh-story/skills/story-long-write/references/banned-words.md +6 -4
  191. package/lib/oh-story/skills/story-long-write/references/cross-book-recall.md +6 -6
  192. package/lib/oh-story/skills/story-long-write/references/genre-prose-cards.md +1 -1
  193. package/lib/oh-story/skills/story-long-write/references/genre-readers.md +1 -1
  194. package/lib/oh-story/skills/{story-setup/references/agent-references/hooks-chapter.md → story-long-write/references/long-chapter-hooks.md} +5 -5
  195. package/lib/oh-story/skills/story-long-write/references/{quality-checklist.md → long-chapter-quality.md} +2 -1
  196. package/lib/oh-story/skills/story-long-write/references/long-format.md +42 -0
  197. package/lib/oh-story/skills/{story-setup/references/agent-references/genre-catalog.md → story-long-write/references/long-genre-catalog.md} +11 -97
  198. package/lib/oh-story/skills/{story-setup/references/agent-references/genre-core-mechanics.md → story-long-write/references/long-genre-mechanics.md} +1 -1
  199. package/lib/oh-story/skills/{story-short-write/references/reversal-toolkit.md → story-long-write/references/long-reversal.md} +18 -32
  200. package/lib/oh-story/skills/story-long-write/references/{hooks-suspense.md → long-suspense.md} +6 -6
  201. package/lib/oh-story/skills/story-long-write/references/opening-design.md +1 -1
  202. package/lib/oh-story/skills/story-long-write/references/outline-structure-theory.md +1 -1
  203. package/lib/oh-story/skills/story-long-write/references/style-genre-modules.md +1 -1
  204. package/lib/oh-story/skills/story-long-write/references/tracking-transaction.md +14 -6
  205. package/lib/oh-story/skills/story-long-write/references/workflow-chapter.md +32 -27
  206. package/lib/oh-story/skills/story-long-write/references/workflow-daily.md +4 -4
  207. package/lib/oh-story/skills/story-long-write/references/workflow-revision.md +2 -2
  208. package/lib/oh-story/skills/story-long-write/references/workflow-setup.md +14 -14
  209. package/lib/oh-story/skills/story-long-write/references/writing-craft.md +54 -54
  210. package/lib/oh-story/skills/story-long-write/scripts/author_memory_commit.py +871 -0
  211. package/lib/oh-story/skills/story-long-write/scripts/check-ai-patterns.js +64 -1
  212. package/lib/oh-story/skills/story-long-write/scripts/check-outline-contract.js +251 -0
  213. package/lib/oh-story/skills/story-long-write/scripts/storyctl.py +303 -0
  214. package/lib/oh-story/skills/story-long-write/scripts/tracking_commit.py +98 -9
  215. package/lib/oh-story/skills/story-long-write/scripts/wordcount_core.py +246 -0
  216. package/lib/oh-story/skills/story-review/SKILL.md +26 -17
  217. package/lib/oh-story/skills/story-review/references/anti-ai-writing.md +2 -1
  218. package/lib/oh-story/skills/story-review/references/author-memory.md +163 -0
  219. package/lib/oh-story/skills/story-review/references/banned-words.md +6 -4
  220. package/lib/oh-story/skills/story-review/references/{quality-checklist.md → review-quality.md} +22 -21
  221. package/lib/oh-story/skills/story-review/references/tracking-transaction.md +14 -6
  222. package/lib/oh-story/skills/story-review/scripts/author_memory_commit.py +871 -0
  223. package/lib/oh-story/skills/story-review/scripts/check-ai-patterns.js +64 -1
  224. package/lib/oh-story/skills/story-review/scripts/tracking_commit.py +98 -9
  225. package/lib/oh-story/skills/story-review/scripts/wordcount_core.py +246 -0
  226. package/lib/oh-story/skills/story-setup/SKILL.md +74 -33
  227. package/lib/oh-story/skills/story-setup/references/agent-references/agent-quality.md +72 -0
  228. package/lib/oh-story/skills/story-setup/references/agent-references/agent-reference-profiles.md +55 -0
  229. package/lib/oh-story/skills/story-setup/references/agent-references/anti-ai-writing.md +2 -1
  230. package/lib/oh-story/skills/story-setup/references/agent-references/banned-words.md +6 -4
  231. package/lib/oh-story/skills/story-setup/references/agent-references/format-and-structure.md +9 -10
  232. package/lib/oh-story/skills/story-setup/references/agent-references/genre-prose-cards.md +1 -1
  233. package/lib/oh-story/skills/story-setup/references/agent-references/genre-readers.md +1 -1
  234. package/lib/oh-story/skills/{story-short-analyze/references/hooks-chapter.md → story-setup/references/agent-references/long-chapter-hooks.md} +5 -5
  235. package/lib/oh-story/skills/story-setup/references/agent-references/long-emotional-methods.md +209 -0
  236. package/lib/oh-story/skills/{story-long-write/references/genre-catalog.md → story-setup/references/agent-references/long-genre-catalog.md} +11 -97
  237. package/lib/oh-story/skills/{story-long-write/references/genre-core-mechanics.md → story-setup/references/agent-references/long-genre-mechanics.md} +1 -1
  238. package/lib/oh-story/skills/story-setup/references/agent-references/long-quality.md +40 -0
  239. package/lib/oh-story/skills/story-setup/references/agent-references/{reversal-toolkit.md → long-reversal.md} +18 -32
  240. package/lib/oh-story/skills/{story-short-write/references/hooks-suspense.md → story-setup/references/agent-references/long-suspense.md} +6 -6
  241. package/lib/oh-story/skills/story-setup/references/agent-references/opening-design.md +1 -1
  242. package/lib/oh-story/skills/story-setup/references/agent-references/{emotional-methods.md → short-emotional-methods.md} +4 -4
  243. package/lib/oh-story/skills/{story-long-write/references/genre-writing-formulas.md → story-setup/references/agent-references/short-genre-formulas.md} +32 -44
  244. package/lib/oh-story/skills/story-setup/references/agent-references/short-quality.md +39 -0
  245. package/lib/oh-story/skills/{story-long-write/references/reversal-toolkit.md → story-setup/references/agent-references/short-reversal.md} +29 -23
  246. package/lib/oh-story/skills/story-setup/references/agent-references/{hooks-suspense.md → short-suspense.md} +31 -31
  247. package/lib/oh-story/skills/story-setup/references/agent-references/style-genre-modules.md +1 -1
  248. package/lib/oh-story/skills/story-setup/references/agent-references/writing-craft.md +55 -55
  249. package/lib/oh-story/skills/story-short-analyze/SKILL.md +28 -28
  250. package/lib/oh-story/skills/story-short-analyze/references/{character-basics.md → analysis-character-basics.md} +1 -1
  251. package/lib/oh-story/skills/story-short-analyze/references/{character-design-methods.md → analysis-character-design.md} +1 -1
  252. package/lib/oh-story/skills/story-short-analyze/references/{character-relations.md → analysis-character-relations.md} +1 -1
  253. package/lib/oh-story/skills/story-short-analyze/references/{hooks-paragraph.md → analysis-paragraph-hooks.md} +1 -1
  254. package/lib/oh-story/skills/story-short-analyze/references/{genre-readers.md → analysis-reader-profile.md} +2 -2
  255. package/lib/oh-story/skills/story-short-analyze/references/analysis-report-style.md +45 -0
  256. package/lib/oh-story/skills/story-short-analyze/references/analysis-short-genres.md +65 -0
  257. package/lib/oh-story/skills/story-short-analyze/references/analysis-short-hooks.md +77 -0
  258. package/lib/oh-story/skills/story-short-analyze/references/analysis-short-mechanics.md +82 -0
  259. package/lib/oh-story/skills/story-short-analyze/references/analysis-short-patterns.md +50 -0
  260. package/lib/oh-story/skills/story-short-analyze/references/analysis-short-suspense.md +98 -0
  261. package/lib/oh-story/skills/story-short-analyze/references/{genre-writing-techniques.md → analysis-writing-techniques.md} +21 -19
  262. package/lib/oh-story/skills/story-short-analyze/references/deconstruction-examples.md +1 -1
  263. package/lib/oh-story/skills/story-short-analyze/references/material-decomposition.md +21 -28
  264. package/lib/oh-story/skills/story-short-analyze/references/output-contract.md +1 -1
  265. package/lib/oh-story/skills/story-short-analyze/references/output-templates.md +17 -17
  266. package/lib/oh-story/skills/story-short-analyze/references/{quality-checklist.md → source-story-quality.md} +28 -49
  267. package/lib/oh-story/skills/story-short-analyze/references/zhihu-style.md +2 -2
  268. package/lib/oh-story/skills/story-short-scan/SKILL.md +1 -1
  269. package/lib/oh-story/skills/story-short-write/SKILL.md +78 -55
  270. package/lib/oh-story/skills/story-short-write/references/author-memory.md +163 -0
  271. package/lib/oh-story/skills/story-short-write/references/banned-words.md +6 -4
  272. package/lib/oh-story/skills/story-short-write/references/cross-book-recall.md +3 -3
  273. package/lib/oh-story/skills/story-short-write/references/emotional-methods.md +4 -4
  274. 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
  275. package/lib/oh-story/skills/story-short-write/references/genre-styles//345/217/214/347/224/267/344/270/273.md +2 -2
  276. 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
  277. 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
  278. 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
  279. package/lib/oh-story/skills/story-short-write/references/genre-styles//346/202/254/347/226/221.md +4 -4
  280. 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
  281. 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
  282. package/lib/oh-story/skills/story-short-write/references/genre-styles//347/224/234/345/256/240.md +4 -4
  283. 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
  284. package/lib/oh-story/skills/story-short-write/references/genre-writing-formulas.md +32 -44
  285. package/lib/oh-story/skills/story-short-write/references/genre-writing-techniques.md +20 -18
  286. package/lib/oh-story/skills/story-short-write/references/output-contract.md +1 -1
  287. package/lib/oh-story/skills/story-short-write/references/short-craft.md +18 -18
  288. package/lib/oh-story/skills/story-short-write/references/short-deslop.md +1 -1
  289. package/lib/oh-story/skills/story-short-write/references/short-format.md +38 -8
  290. package/lib/oh-story/skills/story-short-write/references/{quality-checklist.md → short-prose-quality.md} +22 -21
  291. package/lib/oh-story/skills/story-short-write/references/short-reversal.md +355 -0
  292. package/lib/oh-story/skills/{story-short-analyze/references/hooks-suspense.md → story-short-write/references/short-suspense.md} +31 -31
  293. package/lib/oh-story/skills/story-short-write/references/submission-craft.md +2 -2
  294. package/lib/oh-story/skills/story-short-write/references/writing-workflow.md +31 -22
  295. package/lib/oh-story/skills/story-short-write/scripts/author_memory_commit.py +871 -0
  296. package/lib/oh-story/skills/story-short-write/scripts/check-ai-patterns.js +64 -1
  297. package/lib/oh-story/skills/story-short-write/scripts/check-delivery-contract.js +212 -0
  298. package/lib/oh-story/skills/story-short-write/scripts/check-phase2-contract.js +363 -0
  299. package/lib/types/client/drama-production-view.d.ts +34 -0
  300. package/lib/types/client/drama-production-view.d.ts.map +1 -0
  301. package/lib/types/client/drama-production.d.ts +92 -0
  302. package/lib/types/client/drama-production.d.ts.map +1 -0
  303. package/lib/types/client/file-activity.d.ts +4 -2
  304. package/lib/types/client/file-activity.d.ts.map +1 -1
  305. package/lib/types/client/index.d.ts +1 -1
  306. package/lib/types/client/index.d.ts.map +1 -1
  307. package/lib/types/client/production-intents.d.ts +9 -0
  308. package/lib/types/client/production-intents.d.ts.map +1 -0
  309. package/lib/types/client/production-prompts.d.ts +9 -0
  310. package/lib/types/client/production-prompts.d.ts.map +1 -0
  311. package/lib/types/client/production-runtime.d.ts +58 -0
  312. package/lib/types/client/production-runtime.d.ts.map +1 -0
  313. package/lib/types/client/video-studio.d.ts +41 -0
  314. package/lib/types/client/video-studio.d.ts.map +1 -0
  315. package/lib/types/client/workbench-ui.d.ts +5 -0
  316. package/lib/types/client/workbench-ui.d.ts.map +1 -0
  317. package/lib/types/game-verification.d.ts +16 -0
  318. package/lib/types/game-verification.d.ts.map +1 -0
  319. package/lib/types/index.d.ts +3 -1
  320. package/lib/types/index.d.ts.map +1 -1
  321. package/lib/types/production-intent.d.ts +21 -0
  322. package/lib/types/production-intent.d.ts.map +1 -0
  323. package/lib/types/production-tool.d.ts +5 -0
  324. package/lib/types/production-tool.d.ts.map +1 -0
  325. package/lib/types/role-tool.d.ts.map +1 -1
  326. package/lib/types/skill-provider.d.ts +7 -0
  327. package/lib/types/skill-provider.d.ts.map +1 -1
  328. package/lib/types/video-project.d.ts +42 -0
  329. package/lib/types/video-project.d.ts.map +1 -0
  330. package/lib/types/workspace-request-trust.d.ts +6 -0
  331. package/lib/types/workspace-request-trust.d.ts.map +1 -1
  332. package/lib/types/workspace-route.d.ts +20 -0
  333. package/lib/types/workspace-route.d.ts.map +1 -1
  334. package/lib/video-recap/CHANGELOG.md +282 -0
  335. package/lib/video-recap/LICENSE +21 -0
  336. package/lib/video-recap/README.en.md +257 -0
  337. package/lib/video-recap/README.md +255 -0
  338. package/lib/video-recap/manifest.json +684 -0
  339. package/lib/video-recap/skills/video-assemble/SKILL.md +97 -0
  340. package/lib/video-recap/skills/video-assemble/references/jianying/LICENSE.duo-video +21 -0
  341. package/lib/video-recap/skills/video-assemble/references/jianying/SOURCE.md +15 -0
  342. package/lib/video-recap/skills/video-assemble/references/jianying/empty_draft_meta_info.json +69 -0
  343. package/lib/video-recap/skills/video-assemble/references/jianying/empty_jy_combination_segment.json +84 -0
  344. package/lib/video-recap/skills/video-assemble/references/jianying/empty_jy_combination_video_material.json +98 -0
  345. package/lib/video-recap/skills/video-assemble/references/jianying/empty_jy_draft.json +204 -0
  346. package/lib/video-recap/skills/video-assemble/references/jianying/empty_jy_material_video.json +83 -0
  347. package/lib/video-recap/skills/video-assemble/references/jianying/empty_jy_meta_material_value.json +23 -0
  348. package/lib/video-recap/skills/video-assemble/references/jianying/empty_jy_project_info.json +133 -0
  349. package/lib/video-recap/skills/video-assemble/references/jianying/empty_jy_segment.json +70 -0
  350. package/lib/video-recap/skills/video-assemble/references/jianying/empty_jy_text_styles.json +30 -0
  351. package/lib/video-recap/skills/video-assemble/references/jianying/empty_yj_material_audio.json +41 -0
  352. package/lib/video-recap/skills/video-assemble/references/jianying/empty_yj_material_text.json +109 -0
  353. package/lib/video-recap/skills/video-assemble/scripts/artifacts.py +88 -0
  354. package/lib/video-recap/skills/video-assemble/scripts/assemble.py +345 -0
  355. package/lib/video-recap/skills/video-assemble/scripts/assemble_constants.py +34 -0
  356. package/lib/video-recap/skills/video-assemble/scripts/assembly_contract.py +305 -0
  357. package/lib/video-recap/skills/video-assemble/scripts/assembly_settings.py +94 -0
  358. package/lib/video-recap/skills/video-assemble/scripts/audio_automation.py +205 -0
  359. package/lib/video-recap/skills/video-assemble/scripts/audio_mix.py +555 -0
  360. package/lib/video-recap/skills/video-assemble/scripts/export_jianying.py +261 -0
  361. package/lib/video-recap/skills/video-assemble/scripts/jianying_builders.py +767 -0
  362. package/lib/video-recap/skills/video-assemble/scripts/jianying_model.py +111 -0
  363. package/lib/video-recap/skills/video-assemble/scripts/jianying_optional.py +24 -0
  364. package/lib/video-recap/skills/video-assemble/scripts/jianying_schema.py +109 -0
  365. package/lib/video-recap/skills/video-assemble/scripts/jianying_templates.py +37 -0
  366. package/lib/video-recap/skills/video-assemble/scripts/jianying_timeline_contract.py +191 -0
  367. package/lib/video-recap/skills/video-assemble/scripts/jianying_tracks.py +75 -0
  368. package/lib/video-recap/skills/video-assemble/scripts/jianying_writer.py +394 -0
  369. package/lib/video-recap/skills/video-assemble/scripts/lib.py +239 -0
  370. package/lib/video-recap/skills/video-assemble/scripts/media.py +243 -0
  371. package/lib/video-recap/skills/video-assemble/scripts/narration_audio.py +477 -0
  372. package/lib/video-recap/skills/video-assemble/scripts/render_preflight.py +46 -0
  373. package/lib/video-recap/skills/video-assemble/scripts/source_subtitles.py +486 -0
  374. package/lib/video-recap/skills/video-assemble/scripts/subtitle_core.py +376 -0
  375. package/lib/video-recap/skills/video-assemble/scripts/subtitle_render.py +88 -0
  376. package/lib/video-recap/skills/video-assemble/scripts/timeline.py +248 -0
  377. package/lib/video-recap/skills/video-assemble/scripts/timeline_emit.py +89 -0
  378. package/lib/video-recap/skills/video-assemble/scripts/visual_render.py +512 -0
  379. package/lib/video-recap/skills/video-cut/SKILL.md +90 -0
  380. package/lib/video-recap/skills/video-cut/scripts/cut.py +67 -0
  381. package/lib/video-recap/skills/video-cut/scripts/cut_cli.py +320 -0
  382. package/lib/video-recap/skills/video-cut/scripts/cut_contract.py +545 -0
  383. package/lib/video-recap/skills/video-cut/scripts/cut_render.py +348 -0
  384. package/lib/video-recap/skills/video-cut/scripts/lib.py +77 -0
  385. package/lib/video-recap/skills/video-cut/scripts/media_geometry.py +341 -0
  386. package/lib/video-recap/skills/video-cut/scripts/narration_mapping.py +249 -0
  387. package/lib/video-recap/skills/video-cut/scripts/sentence_boundaries.py +745 -0
  388. package/lib/video-recap/skills/video-recap/SKILL.md +216 -0
  389. package/lib/video-recap/skills/video-recap/references/config-playbook.md +61 -0
  390. package/lib/video-recap/skills/video-recap/references/creative-editing-playbook.md +225 -0
  391. package/lib/video-recap/skills/video-recap/references/data-schema.md +534 -0
  392. package/lib/video-recap/skills/video-recap/references/research-guide.md +74 -0
  393. package/lib/video-recap/skills/video-recap/references/shift-left-qc-schema.md +23 -0
  394. package/lib/video-recap/skills/video-recap/references/timeline-and-jianying.md +251 -0
  395. package/lib/video-recap/skills/video-recap/scripts/doctor.py +483 -0
  396. package/lib/video-recap/skills/video-recap/scripts/final_qc.py +737 -0
  397. package/lib/video-recap/skills/video-recap/scripts/lib.py +242 -0
  398. package/lib/video-recap/skills/video-recap/scripts/materials.py +457 -0
  399. package/lib/video-recap/skills/video-recap/scripts/mimo_qc.py +95 -0
  400. package/lib/video-recap/skills/video-recap/scripts/mimo_qc_client.py +18 -0
  401. package/lib/video-recap/skills/video-recap/scripts/mimo_qc_contract.py +9 -0
  402. package/lib/video-recap/skills/video-recap/scripts/mimo_qc_evidence.py +371 -0
  403. package/lib/video-recap/skills/video-recap/scripts/mimo_qc_observations.py +201 -0
  404. package/lib/video-recap/skills/video-recap/scripts/mimo_qc_payload.py +227 -0
  405. package/lib/video-recap/skills/video-recap/scripts/mimo_qc_report.py +362 -0
  406. package/lib/video-recap/skills/video-recap/scripts/mimo_qc_runner.py +129 -0
  407. package/lib/video-recap/skills/video-recap/scripts/qc_contract.py +338 -0
  408. package/lib/video-recap/skills/video-recap/scripts/recap.py +9 -0
  409. package/lib/video-recap/skills/video-recap/scripts/recap_cli.py +140 -0
  410. package/lib/video-recap/skills/video-recap/scripts/recap_inspect.py +550 -0
  411. package/lib/video-recap/skills/video-recap/scripts/recap_review.py +77 -0
  412. package/lib/video-recap/skills/video-recap/scripts/recap_runner.py +654 -0
  413. package/lib/video-recap/skills/video-recap/scripts/recap_runtime.py +335 -0
  414. package/lib/video-recap/skills/video-recap/scripts/recap_stage_qc.py +217 -0
  415. package/lib/video-recap/skills/video-recap/scripts/recap_timeline.py +795 -0
  416. package/lib/video-recap/skills/video-script/SKILL.md +248 -0
  417. package/lib/video-recap/skills/video-script/references/creative-editing-playbook.md +225 -0
  418. package/lib/video-recap/skills/video-script/references/research-guide.md +75 -0
  419. package/lib/video-recap/skills/video-script/scripts/agent_brief.py +399 -0
  420. package/lib/video-recap/skills/video-script/scripts/agent_text.py +410 -0
  421. package/lib/video-recap/skills/video-script/scripts/brief_context.py +403 -0
  422. package/lib/video-recap/skills/video-script/scripts/brief_inputs.py +332 -0
  423. package/lib/video-recap/skills/video-script/scripts/brief_timeline.py +442 -0
  424. package/lib/video-recap/skills/video-script/scripts/deslop_qc.py +237 -0
  425. package/lib/video-recap/skills/video-script/scripts/evidence_bundle.py +492 -0
  426. package/lib/video-recap/skills/video-script/scripts/lib.py +327 -0
  427. package/lib/video-recap/skills/video-script/scripts/narration.py +12 -0
  428. package/lib/video-recap/skills/video-script/scripts/narration_lint.py +678 -0
  429. package/lib/video-recap/skills/video-script/scripts/review.py +42 -0
  430. package/lib/video-recap/skills/video-script/scripts/review_grounding.py +262 -0
  431. package/lib/video-recap/skills/video-script/scripts/review_response.py +761 -0
  432. package/lib/video-recap/skills/video-script/scripts/review_runner.py +200 -0
  433. package/lib/video-recap/skills/video-script/scripts/speech_ownership.py +204 -0
  434. package/lib/video-recap/skills/video-script/scripts/timeline_fusion.py +199 -0
  435. package/lib/video-recap/skills/video-script/scripts/validate.py +164 -0
  436. package/lib/video-recap/skills/video-understanding/SKILL.md +75 -0
  437. package/lib/video-recap/skills/video-understanding/references/data-schema.md +299 -0
  438. package/lib/video-recap/skills/video-understanding/references/prompt-templates.md +37 -0
  439. package/lib/video-recap/skills/video-understanding/references/research-guide.md +74 -0
  440. package/lib/video-recap/skills/video-understanding/scripts/agent_brief.py +399 -0
  441. package/lib/video-recap/skills/video-understanding/scripts/agent_text.py +410 -0
  442. package/lib/video-recap/skills/video-understanding/scripts/asr.py +260 -0
  443. package/lib/video-recap/skills/video-understanding/scripts/brief.py +12 -0
  444. package/lib/video-recap/skills/video-understanding/scripts/brief_context.py +403 -0
  445. package/lib/video-recap/skills/video-understanding/scripts/brief_inputs.py +332 -0
  446. package/lib/video-recap/skills/video-understanding/scripts/brief_timeline.py +442 -0
  447. package/lib/video-recap/skills/video-understanding/scripts/consolidate.py +647 -0
  448. package/lib/video-recap/skills/video-understanding/scripts/deslop_qc.py +237 -0
  449. package/lib/video-recap/skills/video-understanding/scripts/detect.py +513 -0
  450. package/lib/video-recap/skills/video-understanding/scripts/extract.py +62 -0
  451. package/lib/video-recap/skills/video-understanding/scripts/lib.py +470 -0
  452. package/lib/video-recap/skills/video-understanding/scripts/narration_lint.py +678 -0
  453. package/lib/video-recap/skills/video-understanding/scripts/speech_ownership.py +204 -0
  454. package/lib/video-recap/skills/video-understanding/scripts/storyboard.py +507 -0
  455. package/lib/video-recap/skills/video-understanding/scripts/timeline_fusion.py +199 -0
  456. package/lib/video-recap/skills/video-understanding/scripts/understand.py +9 -0
  457. package/lib/video-recap/skills/video-understanding/scripts/understanding_brief.py +216 -0
  458. package/lib/video-recap/skills/video-understanding/scripts/understanding_cache.py +327 -0
  459. package/lib/video-recap/skills/video-understanding/scripts/understanding_runner.py +367 -0
  460. package/lib/video-recap/skills/video-understanding/scripts/understanding_storyboard.py +162 -0
  461. package/lib/video-recap/skills/video-understanding/scripts/vlm.py +705 -0
  462. package/lib/video-recap/skills/video-voiceover/SKILL.md +81 -0
  463. package/lib/video-recap/skills/video-voiceover/scripts/dub.py +637 -0
  464. package/lib/video-recap/skills/video-voiceover/scripts/fish_audio.py +109 -0
  465. package/lib/video-recap/skills/video-voiceover/scripts/lib.py +421 -0
  466. package/lib/video-recap/skills/video-voiceover/scripts/tts_audio.py +113 -0
  467. package/lib/video-recap/skills/video-voiceover/scripts/voiceover.py +782 -0
  468. package/package.json +55 -40
  469. package/lib/oh-story/skills/story-deslop/scripts/check-outline-copy.js +0 -241
  470. package/lib/oh-story/skills/story-long-write/references/format-and-structure.md +0 -169
  471. package/lib/oh-story/skills/story-setup/references/agent-references/genre-writing-formulas.md +0 -444
  472. package/lib/oh-story/skills/story-setup/references/agent-references/quality-checklist.md +0 -247
  473. package/lib/oh-story/skills/story-short-analyze/references/anti-ai-writing.md +0 -582
  474. package/lib/oh-story/skills/story-short-analyze/references/banned-words.md +0 -147
  475. package/lib/oh-story/skills/story-short-analyze/references/genre-catalog.md +0 -490
  476. package/lib/oh-story/skills/story-short-analyze/references/genre-core-mechanics.md +0 -425
  477. package/lib/oh-story/skills/story-short-analyze/references/genre-writing-formulas.md +0 -453
  478. /package/lib/oh-story/skills/{story-long-write/references/hooks-chapter.md → story-setup/references/agent-references/short-chapter-hooks.md} +0 -0
  479. /package/lib/oh-story/skills/{story-long-write/references/hooks-paragraph.md → story-setup/references/agent-references/short-paragraph-hooks.md} +0 -0
@@ -0,0 +1,82 @@
1
+ # 短篇源文核心机制分析
2
+
3
+ > 分析短篇的核心梗如何在有限全文内被验证、变奏和结算。这里的“循环”只指同一机制在源文内的有限复现,不承担长线扩张指标。
4
+
5
+ ## 核心问题
6
+
7
+ 核心机制不是题材标签或金手指名称,而是角色反复用什么选择处理冲突,读者因此持续期待什么。
8
+
9
+ 用一句话表达:
10
+
11
+ ```text
12
+ 当 {触发条件} 出现,角色通过 {关键选择/手段} 获得 {局部结果},同时承担 {限制/代价};终局由 {不可逆选择} 结算。
13
+ ```
14
+
15
+ ## 机制证据矩阵
16
+
17
+ | 维度 | 观察问题 | 证据要求 |
18
+ |---|---|---|
19
+ | 触发 | 什么事件让机制启动? | 首次出现的位置与前置条件 |
20
+ | 输入 | 角色必须投入什么? | 时间、关系、名誉、资源、秘密或选择 |
21
+ | 处理 | 机制具体改变了哪一步解法? | 可见行动,不只设定说明 |
22
+ | 输出 | 每次运转交付了什么局部结果? | 信息、关系、风险、资源或身份变化 |
23
+ | 限制 | 什么情况下机制失效或不能继续? | 失败、到期、冲突规则或现实阻力 |
24
+ | 代价 | 谁为推进付账,代价是否落在同一主线? | 运转后的实际后果 |
25
+ | 变奏 | 后一次与前一次相比改变了什么? | 对象、解释、选择或代价的变化 |
26
+ | 结算 | 终局是否仍需要人物作选择? | 最后不可逆行动及其后果 |
27
+
28
+ ## 有限复现类型
29
+
30
+ | 类型 | 判断标准 | 风险 |
31
+ |---|---|---|
32
+ | 单次触发 | 机制只改变一个关键节点,随后处理后果 | 设定解释过长会挤压人物选择 |
33
+ | 递进复现 | 同一规则数次出现,每次提高代价或改变解释 | 只提高数值、不改变选择会显重复 |
34
+ | 证据接力 | 机制依次改变证据来源、解释和归属 | 证据若不影响行动,会变成资料堆积 |
35
+ | 关系接力 | 同一矛盾在不同关系中暴露新的责任 | 新角色只为提供答案会稀释主线 |
36
+ | 误判修正 | 角色基于机制形成阶段答案,再被新证据纠正 | 后层若让前层事实全部作废,会显作弊 |
37
+ | 报应对应 | 旧伤害与后果逐项建立因果回声 | 天降惩罚会削弱角色代理权 |
38
+
39
+ ## 系统与脑洞短篇
40
+
41
+ 出现系统、能力或异常规则时,额外检查:
42
+
43
+ - 规则是否在第一次关键使用前可理解。
44
+ - 后续变化是既有规则的后果,还是临时新增功能。
45
+ - 能力解决的是局部障碍,还是替人物完成证据、关系和伦理选择。
46
+ - 能力退出、转移或失效后,主线是否仍由人物行动收束。
47
+ - 结尾兑现的是开篇承诺,还是突然转成财富、战力或更大世界展示。
48
+
49
+ 系统只触发少数几次、规则不升级,完全可以构成短篇核心机制;不要因此判为“不具备长线潜力”,短篇不承担长线循环义务。
50
+
51
+ ## 主角代理权
52
+
53
+ 对每个决定性节点记录四个角色:谁取得信息、谁验证、谁解释、谁选择使用。主角不必独占所有动作,但必须拥有影响终局责任或关系的不可替代选择。
54
+
55
+ 若关键答案全由系统、盟友、反派口供或巧合送达,报告为“机制/配角夺走因果权”,并引用具体位置;不要用笼统的“主角不够主动”。
56
+
57
+ ## 机制与题材的关系
58
+
59
+ - 题材说明故事主要在结算什么;机制说明文本用什么因果反复推进。
60
+ - 悬疑、系统、重生、灵魂视角可能是主类型,也可能只是家庭、职场或关系主线的工具。
61
+ - 删除机制后若主线仍原样成立,机制只是装饰。
62
+ - 删除题材冲突后机制失去目标,说明机制服从该题材主线。
63
+
64
+ ## 报告格式
65
+
66
+ ```markdown
67
+ 核心机制:{一句话}
68
+ 运转证据:{按出现顺序列位置、输入、输出、代价}
69
+ 有限复现类型:{类型及依据}
70
+ 规则一致性:{成立/存在缺口/证据不足}
71
+ 主角代理权:{取得、验证、解释、使用的所有权}
72
+ 终局结算:{机制是否退出,人物选择是否接管}
73
+ 可复用功能:{抽象功能}
74
+ 失败条件:{移植时最容易失效的因果}
75
+ ```
76
+
77
+ ## 边界
78
+
79
+ - 不评价机制能否支撑几十万字、多少卷或多少次升级。
80
+ - 不要求固定复现次数;记录源文实际次数及每次是否改变因果。
81
+ - 不把写作建议、赛道选择或创新配方写进拆文报告。
82
+ - 证据不足时标“待复核”,不替源文补规则或作者意图。
@@ -0,0 +1,50 @@
1
+ # 短篇源文结构模式标尺
2
+
3
+ > 用于描述已经存在的短篇如何组织压力、信息、关系和兑现。模式是比较工具,不是写作公式;不要求固定章位、百分比或线索数量。
4
+
5
+ ## 识别原则
6
+
7
+ 先按源文实际功能分段,再判断它接近哪种模式。一个模式成立需要三类证据:前置条件、改变读者判断或情绪的转折、转折后的行动或关系后果。
8
+
9
+ ## 常见模式
10
+
11
+ | 模式 | 可观察功能链 | 成立证据 | 常见失败 |
12
+ |---|---|---|---|
13
+ | 建压—反击—结算 | 不公变得具体 → 主角取得行动条件 → 后果落到责任方 | 压力、主动选择和结算属于同一因果链 | 反击靠外援代办,主角只旁观 |
14
+ | 异常—取证—改判 | 小异常出现 → 多个解释竞争 → 新证据改变责任判断 | 每笔证据都改变下一步行动 | 线索只添气氛,揭示靠口供补完 |
15
+ | 阶段答案—再审—终局 | 一个可信答案暂时成立 → 基于答案产生新行动 → 再审推翻解释但保留事实 | 后一层能解释前一层为何可信 | 连续翻口供,没有中间行动后果 |
16
+ | 盟友—依赖—重估 | 关系提供资源或安全感 → 帮助中出现裂缝 → 主角重新判断关系 | 早期行为在揭示后获得新含义 | 盟友到结尾突然换立场 |
17
+ | 前世信息—不同选择—新代价 | 旧信息改变当下选择 → 优势产生未见过的反作用 → 新人生得到结算 | 今生关键因果确实不同 | 只复述前世,今生仍走原路线 |
18
+ | 恶行—对应反制—可见后果 | 每项伤害建立责任 → 反制使用相关证据或资源 → 后果与恶行相呼应 | 报应不是巧合,且由角色选择触发 | 只罗列惨状和下场,没有因果桥 |
19
+ | 规则—验证—付价 | 异常规则被观察 → 角色试用或误判 → 限制与代价改变解法 | 规则边界前后一致 | 临时新增能力解决当前困境 |
20
+ | 能力体验—证据推进—能力放弃 | 特殊能力解决局部问题 → 能力不足迫使角色承担现实代价 → 终局选择定义胜利 | 能力服务主线且不能替代最终选择 | 奖励不断升级,短篇主线变成能力说明书 |
21
+ | 关系靠近—受阻—确认 | 互动建立特殊性 → 外部或内部阻力检验关系 → 选择给关系定性 | 推进来自共同经历和选择 | 只用身体接触或误会机械升级 |
22
+ | 死亡/缺席—重读—余波 | 缺席制造信息缺口 → 生者重读旧行为 → 不可逆事实改变关系判断 | 旧细节可回看,结尾承担失去 | 用遗书一次解释全部真相 |
23
+ | 公开场—证据归属变化—审判 | 私下矛盾进入公开空间 → 证据持有人或解释权变化 → 角色承担社会/关系后果 | 公开不是围观,而是改变权力 | 群众反应替代事实证明 |
24
+ | 单一目标—代价升级—克制收束 | 目标保持不变 → 每次推进要求更难的选择 → 结尾只结算主要欠账 | 代价与目标直接相关 | 后段另开更大的故事抢走高潮 |
25
+
26
+ ## 结构观察表
27
+
28
+ ```markdown
29
+ 实际功能段:{按源文列出,不预设数量}
30
+ 最接近模式:{名称}
31
+ 前置条件证据:{位置}
32
+ 关键转折证据:{位置}
33
+ 行动/关系后果:{位置}
34
+ 源文的偏离:{增加、删去或重排了什么功能}
35
+ 偏离效果:{改善/削弱了哪种期待,附证据}
36
+ ```
37
+
38
+ ## 比较常见模式时
39
+
40
+ - 用实际段落和节次描述结构,可以报告源文各段占全文的实际比例,但不拿推荐比例判合格。
41
+ - “更早/更晚”必须相对源文的铺垫是否充足、揭示后是否有后果空间判断,不相对固定百分比。
42
+ - 线索数量只记录观察结果;公平性取决于线索是否可回溯、是否进入过角色判断。
43
+ - 一个源文可混合多个模式,但必须指出主模式拥有哪一笔高潮和最终结算。
44
+ - 可复用结构必须连同失败条件交付,不能把原故事的具体身份、物件和台词当模板复制。
45
+
46
+ ## 禁止误用
47
+
48
+ - 不调用长篇的卷、地图、升级阶段或长线开篇模型。
49
+ - 不把“每章必须”“固定节位”“固定线索数”写成源文质量结论。
50
+ - 不输出改纲方案,除非用户明确要求编辑建议;默认只说明观察、效果和失败模式。
@@ -0,0 +1,98 @@
1
+ # 短篇源文悬念分析标尺
2
+
3
+ > 观察短篇如何分配问题、信息、证据与答案。只描述源文内的即时、小节间和全文悬念,不调用卷级、全书或连载钩子模型。
4
+
5
+ ## 悬念对象
6
+
7
+ 悬念不是“有秘密”或“气氛神秘”,而是文本让读者同时相信两个以上可能走向,并推迟其中一个关键答案。
8
+
9
+ 分析前先写清:
10
+
11
+ ```markdown
12
+ 主问题:{全文最终必须回答的问题}
13
+ 副问题:{服务主问题的证据、关系或动机问题;没有则写无}
14
+ 读者先知道:{位置与信息}
15
+ 角色先知道:{位置与信息}
16
+ 最终答案:{位置与改变的判断}
17
+ ```
18
+
19
+ ## 三种观察尺度
20
+
21
+ | 尺度 | 观察对象 | 回收判断 |
22
+ |---|---|---|
23
+ | 即时 | 一场对话、动作或取证中的未完成目标 | 本场是否产生结果、阻力或选择 |
24
+ | 小节间 | 节尾留下的证据异常、关系疑点或未完成动作 | 后续是否回应,并改变下一步行动 |
25
+ | 全文 | 主问题及其责任、身份或情绪答案 | 结尾是否完成事实与后果结算 |
26
+
27
+ 三种尺度不要求同时存在。短篇可以只靠一个强主问题推进;副问题过多且不能回到主问题时,应报告为支线扩张。
28
+
29
+ ## 信息差类型
30
+
31
+ | 类型 | 识别方式 | 需要检查 |
32
+ |---|---|---|
33
+ | 读者领先 | 读者已见到危险或证据,角色尚未发现 | 领先是否制造担忧或等待,而非泄底 |
34
+ | 角色领先 | 角色隐瞒计划、证据或动机 | 隐瞒是否公平,叙述是否刻意撒谎 |
35
+ | 角色之间 | 不同角色掌握不同证据或解释 | 信息交换是否改变关系和行动 |
36
+ | 共同误判 | 读者与主角依据真实证据得出错误解释 | 后续答案是否保留旧事实并修正解释 |
37
+
38
+ ## 证据释放链
39
+
40
+ 对每笔关键证据记录:
41
+
42
+ | 位置 | 新信息 | 当时解释 | 谁取得/验证 | 引发的行动 | 后续如何重读 |
43
+ |---|---|---|---|---|---|
44
+
45
+ 有效释放必须至少改变信息、嫌疑判断、关系立场、风险或下一步行动之一。只重复问题、增加形容或换角色口供,不算支付延迟利息。
46
+
47
+ ## 阶段答案
48
+
49
+ 阶段答案是角色可以据此采取真实行动的暂时结论。检查:
50
+
51
+ - 它由哪些已经出现的证据支持。
52
+ - 角色是否真的依据它作出选择。
53
+ - 后续揭示推翻的是解释还是事实。
54
+ - 错误行动造成了什么代价或新局面。
55
+
56
+ 若阶段答案刚说出口就被下一句推翻,它只是连续揭晓,不构成悬念层级。
57
+
58
+ ## 延迟答案是否支付利息
59
+
60
+ 每次主问题被推迟时,记录文本交付了什么:
61
+
62
+ - 可验证的新证据。
63
+ - 对旧证据的新解释。
64
+ - 关系或证据所有权变化。
65
+ - 主角的主动选择及其代价。
66
+ - 局部问题的真实答案。
67
+
68
+ 如果连续延迟只增加“还有更大秘密”的表述,应报告空转,并指出未改变的读者问题。
69
+
70
+ ## 回收质量
71
+
72
+ | 检查项 | 成立表现 | 失败表现 |
73
+ |---|---|---|
74
+ | 事实回收 | 主问题得到可复核答案 | 靠新人物或新设定补答案 |
75
+ | 公平性 | 旧证据在新解释下仍为真 | 早期叙述为误导而撒谎 |
76
+ | 行动后果 | 揭示改变选择、关系或责任 | 角色听完解释后一切照旧 |
77
+ | 情绪回收 | 最终判断回收了前文投入 | 只结案,不处理关系和代价 |
78
+ | 主角代理权 | 主角取得、验证或选择使用决定性证据 | 答案完全由反派自曝或外援送达 |
79
+
80
+ ## 报告格式
81
+
82
+ ```markdown
83
+ 主悬念:{问题、建立位置、最终回收}
84
+ 副悬念:{与主问题的服务关系;无则写无}
85
+ 信息差:{类型、双方知道什么、位置}
86
+ 证据释放:{按位置列新信息、解释和行动变化}
87
+ 阶段答案:{支持证据、触发行动、后续修正}
88
+ 延迟利息:{每次推迟具体交付什么}
89
+ 回收评价:{事实、公平性、行动、情绪、代理权}
90
+ 证据不足:{无法从源文确认的项}
91
+ ```
92
+
93
+ ## 边界
94
+
95
+ - 可以报告源文答案实际出现的位置,但不拿推荐百分比判早晚。
96
+ - 可以记录实际钩子数量,但不要求每节或每段必须有钩子。
97
+ - 不把悬念强度写成主观等级;用读者问题、证据变化和行动后果说明力度。
98
+ - 不提供补钩、改纲或续写步骤,除非用户明确请求编辑建议。
@@ -1,7 +1,7 @@
1
- # 通用写作技法
1
+ # 源文写作技法分析标尺
2
2
 
3
3
  > 跨题材通用写作时加载。先看决策路由选技法区域,再按操作执行。
4
- > 题材公式见 genre-writing-formulas.md。
4
+ > 短篇结构功能链见 analysis-short-patterns.md。
5
5
 
6
6
  ## 用作拆文标尺时
7
7
 
@@ -123,15 +123,15 @@
123
123
 
124
124
  ### 情绪操控高级技法
125
125
 
126
- 1. **阶梯式背叛**:每一章揭露一个更大的背叛(道德→经济→生命)
127
- 2. **冷热对比法**:主角越冷,对方越歇斯底里,反差越大越爽
126
+ 1. **阶梯式背叛**:记录背叛如何在类别、代价或关系后果上升级(道德→经济→生命),不要求逐章揭露
127
+ 2. **冷热对比法**:分析筹码、选择和行动后果如何形成反差,不预设主角必须冷、对方必须歇斯底里
128
128
  3. **双面人剥皮术**:先写表面好,再层层剥开真相(复制粘贴的关心模板)
129
- 4. **前世记忆穿插法**:每章穿插一小段前世回忆,让读者理解"反常行为"
130
- 5. **审判式对话**:主角永远在提问、永远在审判、永远居高临下
129
+ 4. **前世记忆穿插法**:记录前世记忆如何改变当下判断、选择或信息,不把逐章穿插当质量线
130
+ 5. **审判式对话**:记录提问是否迫使对方选择、暴露矛盾或改变关系;没有筹码的连续审问不算有效技法
131
131
 
132
132
  ### 结构创新技法
133
133
 
134
- 1. **超短章节制**:每章500-1000字,每章一个小爆点,适合手机阅读
134
+ 1. **短章推进**:观察小节长度如何服从完整动作链,以及爆点、选择、信息或后果如何持续前推;不把逐章字数和爆点数量当质量线
135
135
  2. **线索物贯穿法**:一个物件贯穿全文,承载情绪+剧情双重功能
136
136
  3. **时空对照法**:同一时间两个空间对比(哥哥被打vs渣男给小三挑飞机)
137
137
  4. **定时炸弹式证据**:主角生前设置的自动发送证据,关键时刻引爆
@@ -143,11 +143,13 @@
143
143
  3. **大长镜头式**:主角一步步走向大门,身后所有人震惊
144
144
  4. **反讽对位式**:用反派视角写最讽刺的结局——漠视比报复更有力
145
145
 
146
- ### 对话密度与功能
146
+ ### 对话功能与边界
147
147
 
148
- | 平台 | 对话占比 | 功能分布 |
149
- |------|----------|----------|
150
- | 知乎盐言 | 50-60% | 情绪推动40%、信息揭露35%、人物塑造25% |
148
+ | 场景倾向 | 对白主要作用 | 无对白时的推进引擎 |
149
+ |----------|--------------|--------------------|
150
+ | 情绪拉扯 / 关系博弈 | 改变信息、策略、权力、关系或下一步行动 | 选择、物件、证据、空间距离或行动后果 |
151
+
152
+ 对白占比只作为该文本及同题材、同平台样本的描述数据,不设全文通过阈值。分析时同时说明无对白场景由什么推进。
151
153
 
152
154
  ### 核心金句模板
153
155
 
@@ -160,18 +162,18 @@
160
162
  | 最终漠视 | "那是他们的故事了,与我再无瓜葛。" |
161
163
  | 讽刺审判 | "你三十三岁了,不是十三岁。一句被迷惑,就能把责任推干净?" |
162
164
 
163
- ### 短篇写作硬性规范
165
+ ### 短篇写作边界
164
166
 
165
167
  | 规范 | 要求 | 违规示例 |
166
168
  |------|------|----------|
167
169
  | 开头100字内冲突 | 第一句就是信息炸弹 | "在一个阳光明媚的早晨..." |
168
- | 对话占正文50-70% | 每个对话推进剧情或揭示性格 | 大段独白/旁白 |
169
- | 每段不超过3句话 | 1句强调,2-3句正常,4句+拆分 | 超过4句的段落 |
170
+ | 对白服从场景功能 | 改变信息、策略、权力、关系或行动 | 为抬高占比补问答、复述或无效狠话 |
171
+ | 段落服从戏剧单元 | 一件事、一个镜头或一条推理链完成再断段 | 按句数强拆,形成提纲体或电报体 |
170
172
  | 情绪词后接具体动作 | 直写情绪成语,后面接场景里的具体动作或物件(番茄/七猫/黑岩常态),只算后面接不上具体东西的情绪总结句为AI腔 | 《为给白月光出气,男友群发我私密照》我紧紧抿着嘴唇,直到尝到血腥味 |
171
- | 每个场景两个功能 | 推进+揭示 / 铺垫+推高 / 呈现信息 | 单功能场景删除 |
173
+ | 场景产生真实变化 | 改变风险、信息、关系、资源、决定、行动或读者理解之一 | 为凑多功能添加旁人反应、回忆或独立障碍 |
172
174
  | 结尾用动作/对话 | 不升华、不总结、不感慨 | "从此以后她明白了..." |
173
- | 主角有标志性动作 | 复仇型端水杯;系统型吐槽面板 | 无辨识度 |
174
- | 每章一个信息炸弹 | 改变读者认知的新信息 | 章尾无新信息 |
175
+ | 主角有辨识度 | 记录冷静由取证、选择、延迟回应还是资源调度体现,标志动作是否本篇独有 | 把端水杯、整理西装等通用动作当成必备项 |
176
+ | 信息与后果持续前推 | 新信息、行动、关系变化、局部兑现或后果均可承接 | 为逐章达标另造信息炸弹 |
175
177
 
176
178
  **结尾三种黄金模式**:A. 反派视角收尾;B. 开放式暗示;C. 仪式感收场。
177
179
 
@@ -464,12 +466,12 @@
464
466
  写作时对照:
465
467
 
466
468
  - [ ] 开头 100 字内有信息炸弹(不是风景/天气)?
467
- - [ ] 每个场景至少两个功能(推进+揭示 / 铺垫+推高)?
469
+ - [ ] 每个场景改变了风险、信息、关系、资源、决定、行动或读者理解中的哪一项?
468
470
  - [ ] 情绪是否通过锚点触碰读者内心,而非直接描写出来?
469
471
  - [ ] 震惊场景有落差铺垫(先建立角色原有认知再打破)?
470
472
  - [ ] 感情线推进没跳阶段(熟悉→试探→暧昧→确认)?
471
473
  - [ ] 反派 flag 必收、主角 flag 不收或搞笑收?
472
474
  - [ ] 视角控制在 2-3 个(不超过 3)?
473
- - [ ] 对话占正文 50-70%,每句对话推剧情或揭示性格?
475
+ - [ ] 对白是否改变信息、策略、权力、关系或行动;无对白场景是否有其他清晰推进引擎?
474
476
  - [ ] 结尾用动作/对话收(不升华、不总结、不感慨)?
475
477
  - [ ] 没有"该爽不爽"的段落(金手指效果展示清楚)?
@@ -76,4 +76,4 @@
76
76
  2. **找钩子**:每篇至少 2 个钩子,至少 1 个信息差钩子
77
77
  3. **查结构**:起承转合是否完整,转折是否合理
78
78
  4. **看铺垫**:每个反转前是否至少 2 个铺垫线索
79
- 5. **评估爽度**:最大爽点是否在全文 70-85% 位置
79
+ 5. **评估爽度**:最大爽点是否由前因、选择和证据汇合而成,并为后果留下足够篇幅
@@ -106,14 +106,7 @@
106
106
 
107
107
  情节节点 = 推动故事发展的关键事件或信息释放。
108
108
 
109
- 密度原则:每 200-300 字一个节点,每节 3-8 个。全文目标节点数按字数分档,以下表为唯一权威:
110
-
111
- | 全文字数 | 目标节点数 | 说明 |
112
- |----------|-----------|------|
113
- | ≤5000 | 15-25 个 | 精短型,每个节点必须有效 |
114
- | 5000-8000 | 25-40 个 | 标准型 |
115
- | 8000-12000 | 35-55 个 | 中长型 |
116
- | >12000 | 45-60 个 | 长短篇(上限) |
109
+ 提取以语义变化为边界:风险、信息、关系、资源、决定、行动或读者理解发生变化时记一个节点;同一动作链连续完成多个功能时可记为一个节点并在描述中说明,不按字数或小节配额拆分。覆盖全文真实变化,不为达到目标数量重复记录同一事件。
117
110
 
118
111
  每个节点提取:
119
112
 
@@ -131,7 +124,7 @@
131
124
 
132
125
  #### A. 情感曲线
133
126
 
134
- 从情节节点数据生成情感曲线。节点数 = 至少 max(5, 节数) 个,确保每节至少一个情绪节点。
127
+ 从情节节点数据生成情感曲线。只在情绪立场、期待或压力实际变化处取点;完整任务、推理、手艺或等待链没有独立情绪转折时无需为该节补点。
135
128
 
136
129
  曲线特征提取:
137
130
  - 起始情绪
@@ -385,7 +378,7 @@
385
378
  3. **情绪标记精确**:每个节点标注情绪类型和强度值
386
379
  4. **信息保真**:不遗漏改变上下文的关键细节
387
380
  5. **高度浓缩**:一个节点一句话概括
388
- 6. **复合合并**:为同一情绪/叙事目的服务的连续微动作合并为一个节点,共用一个 N 编号;密度校验的「节点数」按最终 N 编号总数计
381
+ 6. **复合合并**:为同一情绪/叙事目的服务的连续微动作合并为一个节点,共用一个 N 编号;统计「节点数」时按最终 N 编号总数计
389
382
 
390
383
  ### 白描 vs 评价
391
384
 
@@ -418,9 +411,9 @@
418
411
 
419
412
  | 指标 | 计算方式 | 说明 |
420
413
  |------|----------|------|
421
- | 对话占比 | 对话字数 / 全文字数 | 短篇标准 45-65% |
422
- | 潜台词率 | 含潜台词对话条数 / 总对话条数 | 高手 > 60% |
423
- | 审判式对话 | 主角提问→对方自爆的数量 | 至少 2 处 |
414
+ | 对话占比 | 对话字数 / 全文字数 | 描述该文本,并与同题材、同平台样本对照;不作通用合格线 |
415
+ | 潜台词率 | 含潜台词对话条数 / 总对话条数 | 描述人物回避与信息控制;直说在告知、求救、立规矩等场景也可成立,不把越高当越好 |
416
+ | 审判式对话 | 主角提问→对方自曝的数量 | 记录提问是否迫使选择、暴露矛盾或改变关系,不设最低处数 |
424
417
  | 信息差对话 | 读者知道但角色不知道的对话 | 虐文/反转文核心 |
425
418
 
426
419
  **对话模式识别**:
@@ -518,23 +511,23 @@
518
511
 
519
512
  ### 节奏指标
520
513
 
521
- | 维度 | 计算方式 | 标准范围 | 说明 |
514
+ | 维度 | 计算方式 | 对照方式 | 说明 |
522
515
  |------|----------|----------|------|
523
- | 事件密度 | 节点数 / 全文字数 × 1000 | 3-6 个/千字 | 太低=水,太高=赶 |
524
- | 对话密度 | 对话字数 / 全文字数 × 100% | 45-65% | 短篇偏对话驱动 |
525
- | 冲突密度 | 冲突节点数 / 总节点数 × 100% | 30-50% | 低于20%=太平,高于60%=疲劳 |
526
- | 信息密度 | 信息节点数 / 总节点数 × 100% | 20-35% | 太低=无聊,太高=消化不及 |
516
+ | 事件密度 | 节点数 / 全文字数 × 1000 | 同题材、同平台样本及本文前后分布 | 结合节点是否真实改变状态判断,不用数量直接判水或赶 |
517
+ | 对话密度 | 对话字数 / 全文字数 × 100% | 同题材、同平台样本 | 只描述文本倾向;对白功能与无对白场景的推进方式另行判断 |
518
+ | 冲突密度 | 冲突节点数 / 总节点数 × 100% | 同题材、同平台样本及本文压力来源 | 任务、证据、等待、空间和关系压力须另行记录,不用直接冲突占比代替张力判断 |
519
+ | 信息密度 | 信息节点数 / 总节点数 × 100% | 本文读者模型变化与后果篇幅 | 判断新信息是否可理解、会改写判断并得到消化,不设通用比例 |
527
520
 
528
521
  ### 节奏异常检测
529
522
 
530
- | 异常模式 | 检测条件 | 问题 |
531
- |----------|----------|------|
532
- | 节奏塌陷 | 连续2节冲突密度<15% | 读者可能弃文 |
533
- | 冲突过载 | 连续3节冲突密度>60% | 情绪疲劳 |
534
- | 信息洪峰 | 单节信息节点>50% | 读者消化不及 |
535
- | 对话荒漠 | 连续2节对话<20% | 文本偏干 |
536
- | 对话泛滥 | 单节对话>80% | 碎片化 |
537
- | 反转密度过载 | 连续2节内出现≥3层反转 | 读者消化不及,震惊感递减(每层反转间隔建议≥800字) |
523
+ | 异常模式 | 文本信号 | 复核问题 |
524
+ |----------|----------|----------|
525
+ | 节奏塌陷 | 连续叙事单元没有状态变化、因果后果或读者模型更新 | 场景是在蓄力、完成任务,还是原地复述? |
526
+ | 压力过载 | 多次升级之间没有选择、损失、反应或后果 | 读者是否来得及理解每次升级改变了什么? |
527
+ | 信息洪峰 | 新事实连续出现,却没有查证、定位、行动或旧线索改义 | 哪些信息真正改变判断,哪些只是清单? |
528
+ | 对白失效 | 对话可整段删除,或只剩问答、复述和设定讲解 | 每轮是否改变信息、策略、权力、关系或行动? |
529
+ | 对白挤压场景 | 人物只说不做,空间、任务和后果消失 | 是否需要动作或留白承接,而不是按占比截断? |
530
+ | 反转过载 | 新反转在上一层尚未产生选择或后果时就将其抹掉 | 每层是否有证据、读者模型变化和可感后果? |
538
531
 
539
532
  ---
540
533
 
@@ -679,7 +672,7 @@
679
672
  - **本文件(material-decomposition.md)** = 方法论细节(Stage 2-6 操作步骤 + 情节节点 + 写作手法 + 情感线 + 节奏 + 共鸣)+ **质量标准唯一权威**(阈值/数值/计算方式)
680
673
  - **output-templates.md** = 具体输出格式模板(每个 Stage 的 markdown 模板 + 质量检查逐项 checklist 含 `[BLOCK]`/`[WARN]` 标注 + Stage 6 `_meta.json.structure_counts` 产出模板,数值引用本文件)
681
674
  - **output-contract.md** = 输出契约 SSOT:定义 Stage → 文件映射 + `_meta.json` schema(含 `structure_counts`)+ 下游 `story-short-write` 消费规范 + 验收接入点。与 `story-short-write` 副本字节一致,由 `scripts/check-shared-files.sh` 守护
682
- - **quality-checklist.md** = 短篇拆书的质量自检清单(评估**源文**质量时用,数值引用本文件)
683
- - **anti-ai-writing.md + banned-words.md** = 拆文报告**本身**的 AI 腔守门员(「拆文报告 AI 腔自检」调用扫描 `拆文报告.md`,不是源文滤镜)
675
+ - **source-story-quality.md** = 短篇拆书的质量自检清单(评估**源文**质量时用,数值引用本文件)
676
+ - **analysis-report-style.md** = 拆文报告**本身**的证据链与表达守门员(扫描 `拆文报告.md`,不是源文滤镜)
684
677
 
685
678
  对照标尺类文件的加载时机见 SKILL.md「参考资料」。
@@ -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
 
@@ -78,7 +78,7 @@
78
78
 
79
79
  <!-- output to: 情节节点.md(独立成文)+ 拆文报告.md(情节节点清单段镜像) -->
80
80
 
81
- > 方法论与节点数量字数分档表详见 material-decomposition.md「情节节点提取规则」(唯一权威)。
81
+ > 提取方法论与节点边界详见 material-decomposition.md「情节节点提取规则」(唯一权威)。
82
82
 
83
83
  ### 节点模板
84
84
 
@@ -122,7 +122,7 @@ N2 **自我认知**:类型{转折} | 情绪{心酸}{-5} | 涉及{沈暮月}
122
122
 
123
123
  ### A. 情感曲线
124
124
 
125
- 至少 max(5, 节数) 个节点,含字数位置,每个节点标注钩子类型:
125
+ 至少 5 个节点,取点落在情绪立场、期待或压力实际变化处,含字数位置,每个节点标注钩子类型:
126
126
 
127
127
  | 位置 | 字数 | 节点序号 | 情绪 | 强度与方向 | 触发事件 | 钩子类型 |
128
128
  |------|------|----------|------|------------|----------|----------|
@@ -242,12 +242,12 @@ N2 **自我认知**:类型{转折} | 情绪{心酸}{-5} | 涉及{沈暮月}
242
242
 
243
243
  #### 对话手法
244
244
 
245
- > 对话占比的标准范围见 material-decomposition.md「节奏分析」,据此判断偏高/偏低。
245
+ > 对话占比只描述该文本。判断须引用具体场景功能,并与同题材、同平台对标样本比较;不套通用范围。
246
246
 
247
247
  | 指标 | 数值 | 评价 |
248
248
  |------|------|------|
249
- | 对话占比 | {X%} | {标准/偏高/偏低} |
250
- | 潜台词率 | {X%} | {高手>60%/中等/偏低} |
249
+ | 对话占比 | {X%} | {该文本倾向/相对对标偏高/相对对标偏低,并说明场景功能} |
250
+ | 潜台词率 | {X%} | {结合告知/求救/试探/回避等具体场景说明效果,不以越高越好} |
251
251
  | 对话模式 | {审判式/压制式/信息差式/推拉式/称呼变化} | {具体说明} |
252
252
 
253
253
  #### 时间操控
@@ -413,9 +413,9 @@ N2 **自我认知**:类型{转折} | 情绪{心酸}{-5} | 涉及{沈暮月}
413
413
 
414
414
  | 指标 | 数值 | 判断 |
415
415
  |------|------|------|
416
- | 事件密度 | {X个/千字} | {标准/偏高/偏低} |
417
- | 对话密度 | {Y%} | {标准/偏高/偏低} |
418
- | 冲突密度 | {Z%} | {标准/偏高/偏低} |
416
+ | 事件密度 | {X个/千字} | {文本分布与真实状态变化} |
417
+ | 对话密度 | {Y%} | {文本倾向、对白功能与无对白推进方式} |
418
+ | 冲突密度 | {Z%} | {直接冲突与其他压力来源的关系} |
419
419
 
420
420
  ### _meta.json.structure_counts 产出模板
421
421
 
@@ -470,14 +470,14 @@ N2 **自我认知**:类型{转折} | 情绪{心酸}{-5} | 涉及{沈暮月}
470
470
 
471
471
  ### 节奏指标
472
472
 
473
- > 各维度「标准范围」的权威数值见 material-decomposition.md「节奏分析」节奏指标表,填表时据此判断。
473
+ > 各维度数值只作文本描述。判断须回到具体节点、状态变化和后果,并在存在对标时与同题材、同平台样本比较。
474
474
 
475
475
  | 维度 | 数值 | 判断 |
476
476
  |------|------|------|
477
- | 事件密度 | {N}个/千字 | {标准/偏高/偏低} |
478
- | 对话密度 | {X%} | {标准/偏高/偏低} |
479
- | 冲突密度 | {X%} | {标准/偏高/偏低} |
480
- | 信息密度 | {X%} | {标准/偏高/偏低} |
477
+ | 事件密度 | {N}个/千字 | {文本分布与真实状态变化} |
478
+ | 对话密度 | {X%} | {文本倾向、对白功能与无对白推进方式} |
479
+ | 冲突密度 | {X%} | {直接冲突与任务/证据/空间/关系压力的关系} |
480
+ | 信息密度 | {X%} | {读者模型变化与消化效果} |
481
481
 
482
482
  ### 逐节节奏分布
483
483
 
@@ -489,7 +489,7 @@ N2 **自我认知**:类型{转折} | 情绪{心酸}{-5} | 涉及{沈暮月}
489
489
 
490
490
  | 异常类型 | 位置 | 说明 |
491
491
  |----------|------|------|
492
- | {节奏塌陷/冲突过载/信息洪峰/对话荒漠/对话泛滥} | {节N} | {具体说明} |
492
+ | {节奏塌陷/压力过载/信息洪峰/对白失效/对白挤压场景/反转过载} | {节N} | {具体说明} |
493
493
 
494
494
  如无异常,注明"节奏无明显异常"。
495
495
 
@@ -503,7 +503,7 @@ N2 **自我认知**:类型{转折} | 情绪{心酸}{-5} | 涉及{沈暮月}
503
503
 
504
504
  ## 质量检查必填字段
505
505
 
506
- Stage 完成前逐项检查,缺一即不完整。**数值阈值(节点密度、对话占比等)的唯一权威定义见 material-decomposition.md「质量标准」,本表只列检查项不复述数值。**
506
+ Stage 完成前逐项检查,缺一即不完整。**节点密度、对话占比等只作结构化描述;质量判断须引用具体场景功能、状态变化和同题材对标,不设通用数值阈值。**
507
507
 
508
508
  **标注约定**:
509
509
 
@@ -516,11 +516,11 @@ Stage 完成前逐项检查,缺一即不完整。**数值阈值(节点密度
516
516
  - [ ] 结局类型已标注 `[WARN]`
517
517
  - [ ] POV 已识别 `[WARN]`
518
518
  - [ ] 叙事时间线已标注 `[WARN]`
519
- - [ ] 情节节点数量在密度指引范围内(按字数分档,见 material-decomposition.md「情节节点提取规则」) `[BLOCK]`
519
+ - [ ] 情节节点覆盖全文真实变化,没有为凑数量重复记录同一事件(见 material-decomposition.md「情节节点提取规则」) `[BLOCK]`
520
520
  - [ ] 每个节点有情绪标记(类型 + 强度值) `[BLOCK]`
521
521
 
522
522
  **Stage 3(情感线+爆点)**:
523
- - [ ] 至少 max(5, 节数) 个情感节点,每个有字数位置、强度值和方向(虐-9~爽+9) `[BLOCK]`
523
+ - [ ] 至少 5 个情感节点,覆盖每一处情绪立场、期待或压力变化,每个有字数位置、强度值和方向(虐-9~爽+9) `[BLOCK]`
524
524
  - [ ] 每个节点标注了钩子类型(含"无") `[WARN]`
525
525
  - [ ] 曲线特征 5 项齐全(起始/走向/极值/方向差/翻转次数) `[BLOCK]`
526
526
  - [ ] 爆点分析 6 维度齐全(铺垫/积累/延迟/爆发点/余波/印象) `[BLOCK]`