@oh-story/dsh 0.1.4 → 0.1.6

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 +2707 -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
@@ -5,49 +5,50 @@
5
5
  ---
6
6
 
7
7
  **本文件职责**(其他内容去哪看):
8
- - 本文件只管「贯穿道具的三次出现编排规则」,不管「羁绊铺设」(羁绊功能见 emotional-methods.md)
8
+ - 本文件只管「贯穿道具的三次出现编排规则」;情绪功能按任务 profile 读取 long-emotional-methods.md 或 short-emotional-methods.md
9
9
  - 对话相关(含权力博弈的规则/模式/示例/操作指令)一律见 dialogue-mastery.md,本文件不重复
10
10
  - 本文件只管「开头事件密度指令」,不管「开头设计」(开头设计见 opening-design.md)
11
- - genre-writing-formulas.md 的「线索物贯穿法」提供简版规则;本文件的「贯穿道具系统」提供可执行设计模板
11
+ - 长篇题材声线走 genre-prose-cards.md,短篇结构走 short-genre-formulas.md;本文件的「贯穿道具系统」提供可执行设计模板
12
12
  - 本文件第 8 节「场景写法(三维度揉进)」是 Phase 3 的写作方法,format-and-structure.md 的「小节结构」是结构规范
13
- - 本文件「贯穿道具系统」只规定物件的三次出现编排时机和意义翻转规则;物件的初始情感含义设计(选什么物件、承载什么羁绊)由 emotional-methods.md 负责(信物型物件与羁绊铺设功能重叠,但视角不同)
13
+ - 本文件「贯穿道具系统」只规定物件的跨场景编排和意义翻转;初始情感含义由当前 long/short profile 的情绪方法负责
14
14
 
15
15
  ---
16
16
 
17
- ## 1. 身体细节替代情绪词
17
+ ## 1. 情绪落地:不把身体微动作当默认答案
18
18
 
19
19
  ### 规则
20
20
 
21
- 关键情绪节点禁止直接写出情绪词,用身体状态、物理损伤、日常动作替代;低强度过场情绪可一笔直写("他有点烦"),不必处处外化。
21
+ 情绪没有固定译法。上下文已经让读者感到,就不另补反应;情绪推动了剧情,就优先写角色的选择、台词、策略、关系变化、物件变化或实际后果;一句直写最准确时可以直写("他听烦了")。身体状态只是候选之一,只有它带来新信息、影响动作,或确实属于这个角色和这个场景时才写。
22
22
 
23
- ### 替换操作
23
+ ### 落地顺序
24
24
 
25
- 扫描正文中的情绪词,逐个替换:
25
+ 写到情绪节点时按下面顺序判断,不做“情绪词逐个替换”:
26
26
 
27
- | 禁止 | 替换为 |
28
- |------|--------|
29
- | 心痛/心碎 | 手指掐进肉里自己不知道疼 / 她把茶杯放下,吹了吹浮沫,没喝 |
30
- | 悲伤/难过 | 他把外套叠了三叠,放回衣柜最里面那一层 |
31
- | 愤怒/气得发抖 | 她手背上的青筋一根根暴起来 |
32
- | 害怕/恐惧 | 他的手指碰到门把手又缩回来,碰了三次才握住 |
33
- | 委屈 | 她咬着下嘴唇,咬出一道白印,松开后迅速红了 |
34
- | 绝望 | 他坐在那里,烟灰掉了一裤腿也没有弹 |
35
- | 心如死灰 | 她把手机翻过来扣在桌上,再没拿起来过 |
27
+ 1. **上下文已经成立**:前面的冲突、对话或结果足够让读者看懂,删掉补充说明,不再加一个动作尾巴。
28
+ 2. **情绪改变下一步**:写角色因此说了什么、没说什么、选了哪条路、改了什么策略、付了什么代价。
29
+ 3. **场内事物能承载变化**:写正在处理的合同、药、饭、门、消息、工具出了什么变化;物件必须来自当前场景,不临时搬一只茶杯来表演情绪。
30
+ 4. **身体确实受影响**:写动作失败、疼痛、失衡、伤势或可见后果。只有“指尖动一下、指节白、嘴唇抿、目光移开、呼吸一顿”而没有后果,通常可以删。
31
+ 5. **直写更准更省**:低强度或过场情绪可以一句直写,不必为避开一个普通情绪词绕成三十字表演。
36
32
 
37
- 右列只示意方向,禁止照抄:每次按角色、场景、道具自造写法,同一写法全书至多出现 1 次;照抄或复用,替换产物本身就成了新的模板指纹。
33
+ 同一节点只取最有信息量的一种,除非情绪升级确实产生连续后果,不把“动作 + 身体 + 比喻 + 心理解说”叠成四重注释。
38
34
 
39
- ### 身体部位速查
35
+ ### 好细节的功能
40
36
 
