@oh-story/dsh 0.1.9 → 0.1.11

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 (529) hide show
  1. package/README.md +14 -14
  2. package/lib/client.js +209 -73
  3. package/lib/client.js.map +3 -3
  4. package/lib/drama/manifest.json +248 -168
  5. package/lib/drama/skills/short-drama/SKILL.md +16 -4
  6. package/lib/drama/skills/short-drama/assets/project-template/short-drama.json +3 -0
  7. package/lib/drama/skills/short-drama/references/creator-documents.md +3 -0
  8. package/lib/drama/skills/short-drama/references/knowhow-index.md +15 -0
  9. package/lib/drama/skills/short-drama/scripts/creator_markdown_check.py +14 -0
  10. package/lib/drama/skills/short-drama/scripts/project_tool.py +131 -0
  11. package/lib/drama/skills/short-drama-assets/SKILL.md +2 -1
  12. package/lib/drama/skills/short-drama-assets/references/asset-review-checklist.md +2 -0
  13. package/lib/drama/skills/short-drama-assets/references/character-and-look.md +10 -0
  14. package/lib/drama/skills/short-drama-assets/references/continuity-lock.md +6 -9
  15. package/lib/drama/skills/short-drama-assets/references/era-anchors.md +37 -0
  16. package/lib/drama/skills/short-drama-assets/references/stage-contract.md +2 -0
  17. package/lib/drama/skills/short-drama-assets/references/voice-direction.md +28 -0
  18. package/lib/drama/skills/short-drama-develop/SKILL.md +10 -4
  19. package/lib/drama/skills/short-drama-develop/assets/adaptation-map.example.jsonl +1 -1
  20. package/lib/drama/skills/short-drama-develop/assets/creative-brief.md +8 -0
  21. package/lib/drama/skills/short-drama-develop/references/adaptation-craft.md +80 -13
  22. package/lib/drama/skills/short-drama-develop/references/episode-design.md +95 -12
  23. package/lib/drama/skills/short-drama-develop/references/genre-and-hook-playbook.md +9 -5
  24. package/lib/drama/skills/short-drama-develop/references/genre-cards//345/244/215/344/273/207/346/211/223/350/204/270.md +1 -1
  25. package/lib/drama/skills/short-drama-develop/references/genre-cards//347/263/273/347/273/237/346/265/201.md +51 -0
  26. package/lib/drama/skills/short-drama-develop/references/genre-cards//351/200/206/350/242/255.md +51 -0
  27. package/lib/drama/skills/short-drama-develop/references/genre-cards//351/207/215/347/224/237/347/251/277/350/266/212.md +51 -0
  28. package/lib/drama/skills/short-drama-develop/references/genre-cards.md +10 -7
  29. package/lib/drama/skills/short-drama-develop/references/premise-devices.md +15 -9
  30. package/lib/drama/skills/short-drama-develop/references/serial-character-and-memory.md +3 -2
  31. package/lib/drama/skills/short-drama-develop/references/stage-contract.md +14 -7
  32. package/lib/drama/skills/short-drama-develop/references/story-craft.md +7 -3
  33. package/lib/drama/skills/short-drama-edit/SKILL.md +65 -44
  34. package/lib/drama/skills/short-drama-edit/assets/remotion/README.md +49 -13
  35. package/lib/drama/skills/short-drama-edit/assets/remotion/package.json +4 -2
  36. package/lib/drama/skills/short-drama-edit/assets/remotion/src/Overlay.tsx +31 -0
  37. package/lib/drama/skills/short-drama-edit/assets/remotion/src/Root.tsx +5 -5
  38. package/lib/drama/skills/short-drama-edit/assets/remotion/src/Subtitles.tsx +68 -69
  39. package/lib/drama/skills/short-drama-edit/assets/remotion/src/font.ts +39 -29
  40. package/lib/drama/skills/short-drama-edit/assets/remotion/src/rules.mjs +188 -0
  41. package/lib/drama/skills/short-drama-edit/assets/remotion/src/schema.ts +26 -13
  42. package/lib/drama/skills/short-drama-edit/assets/remotion/src/screen/Card.tsx +72 -0
  43. package/lib/drama/skills/short-drama-edit/assets/remotion/src/screen/CornerChip.tsx +39 -0
  44. package/lib/drama/skills/short-drama-edit/assets/remotion/src/screen/ScreenText.tsx +36 -0
  45. package/lib/drama/skills/short-drama-edit/assets/remotion/src/screen/SystemPanel.tsx +44 -0
  46. package/lib/drama/skills/short-drama-edit/assets/remotion/src/screen/TaskPanel.tsx +100 -0
  47. package/lib/drama/skills/short-drama-edit/assets/remotion/src/screen/chrome.tsx +197 -0
  48. package/lib/drama/skills/short-drama-edit/assets/remotion/src/screen/tokens.ts +62 -0
  49. package/lib/drama/skills/short-drama-edit/assets/remotion/tsconfig.json +1 -0
  50. package/lib/drama/skills/short-drama-edit/assets//345/211/252/350/276/221/345/215/225.md +6 -4
  51. package/lib/drama/skills/short-drama-edit/references/cut-craft.md +26 -67
  52. package/lib/drama/skills/short-drama-edit/references/delivery-verify.md +31 -56
  53. package/lib/drama/skills/short-drama-edit/references/generated-footage.md +42 -78
  54. package/lib/drama/skills/short-drama-edit/references/sound-and-subtitles.md +44 -92
  55. package/lib/drama/skills/short-drama-edit/references/stage-contract.md +14 -16
  56. package/lib/drama/skills/short-drama-edit/scripts/edit_tool.py +1272 -125
  57. package/lib/drama/skills/short-drama-edit/scripts/selftest.py +113 -9
  58. package/lib/drama/skills/short-drama-image-prompts/SKILL.md +2 -0
  59. package/lib/drama/skills/short-drama-image-prompts/references/common-recipe.md +11 -0
  60. package/lib/drama/skills/short-drama-novel-analyze/SKILL.md +3 -3
  61. package/lib/drama/skills/short-drama-novel-analyze/assets/episode-candidate.example.jsonl +2 -2
  62. package/lib/drama/skills/short-drama-novel-analyze/references/adaptation-triage.md +8 -4
  63. package/lib/drama/skills/short-drama-novel-analyze/references/adaptation-value.md +10 -3
  64. package/lib/drama/skills/short-drama-novel-analyze/references/aggregation-and-entities.md +25 -1
  65. package/lib/drama/skills/short-drama-novel-analyze/references/stage-contract.md +1 -0
  66. package/lib/drama/skills/short-drama-produce/SKILL.md +5 -1
  67. package/lib/drama/skills/short-drama-produce/references/adapter-contract.md +14 -20
  68. package/lib/drama/skills/short-drama-produce/references/providers/minimax-h3-video.md +8 -26
  69. package/lib/drama/skills/short-drama-produce/references/providers/minimax-speech.md +41 -0
  70. package/lib/drama/skills/short-drama-produce/scripts/provider_adapters.py +142 -1
  71. package/lib/drama/skills/short-drama-review/SKILL.md +4 -5
  72. package/lib/drama/skills/short-drama-review/references/production-quality-gates.md +6 -19
  73. package/lib/drama/skills/short-drama-review/references/review-method.md +6 -1
  74. package/lib/drama/skills/short-drama-review/references/rubric-assets-prompts.md +11 -0
  75. package/lib/drama/skills/short-drama-review/references/rubric-story-script.md +77 -3
  76. package/lib/drama/skills/short-drama-review/references/rubric-visual-motion.md +24 -35
  77. package/lib/drama/skills/short-drama-review/references/stage-contract.md +3 -0
  78. package/lib/drama/skills/short-drama-storyboard/SKILL.md +23 -11
  79. package/lib/drama/skills/short-drama-storyboard/references/blocking-playbooks.md +1 -1
  80. package/lib/drama/skills/short-drama-storyboard/references/lighting-craft.md +39 -0
  81. package/lib/drama/skills/short-drama-storyboard/references/production-shot-grammar.md +2 -2
  82. package/lib/drama/skills/short-drama-storyboard/references/shot-craft.md +139 -34
  83. package/lib/drama/skills/short-drama-storyboard/references/stage-contract.md +5 -3
  84. package/lib/drama/skills/short-drama-video-prompts/SKILL.md +15 -12
  85. package/lib/drama/skills/short-drama-video-prompts/references/camera-audio-continuity.md +29 -0
  86. package/lib/drama/skills/short-drama-video-prompts/references/delivery-profile.md +4 -5
  87. package/lib/drama/skills/short-drama-video-prompts/references/generability.md +4 -2
  88. package/lib/drama/skills/short-drama-video-prompts/references/minimax-h3.md +52 -39
  89. package/lib/drama/skills/short-drama-video-prompts/references/motion-recipe.md +24 -21
  90. package/lib/drama/skills/short-drama-video-prompts/references/performance-action-timing.md +9 -23
  91. package/lib/drama/skills/short-drama-video-prompts/references/production-prompt-grammar.md +14 -26
  92. package/lib/drama/skills/short-drama-video-prompts/references/review-and-fixtures.md +1 -1
  93. package/lib/drama/skills/short-drama-video-prompts/references/seedance-2.0.md +2 -3
  94. package/lib/drama/skills/short-drama-video-prompts/references/seedance-2.5.md +34 -9
  95. package/lib/drama/skills/short-drama-video-prompts/references/stage-contract.md +3 -2
  96. package/lib/drama/skills/short-drama-video-prompts/references/target-model-profile.md +8 -1
  97. package/lib/drama/skills/short-drama-video-prompts/references/wan-3.0.md +103 -0
  98. package/lib/drama/skills/short-drama-video-prompts/scripts/motion_timing_check.py +8 -7
  99. package/lib/drama/skills/short-drama-write/SKILL.md +10 -7
  100. package/lib/drama/skills/short-drama-write/references/dialogue-craft.md +1 -1
  101. package/lib/drama/skills/short-drama-write/references/script-craft.md +56 -3
  102. package/lib/drama/skills/short-drama-write/references/stage-contract.md +4 -0
  103. package/lib/drama/skills/short-drama-write/scripts/duration_estimate.py +48 -2
  104. package/lib/index.js +346 -98
  105. package/lib/index.js.map +4 -4
  106. package/lib/novel-to-game/README.md +299 -59
  107. package/lib/novel-to-game/README_ZH.md +299 -56
  108. package/lib/novel-to-game/VERSION +1 -1
  109. package/lib/novel-to-game/examples/jin-ping-mei/build/BUILD_BRIEF.md +3 -1
  110. package/lib/novel-to-game/examples/jin-ping-mei/build/app/RUN.md +11 -3
  111. package/lib/novel-to-game/examples/jin-ping-mei/build/app/css/new-guofeng.css +397 -8
  112. package/lib/novel-to-game/examples/jin-ping-mei/build/app/css/style.css +0 -31
  113. package/lib/novel-to-game/examples/jin-ping-mei/build/app/js/data.js +71 -73
  114. package/lib/novel-to-game/examples/jin-ping-mei/build/app/js/engine.js +78 -89
  115. package/lib/novel-to-game/examples/jin-ping-mei/build/app/js/main.js +37 -14
  116. package/lib/novel-to-game/examples/jin-ping-mei/build/app/js/text.js +5 -5
  117. package/lib/novel-to-game/examples/jin-ping-mei/build/app/package.json +2 -1
  118. package/lib/novel-to-game/examples/jin-ping-mei/qa/README.md +11 -16
  119. package/lib/novel-to-game/examples/jin-ping-mei/qa/verification.json +11 -11
  120. package/lib/novel-to-game/examples/jin-ping-mei/qa/verify_playable_model.mjs +23 -0
  121. package/lib/novel-to-game/manifest.json +77 -87
  122. package/lib/novel-to-game/skills/game-art-direction/SKILL.md +7 -12
  123. package/lib/novel-to-game/skills/game-art-direction/references/art-direction-method.md +27 -106
  124. package/lib/novel-to-game/skills/game-build/SKILL.md +13 -14
  125. package/lib/novel-to-game/skills/game-build/references/blender-asset-workflow.md +24 -0
  126. package/lib/novel-to-game/skills/game-build/references/build-brief-contract.md +45 -82
  127. package/lib/novel-to-game/skills/game-build/references/generative-media-pipeline.md +14 -45
  128. package/lib/novel-to-game/skills/game-build/references/playable-model-contract.md +30 -65
  129. package/lib/novel-to-game/skills/game-build/references/tts-production-contract.md +13 -27
  130. package/lib/novel-to-game/skills/game-concept/SKILL.md +13 -15
  131. package/lib/novel-to-game/skills/game-concept/references/concept-method.md +28 -75
  132. package/lib/novel-to-game/skills/game-qa/SKILL.md +6 -7
  133. package/lib/novel-to-game/skills/game-qa/references/test-design-method.md +9 -5
  134. package/lib/novel-to-game/skills/game-world-design/SKILL.md +12 -16
  135. package/lib/novel-to-game/skills/game-world-design/references/narrative-design-method.md +23 -72
  136. package/lib/novel-to-game/skills/game-world-design/references/numeric-design-method.md +14 -48
  137. package/lib/novel-to-game/skills/game-world-design/references/world-design-method.md +36 -103
  138. package/lib/novel-to-game/skills/novel-game-analyze/SKILL.md +4 -10
  139. package/lib/novel-to-game/skills/novel-game-analyze/references/gameability-protocol.md +4 -4
  140. package/lib/novel-to-game/skills/novel-to-game/SKILL.md +9 -21
  141. package/lib/novel-to-game/skills/novel-to-game/references/intake-method.md +5 -4
  142. package/lib/novel-to-game/skills/novel-to-game/references/pipeline-contract.md +5 -8
  143. package/lib/oh-story/manifest.json +607 -327
  144. package/lib/oh-story/roles/chapter-extractor.md +177 -237
  145. package/lib/oh-story/roles/character-designer.md +1 -2
  146. package/lib/oh-story/roles/consistency-checker.md +15 -13
  147. package/lib/oh-story/roles/narrative-writer.md +36 -38
  148. package/lib/oh-story/roles/story-architect.md +9 -61
  149. package/lib/oh-story/roles/story-explorer.md +20 -125
  150. package/lib/oh-story/roles/story-researcher.md +0 -1
  151. package/lib/oh-story/skills/story/SKILL.md +15 -9
  152. package/lib/oh-story/skills/story/VERSION +1 -1
  153. package/lib/oh-story/skills/story/references/author-memory-maintenance.md +75 -0
  154. package/lib/oh-story/skills/story/references/author-memory.md +46 -94
  155. package/lib/oh-story/skills/story/scripts/author_memory_commit.py +934 -170
  156. package/lib/oh-story/skills/story-cover/SKILL.md +10 -1
  157. package/lib/oh-story/skills/story-deslop/SKILL.md +59 -73
  158. package/lib/oh-story/skills/story-deslop/references/agent-calls.md +5 -0
  159. package/lib/oh-story/skills/story-deslop/references/anti-ai-writing.md +12 -11
  160. package/lib/oh-story/skills/story-deslop/references/author-memory-maintenance.md +75 -0
  161. package/lib/oh-story/skills/story-deslop/references/author-memory.md +46 -94
  162. package/lib/oh-story/skills/story-deslop/references/banned-words.md +2 -2
  163. package/lib/oh-story/skills/story-deslop/references/deslop-gates.md +22 -5
  164. package/lib/oh-story/skills/story-deslop/references/style-resolution.md +4 -4
  165. package/lib/oh-story/skills/story-deslop/scripts/author_memory_commit.py +934 -170
  166. package/lib/oh-story/skills/story-deslop/scripts/check-ai-patterns.js +155 -8
  167. package/lib/oh-story/skills/story-import/SKILL.md +64 -584
  168. package/lib/oh-story/skills/story-import/references/character-state-reverse.md +1 -1
  169. package/lib/oh-story/skills/story-import/references/deep-analysis.md +47 -0
  170. package/lib/oh-story/skills/story-import/references/format-and-structure.md +1 -1
  171. package/lib/oh-story/skills/story-import/references/import-report.md +64 -0
  172. package/lib/oh-story/skills/story-import/references/import-special-cases.md +34 -0
  173. package/lib/oh-story/skills/story-import/references/import-tracking.md +95 -0
  174. package/lib/oh-story/skills/story-import/references/length-routing.md +1 -1
  175. package/lib/oh-story/skills/story-import/references/outline-reverse-rules.md +79 -0
  176. package/lib/oh-story/skills/story-import/references/outline-reverse.md +24 -0
  177. package/lib/oh-story/skills/story-import/references/state-tracking.md +4 -69
  178. package/lib/oh-story/skills/story-import/references/structure-mapping-long.md +98 -92
  179. package/lib/oh-story/skills/story-import/references/structure-mapping-short.md +24 -12
  180. package/lib/oh-story/skills/story-import/references/tracking-initialization.md +1 -1
  181. package/lib/oh-story/skills/story-import/references/tracking-transaction.md +15 -11
  182. package/lib/oh-story/skills/story-import/scripts/build_outline_brief.py +332 -0
  183. package/lib/oh-story/skills/story-import/scripts/check-outline-contract.js +132 -27
  184. package/lib/oh-story/skills/story-import/scripts/tracking_commit.py +478 -15
  185. package/lib/oh-story/skills/story-import/scripts/wordcount_core.py +182 -23
  186. package/lib/oh-story/skills/story-long-analyze/SKILL.md +81 -270
  187. package/lib/oh-story/skills/story-long-analyze/references/author-facing.md +252 -0
  188. package/lib/oh-story/skills/story-long-analyze/references/deconstruction-notes.md +3 -3
  189. package/lib/oh-story/skills/story-long-analyze/references/final-checks.md +19 -0
  190. package/lib/oh-story/skills/story-long-analyze/references/index-rebuild.md +11 -0
  191. package/lib/oh-story/skills/story-long-analyze/references/inspiration-library.md +105 -0
  192. package/lib/oh-story/skills/story-long-analyze/references/pipeline-ops.md +138 -64
  193. package/lib/oh-story/skills/story-long-analyze/references/semantic-acceptance-fixtures.md +84 -0
  194. package/lib/oh-story/skills/story-long-analyze/references/stage1-golden-chapters.md +128 -0
  195. package/lib/oh-story/skills/story-long-analyze/references/stage2-extraction.md +229 -0
  196. package/lib/oh-story/skills/story-long-analyze/references/stage3-plot-rhythm.md +480 -0
  197. package/lib/oh-story/skills/story-long-analyze/references/stage4-characters-settings.md +195 -0
  198. package/lib/oh-story/skills/story-long-analyze/references/stage5-report.md +33 -0
  199. package/lib/oh-story/skills/story-long-analyze/references/style-profile-generator.md +55 -128
  200. package/lib/oh-story/skills/story-long-analyze/references/style-profile-protocol.md +6 -6
  201. package/lib/oh-story/skills/story-long-analyze/references/synthesis-inputs.md +39 -0
  202. package/lib/oh-story/skills/story-long-analyze/scripts/build_chapter_index.py +466 -0
  203. package/lib/oh-story/skills/story-long-analyze/scripts/inspect_existing_assets.py +702 -0
  204. package/lib/oh-story/skills/story-long-analyze/scripts/inspiration_index.py +864 -0
  205. package/lib/oh-story/skills/story-long-analyze/scripts/manage_analysis_run.py +1145 -0
  206. package/lib/oh-story/skills/story-long-analyze/scripts/render_relation_chart.py +425 -0
  207. package/lib/oh-story/skills/story-long-scan/SKILL.md +45 -194
  208. package/lib/oh-story/skills/story-long-scan/references/platform-ciweimao.md +19 -0
  209. package/lib/oh-story/skills/story-long-scan/references/platform-fanqie.md +45 -0
  210. package/lib/oh-story/skills/story-long-scan/references/platform-jjwxc.md +28 -0
  211. package/lib/oh-story/skills/story-long-scan/references/platform-qidian.md +35 -0
  212. package/lib/oh-story/skills/story-long-scan/references/platform-qimao.md +27 -0
  213. package/lib/oh-story/skills/story-long-scan/references/topic-decision.md +6 -2
  214. package/lib/oh-story/skills/story-long-write/SKILL.md +49 -81
  215. package/lib/oh-story/skills/story-long-write/references/agent-calls.md +47 -0
  216. package/lib/oh-story/skills/story-long-write/references/anti-ai-writing.md +12 -11
  217. package/lib/oh-story/skills/story-long-write/references/artifact-protocols.md +24 -202
  218. package/lib/oh-story/skills/story-long-write/references/author-memory-maintenance.md +75 -0
  219. package/lib/oh-story/skills/story-long-write/references/author-memory.md +46 -94
  220. package/lib/oh-story/skills/story-long-write/references/banned-words.md +2 -2
  221. package/lib/oh-story/skills/story-long-write/references/benchmark-recall.md +7 -11
  222. package/lib/oh-story/skills/story-long-write/references/character-relations.md +49 -1
  223. package/lib/oh-story/skills/story-long-write/references/cross-book-recall.md +26 -0
  224. package/lib/oh-story/skills/story-long-write/references/deslop-gates.md +171 -0
  225. package/lib/oh-story/skills/story-long-write/references/dialogue-mastery.md +4 -0
  226. package/lib/oh-story/skills/story-long-write/references/emotion-on-page.md +116 -0
  227. package/lib/oh-story/skills/story-long-write/references/emotional-arc-design.md +1 -114
  228. package/lib/oh-story/skills/story-long-write/references/emotional-methods.md +2 -2
  229. package/lib/oh-story/skills/story-long-write/references/genre-prose-cards.md +1 -1
  230. package/lib/oh-story/skills/story-long-write/references/long-chapter-quality.md +7 -15
  231. package/lib/oh-story/skills/story-long-write/references/long-format.md +0 -8
  232. package/lib/oh-story/skills/story-long-write/references/long-genre-catalog.md +1 -1
  233. package/lib/oh-story/skills/story-long-write/references/long-genre-mechanics.md +3 -3
  234. package/lib/oh-story/skills/story-long-write/references/opening-design.md +2 -2
  235. package/lib/oh-story/skills/story-long-write/references/outline-conflict.md +4 -4
  236. package/lib/oh-story/skills/story-long-write/references/outline-methods.md +7 -7
  237. package/lib/oh-story/skills/story-long-write/references/outline-rhythm.md +3 -3
  238. package/lib/oh-story/skills/story-long-write/references/outline-structure-theory.md +14 -69
  239. package/lib/oh-story/skills/story-long-write/references/plot-frameworks.md +1 -1
  240. package/lib/oh-story/skills/story-long-write/references/plot-special-topics.md +2 -2
  241. package/lib/oh-story/skills/story-long-write/references/project-files.md +19 -13
  242. package/lib/oh-story/skills/story-long-write/references/reader-contract-and-progression.md +13 -5
  243. package/lib/oh-story/skills/story-long-write/references/reference-index.md +5 -6
  244. package/lib/oh-story/skills/story-long-write/references/stop-and-fix.md +9 -0
  245. package/lib/oh-story/skills/story-long-write/references/style-combat-face.md +1 -58
  246. package/lib/oh-story/skills/story-long-write/references/style-genre-modules.md +1 -1
  247. package/lib/oh-story/skills/story-long-write/references/style-resolution.md +4 -4
  248. package/lib/oh-story/skills/story-long-write/references/tracking-initialization.md +1 -1
  249. package/lib/oh-story/skills/story-long-write/references/tracking-transaction.md +15 -11
  250. package/lib/oh-story/skills/story-long-write/references/workflow-chapter.md +81 -121
  251. package/lib/oh-story/skills/story-long-write/references/workflow-daily.md +41 -139
  252. package/lib/oh-story/skills/story-long-write/references/workflow-outline.md +157 -0
  253. package/lib/oh-story/skills/story-long-write/references/workflow-revision.md +57 -67
  254. package/lib/oh-story/skills/story-long-write/references/workflow-setup.md +112 -253
  255. package/lib/oh-story/skills/story-long-write/references/workflow-volume.md +142 -0
  256. package/lib/oh-story/skills/story-long-write/references/writer-prompt-fallback.md +6 -4
  257. package/lib/oh-story/skills/story-long-write/references/writing-craft.md +19 -65
  258. package/lib/oh-story/skills/story-long-write/scripts/author_memory_commit.py +934 -170
  259. package/lib/oh-story/skills/story-long-write/scripts/build_architect_brief.py +260 -0
  260. package/lib/oh-story/skills/story-long-write/scripts/build_writer_prompt.py +226 -25
  261. package/lib/oh-story/skills/story-long-write/scripts/check-ai-patterns.js +155 -8
  262. package/lib/oh-story/skills/story-long-write/scripts/check-outline-contract.js +132 -27
  263. package/lib/oh-story/skills/story-long-write/scripts/check-outline-copy.js +7 -2
  264. package/lib/oh-story/skills/story-long-write/scripts/outline_view.py +7 -4
  265. package/lib/oh-story/skills/story-long-write/scripts/storyctl.py +304 -46
  266. package/lib/oh-story/skills/story-long-write/scripts/tracking_commit.py +478 -15
  267. package/lib/oh-story/skills/story-long-write/scripts/wordcount_core.py +182 -23
  268. package/lib/oh-story/skills/story-review/SKILL.md +31 -302
  269. package/lib/oh-story/skills/story-review/references/agent-prompts.md +184 -0
  270. package/lib/oh-story/skills/story-review/references/anti-ai-writing.md +12 -11
  271. package/lib/oh-story/skills/story-review/references/author-memory-maintenance.md +75 -0
  272. package/lib/oh-story/skills/story-review/references/author-memory.md +46 -94
  273. package/lib/oh-story/skills/story-review/references/banned-words.md +2 -2
  274. package/lib/oh-story/skills/story-review/references/batch-review.md +19 -0
  275. package/lib/oh-story/skills/story-review/references/character-relations.md +49 -1
  276. package/lib/oh-story/skills/story-review/references/dialogue-mastery.md +4 -0
  277. package/lib/oh-story/skills/story-review/references/review-quality.md +6 -11
  278. package/lib/oh-story/skills/story-review/references/review-tracking.md +10 -0
  279. package/lib/oh-story/skills/story-review/references/solo.md +52 -0
  280. package/lib/oh-story/skills/story-review/references/style-resolution.md +4 -4
  281. package/lib/oh-story/skills/story-review/references/tracking-initialization.md +1 -1
  282. package/lib/oh-story/skills/story-review/references/tracking-transaction.md +15 -11
  283. package/lib/oh-story/skills/story-review/scripts/author_memory_commit.py +934 -170
  284. package/lib/oh-story/skills/story-review/scripts/check-ai-patterns.js +155 -8
  285. package/lib/oh-story/skills/story-review/scripts/tracking_commit.py +478 -15
  286. package/lib/oh-story/skills/story-review/scripts/wordcount_core.py +182 -23
  287. package/lib/oh-story/skills/story-setup/SKILL.md +71 -452
  288. package/lib/oh-story/skills/story-setup/references/agent-references/agent-quality.md +4 -4
  289. package/lib/oh-story/skills/story-setup/references/agent-references/anti-ai-writing.md +12 -11
  290. package/lib/oh-story/skills/story-setup/references/agent-references/banned-words.md +2 -2
  291. package/lib/oh-story/skills/story-setup/references/agent-references/benchmark-style-load.md +107 -0
  292. package/lib/oh-story/skills/story-setup/references/agent-references/character-relations.md +49 -1
  293. package/lib/oh-story/skills/story-setup/references/agent-references/deslop-gates.md +22 -5
  294. package/lib/oh-story/skills/story-setup/references/agent-references/dialogue-mastery.md +4 -0
  295. package/lib/oh-story/skills/story-setup/references/agent-references/emotion-on-page.md +116 -0
  296. package/lib/oh-story/skills/story-setup/references/agent-references/emotional-arc-design.md +1 -114
  297. package/lib/oh-story/skills/story-setup/references/agent-references/format-and-structure.md +1 -1
  298. package/lib/oh-story/skills/story-setup/references/agent-references/genre-prose-cards.md +1 -1
  299. package/lib/oh-story/skills/story-setup/references/agent-references/long-emotional-methods.md +2 -2
  300. package/lib/oh-story/skills/story-setup/references/agent-references/long-genre-catalog.md +1 -1
  301. package/lib/oh-story/skills/story-setup/references/agent-references/long-genre-mechanics.md +3 -3
  302. package/lib/oh-story/skills/story-setup/references/agent-references/long-quality.md +7 -5
  303. package/lib/oh-story/skills/story-setup/references/agent-references/opening-design.md +2 -2
  304. package/lib/oh-story/skills/story-setup/references/agent-references/outline-conflict.md +4 -4
  305. package/lib/oh-story/skills/story-setup/references/agent-references/outline-methods.md +7 -7
  306. package/lib/oh-story/skills/story-setup/references/agent-references/outline-rhythm.md +3 -3
  307. package/lib/oh-story/skills/story-setup/references/agent-references/short-emotional-methods.md +1 -1
  308. package/lib/oh-story/skills/story-setup/references/agent-references/short-genre-formulas.md +0 -15
  309. package/lib/oh-story/skills/story-setup/references/agent-references/short-reversal.md +1 -1
  310. package/lib/oh-story/skills/story-setup/references/agent-references/style-combat-face.md +1 -58
  311. package/lib/oh-story/skills/story-setup/references/agent-references/style-genre-modules.md +1 -1
  312. package/lib/oh-story/skills/story-setup/references/agent-references/style-resolution.md +4 -4
  313. package/lib/oh-story/skills/story-setup/references/agent-references/writing-craft.md +19 -65
  314. package/lib/oh-story/skills/story-setup/references/diagnostics.md +4 -4
  315. package/lib/oh-story/skills/story-short-analyze/SKILL.md +56 -110
  316. package/lib/oh-story/skills/story-short-analyze/references/analysis-character-relations.md +1 -1
  317. package/lib/oh-story/skills/story-short-analyze/references/analysis-method.md +42 -0
  318. package/lib/oh-story/skills/story-short-analyze/references/optional-modules.md +97 -0
  319. package/lib/oh-story/skills/story-short-analyze/references/output-contract.md +9 -47
  320. package/lib/oh-story/skills/story-short-analyze/references/quality-checklist.md +80 -0
  321. package/lib/oh-story/skills/story-short-analyze/references/source-story-quality.md +4 -4
  322. package/lib/oh-story/skills/story-short-analyze/references/stage2-3-structure-emotion.md +308 -0
  323. package/lib/oh-story/skills/story-short-analyze/references/stage4-6-reversal-summary.md +611 -0
  324. package/lib/oh-story/skills/story-short-scan/SKILL.md +35 -65
  325. package/lib/oh-story/skills/story-short-scan/references/manual-rank-input.md +36 -0
  326. package/lib/oh-story/skills/story-short-scan/references/platform-dianzhong.md +24 -0
  327. package/lib/oh-story/skills/story-short-scan/references/platform-heiyan.md +21 -0
  328. package/lib/oh-story/skills/story-short-scan/references/topic-match.md +38 -0
  329. package/lib/oh-story/skills/story-short-write/SKILL.md +23 -175
  330. package/lib/oh-story/skills/story-short-write/references/agent-calls.md +13 -0
  331. package/lib/oh-story/skills/story-short-write/references/author-memory-maintenance.md +75 -0
  332. package/lib/oh-story/skills/story-short-write/references/author-memory.md +46 -94
  333. package/lib/oh-story/skills/story-short-write/references/banned-words.md +2 -2
  334. package/lib/oh-story/skills/story-short-write/references/benchmark-recall.md +1 -21
  335. package/lib/oh-story/skills/story-short-write/references/dialogue-mastery.md +4 -0
  336. package/lib/oh-story/skills/story-short-write/references/emotional-methods.md +1 -1
  337. package/lib/oh-story/skills/story-short-write/references/genre-writing-formulas.md +0 -15
  338. package/lib/oh-story/skills/story-short-write/references/output-contract.md +9 -47
  339. package/lib/oh-story/skills/story-short-write/references/reference-index.md +17 -47
  340. package/lib/oh-story/skills/story-short-write/references/scene-craft.md +40 -0
  341. package/lib/oh-story/skills/story-short-write/references/short-craft.md +7 -43
  342. package/lib/oh-story/skills/story-short-write/references/short-format.md +3 -3
  343. package/lib/oh-story/skills/story-short-write/references/short-prose-quality.md +2 -1
  344. package/lib/oh-story/skills/story-short-write/references/short-reversal.md +1 -1
  345. package/lib/oh-story/skills/story-short-write/references/style-resolution.md +4 -4
  346. package/lib/oh-story/skills/story-short-write/references/submission-craft.md +1 -1
  347. package/lib/oh-story/skills/story-short-write/references/villain-and-reveal.md +5 -10
  348. package/lib/oh-story/skills/story-short-write/references/workflow-design.md +21 -13
  349. package/lib/oh-story/skills/story-short-write/references/workflow-draft.md +116 -0
  350. package/lib/oh-story/skills/story-short-write/references/workflow-revision.md +99 -0
  351. package/lib/oh-story/skills/story-short-write/references/writing-workflow.md +7 -119
  352. package/lib/oh-story/skills/story-short-write/scripts/author_memory_commit.py +934 -170
  353. package/lib/oh-story/skills/story-short-write/scripts/check-ai-patterns.js +155 -8
  354. package/lib/oh-story/skills/story-short-write/scripts/check-outline-copy.js +7 -2
  355. package/lib/types/client/drama-production-view.d.ts.map +1 -1
  356. package/lib/types/client/file-activity.d.ts +19 -1
  357. package/lib/types/client/file-activity.d.ts.map +1 -1
  358. package/lib/types/client/index.d.ts.map +1 -1
  359. package/lib/types/client/production-prompts.d.ts +7 -0
  360. package/lib/types/client/production-prompts.d.ts.map +1 -1
  361. package/lib/types/client/production-runtime.d.ts +16 -0
  362. package/lib/types/client/production-runtime.d.ts.map +1 -1
  363. package/lib/types/client/video-studio.d.ts.map +1 -1
  364. package/lib/types/drama-adapters.d.ts +5 -3
  365. package/lib/types/drama-adapters.d.ts.map +1 -1
  366. package/lib/types/native-hooks.d.ts +53 -1
  367. package/lib/types/native-hooks.d.ts.map +1 -1
  368. package/lib/types/role-identity.d.ts +17 -0
  369. package/lib/types/role-identity.d.ts.map +1 -0
  370. package/lib/types/role-tool.d.ts.map +1 -1
  371. package/lib/types/skill-provider.d.ts.map +1 -1
  372. package/lib/types/video-project.d.ts.map +1 -1
  373. package/lib/types/workspace-route.d.ts.map +1 -1
  374. package/lib/video-recap/CHANGELOG.md +60 -1
  375. package/lib/video-recap/README.en.md +348 -137
  376. package/lib/video-recap/README.md +340 -136
  377. package/lib/video-recap/manifest.json +406 -251
  378. package/lib/video-recap/skills/video-assemble/SKILL.md +30 -15
  379. package/lib/video-recap/skills/video-assemble/references/audio-modes.md +63 -0
  380. package/lib/video-recap/skills/video-assemble/references/explicit-audio-mix.md +75 -0
  381. package/lib/video-recap/skills/video-assemble/references/foreground-compose.md +118 -0
  382. package/lib/video-recap/skills/video-assemble/references/narration-adoption.md +103 -0
  383. package/lib/video-recap/skills/video-assemble/references/packaging.md +45 -0
  384. package/lib/video-recap/skills/video-assemble/references/pair-media.md +74 -0
  385. package/lib/video-recap/skills/video-assemble/references/source-score.md +147 -0
  386. package/lib/video-recap/skills/video-assemble/references/subtitle-track.md +202 -0
  387. package/lib/video-recap/skills/video-assemble/scripts/adoption/__init__.py +1 -0
  388. package/lib/video-recap/skills/video-assemble/scripts/adoption/audio_mix_binding.py +279 -0
  389. package/lib/video-recap/skills/video-assemble/scripts/adoption/frozen_audio.py +187 -0
  390. package/lib/video-recap/skills/video-assemble/scripts/adoption/narration_binding.py +323 -0
  391. package/lib/video-recap/skills/video-assemble/scripts/adoption/strict_inputs.py +109 -0
  392. package/lib/video-recap/skills/video-assemble/scripts/adoption/strict_publish.py +130 -0
  393. package/lib/video-recap/skills/video-assemble/scripts/artifacts.py +10 -46
  394. package/lib/video-recap/skills/video-assemble/scripts/assemble.py +378 -119
  395. package/lib/video-recap/skills/video-assemble/scripts/assemble_constants.py +29 -12
  396. package/lib/video-recap/skills/video-assemble/scripts/assembly_contract.py +95 -44
  397. package/lib/video-recap/skills/video-assemble/scripts/assembly_settings.py +75 -32
  398. package/lib/video-recap/skills/video-assemble/scripts/audio_mix.py +11 -11
  399. package/lib/video-recap/skills/video-assemble/scripts/compose_foreground.py +293 -0
  400. package/lib/video-recap/skills/video-assemble/scripts/export_jianying.py +71 -78
  401. package/lib/video-recap/skills/video-assemble/scripts/jianying/__init__.py +1 -0
  402. package/lib/video-recap/skills/video-assemble/scripts/{jianying_builders.py → jianying/builders.py} +39 -67
  403. package/lib/video-recap/skills/video-assemble/scripts/{jianying_model.py → jianying/model.py} +3 -11
  404. package/lib/video-recap/skills/video-assemble/scripts/{jianying_optional.py → jianying/optional.py} +1 -1
  405. package/lib/video-recap/skills/video-assemble/scripts/jianying/schema.py +53 -0
  406. package/lib/video-recap/skills/video-assemble/scripts/{jianying_templates.py → jianying/templates.py} +1 -1
  407. package/lib/video-recap/skills/video-assemble/scripts/{jianying_timeline_contract.py → jianying/timeline_contract.py} +34 -13
  408. package/lib/video-recap/skills/video-assemble/scripts/{jianying_writer.py → jianying/writer.py} +7 -17
  409. package/lib/video-recap/skills/video-assemble/scripts/lib.py +37 -4
  410. package/lib/video-recap/skills/video-assemble/scripts/media.py +12 -21
  411. package/lib/video-recap/skills/video-assemble/scripts/narration_audio.py +64 -34
  412. package/lib/video-recap/skills/video-assemble/scripts/packaging.py +122 -0
  413. package/lib/video-recap/skills/video-assemble/scripts/pair_media.py +216 -0
  414. package/lib/video-recap/skills/video-assemble/scripts/render_preflight.py +1 -3
  415. package/lib/video-recap/skills/video-assemble/scripts/source_score.py +469 -0
  416. package/lib/video-recap/skills/video-assemble/scripts/source_subtitles.py +25 -9
  417. package/lib/video-recap/skills/video-assemble/scripts/subtitles/__init__.py +1 -0
  418. package/lib/video-recap/skills/video-assemble/scripts/{subtitle_core.py → subtitles/core.py} +13 -6
  419. package/lib/video-recap/skills/video-assemble/scripts/{subtitle_render.py → subtitles/render.py} +5 -4
  420. package/lib/video-recap/skills/video-assemble/scripts/subtitles/track.py +324 -0
  421. package/lib/video-recap/skills/video-assemble/scripts/subtitles/track_binding.py +200 -0
  422. package/lib/video-recap/skills/video-assemble/scripts/timeline.py +30 -46
  423. package/lib/video-recap/skills/video-assemble/scripts/timeline_emit.py +91 -7
  424. package/lib/video-recap/skills/video-assemble/scripts/visual_render.py +22 -8
  425. package/lib/video-recap/skills/video-cut/SKILL.md +34 -16
  426. package/lib/video-recap/skills/video-cut/references/shot-review.md +50 -0
  427. package/lib/video-recap/skills/video-cut/scripts/cut.py +2 -28
  428. package/lib/video-recap/skills/video-cut/scripts/cut_cli.py +58 -62
  429. package/lib/video-recap/skills/video-cut/scripts/cut_contract.py +21 -106
  430. package/lib/video-recap/skills/video-cut/scripts/cut_render.py +14 -9
  431. package/lib/video-recap/skills/video-cut/scripts/lib.py +39 -0
  432. package/lib/video-recap/skills/video-cut/scripts/narration_mapping.py +2 -155
  433. package/lib/video-recap/skills/video-cut/scripts/narrative_selection.py +244 -0
  434. package/lib/video-recap/skills/video-cut/scripts/shot_review.py +357 -0
  435. package/lib/video-recap/skills/video-recap/SKILL.md +86 -42
  436. package/lib/video-recap/skills/video-recap/references/audio-routing.md +126 -0
  437. package/lib/video-recap/skills/video-recap/references/config-playbook.md +12 -8
  438. package/lib/video-recap/skills/video-recap/references/data-schema.md +44 -33
  439. package/lib/video-recap/skills/video-recap/references/resource-library.md +151 -0
  440. package/lib/video-recap/skills/video-recap/references/shift-left-qc-schema.md +1 -1
  441. package/lib/video-recap/skills/video-recap/scripts/doctor.py +123 -30
  442. package/lib/video-recap/skills/video-recap/scripts/final_qc.py +22 -75
  443. package/lib/video-recap/skills/video-recap/scripts/lib.py +3 -3
  444. package/lib/video-recap/skills/video-recap/scripts/library.py +509 -0
  445. package/lib/video-recap/skills/video-recap/scripts/materials.py +63 -91
  446. package/lib/video-recap/skills/video-recap/scripts/mimo_qc.py +8 -70
  447. package/lib/video-recap/skills/video-recap/scripts/project_binding.py +286 -0
  448. package/lib/video-recap/skills/video-recap/scripts/qc/__init__.py +1 -0
  449. package/lib/video-recap/skills/video-recap/scripts/{mimo_qc_client.py → qc/mimo_client.py} +1 -1
  450. package/lib/video-recap/skills/video-recap/scripts/{mimo_qc_evidence.py → qc/mimo_evidence.py} +33 -66
  451. package/lib/video-recap/skills/video-recap/scripts/{mimo_qc_observations.py → qc/mimo_observations.py} +3 -11
  452. package/lib/video-recap/skills/video-recap/scripts/{mimo_qc_payload.py → qc/mimo_payload.py} +4 -7
  453. package/lib/video-recap/skills/video-recap/scripts/{mimo_qc_report.py → qc/mimo_report.py} +17 -28
  454. package/lib/video-recap/skills/video-recap/scripts/{mimo_qc_runner.py → qc/mimo_runner.py} +2 -2
  455. package/lib/video-recap/skills/video-recap/scripts/qc_contract.py +0 -19
  456. package/lib/video-recap/skills/video-recap/scripts/recap_cli.py +119 -50
  457. package/lib/video-recap/skills/video-recap/scripts/recap_inspect.py +32 -114
  458. package/lib/video-recap/skills/video-recap/scripts/recap_review.py +9 -23
  459. package/lib/video-recap/skills/video-recap/scripts/recap_runner.py +387 -334
  460. package/lib/video-recap/skills/video-recap/scripts/recap_runtime.py +23 -23
  461. package/lib/video-recap/skills/video-recap/scripts/recap_source.py +278 -0
  462. package/lib/video-recap/skills/video-recap/scripts/recap_stage_qc.py +25 -12
  463. package/lib/video-recap/skills/video-recap/scripts/recap_timeline.py +59 -52
  464. package/lib/video-recap/skills/video-recap/scripts/resource_lock.py +162 -0
  465. package/lib/video-recap/skills/video-script/SKILL.md +16 -13
  466. package/lib/video-recap/skills/video-script/references/creative-editing-playbook.md +9 -5
  467. package/lib/video-recap/skills/video-script/references/promotional-copy.md +68 -0
  468. package/lib/video-recap/skills/video-script/references/research-guide.md +1 -1
  469. package/lib/video-recap/skills/video-script/scripts/evidence_bundle.py +24 -76
  470. package/lib/video-recap/skills/video-script/scripts/lib.py +10 -87
  471. package/lib/video-recap/skills/video-script/scripts/narration_lint.py +63 -39
  472. package/lib/video-recap/skills/video-script/scripts/review.py +0 -2
  473. package/lib/video-recap/skills/video-script/scripts/review_grounding.py +35 -59
  474. package/lib/video-recap/skills/video-script/scripts/review_response.py +66 -128
  475. package/lib/video-recap/skills/video-script/scripts/review_runner.py +12 -20
  476. package/lib/video-recap/skills/video-script/scripts/speech_ownership.py +4 -4
  477. package/lib/video-recap/skills/video-script/scripts/validate.py +53 -42
  478. package/lib/video-recap/skills/video-understanding/SKILL.md +6 -4
  479. package/lib/video-recap/skills/video-understanding/references/data-schema.md +50 -156
  480. package/lib/video-recap/skills/video-understanding/references/research-guide.md +4 -4
  481. package/lib/video-recap/skills/video-understanding/scripts/asr.py +85 -65
  482. package/lib/video-recap/skills/video-understanding/scripts/asr_timing_evidence.py +270 -0
  483. package/lib/video-recap/skills/video-understanding/scripts/brief.py +2 -5
  484. package/lib/video-recap/skills/video-understanding/scripts/briefing/__init__.py +1 -0
  485. package/lib/video-recap/skills/{video-script/scripts/agent_brief.py → video-understanding/scripts/briefing/builder.py} +38 -35
  486. package/lib/video-recap/skills/video-understanding/scripts/{brief_context.py → briefing/context.py} +4 -35
  487. package/lib/video-recap/skills/{video-script/scripts/brief_inputs.py → video-understanding/scripts/briefing/inputs.py} +9 -31
  488. package/lib/video-recap/skills/{video-script/scripts/brief_timeline.py → video-understanding/scripts/briefing/timeline.py} +5 -6
  489. package/lib/video-recap/skills/video-understanding/scripts/consolidate.py +65 -116
  490. package/lib/video-recap/skills/video-understanding/scripts/detect.py +31 -40
  491. package/lib/video-recap/skills/video-understanding/scripts/lib.py +30 -86
  492. package/lib/video-recap/skills/video-understanding/scripts/narration_lint.py +63 -39
  493. package/lib/video-recap/skills/video-understanding/scripts/speech_ownership.py +4 -4
  494. package/lib/video-recap/skills/video-understanding/scripts/storyboard.py +17 -79
  495. package/lib/video-recap/skills/video-understanding/scripts/understanding_brief.py +14 -40
  496. package/lib/video-recap/skills/video-understanding/scripts/understanding_cache.py +64 -46
  497. package/lib/video-recap/skills/video-understanding/scripts/understanding_runner.py +31 -11
  498. package/lib/video-recap/skills/video-understanding/scripts/understanding_storyboard.py +19 -14
  499. package/lib/video-recap/skills/video-understanding/scripts/vlm.py +80 -108
  500. package/lib/video-recap/skills/video-voiceover/SKILL.md +29 -19
  501. package/lib/video-recap/skills/video-voiceover/references/index-tts.md +31 -0
  502. package/lib/video-recap/skills/video-voiceover/scripts/approved_text_policy.py +123 -0
  503. package/lib/video-recap/skills/video-voiceover/scripts/dub.py +51 -59
  504. package/lib/video-recap/skills/video-voiceover/scripts/lib.py +8 -44
  505. package/lib/video-recap/skills/video-voiceover/scripts/providers/__init__.py +1 -0
  506. package/lib/video-recap/skills/video-voiceover/scripts/providers/index_tts.py +184 -0
  507. package/lib/video-recap/skills/video-voiceover/scripts/voiceover.py +212 -134
  508. package/package.json +45 -45
  509. package/lib/novel-to-game/skills/game-world-design/references/dialogue-design-method.md +0 -58
  510. package/lib/novel-to-game/skills/game-world-design/references/game-writing-craft.md +0 -53
  511. package/lib/novel-to-game/skills/novel-to-game/references/intake-benchmark-reference.md +0 -38
  512. package/lib/oh-story/skills/story-long-analyze/references/material-decomposition.md +0 -530
  513. package/lib/oh-story/skills/story-long-analyze/references/output-templates.md +0 -559
  514. package/lib/oh-story/skills/story-long-scan/references/scan-output-format.md +0 -207
  515. package/lib/oh-story/skills/story-long-write/references/state-tracking.md +0 -108
  516. package/lib/oh-story/skills/story-short-analyze/references/material-decomposition.md +0 -678
  517. package/lib/oh-story/skills/story-short-analyze/references/output-templates.md +0 -561
  518. package/lib/video-recap/skills/video-assemble/scripts/jianying_schema.py +0 -98
  519. package/lib/video-recap/skills/video-recap/references/creative-editing-playbook.md +0 -225
  520. package/lib/video-recap/skills/video-recap/references/research-guide.md +0 -74
  521. package/lib/video-recap/skills/video-recap/references/timeline-and-jianying.md +0 -250
  522. package/lib/video-recap/skills/video-script/scripts/brief_context.py +0 -348
  523. package/lib/video-recap/skills/video-script/scripts/narration.py +0 -12
  524. package/lib/video-recap/skills/video-understanding/scripts/agent_brief.py +0 -399
  525. package/lib/video-recap/skills/video-understanding/scripts/brief_inputs.py +0 -290
  526. package/lib/video-recap/skills/video-understanding/scripts/brief_timeline.py +0 -327
  527. /package/lib/video-recap/skills/video-assemble/scripts/{jianying_tracks.py → jianying/tracks.py} +0 -0
  528. /package/lib/video-recap/skills/video-recap/scripts/{mimo_qc_contract.py → qc/mimo_contract.py} +0 -0
  529. /package/lib/video-recap/skills/video-voiceover/scripts/{fish_audio.py → providers/fish_audio.py} +0 -0
