@oh-story/dsh 0.1.3 → 0.1.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (524) hide show
  1. package/README.md +58 -12
  2. package/lib/client.js +2970 -537
  3. package/lib/client.js.map +4 -4
  4. package/lib/drama/manifest.json +218 -178
  5. package/lib/drama/skills/short-drama/SKILL.md +110 -117
  6. package/lib/drama/skills/short-drama/references/audience-reveal.md +14 -67
  7. package/lib/drama/skills/short-drama/references/contract-and-ownership.md +26 -77
  8. package/lib/drama/skills/short-drama/references/creator-documents.md +204 -0
  9. package/lib/drama/skills/short-drama/references/creator-workflow.md +73 -63
  10. package/lib/drama/skills/short-drama/references/knowhow-index.md +5 -0
  11. package/lib/drama/skills/short-drama/references/look-development.md +2 -3
  12. package/lib/drama/skills/short-drama/references/pickup-and-alternate.md +14 -48
  13. package/lib/drama/skills/short-drama/references/production-form-profiles.md +1 -1
  14. package/lib/drama/skills/short-drama/references/reference-roles.md +32 -135
  15. package/lib/drama/skills/short-drama/references/runtime-preflight.md +16 -19
  16. package/lib/drama/skills/short-drama/scripts/creator_markdown_check.py +1002 -0
  17. package/lib/drama/skills/short-drama/scripts/project_tool.py +485 -5
  18. package/lib/drama/skills/short-drama-assets/SKILL.md +59 -170
  19. package/lib/drama/skills/short-drama-assets/references/asset-review-checklist.md +18 -25
  20. package/lib/drama/skills/short-drama-assets/references/character-and-look.md +13 -15
  21. package/lib/drama/skills/short-drama-assets/references/continuity-delta.md +11 -14
  22. package/lib/drama/skills/short-drama-assets/references/continuity-lock.md +116 -0
  23. package/lib/drama/skills/short-drama-assets/references/identity-vs-variant.md +6 -12
  24. package/lib/drama/skills/short-drama-assets/references/occurrence-extraction.md +8 -11
  25. package/lib/drama/skills/short-drama-assets/references/prop-and-state.md +21 -2
  26. package/lib/drama/skills/short-drama-assets/references/stage-contract.md +12 -105
  27. package/lib/drama/skills/short-drama-assets/references/voice-direction.md +12 -32
  28. package/lib/drama/skills/short-drama-assets/scripts/asset_check.py +1 -1
  29. package/lib/drama/skills/short-drama-image-prompts/SKILL.md +45 -155
  30. package/lib/drama/skills/short-drama-image-prompts/references/character-and-look.md +12 -13
  31. package/lib/drama/skills/short-drama-image-prompts/references/common-recipe.md +12 -13
  32. package/lib/drama/skills/short-drama-image-prompts/references/edit-and-revision.md +39 -51
  33. package/lib/drama/skills/short-drama-image-prompts/references/location-plate.md +3 -4
  34. package/lib/drama/skills/short-drama-image-prompts/references/look-and-state-variant.md +15 -14
  35. package/lib/drama/skills/short-drama-image-prompts/references/lookdev-frame.md +11 -15
  36. package/lib/drama/skills/short-drama-image-prompts/references/production-sheet-recipes.md +1 -1
  37. package/lib/drama/skills/short-drama-image-prompts/references/prop-plate.md +4 -7
  38. package/lib/drama/skills/short-drama-image-prompts/references/review-and-fixtures.md +23 -23
  39. package/lib/drama/skills/short-drama-image-prompts/references/stage-contract.md +8 -65
  40. package/lib/drama/skills/short-drama-image-prompts/scripts/image_prompt_check.py +8 -8
  41. package/lib/drama/skills/short-drama-image-prompts/scripts/selftest.py +4 -2
  42. package/lib/drama/skills/short-drama-produce/SKILL.md +67 -15
  43. package/lib/drama/skills/short-drama-produce/references/adapter-contract.md +65 -8
  44. package/lib/drama/skills/short-drama-produce/references/providers/minimax-h3-video.md +85 -0
  45. package/lib/drama/skills/short-drama-produce/references/providers/seedance.md +27 -10
  46. package/lib/drama/skills/short-drama-produce/scripts/production_tool.py +362 -3
  47. package/lib/drama/skills/short-drama-produce/scripts/provider_adapters.py +627 -40
  48. package/lib/drama/skills/short-drama-produce/scripts/selftest.py +5 -4
  49. package/lib/drama/skills/short-drama-review/SKILL.md +61 -123
  50. package/lib/drama/skills/short-drama-review/references/anti-template-repair.md +10 -15
  51. package/lib/drama/skills/short-drama-review/references/production-quality-gates.md +15 -16
  52. package/lib/drama/skills/short-drama-review/references/project-calibration.md +7 -9
  53. package/lib/drama/skills/short-drama-review/references/review-method.md +8 -9
  54. package/lib/drama/skills/short-drama-review/references/rubric-assets-prompts.md +9 -13
  55. package/lib/drama/skills/short-drama-review/references/rubric-story-script.md +104 -4
  56. package/lib/drama/skills/short-drama-review/references/rubric-visual-motion.md +27 -19
  57. package/lib/drama/skills/short-drama-review/references/stage-contract.md +4 -63
  58. package/lib/drama/skills/short-drama-review/scripts/review_check.py +1 -1
  59. package/lib/drama/skills/short-drama-storyboard/SKILL.md +116 -238
  60. package/lib/drama/skills/short-drama-storyboard/assets/shot-template.jsonl +1 -1
  61. package/lib/drama/skills/short-drama-storyboard/references/blocking-playbooks.md +9 -34
  62. package/lib/drama/skills/short-drama-storyboard/references/comic-keyframe-lexicon.md +156 -0
  63. package/lib/drama/skills/short-drama-storyboard/references/coverage-audition.md +5 -10
  64. package/lib/drama/skills/short-drama-storyboard/references/keyframe-craft.md +12 -7
  65. package/lib/drama/skills/short-drama-storyboard/references/production-shot-grammar.md +19 -4
  66. package/lib/drama/skills/short-drama-storyboard/references/review-and-fixtures.md +27 -62
  67. package/lib/drama/skills/short-drama-storyboard/references/scene-visual-plan.md +16 -25
  68. package/lib/drama/skills/short-drama-storyboard/references/screenplay-to-keyframe-example.md +21 -23
  69. package/lib/drama/skills/short-drama-storyboard/references/shot-craft.md +8 -10
  70. package/lib/drama/skills/short-drama-storyboard/references/shot-revision-identity.md +9 -13
  71. package/lib/drama/skills/short-drama-storyboard/references/stage-contract.md +16 -71
  72. package/lib/drama/skills/short-drama-storyboard/scripts/storyboard_check.py +1 -1
  73. package/lib/drama/skills/short-drama-video-prompts/SKILL.md +123 -230
  74. package/lib/drama/skills/short-drama-video-prompts/assets/motion-spec.jsonl.md +6 -1
  75. package/lib/drama/skills/short-drama-video-prompts/assets/video-prompts.md +17 -1
  76. package/lib/drama/skills/short-drama-video-prompts/references/camera-audio-continuity.md +10 -8
  77. package/lib/drama/skills/short-drama-video-prompts/references/delivery-profile.md +24 -6
  78. package/lib/drama/skills/short-drama-video-prompts/references/generability.md +2 -2
  79. package/lib/drama/skills/short-drama-video-prompts/references/minimax-h3.md +154 -0
  80. package/lib/drama/skills/short-drama-video-prompts/references/motion-recipe.md +35 -27
  81. package/lib/drama/skills/short-drama-video-prompts/references/performance-action-timing.md +8 -11
  82. package/lib/drama/skills/short-drama-video-prompts/references/production-prompt-grammar.md +13 -10
  83. package/lib/drama/skills/short-drama-video-prompts/references/review-and-fixtures.md +34 -63
  84. package/lib/drama/skills/short-drama-video-prompts/references/seedance-2.0.md +41 -0
  85. package/lib/drama/skills/short-drama-video-prompts/references/seedance-2.5.md +66 -0
  86. package/lib/drama/skills/short-drama-video-prompts/references/stage-contract.md +17 -73
  87. package/lib/drama/skills/short-drama-video-prompts/references/target-model-profile.md +115 -0
  88. package/lib/drama/skills/short-drama-video-prompts/scripts/container_check.py +1 -1
  89. package/lib/drama/skills/short-drama-video-prompts/scripts/music_spec_check.py +1 -1
  90. package/lib/drama/skills/short-drama-write/SKILL.md +74 -268
  91. package/lib/drama/skills/short-drama-write/references/dialogue-craft.md +7 -0
  92. package/lib/drama/skills/short-drama-write/references/scene-handoff-capsule.md +17 -43
  93. package/lib/drama/skills/short-drama-write/references/screenplay-format.md +15 -15
  94. package/lib/drama/skills/short-drama-write/references/script-craft.md +208 -21
  95. package/lib/drama/skills/short-drama-write/references/stage-contract.md +11 -70
  96. package/lib/drama/skills/short-drama-write/scripts/duration_estimate.py +1 -1
  97. package/lib/drama/skills/short-drama-write/scripts/screenplay_index.py +2 -2
  98. package/lib/drama/skills/short-drama-write/scripts/voice_sheet_check.py +1 -1
  99. package/lib/index.js +971 -46
  100. package/lib/index.js.map +4 -4
  101. package/lib/novel-to-game/LICENSE +21 -0
  102. package/lib/novel-to-game/README.md +180 -0
  103. package/lib/novel-to-game/README_ZH.md +178 -0
  104. package/lib/novel-to-game/VERSION +1 -0
  105. package/lib/novel-to-game/examples/jin-ping-mei/build/BUILD_BRIEF.md +217 -0
  106. package/lib/novel-to-game/examples/jin-ping-mei/build/app/.vercelignore +3 -0
  107. package/lib/novel-to-game/examples/jin-ping-mei/build/app/RUN.md +130 -0
  108. package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/bg/compound_new_guofeng.webp +0 -0
  109. package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/cg/finale/fate_coda.webp +0 -0
  110. package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/cg/finale/meng.webp +0 -0
  111. package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/cg/finale/pan.webp +0 -0
  112. package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/cg/finale/pinger.webp +0 -0
  113. package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/cg/finale/xuee.webp +0 -0
  114. package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/cg/finale/yue.webp +0 -0
  115. package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/cg/group/inner_court_accord_five.webp +0 -0
  116. package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/cg/group/inner_court_afterglow_five.webp +0 -0
  117. package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/cg/group/inner_court_alliance.webp +0 -0
  118. package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/cg/group/public_day10.webp +0 -0
  119. package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/cg/group/public_day15.webp +0 -0
  120. package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/cg/group/public_day5.webp +0 -0
  121. package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/cg/group/title_new_guofeng.webp +0 -0
  122. package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/cg/joint/pan_pinger.webp +0 -0
  123. package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/cg/joint/pan_xuee.webp +0 -0
  124. package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/cg/joint/yue_meng.webp +0 -0
  125. package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/cg/joint/yue_pan.webp +0 -0
  126. package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/cg/joint/yue_pinger.webp +0 -0
  127. package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/cg/meng/explicit.webp +0 -0
  128. package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/cg/meng/prelude.webp +0 -0
  129. package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/cg/milestone/meng.webp +0 -0
  130. package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/cg/milestone/pan.webp +0 -0
  131. package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/cg/milestone/pinger.webp +0 -0
  132. package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/cg/milestone/xuee.webp +0 -0
  133. package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/cg/milestone/yue.webp +0 -0
  134. package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/cg/pan/explicit.webp +0 -0
  135. package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/cg/pan/prelude.webp +0 -0
  136. package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/cg/pinger/explicit.webp +0 -0
  137. package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/cg/pinger/prelude.webp +0 -0
  138. package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/cg/xuee/explicit.webp +0 -0
  139. package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/cg/xuee/prelude.webp +0 -0
  140. package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/cg/yue/explicit.webp +0 -0
  141. package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/cg/yue/prelude.webp +0 -0
  142. package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/heroine/meng/night.webp +0 -0
  143. package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/heroine/pan/night.webp +0 -0
  144. package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/heroine/pinger/night.webp +0 -0
  145. package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/heroine/xuee/night.webp +0 -0
  146. package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/heroine/yue/night.webp +0 -0
  147. package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/household/li_jiaoer.webp +0 -0
  148. package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/scene/gate_collector.webp +0 -0
  149. package/lib/novel-to-game/examples/jin-ping-mei/build/app/css/new-guofeng.css +1105 -0
  150. package/lib/novel-to-game/examples/jin-ping-mei/build/app/css/style.css +2539 -0
  151. package/lib/novel-to-game/examples/jin-ping-mei/build/app/index.html +18 -0
  152. package/lib/novel-to-game/examples/jin-ping-mei/build/app/js/assets.js +147 -0
  153. package/lib/novel-to-game/examples/jin-ping-mei/build/app/js/audio.js +332 -0
  154. package/lib/novel-to-game/examples/jin-ping-mei/build/app/js/data.js +7472 -0
  155. package/lib/novel-to-game/examples/jin-ping-mei/build/app/js/engine.js +13077 -0
  156. package/lib/novel-to-game/examples/jin-ping-mei/build/app/js/main.js +3028 -0
  157. package/lib/novel-to-game/examples/jin-ping-mei/build/app/js/text.js +32 -0
  158. package/lib/novel-to-game/examples/jin-ping-mei/build/app/package.json +10 -0
  159. package/lib/novel-to-game/examples/jin-ping-mei/build/app/vercel.json +23 -0
  160. package/lib/novel-to-game/examples/jin-ping-mei/build/art/generated-art.json +161 -0
  161. package/lib/novel-to-game/examples/jin-ping-mei/example.json +12 -0
  162. package/lib/novel-to-game/examples/jin-ping-mei/qa/README.md +31 -0
  163. package/lib/novel-to-game/examples/jin-ping-mei/qa/playable-model.json +99 -0
  164. package/lib/novel-to-game/examples/jin-ping-mei/qa/verification.json +41 -0
  165. package/lib/novel-to-game/examples/jin-ping-mei/qa/verify_playable_model.mjs +129 -0
  166. package/lib/novel-to-game/manifest.json +508 -0
  167. package/lib/novel-to-game/skills/game-art-direction/SKILL.md +73 -0
  168. package/lib/novel-to-game/skills/game-art-direction/agents/openai.yaml +4 -0
  169. package/lib/novel-to-game/skills/game-art-direction/references/art-direction-method.md +119 -0
  170. package/lib/novel-to-game/skills/game-build/SKILL.md +84 -0
  171. package/lib/novel-to-game/skills/game-build/agents/openai.yaml +4 -0
  172. package/lib/novel-to-game/skills/game-build/references/build-brief-contract.md +109 -0
  173. package/lib/novel-to-game/skills/game-build/references/generative-media-pipeline.md +56 -0
  174. package/lib/novel-to-game/skills/game-build/references/playable-model-contract.md +81 -0
  175. package/lib/novel-to-game/skills/game-build/references/tts-production-contract.md +37 -0
  176. package/lib/novel-to-game/skills/game-concept/SKILL.md +72 -0
  177. package/lib/novel-to-game/skills/game-concept/agents/openai.yaml +4 -0
  178. package/lib/novel-to-game/skills/game-concept/references/concept-method.md +94 -0
  179. package/lib/novel-to-game/skills/game-qa/SKILL.md +50 -0
  180. package/lib/novel-to-game/skills/game-qa/agents/openai.yaml +4 -0
  181. package/lib/novel-to-game/skills/game-qa/references/qa-contract.md +66 -0
  182. package/lib/novel-to-game/skills/game-qa/references/test-design-method.md +45 -0
  183. package/lib/novel-to-game/skills/game-world-design/SKILL.md +63 -0
  184. package/lib/novel-to-game/skills/game-world-design/agents/openai.yaml +4 -0
  185. package/lib/novel-to-game/skills/game-world-design/references/dialogue-design-method.md +59 -0
  186. package/lib/novel-to-game/skills/game-world-design/references/game-writing-craft.md +53 -0
  187. package/lib/novel-to-game/skills/game-world-design/references/narrative-design-method.md +84 -0
  188. package/lib/novel-to-game/skills/game-world-design/references/numeric-design-method.md +56 -0
  189. package/lib/novel-to-game/skills/game-world-design/references/world-design-method.md +124 -0
  190. package/lib/novel-to-game/skills/novel-game-analyze/SKILL.md +77 -0
  191. package/lib/novel-to-game/skills/novel-game-analyze/agents/openai.yaml +4 -0
  192. package/lib/novel-to-game/skills/novel-game-analyze/references/gameability-protocol.md +65 -0
  193. package/lib/novel-to-game/skills/novel-to-game/SKILL.md +71 -0
  194. package/lib/novel-to-game/skills/novel-to-game/agents/openai.yaml +4 -0
  195. package/lib/novel-to-game/skills/novel-to-game/references/intake-benchmark-reference.md +42 -0
  196. package/lib/novel-to-game/skills/novel-to-game/references/intake-method.md +51 -0
  197. package/lib/novel-to-game/skills/novel-to-game/references/pipeline-contract.md +65 -0
  198. package/lib/oh-story/manifest.json +419 -309
  199. package/lib/oh-story/roles/character-designer.md +4 -4
  200. package/lib/oh-story/roles/consistency-checker.md +1 -1
  201. package/lib/oh-story/roles/narrative-writer.md +41 -42
  202. package/lib/oh-story/roles/story-architect.md +19 -23
  203. package/lib/oh-story/roles/story-explorer.md +8 -5
  204. package/lib/oh-story/skills/browser-cdp/SKILL.md +1 -1
  205. package/lib/oh-story/skills/story/SKILL.md +16 -9
  206. package/lib/oh-story/skills/story/VERSION +1 -1
  207. package/lib/oh-story/skills/story/references/author-memory.md +163 -0
  208. package/lib/oh-story/skills/story/scripts/author_memory_commit.py +871 -0
  209. package/lib/oh-story/skills/story-cover/SKILL.md +1 -1
  210. package/lib/oh-story/skills/story-deslop/SKILL.md +10 -5
  211. package/lib/oh-story/skills/story-deslop/references/anti-ai-writing.md +2 -1
  212. package/lib/oh-story/skills/story-deslop/references/author-memory.md +163 -0
  213. package/lib/oh-story/skills/story-deslop/references/banned-words.md +6 -4
  214. package/lib/oh-story/skills/story-deslop/scripts/author_memory_commit.py +871 -0
  215. package/lib/oh-story/skills/story-deslop/scripts/check-ai-patterns.js +64 -1
  216. package/lib/oh-story/skills/story-import/SKILL.md +21 -8
  217. package/lib/oh-story/skills/story-import/references/format-and-structure.md +9 -10
  218. package/lib/oh-story/skills/story-import/references/structure-mapping-long.md +2 -2
  219. package/lib/oh-story/skills/story-import/references/structure-mapping-short.md +1 -1
  220. package/lib/oh-story/skills/story-import/references/tracking-transaction.md +14 -6
  221. package/lib/oh-story/skills/story-import/scripts/check-outline-contract.js +251 -0
  222. package/lib/oh-story/skills/story-import/scripts/tracking_commit.py +98 -9
  223. package/lib/oh-story/skills/story-import/scripts/wordcount_core.py +246 -0
  224. package/lib/oh-story/skills/story-long-analyze/SKILL.md +4 -4
  225. package/lib/oh-story/skills/story-long-scan/SKILL.md +1 -1
  226. package/lib/oh-story/skills/story-long-write/SKILL.md +35 -21
  227. package/lib/oh-story/skills/story-long-write/references/anti-ai-writing.md +2 -1
  228. package/lib/oh-story/skills/story-long-write/references/artifact-protocols.md +7 -3
  229. package/lib/oh-story/skills/story-long-write/references/author-memory.md +163 -0
  230. package/lib/oh-story/skills/story-long-write/references/banned-words.md +6 -4
  231. package/lib/oh-story/skills/story-long-write/references/cross-book-recall.md +6 -6
  232. package/lib/oh-story/skills/story-long-write/references/genre-prose-cards.md +1 -1
  233. package/lib/oh-story/skills/story-long-write/references/genre-readers.md +1 -1
  234. package/lib/oh-story/skills/{story-setup/references/agent-references/hooks-chapter.md → story-long-write/references/long-chapter-hooks.md} +5 -5
  235. package/lib/oh-story/skills/story-long-write/references/{quality-checklist.md → long-chapter-quality.md} +2 -1
  236. package/lib/oh-story/skills/story-long-write/references/long-format.md +42 -0
  237. package/lib/oh-story/skills/{story-setup/references/agent-references/genre-catalog.md → story-long-write/references/long-genre-catalog.md} +11 -97
  238. package/lib/oh-story/skills/story-long-write/references/{genre-core-mechanics.md → long-genre-mechanics.md} +1 -1
  239. package/lib/oh-story/skills/story-long-write/references/{reversal-toolkit.md → long-reversal.md} +18 -32
  240. package/lib/oh-story/skills/story-long-write/references/{hooks-suspense.md → long-suspense.md} +6 -6
  241. package/lib/oh-story/skills/story-long-write/references/opening-design.md +1 -1
  242. package/lib/oh-story/skills/story-long-write/references/outline-structure-theory.md +1 -1
  243. package/lib/oh-story/skills/story-long-write/references/style-genre-modules.md +1 -1
  244. package/lib/oh-story/skills/story-long-write/references/tracking-transaction.md +14 -6
  245. package/lib/oh-story/skills/story-long-write/references/workflow-chapter.md +32 -27
  246. package/lib/oh-story/skills/story-long-write/references/workflow-daily.md +5 -4
  247. package/lib/oh-story/skills/story-long-write/references/workflow-revision.md +2 -2
  248. package/lib/oh-story/skills/story-long-write/references/workflow-setup.md +17 -11
  249. package/lib/oh-story/skills/story-long-write/references/writing-craft.md +54 -54
  250. package/lib/oh-story/skills/story-long-write/scripts/author_memory_commit.py +871 -0
  251. package/lib/oh-story/skills/story-long-write/scripts/check-ai-patterns.js +64 -1
  252. package/lib/oh-story/skills/story-long-write/scripts/check-outline-contract.js +251 -0
  253. package/lib/oh-story/skills/story-long-write/scripts/storyctl.py +303 -0
  254. package/lib/oh-story/skills/story-long-write/scripts/tracking_commit.py +98 -9
  255. package/lib/oh-story/skills/story-long-write/scripts/wordcount_core.py +246 -0
  256. package/lib/oh-story/skills/story-review/SKILL.md +26 -17
  257. package/lib/oh-story/skills/story-review/references/anti-ai-writing.md +2 -1
  258. package/lib/oh-story/skills/story-review/references/author-memory.md +163 -0
  259. package/lib/oh-story/skills/story-review/references/banned-words.md +6 -4
  260. package/lib/oh-story/skills/story-review/references/{quality-checklist.md → review-quality.md} +22 -21
  261. package/lib/oh-story/skills/story-review/references/tracking-transaction.md +14 -6
  262. package/lib/oh-story/skills/story-review/scripts/author_memory_commit.py +871 -0
  263. package/lib/oh-story/skills/story-review/scripts/check-ai-patterns.js +64 -1
  264. package/lib/oh-story/skills/story-review/scripts/tracking_commit.py +98 -9
  265. package/lib/oh-story/skills/story-review/scripts/wordcount_core.py +246 -0
  266. package/lib/oh-story/skills/story-setup/SKILL.md +85 -41
  267. package/lib/oh-story/skills/story-setup/references/agent-references/agent-quality.md +72 -0
  268. package/lib/oh-story/skills/story-setup/references/agent-references/agent-reference-profiles.md +55 -0
  269. package/lib/oh-story/skills/story-setup/references/agent-references/anti-ai-writing.md +2 -1
  270. package/lib/oh-story/skills/story-setup/references/agent-references/banned-words.md +6 -4
  271. package/lib/oh-story/skills/story-setup/references/agent-references/format-and-structure.md +9 -10
  272. package/lib/oh-story/skills/story-setup/references/agent-references/genre-prose-cards.md +1 -1
  273. package/lib/oh-story/skills/story-setup/references/agent-references/genre-readers.md +1 -1
  274. package/lib/oh-story/skills/{story-short-analyze/references/hooks-chapter.md → story-setup/references/agent-references/long-chapter-hooks.md} +5 -5
  275. package/lib/oh-story/skills/story-setup/references/agent-references/long-emotional-methods.md +209 -0
  276. package/lib/oh-story/skills/{story-long-write/references/genre-catalog.md → story-setup/references/agent-references/long-genre-catalog.md} +11 -97
  277. package/lib/oh-story/skills/story-setup/references/agent-references/{genre-core-mechanics.md → long-genre-mechanics.md} +1 -1
  278. package/lib/oh-story/skills/story-setup/references/agent-references/long-quality.md +40 -0
  279. package/lib/oh-story/skills/{story-short-write/references/reversal-toolkit.md → story-setup/references/agent-references/long-reversal.md} +18 -32
  280. package/lib/oh-story/skills/{story-short-write/references/hooks-suspense.md → story-setup/references/agent-references/long-suspense.md} +6 -6
  281. package/lib/oh-story/skills/story-setup/references/agent-references/opening-design.md +1 -1
  282. package/lib/oh-story/skills/story-setup/references/agent-references/{emotional-methods.md → short-emotional-methods.md} +4 -4
  283. package/lib/oh-story/skills/{story-long-write/references/genre-writing-formulas.md → story-setup/references/agent-references/short-genre-formulas.md} +32 -44
  284. package/lib/oh-story/skills/story-setup/references/agent-references/short-quality.md +39 -0
  285. package/lib/oh-story/skills/story-setup/references/agent-references/{reversal-toolkit.md → short-reversal.md} +29 -23
  286. package/lib/oh-story/skills/story-setup/references/agent-references/{hooks-suspense.md → short-suspense.md} +31 -31
  287. package/lib/oh-story/skills/story-setup/references/agent-references/style-genre-modules.md +1 -1
  288. package/lib/oh-story/skills/story-setup/references/agent-references/writing-craft.md +55 -55
  289. package/lib/oh-story/skills/story-short-analyze/SKILL.md +28 -28
  290. package/lib/oh-story/skills/story-short-analyze/references/{character-basics.md → analysis-character-basics.md} +1 -1
  291. package/lib/oh-story/skills/story-short-analyze/references/{character-design-methods.md → analysis-character-design.md} +1 -1
  292. package/lib/oh-story/skills/story-short-analyze/references/{character-relations.md → analysis-character-relations.md} +1 -1
  293. package/lib/oh-story/skills/story-short-analyze/references/{hooks-paragraph.md → analysis-paragraph-hooks.md} +1 -1
  294. package/lib/oh-story/skills/story-short-analyze/references/{genre-readers.md → analysis-reader-profile.md} +2 -2
  295. package/lib/oh-story/skills/story-short-analyze/references/analysis-report-style.md +45 -0
  296. package/lib/oh-story/skills/story-short-analyze/references/analysis-short-genres.md +65 -0
  297. package/lib/oh-story/skills/story-short-analyze/references/analysis-short-hooks.md +77 -0
  298. package/lib/oh-story/skills/story-short-analyze/references/analysis-short-mechanics.md +82 -0
  299. package/lib/oh-story/skills/story-short-analyze/references/analysis-short-patterns.md +50 -0
  300. package/lib/oh-story/skills/story-short-analyze/references/analysis-short-suspense.md +98 -0
  301. package/lib/oh-story/skills/story-short-analyze/references/{genre-writing-techniques.md → analysis-writing-techniques.md} +21 -19
  302. package/lib/oh-story/skills/story-short-analyze/references/deconstruction-examples.md +1 -1
  303. package/lib/oh-story/skills/story-short-analyze/references/material-decomposition.md +21 -28
  304. package/lib/oh-story/skills/story-short-analyze/references/output-contract.md +1 -1
  305. package/lib/oh-story/skills/story-short-analyze/references/output-templates.md +17 -17
  306. package/lib/oh-story/skills/story-short-analyze/references/{quality-checklist.md → source-story-quality.md} +28 -49
  307. package/lib/oh-story/skills/story-short-analyze/references/zhihu-style.md +2 -2
  308. package/lib/oh-story/skills/story-short-scan/SKILL.md +1 -1
  309. package/lib/oh-story/skills/story-short-write/SKILL.md +78 -55
  310. package/lib/oh-story/skills/story-short-write/references/author-memory.md +163 -0
  311. package/lib/oh-story/skills/story-short-write/references/banned-words.md +6 -4
  312. package/lib/oh-story/skills/story-short-write/references/cross-book-recall.md +3 -3
  313. package/lib/oh-story/skills/story-short-write/references/emotional-methods.md +4 -4
  314. package/lib/oh-story/skills/story-short-write/references/genre-styles//344/270/226/346/203/205/346/211/223/350/204/270.md +3 -3
  315. package/lib/oh-story/skills/story-short-write/references/genre-styles//345/217/214/347/224/267/344/270/273.md +2 -2
  316. package/lib/oh-story/skills/story-short-write/references/genre-styles//345/244/215/344/273/207/346/211/223/350/204/270.md +3 -3
  317. package/lib/oh-story/skills/story-short-write/references/genre-styles//345/256/205/346/226/227/345/256/253/346/226/227.md +6 -6
  318. package/lib/oh-story/skills/story-short-write/references/genre-styles//346/200/273/350/243/201/350/261/252/351/227/250.md +3 -3
  319. package/lib/oh-story/skills/story-short-write/references/genre-styles//346/202/254/347/226/221.md +4 -4
  320. package/lib/oh-story/skills/story-short-write/references/genre-styles//346/260/221/344/277/227/346/200/252/350/260/210.md +7 -7
  321. package/lib/oh-story/skills/story-short-write/references/genre-styles//346/262/231/351/233/225/350/204/221/346/264/236.md +5 -5
  322. package/lib/oh-story/skills/story-short-write/references/genre-styles//347/224/234/345/256/240.md +4 -4
  323. package/lib/oh-story/skills/story-short-write/references/genre-styles//350/277/275/345/246/273/347/201/253/350/221/254/345/234/272.md +3 -3
  324. package/lib/oh-story/skills/story-short-write/references/genre-writing-formulas.md +32 -44
  325. package/lib/oh-story/skills/story-short-write/references/genre-writing-techniques.md +20 -18
  326. package/lib/oh-story/skills/story-short-write/references/output-contract.md +1 -1
  327. package/lib/oh-story/skills/story-short-write/references/short-craft.md +18 -18
  328. package/lib/oh-story/skills/story-short-write/references/short-deslop.md +1 -1
  329. package/lib/oh-story/skills/story-short-write/references/short-format.md +38 -8
  330. package/lib/oh-story/skills/story-short-write/references/{quality-checklist.md → short-prose-quality.md} +22 -21
  331. package/lib/oh-story/skills/story-short-write/references/short-reversal.md +355 -0
  332. package/lib/oh-story/skills/{story-short-analyze/references/hooks-suspense.md → story-short-write/references/short-suspense.md} +31 -31
  333. package/lib/oh-story/skills/story-short-write/references/submission-craft.md +2 -2
  334. package/lib/oh-story/skills/story-short-write/references/writing-workflow.md +31 -22
  335. package/lib/oh-story/skills/story-short-write/scripts/author_memory_commit.py +871 -0
  336. package/lib/oh-story/skills/story-short-write/scripts/check-ai-patterns.js +64 -1
  337. package/lib/oh-story/skills/story-short-write/scripts/check-delivery-contract.js +212 -0
  338. package/lib/oh-story/skills/story-short-write/scripts/check-phase2-contract.js +363 -0
  339. package/lib/types/client/drama-production-view.d.ts +34 -0
  340. package/lib/types/client/drama-production-view.d.ts.map +1 -0
  341. package/lib/types/client/drama-production.d.ts +92 -0
  342. package/lib/types/client/drama-production.d.ts.map +1 -0
  343. package/lib/types/client/file-activity.d.ts +9 -2
  344. package/lib/types/client/file-activity.d.ts.map +1 -1
  345. package/lib/types/client/index.d.ts +1 -1
  346. package/lib/types/client/index.d.ts.map +1 -1
  347. package/lib/types/client/production-intents.d.ts +9 -0
  348. package/lib/types/client/production-intents.d.ts.map +1 -0
  349. package/lib/types/client/production-prompts.d.ts +9 -0
  350. package/lib/types/client/production-prompts.d.ts.map +1 -0
  351. package/lib/types/client/production-runtime.d.ts +58 -0
  352. package/lib/types/client/production-runtime.d.ts.map +1 -0
  353. package/lib/types/client/video-studio.d.ts +41 -0
  354. package/lib/types/client/video-studio.d.ts.map +1 -0
  355. package/lib/types/client/workbench-ui.d.ts +5 -0
  356. package/lib/types/client/workbench-ui.d.ts.map +1 -0
  357. package/lib/types/game-verification.d.ts +16 -0
  358. package/lib/types/game-verification.d.ts.map +1 -0
  359. package/lib/types/index.d.ts +5 -2
  360. package/lib/types/index.d.ts.map +1 -1
  361. package/lib/types/production-intent.d.ts +21 -0
  362. package/lib/types/production-intent.d.ts.map +1 -0
  363. package/lib/types/production-tool.d.ts +5 -0
  364. package/lib/types/production-tool.d.ts.map +1 -0
  365. package/lib/types/reference-tool.d.ts +6 -0
  366. package/lib/types/reference-tool.d.ts.map +1 -0
  367. package/lib/types/role-provider.d.ts.map +1 -1
  368. package/lib/types/role-tool.d.ts +3 -1
  369. package/lib/types/role-tool.d.ts.map +1 -1
  370. package/lib/types/skill-provider.d.ts +7 -0
  371. package/lib/types/skill-provider.d.ts.map +1 -1
  372. package/lib/types/video-project.d.ts +42 -0
  373. package/lib/types/video-project.d.ts.map +1 -0
  374. package/lib/types/workspace-request-trust.d.ts +6 -0
  375. package/lib/types/workspace-request-trust.d.ts.map +1 -1
  376. package/lib/types/workspace-route.d.ts +20 -0
  377. package/lib/types/workspace-route.d.ts.map +1 -1
  378. package/lib/video-recap/CHANGELOG.md +282 -0
  379. package/lib/video-recap/LICENSE +21 -0
  380. package/lib/video-recap/README.en.md +257 -0
  381. package/lib/video-recap/README.md +255 -0
  382. package/lib/video-recap/manifest.json +684 -0
  383. package/lib/video-recap/skills/video-assemble/SKILL.md +97 -0
  384. package/lib/video-recap/skills/video-assemble/references/jianying/LICENSE.duo-video +21 -0
  385. package/lib/video-recap/skills/video-assemble/references/jianying/SOURCE.md +15 -0
  386. package/lib/video-recap/skills/video-assemble/references/jianying/empty_draft_meta_info.json +69 -0
  387. package/lib/video-recap/skills/video-assemble/references/jianying/empty_jy_combination_segment.json +84 -0
  388. package/lib/video-recap/skills/video-assemble/references/jianying/empty_jy_combination_video_material.json +98 -0
  389. package/lib/video-recap/skills/video-assemble/references/jianying/empty_jy_draft.json +204 -0
  390. package/lib/video-recap/skills/video-assemble/references/jianying/empty_jy_material_video.json +83 -0
  391. package/lib/video-recap/skills/video-assemble/references/jianying/empty_jy_meta_material_value.json +23 -0
  392. package/lib/video-recap/skills/video-assemble/references/jianying/empty_jy_project_info.json +133 -0
  393. package/lib/video-recap/skills/video-assemble/references/jianying/empty_jy_segment.json +70 -0
  394. package/lib/video-recap/skills/video-assemble/references/jianying/empty_jy_text_styles.json +30 -0
  395. package/lib/video-recap/skills/video-assemble/references/jianying/empty_yj_material_audio.json +41 -0
  396. package/lib/video-recap/skills/video-assemble/references/jianying/empty_yj_material_text.json +109 -0
  397. package/lib/video-recap/skills/video-assemble/scripts/artifacts.py +88 -0
  398. package/lib/video-recap/skills/video-assemble/scripts/assemble.py +345 -0
  399. package/lib/video-recap/skills/video-assemble/scripts/assemble_constants.py +34 -0
  400. package/lib/video-recap/skills/video-assemble/scripts/assembly_contract.py +305 -0
  401. package/lib/video-recap/skills/video-assemble/scripts/assembly_settings.py +94 -0
  402. package/lib/video-recap/skills/video-assemble/scripts/audio_automation.py +205 -0
  403. package/lib/video-recap/skills/video-assemble/scripts/audio_mix.py +555 -0
  404. package/lib/video-recap/skills/video-assemble/scripts/export_jianying.py +261 -0
  405. package/lib/video-recap/skills/video-assemble/scripts/jianying_builders.py +767 -0
  406. package/lib/video-recap/skills/video-assemble/scripts/jianying_model.py +111 -0
  407. package/lib/video-recap/skills/video-assemble/scripts/jianying_optional.py +24 -0
  408. package/lib/video-recap/skills/video-assemble/scripts/jianying_schema.py +109 -0
  409. package/lib/video-recap/skills/video-assemble/scripts/jianying_templates.py +37 -0
  410. package/lib/video-recap/skills/video-assemble/scripts/jianying_timeline_contract.py +191 -0
  411. package/lib/video-recap/skills/video-assemble/scripts/jianying_tracks.py +75 -0
  412. package/lib/video-recap/skills/video-assemble/scripts/jianying_writer.py +394 -0
  413. package/lib/video-recap/skills/video-assemble/scripts/lib.py +239 -0
  414. package/lib/video-recap/skills/video-assemble/scripts/media.py +243 -0
  415. package/lib/video-recap/skills/video-assemble/scripts/narration_audio.py +477 -0
  416. package/lib/video-recap/skills/video-assemble/scripts/render_preflight.py +46 -0
  417. package/lib/video-recap/skills/video-assemble/scripts/source_subtitles.py +486 -0
  418. package/lib/video-recap/skills/video-assemble/scripts/subtitle_core.py +376 -0
  419. package/lib/video-recap/skills/video-assemble/scripts/subtitle_render.py +88 -0
  420. package/lib/video-recap/skills/video-assemble/scripts/timeline.py +248 -0
  421. package/lib/video-recap/skills/video-assemble/scripts/timeline_emit.py +89 -0
  422. package/lib/video-recap/skills/video-assemble/scripts/visual_render.py +512 -0
  423. package/lib/video-recap/skills/video-cut/SKILL.md +90 -0
  424. package/lib/video-recap/skills/video-cut/scripts/cut.py +67 -0
  425. package/lib/video-recap/skills/video-cut/scripts/cut_cli.py +320 -0
  426. package/lib/video-recap/skills/video-cut/scripts/cut_contract.py +545 -0
  427. package/lib/video-recap/skills/video-cut/scripts/cut_render.py +348 -0
  428. package/lib/video-recap/skills/video-cut/scripts/lib.py +77 -0
  429. package/lib/video-recap/skills/video-cut/scripts/media_geometry.py +341 -0
  430. package/lib/video-recap/skills/video-cut/scripts/narration_mapping.py +249 -0
  431. package/lib/video-recap/skills/video-cut/scripts/sentence_boundaries.py +745 -0
  432. package/lib/video-recap/skills/video-recap/SKILL.md +216 -0
  433. package/lib/video-recap/skills/video-recap/references/config-playbook.md +61 -0
  434. package/lib/video-recap/skills/video-recap/references/creative-editing-playbook.md +225 -0
  435. package/lib/video-recap/skills/video-recap/references/data-schema.md +534 -0
  436. package/lib/video-recap/skills/video-recap/references/research-guide.md +74 -0
  437. package/lib/video-recap/skills/video-recap/references/shift-left-qc-schema.md +23 -0
  438. package/lib/video-recap/skills/video-recap/references/timeline-and-jianying.md +251 -0
  439. package/lib/video-recap/skills/video-recap/scripts/doctor.py +483 -0
  440. package/lib/video-recap/skills/video-recap/scripts/final_qc.py +737 -0
  441. package/lib/video-recap/skills/video-recap/scripts/lib.py +242 -0
  442. package/lib/video-recap/skills/video-recap/scripts/materials.py +457 -0
  443. package/lib/video-recap/skills/video-recap/scripts/mimo_qc.py +95 -0
  444. package/lib/video-recap/skills/video-recap/scripts/mimo_qc_client.py +18 -0
  445. package/lib/video-recap/skills/video-recap/scripts/mimo_qc_contract.py +9 -0
  446. package/lib/video-recap/skills/video-recap/scripts/mimo_qc_evidence.py +371 -0
  447. package/lib/video-recap/skills/video-recap/scripts/mimo_qc_observations.py +201 -0
  448. package/lib/video-recap/skills/video-recap/scripts/mimo_qc_payload.py +227 -0
  449. package/lib/video-recap/skills/video-recap/scripts/mimo_qc_report.py +362 -0
  450. package/lib/video-recap/skills/video-recap/scripts/mimo_qc_runner.py +129 -0
  451. package/lib/video-recap/skills/video-recap/scripts/qc_contract.py +338 -0
  452. package/lib/video-recap/skills/video-recap/scripts/recap.py +9 -0
  453. package/lib/video-recap/skills/video-recap/scripts/recap_cli.py +140 -0
  454. package/lib/video-recap/skills/video-recap/scripts/recap_inspect.py +550 -0
  455. package/lib/video-recap/skills/video-recap/scripts/recap_review.py +77 -0
  456. package/lib/video-recap/skills/video-recap/scripts/recap_runner.py +654 -0
  457. package/lib/video-recap/skills/video-recap/scripts/recap_runtime.py +335 -0
  458. package/lib/video-recap/skills/video-recap/scripts/recap_stage_qc.py +217 -0
  459. package/lib/video-recap/skills/video-recap/scripts/recap_timeline.py +795 -0
  460. package/lib/video-recap/skills/video-script/SKILL.md +248 -0
  461. package/lib/video-recap/skills/video-script/references/creative-editing-playbook.md +225 -0
  462. package/lib/video-recap/skills/video-script/references/research-guide.md +75 -0
  463. package/lib/video-recap/skills/video-script/scripts/agent_brief.py +399 -0
  464. package/lib/video-recap/skills/video-script/scripts/agent_text.py +410 -0
  465. package/lib/video-recap/skills/video-script/scripts/brief_context.py +403 -0
  466. package/lib/video-recap/skills/video-script/scripts/brief_inputs.py +332 -0
  467. package/lib/video-recap/skills/video-script/scripts/brief_timeline.py +442 -0
  468. package/lib/video-recap/skills/video-script/scripts/deslop_qc.py +237 -0
  469. package/lib/video-recap/skills/video-script/scripts/evidence_bundle.py +492 -0
  470. package/lib/video-recap/skills/video-script/scripts/lib.py +327 -0
  471. package/lib/video-recap/skills/video-script/scripts/narration.py +12 -0
  472. package/lib/video-recap/skills/video-script/scripts/narration_lint.py +678 -0
  473. package/lib/video-recap/skills/video-script/scripts/review.py +42 -0
  474. package/lib/video-recap/skills/video-script/scripts/review_grounding.py +262 -0
  475. package/lib/video-recap/skills/video-script/scripts/review_response.py +761 -0
  476. package/lib/video-recap/skills/video-script/scripts/review_runner.py +200 -0
  477. package/lib/video-recap/skills/video-script/scripts/speech_ownership.py +204 -0
  478. package/lib/video-recap/skills/video-script/scripts/timeline_fusion.py +199 -0
  479. package/lib/video-recap/skills/video-script/scripts/validate.py +164 -0
  480. package/lib/video-recap/skills/video-understanding/SKILL.md +75 -0
  481. package/lib/video-recap/skills/video-understanding/references/data-schema.md +299 -0
  482. package/lib/video-recap/skills/video-understanding/references/prompt-templates.md +37 -0
  483. package/lib/video-recap/skills/video-understanding/references/research-guide.md +74 -0
  484. package/lib/video-recap/skills/video-understanding/scripts/agent_brief.py +399 -0
  485. package/lib/video-recap/skills/video-understanding/scripts/agent_text.py +410 -0
  486. package/lib/video-recap/skills/video-understanding/scripts/asr.py +260 -0
  487. package/lib/video-recap/skills/video-understanding/scripts/brief.py +12 -0
  488. package/lib/video-recap/skills/video-understanding/scripts/brief_context.py +403 -0
  489. package/lib/video-recap/skills/video-understanding/scripts/brief_inputs.py +332 -0
  490. package/lib/video-recap/skills/video-understanding/scripts/brief_timeline.py +442 -0
  491. package/lib/video-recap/skills/video-understanding/scripts/consolidate.py +647 -0
  492. package/lib/video-recap/skills/video-understanding/scripts/deslop_qc.py +237 -0
  493. package/lib/video-recap/skills/video-understanding/scripts/detect.py +513 -0
  494. package/lib/video-recap/skills/video-understanding/scripts/extract.py +62 -0
  495. package/lib/video-recap/skills/video-understanding/scripts/lib.py +470 -0
  496. package/lib/video-recap/skills/video-understanding/scripts/narration_lint.py +678 -0
  497. package/lib/video-recap/skills/video-understanding/scripts/speech_ownership.py +204 -0
  498. package/lib/video-recap/skills/video-understanding/scripts/storyboard.py +507 -0
  499. package/lib/video-recap/skills/video-understanding/scripts/timeline_fusion.py +199 -0
  500. package/lib/video-recap/skills/video-understanding/scripts/understand.py +9 -0
  501. package/lib/video-recap/skills/video-understanding/scripts/understanding_brief.py +216 -0
  502. package/lib/video-recap/skills/video-understanding/scripts/understanding_cache.py +327 -0
  503. package/lib/video-recap/skills/video-understanding/scripts/understanding_runner.py +367 -0
  504. package/lib/video-recap/skills/video-understanding/scripts/understanding_storyboard.py +162 -0
  505. package/lib/video-recap/skills/video-understanding/scripts/vlm.py +705 -0
  506. package/lib/video-recap/skills/video-voiceover/SKILL.md +81 -0
  507. package/lib/video-recap/skills/video-voiceover/scripts/dub.py +637 -0
  508. package/lib/video-recap/skills/video-voiceover/scripts/fish_audio.py +109 -0
  509. package/lib/video-recap/skills/video-voiceover/scripts/lib.py +421 -0
  510. package/lib/video-recap/skills/video-voiceover/scripts/tts_audio.py +113 -0
  511. package/lib/video-recap/skills/video-voiceover/scripts/voiceover.py +782 -0
  512. package/package.json +57 -41
  513. package/lib/drama/skills/short-drama/references/lifecycle-commands.md +0 -130
  514. package/lib/oh-story/skills/story-deslop/scripts/check-outline-copy.js +0 -241
  515. package/lib/oh-story/skills/story-long-write/references/format-and-structure.md +0 -169
  516. package/lib/oh-story/skills/story-setup/references/agent-references/genre-writing-formulas.md +0 -444
  517. package/lib/oh-story/skills/story-setup/references/agent-references/quality-checklist.md +0 -247
  518. package/lib/oh-story/skills/story-short-analyze/references/anti-ai-writing.md +0 -582
  519. package/lib/oh-story/skills/story-short-analyze/references/banned-words.md +0 -147
  520. package/lib/oh-story/skills/story-short-analyze/references/genre-catalog.md +0 -490
  521. package/lib/oh-story/skills/story-short-analyze/references/genre-core-mechanics.md +0 -425
  522. package/lib/oh-story/skills/story-short-analyze/references/genre-writing-formulas.md +0 -453
  523. /package/lib/oh-story/skills/{story-long-write/references/hooks-chapter.md → story-setup/references/agent-references/short-chapter-hooks.md} +0 -0
  524. /package/lib/oh-story/skills/{story-long-write/references/hooks-paragraph.md → story-setup/references/agent-references/short-paragraph-hooks.md} +0 -0