41
- 写法:用具体部位 + 具体动作/状态,不写抽象感受。
37
+ | 情况 | 处理 |
38
+ |------|------|
39
+ | 上下文已显出不耐烦 | 直接进入下一句对话,或一句“他听烦了”带过 |
40
+ | 愤怒使谈判改变 | 写他撤回报价、叫停合作或当面追问;变化比攥拳更有信息 |
41
+ | 紧张妨碍正在做的事 | 可以写笔尖划坏签名、钥匙插错锁孔等具体后果 |
42
+ | 身体细节只是在句尾标注情绪 | 删除;不要换一套部位或同义动作 |
42
43
 
43
- | 部位 | 句式模板 |
44
- |------|----------|
45
- | 手/手指 | 「她的手搁在膝盖上,指尖一下一下掐着裙子的褶子」 |
46
- | 眼睛/瞳孔 | 「他瞳孔缩了一下,很快又恢复平静」 |
47
- | 嘴唇 | 「嘴唇抿成一条线,半天没松开」 |
48
- | 呼吸 | 「她吸了一口气,像是要说什么,又慢慢吐了出来」 |
49
- | 背/肩膀 | 「他的背挺得很直,直到出了门才塌下来」 |
50
- | 伤疤/淤青 | 「袖口往上滑了一截,露出手腕上一圈旧疤」 |
44
+ ### 反套话四问
45
+
46
+ 逐章检查重点情绪段,并指出对应原句;不是要求每段补一种反应:
47
+
48
+ 1. 删掉这处身体/语气细节,信息、选择、关系或物理结果有损失吗?没有就删。
49
+ 2. 换个人名、换个房间仍然成立吗?成立说明它可能是通用表演,不是角色细节。
50
+ 3. 本章是否反复出现“部位 + 轻微动作/状态 + 一下”,尤其指尖、指节、目光、嘴唇、呼吸、袖口?命中后回到整段重写或删除,不做同义词轮换。
51
+ 4. 同一情绪是否已经被对话、上下文和动作重复解释?只留最有力的一处。
51
52
 
52
53
  ---
53
54
 
@@ -119,34 +120,33 @@
119
120
 
120
121
  ---
121
122
 
122
- ## 5. 一动一静节奏
123
+ ## 5. 动静有起伏,不按节配额
123
124
 
124
125
  ### 规则
125
126
 
126
- 每个小节内部交替动作和安静。动后必静,静后可动。
127
+ 一章整体要有推进与停顿的起伏,但不要求每个小节各塞一个“动”和“静”。停顿可以来自信息悬置、对话空白、环境压力或角色暂不行动,不等于安排擦灰、理衣领一类微小动作。
127
128
 
128
129
  ### 动与静的分类
129
130
 
130
131
  | 类型 | 内容 | 示例 |
131
132
  |------|------|------|
132
133
  | 动 | 物理冲击、暴力、冲突爆发 | 砍人、摔东西、打耳光、吐血、掀桌子 |
133
- | 静 | 日常细节、微小动作、安静观察 | 擦灰、喂粥、叠衣服、吹浮沫、理衣领 |
134
+ | 静 | 信息悬置、对话空白、环境压力、等待或必要的日常过程 | 回信迟迟没来、全桌没人接话、雨声盖住门外脚步 |
134
135
 
135
136
  ### 操作指令
136
137
 
137
- - 每个小节必须包含 ≥ 1 个「动」+ ≥ 1 个「静」
138
- - 不允许连续 2 节全「动」(暴力疲劳)
139
- - 不允许连续 2 节全「静」(节奏拖沓)
140
- - 情绪最高点(打脸/反转/揭露)用「动」
141
- - 情绪最低点(心死/余韵/释然)用「静」
138
+ - 按整章和场景需要安排动静,不给每个小节设数量指标
139
+ - 连续多节全「动」时复核是否造成暴力疲劳;追逐/战斗有意连续可保留
140
+ - 连续多节全「静」时复核是否停滞;等待/压迫有意延长可保留
141
+ - 情绪高低不对应固定动作类型:爆点可以突然安静,低谷也可以持续劳动
142
142
 
143
143
  ### 节奏编排示例
144
144
 
145
145
  ```
146
146
  节5(动):萧衍一声令下,打了萧琅二十棍
147
- 节6(静):萧衍蹲下来,把儿子身上的灰一点一点擦掉,理了理衣领
147
+ 节6(静):报数停了,殿里没人替萧琅求情
148
148
  节7(动):王氏扑过来,跪在地上磕头
149
- 节8(静):萧衍没看她,把儿子抱起来,走了
149
+ 节8(静):王氏跪在原地,只听见宫门落锁
150
150
  ```
151
151
 
152
152
  ---
@@ -201,10 +201,10 @@
201
201
 
202
202
  | 检查项 | 偏短原因 | 补救 |
203
203
  |--------|----------|------|
204
- | 子事件三维度都揉进了? | 只有动作没有感官锚点和身体反应 | 揉进感官细节和身体动作(见第8节) |
204
+ | 关键子事件读得懂吗? | 现场、因果或角色下一步缺了必要信息 | 只补真正缺失的维度;不为凑齐三项补感官或身体动作(见第8节) |
205
205
  | 对话只有 1-2 轮? | 缺少对话交锋 | 加一轮权力博弈对话(见第3节) |