@@ -1,20 +1,16 @@
1
1
  # 长篇写前召回
2
2
 
3
- 本文承接 workflow-chapter.md 步骤 3;路径优先级及缺失修复见 [project-files.md](project-files.md)。
3
+ 本文承接 workflow-chapter.md 步骤 3;主产物缺失按下面各条停下,要找文件放哪才读 [project-files.md](project-files.md)。
4
4
 
5
+ - **无对标**(题材定位对标登记为无,`对标/`、`拆文库/` 里也没有别的书):跳过 (a)(b)(e)(f),不报缺失;(c) 照常;(d) 有 `设定/文风.md` 就用,没有按默认写法、不报错;情绪与节奏取细纲与单元卡。
5
6
  - **模块召回、题材卡与文风召回**:
6
- - **成熟项目短路径(召回降档)**:`custom_style=true`(见 (d))、`设定/题材正文提示卡.md` 有实质内容、且本章细纲「目标情绪」有实际内容——且单元卡的情绪引擎、节拍分配有有效内容时**跳过 (a)(b)(e)(f)**:情绪目标取细纲「目标情绪」与单元卡「单元情绪引擎」,节奏取单元「节拍/章功能分配」,`selected_emotion_module` / `rhythm_reference` 记「降档:细纲/单元卡」,(c)(d) 照常执行,(g) 按缩减集输出。任一条件不满足走下方全量召回。判定由组装脚本做出并写进核对报告,主会话不重判。**降档下不检查对标 `剧情/情绪模块.md` 与 `剧情/节奏.md` 的存在性**,(a)(b) 的 `missing_primary_contract` fail-fast 只在全量召回路径生效。降档舍掉匹配章的扩写技法层与原文锚点,节奏补偿只到单元级——**细纲「目标情绪」写得敷衍的章不降档**。
7
+ - **成熟项目短路径(召回降档)**:`custom_style=true`、题材卡有内容,且细纲目标情绪与单元卡情绪/节拍均有效时,**跳过 (a)(b)(e)(f)**;情绪和节奏取细纲/单元卡,(c)(d) 照常执行,(g) 输出缩减集。组装脚本判定并写入核对报告;条件不足走全量召回。降档不检查对标情绪/节奏主产物,也不触发其 fail-fast;代价是没有匹配章扩写技法与原文锚点。目标情绪敷衍时不得降档。
7
8
  - ① 本章目标情绪词?② 借鉴哪个参考文件的哪个技法?③ 用在哪些段落?答不出 → 先回读参考再动笔