@@ -14,8 +14,8 @@
14
14
  | ★★★★ | 无情绪声线:"声音不大,却带着……" / "语气毫无波澜" / "平静无波" / "声音平直/平平/听不出情绪" | "她声音不大,却带着不容置疑的力量" | 直接写台词内容、声音特征或动作 |
15
15
  | ★★★★ | "他/她知道……" | "他知道这一切都来不及了" | 用行为展示认知 |
16
16
  | ★★★ | "仿佛/犹如/宛若……一般" | "仿佛能穿透一切一般" | 删掉或白描 |
17
- | ★★★ | "眼中闪过一丝……" / "嘴角勾起一抹……" | "眼中闪过一丝悲伤" | 他垂下眼 / 他嘴角一扯 |
18
- | ★★★ | "心中涌起一股……" / "心头一震" | "心中涌起一股暖流" | 用身体反应 |
17
+ | ★★★ | "眼中闪过一丝……" / "嘴角勾起一抹……" | "眼中闪过一丝悲伤" | 删掉;写他当场说的话或做出的决定 |
18
+ | ★★★ | "心中涌起一股……" / "心头一震" | "心中涌起一股暖流" | 写它改变了什么:选择、台词、物件或后果 |
19
19
  | ★★★ | 抽象命运/开端收束:"命运……棋局/獠牙" / "这一刻终于明白" / "反击才刚刚开始" | "命运终于露出獠牙;属于他的反击才刚刚开始" | 回到角色当下可见的文件、动作、对话或物理后果 |