206
- | 有情绪词(心痛/悲伤/愤怒)? | 用了抽象情绪词 | 替换为身体细节(见第1节) |
207
- | 三维度揉进后仍偏短? | 缺少对话或回忆 | 加一轮对话(第3节)或简短回忆(第7节扩展规则) |
206
+ | 情绪信息落地了吗? | 只贴标签,或又用无功能微动作重复解释 | 优先落到选择、台词、物件和后果;必要时直写,身体细节须有功能(见第1节) |
207
+ | 仍偏短且关键 beat 写薄? | 冲突、选择、代价或关系变化没有演到位 | 回到细纲内已有事件补交锋与后果;没有内容就补纲,不拿感官/回忆注水 |
208
208
 
209
209
  ### 子事件不够时怎么扩
210
210
 
@@ -240,7 +240,7 @@ IF 主事件是一连串动作 → 加「递进」:动作引发的连锁反应
240
240
  - 为凑字数加角色内心独白总结
241
241
  - 为凑字数让角色做无意义的动作
242
242
  - 为显得自然而加流程细节;删掉无损就删
243
- - 为凑字数用情绪词代替身体细节(反过来才对)
243
+ - 为凑字数重复解释情绪,或给每段补一个无功能身体反应
244
244
 
245
245
  ---
246
246
 
@@ -250,7 +250,7 @@ IF 主事件是一连串动作 → 加「递进」:动作引发的连锁反应
250
250
 
251
251
  细纲各字段是本章"要发生什么"的规格,**不是正文的形状**。照着细纲的形状逐格填,正文就成了一条一条交代的电报体、一拍一句平推的生硬解说——这是"照抄大纲形状",和照抄范例形状同属 AI 味来源。
252
252
 
253
- - 情节点序列是"要发生什么"的清单,不是句子模板:不要一个情节点写成一句或一段、按序平推;把每个点演成角色此刻可感知的动作、对话、物件和身体反应——**演出来,不是交代出来**。
253
+ - 情节点序列是"要发生什么"的清单,不是句子模板:不要一个情节点写成一句或一段、按序平推;把每个点演成角色此刻可感知的选择、动作、对话、物件、结果,必要时才用身体反应——**演出来,不是交代出来**。
254
254
  - 同一约束如果在「核心事件 / 内容概括 / 情节安排 / 情节点」里重复出现,生成前只合并成**一个语义点**;重复字段不是强调,更不是四次复述额度。正文不得沿用提纲里反复出现的同一措辞逐项交代。
255
255
  - 五段式(起因/发展/转折/高潮/结尾)是给细纲作者的功能拆解,不是正文的五个自然段;正文不必逐段顺叙,也不必一段对一格。
256
256
  - "谁做了什么"的概括句、"A→B→C"箭头链、"收束到什么状态"是规划口径,不要原样搬进叙述。
@@ -276,19 +276,19 @@ IF 主事件是一连串动作 → 加「递进」:动作引发的连锁反应
276
276
 
277
277
  ### 规则
278
278
 
279
- 每个子事件不是一句话就完,要包含三个维度:发生了什么、主角注意到什么、身体怎么回应。三个维度同时揉进同一段连续正文,不按维度分段写。
279
+ 关键子事件不能只剩一句提纲概括。发生是主干;感知和反应只在提供新信息时加入,并与发生织进同一镜头,不按维度分段,也不要求三项齐全。
280
280
 
281
281
  ### 三维度揉进规则
282
282
 
283
- 详写的子事件 ≥100-150 字:三个维度承载不同信息(发生、感知、反应),织在同一段里,不各写各的。但不是每个子事件都写满——过场、赶路、信息交代类子事件 1-2 句带过即可(见「疏密分配」),把字数预算让给情绪节点。
283
+ 发生、感知、反应是可选的信息维度,不是逐段配额。详写的关键子事件可以把其中确有内容的维度织在同一镜头里;上下文已经清楚的维度留空,不为凑齐三项补感官或身体动作。过场、赶路、信息交代类子事件 1-2 句带过即可(见「疏密分配」),把字数预算让给情绪节点。
284
284
 
285
285
  | 维度 | 内容 | 要点 |
286
286
  |---|---|---|
287
287
  | 发生 | 事情出现了 | 1-2句,包含一个具体细节 |
288
- | 感知 | 主角注意到什么 | 至少1个感官细节(视觉+触感/听觉/嗅觉),聚焦一个物件或一个身体部位 |
289
- | 反应 | 身体如何回应 | 具体的身体动作(手/眼/呼吸/姿势),可含一句极短的心理定格 |
288
+ | 感知 | 主角注意到什么 | 只取会改变理解、判断或气氛的一处声音、物件、空间或身体感受,不按感官凑数 |
289
+ | 反应 | 角色接下来怎么办 | 可以是选择、台词、策略、任务动作、明确感受或有后果的身体反应,不默认写微动作 |
290
290
 