8
9
  - (a) **情绪模块召回**:按「对标书路径查找」规则读 `{对标书路径}/剧情/情绪模块.md`,选出 1 个与本章目标情绪最贴近的 `selected_emotion_module`(读者需求、触发器、戏剧单元、可替换要素、反抄袭提醒)。缺失时设置 `missing_primary_contract: true`,返回明确 `repair_action` 后停止准备
9
10
  - (b) **节奏召回**:读 `{对标书路径}/剧情/节奏.md`,选出 1 条 `rhythm_reference`(关键信息 → 扩写技法 → 情绪触动点 → 爆发/冷却)。缺失时设置 `missing_primary_contract: true`,返回明确 `repair_action` 后停止准备
10
- - (c) **题材正文提示卡召回**:优先读 `设定/题材正文提示卡.md`;缺失则先读 `设定/题材定位.md` + `references/genre-prose-cards.md` 索引,按主题材精确匹配后只读取 `references/genre-prose-cards/` 中对应单题材卡(如 都市脑洞 / 豪门总裁 / 年代 / 双男主;低置信卡必须在意图确认标注低置信,并要求同题材对标校准),无命中再读 `references/style-genre-modules.md` 通用流派模块。跨题材时主题材抽 3-5 条、辅题材抽 1-2 条,生成短 `genre_prose_card`(题材边界、核心逻辑、读者期待、核心爽点/情绪、正文落点、前中后期打法、节奏密度、场景颗粒、禁止漂移、本章取舍、卡片置信度)。题材卡只约束正文层题材味,不改细纲剧情、不覆盖 `selected_emotion_module` / `rhythm_reference` / `设定/文风.md`;只在内部校准取舍,正文里不得出现卡名/标签/置信度/条目/合规自评
11
- - (d) **文风召回**:先直接读 `设定/文风.md`(不经 explorer):有可执行表达要求即置 `custom_style=true`,不设最低字数;空白、纯标题或待补充不算。全文按 `style-resolution.md` 作权威风格基,`设定/_文风摘要.md` 仅作索引,写作与去味都传全文路径及同一 `style_resolution`。有自定义文风时对标只补未声明的维度;否则按「对标书路径查找」规则读 `{对标书路径}/文风.md`(路径优先 `{项目}/对标/{书名}/`,回退 `拆文库/{书名}/`);多本对标书时从 `设定/题材定位.md` 读 `主对标书` 字段。**未进入自定义文风模式且**文风文件不存在 → **fail-fast 报错**:「对标书 X 缺少 文风.md。请用 `/story-long-analyze` 跑 Stage 6 生成文风,再 `/story-import` 同步。」不 inline 生成(自定义文风模式则不 fail-fast;情绪 / 节奏轴 `missing_primary_contract` 仍独立阻塞)
11
+ - (c) **题材正文提示卡召回**:优先读 `设定/题材正文提示卡.md`;缺失时照组装脚本核对报告的「题材卡」行读它匹配到的卡(主题材整张;辅题材只摘 1-2 条「常见场面/禁止漂移」;低置信卡在意图确认标注低置信,并要求同题材对标校准),报告说没匹配到才读 `references/style-genre-modules.md`「题材正文提示卡」一节与最接近的流派一节,不整读索引与模块;生成短 `genre_prose_card` 并写入 `设定/题材正文提示卡.md`(后续章直接读,不再重做)(题材边界、核心逻辑、读者期待、核心爽点/情绪、正文落点、前中后期打法、节奏密度、场景颗粒、禁止漂移、本章取舍、卡片置信度)。题材卡只约束正文层题材味,不改细纲剧情、不覆盖 `selected_emotion_module` / `rhythm_reference` / `设定/文风.md`;只在内部校准取舍,正文里不得出现卡名/标签/置信度/条目/合规自评
12
+ - (d) **文风召回**:先直接读 `设定/文风.md`(不经 explorer):有可执行表达要求即置 `custom_style=true`,不设最低字数;空白、纯标题或待补充不算。全文按 `style-resolution.md` 作权威风格基,`设定/_文风摘要.md` 仅作索引,写作与去味都传全文路径及同一 `style_resolution`。有自定义文风时对标只补未声明的维度;否则按「对标书路径查找」规则读 `{对标书路径}/文风.md`(路径优先 `{项目}/对标/{书名}/`,回退 `拆文库/{书名}/`);多本对标书时从 `设定/题材定位.md` 读 `主对标书` 字段(字段指向本书自身或缺失时,用 `对标/` 下字典序第一本、排除本书同名目录,并提示作者补字段;排除后为空按无对标处理)。**未进入自定义文风模式且**文风文件不存在 → **fail-fast 报错**:「对标书 X 缺少 文风.md。请用 `/story-long-analyze` 跑 Stage 6 生成文风,再 `/story-import` 同步。」不 inline 生成(自定义文风模式则不 fail-fast;情绪 / 节奏轴 `missing_primary_contract` 仍独立阻塞)
12
13
  - (e) **匹配章节挑选**:从 `{对标书路径}/章节/*_摘要.md` grep `基调:(紧张|轻松|悲伤|热血|爽|甜|温馨|恐怖|压抑|其他)`(全角冒号),按本章目标情绪挑章 K——多章同基调时选择规则:先看爽点类型是否接近,再看情节点数量/原文章节估算字数是否接近本章目标字数,最后取章节号最小者;必读 `{对标书路径}/章节/第K章_摘要.md`,若同章存在 `第K章_深度拆解.md` 则加读,否则回退黄金三章深度拆解/文风文件里的可借鉴技巧,不因非黄金三章缺少深度拆解而失败