20
20
  | ★★ | 章末预告 "他不知道的是……" | "他不知道的是,更大的风暴即将来临" | 用具体钩子物件/事件收束,避免空泛预告 |
21
21
 
@@ -132,8 +132,8 @@
132
132
 
133
133
  | 原文类型 | 替换方法 | 示例 |
134
134
  |----------|----------|------|
135
- | 抽象情绪词 | 具体动作 | "紧张" → "手在抖" |
136
- | "感到XX" | 外化表现 | "感到愤怒" → "攥紧拳头" |
135
+ | 抽象情绪词 | 先看上下文是否已成立;再选选择、台词、物件、后果或一句直写 | “紧张”若不影响下一步可直写或删;若导致签名作废,就写作废的结果 |
136
+ | "感到XX" | 删除“感到”后按场景决定是否还要情绪句 | “他感到愤怒”可写“他火了”,也可直接写他撤回报价;不要默认换成攥拳 |
137
137
  | 形容词堆砌 | 白描手法 | "美丽动人的笑容" → "她笑了" |
138
138
  | 书面表达 | 口语化 | "不容置疑" → "就是" |
139
139
  | 解释性描写 | 留白 | "他因为害怕而..." → "他退后一步" |
@@ -145,3 +145,5 @@
145
145
  **替换不复用**:右列是方向示例,不是标准答案。同一禁用词在一章内多次命中时,各处给不同的具体化写法;同一个替换写法反复出现(每次都「垂下眼」、每个动作都补「了一下」),替换产物本身就成为新的模板指纹。