291
- 任务卡点写法同样按三维度揉进:发生 = 事情办不下去;感知 = 被退回的纸、扣住的物件、停住的动作、对方半句话等具体凭据;反应 = 角色改策略、付代价、求助、硬闯、退让或记下一笔。不要把“为什么被卡住”解释成一段说明书,也不要在 scene 末尾另补动作尾巴来解释意义。
291
+ 任务卡点写法可从三维中取需要的内容:发生 = 事情办不下去;感知 = 被退回的纸、扣住的物件、对方半句话等具体凭据;反应 = 角色改策略、付代价、求助、硬闯、退让或记下一笔。不要把“为什么被卡住”解释成一段说明书,也不要在 scene 末尾另补动作尾巴来解释意义。
292
292
 
293
293
  ### 反模式:堆叠式描写(绝对禁止)
294
294
 
@@ -305,16 +305,16 @@ IF 主事件是一连串动作 → 加「递进」:动作引发的连锁反应
305
305
 
306
306
  ### 正确写法:揉进式
307
307
 
308
- 三个维度融进同一段连续正文,读者读到一个完整瞬间:
308
+ 需要的维度融进同一段连续正文,读者读到一个完整瞬间:
309
309
 
310
310
  > ✅ **揉进式(正确)**:
311
311
  > 林父左手压着文书,右手拿笔往纸上落,笔尖一触纸面就偏了,从肘到腕止不住地抖,那一横斜着拖出去。他顿了顿,把笔往下压,重写,写完的"林"字撇是歪的,笔在手里还是没稳住。
312
312
 
313
- → 发生、感知、反应在一段里同时呈现,读者看到的是一个连贯画面
313
+ → 这里的身体反应改变了落笔结果,承担信息;不是为了证明人物紧张而另加微动作
314
314
 
315
315
  ### 自检方法
316
316
 
317
- 写完一段后,用"三指遮盖法"检查:分别遮住发生信息、感知信息、反应信息,看每个维度是否都有内容。如果某个维度缺失,把对应细节织回同一镜头里,不要在后面另起一段补写。
317
+ 对详写的关键场景用“三维遮盖法”:分别遮住发生、感知、反应,判断现有内容是否各自提供了不同信息。某维缺失不等于要补;只有读者因此看不懂现场、因果或角色下一步时,才把缺失信息织回同一镜头。若遮住一处身体/语气细节后什么也没损失,删掉它。逐章再做第 1 节“反套话四问”,指出原句处理,不用“已遵守”代替检查。
318
318
 
319
319
  ### 画面分段(防止一段到底)
320
320
 
@@ -373,10 +373,10 @@ IF 主事件是一连串动作 → 加「递进」:动作引发的连锁反应
373
373
 
374
374
  ### 子事件连接
375
375
 
376
- 子事件之间用身体动作连接,不用叙述过渡。连接动作 ~20字:
376
+ 子事件之间按真实关系连接:因果推进、对话接招、新信息、空间移动或角色下一步都可以;不规定必须插入身体动作,也不规定连接句长度。
377
377
 
378
- - ❌ "然后我翻到下一页。"
379
- - ✅ "我把账本搁在膝盖上,手心出一层薄汗。"
378
+ - ❌ 为了过渡另补“我把账本搁在膝盖上,手心出了一层薄汗。”
379
+ - ✅ “最后一笔支出没有收据,下一页却夹着他的签名。”(新信息直接推动下一拍)
380
380
 
381
381
  ### 感知素材库
382
382
 
@@ -391,9 +391,9 @@ IF 主事件是一连串动作 → 加「递进」:动作引发的连锁反应
391
391
  ### 三维度的边界
392
392
 
393
393
  - ✓ 感知是主角主动注意到的细节(有注意力的焦点)
394
- - ✓ 反应是具体的身体动作(手、眼、呼吸、姿势)
394
+ - ✓ 反应是角色受此影响后的下一步,可落在选择、台词、策略、任务动作、明确感受或有后果的身体变化
395
395
  - ✗ 感知不能是装饰性场景描写("阳光洒在窗台上")
396
- - ✗ 反应不能是情绪词("心如刀割")
396
+ - ✗ 反应不能只用无功能微动作给已经清楚的情绪再贴一次标签
397
397
  - ✗ 三个维度不能重复表达同一个信息
398
398
  ---
399
399
 
@@ -1,8 +1,8 @@
1
1
  ---
2
2
  name: story-short-analyze
3
- version: 3.0.0
3
+ version: 3.1.0
4
4
  description: "短篇网文拆文。拆解爆款短篇小说(番茄短篇 / 故事会 / 知乎盐选 / 追妻 / 世情 / 重生 / 虐渣等通俗题材)的故事核、结构、情感线、反转设计、写作手法、共鸣层次。单一全量拆解管道:跑完 Stage 2-6 产出完整拆文报告,落盘到 拆文库/{书名}/,下游 story-short-write 同时读拆文报告 + 情节节点 + 写作手法 + 原文 + _meta.json 写下一篇。触发方式:/story-short-analyze、/短篇拆文、「拆短篇」「拆这篇短文」「短篇拆文」「精细拆解短篇」「8000 字短篇拆解」「番茄短篇拆文」「故事会拆解」「盐言故事拆解」「分析这篇短篇」——均进入同一管道。"