13
14
  - (f) **结构化模块召回**:从对标的结构化子目录(角色/剧情/设定)中按本章情节检索相关模块;若与 `剧情/情绪模块.md` / `剧情/节奏.md` 冲突,权威文件优先,记录 `conflict`
14
- - (g) 输出"主对标召回摘要 + 副对标召回摘要 + selected_emotion_module + rhythm_reference + genre_prose_card + 文风召回指令 + 原文锚点片段引用",作为 narrative-writer 的输入。**多对标书时**参 `references/cross-book-recall.md`:主对标提供文风、原文锚点与 selected_emotion_module / rhythm_reference;副对标/参考对标按阶段预算提供结构化摘要,不限制登记书目,不读取副书 `文风.md` / 原文,超过预算时裁条目不裁书目记录。
15
- - **快捷路径**:项目已部署 story-explorer agent 时,可一次性召回文风/模块材料。
16
- - 按本文件顶部规则确认 story-explorer 已部署。
17
- - 查询类型:`benchmark_style_load`;传入项目目录、章节号、目标基调/字数和爽点类型。
18
- - 需要返回:`style_profile_path`、`style_profile_summary`、`selected_emotion_module`、`rhythm_reference`、来源路径、匹配章节、锚点片段、`gaps`。
19
- - `gaps.missing_primary_contract` 为 true 时先按 `repair_action` 修复,不进入正文生成。
20
- - 主会话另行直接读 `设定/文风.md`:含实质内容时作为本书风格基准;但不豁免情绪/节奏缺失。
15
+ - (g) 输出"主对标召回摘要 + 副对标召回摘要 + selected_emotion_module + rhythm_reference + genre_prose_card + 文风召回指令 + 原文锚点片段引用",作为 narrative-writer 的输入。**多对标书时**(不必读跨书召回手册):主对标提供文风、原文锚点及可用的情绪/节奏值;副对标只在 (f) 按模块预算补角色/剧情/设定条目(同题材每本 ≤2、弱相关 0、总 ≤8,按 `设定/题材定位.md`「对标书列表」的引用强度排序),不读副书 `文风.md` 与原文,超预算裁条目不裁书目;输出附「副对标召回摘要」表(书名/引用强度/相关性/召回条数/使用方式)。
16
+ - **快捷路径**:已部署 story-explorer 时可一次召回文风/模块材料,调用与 `gaps` 分流见 agent-calls.md「story-explorer:写前对标召回」。
@@ -151,7 +151,7 @@
151
151
 