146
146
 
147
147
  **套词密度优先处理**:`check-ai-patterns.js` 报 `cliche-density-tic` 时,说明禁用词不是零星误用,而是聚成了模板腔。处理顺序不是同义词替换,而是先删抽象总结,再把情绪/判断落到角色当下可见的动作、物件、对话和具体后果。
148
+
149
+ **套式反应逐处删除测试**:`stock-reaction-tic` 报警时,不代表禁止身体描写。逐处问:删掉后信息、选择、关系、物件或动作结果是否受损?无损就删,不把“指尖轻叩”换成“目光微沉”。伤势、动作失败、人物习惯或情节后果明确时可以保留。
@@ -55,8 +55,8 @@ description: 多对标跨书召回
55
55
  | 拆文字段 | 含义 | 写作参考 |
56
56
  |---------|------|---------|
57
57
  | `beats` | 结构段(开端/发展/高潮/结局) | 当前 skill 的题材结构文件;短篇优先 genre-styles 题材包 / `genre-writing-formulas.md` |
58
- | `hooks` | 钩子数 | `hooks-chapter.md` / `hooks-suspense.md`;短篇开头密度补 short-craft |
59
- | `setup_clues` | 反转铺垫线索 | `reversal-toolkit.md` |
58
+ | `hooks` | 钩子数 | `hooks-chapter.md` / `short-suspense.md`;短篇开头密度补 short-craft |
59
+ | `setup_clues` | 反转铺垫线索 | `short-reversal.md` |
60
60
  | `character_archetypes` | 反差人物 | 当前 skill 的人物/题材风格文件;短篇优先 genre-styles 题材包 / genre-writing-techniques |