5
- metadata: {"openclaw":{"source":"https://github.com/worldwonderer/oh-story-claudecode"}}
5
+ metadata: {"openclaw":{"source":"https://github.com/zenstory-ai/oh-story-claudecode"}}
6
6
  ---
7
7
  # story-short-analyze:短篇网文拆文
8
8
 
@@ -44,7 +44,7 @@ word_count = 全文字数
44
44
 
45
45
  ```
46
46
  用户提到具体题材(追妻 / 重生 / 虐文 / ...)?
47
- ├─ 是 → 加载 genre-catalog.md 对应题材的「短篇视角」章节作为拆文标尺
47
+ ├─ 是 → 加载 analysis-short-genres.md 对应题材行作为短篇源文识别标尺
48
48
  └─ 否 → 关键词扫描确定题材;扫不到则 genre_detected = "通用",用通用模板(Stage 2-6)
49
49
  ```
50
50
 
@@ -64,8 +64,8 @@ word_count = 全文字数
64
64
  - 沙雕 / 脑洞 / 弹幕 / 系统 / 反套路 → 沙雕
65
65
  - 仙侠 / 修仙 / 门派 → 仙侠
66
66
 
67
- 题材作为「对照标尺」加载——见 `references/genre-catalog.md` 等文件首段「## 用作
68
- 拆文标尺时」说明。
67
+ 题材作为观察标尺加载——只比较源文的读者承诺、冲突载体和实际结算,不调用长篇阶段、
68
+ 卷级循环或黄金三章模型,也不按推荐比例判定源文合格与否。
69
69
 
70
70
  ### Step 4:续跑检查(lightweight resume)
71
71
 
@@ -140,7 +140,7 @@ word_count = 全文字数
140
140
 
141
141
  | 阶段 | 名称 | 输入 | 输出 | 完成标志 |
142
142
  |------|------|------|------|----------|
143
- | 2 | 结构+情节节点 | 全文 | 故事核 + 故事梗概 + 功能分段(4-6段,必须含开端/发展/高潮/结局)+ 情节节点清单。节点密度按字数分档,见 material-decomposition.md「情节节点提取」的字数分档表。 | 结构划分 ≥4 段 + 故事核已提取 |
143
+ | 2 | 结构+情节节点 | 全文 | 故事核 + 故事梗概 + 功能分段(4-6段,必须含开端/发展/高潮/结局)+ 情节节点清单。节点以语义变化为边界提取,见 material-decomposition.md「情节节点提取规则」。 | 结构划分 ≥4 段 + 故事核已提取 |
144
144
  | 3 | 情感线+爆点 | 故事核+结构划分+情节节点数据 | 情感曲线(≥5节点)+ 爆点分析(6维度)+ 期待感分析。 | 爆点分析 6 维度齐全 |
145
145
  | 4 | 反转+写作手法 | 节点+情感数据 | 前置反转检查 + 反转机制(铺垫≥2条)+ 写作手法(≥5项维度:POV/对话/时间/信息/其他)。 | 写作手法 ≥5 项 |
146
146
  | 5 | 人物+开头结尾 | 情节节点+全文 | 所有人物(分类+功能标签+功能评估)+ 开头分析(前50/100字)+ 结尾分析(收束检查)。 | 人物功能评估完成 |
@@ -173,14 +173,14 @@ word_count = 全文字数
173
173
 
174
174
  Stage 6 内容写完后,**不**立刻 append `6` 到 `stages_completed[]`。先跑三道检查:
175
175
 
176
- ### Step 1:拆文报告 AI 腔自检
176
+ ### Step 1:拆文报告表达自检
177
177
 
178
- 扫描 `拆文报告.md` 全文 against [references/banned-words.md](references/banned-words.md)
179
- 词表 + [references/anti-ai-writing.md](references/anti-ai-writing.md) 句式规则。
178
+ 按 [references/analysis-report-style.md](references/analysis-report-style.md) 扫描
179
+ `拆文报告.md` 全文的证据链和高风险表达。
180
180
  扫描时跳过源文引用——以 `>` 开头的引用行、以及表格中「关键台词 / 原文引用」列的引号直引不计入,只扫分析师本人写的措辞。
181
181
 
182
- - **命中** → 不写 `stages_completed[6]`,列出命中位置,提示用户人工修订**拆文报告
183
- 本身**的 AI 腔(不是源文——源文里有 AI 腔正常报告即可,但报告本身不能写成 AI 腔)。
182
+ - **命中** → 不写 `stages_completed[6]`,列出命中位置,修订**拆文报告本身**的
183
+ 证据不足、空转套话或越界推测;不要改写源文。
184
184
  - **未命中** → 继续「structure_counts 数值校验」。
185
185
 
186
186
  > 守门员定位:本节检查「我们写的拆文报告」;不要评价「源文是否 AI 写的」。