152
152
  检查角色行为是否只是为了让剧情往某方向发展。如果角色"恰好"做了推进剧情的事但没有自身动机,标记为"人设偏移",必须为该行为补充角色层面的合理理由。
153
153
 
154
- ### 第二步:情绪目标确认
154
+ ### 第二步:目标情绪确认
155
155
 
156
156
  写每段前明确三个要素:
157
157
  1. 本段目标情绪:这段剧情要让读者产生什么情绪?
@@ -368,6 +368,54 @@
368
368
 
369
369
  ---
370
370
 
371
+ ## 后宫文女主人设设计法
372
+
373
+ ### 核心思路
374
+ 后宫文的关键是弱化男主"主动渣"的感觉,让女主自身设定成为推动后宫的主力。
375
+
376
+ ### 设计原则
377
+ 1. **女主人设要预设方向**:开书前就设计好每个女主的核心特质
378
+ 2. **差异化设计**:不同女主有完全不同的价值观和背景
379
+ 3. **同居培养感情**:开局让女主们同住一个屋檐下,彼此成为朋友
380
+
381
+ ### 温水煮青蛙法
382
+ 以三个女主为例:
383
+
384
+ | 角色 | 人设设计 | 在后宫中的作用 |
385
+ |------|----------|---------------|
386
+ | 青梅(正宫) | 传统价值观,占据防守位 | 从小一起长大,天然正宫 |
387
+ | 女主B | 家庭圆满家教开明,理性看待感情 | 不在意名分,只在意快乐 |
388
+ | 女主C | 缺少父爱和社交,爱情观模糊 | 不存在一夫一妻制思想束缚 |
389
+
390
+ 核心逻辑:
391
+ - 青梅占据正宫与防守位
392
+ - 另两个女主不在意后宫,只在意跟主角在一起
393
+ - 把"主角脚踏多条船"的问题转化为"青梅防守 vs 另两人共享"的问题
394
+ - 一点一点突破青梅的防守底线,等反应过来时已经是既成事实
395
+
396
+
397
+ ## 男频极简爱情线构型
398
+
399
+ ### 核心原则
400
+ 男频爱情线不需要复杂的情感博弈,核心是"英雄救美 + 事业舞台 + 对手衬托"三要素。
401
+
402
+ ### 极简构型
403
+ 1. **英雄救美**:女主陷入困境 -> 主角用金手指/实力解决 -> 建立初始好感
404
+ 2. **事业舞台**:主角在事业上展示金手指 -> 女主在场作为重要观众 -> 好感随事业成就升级
405
+ 3. **对手衬托**:情敌/对手同时是事业对手 -> 打败对手既是事业胜利也是感情胜利
406
+
407
+ ### 关键操作
408
+ - 女主的每一次好感升级都绑定在主角的事业成就上,不单独写纯感情戏
409
+ - 女主有自己的事业线/目标,不是花瓶——她的事业目标与主角有交叉但独立
410
+ - 情敌的价值在于他同时威胁主角的事业和感情,打脸时有双重爽感
411
+ - 感情节奏跟着事业节奏走:事业低谷时感情拉扯,事业高峰时感情升温
412
+
413
+ ### 爱情线与事业线融合检查
414
+ - 删掉所有爱情线段落,事业线是否还成立?如果不行 = 爱情线拖后腿了
415
+ - 删掉所有事业线段落,爱情线是否还有看点?如果不行 = 爱情线太弱
416
+ - 理想状态:两条线互相增强,拆开各自能看,合在一起更好看
417
+
418
+
371
419
  ## 质量检查清单