61
61
  | `reusable_structures` | 可复用手法 | `genre-writing-formulas.md`;短篇可补 short-craft |
62
- | `reversal_type` | 反转类型(7 枚举) | `reversal-toolkit.md` 对应骨架 |
62
+ | `reversal_type` | 反转类型(7 枚举) | `short-reversal.md` 对应骨架 |
@@ -93,7 +93,7 @@
93
93
 
94
94
  ### 拉扯原则
95
95
 
96
- 1. **每 3-5 个小节有一次情绪转向**(不能一路虐到底或一路爽到底)
96
+ 1. **情绪不能一路虐到底或一路爽到底**(连续多个小节没有情绪立场、期待或压力变化时,查是否停滞)
97
97
  2. **每次转向都要有触发事件**(不能无理由地改变情绪)
98
98
  3. **最后一次转向决定结尾余韵的基调**
99
99
  4. **爽文允许快速反弹,虐文需要更长铺垫**
@@ -104,8 +104,8 @@
104
104
 
105
105
  ### 世情/爽文
106
106
 
107
- - 情绪反弹速度:快(受辱后 2-3 节内打脸)
108
- - 打脸密度:每 3-5 节一次
107
+ - 情绪反弹速度:快(受辱后先取证或布局,再落打脸,不拖到读者已经忘记)
108
+ - 打脸节奏:沿反派嚣张度递增持续兑现,不按固定节距补打脸
109
109
  - 反派嚣张度:递增(第一次小嚣张,最后一次大嚣张)
110
110
  - 结尾基调:痛快、解气
111
111
  - 案例:《准儿媳打分》— 打分制反制、铁盒零分、断绝关系
@@ -164,7 +164,7 @@
164
164
  - [ ] 前 1/3 有具体羁绊细节(不是抽象描述)?
165
165
  - [ ] 中段有反差/撕裂(读者以为 A → 实际是 B)?
166
166
  - [ ] 结尾有安静细节(不是大段抒情)?
167
- - [ ] 每 3-5 节有情绪转向?
167
+ - [ ] 情绪立场/期待/压力持续有变化,没有连续多个小节原地打转?
168
168
  - [ ] 反派行为符合其人设逻辑?
169
169
  - [ ] 不存在上述 6 种失败模式?
170
170
 
@@ -34,7 +34,7 @@
34
34
 
35
35
  ## 钩子母题与密度
36
36
 
37
- 每节一个新恶行或一记清算落点,恶行按「小事试探、得寸进尺、踩到底线」递进。**恶必须小而具体:钱数、物件、一句话,不用绑架灭门。**
37
+ 让恶行按「小事试探、得寸进尺、踩到底线」持续递进;若连续多个叙事单元既没有新恶行、证据、应对也没有清算落点,再检查是否停滞。**恶必须小而具体:钱数、物件、一句话,不用绑架灭门。**
38
38
 
39
39
  - **规矩 / 习俗 / 孝道武器化**(头号母题):改口费、见面礼、跪着吃饭、坐月子规矩、断亲费,把打劫包装成传统。《假借习俗名义骗我钱的男友》100万寓意着我妈可以长命百岁。这是村里的习俗,你不会看不起农村人吧。
40
40
  - **「一家人」道德绑架三件套**:孝道、面子、一家人。恶人话术永远理直气壮带糖衣,帮凶跟着和稀泥。《因为亲戚,头等舱变硬座》行了,先忍忍吧,他们就是嘴毒了点,人还是好的。
@@ -60,7 +60,7 @@
60
60
 
61
61
  ## 对话风格与真实金句
62
62
 
63
- 占比 45-60%。四类台词撑全篇:
63
+ 对白重点是把规矩话术、帮凶立场、证据和关系翻转落到场内;不设全文占比。四类高频台词:
64
64
 
65
65
  **① 恶人理直气壮的日常之恶(钩子本体,恶话必须裹着为你好 / 规矩 / 一家人的糖衣)**
66
66
  - 《婆婆让十八个亲戚住我婚房》你懂事点,今晚就在过道将就下。/听妈的,别那么矫情。
@@ -120,7 +120,7 @@
120
120
  → 报应清单 + 主角平淡新生活
121
121
  ```
122
122
 
123
- 打脸不集中在一场:小打脸每节都有(怼一句、算一笔),大清算放在后三分之一。恶行现场和摊牌现场详写慢放,蓄证过程一笔带过。打脸密度以本包为准。
123
+ 打脸不必集中在一场:可把怼一句、算一笔等小反制分散在升级链里,大清算放到因果和证据汇合处。恶行现场和摊牌现场详写慢放,蓄证过程按新信息价值取舍;不为逐节配额另造恶行或反制。
124
124
 
125
125
  ---
126
126
 
@@ -33,7 +33,7 @@
33
33
 
34
34
  ## 钩子母题与密度
35
35
 
36
- 密度高,但升级线不是「背叛升级」,而是**两人关系的锁扣一层层收紧**:从对峙到被迫共处,从共处到互相亏欠,从亏欠到谁也走不了。每节至少推进一次温差放电或一次视差揭穿,章尾留错位钩。
36
+ 密度高,但升级线不是「背叛升级」,而是**两人关系的锁扣一层层收紧**:从对峙到被迫共处,从共处到互相亏欠,从亏欠到谁也走不了。若连续多个叙事单元都没有温差、视差、选择或关系后果,再检查是否停滞;不为逐节达标硬塞一次放电或揭穿。
37
37
 
38
38
  - **暗恋视差**(头号母题,共现「暗恋」576 次仅次于「甜宠」):表面恨 / 斗 / 淡漠,底下一方偷偷爱着。视差揭穿的那一刻是最大爽点。
39
39
  - **契约 / 欠债 / 联姻强绑**:助手协议、欠条、联姻、暗卫合约,把两个本该分开的人硬拴在一起,制造无法逃离的共处。
@@ -117,7 +117,7 @@
117
117
  → HE 收束(宿命和解 / 救赎闭环)
118
118
  ```
119
119
 
120
- 每章一个新错位或新揭穿,章尾留钩不收束。疏密:温差放电、视差揭穿、危机爆点处详写慢放,共处日常一句带过。
120
+ 让新错位和新揭穿沿关系链持续兑现;章尾可落在错位、局部确认、关系变化或明确的下一步,不要求每章同一种钩。温差放电、视差揭穿、危机爆点处详写慢放,共处日常按关系变化价值取舍。
121
121
 