@@ -239,9 +239,8 @@ Stage 6 内容写完后,**不**立刻 append `6` 到 `stages_completed[]`。
239
239
  | [references/output-contract.md](references/output-contract.md) | 全程:Stage→文件映射 / `_meta.json` schema(含 structure_counts)/ 下游消费规范 / 验收接入点 |
240
240
  | [references/output-templates.md](references/output-templates.md) | 拆文时:输出模板 + 结构库 + 质量检查(含 [BLOCK]/[WARN] 标注) |
241
241
  | [references/material-decomposition.md](references/material-decomposition.md) | 拆文方法论:情节节点提取 + 写作手法 + 情感线 + 节奏分析 + 共鸣分析 + 人物规则 + **质量标准唯一权威** |
242
- | [references/quality-checklist.md](references/quality-checklist.md) | 评估**源文**质量时:短篇拆书的质量自检清单(评估对象的好坏,不是评估拆文报告本身) |
243
- | [references/anti-ai-writing.md](references/anti-ai-writing.md) | 「拆文报告 AI 腔自检」:扫描**拆文报告本身**的 AI 腔(不是源文滤镜) |
244
- | [references/banned-words.md](references/banned-words.md) | 「拆文报告 AI 腔自检」:拆文报告禁用词速查 |
242
+ | [references/source-story-quality.md](references/source-story-quality.md) | 评估**源文**质量时:短篇拆书的质量自检清单(评估对象的好坏,不是评估拆文报告本身) |
243
+ | [references/analysis-report-style.md](references/analysis-report-style.md) | 「拆文报告表达自检」:检查**报告本身**的证据链、高风险套话与推测边界(不是源文滤镜) |
245
244
 
246
245
  ### 按需加载(拆解对应题材 / 维度时作为对照标尺)
247
246
 
@@ -249,26 +248,27 @@ Stage 6 内容写完后,**不**立刻 append `6` 到 `stages_completed[]`。
249
248
  |------|----------|
250
249
  | [references/deconstruction-examples.md](references/deconstruction-examples.md) | 校准拆文方法时:3 个完整案例作为参照 |
251
250
  | [references/zhihu-style.md](references/zhihu-style.md) | 拆解知乎盐言故事时作为平台特性对照 |
252
- | [references/genre-catalog.md](references/genre-catalog.md) | 拆解特定题材时:加载对应题材的「短篇视角」章节作为标准模式 |
253
- | [references/hooks-chapter.md](references/hooks-chapter.md) | 拆解章节钩子设计时作为钩子类型对照 |
254
- | [references/hooks-suspense.md](references/hooks-suspense.md) | 拆解悬念设计时作为悬念分类对照 |
255
- | [references/hooks-paragraph.md](references/hooks-paragraph.md) | 拆解段落钩子时作为 11 种段落级钩子对照 |
256
- | [references/character-basics.md](references/character-basics.md) | 拆解人物基础设定时作为人设要素对照 |
257
- | [references/character-design-methods.md](references/character-design-methods.md) | 拆解人物内在矛盾时作为三层标签反差对照(contradiction_axis 来源) |
258
- | [references/character-relations.md](references/character-relations.md) | 拆解人物关系网时作为关系类型对照 |
259
- | [references/genre-core-mechanics.md](references/genre-core-mechanics.md) | 拆解题材核心梗与循环机制时作为机制对照 |
260
- | [references/genre-readers.md](references/genre-readers.md) | 拆解读者心理与期待管理时作为读者画像对照 |
251
+ | [references/analysis-short-genres.md](references/analysis-short-genres.md) | 拆解特定题材时:按短篇源文的识别锚点、读者承诺和结算归属判断主副类型 |
252
+ | [references/analysis-short-hooks.md](references/analysis-short-hooks.md) | 拆解段落/小节边界、钩子链与候选付费断点时作为短篇源文观察标尺 |
253
+ | [references/analysis-short-suspense.md](references/analysis-short-suspense.md) | 拆解主副问题、信息差、证据释放、阶段答案与回收时作为短篇源文观察标尺 |
254
+ | [references/analysis-paragraph-hooks.md](references/analysis-paragraph-hooks.md) | 拆解段落钩子时作为 11 种段落级钩子对照 |
255
+ | [references/analysis-character-basics.md](references/analysis-character-basics.md) | 拆解人物基础设定时作为人设要素对照 |
256
+ | [references/analysis-character-design.md](references/analysis-character-design.md) | 拆解人物内在矛盾时作为三层标签反差对照(contradiction_axis 来源) |
257
+ | [references/analysis-character-relations.md](references/analysis-character-relations.md) | 拆解人物关系网时作为关系类型对照 |
258
+ | [references/analysis-short-mechanics.md](references/analysis-short-mechanics.md) | 拆解核心梗、有限复现、规则兑现、代价与主角代理权时作为观察标尺 |
259
+ | [references/analysis-reader-profile.md](references/analysis-reader-profile.md) | 拆解读者心理与期待管理时作为读者画像对照 |
261
260
 
262
261
  ### 补充资料(拆 Stage 6「可复用结构」时按需对照)
263
262
 