372
420
 
373
421
  每次完成角色关系/感情线设计后,逐项核查:
@@ -60,3 +60,29 @@ description: 多对标跨书召回
60
60
  | `character_archetypes` | 反差人物 | `character-basics.md` / `character-design-methods.md` + 当前题材卡 |
61
61
  | `reusable_structures` | 可复用手法 | `outline-methods.md` / `plot-core-methods.md`,按结构功能选择 |
62
62
  | `reversal_type` | 反转类型(7 枚举) | `long-reversal.md` 对应骨架 |
63
+
64
+ ## 公共灵感标签召回
65
+
66
+ **本节独立于上文「≥2 本才启用」的多对标触发条件:只要工作区存在 `灵感库/` 即可用,单对标或无对标项目亦然。**
67
+
68
+ `灵感库/` 与副对标召回是两条独立通道:灵感库只提供**去专名的跨书机制抽象**(带标签的 active CBA 卡),副对标提供本书级结构化摘要。灵感库不存在时本节整体跳过,只记 `gaps.inspiration_library_missing`,不阻塞。
69
+
70
+ 每次设定、卷纲或细纲任务先生成需求标签(逐章正文写前召回不走本通道,灵感经细纲进入正文)。轴以 `灵感库/灵感索引.csv` 的标签轴契约为准;**值必须取自 `灵感库/标签词表.md` 的受控值**——按下表定位本书语境后,映射到词表中最贴近的值再组查询,不自造、不改写同义词(query 靠精确匹配,自造词等于查不到);词表文件缺失时以 query 返回的 `axis_inventory` 现存值为准:
71
+
72
+ | 轴 | 取值来源 |
73
+ |---|---|
74
+ | 题材 | `设定/题材定位.md` |
75
+ | 读者需求 | 本书读者契约与当前期待债 |
76
+ | 情绪 | 本阶段/本章目标情绪 |
77
+ | 关系动作 | 当前角色关系要发生的动作,可空 |
78
+ | 剧情功能 | 开篇立约、升级兑现、关系翻转、信息揭示、高潮结算等 |
79
+ | 节奏位置 | 黄金三章、前期、中段、卷末、高潮前/后,可空 |
80
+ | 适用阶段 | 设定、卷纲或细纲 |
81
+ | 风险 | 当前要避开的同质化、失衡、铺垫不足、角色降智、兑现拖延等 |
82
+
83
+ 消费规则:
84
+
85
+ 1. 只筛 `layer=跨书灵感聚合` 且 `status=active`,按标签打分取 Top 3(设定/卷纲阶段最多 8)。
86
+ 2. 只读命中的 CBA 全卡——卡自包含机制链、可变参数、成立条件、反例与风险;**不沿来源 ID 回查 EM/NM**,来源仅供审计溯源。
87
+ 3. 输出 `selected_inspiration_aggregates`:CBA ID、命中标签、机制链、可变参数、成立条件、风险、来源数量。它只影响设计选择,不覆盖细纲事实、项目设定或自定义文风;CBA 不作文风样本,也不触发任何原文读取。
88
+ 4. 零命中先看 query 返回的 `unmatched_tags` 与 `axis_inventory`,纠词重查一次;仍零命中才记 `gaps.inspiration_tag_no_match`,不阻塞。同一 CBA 在一本书内最多派生 2 个候选变化。
@@ -0,0 +1,171 @@
1
+ # 去AI味 Gate 执行细则
2
+
3
+ 本文件承接调用方选定 Gate;只执行所选范围,不扩大为全量。表达先按 [style-resolution.md](style-resolution.md) 的本书裁决,剧情和信息保护边界仍有效。写作自检与写后审查沿用下方「写手 A-G 判据」;独立去味沿用「删除优先判断」及各门禁详细步骤。模式解释、改写顺序与范例见 [anti-ai-writing.md](anti-ai-writing.md)。
4
+
5
+ #### 删除优先判断(先于各 Gate)
6
+
7
+ 每条被标记项先判能否删除,再考虑润色——很多 AI 味句是废话(解释、注水、凑数),润色后照样冗余。
8
+
9
+ 1. 删掉后是否丢失伏笔、钩子、角色特征、情节推进、必要信息或必要转折?都不丢则直接删,不进 Gate。
10
+ 2. 丢任意一项 → 保留信息进对应 Gate 改写(只删"怎么说"的 AI 味,不删"说什么")。
11
+ 3. 删除服从过度去AI味保护:不整段删、不删剧情功能;删除比例上限按 AI 味等级,轻度 ≤15%,中度 ≤25%,重度 ≤35%;若删后跌破本次字数范围的下沿,改为降AI重写,不删完再用新废话凑字。
12
+ 4. 删完通读:若整段只剩最短句、结构虚词被扫光、每个动作都带「了一下」式尾巴,就是删过头的电报体(见 anti-ai-writing.md 模式 9)——把非峰值叙述句恢复成自然白话,不是接着删。删的是废话,不是中文的自然冗余;这条只调删减的度,禁用词与套路句式的清理力度不因此降低。
13
+
14
+ 以下为各 Gate 的详细规则(删不掉的标记项按此润色;无论 agent 还是主会话执行,均须遵循):
15
+
16
+ #### 门禁 A:禁用词替换
17
+
18
+ 加载 [references/banned-words.md](banned-words.md),对照禁用词表逐项检查。
19
+
20
+ **白名单机制**:按 [references/style-resolution.md](style-resolution.md) 读取书目录的 `.deslop-whitelist`。获准字面片段由深扫、标点整理和 hook 一致豁免;无文件不创建空表,不因检测器报警自行放行,也不继承其他书的白名单。
21
+
22
+ **保护规则优先级**:保留创作意图与剧情功能 > 去AI Gate。Gate A-F 只能改变表达方式;Gate G 删的是非故事性的作者解释/旁白(不是情节)。任何 Gate 都不能删除伏笔、钩子、角色特征、人物记忆、情绪承接、因果锚点、关键信息或必要转折;遇到冲突时改为降AI重写或标注 `[需复核]`。
23
+
24
+ 替换规则:
25
+ - 禁用词 → 具体动作/细节描写
26
+ - 不能简单换成另一个形容词
27
+ - 要用"展示"替代"告诉"
28
+
29
+ 示例:
30
+ - ❌ "眼中闪过一丝不易察觉的悲伤" → ✅ "他垂下眼"
31
+ - ❌ "深吸一口气" → ✅ 直接删;若确有功能,改成角色当下动作(如把话咽回去)
32
+ - ❌ "嘴角勾起一抹冷笑" → ✅ "他冷笑了一声"
33
+
34
+ #### 门禁 B:句式去套路
35
+
36
+ 检测并替换以下AI高频句式:
37
+
38
+ | 句式 | 问题 | 替代方案 |
39
+ |------|------|----------|
40
+ | 否定铺垫后接肯定翻转 | **最毒** 中文 AI 句式之一 | 直接写后项,或改成动作/细节呈现 |
41
+ | 跨段「不是A / 也不是B / 只是C」 | 可能是工整铺排,也可能是辩解、悬念排除或情绪递进 | `formulaic-parallelism` advisory;通读语境,仅在重复提纲或拖慢画面时压缩 |
42
+ | 「至于X不X,怎么X」/同动词「不V A,不V B」 | 工整决策栏、否定清单;正常台词也可能出现 | 结合语境复核;若只是复述前文或细纲,压成一次判断或只留一项 |
43
+ | "...,带着..." | 万能状语,AI最爱 | 用独立短句或动作描写 |
44
+ | "声音不大,却带着……" | AI 最爱声音描写 | 直接写声音特征或动作 |
45
+ | 陈词滥调/万能比喻 | 公式化比喻会显 AI 腔 | 优先直接白描;确需比喻时只留少数生活化、角色化比喻 |
46
+ | "他/她知道..." | 直接告诉读者 | 用行为展示认知 |
47
+ | 对话标签密度过高/公式化标签 | 每句都标注会机械 | 普通"说"可保留;高频或公式化时用动作/上下文替代 |
48
+ | "仿佛/犹如/宛若/如同" | 文言腔过重 | 口语化表达或白描 |
49
+ | "不容置疑/显而易见" | 书面化判断词 | 用具体事实说话 |
50
+
51
+ **修饰词清扫**:检查物品/人物前面的形容词、定语、副词、指示代词、量词,多余即删。删除后阅读不影响才删;含义流失则改成简洁名词。
52
+
53
+ 示例:
54
+ - "白色的药片" → "药片"
55
+ - "飞驰的汽车" → "汽车"
56
+ - "手里那截链子" → "链子"
57
+ - "多年的衣服" → "旧衣服"(保留含义)
58
+
59
+ 形容词原则:一次只用一个形容词修饰或不修饰,不连用、不堆砌。
60
+
61
+ #### 门禁 C:情绪落地
62
+
63
+ 直接写情绪本身不是 AI 味。上下文已让情绪成立,就保留准确的直写或删掉重复说明;需要补足信息时,沿用原文的选择、台词、物件和后果,不为情绪词另配动作。
64
+
65
+ 身体细节按功能取舍:伤势、动作失败、人物习惯或情节后果可以保留;只重复标注情绪的微动作删掉,不换部位或同义动作。具体判据见 `anti-ai-writing.md` 规则 2。
66
+
67
+ **重复描写去重**:当相邻段反复表达同一信息、同一动作或同一情绪时,按 Gate C/D 处理,不另开专项流程。
68
+
69
+ 处理方法:
70
+ - 合并同一瞬间的重复描写,保留最能推动情绪或剧情的细节
71
+ - 如果原文把一个动作拆成"动作概述 → 感知细节 → 身体反应",改成同一段连续画面
72
+ - 若合并后节奏过快,恢复原文中有功能的信息,或把既有信息改成更自然的动作/对话表达;不在原动作后追加描写层,也不新增原文没有的情节
73
+
74
+ 示例:
75
+ - ❌ "他拿起笔。手在抖。笔尖又停住。"
76
+ - ✅ "他拿起笔,笔尖刚碰到纸就偏了,手腕压了两次都没压稳。"
77
+
78
+ **重复语义四类**(同一意思不重复表达,只留一个最合适且简洁的):
79
+
80
+ | 类别 | 错误例 | 修法 |
81
+ |------|--------|------|
82
+ | 形容词重复 | "兴高采烈地笑着跑过来" | "笑着跑过来" |
83
+ | 近义词重复 | "非常重要的关键问题" | "关键问题" |
84
+ | 含义重复 | "我好饿,肚子咕咕叫" | "我好饿" |
85
+ | 上下文主语/物品重复 | 上文说"把抗抑郁药扔了一地",下文不必再写"地上的抗抑郁药",只写"药片" | 模糊简洁口语化即可 |
86
+
87
+ **多余场景/人物/物品描写**:服务情节人物之外的修饰描写直接删。
88
+
89
+ 示例:
90
+ - "游惑手里握着一把短刀,刀锋冷冽" → "游惑手里握着一把短刀"
91
+ - "手铐紧紧扣住两人的手腕,中间连着一截不算长的链条" → "手铐扣住两人的手腕,中间连着链条"
92
+ - "暴雪极地的考场里,风雪没有停下的意思" → "暴雪极地的考场里"
93
+
94
+ #### 门禁 D:节奏调整
95
+
96
+ AI写作的节奏问题:句式过于整齐、段落过于匀称。
97
+
98
+ 处理方法:
99
+ - 打断连续排比句(保留1-2个,删掉其余)
100
+ - 只拆臃肿修饰、堆叠比喻、抽象总结的长句;改写后叙述仍以逗号长句为主(见 anti-ai-writing.md 规则 3),不要把正常的逗号长句拆成短句串
101
+ - 偶尔用不完整句(口语感)
102
+ - 段落长短交错(不要每段都3-5行)
103
+ - 不按硬指标排版:番茄高分样本不是 50-60 字一行,也不是逢句号必换行;按动作/信息变化自然断段,读起来不卡即可
104
+ - 标点节奏跟语气走:避免通篇句号化;保留有功能的 `?` / 少量 `!`,把 `……` / `——` 改成动作、短句、换行、逗号或句号,删除随机堆砌或刷屏符号
105
+
106
+ #### 门禁 E:对话去腔调
107
+
108
+ AI写的对话特征:每句话都信息完整、逻辑清晰、表达精准。
109
+
110
+ 处理方法:
111
+ - 加入口语化表达("嗯""哦""行吧")
112
+ - 适当打断对话(角色可以答非所问);对话被打断或拖长时用动作、换行或短句处理,不用 `——`
113
+ - 用动作穿插对话("她喝了口水。'然后呢?'")
114
+ - 删掉解释性对话(角色不会把自己的动机说清楚)
115
+ - Gate B 同样检查台词:连续工整否定、`至于X不X,怎么X`、同动词 `不V A,不V B` 不能因脚本的台词豁免而漏审;有明确人物/任务功能才保留
116
+ - 不为凑比例硬扩台词;番茄对话占比随题材波动,台词只在角色此刻真会说、必须说时增加
117
+ - 口误、停顿、粗话和重复要服务人物身份与情绪,不作为“真人感”装饰批量添加
118
+ - 不把所有对话末尾改成句号:质问保留问号,爆发峰值保留少量感叹;吞回去/没说完用动作停顿、短句或换行,不用 `……`
119
+
120
+ #### 门禁 F:结尾去升华
121
+
122
+ AI写作的结尾特征:总想总结、升华、点题。
123
+
124
+ 处理方法:
125
+ - 删掉总结性语句
126
+ - 用动作/场景收尾,不要用感慨收尾
127
+ - 如果结尾有"他知道...""这一刻..."→ 基本可以删
128
+ - 短篇(单个 正文.md)带主角主观情绪的审判句、火葬场预告、心死式章尾是卖点,保留;只删中立、与角色情绪无关的作者讲解。
129
+
130
+ #### 门禁 G:去解释腔/上帝感/安排感
131
+
132
+ 最难察觉、最"像 AI"的一类(对应 anti-ai-writing.md 模式 8)。叙述者跳出角色当下去解释、剧透、总结、定性、升华,读者闻到"作者在场/剧情被安排"。
133
+
134
+ 处理方法:
135
+ - 删解释因果:「之所以…是因为」「原来…」「这意味着」→ 删,因果让读者从动作对话里自己拼。
136
+ - 删上帝视角剧透:「她不知道的是」「殊不知」「多年以后」「仿佛预示着」→ 删。
137
+ - 删替读者定性:「演得真好」「这出戏她看过一遍」「他就是这样薄情」→ 删,证据留给读者判断。
138
+ - 删隐蔽的软评判:评判性副词(「关切得恰到好处」)、剧透点破(「那点笑她看得分明」)、定性比喻(「像在宣判一件早已定好的事」)→ 删,或改成角色此刻带偏见的瞬间感觉。
139
+ - 注意:Gate G 删的是"非故事性的作者旁白",不是删情节。删完若变薄,靠角色动作/对话补,不补叙述者解说。
140
+ - 短篇(单个 正文.md)带主角主观情绪的审判句、火葬场预告、心死式章尾是卖点,保留;只删中立、与角色情绪无关的作者讲解。
141
+
142
+ **任务卡点修法边界**:任务卡点不是固定公式,也不是通用补流程按钮。原文已有任务、证据、手续、物件缺口时,可以把解释总结压成角色当下要处理的具体卡点;原文没有缺口时,只删解释或改动作/对话,不新造剧情。所有卡点都先做“删掉试试”:删掉后不丢伏笔、钩子、信息、关系变化或必要转折,就压缩或删除。
143
+
144
+ ## 写法抽查(审查侧,只指认已有问题)
145
+
146
+ 对爽点段与检测器标记处逐问。只许指出正文里**已有**的那一处,没有就答「无」,**不许为了让某一问有答案回头补内容**。详写的关键场景里,遮住一处发生、感知或反应后读者什么也没损失,就判为可删并报告位置;套式反应按 `banned-words.md`「套式反应逐处删除测试」逐处过。审稿只报告、不改文件;去味执行者再按删除保护落改,只报告实际删改与保留理由。
147
+
148
+ | # | 自问 | 不合格的样子 |
149
+ |---|---|---|
150
+ | 1 | 本章最大的那次状态变化,读者看见了几个中间态? | 只给了"起点"和"终点";或同一状态换十种说法说十遍 |
151
+ | 2 | 有没有一组同类并列项被平均分配了笔墨? | 三样物件、四拨人马各给同样的分辨率 |
152
+ | 3 | 本章的设定/能力/威胁,是被说出来的,还是被谁付了代价试出来的? | 旁白直接给出结论,读者没有自己发现的机会 |
153
+ | 4 | "厉害/难得/要命"这些判断,是谁给出的?他有什么立场? | 叙述者自己下的判断;结论由旁白先说出来、在场的人只负责吃惊;或标价人就在场却没标价 |
154
+ | 5 | 每个给了镜头的人,此刻在为自己争取什么? | 遮住名字认不出是谁说的;所有人同向配合主角;用手部/喉部微动作代替立场;或把他的算计写成一段旁白独白 |
155
+ | 6 | 该说出口的话,是写出来了还是被概括了? | "他吼了一声""他说了句什么""三言两语解释了缘由";本该来回几轮的交锋压成一次说完 |
156
+ | 7 | 本章最重的那一句,是不是最短的那一段? | 最重的一拍写成了全章最长的段落 |
157
+ | 8 | 判为"密"的段落里,有没有量词加概括? | "一连七八下""半晌""众人纷纷"出现在密处 |
158
+
159
+ ---
160
+
161
+ ## 写手 A-G 判据
162
+
163
+ 以下为原 narrative-writer 的写作自检/审查判据,调用方给了 Gate 就只执行该范围;未给时仍 A-G。
164
+
165
+ - **A 禁用词**:命运齿轮/如潮水般/心猛地一沉类逐一替换(对照 `banned-words.md`;书级文风有裁决按其配额)。
166
+ - **B 句式**:连续排比、刻意对称打散;**禁止高置信否定铺垫后再肯定翻转**——同句「不是A,(而)是B」「没有X没有Y只是Z」直接写肯定内容或改动作承担对比;跨段「不是A / 也不是B / 只是C」、`至于X不X,怎么X`、同动词 `不V A,不V B` 只作语义复核(advisory),重复细纲或拖慢画面时改,承担辩解、悬念排除或情绪递进时可保留(书级文风另有裁定按其执行);普通名词不加引号强调(对话、逐字引用、场内载体原文除外)。
167
+ - **C 情绪**:删空泛 AI 情绪总结句;上下文已成立就删补充说明;不设「情绪词→身体动作」默认转换。
168
+ - **D 节奏**:只拆臃肿修饰、堆叠比喻、信息过载的长句;句长按书级文风带执行,长短随情绪 beat 交错——沉淀放慢、冲突骤短,忌通篇同长度。
169
+ - **E 对话去腔调**:所有角色同一语气→按语言风格档案差异化;犹豫/打断/拖长用动作、短句或换行承担。
170
+ - **F 结尾去升华**:大段抒情收尾→安静细节收尾;短篇例外见门禁 F。
171
+ - **G 去解释腔/上帝感**:先按本书叙述姿态判断,短篇例外见门禁 G;授权的有限全知、评论或旁人内心不因形式删除。删无功能的解释、未经授权的剧透、重复总结和空泛定性(之所以/原来/这意味着/她不知道的是/殊不知/多年以后);承担锚点或情绪的压成角色白话;已有场内载体(手机/公告/屏幕)优先保留为角色看到的文本。
@@ -47,6 +47,10 @@
47
47
  | 所有角色说话方式一样 | 模糊 |