122
122
  ---
123
123
 
@@ -32,7 +32,7 @@
32
32
 
33
33
  ## 钩子母题与密度
34
34
 
35
- 密度极高:简介塞 3-5 个作践事件 + 反杀预告,正文每节一个新作践升级或一记反杀落点,黑岩密到每 3-5 句一拐。**阶梯式作践:道德羞辱 → 经济掠夺 → 极端虐心(碾压 / 断肢 / 判死刑)。**
35
+ 密度极高:简介可密集呈现作践事件与反杀预告,正文让作践升级、取证、选择和反杀持续前推;若连续多个叙事单元没有状态变化,再检查是否停滞,不为逐节达标另造作践。**阶梯式作践:道德羞辱 → 经济掠夺 → 极端虐心(碾压 / 断肢 / 判死刑)。**
36
36
 
37
37
  - **门外偷听撞破真相**(头号导火索):去找加害者时隔着门 / 隔着窗听见他和同伙的真心话,作践动机一次性砸下。《为给白月光出气,男友群发我私密照》却在他家别墅门外听见他和朋友们的谈笑声;《99次表白后》却隔着门,听到了他和兄弟们的对话;《被女友戏弄99次后》却意外听到她和好友的谈话。
38
38
  - **私密照 / 开盒 / 社死**:把人的隐私武器化当众处刑。《只是爱过》发布会上将偷拍我的百张私密照做成PPT底板展示;《白月光忌日》让我穿三点式比基尼躺在餐桌,身上摆满美食供人享用。
@@ -64,7 +64,7 @@
64
64
 
65
65
  ## 对话风格与真实金句
66
66
 
67
- 占比 45-60%,黑岩打脸篇可到 60%,口语、狠、独立成段。四类台词撑全篇:
67
+ 对白在施害、审判和公开翻盘场景可以密,调查、取证和行动链可以少或没有;不设全文占比。口语、狠,关键句可独立成段。四类高频台词:
68
68
 
69
69
  **① 施害者道德踩踏狠话(钩子本体,越理直气壮越好)**
70
70
  - 《为给白月光出气,男友群发我私密照》现在所有人都把她在床上的浪荡样看光了,除了我,谁还敢接盘她?
@@ -124,7 +124,7 @@
124
124
  → 加害者社死 / 自食恶果 / 求饶被冷拒
125
125
  ```
126
126
 
127
- 每章一个新信息炸弹或一记反杀落点,章尾留钩不收束情绪。疏密:作践 / 亮牌 / 打脸处详写慢放,逐拍展开;过场一句带过。
127
+ 让新信息与反杀沿因果链持续兑现;章尾可落在新信息、局部反杀、关系变化或明确的下一步,不要求每章同一种炸点。作践、亮牌、打脸处详写慢放,过场按新信息价值压缩。
128
128
 
129
129
  ---
130
130
 
@@ -16,7 +16,7 @@
16
16
 
17
17
  ## 开篇范式
18
18
 
19
- 正文第 1 章前先放一段**时间锚定 + 全弧剧透的黄金导语**(150-300 字):用「第 N 年 / 第几载」开篇定锚,把背叛全貌 + 心死 + 「可他后来后悔了 / 重金悬赏寻我」一次性剧透,专卖追读;正文第 1 章把导语事件慢放重写、补满对话体感。重生线导语还要先交代前世死法 + 凶手,再「再睁眼」回到关键节点。
19
+ 正文第 1 章前先放一段**时间锚定 + 全弧剧透的黄金导语**(150-300 字):用「第 N 年 / 第几载」开篇定锚,把背叛全貌 + 心死 + 「可他后来后悔了 / 重金悬赏寻我」一次性剧透,专卖追读。导语就是正文已经发生的第一场;第 1 章从导语最后一拍的后果、选择或新行动接着写,必要背景随新行动补入,不重新搭景、重说关键台词或重演同一事件。重生线导语还要先交代前世死法 + 凶手,再「再睁眼」回到关键节点。
20
20
 
21
21
  | 开篇式 | 真实范例 |
22
22
  |--------|----------|
@@ -33,7 +33,7 @@
33
33
 
34
34
  ## 钩子母题与密度
35
35
 
36
- 密度极高:导语塞 3-5 个背叛 / 算计事件,正文每节至少一个新升级或一句更狠的台词,章尾必留新炸点。**阶梯式背叛:道德 → 经济 / 身份 → 生命(孩子)。**
36
+ 密度极高:导语可密集呈现背叛 / 算计,正文让算计、取证、选择和后果持续升级;若连续多个叙事单元没有状态变化,再检查是否停滞,不为逐节达标另造背叛或狠话。**阶梯式背叛:道德 → 经济 / 身份 → 生命(孩子)。**
37
37
 
38
38
  - **白月光 / 假千金触发链**(核心母题):夫君有个白月光 / 小青梅 / 义妹,或家里塞进个假千金,关键时刻全家偏帮她、牺牲主角。她们多用「娇弱委屈」当软刀。
39
39
  - **偷听 / 撞破真相一次性砸**:密林、佛寺、茶馆里撞见夫君与白月光 / 假千金的真心话,连「当初的海誓山盟都是假的」全盘砸下,是心死导火索。
@@ -65,7 +65,7 @@
65
65
 
66
66
  ## 对话风格与真实金句
67
67
 
68
- 占比 45-60%,口语、狠、半文半白,独立成段。三类台词撑全篇:
68
+ 对白在请安、审问、道德绑架和当众翻盘场景可以密,查账、布置与行动链可以少或没有;不设全文占比。口语、狠、半文半白,关键句可独立成段。三类高频台词:
69
69
 
70
70
  **① 施害者 / 全家道德踩踏狠话(钩子本体,越理直气壮越好)**
71
71
  - 《十年前他们要我顶替妹妹进青楼》你一个千人骑万人跨的货色,还敢大摇大摆走沈家的正门?你不要脸我们还要脸呢!
@@ -113,8 +113,8 @@
113
113
 
114
114
  ```
115
115
  时间锚定 + 全弧剧透导语(含火葬场预告 / 前世死法)
116
- → 第1章重写导语事件、补满对话体感
117
- → 逐章背叛升级(道德→经济身份→生命)+ 白月光软刀栽赃
116
+ → 第1章承接导语后果,以新行动补足对话体感
117
+ → 背叛沿因果链升级(道德→经济身份→生命)+ 白月光软刀栽赃
118
118
  → 偷听 / 撞破真相(连父母婆家也知情)
119
119
  → 心死定格
120
120
  → 信物撕毁 + 冷静审判 + 和离休夫 / 净身出户 / 死遁
@@ -122,7 +122,7 @@
122
122
  → 渣男追悔发疯 / 重金悬赏(火葬场)+ 金句盖棺
123
123
  ```
124
124
 
125
- 每章一个新信息炸弹,章尾留钩不收束情绪。疏密:撞破 / 打脸 / 撕信物 / 亮底牌处详写慢放,过场一句带过。古言线单节 2000-4000 字,年代 / 现代线 1000-2000 字。
125
+ 让新信息沿算计链持续兑现;章尾可落在新信息、局部反制、关系变化或明确的下一步,不要求每章同一种炸点。撞破、打脸、撕信物、亮底牌处详写慢放,过场按新信息价值压缩;单节长度服从该场职责。
126
126
 
127
127
  ---
128
128
 
@@ -36,7 +36,7 @@
36
36
 
37
37
  ## 钩子母题与密度
38
38
 
39
- 密度极高:简介塞 3-5 个背叛事件,正文每节至少一个新背叛升级或一句更狠的台词,章尾必留新炸点。**阶梯式背叛:道德 → 经济 → 生命**,本题材尤其爱把「经济」做足(集团、股权、继承权、净身出户)。
39
+ 密度极高:简介可密集呈现背叛,正文让背叛、取证、选择和后果持续升级;若连续多个叙事单元没有状态变化,再检查是否停滞,不为逐节达标另造背叛或狠话。**阶梯式背叛:道德 → 经济 → 生命**,本题材尤其爱把「经济」做足(集团、股权、继承权、净身出户)。
40
40
 
41
41
  - **道德绑架链**(核心母题):渣男把背叛包装成「你该大度 / 她可怜 / 你欠她 / 你该感激我」,越理直气壮越是钩。
42
42
  - **白月光 / 小三触发链**:丈夫有白月光 / 小青梅 / 战友之女 / 学妹,关键时刻为她牺牲妻子;白月光用「娇弱委屈」当软刀,常配当众晕倒 / 见血反咬。
@@ -68,7 +68,7 @@
68
68
 
69
69
  ## 对话风格与真实金句
70
70
 
71
- 占比 45-60%,口语、狠、独立成段。四类台词撑全篇(本题材比追妻多一类「外挂吐槽」):
71
+ 对白在道德绑架、权力交锋和当众翻盘场景可以密,核验证据与行动链可以少或没有;不设全文占比。口语、狠,关键句可独立成段。四类高频台词(本题材比追妻多一类「外挂吐槽」):
72
72
 
73
73
  **① 施害者道德绑架金句(钩子本体,越理直气壮越对)**
74
74
  - 能不能大度点,不就是拿你两张演唱会门票吗?非要跟人家小姑娘过不去,还编出这么拙劣的谎言。(《闻笙有两意》)
@@ -133,7 +133,7 @@
133
133
  → 渣男追悔发疯(火葬场)
134
134
  ```
135
135
 
136
- 每章一个新信息炸弹,章尾留钩不收束情绪。疏密:物证验证 / 道德绑架 / 当众反转处详写慢放,过场一句带过。
136
+ 让新信息沿利益和关系链持续兑现;章尾可落在新信息、局部反制、关系变化或明确的下一步,不要求每章同一种炸点。物证验证、道德绑架、当众反转处详写慢放,过场按新信息价值压缩。
137
137
 
138
138
  ---
139
139
 
@@ -1,6 +1,6 @@
1
1
  # 题材风格包:悬疑 / 惊悚 / 细思极恐
2
2
 
3
- > 七猫 / 黑岩 / 知乎盐选通俗短篇。先读 `short-craft.md` 底座,本包在其上覆盖该题材专属调性;悬念技法本体(信息顺序、期待接力、时间锁等)见 `hooks-suspense.md`,本包不重复,只写腔调 / 结构 / 范式层。
3
+ > 七猫 / 黑岩 / 知乎盐选通俗短篇。先读 `short-craft.md` 底座,本包在其上覆盖该题材专属调性;悬念技法本体(信息顺序、期待接力、时间锁等)见 `short-suspense.md`,本包不重复,只写腔调 / 结构 / 范式层。
4
4
  > 一句话定位:**现代悬疑 / 侦探推理 / 惊悚 / 细思极恐。信息差驱动,层层揭底,结尾反转必须能回溯;细思极恐型收尾把最后一块拼图留给读者。** 读者要的是「猜不到,但回头全对上」的智力快感,加上后背发凉的体感。
5
5
 
6
6
  ---
@@ -36,7 +36,7 @@
36
36
 
37
37
  ## 钩子母题与密度
38
38
 
39
- 密度:每节至少一个新信息差(新异常 / 新证据 / 新证词矛盾),章尾必留信息炸弹。与情感题材的根本区别:钩子不是伤害升级,是「已知与未知的差」被扩大或换方向。
39
+ 密度看信息链是否持续变化:新异常、新证据、证词矛盾、旧线索改义或查证失败都可推进;若连续多个叙事单元没有改变读者模型,再检查是否停滞,不为逐节配额另造异常。与情感题材的根本区别:钩子不是伤害升级,是「已知与未知的差」被扩大或换方向。
40
40
 
41
41
  - **不可能细节**:一个具体、可验证、无法解释的小事实,比大场面吓人。多出来的尸块、太新的手机、六岁小孩二十分钟修好的下水道。
42
42
  - **全员口径一致的否定**:亲人、邻居、警察统一说你疯了;否定越整齐,越证明有组织。