264
- > **题材写作公式**:`references/genre-writing-formulas.md`(21 大题材公式作为
265
- > 「这篇是否合标」的对照标尺)
266
- > **通用写作技法**:`references/genre-writing-techniques.md`(情绪操控 / 感情线 /
263
+ > **短篇结构模式**:`references/analysis-short-patterns.md`(比较源文实际功能链、偏离方式
264
+ > 与失败条件;不按固定章位、百分比或线索数判“合标”)
265
+ > **通用写作技法**:`references/analysis-writing-techniques.md`(情绪操控 / 感情线 /
267
266
  > 震惊场景 / 喜剧机制——拆 reusable_structures.fail_mode 时引用「感情线四阶段推进法」表「禁忌」列)
268
267
  > **市场数据**:`references/real-market-data.md`(跨平台写作差异对照表)
269
268
 
270
- 所有 references 在 `story-short-analyze` 中都是**对照标尺**——用源文与文件描述的
271
- 标准模式做对比,找出该篇用了哪种、做得多到位,**不是**按文件指引写新作品。
269
+ 所有 references 在 `story-short-analyze` 中都是**观察标尺**——先报告源文实际发生了什么,
270
+ 再说明它接近、偏离或改造了哪种模式;不是按文件指引写新作品,也不从相邻长篇 Skill
271
+ 加载题材、节奏或质量资料。
272
272
 
273
273
  ---
274
274
 
@@ -1,4 +1,4 @@
1
- # 角色基础设计
1
+ # 源文角色基础分析标尺
2
2
 
3
3
  > 设计主角/配角/反派时加载。先看决策路由,选对模板,再按步骤操作。character-designer 主输出参考。
4
4
 
@@ -1,4 +1,4 @@
1
- # 角色设计操作手册
1
+ # 源文角色设计分析标尺
2
2
 
3
3
  > 用途:角色设计的方法指令集。按决策路由找到对应方法,按步骤执行。
4
4
 
@@ -1,4 +1,4 @@
1
- # 角色关系与感情线操作手册
1
+ # 源文角色关系分析标尺
2
2
 
3
3
  ## 用作拆文标尺时
4
4
 
@@ -1,4 +1,4 @@
1
- # 段落级钩子技法
1
+ # 源文段落钩子分析标尺
2
2
  短篇/段落级钩子类型、组合技法、禁忌、对话情绪递增、不公平伤害、围观者层级。用于段落内微钩子设计。
3
3
 
4
4
  ---
@@ -1,8 +1,8 @@
1
- # 读者心理与题材适配
1
+ # 源文读者心理分析标尺
2
2
 
3
3
  > **用途**:读者心理需求、题材生命力规律、跨网站适配、平台差异、书名/简介技法、代入感管理。选题和定位时对照使用。
4
4
  > **语气**:指令式——每个规律都要转化为选题、定位、书名、文案或开篇的可执行约束。
5
- > **配合**:题材结构骨架见 genre-writing-formulas.md,核心梗设计见 genre-core-mechanics.md。
5
+ > **配合**:短篇结构功能链见 analysis-short-patterns.md,核心机制观察见 analysis-short-mechanics.md。
6
6
 
7
7
  ## 用作拆文标尺时
8
8
 
@@ -0,0 +1,45 @@
1
+ # 拆文报告表达规范
2
+
3
+ > **用途**:只约束 `拆文报告.md` 中分析师自己写的文字,不用于改写或过滤源文。
4
+ > 源文中的套话、AI 腔、毒点都是可报告的观察对象;引用源文时保留原貌并标明位置。
5
+
6
+ ## 核心原则
7
+
8
+ 拆文报告要像一份可复核的分析记录:先给判断,再给文本证据、位置和作用。不要把报告写成正文,也不要借“润色”替源文补戏。
9
+
10
+ 每个重要判断至少包含三项:
11
+
12
+ 1. **结论**:使用了什么结构、技巧或失败模式。
13
+ 2. **证据**:原句短引、情节点或可定位的位置。
14
+ 3. **作用**:它改变了读者知道什么、期待什么或感受什么。
15
+
16
+ 证据不足时写“证据不足 / 待复核”,不要用笃定语气补全作者意图。
17
+
18
+ ## 报告自身的高风险表达
19
+
20
+ 以下模式出现在分析师措辞中时必须复核;源文直接引用不计:
21
+
22
+ - “不是 A,而是 B”“不是 A,不是 B,只是 C”等先否定再翻转的模板句。
23
+ - “不难发现”“显而易见”“毋庸置疑”“值得注意的是”等空转提示语。
24
+ - “命运的齿轮”“更大的风暴”“故事才刚刚开始”等正文式升华或预告。
25
+ - “淋漓尽致”“层层递进”“环环相扣”“令人窒息”等没有证据支撑的万能评价。
26
+ - 连续用“首先 / 其次 / 再次 / 最后”切碎本可直接陈述的观察。
27
+ - 只贴“节奏紧凑、人物立体、情绪饱满”等标签,不说明具体文本机制。
28
+ - 猜测作者心理:“作者想告诉我们”“作者显然意识到”。应改为可观察的文本效果。
29
+
30
+ ## 推荐句型
31
+
32
+ - `第 3 节先让读者知道证据存在,但隐去持有人;第 5 节才揭示持有人,因此形成两拍信息差。`
33
+ - `该段被归为关系反转,证据是母亲在前文始终回避称谓,而此处第一次直呼姓名。`
34
+ - `未发现足够铺垫:反转前只有结果提示,没有可回溯的行为线索。`
35
+ - `这句属于源文引用,不参与报告自身的表达检查。`
36
+
37
+ ## 交付前检查
38
+
39
+ - [ ] 每个核心判断都能定位到原文、情节点或统计结果。
40
+ - [ ] 原文直接引用与分析师措辞边界清楚。
41
+ - [ ] 没把题材公式当成合格答案;已说明源文如何符合、偏离或改造公式。
42
+ - [ ] 没把推测写成事实;不确定项已标“证据不足 / 待复核”。
43
+ - [ ] 已清理报告自身的否定翻转、空转提示、万能形容和升华句。
44
+ - [ ] 没有为了显得完整而虚构作者意图、读者反应或缺失情节。
45
+
@@ -0,0 +1,65 @@
1
+ # 短篇源文题材识别标尺
2
+
3
+ > 只用于识别和比较已经存在的短篇源文。它描述可观察的读者承诺、冲突载体与常见失效方式,不提供写作步骤,不拿长线开篇或卷级模型衡量短篇。
4
+
5
+ ## 使用方式
6
+
7
+ 先根据全文证据给出一个主类型,必要时再给一个副类型。题材名称不能只由标签、背景或单个桥段决定。
8
+
9
+ 每个题材判断都要回答:
10
+
11
+ 1. 源文持续交付的核心情绪是什么?
12
+ 2. 哪些可定位情节承担了这个承诺?
13
+ 3. 结尾实际结算了什么?
14
+ 4. 若存在混合题材,哪个负责主线,哪个只提供手段或氛围?
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
+ ```markdown
51
+ 主类型:{类型}
52
+ 副类型:{可选}
53
+ 定位证据:{节次/原句/情节点}
54
+ 主线所有权:{哪类冲突拥有高潮与结算}
55
+ 符合常见模式:{观察到的功能,不写合格/不合格}
56
+ 偏离或改造:{源文如何改变常见模式}
57
+ 不确定项:{证据不足/待复核}
58
+ ```
59
+
60
+ ## 失效检查
61
+
62
+ - 不把推荐比例、固定节数或某种平台模板当成题材成立条件。
63
+ - 不因出现“系统、修仙、历史”等标签就调用长篇升级与卷级标尺。
64
+ - 不用“必须有某场景”替代源文证据;缺少常见场景只说明偏离,不自动说明失败。
65
+ - 不把作者意图写成事实;只报告文本持续交付了什么。
@@ -0,0 +1,77 @@
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
+ 1. **预测变化**:边界是否让读者更新对嫌疑、关系、结果或代价的预测。
38
+ 2. **行动牵引**:下一段/节是否必须回应这个变化,而不是另开话题。
39
+ 3. **兑现质量**:回应是否交付证据、选择或后果,而非只重复问题。
40
+
41
+ 三个维度都成立,可以报告为关键钩子;只成立一个,报告为弱牵引或过渡边界。
42
+
43
+ ## 钩子链
44
+
45
+ 钩子链不是数量堆叠,而是前一问题的回应成为下一问题的原因。按下表追踪:
46
+
47
+ | 起点位置 | 问题 | 回应位置 | 回应交付 | 如何生成下一问题 |
48
+ |---|---|---|---|---|
49
+
50
+ 若后一个问题与前一个答案没有因果关系,报告为“新开谜面”;若连续多个问题没有局部回答,报告为“只抬不交”。
51
+
52
+ ## 付费断点
53
+
54
+ 付费断点是商业位置,钩子是叙事功能,两者不能互相证明。分析时分别检查:
55
+
56
+ - 断点是否落在未完成动作、证据归属变化、关系转向或真实两难上。
57
+ - 付费后是否尽快回应断点承诺。
58
+ - 回应是否推进主问题,而非用旁支拖延。
59
+ - 如果没有平台信息,只报告“候选强断点”,不推测实际收费位置。
60
+
61
+ ## 报告格式
62
+
63
+ ```markdown
64
+ 关键钩子:{位置、类型、边界前后变化}
65
+ 读者新问题:{具体问题}
66
+ 后续回应:{位置、交付}
67
+ 钩子链:{因果接力或断裂}
68
+ 付费断点:{已知/候选/证据不足}
69
+ 弱边界或假钩子:{位置与原因}
70
+ ```
71
+
72
+ ## 边界
73
+
74
+ - 可以统计实际钩子数,但不把固定数量作为源文质量门槛。
75
+ - 可以比较相邻小节的牵引差异,但不要求每节必须有强钩子。
76
+ - 不按固定字数检查章首或章尾;边界长度服从信息与动作。
77
+ - 不把围观者震惊、系统奖励或新地图自动判作钩子,必须证明它改变了读者问题。