48
48
  | 对话说服人物 | 现实中没人被几句话说服,用突发状况代替 |
49
49
  | 情绪写完方向变了 | 需回退到情绪拆分 |
50
+ | 捧哏工具人、鹦鹉复读对方原话 | 配角只剩接话功能 |
51
+ | 高位者长篇自证、说话不分场合 | 身份和处境塌了 |
52
+ | 情绪水肿咆哮、生死场景嘴碎 | 越吵越不紧张 |
53
+ | 悬念正攒着就被台词说破 | 期待提前泄掉 |
50
54
 
51
55
  ---
52
56
 
@@ -0,0 +1,116 @@
1
+ # 情绪落到纸面:写一章时的情绪执行
2
+
3
+ > 细纲与单元卡已经定了本章的目标情绪和它在弧线上的位置;本文件只管写这一章时怎么把情绪写出来。选弧线、排节奏、管期待是排纲时的事,见 emotional-arc-design.md。
4
+
5
+ ## 情绪核心公式
6
+
7
+ 写每个场景时分离三层情绪:
8
+ 1. 角色自己的情绪(角色感受到的)
9
+ 2. 文本传递的情绪(文本要让读者感受的)
10
+ 3. 读者实际感受的情绪(读者真正的体验)
11
+
12
+ 同一场景三层可以完全不同:角色在哭,文本在撩,读者在爽。
13
+
14
+ 例:女主当众被退婚,强忍着没掉泪——角色:屈辱;文本写她嘴角还挂着笑(角色:撑);读者替她憋着、等后面打脸(读者:爽前蓄力)。
15
+
16
+ ---
17
+
18
+ ## 前反应-复现-后反应情绪结构
19
+
20
+ 用于虐/悲壮/遗憾类场景。按顺序执行三步:
21
+
22
+ 1. **前反应**:让读者提前知道坏结果,然后描写美好事物(读者预知法)
23
+ 2. **复现**:让坏结果真的发生
24
+ 3. **后反应**:主角真情流露,作出改变(愤怒/拼命/振作)
25
+
26
+ 操作示例:知道某人一天后要死 -> 让她经历美好(逛街、看烟花) -> 她真的死了 -> 主角愤怒拼命
27
+
28
+ ---
29
+
30
+ ## 以小搏大情绪结构
31
+
32
+ 用于热血/逆袭类场景。按顺序执行四步:
33
+
34
+ 1. **前反应**:铺垫弱者的苦,用对比强化(现在的弱 vs 以前的强)
35
+ 2. **复现**:强者到来,"我知道你们苦,我来了"
36
+ 3. **后反应**:弱势方被拯救
37
+ 4. **士气如虹**:整体气势转变
38
+
39
+ ---
40
+
41
+ ## 基于不该如此的情绪驱动
42
+
43
+ - "不该如此"是最根本的情绪驱动力——写诬告、不公、恃强凌弱,读者天生生出"不该如此"的念头
44
+ - 核心情绪逻辑:想要爽,必先不爽;想要公平,必先不公平;想要强大,必先不强大
45
+ - "悬而未决"也是强驱动力
46
+ - 好的题材必须具备勾起人们惋惜、渴望改变的特质
47
+
48
+ ---
49
+
50
+ ## 理念矛盾的情感爆发力
51
+
52
+ - 理念之争比利益之争更能引发读者深层共鸣
53
+ - 少量关键场景即可,不需要大量笔墨
54
+ - 理想主义与现实的冲突是塑造配角封神级人设的手法
55
+ - 理念认同 = 人设认同 = 读者情感投入
56
+ - 在主线中穿插理念型角色,用他们的追求和牺牲拔高全书情绪上限
57
+
58
+ ---
59
+
60
+ ## 情绪调动的三层方法
61
+
62
+ 三层:**长期感情投入**、**短期事件冲突**、**场景描绘**。三者可叠加,核心是前两层。
63
+
64
+ ### 长期引导三步骤
65
+
66
+ 1. **抛出共鸣炸弹**:找到角色最易引发共鸣的情感锚点(梦想、仇恨、恐惧)
67
+ 2. **让读者变见证者**:展示角色付出和挣扎,每一步伴随收获
68
+ 3. **让读者变参与者**:通过足够铺垫和细节,产生命运共同体感
69
+
70
+ ### 短期情绪引导
71
+
72
+ 短期靠独立事件冲突。**直白冲突比繁杂情节更容易引起共鸣**。
73
+
74
+ 两种事件类型:
75
+ - **推动情节发展的事件**:让读者对角色处境产生认同
76
+ - **塑造人物性格的事件**:让读者对角色思想性格产生认同
77
+
78
+ 开篇必须选择塑造人物性格的事件——先认同角色这个人才关心角色的事。
79
+
80
+ ### 情绪代入的陷阱
81
+
82
+ 读者未代入主角前:主角弱势可以引起同情,但**敌人弱势也同样引起同情**。读者还没建立认同时,不要把对手写得可怜。
83
+
84
+ ### 情绪文笔技法
85
+
86
+ - **句长跟着情绪和节奏走**:紧张、决断处用短句提速,铺垫、沉淀处用长句蓄势;短句是提速工具,不是默认底色,别通篇拆短
87
+ - **情绪词**:骤然、猛然、刺眼——制造紧迫感
88
+ - **动作词**:抽、划、留下——画面感强,情绪外化
89
+ - **修饰词**:精准克制地使用形容词,不堆砌
90
+ - **进阶规则**:优先通过角色行为暗示情绪,而非直接描写(非硬性,必要的内心可以直写,别为外化堆无功能的小动作)。**以乐写悲**:角色在最悲伤时表现开心,情绪张力更强(赴死的人很开心,往往比哭更悲)
91
+
92
+ ---
93
+
94
+ ## 情绪调动统一视角
95
+
96
+ > 写完一段觉得不到位 / 读者反馈平淡时使用。
97
+
98
+ ### 终极公式
99
+
100
+ **平静 -> 调动 -> 释放 -> 爽**
101
+
102
+ | 技法 | 调动 | 释放 | 结果 |
103
+ |------|------|------|------|
104
+ | 装逼打脸 | 反派嚣张 | 主角碾压 | 爽 |
105
+ | 拉仇恨 | 负面情绪 | 恶人受罚 | 爽 |
106
+ | 先抑后扬 | 打压 | 爆发 | 爽 |
107
+ | 期待感 | 制造鸿沟 | 弥合鸿沟 | 爽 |
108
+
109
+ ### 实操要点
110
+
111
+ - 每个场景标注:读者当前情绪在哪个阶段;下一步是调动还是释放。
112
+ - 只有调动没有释放 = 读者憋屈弃书
113
+ - 只有释放没有调动 = 爽感平淡无力
114
+ - 调动程度决定释放爽度:仇恨拉多满,打脸就多爽
115
+
116
+ ---
@@ -1,5 +1,5 @@
1
1
  # 情绪弧线操作手册