@@ -66,7 +66,7 @@
66
66
 
67
67
  ## 对话风格与真实金句
68
68
 
69
- 占比 30-45%,低于情感题材。对话是信息装置,不是情绪装置,四类撑全篇:
69
+ 对白主要承担证词、试探、隐瞒和口径矛盾;调查、观察、核验和推理链可以少或没有对白,不设全文占比。四类高频台词:
70
70
 
71
71
  **① 否定式对话(世界合谋否认)**
72
72
  - 《旅游回来后,老公和儿子失踪了》谁?你不是一直单身吗?
@@ -111,7 +111,7 @@
111
111
  简介(正常世界 + 一个不可能细节)
112
112
  → 第 1-2 节 异常落地,给出第一个「合理解释」
113
113
  → 合理解释被新异常打破(至少两轮)
114
- → 中段每节一个新信息差:查证一格、反常一格
114
+ → 中段让查证、反常与旧线索改义交替前推;完整调查链可连续展开
115
115
  → 至暗点(全世界否定我 / 调查被断)
116
116
  → 假底:能自圆其说的结论(自杀 / 意外 / 我疯了)
117
117
  → 微物证触发真反转
@@ -20,7 +20,7 @@
20
20
 
21
21
  ## 开篇范式
22
22
 
23
- 简介多为正文开头逐字重复,且必须放超自然实锤(不留「也许是幻觉」的余地),第 1 节把简介事件慢放补细节。
23
+ 简介先把最关键的规矩、破戒或超自然实锤演成正文现场(不留「也许是幻觉」的余地)。它就是已经发生的第一场;第 1 节从异象造成的下一步行动或后果接着写,必要的行当与规矩随处置过程补入,不逐字复述或慢放重演简介。
24
24
 
25
25
  | 开篇式 | 真实范例 |
26
26
  |--------|----------|
@@ -36,7 +36,7 @@
36
36
 
37
37
  ## 钩子母题与密度
38
38
 
39
- 密度高但节拍固定:**立规矩、有人破、当场或次日应验**,三段内必须见第一条命(除夕剃头,第二天清晨舅舅吊在房梁上)。之后每节一个新异象,章尾必留没解释的怪事。
39
+ 密度高,核心节拍是**立规矩、有人破、当场或次日应验**。开场先让规矩、异常或代价至少一项落地;题眼依赖死亡时才尽早见第一条命,不把“三段内死亡”套给所有故事。后续让异象、查证、破戒和代价持续升级;完整应验链可连续展开,章尾不强制另塞怪事。
40
40
 
41
41
  - **规矩三段式**(核心母题):规矩先明说,读者从明说那刻起就在等应验。破戒的多是主角身边的蠢人 / 恶人(堂弟偷吃供品、老板强逼点睛、堂妹哭丧不掉泪),主角旁观代价再轮到自己。
42
42
  - **尸象异常清单**:指甲乌黑、眼睛合不拢、嘴角带笑、尸体竖在水里、寿衣沾泥。一条条摆,逐节加重(眼缝从一条线撑到能塞筷子)。
@@ -62,7 +62,7 @@
62
62
 
63
63
  ## 对话风格与真实金句
64
64
 
65
- 占比低于言情系(约 30-45%),但每句都承担规矩或炸点。三类台词撑全篇:
65
+ 对白主要承担立规矩、诱导破戒、证词矛盾或代价确认;观察、查验、仪式和应验链可以少或没有对白,不设全文占比。三类高频台词:
66
66
 
67
67
  **① 规矩告诫(长辈 / 行家口,保命符兼死亡预告)**
68
68
  - 《正月切勿剃头》记住,路上无论谁叫你,都不能回头!
@@ -107,10 +107,10 @@
107
107
  ## 节奏骨架
108
108
 
109
109
  ```
110
- 简介(规矩 + 破戒 + 应验实锤,逐字重复正文开头)
111
- → 第1节 立规矩(长辈告诫 / 行当自报)
112
- → 第2-3节 有人破戒,第一条命应验
113
- → 逐节升级:尸象异常 → 身边人变样 → 邪祟上门
110
+ 简介(规矩 + 破戒 + 应验实锤,作为正文第一场)
111
+ → 第1节 承接异象后果,在处置中立规矩(长辈告诫 / 行当自报)
112
+ → 有人破戒,第一条明确代价应验(题眼依赖死亡时才落第一条命)
113
+ → 异象、查证与代价沿因果链升级:尸象异常 → 身边人变样 → 邪祟上门
114
114
  → 中段翻旧账:规矩的来历(族谱 / 旧案 / 上辈孽债)
115
115
  → 帮助者给保命法(有价或有坑)
116
116
  → 卡时辰决战(子时 / 头七 / 天亮前)
@@ -19,7 +19,7 @@
19
19
 
20
20
  ## 开篇范式
21
21
 
22
- 简介就是高概念 demo:把设定的最好笑用法先演一遍(好坏消息对仗、系统对话、弹幕闯入),不藏梗。正文第 1 节把简介的梗放慢重演、补满对话体感。
22
+ 简介就是高概念 demo:把设定的最好笑用法先演一遍(好坏消息对仗、系统对话、弹幕闯入),不藏梗。它就是正文已经发生的第一场;第 1 节从这个梗造成的新状况、选择或反应继续,用新的对话把设定规则立住,不放慢重演同一个梗。
23
23
 
24
24
  | 开篇式 | 真实范例 |
25
25
  |--------|----------|
@@ -35,7 +35,7 @@
35
35
 
36
36
  ## 钩子母题与密度
37
37
 
38
- 密度要求:每节至少一个笑点或设定新用法,章尾钩子多为「设定出新状况」,不是情绪炸弹。
38
+ 密度看设定是否持续产生新用法、误解、代价或关系后果;若连续多个叙事单元既没推进设定也没形成有效笑点,再检查是否停滞,不为逐节达标硬塞包袱。章尾钩子可来自设定新状况,也可落在局部兑现或明确的下一步。
39
39
 
40
40
  - **设定推到极致**(核心母题):一句话设定立住后,逐章问「这设定还能怎么用」,一次比一次离谱。外卖员能穿梭副本,就顺路帮校长捡头(《我在恐怖游戏里送外卖》王校长,我在楼下捡到了你的头,和外卖一起放校长室门口了哈);游戏属性同步现实,魅力值解释了艳遇、体力值解释了尴尬(《社畜临死前幻想》)。
41
41
  - **信息差喜剧**:我知道你不知道(听心声 / 看弹幕 / 知剧情),错位反应制造笑点。高级版是双向反转:能力本身是局,对面知道你听得见,故意喂假心声(《听见老公和儿子的装穷心声后,我杀疯了》)。
@@ -61,7 +61,7 @@
61
61
 
62
62
  ## 对话风格与真实金句
63
63
 
64
- 占比 40-55%,短、快、口语。三类台词撑全篇:
64
+ 对白在错位反应、弹幕和规则交锋场景可以密,设定演示与行动链可以少或没有;不设全文占比。短、快、口语。三类高频台词:
65
65
 
66
66
  **① 一本正经的荒诞宣言(笑点本体)**
67
67
  - 《我在恐怖游戏里送外卖》王校长,我在楼下捡到了你的头,和外卖一起放校长室门口了哈。
@@ -108,8 +108,8 @@
108
108
 
109
109
  ```
110
110
  简介亮高概念(把设定最好笑的用法先演一遍)
111
- → 第1节慢放重演简介的梗、立设定规则
112
- → 设定用法逐节升级(同一设定至少榨三次,一次比一次离谱)
111
+ → 第1节承接简介造成的新状况、立设定规则
112
+ → 设定用法沿后果升级(同一设定可反复开发,但每次须改变用法、代价或关系)
113
113
  → 中段信息差反转(能力被反用 / 设定背后另有真相 / 弹幕情报有假)
114
114
  → 高潮:设定与主线宿怨相撞(副本 boss 是未婚夫;心声骗局当众拆穿)
115
115
  → 真情或爽点收口,最后一句吐槽泄压
@@ -32,9 +32,9 @@
32
32
 
33
33
  ## 钩子母题与密度
34
34
 
35
- 甜宠的钩不是背叛升级,是**悬着的糖**:每节至少一个心动微事件,章尾不收糖,留一个未解疑点或情感悬置。
35
+ 甜宠的钩不是背叛升级,是**悬着的糖**:让心动、试探、选择和关系后果持续前推;若连续多个叙事单元没有关系变化,再检查是否停滞,不为逐节达标硬塞糖点。章尾可留疑点、情感悬置,也可给局部确认。
36
36
 
37
- - **马甲 / 身份错位**(头号母题):双马甲互撩、隐藏大佬、认错人、网恋对象是身边人。错位维持多久,追读就维持多久;每节让错位差一点被戳穿再滑走。
37
+ - **马甲 / 身份错位**(头号母题):双马甲互撩、隐藏大佬、认错人、网恋对象是身边人。错位每次被触碰都应改变判断、策略或关系;不要逐节重复“差点戳穿又滑走”。
38
38
  - **例外感投喂**:冰块男主只对女主破例。热橙汁、剔好刺的鱼、一支簪子。物件越小,例外越大。
39
39
  - **强制同框装置**:赐婚 / 联姻 / 提亲堵门 / 病房陪护 / 住进同屋,把两人锁死在一个空间里日常发酵。
40
40
  - **吃醋触发器**:前任、旧情传闻、男模。甜宠里情敌是工具不是威胁,功能是逼出占有欲和委屈。
@@ -57,7 +57,7 @@
57
57
 
58
58
  ## 对话风格与真实金句
59
59
 
60
- 占比 50-65%。长度分配与虐文相反:**女主话痨铺场,男主一句收网**。四类台词撑全篇:
60
+ 对白在试探、暧昧和关系博弈场景可以密,行动照顾、物件投喂和等待场景可以少或没有;不设全文占比。话轮长短随筹码变化,不把女主固定成话痨、男主固定成一句收网。四类高频台词:
61
61
 
62
62
  **① 男主反差撩 / 占有宣言(低频高杀伤)**
63
63
  - 「放心,我对你没兴趣。」「不过那小子,确实配不上你。」(《误拨给死对头后》)
@@ -108,7 +108,7 @@
108
108
  黄金简介(高概念误会 + 杀伤力台词)
109
109
  → 第1章重写简介事件、坐实错位
110
110
  → 强制同框装置上线
111
- → 日常糖点循环(每节一个心动微事件,章尾留钩)
111
+ → 日常糖点与关系选择交替推进,避免同一种心动微事件循环
112
112
  → 吃醋 / 情敌小高潮
113
113
  → 误会爆发 / 危机(虐段,短)
114
114
  → 真相揭开 + 告白(糖峰值)
@@ -29,7 +29,7 @@
29
29
 
30
30
  ## 钩子母题与密度
31
31
 
32
- 密度极高:简介塞 3-5 个背叛事件,正文每节至少一个新背叛升级或一句更狠的台词,章尾必留新炸点。**阶梯式背叛:道德 → 经济 → 生命。**
32
+ 密度极高:简介可密集呈现背叛,正文让背叛、心死、行动和后果持续升级;若连续多个叙事单元没有状态变化,再检查是否停滞,不为逐节达标另造背叛或狠话。**阶梯式背叛:道德 → 经济 → 生命。**
33
33
 
34
34
  - **白月光触发链**(核心母题,几乎每篇都有):男人有个白月光 / 小青梅 / 前妻 / 义妹,关键时刻为她牺牲妻子。白月光多用「娇弱委屈」人设当软刀。
35
35
  - **偷听 / 撞破真相一次性砸**:无意听见渣男和同伙 / 白月光的真心话,全盘真相一次性砸下,是「心死」的导火索。
@@ -59,7 +59,7 @@
59
59
 
60
60
  ## 对话风格与真实金句
61
61
 
