@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
@@ -1,147 +0,0 @@
1
- # AI味禁用词与句式表
2
-
3
- <!-- 同名副本×6 字节同步,改动后跑 scripts/check-shared-files.sh -->
4
-
5
- ## 最毒禁用句式(出现即修,最高优先级)
6
-
7
- 写网文最毒的 AI 句式,作者一旦养成就会反复出现。Gate A 第一遍扫描必须命中:
8
-
9
- | 毒级 | 句式 | 错误例 | 修法 |
10
- |------|------|--------|------|
11
- | ★★★★★ | "不是A,(而)是B" / "不是A,不是B,(而)是C"("而"可省略,省掉也算命中)| "他不是冷漠,而是绝望" | 直接写 B 或用更自然的表达 |
12
- | ★★★☆☆ | 跨段「不是A。/也不是B。/只是C。」 | 「不是嚎啕大哭。/也不是扯着嗓子喊不舍。/只是一个人走远了……」 | 语义复核;重复提纲或拖慢画面时压成 C,有辩解/悬念排除功能可保留 |
13
- | ★★★★ | ",带着……" 万能状语 | "他笑了一下,带着一丝不易察觉的嘲讽" | 删掉状语留主句,或换具体动作 |
14
- | ★★★★ | 无情绪声线:"声音不大,却带着……" / "语气毫无波澜" / "平静无波" / "声音平直/平平/听不出情绪" | "她声音不大,却带着不容置疑的力量" | 直接写台词内容、声音特征或动作 |
15
- | ★★★★ | "他/她知道……" | "他知道这一切都来不及了" | 用行为展示认知 |
16
- | ★★★ | "仿佛/犹如/宛若……一般" | "仿佛能穿透一切一般" | 删掉或白描 |
17
- | ★★★ | "眼中闪过一丝……" / "嘴角勾起一抹……" | "眼中闪过一丝悲伤" | 他垂下眼 / 他嘴角一扯 |
18
- | ★★★ | "心中涌起一股……" / "心头一震" | "心中涌起一股暖流" | 用身体反应 |
19
- | ★★★ | 抽象命运/开端收束:"命运……棋局/獠牙" / "这一刻终于明白" / "反击才刚刚开始" | "命运终于露出獠牙;属于他的反击才刚刚开始" | 回到角色当下可见的文件、动作、对话或物理后果 |
20
- | ★★ | 章末预告 "他不知道的是……" | "他不知道的是,更大的风暴即将来临" | 用具体钩子物件/事件收束,避免空泛预告 |
21
-
22
- > 凡命中 ★★★★★ 一处即视为重度AI味的强证据;★★★★ 命中 ≥2 处即触发中度复扫。
23
-
24
- `check-ai-patterns.js` 的 `formulaic-parallelism` 还会提示「至于X不X,怎么X」和同动词「不V A,不V B」。这两类可能是功能性口语,因此只做 advisory;Gate B 必须连同台词读语境复核,若只是复述细纲/前文就压成一次判断,不能因 hook 豁免台词而跳过。
25
-
26
- **标点**:正文(含叙述和对话)禁用破折号 `——`/`—`、双连字符 `--` 和省略号停顿,改用句号、逗号、短句或动作断句;不设置对话破折号例外。盐言「」引号不在此列。
27
-
28
- ---
29
-
30
- ## 一级禁用词(出现即替换)
31
-
32
- > 什么词进一级:只收真人语料里几乎不出现、AI 特有的词。真人高频使用的自然副词和虚词不进一级,走二级密度控制。
33
-
34
- ### 情态类
35
- 仿佛、犹如、宛若、如同、一丝、一抹、些许、几分、隐约、毫无征兆、几不可闻、微不可察
36
-
37
- ### 动作类
38
- 深吸一口气、不禁
39
-
40
- ### 表情类
41
- 眼中闪过、嘴角勾起、眉头微皱、眉眼低垂、瞳孔微缩、瞳孔收缩、瞳孔一缩、指节泛白、眼神锐利、目光锐利
42
-
43
- ### 心理类
44
- 心中一动、心头一震、心下了然、心中暗道、心底泛起、不由得、心中一凛
45
-
46
- ### 判断类
47
- 不容置疑、不容置喙、不易察觉、显而易见、毫无疑问、不可否认、前所未有
48
-
49
- ### 形容类
50
- 坚定、闪烁着光芒、狡黠、深邃、凛冽、冰冷
51
-
52
- ### 过渡类
53
- 不由自主、情不自禁、自然而然、话锋一转
54
-
55
- ## 二级禁用词(高频出现时替换)
56
-
57
- ### 语境敏感词(仅高频或偷懒时处理)
58
- 突然、陡然、骤然、猛然、好像、似乎、瞬间、猛地、死死地(角色口语、真实突发、时间压缩、视角不确定时可保留;用同义变体轮换规避重复不算豁免,按同一个词计密度)
59
-
60
- ### 弱化副词(密度控制)
61
- 缓缓、微微、轻轻、淡淡(每千字合计 ≤3;这四个词同时计入 `cliche-density-tic` 的套词密度统计;孤立自然使用可保留,成串出现或每个动作都垫一个时才替换)
62
-
63
- ### 书面腔 → 口语化
64
-
65
- | 书面腔 | 口语化替换 |
66
- |--------|-----------|
67
- | 瓦解 | 消失 / 散了 / 没了 |
68
- | 无名火 | 烦躁 |
69
- | 往我心上捅刀子 | 心烦意乱 |
70
-
71
- ### 总结句式
72
- - "他/她终于明白..."
73
- - "他/她这才意识到..."
74
- - "这一刻,他/她终于明白/意识到..."
75
- - "从这一刻开始..."
76
- - "属于X的反击/复仇/故事,才刚刚开始"
77
- - "命运/宿命 + 齿轮/棋局/獠牙/改写/安排"
78
- - "此刻,他/她..."
79
- - "一切...都..."
80
- - "原来..."
81
-
82
- ### 排比句式
83
- - 连续3句以上相同结构的排比
84
- - "有的...有的...有的..."
85
- - "一边...一边...一边..."
86
-
87
- ### 升华句式
88
- - "这一刻..."
89
- - "他知道..."
90
- - "她明白..."
91
- - "这就是..."
92
-
93
- ## 禁用句式模板
94
-
95
- | 句式 | 示例 | 问题 |
96
- |------|------|------|
97
- | "不是A,而是B" | "他不是冷漠,而是绝望" | 最毒;直接写 B |
98
- | "...,带着..." | "他说,带着一丝无奈" | 万能状语 |
99
- | "声音不大,却带着……" | "她声音不大,却带着不容置疑的力量" | AI 最爱声音描写 |
100
- | "仿佛能...一般" | "仿佛能穿透一切一般" | 文言腔 |
101
- | 对话标签密度过高/公式化标签 | "好的,他说道" | 普通"说"可保留;高频或公式化时处理 |
102
- | "他/她感到..." | "她感到一丝失落" | 告诉而非展示 |
103
- | "他/她意识到..." | "他意识到事情不对" | 直接告知 |
104
- | "眼中闪过一丝XX" | "眼中闪过一丝悲伤" | 模板化 |
105
- | "嘴角勾起一抹XX" | "嘴角勾起一抹冷笑" | 模板化 |
106
- | "心中涌起一股XX" | "心中涌起一股暖流" | 模板化 |
107
- | "取而代之的是" | "笑容消失,取而代之的是冰冷" | AI 过渡模板;直接写新状态 |
108
- | "淬了/淬着X" | "眼里淬了毒" | AI 通感套路;写动作或台词 |
109
- | "显得(有些)X" | "他显得有些兴奋" | 告诉而非展示 |
110
- | "心底/心里某个地方+软" | "心里某个地方软得一塌糊涂" | 言情套句;写动作 |
111
- | "(浑身)散发着一股X气息/气场" | "浑身散发着一股生人勿近的气息" | 万能气场描写;写旁人的反应 |
112
- | "命运/宿命 + 齿轮/棋局/獠牙/改写/安排" | "命运终于露出獠牙" / "早已布好的棋局" | 抽象作者总结;改成角色当下撞见的文件、动作、对话、物理后果 |
113
- | "这一刻终于明白/从这一刻开始/才刚刚开始" | "这一刻,他终于明白" / "反击才刚刚开始" | AI 收束腔;删总结,用动作或未解决问题收尾 |
114
-
115
- ## 比喻分类(默认复核,不默认全删)
116
-
117
- 带"像/如/仿佛/犹如/宛若"的比喻不是一律 AI。真正高风险的是:成片堆叠、套用万能文学比喻、用精致比喻替代剧情推进,或在段尾替读者总结意义。本表用于识别需要复核的比喻类型:
118
-
119
- | 比喻类别 | 例 | 处理 |
120
- |---------|----|------|
121
- | 生活/角色化 | "像一头被抛弃的野狗" | 若贴角色视角、能传递信息或情绪,可保留 |
122
- | 物品/现象类 | "像一把刀" "脸色惨白得像这漫天的雪" | 普通功能性比喻可留;模板化或重复时改白描 |
123
- | 状态类(陈词滥调) | "梨花带雨" "如沐春风" | 优先删或改成具体动作/表情 |
124
- | 抽象类 | "像命运的齿轮" "像上辈子的尘埃" | 高风险,优先落回动作、物件、声音、后果 |
125
- | 假设类 | "力道大得像是要把骨头捏碎" | 若是角色身体感知可留;夸张堆叠时改事实后果 |
126
-
127
- 处理原则:先看功能,再看密度。保留最能传递信息或情绪的一两个,其余改为直接描述、动词、名词、作用、结果或事实;不要把删掉的比喻替换成另一批新比喻。例 "脸色惨白得像这漫天的雪" 若只是套话 → "脸色惨白";若雪景正在压迫角色,可保留或改成角色当下看到的具体画面。
128
-
129
- > `metaphor-density-tic` 是 advisory:提示通读复核,不是 blocking;生活化、角色化、单个有功能的比喻可以保留。
130
-
131
- ## 替换策略速查
132
-
133
- | 原文类型 | 替换方法 | 示例 |
134
- |----------|----------|------|
135
- | 抽象情绪词 | 具体动作 | "紧张" → "手在抖" |
136
- | "感到XX" | 外化表现 | "感到愤怒" → "攥紧拳头" |
137
- | 形容词堆砌 | 白描手法 | "美丽动人的笑容" → "她笑了" |
138
- | 书面表达 | 口语化 | "不容置疑" → "就是" |
139
- | 解释性描写 | 留白 | "他因为害怕而..." → "他退后一步" |
140
- | 连续排比 | 保留最强一条 | 3 句排比留 1 句 |
141
- | 总结升华句 | 直接删除 | "这一刻,她终于明白了..." → 删 |
142
- | "不是A,而是B" | 直接写 B 或更自然的表达 | "他不是冷漠,而是绝望" → 直接写 B |
143
- | 多余修饰(形容词/定语/量词/指示代词) | 删 | "白色的药片" → "药片";"手里那截链子" → "链子";"飞驰的汽车" → "车" |
144
-
145
- **替换不复用**:右列是方向示例,不是标准答案。同一禁用词在一章内多次命中时,各处给不同的具体化写法;同一个替换写法反复出现(每次都「垂下眼」、每个动作都补「了一下」),替换产物本身就成为新的模板指纹。
146
-
147
- **套词密度优先处理**:`check-ai-patterns.js` 报 `cliche-density-tic` 时,说明禁用词不是零星误用,而是聚成了模板腔。处理顺序不是同义词替换,而是先删抽象总结,再把情绪/判断落到角色当下可见的动作、物件、对话和具体后果。
@@ -1,490 +0,0 @@
1
- # 题材框架速查
2
-
3
- > **用途**:拆文和写大纲时对照使用。你是一个熟练的网文结构分析师,按照下方路由表选择对应框架,严格执行结构比例和情绪节拍。
4
-
5
- ## 用作拆文标尺时
6
-
7
- 本文件原本是写作侧 playbook,写法是「怎么写」。`story-short-analyze` 在拆文时把它当
8
- **对照标尺**用 —— 拆文动作是把源文与本文件描述的标准模式做对比,找出该篇用了哪一种、
9
- 做得有多到位,**不是**按本文件去写新作品。
10
-
11
- 读者视角的判断:本文件描述的是 番茄小说短篇 / 故事会 / 追妻 / 世情 / 重生 / 虐渣
12
- 等通俗短篇圈的工业标准模板,是拆文报告里「可复用结构 / 反转设计 / 题材公式」等段的
13
- 对照来源。
14
-
15
- ---
16
-
17
- ## 题材选择路由
18
-
19
- 根据以下条件快速定位对应框架。先判断大类,再看具体变体。
20
-
21
- | 如果故事核心是... | 走这个框架 | 备注 |
22
- |---|---|---|
23
- | 男人伤害女人,离开后悔但追不回 | **追妻火葬场** | 女主离开后不回头是核心 |
24
- | 前世惨死,重生利用信息差复仇 | **重生复仇** | 反派需分层嵌套 |
25
- | 伴侣出轨/算计,觉醒独立 | **小三/婚恋** | 发现过程要有悬念 |
26
- | 奇葩/恶霸欺压老实人,恶有恶报 | **世情** | 靠细节不靠大事件 |
27
- | 女主被虐至死,男主死后追悔 | **死人文学** | 核心是"来不及" |
28
- | 特殊相遇,男主追求宠溺 | **霸总/甜宠** | 甜的密度决定粘性 |
29
- | 底层崛起,升级打怪(都市+武道) | **都市高武** | 金钱驱动+分层地图 |
30
- | 废材/落魄天才,修仙世界登顶 | **仙侠/玄幻** | 力量体系必须清晰 |
31
- | 独特金手指/创意设定为核心卖点 | **脑洞文** | 核心梗决定赛道 |
32
- | 主角无天赋,靠谨慎算计生存(修仙) | **凡人流** | 利弊权衡是核心模式 |
33
- | 穿越/重生到历史节点改变命运 | **历史/架空历史** | 信息差=最大金手指 |
34
- | 娱乐圈才华展示+围观震惊 | **文娱/娱乐圈** | 反应链是核心写法 |
35
- | 用户明确目标 IP、平台允许且近期样本有效 | **同人流派** | 只抽“已知世界 + 新变量 + 名场面改写”结构,不保留具体 IP 清单 |
36
- | 玩家被抽入规则副本求生 | **规则怪谈**(见其他题材速查) | 金手指包合理外衣 |
37
- | 主角长生看沧海桑田 | **长生流**(见其他题材速查) | 凡俗时期最好看 |
38
- | 其他(西幻/新媒体/搞笑/无限流/悬疑/高武/后悔流) | **其他题材速查** | 各有要点,按需取用 |
39
-
40
- ### 定位后查阅关联文件
41
-
42
- | 还需要什么 | 加载 |
43
- |-----------|------|
44
- | 核心梗设计与循环机制 | `genre-core-mechanics.md` |
45
- | 读者心理与期待管理 | `genre-readers.md` |
46
- | 对应题材写作公式 | `genre-writing-formulas.md` |
47
-
48
- ---
49
-
50
- ## 追妻火葬场
51
-
52
- ### 长篇(8节点)
53
-
54
- **设定**:女主被伤害 → 离开 → 男主后悔追回但女主不回头。场景:豪门/职场/娱乐圈/古代贵族,需权力差。
55
-
56
- **人物**
57
- | 角色 | 弧线 |
58
- |------|------|
59
- | 女主 | 隐忍付出 → 心死离开 → 独立成功 → 掌控主动权 |
60
- | 男主 | 高冷傲慢 → 后期卑微追悔,痛点要"活该但又心疼" |
61
- | 第二男主(选配) | 温柔守候,制造男主危机感+读者情感出口 |
62
-
63
- **8节点**
64
- | 节点 | 内容 | 占比 | 情绪 |
65
- |------|------|------|------|
66
- | 1.开篇钩子 | 展示女主痛苦现状 | 5% | 压抑 |
67
- | 2.虐待加深 | 冷漠/背叛达顶点 | 10% | 悲愤 |
68
- | 3.女主觉醒 | 决定离开 | 10% | 痛→决绝 |
69
- | 4.离开与新生 | 独立生活/事业 | 15% | 爽(解脱) |
70
- | 5.男主追悔 | 意识女主重要性 | 10% | 痛快 |
71
- | 6.事业/成长 | 新领域取得成绩 | 15% | 爽(逆袭) |
72
- | 7.反复拉扯 | 多次求复合被拒 | 20% | 爽(打脸) |
73
- | 8.结局 | 开放/回头/悲剧 | 15% | 释放 |
74
-
75
- ### 短篇(压缩三幕)
76
-
77
- **核心**:先虐后爽,后悔的男人+不回头的女人
78
-
79
- | 幕 | 占比 | 内容要点 |
80
- |----|------|----------|
81
- | 建压 | 40% | 冷暴力/出轨(具体事件)→最后忍让→平静离开 |
82
- | 爆点 | 35% | 丈夫后悔→妻子新生活→追妻被拒→信息差释放 |
83
- | 落定 | 25% | 火葬场→妻子最终选择→一句话定调 |
84
-
85
- **技法**:前期虐越狠后期越爽;妻子至少被拒绝两次;丈夫视角悔恨比妻子视角坚强更有冲击;钩子=信息差+打脸
86
-
87
- ---
88
-
89
- ## 重生复仇
90
-
91
- ### 长篇(8节点)
92
-
93
- **设定**:前世惨死→重生利用信息差逐一复仇。场景:宅斗/宫斗/商战/校园,需复杂人际网。
94
-
95
- **人物**
96
- | 角色 | 要点 |
97
- |------|------|
98
- | 女主 | 前世天真→重生腹黑,金手指=前世记忆,核心矛盾=是否变成仇人一样的人 |
99
- | 反派层 | 小(3-10章)→中(20-50章)→大(全书),层级嵌套 |
100
- | 盟友/男主 | 前世可能被误解,逐步信任,制造信任危机 |
101
-
102
- **8节点**
103
- | 节点 | 内容 | 占比 | 情绪 |
104
- |------|------|------|------|
105
- | 1.冲突揭露 | 前世惨死真相 | 5% | 震惊/愤怒 |
106
- | 2.重生认知 | 梳理记忆定目标 | 5% | 期待 |
107
- | 3.前世今生交织 | 对比被蒙蔽vs清醒 | 15% | 爽(信息差碾压) |
108
- | 4.逐层复仇+新问题 | 打小反派揭大阴谋 | 25% | 爽→悬念交替 |
109
- | 5.多重阻碍 | 中反扑+信任危机 | 15% | 紧张 |
110
- | 6.高潮致命一击 | 终极布局对决 | 15% | 爽(最高潮) |
111
- | 7.反派下场 | 逐一报应 | 10% | 爽(宣泄) |
112
- | 8.新生活 | 选择新方向 | 10% | 治愈/释然 |
113
-
114
- ### 短篇(压缩三幕)
115
-
116
- | 幕 | 占比 | 内容要点 |
117
- |----|------|----------|
118
- | 建压 | 35% | 重生节点→前世闪回→第一个不同选择→信息差建优势 |
119
- | 爆点 | 40% | 逐步拆解仇人→两个打脸名场面→仇人反击落空→前世未知真相 |
120
- | 落定 | 25% | 终极复仇→弥补遗憾→新生开始 |
121
-
122
- **技法**:不能太顺利要有变数;打脸分层递进;前世闪回有选择不倒完;钩子=信息差+暗牌+打脸
123
-
124
- ---
125
-
126
- ## 小三/婚恋
127
-
128
- ### 长篇(8节点)
129
-
130
- **设定**:发现伴侣出轨→觉醒→独立→惩恶扬善。场景:现代都市/家庭,强代入感日常。
131
-
132
- **人物**:女主(家庭主妇/职场→独立) | 渣男(精神/肉体出轨/转移财产/家暴/PUA,程度递进) | 第三者(选配,催化矛盾) | 支持系统(闺蜜/家人/律师)
133
-
134
- **8节点**
135
- | 节点 | 占比 | 情绪 |
136
- |------|------|------|
137
- | 1.日常压迫/不公 | 10% | 憋屈 |
138
- | 2.发现出轨/算计 | 15% | 震惊→愤怒 |
139
- | 3.决定离开 | 10% | 痛→爽 |
140
- | 4.事业重建 | 20% | 爽(成长) |
141
- | 5.渣男纠缠 | 10% | 紧张 |
142
- | 6.反击 | 15% | 爽(打脸) |
143
- | 7.报应 | 10% | 爽(宣泄) |
144
- | 8.新生活 | 10% | 治愈 |
145
-
146
- ### 短篇(压缩三幕)
147
-
148
- | 幕 | 占比 | 要点 |
149
- |----|------|------|
150
- | 建压 | 40% | 暗示裂痕→蛛丝马迹→确认→冷静(不是崩溃) |
151
- | 爆点 | 35% | 暗中布局→表面周旋(戏剧张力)→摊牌 |
152
- | 落定 | 25% | 法律/揭露/经济独立→渣男下场→新生 |
153
-
154
- **技法**:发现过程要有悬念;妻子要有策略不是傻白甜;钩子=信息差+暗牌+倒计时
155
-
156
- ---
157
-
158
- ## 世情
159
-
160
- ### 长篇(8节点)
161
-
162
- **设定**:反派超常理恶行→善良者被欺压→反击→恶有恶报。场景:农村/小镇/社区/家族,熟人社会压力环境。
163
-
164
- **人物**:主角(老实人有底线) | 反派(奇葩/恶霸/极品亲戚,恶得有创意) | 围观群众(势利眼/墙头草/少数正义)
165
-
166
- **8节点**
167
- | 节点 | 占比 | 情绪 |
168
- |------|------|------|
169
- | 1.奇葩登场 | 10% | 气愤 |
170
- | 2.欺压升级 | 15% | 憋屈 |
171
- | 3.压力顶峰 | 10% | 极度不平 |
172
- | 4.第一次反击 | 15% | 爽(初爽) |
173
- | 5.反扑 | 10% | 紧张 |
174
- | 6.打脸 | 15% | 爽(高潮) |
175
- | 7.报应 | 15% | 爽(宣泄) |
176
- | 8.善有善报 | 10% | 治愈 |
177
-
178
- ### 短篇(压缩三幕)
179
-
180
- | 幕 | 占比 | 要点 |
181
- |----|------|------|
182
- | 建压 | 40% | 困境→暴露事件→周围人态度→忍还是争 |
183
- | 爆点 | 35% | 冲突升级→背叛/落井下石→反击→反转 |
184
- | 落定 | 25% | 解决→人心揭示→成长→留白 |
185
-
186
- **技法**:靠细节不靠大事件;人物不能非黑即白;钩子=代价+弱者+反转
187
-
188
- ---
189
-
190
- ## 仙侠/玄幻
191
-
192
- ### 长篇(8节点)
193
-
194
- **设定**:主角遭重大打击→从低谷崛起。场景:修仙/玄幻世界,需清晰力量等级体系。
195
-
196
- **人物**:主角(废材/落魄天才→登顶,金手指=特殊体质/传承/系统) | 反派层(同辈→长辈→宗门Boss→天道,维度递升) | 导师(阶段性,不能太强也不能太弱)
197
-
198
- **8节点**
199
- | 节点 | 占比 | 情绪 |
200
- |------|------|------|
201
- | 1.打击降临 | 5% | 震惊/悲愤 |
202
- | 2.冲突深化 | 10% | 压抑 |
203
- | 3.第一次反击 | 15% | 爽(初爽) |
204
- | 4.最大危机 | 15% | 极度紧张 |
205
- | 5.突破/成长 | 10% | 爽(逆袭) |
206
- | 6.致命一击 | 15% | 爽(高潮) |
207
- | 7.报应/清算 | 15% | 爽(宣泄) |
208
- | 8.新征程 | 15% | 期待 |
209
-
210
- **关键维度**:力量体系清晰不崩 | 金手指独特有限制随成长 | 战斗有策略非纯数值 | 地图逐层展开 | 升级节奏均匀
211
-
212
- ### 短篇(压缩三幕)
213
-
214
- | 幕 | 占比 | 要点 |
215
- |----|------|------|
216
- | 建压 | 35% | 世界规则+主角位置→困境→核心设定→人物出场 |
217
- | 爆点 | 40% | 修炼转折→正面交锋→大阴谋→关键反转 |
218
- | 落定 | 25% | 终极对决(有策略有代价)→矛盾解决→仙侠留白 |
219
-
220
- **技法**:世界观压缩到最少用事件带出;等级/功法3-5个概念足矣;冲突落在"情"非"力";钩子=暗牌+反转+代价
221
-
222
- ---
223
-
224
- ## 死人文学
225
-
226
- ### 长篇(8节点)
227
-
228
- **设定**:女主被虐待至死→男主追悔→真相揭开→报应。场景:豪门/古代贵族/娱乐圈,权力差极大化。
229
-
230
- **人物**:女主(隐忍善良→死亡,死后影响>生前) | 男主(冷漠→死后空洞→真相→痛不欲生→终生赎罪) | 幕后黑手(选配,增加反转)
231
-
232
- **8节点**
233
- | 节点 | 占比 | 情绪 |
234
- |------|------|------|
235
- | 1.层层虐待 | 20% | 极度压抑 |
236
- | 2.女主死亡 | 5% | 极度悲痛 |
237
- | 3.后悔开始 | 10% | 压抑→不安 |
238
- | 4.真相发现 | 20% | 痛心 |
239
- | 5.幕后黑手 | 10% | 震惊/愤怒 |
240
- | 6.报应 | 15% | 爽+痛 |
241
- | 7.因果终结 | 10% | 释放 |
242
- | 8.余韵结局 | 10% | 意难平 |
243
-
244
- ### 短篇(压缩三幕)
245
-
246
- | 幕 | 占比 | 要点 |
247
- |----|------|------|
248
- | 建压 | 35% | 死亡事实→死者视角→最放不下的事→生者状态 |
249
- | 爆点 | 40% | 回忆现实交叉→真相→反转→最扎心时刻 |
250
- | 落定 | 25% | 放手或执念→生者继续或崩塌→安静画面→一句话/意象 |
251
-
252
- **技法**:核心是"来不及";死者第一人称最有冲击;情绪克制越克制越扎心;钩子=代价+信息差+弱者
253
-
254
- ---
255
-
256
- ## 都市高武
257
-
258
- ### 长篇(分层地图结构)
259
-
260
- **设定**:底层穷学生/武者→升级打怪挣钱→更高层级。场景:现代都市+武道体系,学校/武馆/武道厅/军部多条线。
261
-
262
- **人物**:主角(钱是核心驱动,学校→武馆→武道厅→军部→星际) | 配角层(同学/导师/感情线/校霸) | 反派层(校霸→地下势力→邪魔→跨国→外星)
263
-
264
- **分层地图事件池**
265
- | 地图 | 可用事件 |
266
- |------|----------|
267
- | 学校 | 天才班、月考、联考、高考、校霸对决、校花剧情、助学金 |
268
- | 武馆 | 获赏识、传承武学、师兄对决、市/省/国联赛 |
269
- | 警局/治安 | 劫匪、邪魔、副本、城内Boss |
270
- | 大学 | 学校事件升级版 |
271
- | 武道厅/军部 | 武馆事件升级版 |
272
- | 星际 | 全国事件升级版+世界观扩张 |
273
-
274
- **关键**:金钱驱动反复挂钩 | 换地图用过渡人物连接 | 10万字前数据偏弱是常态 | 前三章=底层处境→金手指→第一次展示
275
-
276
- ### 短篇(压缩三幕)
277
-
278
- | 幕 | 占比 | 要点 |
279
- |----|------|------|
280
- | 建压 | 35% | 经济困境→被压制→金手指触发 |
281
- | 爆点 | 40% | 实力提升→碾压→更强对手出现但不惧 |
282
- | 落定 | 25% | 解决对手→阶段性胜利→暗示更大世界 |
283
-
284
- ---
285
-
286
- ## 霸总/甜宠
287
-
288
- ### 长篇(五阶段)
289
-
290
- **设定**:特殊相遇→男主追求→感情升温→外部阻力→化解。场景:豪门/商界/上流社会。
291
-
292
- **五阶段**
293
- | 阶段 | 内容 | 情绪 |
294
- |------|------|------|
295
- | 1.相遇 | 男主被女主某特质吸引 | 新鲜 |
296
- | 2.追求 | 用身份/财富制造便利,闺蜜震惊 | 甜/爽 |
297
- | 3.确认 | 女主心动走到一起 | 满足 |
298
- | 4.阻力 | 家族/前女友/商业对手 | 紧张 |
299
- | 5.化解 | 共同克服,感情升华 | 爽/治愈 |
300
-
301
- **人物**:男主(强势专一宠溺,用权力/财富为女主做事=代入核心) | 女主(不能花瓶,要有让男主"非她不可"的戏剧性) | 阻力方(家族长辈/前女友/商业对手)
302
-
303
- **关键**:甜的密度决定粘性 | 宠要"别人做不到的方式" | 阻力不能太强(虐就跑偏)不能太弱(没张力) | 女主要独立闪光点
304
-
305
- ### 短篇(压缩三幕)
306
-
307
- | 幕 | 占比 | 要点 |
308
- |----|------|------|
309
- | 建压 | 30% | 女主困境→相遇→男主展露兴趣 |
310
- | 爆点 | 40% | 宠溺(闺蜜震惊标配)→超出预期→危机轻松化解 |
311
- | 落定 | 30% | 感情确认→极致甜场景→暗示幸福 |
312
-
313
- ---
314
-
315
- ## 同人流派
316
-
317
- ### 核心机制
318
- 借用已有IP世界观和角色写新故事。核心卖="如果在这个世界里有主角会怎样"。
319
-
320
- ### 使用边界
321
- 不保留具体 IP 题材清单。只有用户明确目标 IP、平台允许且近期样本有效时,才抽取“已知世界 + 新主角变量 + 名场面改写”的结构功能。
322
-
323
- ### 写法要点
324
- - 读者大多"云爱好者":没看过原著的比看过的多,硬核非必要
325
- - 爽第一:不为还原原著牺牲爽感
326
- - 时代设定可简化,适度改编不影响阅读
327
- - 优势:自带世界观省铺设定 | 风险:原著粉考据挑刺
328
- - 深层写法:装逼背后加亲情/救赎/遗憾弥补;震惊不止"太强了"还有激动/后悔/释然
329
-
330
- ### "造反后方知"流派
331
- 主角在自己世界做到巅峰后发现身处某IP世界。书名公式:[达成某成就],方知是[某IP世界]。
332
-
333
- ---
334
-
335
- ## 脑洞文
336
-
337
- ### 核心机制
338
- 以独特金手指/创意设定为核心卖点,题材只是外壳,真正卖点落在"这个点子"。
339
-
340
- ### 创作流程
341
- 获得点子→判断潜力(有遐想空间=有潜力)→选适配题材→加工为情绪缺口→设计金手指骨相→构建卖点→主线→框架→单元剧情
342
-
343
- ### 金手指骨相分类
344
- | 类型 | 机制 | 示例 |
345
- |------|------|------|
346
- | 条件触发型 | 满足X→获得Y | 摸尸得宝、签到得奖 |
347
- | 多条件阶段型 | 多条件→阶段升级 | 收集碎片、完成成就 |
348
- | 逆向型 | 失去X→获得更强Y | 越惨越强、负债越有钱 |
349
-
350
- ### 写长方法
351
- 核心卖点确定后多套路交织循环;单元故事围绕一个套路展开,主线串联;一级结构循环(模式重复但对象/场景/规模升级)
352
-
353
- ### 脑洞四类
354
- 1. 金手指类(聊天群/系统/戒指老爷爷)
355
- 2. 剧情类(反转/设定)
356
- 3. 设定类(世界观/修行体系)
357
- 4. 角色类(身份/人设)
358
-
359
- **忌**:全盘照抄必扑;核心梗决定赛道和受众
360
-
361
- ---
362
-
363
- ## 凡人流
364
-
365
- ### 核心特征
366
- 主角无特殊天赋/背景,靠谨慎、机智、利弊权衡在残酷修仙世界生存。
367
-
368
- ### vs 传统升级流
369
- | 维度 | 凡人流 | 传统升级流 |
370
- |------|--------|-----------|
371
- | 天赋 | 普通/低劣 | 天才/特殊体质 |
372
- | 金手指 | 微弱或没有 | 强力系统/传承 |
373
- | 行为 | 谨慎算计逃跑优先 | 热血正面对抗越级挑战 |
374
- | 爽点 | 智商和准备碾压 | 实力碾压 |
375
- | 节奏 | 慢热细腻伏笔多 | 快节奏爽点密 |
376
-
377
- ### 副本切入公式
378
- 小配角出场→小配角故事→透露副本信息→主角决定进入
379
-
380
- ### 关键维度
381
- 主角谨慎必须真实(不能嘴上说谨慎行为疯狂) | 利弊权衡是核心模式 | 配角有独立利益考量 | 伏笔和回收要精巧
382
-
383
- ---
384
-
385
- ## 历史/架空历史
386
-
387
- ### 长篇
388
-
389
- **设定**:穿越/重生到历史节点,利用现代知识/信息差改变命运。
390
-
391
- **子类型**
392
- | 类型 | 核心卖点 | 写法要点 |
393
- |------|----------|----------|
394
- | 科举文 | 现代知识碾压古代考试 | 诗词装逼、仕途攀升、权谋 |
395
- | 军史文 | 现代军事知识改造古代战争 | 练兵、装备改革、以少胜多 |
396
- | 经营/种田 | 古代搞经济建设 | 技术引进、商业帝国、改善民生 |
397
- | 国潮/非遗 | 传统文化魅力 | 盘点式装逼、民族自豪感 |
398
-
399
- **关键**:大部分读者是"云爱好者"爽感优先于还原度 | 现代认知信息差=最大金手指 | 架空可降低门槛 | 盘点+历史共鸣感强
400
-
401
- ### 短篇(压缩三幕)
402
-
403
- | 幕 | 占比 | 要点 |
404
- |----|------|------|
405
- | 建压 | 30% | 穿越到关键时刻→面临危机 |
406
- | 爆点 | 45% | 利用现代知识/信息差解决→打脸质疑者 |
407
- | 落定 | 25% | 历史轨迹改变→获得新地位 |
408
-
409
- ---
410
-
411
- ## 文娱/娱乐圈
412
-
413
- ### 核心机制
414
- 主角在娱乐圈发展,核心爽="才华展示+围观者震惊"。
415
-
416
- ### 子类型
417
- | 类型 | 特点 | 现状 |
418
- |------|------|------|
419
- | 华娱 | 国内娱乐圈 | 主流,精品最多 |
420
- | 韩娱 | 韩国娱乐圈 | 小众 |
421
- | 架空文娱 | 虚构娱乐圈 | 单女主居多,系统直接给奖励 |
422
-
423
- ### 写作要点
424
- 才艺展示=最核心装逼场景,写观众/评委/对手反应链 | 可结合盘点文模式 | 架空虚构明星避免真人争议自由度更高 | 金手指模糊化处理(先知性后期会冲突,用"梦"等方式自洽)
425
-
426
- ### 进阶
427
- 配角情景剧:主线之间填充日常,设定在某个空间里几个角色产生化学反应 | 共情反差法:角色可高高在上但不能让读者产生距离感,所有角色必须有一份普通人特质
428
-
429
- ---
430
-
431
- ## 其他题材速查
432
-
433
- ### 规则怪谈
434
- 类无限流,玩家被抽入规则副本冒险求生。绑定国运+直播性价比最高。副本构建:背景故事→规则包装→通关线+dead end→节奏(别人死→主角装→揭露→升华)。番茄主流走爽文路线,智斗和金手指负责包合理外衣。
435
-
436
- ### 长生流
437
- 核心卖=时移世易沧海桑田,主角长生看别人浴血搏杀。凡俗时期最好看。天然缺陷:开始修仙后实力增长→身边同级别出现→"熬时间"失去意义→变成寻常修仙文。延续方向:保持时间碾压感/代际传承/分层世界/凡俗时期充分展开。
438
-
439
- ### 西幻/骑士文
440
- 西幻=东方玄幻内核换皮。骑士自带晋升属性是天然力量体系骨架。推荐DND式/巫师式/种田领主文,不写日式奇幻。开篇从低位开始(马奴/铁匠学徒),凿壁偷光式努力。
441
-
442
- ### 新媒体文
443
- 一切为情绪服务。第一情绪对:不爽→装逼/愤怒→解气。双向结构=强+虐(反差/矛盾)。矛盾必须源于现实逻辑。核心三重点:用梗+节奏+情绪。极致信息差=强烈期待感。
444
-
445
- ### 搞笑文
446
- 两大原则:搞笑必须符合逻辑(规则之内出人预料);玩梗要化用内核不是照搬。自己先觉得爽;主角身边人无条件对主角好。
447
-
448
- ### 无限流
449
- 游戏副本式结构(20-30章一个副本),每个副本自成一故事;设现实主线保底串联副本。
450
-
451
- ### 悬疑
452
- 核心靠铺垫+氛围描写营造悬疑感,非靠血腥暴力。信息释放节奏要控好。
453
-
454
- ### 高武
455
- 爽点相对单一(升级打怪)但套路成熟不易翻车。可高仿成功作品世界观架构降低门槛。
456
-
457
- ### 后悔流
458
- 避免退婚等老套外衣,需创新包装(后悔对象可从爱情转为事业选择/人生抉择)。
459
-
460
- ---
461
-
462
- ## 通用拆文提醒
463
-
464
- | 检查项 | 说明 |
465
- |--------|------|
466
- | 题材识别 | 属于哪个框架?有无跨框架混搭? |
467
- | 节奏比例 | 长篇:实际vs推荐8节点占比差多少?短篇:三幕占比差多少? |
468
- | 反转位置 | 在百分之多少出现? |
469
- | 钩子密度 | 每2000字至少一个? |
470
- | 字数效率 | 有无废段落?哪些可删? |
471
- | 情绪落点 | 读完最后一句是什么感觉? |
472
-
473
- ---
474
-
475
- ## 质量检查清单
476
-
477
- 每次使用本手册完成拆文或大纲后,逐项核对:
478
-
479
- | # | 检查项 | 通过标准 |
480
- |---|--------|----------|
481
- | 1 | **题材定位正确** | 已通过路由表确认框架,无模棱两可 |
482
- | 2 | **结构比例达标** | 长篇8节点/5阶段各节点占比偏差不超过5%;短篇三幕占比偏差不超过5% |
483
- | 3 | **情绪节拍完整** | 压抑→爆发→释放的完整情绪弧线存在,无断层 |
484
- | 4 | **人物弧线明确** | 主角有清晰的起点和终点变化;反派有独立动机不是工具人 |
485
- | 5 | **钩子密度足够** | 每2000字至少一个悬念/反转/信息差钩子 |
486
- | 6 | **金手指自洽** | 金手指规则明确,使用有限制,后期不崩 |
487
- | 7 | **信息差利用到位** | 有读者知道但角色不知道、或角色知道但对手不知道的信息差设计 |
488
- | 8 | **技法匹配题材** | 已对照对应题材的"技法"条目,无遗漏 |
489
- | 9 | **无废段落** | 每段都推进情节或深化人物,无纯填充 |
490
- | 10 | **结局情绪对位** | 结尾情绪与题材核心匹配(爽文=释放/治愈;虐文=意难平/余韵) |