2
- > 写故事时选弧线、控制节奏、调动情绪的速查操作手册。
2
+ > 排卷纲、设计剧情单元时选弧线、排节奏、管期待的速查手册。写一章时怎么把情绪落到纸面见 emotion-on-page.md。
3
3
 
4
4
  ## 决策路由表
5
5
 
@@ -197,42 +197,6 @@
197
197
 
198
198
  ---
199
199
 
200
- ## 情绪核心公式
201
-
202
- 写每个场景时分离三层情绪:
203
- 1. 角色自己的情绪(角色感受到的)
204
- 2. 文本传递的情绪(文本要让读者感受的)
205
- 3. 读者实际感受的情绪(读者真正的体验)
206
-
207
- 同一场景三层可以完全不同:角色在哭,文本在撩,读者在爽。
208
-
209
- 例:女主当众被退婚,强忍着没掉泪——角色:屈辱;文本写她嘴角还挂着笑(角色:撑);读者替她憋着、等后面打脸(读者:爽前蓄力)。
210
-
211
- ---
212
-
213
- ## 前反应-复现-后反应情绪结构
214
-
215
- 用于虐/悲壮/遗憾类场景。按顺序执行三步:
216
-
217
- 1. **前反应**:让读者提前知道坏结果,然后描写美好事物(读者预知法)
218
- 2. **复现**:让坏结果真的发生
219
- 3. **后反应**:主角真情流露,作出改变(愤怒/拼命/振作)
220
-
221
- 操作示例:知道某人一天后要死 -> 让她经历美好(逛街、看烟花) -> 她真的死了 -> 主角愤怒拼命
222
-
223
- ---
224
-
225
- ## 以小搏大情绪结构
226
-
227
- 用于热血/逆袭类场景。按顺序执行四步:
228
-
229
- 1. **前反应**:铺垫弱者的苦,用对比强化(现在的弱 vs 以前的强)
230
- 2. **复现**:强者到来,"我知道你们苦,我来了"
231
- 3. **后反应**:弱势方被拯救
232
- 4. **士气如虹**:整体气势转变
233
-
234
- ---
235
-
236
200
  ## 冲突中的情绪层次与死亡赌注
237
201
 
238
202
  ### 选择死亡赌注
@@ -257,59 +221,6 @@
257
221
 
258
222
  ---
259
223
 
260
- ## 基于不该如此的情绪驱动
261
-
262
- - "不该如此"是最根本的情绪驱动力——写诬告、不公、恃强凌弱,读者天生生出"不该如此"的念头
263
- - 核心情绪逻辑:想要爽,必先不爽;想要公平,必先不公平;想要强大,必先不强大
264
- - "悬而未决"也是强驱动力
265
- - 好的题材必须具备勾起人们惋惜、渴望改变的特质
266
-
267
- ---
268
-
269
- ## 理念矛盾的情感爆发力
270
-
271
- - 理念之争比利益之争更能引发读者深层共鸣
272
- - 少量关键场景即可,不需要大量笔墨
273
- - 理想主义与现实的冲突是塑造配角封神级人设的手法
274
- - 理念认同 = 人设认同 = 读者情感投入
275
- - 在主线中穿插理念型角色,用他们的追求和牺牲拔高全书情绪上限
276
-
277
- ---
278
-
279
- ## 情绪调动的三层方法
280
-
281
- 三层:**长期感情投入**、**短期事件冲突**、**场景描绘**。三者可叠加,核心是前两层。
282
-
283
- ### 长期引导三步骤
284
-
285
- 1. **抛出共鸣炸弹**:找到角色最易引发共鸣的情感锚点(梦想、仇恨、恐惧)
286
- 2. **让读者变见证者**:展示角色付出和挣扎,每一步伴随收获
287
- 3. **让读者变参与者**:通过足够铺垫和细节,产生命运共同体感
288
-
289
- ### 短期情绪引导
290
-
291
- 短期靠独立事件冲突。**直白冲突比繁杂情节更容易引起共鸣**。
292
-
293
- 两种事件类型:
294
- - **推动情节发展的事件**:让读者对角色处境产生认同
295
- - **塑造人物性格的事件**:让读者对角色思想性格产生认同
296
-
297
- 开篇必须选择塑造人物性格的事件——先认同角色这个人才关心角色的事。
298
-
299
- ### 情绪代入的陷阱
300
-
301
- 读者未代入主角前:主角弱势可以引起同情,但**敌人弱势也同样引起同情**。读者还没建立认同时,不要把对手写得可怜。
302
-
303
- ### 情绪文笔技法
304
-
305
- - **句长跟着情绪和节奏走**:紧张、决断处用短句提速,铺垫、沉淀处用长句蓄势;短句是提速工具,不是默认底色,别通篇拆短
306
- - **情绪词**:骤然、猛然、刺眼——制造紧迫感
307
- - **动作词**:抽、划、留下——画面感强,情绪外化
308
- - **修饰词**:精准克制地使用形容词,不堆砌
309
- - **进阶规则**:优先通过角色行为暗示情绪,而非直接描写(非硬性,必要的内心可以直写,别为外化堆无功能的小动作)。**以乐写悲**:角色在最悲伤时表现开心,情绪张力更强(赴死的人很开心,往往比哭更悲)
310
-
311
- ---
312
-
313
224
  ## 男频恋爱文情绪设计
314
225
 
315
226
  ### 两大核心需求
@@ -339,30 +250,6 @@
339
250
 
340
251
  ---
341
252
 
342
- ## 情绪调动统一视角
343
-
344
- > 写完一段觉得不到位 / 读者反馈平淡时使用。
345
-
346
- ### 终极公式
347
-
348
- **平静 -> 调动 -> 释放 -> 爽**
349
-
350
- | 技法 | 调动 | 释放 | 结果 |
351
- |------|------|------|------|
352
- | 装逼打脸 | 反派嚣张 | 主角碾压 | 爽 |
353
- | 拉仇恨 | 负面情绪 | 恶人受罚 | 爽 |
354
- | 先抑后扬 | 打压 | 爆发 | 爽 |
355
- | 期待感 | 制造鸿沟 | 弥合鸿沟 | 爽 |
356
-
357
- ### 实操要点
358
-
359
- - 每个场景标注:读者当前情绪在哪个阶段;下一步是调动还是释放。
360
- - 只有调动没有释放 = 读者憋屈弃书
361
- - 只有释放没有调动 = 爽感平淡无力
362
- - 调动程度决定释放爽度:仇恨拉多满,打脸就多爽
363
-
364
- ---
365
-
366
253
  ## 期待感维持的底层机制
367
254
 
368
255
  > 写了目标但读者不关心 / 六法则用了但效果不好时使用。
@@ -6,7 +6,7 @@
6
6
 
7
7
  ## 长篇单元情绪引擎(通用正向框架)
8
8
 
9
- 每个剧情单元先设计能制造情绪与兑现的**正向发动机**,再做安全审查:
9
+ 每个剧情单元先设计能制造情绪与兑现的**正向发动机**,再按契约四问检查:
10
10
 
11
11
  > **核心情绪命题 → 承载对象/情绪缺口 → 受阻或缺口维持原因 → 本轮触发 → 主角不可替代的点火/转化动作 → 意义变化或可见兑现 → 题材/契约兑现**
12
12
 
@@ -15,7 +15,7 @@
15
15
  ### 正向发动机与负向护栏的顺序
16
16
 
17
17
  1. **先设计正向发动机**:明确读者会为什么投入,本轮如何让这份投入改变意义并得到可见兑现。
18
- 2. **后用主角代理权/成长负向护栏诊断**:以 `reader-contract-and-progression.md` 的因果权 + 结算权、期待所有权与终局储备排查契约/推进失败。“安全”只代表没踩红线,不代表好看;护栏不能代替情绪发动机。
18
+ 2. **后用主角代理权/成长负向护栏诊断**:按 `reader-contract-and-progression.md`「契约四问」排查契约/推进失败。“安全”只代表没踩红线,不代表好看;护栏不能代替情绪发动机。
19
19
 
20
20
  ### 合理性五问
21
21
 
@@ -18,7 +18,7 @@
18
18
  1. 先读 `设定/题材定位.md`,确认主题材、目标平台、性向频道、主对标书和核心梗。
19
19
  2. 先查本索引匹配题材,再只读取同目录的 `genre-prose-cards/{题材}.md` 这一张卡;不要把整套题材卡全部加载进 prompt。
20
20
  3. 跨题材时,主题材读取 1 张完整卡,辅题材读取 1 张并只摘 1-2 条“常见场面/禁止漂移”;不要把两套节奏并行堆满。
21
- 4. 高置信卡可直接用于 Phase 2 `设定/题材正文提示卡.md`;中置信卡需结合本书对标/细纲对照;低置信卡只能兜底,必须标注低置信并优先补同题材对标。
21
+ 4. 高置信卡可直接用于写第 1 章前生成的 `设定/题材正文提示卡.md`;中置信卡需结合本书对标/细纲对照;低置信卡只能兜底,必须标注低置信并优先补同题材对标。
22
22
  5. 每章传给 narrative-writer 的 `genre_prose_card` 只保留本章相关条目,推荐 120-300 字;包含:题材限制、核心逻辑、读者期待、核心爽点/情绪、正文落点、前中后期打法、场景颗粒、禁止漂移、本章取舍、卡片置信度。
23
23
  6. **题材卡只在写手内部校准题材味,绝不出现在正文里**:正文不得写卡名、题材标签、置信度、条目编号或“证据摘要”数据,也不得写“已按题材卡/满足字数/零违规”一类合规自评或写作过程说明——只输出故事本身。
24
24