62
- 占比 45-60%,口语、狠,独立成段。三类台词撑全篇:
62
+ 对白在伤害、心死和追悔交锋场景可以密,离开、取证和新生活行动链可以少或没有;不设全文占比。口语、狠,关键句可独立成段。三类高频台词:
63
63
 
64
64
  **① 施害者道德踩踏狠话(钩子本体)**
65
65
  - 能不能大度点,不就是拿你两张演唱会门票吗?非要跟人家小姑娘过不去。
@@ -108,7 +108,7 @@
108
108
  → 渣男追悔 / 发疯(火葬场)
109
109
  ```
110
110
 
111
- 每章一个新信息炸弹,章尾留钩不收束情绪。疏密:背叛 / 打脸 / 反转处详写慢放,过场一句带过。
111
+ 让新信息沿背叛与追悔链持续兑现;章尾可落在新信息、局部反制、关系变化或明确的下一步,不要求每章同一种炸点。背叛、打脸、反转处详写慢放,过场按新信息价值压缩。
112
112
 
113
113
  ---
114
114
 
@@ -1,9 +1,9 @@
1
- # 题材写作公式
1
+ # 短篇题材写作公式
2
2
 
3
- > **用途**:21个题材的结构骨架、情绪节拍、必选场景、关键规则。按题材分类,可直接套用。
3
+ > **用途**:短篇题材的结构骨架、情绪节拍、必选场景、关键规则。章数只是小节编排方式,不代表长篇卷级结构。
4
4
  > **语气**:指令式——每个公式都是可直接套用的结构骨架。
5
5
  > **配合**:优先使用当前 skill 内的通用技法 reference;story-setup 部署后使用项目本地 agent reference bundle 中的写作技法、结构格式、题材风格模块副本。
6
- > **适用范围**:本文件的节奏参数(500-800 字/节、短句白描等)只适用于短篇和爽文小节;长篇正文的叙述句仍以逗号长句为主(句长标准),不要把短篇小节的句法带进长篇。
6
+ > **适用范围**:本文件的节奏参数只适用于短篇和短篇小节;长篇任务转交 `story-long-write`,本文件不提供长篇开局公式。
7
7
 
8
8
  ---
9
9
 
@@ -16,7 +16,6 @@
16
16
  | 现代复仇/打脸 | 公式一 | 6章短篇 |
17
17
  | 古代宅斗/身份反转 | 公式二 | 8节 |
18
18
  | 虐恋复仇/灵魂视角 | 公式三 | 7节 |
19
- | 都市系统/逆袭长篇 | 公式四 | 前3章 |
20
19
  | 玄幻仙侠/重生逆袭 | 公式六 | 19章 |
21
20
  | 年代重生/双重复仇 | 公式七 | 19章 |
22
21
  | 宫闱宅斗/女帝逆袭 | 公式八 | 19章 |
@@ -89,19 +88,6 @@
89
88
 
90
89
  ---
91
90
 
92
- ## 公式四:都市系统/逆袭长篇(前3章)
93
-
94
- | 章 | 节点 | 要点 |
95
- |----|------|------|
96
- | 1 | 离婚+系统激活 | 仙人跳反转→离婚→系统激活 |
97
- | 2 | 系统面板+新手奖励 | "报废边缘"吐槽→新手礼包→离婚 |
98
- | 3 | 离婚后+新装备 | 机车出场→前妻后悔伏笔→父子关系 |
99
-
100
- **必选场景**:中年危机够惨;系统面板讽刺数据;新手礼包立刻见效;前妻后悔伏笔;隐藏装备;子女关系
101
- **规则**:系统评价+主角吐槽是核心笑点;每章结尾必有系统奖励;反差是爽点来源;生活化细节建真实感
102
-
103
- ---
104
-
105
91
  ## 公式六:玄幻仙侠/重生逆袭(19章)
106
92
 
107
93
  ```
@@ -152,7 +138,7 @@
152
138
 
153
139
  **情绪**:好奇→紧张→爽→更爽→震撼→痛快
154
140
  **必选场景**:设定一句话说清;被骗后"不慌反喜";鬼视角独特信息差;每次升级解锁前世记忆;反派反应是爽点;双重惩罚比单杀更解气
155
- **规则**:鬼视角是独特卖点;"鬼不怕恶人,恶人怕鬼";悬疑线+复仇线交织;每章结尾有反转或新发现
141
+ **规则**:鬼视角是独特卖点;"鬼不怕恶人,恶人怕鬼";悬疑线+复仇线交织;章尾可落在反转、新发现、局部兑现或明确的下一步,不为逐章达标另造异常
156
142
 
157
143
  ---
158
144
 
@@ -202,18 +188,18 @@
202
188
 
203
189
  ## 公式十四:女频 vs 男频复仇/打脸
204
190
 
205
- ### 女频万能公式
206
- - **开头(前10%)**:第一人称「我」;3句内建立核心矛盾;重生则150字内完成前世回顾
207
- - **发展(10-50%)**:反派每500字升级一次;主角表面隐忍;心声制造信息差;每800字一次小打脸
208
- - **高潮(50-80%)**:终极真相/身份揭露;公开审判式打脸;每500字一次大打脸
209
- - **收尾(80-100%)**:反派下场;新生活开启;≤200字温情收尾
191
+ ### 女频常见路径
192
+ - **开头**:第一人称「我」;3句内建立核心矛盾;重生则150字内完成前世回顾
193
+ - **发展**:让反派施压、主角选择、信息差与局部反制沿因果链升级;连续多个叙事单元没有状态变化时再调整,不按字数配打脸
194
+ - **高潮**:终极真相、身份或关键证据在前因足以支撑时汇合;公开审判只在围观关系网能放大权力翻转时使用
195
+ - **收尾**:交代反派下场、主角选择与可感后果;温情段长度服从余波,不按固定字数截断
210
196
 
211
- ### 男频万能公式
212
- - **开头(前10%)**:第一段最大屈辱;不铺垫直接炸裂;关键数据具体
213
- - **发展(10-40%)**:隐忍篇幅比女频短;靠行动非心声展示能力
214
- - **反击(40-70%)**:直接碾压不解释;碾压必须当众
215
- - **高潮(70-90%)**:身份揭露;称呼改变=身份揭露;集体震惊
216
- - **收尾(90-100%)**:反派覆灭;200-400字温情线
197
+ ### 男频常见路径
198
+ - **开头**:第一段最大屈辱;不铺垫直接炸裂;关键数据具体
199
+ - **发展**:隐忍篇幅通常较短;靠行动而非心声展示能力
200
+ - **反击**:用选择、资源和行动形成碾压;公开场合只在关系网见证会改变结果时使用
201
+ - **高潮**:身份、实力或关键证据在前因足以支撑时汇合;称呼改变可作为关系翻转证据,不强配集体震惊
202
+ - **收尾**:反派覆灭后交代主角选择和余波;温情线长度服从结局职责
217
203
 
218
204
  ### 核心差异
219
205
 
@@ -308,7 +294,7 @@
308
294
 
309
295
  ---
310
296
 
311
- ## 公式十九:细节线索驱动型复仇(8-13章超短章节制)
297
+ ## 公式十九:细节线索驱动型复仇
312
298
 
313
299
  ```
314
300
  1 发现异常(微小细节→冷静应对)
@@ -320,7 +306,7 @@
320
306
 
321
307
  **情绪**:警觉→压抑→冷静→爽→极爽→豁达
322
308
  **必选场景**:一个触发细节(钥匙扣/避孕套品牌/发票/香水味);职业优势展示;证据链系统构建;"笑着点头"时刻;反向利用对方棋子;"人情味很贵"收尾
323
- **规则**:超短章节制(每章500-1000字);主角永远冷静;证据逐章释放;双面人写法;背叛层层加码;冷描写大情绪
309
+ **规则**:小节长度服从调查与反击动作链;主角的冷静体现在策略和选择上,失控若有因果与后果也可成立;证据按判断变化分批释放;双面人写法;背叛层层加码;冷描写大情绪
324
310
 
325
311
  ### 调查链条模板
326
312
  ```
@@ -343,7 +329,7 @@
343
329
 
344
330
  **情绪**:了然→爽→更爽→极爽→痛快→豁达
345
331
  **必选场景**:"给你吧"时刻;白月光三连试探(撒娇→哭闹→威胁);渣男"既要又要";身份揭露名场面;冷眼旁观对方自毁;"头也不回"式离开
346
- **规则**:"给你就是最好的惩罚";前世记忆每章穿插一小段;主角情绪是"苍凉的笑";最大蔑视是漠视
332
+ **规则**:"给你就是最好的惩罚";前世记忆只在改变当下判断、选择或信息时穿插,不按章配额;主角的克制通过具体选择呈现,不固定成"苍凉的笑";最大蔑视是漠视
347
333
 
348
334
  ---
349
335
 
@@ -383,12 +369,12 @@
383
369
  ## 短篇题材创作要点速查表
384
370
 
385
371
  ### 世情/爽文
386
- - 打脸密度:每3-5节一次,反派嚣张度逐级递增
387
- - 受辱后2-3节内必须反击
372
+ - 打脸沿反派嚣张度逐级递增兑现;连续多个叙事单元没有新作恶、反制或代价变化时再查停滞
373
+ - 受辱后先给取证或布局再落反制,不把反击拖到读者已经忘记
388
374
  - 主角主动设局或果断反击
389
375
  - 反派有自洽作恶逻辑
390
376
  - 打脸后不拖泥带水,断绝/收走/报警干脆利落
391
- - 爽文章节500-800字/节,感官细节揉进动作节拍中(不单独成句),身体反应用动作白描
377
+ - 爽文小节通常偏短,长度服从动作链是否完整;感官细节揉进动作节拍中(不单独成句),身体反应用动作白描
392
378
 
393
379
  ### 情感/虐心
394
380
  - 前1/3用具体物件/数字/习惯建立关系质感
@@ -418,15 +404,17 @@
418
404
  - 断亲有反复和挣扎
419
405
  - 断裂后用新关系填补
420
406
 
421
- ### 钩子密度分级
407
+ ### 牵引强度分级
422
408
 
423
- | 题材 | 密度 | 偏好 |
424
- |------|------|------|
425
- | 复仇/爽文 | 极高:每2节 | 打脸、底牌、代价 |
426
- | 悬疑 | 高:每2-3节 | 信息差、倒计时、反转 |
427
- | 情感/虐心 | 中高:每3节 | 情感、反差、余韵 |
428
- | 古言/宫斗 | 中高:每2-3节 | 底牌、打脸、代价 |
429
- | 年代/亲情 | 中:每3-4节 | 情感、反差、余韵 |
409
+ > 强度描述题材期待,不是逐节配额。钩子落在读者预期、行动方向或关系判断发生变化的位置;连续多个小节只提问不兑现时再复核。
410
+
411
+ | 题材 | 牵引强度 | 偏好 |
412
+ |------|----------|------|
413
+ | 复仇/爽文 | 极强 | 打脸、底牌、代价 |
414
+ | 悬疑 | 强 | 信息差、倒计时、反转 |
415
+ | 情感/虐心 | 中强 | 情感、反差、余韵 |
416
+ | 古言/宫斗 | 中强 | 底牌、打脸、代价 |
417
+ | 年代/亲情 | 中 | 情感、反差、余韵 |
430
418
 
431
419
  ---
432
420
 
@@ -440,5 +428,5 @@
440
428
  - [ ] **核心规则遵守**:公式"规则"部分的每一条都已落实
441
429
  - [ ] **篇幅合规**:章/节数量在公式规定范围内
442
430
  - [ ] **女频/男频区分**:如果是复仇打脸类,已按公式十四的核心差异调整写法
443
- - [ ] **钩子密度达标**:按题材速查表的密度要求,每N节有明确钩子
431
+ - [ ] **牵引不断线**:钩子落在预期、行动方向或关系判断变化处,没有连续多个小节只提问不兑现
444
432
  - [ ] **开头3秒抓人**:第一段/第一句已建立核心冲突或信息炸弹,没有慢热铺垫