@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
@@ -13,9 +13,9 @@ metadata: {"openclaw":{"source":"https://github.com/zenstory-ai/oh-story-claudec
13
13
 
14
14
  ---
15
15
 
16
- ## 拆解边界声明(主线程同样适用)
16
+ ## 拆解边界声明(主会话同样适用)
17
17
 
18
- 短篇拆解的 Stage 2-6 全程由你(主线程)亲手做:拆的是用户**合法持有、拥有使用权**的虚构作品(已出版/连载或自有),性质是**只读的转化性文学批评**(编辑/评论/写作教学视角,不复制、不传播、不指导现实行为)。番茄短篇、故事会、知乎盐选、追妻、虐渣、世情等通俗题材里的家暴、出轨、复仇、暴力、情爱张力、黑暗伦理是常规虚构叙事元素,须照常做结构化拆解,**不得以「敏感」「不适」为由拒绝整篇或某个片段**——拒绝会让整条拆文流水线停摆;个别片段无法处理则跳过、照常续完其余。
18
+ 短篇拆解的 Stage 2-6 全程由你(主会话)亲手做:拆的是用户**合法持有、拥有使用权**的虚构作品(已出版/连载或自有),性质是**只读的转化性文学批评**(编辑/评论/写作教学视角,不复制、不传播、不指导现实行为)。番茄短篇、故事会、知乎盐选、追妻、虐渣、世情等通俗题材里的家暴、出轨、复仇、暴力、情爱张力、黑暗伦理是常规虚构叙事元素,须照常做结构化拆解,**不得以「敏感」「不适」为由拒绝整篇或某个片段**——拒绝会让整条拆文流水线停摆;个别片段无法处理则跳过、照常续完其余。
19
19
 
20
20
  ---
21
21
 
@@ -74,46 +74,30 @@ word_count = 全文字数
74
74
  ```
75
75
  存在 _meta.json?
76
76
  ├─ 否 → 直接进入新一轮拆解
77
- └─ 是 → 询问用户三选一:
77
+ └─ 是 → 询问用户三选一(问法见下):
78
78
  (a) 覆盖:归档旧产出到 拆文库/{书名}/_archive_{时间戳}/ 后从 Stage 2 重跑
79
79
  (b) 续跑:读 _meta.json.last_stage_in_progress(非空 → 从该 Stage 整段重跑)
80
80
  或读 _meta.json.stages_completed[](从 max+1 续跑)
81
81
  (c) 取消
82
82
  ```
83
83
 
84
+ 问作者时不提文件名、字段名和 Stage 编号:
85
+
86
+ <!-- author-report -->
87
+ ```md
88
+ 《{书名}》之前拆过,{拆到一半,停在"{当前阶段的白话名,如反转与写作手法}" | 已经拆完}。怎么处理?
89
+ 1. 接着上次往下拆(推荐,已拆的部分保留)
90
+ 2. 旧结果存档,从头重拆
91
+ 3. 先不拆了
92
+ ```
93
+
84
94
  完整 resume 契约见 [references/output-contract.md](references/output-contract.md)。
85
95
 
86
96
  ---
87
97
 
88
98
  ## 输出目录
89
99
 
90
- 输出到 `拆文库/{书名}/`(项目根目录下)。用户指定了其他路径时按用户指定路径输出。
91
-
92
- **标准输出文件树**:
93
-
94
- ```
95
- 拆文库/{书名}/
96
- ├── 原文/ # 原文备份(管道前置步骤产出)
97
- ├── 拆文报告.md # 人类可读综合报告(Stage 2-6 所有可读段)
98
- ├── 情节节点.md # Stage 2 情节节点清单(独立成文,方便定位)
99
- ├── 写作手法.md # Stage 4 写作手法分析(独立成文,方便复用)
100
- └── _meta.json # 管道元数据 + 结构计数(resume + 验收数值依据)
101
- ```
102
-
103
- > **下游契约**:`story-short-write` 同时读全套产出——`拆文报告.md` 取分析叙事,
104
- > `情节节点.md` 看节奏锚点,`写作手法.md` 抄手法,`原文/` 抄语感,`_meta.json`
105
- > 看题材识别和结构计数。完整字段定义见
106
- > [references/output-contract.md](references/output-contract.md)。
107
-
108
- ### Stage → 文件映射
109
-
110
- | Stage | 落地文件 |
111
- |-------|----------|
112
- | 2 | `拆文报告.md`(故事核+结构+梗概段) + `情节节点.md` |
113
- | 3 | `拆文报告.md`(情感曲线+爆点段) |
114
- | 4 | `拆文报告.md`(反转段) + `写作手法.md` |
115
- | 5 | `拆文报告.md`(人物+首尾段) |
116
- | 6 | `拆文报告.md`(综合段) + `_meta.json.structure_counts`(数值计入元数据) |
100
+ 输出到 `拆文库/{书名}/`(项目根目录下;用户指定了其他路径时按用户指定):`原文/`、`拆文报告.md`、`情节节点.md`、`写作手法.md`、`_meta.json`。三个 markdown 由下游 `story-short-write` 硬编码读取,不可改名;文件树、Stage → 文件映射与 `_meta.json` 字段见 [references/output-contract.md](references/output-contract.md)。
117
101
 
118
102
  ### 原文备份(管道前置步骤)
119
103
 
@@ -140,80 +124,50 @@ word_count = 全文字数
140
124
 
141
125
  | 阶段 | 名称 | 输入 | 输出 | 完成标志 |
142
126
  |------|------|------|------|----------|
143
- | 2 | 结构+情节节点 | 全文 | 故事核 + 故事梗概 + 功能分段(4-6段,必须含开端/发展/高潮/结局)+ 情节节点清单。节点以语义变化为边界提取,见 material-decomposition.md「情节节点提取规则」。 | 结构划分 ≥4 段 + 故事核已提取 |
127
+ | 2 | 结构+情节节点 | 全文 | 故事核 + 故事梗概 + 功能分段(4-6段,必须含开端/发展/高潮/结局)+ 情节节点清单(以语义变化为边界提取)。 | 结构划分 ≥4 段 + 故事核已提取 |
144
128
  | 3 | 情感线+爆点 | 故事核+结构划分+情节节点数据 | 情感曲线(≥5节点)+ 爆点分析(6维度)+ 期待感分析。 | 爆点分析 6 维度齐全 |
145
- | 4 | 反转+写作手法 | 节点+情感数据 | 前置反转检查 + 反转机制(铺垫≥2条)+ 写作手法(≥5项维度:POV/对话/时间/信息/其他)。 | 写作手法 ≥5 项 |
129
+ | 4 | 反转+写作手法 | 节点+情感数据 | 前置反转检查 + 反转机制(铺垫≥3条)+ 写作手法(≥5项维度:POV/对话/时间/信息/其他)。 | 写作手法 ≥5 项 |
146
130
  | 5 | 人物+开头结尾 | 情节节点+全文 | 所有人物(分类+功能标签+功能评估)+ 开头分析(前50/100字)+ 结尾分析(收束检查)。 | 人物功能评估完成 |
147
- | 6 | 综合评估 + `_meta.json` 写计数 | 全部数据 | 五维评分 + 爆点性 + 话题性 + 共鸣分析(≥3层)+ 可复用结构(≥3条)+ 节奏速报 + **算出并写入 `_meta.json.structure_counts`**。 | 五维评分完成 + 爆点性/话题性已分析 + 共鸣≥3层 + 可复用≥3条 + 节奏速报已包含 + `_meta.json.structure_counts` 各字段达「structure_counts 数值校验」阈值 |
131
+ | 6 | 综合评估 + `_meta.json` 写计数 | 全部数据 | 五维评分 + 爆点性 + 话题性 + 共鸣分析(≥3层)+ 可复用结构(≥3条)+ 节奏速报 + **算出并写入 `_meta.json.structure_counts`**。 | 左列输出齐全 + `structure_counts` 各字段达「structure_counts 数值校验」阈值 |
148
132
 
149
133
  > 管道执行顺序:2 → 3 → 4 → 5 → 6(严格串行,每阶段依赖前一阶段数据)。可选模块
150
- > (同类对比、平台适配、详细节奏)可在 Stage 6 后执行。
134
+ > (同类对比、平台适配、详细节奏)可在 Stage 6 后执行,读 [references/optional-modules.md](references/optional-modules.md)。
151
135
 
152
- **Stage 写盘协议**(crash safety):每个 Stage 开始前先把 `_meta.json.last_stage_in_progress`
153
- 置为当前 Stage 编号;该 Stage 所有目标文件写完后再做 non-empty / 最小长度检查,通过
154
- 才清空 `last_stage_in_progress` 并 append 到 `stages_completed[]`。半成品文件不被
155
- 信任,resume 时该 Stage 整段重跑。完整协议见
156
- [references/output-contract.md](references/output-contract.md) 「写入顺序 (crash safety)」段。
136
+ ### 按时刻读
157
137
 
158
- **非标文本分段**:对话体、聊天记录、帖子体、书信体等非标准章节格式,先按时间/说话人
159
- 切换/信息揭示点分段,再映射到开端、发展、高潮、结局;不要机械按自然段数量切分。
138
+ 管道分两个时刻,进入时刻只读该行的文件;两个时刻之间只靠落盘的 `拆文报告.md`、`情节节点.md`、`写作手法.md` 和 `_meta.json` 交接,续跑或换新对话都按 `_meta.json` 的进度接上。
139
+
140
+ | 时刻 | 读 | 交接 |
141
+ |---|---|---|
142
+ | Stage 2–3 结构与情感线 | [output-contract.md](references/output-contract.md)、[analysis-method.md](references/analysis-method.md)、[stage2-3-structure-emotion.md](references/stage2-3-structure-emotion.md)、[quality-checklist.md](references/quality-checklist.md)、[analysis-report-style.md](references/analysis-report-style.md) | `stages_completed` 含 3 |
143
+ | Stage 4–6 反转到综合评估、验收 | output-contract.md、analysis-method.md、[stage4-6-reversal-summary.md](references/stage4-6-reversal-summary.md)、quality-checklist.md、analysis-report-style.md;Stage 6 要判断源文本身好坏(毒点、虐爽节奏、证据链等)时加 [source-story-quality.md](references/source-story-quality.md) | 验收通过,`stages_completed` 含 6 |
160
144
 
161
- **投稿层拆解**(拆 Stage 5 开头 / Stage 6 可复用时顺带记录进 拆文报告.md,非阻断;story-short-write 定平台基调时可作初判参考):
162
- - **平台基调**:判定源文更贴哪一路——知乎盐选(第一人称剥洋葱、细思极恐、章末颠覆认知细节)/ 小程序(开局即地狱、当众打脸、章末卡脖子断点)/ 番茄短篇(顺滑无毒点、金手指直白、大满贯收尾)。
163
- - **导语写法**:源文开头前 150-220 字(多数就是正文第一段)怎么钩人——四维骨架(起因+核心冲突+人设底色+情绪反转)、黄金三角(具体物件+信息差+留白钩子)各落在哪句。
164
- - **付费点/最强断点**:源文把最强悬念断点(读者最想往下翻的地方)卡在第几节章末;付费点前后每章剧情点密度是否递增。
145
+ 对照标尺类参考按下方「参考资料」的条件在对应 Stage 读。
165
146
 
166
- 详细模板见 [output-templates.md](references/output-templates.md),方法论见
167
- [material-decomposition.md](references/material-decomposition.md),输出契约见
168
- [output-contract.md](references/output-contract.md)。
147
+ **Stage 写盘协议**(crash safety):每个 Stage 开始前置 `_meta.json.last_stage_in_progress`,
148
+ 目标文件写完并通过 non-empty / 最小长度检查才清空它并 append 到 `stages_completed[]`;
149
+ 半成品不被信任,resume 时该 Stage 整段重跑。完整协议见 output-contract.md「写入顺序 (crash safety)」。
169
150
 
170
151
  ---
171
152
 
172
153
  ## 验收(Stage 6 之后、写 stages_completed[6] 之前)
173
154
 
174
- Stage 6 内容写完后,**不**立刻 append `6` 到 `stages_completed[]`。先跑三道检查:
175
-
176
- ### Step 1:拆文报告表达自检
177
-
178
- 按 [references/analysis-report-style.md](references/analysis-report-style.md) 扫描
179
- `拆文报告.md` 全文的证据链和高风险表达。
180
- 扫描时跳过源文引用——以 `>` 开头的引用行、以及表格中「关键台词 / 原文引用」列的引号直引不计入,只扫分析师本人写的措辞。
181
-
182
- - **命中** → 不写 `stages_completed[6]`,列出命中位置,修订**拆文报告本身**的
183
- 证据不足、空转套话或越界推测;不要改写源文。
184
- - **未命中** → 继续「structure_counts 数值校验」。
155
+ Stage 6 内容写完后**不**立刻 append `6`,先按 output-contract.md「验收接入点」跑三道检查,全过才写:
185
156
 
186
- > 守门员定位:本节检查「我们写的拆文报告」;不要评价「源文是否 AI 写的」。
157
+ - **拆文报告表达自检**:按 analysis-report-style.md 扫描 `拆文报告.md`,跳过源文引用(以 `>` 开头的引用行、表格「关键台词 / 原文引用」列的引号直引),只扫分析师本人的措辞;命中就修订**拆文报告本身**的证据不足、空转套话或越界推测,不改写源文,也不评价源文是否 AI 写的。
158
+ - **structure_counts 数值校验**:阈值以 output-contract.md 为准(单一权威),注意「无反转」是合法枚举,此时 `setup_clues` 跳过、不计入阻断。
159
+ - **BLOCK 项扫描**:扫 quality-checklist.md 全部 `[BLOCK]` 项;`[WARN]` 缺项不阻断,写入 `拆文报告.md` 末尾「待补」清单供用户决定。
187
160
 
188
- ### Step 2:`_meta.json.structure_counts` 数值校验
161
+ 任一阻断 → 回到对应 Stage 补足;原文确实没有、补不出来时,用故事话告诉作者缺什么(如「反转前的铺垫线索只找到 1 条」),不报字段名和 Stage 编号。全通过 → 清空 `_meta.json.last_stage_in_progress`,append `6` 到 `stages_completed[]`,按下方格式告诉作者:
189
162
 
190
- 按 [references/output-contract.md](references/output-contract.md) 「structure_counts 数值校验」表
191
- 逐项检查 `_meta.json` 里 Stage 6 写入的结构计数。阈值与 carve-out 以 output-contract.md 为准(单一权威,不在此重复内联表以免漂移)——特别注意两条合法产出态:`reversal_type` 枚举**含「无反转」**(甜宠/喜剧/报应型);`reversal_type=无反转` 时 **`setup_clues` 跳过该行、不计入阻断**。
192
-
193
- 任一项不达标 → 阻断;列出未达标字段,提示用户回到对应 Stage 补足。
194
-
195
- ### Step 3:`output-templates.md` [BLOCK] 项扫描
196
-
197
- 扫描 `output-templates.md` 中所有 `[BLOCK]` 标注项,确认对应产出段已完成。任一缺失
198
- → 阻断。`[WARN]` 项不阻断,但写入 `拆文报告.md` 末尾的「待补」清单供用户决定。
199
-
200
- ### Step 4:通过
201
-
202
- 「拆文报告 AI 腔自检」「structure_counts 数值校验」和「BLOCK 项扫描」全通过 → 清空 `_meta.json.last_stage_in_progress`,append `6` 到
203
- `stages_completed[]`,提示用户「拆解完成,可调用 `/story-short-write` 写下一篇」。
204
-
205
- ---
206
-
207
- ## 质量检查概要
208
-
209
- 各阶段完成后需通过质量检查。逐项 checklist 见
210
- [output-templates.md 质量检查必填字段](references/output-templates.md)。
211
-
212
- 质量标准的阈值、数值与计算方式的唯一权威定义见
213
- [material-decomposition.md 质量标准](references/material-decomposition.md)。
214
-
215
- 强阻断 / 警告区分:见 `output-templates.md` 每条 checklist 末尾的 `[BLOCK]` /
216
- `[WARN]` 标注。`[BLOCK]` 不通过 → 「BLOCK 项扫描」阻断。
163
+ <!-- author-report -->
164
+ ```md
165
+ 《{书名}》拆完了,结果在 `拆文库/{书名}/`。
166
+ - 这篇靠什么抓人:{一句话故事核}
167
+ - 最值得学的 3 点:{白话,各附一句原文或情节例子}
168
+ - 还缺的:{拆文报告末尾"待补"里需要作者决定的项;没有就写"无"}
169
+ 下一步:想照这个路子写一篇,运行 `/story-short-write`。
170
+ ```
217
171
 
218
172
  ---
219
173
 
@@ -232,38 +186,30 @@ Stage 6 内容写完后,**不**立刻 append `6` 到 `stages_completed[]`。
232
186
 
233
187
  ## 参考资料
234
188
 
235
- ### 核心方法论(拆文时必须加载)
236
-
237
- | 文件 | 何时加载 |
238
- |------|----------|
239
- | [references/output-contract.md](references/output-contract.md) | 全程:Stage→文件映射 / `_meta.json` schema(含 structure_counts)/ 下游消费规范 / 验收接入点 |
240
- | [references/output-templates.md](references/output-templates.md) | 拆文时:输出模板 + 结构库 + 质量检查(含 [BLOCK]/[WARN] 标注) |
241
- | [references/material-decomposition.md](references/material-decomposition.md) | 拆文方法论:情节节点提取 + 写作手法 + 情感线 + 节奏分析 + 共鸣分析 + 人物规则 + **质量标准唯一权威** |
242
- | [references/source-story-quality.md](references/source-story-quality.md) | 评估**源文**质量时:短篇拆书的质量自检清单(评估对象的好坏,不是评估拆文报告本身) |
243
- | [references/analysis-report-style.md](references/analysis-report-style.md) | 「拆文报告表达自检」:检查**报告本身**的证据链、高风险套话与推测边界(不是源文滤镜) |
189
+ 核心方法与模板按上方「按时刻读」加载;以下是对照标尺,按条件读。
244
190
 
245
- ### 按需加载(拆解对应题材 / 维度时作为对照标尺)
191
+ ### 按需加载(拆解对应题材 / 维度时作为对照标尺,一次只查一份)
246
192
 
247
193
  | 文件 | 何时加载 |
248
194
  |------|----------|
249
- | [references/deconstruction-examples.md](references/deconstruction-examples.md) | 校准拆文方法时:3 个完整案例作为参照 |
250
- | [references/zhihu-style.md](references/zhihu-style.md) | 拆解知乎盐言故事时作为平台特性对照 |
251
- | [references/analysis-short-genres.md](references/analysis-short-genres.md) | 拆解特定题材时:按短篇源文的识别锚点、读者承诺和结算归属判断主副类型 |
252
- | [references/analysis-short-hooks.md](references/analysis-short-hooks.md) | 拆解段落/小节边界、钩子链与候选付费断点时作为短篇源文观察标尺 |
253
- | [references/analysis-short-suspense.md](references/analysis-short-suspense.md) | 拆解主副问题、信息差、证据释放、阶段答案与回收时作为短篇源文观察标尺 |
254
- | [references/analysis-paragraph-hooks.md](references/analysis-paragraph-hooks.md) | 拆解段落钩子时作为 11 种段落级钩子对照 |
255
- | [references/analysis-character-basics.md](references/analysis-character-basics.md) | 拆解人物基础设定时作为人设要素对照 |
256
- | [references/analysis-character-design.md](references/analysis-character-design.md) | 拆解人物内在矛盾时作为三层标签反差对照(contradiction_axis 来源) |
257
- | [references/analysis-character-relations.md](references/analysis-character-relations.md) | 拆解人物关系网时作为关系类型对照 |
258
- | [references/analysis-short-mechanics.md](references/analysis-short-mechanics.md) | 拆解核心梗、有限复现、规则兑现、代价与主角代理权时作为观察标尺 |
259
- | [references/analysis-reader-profile.md](references/analysis-reader-profile.md) | 拆解读者心理与期待管理时作为读者画像对照 |
195
+ | [references/deconstruction-examples.md](references/deconstruction-examples.md) | 校准拆文方法:3 个完整案例 |
196
+ | [references/zhihu-style.md](references/zhihu-style.md) | 拆知乎盐言故事:平台特性对照 |
197
+ | [references/analysis-short-genres.md](references/analysis-short-genres.md) | Phase 1 / Stage 2 判主副类型:识别锚点、读者承诺、结算归属 |
198
+ | [references/analysis-short-hooks.md](references/analysis-short-hooks.md) | Stage 3 / 5:段落与小节边界、钩子链、候选付费断点 |
199
+ | [references/analysis-short-suspense.md](references/analysis-short-suspense.md) | Stage 3 / 4:主副问题、信息差、证据释放、阶段答案与回收 |
200
+ | [references/analysis-paragraph-hooks.md](references/analysis-paragraph-hooks.md) | Stage 3 / 5:11 种段落级钩子对照 |
201
+ | [references/analysis-character-basics.md](references/analysis-character-basics.md) | Stage 5:人设要素对照 |
202
+ | [references/analysis-character-design.md](references/analysis-character-design.md) | Stage 5 细拆反差手法:按标题查「三层标签反差人设法」(数反差人物用 stage4-6 的判定,不读本文件) |
203
+ | [references/analysis-character-relations.md](references/analysis-character-relations.md) | Stage 5:关系类型对照 |
204
+ | [references/analysis-short-mechanics.md](references/analysis-short-mechanics.md) | Stage 2 / 6:核心梗、有限复现、规则兑现、代价与主角代理权 |
205
+ | [references/analysis-reader-profile.md](references/analysis-reader-profile.md) | Stage 3 / 6:读者心理与期待管理 |
260
206
 
261
207
  ### 补充资料(拆 Stage 6「可复用结构」时按需对照)
262
208
 
263
209
  > **短篇结构模式**:`references/analysis-short-patterns.md`(比较源文实际功能链、偏离方式
264
210
  > 与失败条件;不按固定章位、百分比或线索数判“合标”)
265
211
  > **通用写作技法**:`references/analysis-writing-techniques.md`(情绪操控 / 感情线 /
266
- > 震惊场景 / 喜剧机制——拆 reusable_structures.fail_mode 时引用「感情线四阶段推进法」表「禁忌」列)
212
+ > 震惊场景 / 喜剧机制——拆 reusable_structures.fail_mode 时按标题只查「感情线四阶段推进法」表的「禁忌」列,不整读)
267
213
  > **市场数据**:`references/real-market-data.md`(跨平台写作差异对照表)
268
214
 
269
215
  所有 references 在 `story-short-analyze` 中都是**观察标尺**——先报告源文实际发生了什么,
@@ -161,7 +161,7 @@
161
161
 
162
162
  检查角色行为是否只是为了让剧情往某方向发展。如果角色"恰好"做了推进剧情的事但没有自身动机,标记为"人设偏移",必须为该行为补充角色层面的合理理由。
163
163
 
164
- ### 第二步:情绪目标确认
164
+ ### 第二步:目标情绪确认
165
165
 
166
166
  写每段前明确三个要素:
167
167
  1. 本段目标情绪:这段剧情要让读者产生什么情绪?
@@ -0,0 +1,42 @@
1
+ # 短篇拆解思路
2
+
3
+ Stage 2–3 与 Stage 4–6 两个时刻都读本文件:拆什么、按什么顺序拆、不能怎么拆。
4
+
5
+ ## 拆解思路
6
+
7
+ ### 核心原则
8
+
9
+ | 原则 | 说明 |
10
+ |------|------|
11
+ | 故事核驱动 | 先找到故事的核心梗(一句话),所有分析围绕故事核展开。故事核变了,整篇的分析方向都会变 |
12
+ | 读者视角优先 | 每一步从读者体验出发——读者看到了什么?感受到了什么?为什么在意?不猜测创作者动机,只分析文本实际制造的读者体验 |
13
+ | 可复用性导向 | 每个分析点都要输出可迁移的结构、功能位或风险阈值;纯欣赏型分析不合格 |
14
+ | 爆点为中心 | 短篇拆文的核心问题是——什么让读者情绪爆发?什么让读者想转发?找到爆点,拆解它的铺垫和释放机制 |
15
+ | 共鸣决定传播 | 一篇短篇能火,关键在引发共鸣;文笔好坏不单独决定传播。共鸣层次越多,传播性越强 |
16
+
17
+ ### 分析顺序(从外到内,层层递进)
18
+
19
+ 故事核(写的是什么,锚定一切分析的起点)→ 结构(怎么布局的)→ 人物(谁在推动故事)→ 情感线(读者感受到了什么)→ 写作手法(怎么写出来的)→ 共鸣+爆点性+话题性(为什么能火)→ 综合评估(可借鉴结构)
20
+
21
+ ### 每个阶段的核心问题
22
+
23
+ 拆文目标是回答问题,不能机械填表。每个阶段都有一个核心问题:
24
+
25
+ | 阶段 | 核心问题 | 回答不了说明 |
26
+ |------|----------|-------------|
27
+ | 故事核 | 一句话讲清楚这个故事卖什么? | 还没读懂,别急着拆 |
28
+ | 结构 | 文本如何布局?开端/发展/高潮/结局各占多少? | 布局决定了节奏,不知道布局就不知道节奏 |
29
+ | 人物 | 谁是主人公?谁是主动型角色?谁是被动型角色? | 不知道谁在推故事,就不知道故事怎么动的 |
30
+ | 情感线 | 读者的情绪是怎么被一步步拉扯的? | 这是短篇的核心价值,拆不出来等于白拆 |
31
+ | 写作手法 | 文本用了什么手法让读者产生这种体验? | 手法必须被拆成可复用功能位,否则无法迁移 |
32
+ | 共鸣+爆点 | 为什么这篇能火?触发了什么共鸣? | 不回答这个问题,拆文就变成了文学鉴赏 |
33
+ | 综合评估 | 哪些结构可复用?复用条件和风险是什么? | 不能指导下一份 artifact 的拆文没有意义 |
34
+
35
+ ### 拆解约束
36
+
37
+ 1. **禁止主观评价** — 不评价好坏,只拆解机制。输出中不得出现"写得好/写得差"类评价
38
+ 2. **从体验反推手法** — 先定位读者情绪高峰,再反推文本用什么手法制造了这个高峰
39
+ 3. **深度优先于全面** — 核心维度(故事核/爆点/共鸣)必须深入,可选维度按需
40
+ 4. **可复用性导向** — 每个分析点必须输出复用条件、可迁移做法和风险边界
41
+
42
+ ---
@@ -0,0 +1,97 @@
1
+ # 可选模块:同类对比、平台适配、详细节奏
2
+
3
+ 作者要求或 Stage 6 之后需要时读本文件;不在主管道里。
4
+
5
+ ## 方法
6
+
7
+ ### 同类对比
8
+
9
+ 将分析对象与同题材、同结构的其他作品对比:
10
+
11
+ | 维度 | 本文 | 对标作品A | 对标作品B |
12
+ |------|------|----------|----------|
13
+ | 情感曲线形态 | | | |
14
+ | 核心手法 | | | |
15
+ | 开头钩子强度 | 1-5 | 1-5 | 1-5 |
16
+ | 反转惊喜度 | 1-5 | 1-5 | 1-5 |
17
+ | 结尾余韵 | 1-5 | 1-5 | 1-5 |
18
+
19
+ **差异化亮点**:关键差异是优势还是劣势?
20
+
21
+ ### 平台适配评估
22
+
23
+ | 平台 | 适配度 | 原因 | 调整动作 |
24
+ |------|--------|------|----------|
25
+ | 知乎盐言 | 高/中/低 | 偏重文笔和情感深度,8000-12000字 | |
26
+ | 番茄短篇 | 高/中/低 | 偏重节奏和爽感,5000-10000字 | |
27
+ | 七猫短篇 | 高/中/低 | 偏重故事完整性和可读性,6000-12000字 | |
28
+
29
+ ### 详细节奏分析
30
+
31
+ 逐节标注节奏指标,形成节奏分布图:
32
+
33
+ | 节 | 字数 | 事件密度 | 对话占比 | 冲突占比 | 节奏判断 |
34
+ |----|------|----------|----------|----------|----------|
35
+
36
+ ---
37
+
38
+ ## 输出模板
39
+
40
+ ### 同类对比模板
41
+
42
+ > 方法见上方「同类对比」。
43
+
44
+ | 维度 | 本文 | 对标作品A | 对标作品B |
45
+ |------|------|----------|----------|
46
+ | 情感曲线形态 | {如:压缩弹簧} | {如:V形} | {如:波浪} |
47
+ | 核心手法 | {如:假死+信息差} | {如:时间线反转} | {如:套娃反转} |
48
+ | 开头钩子强度 | {1-5} | {1-5} | {1-5} |
49
+ | 反转惊喜度 | {1-5} | {1-5} | {1-5} |
50
+ | 结尾余韵 | {1-5} | {1-5} | {1-5} |
51
+
52
+ **差异化亮点**:{本文与同类作品的关键差异,是优势还是劣势}
53
+
54
+ ---
55
+
56
+ ### 平台适配评估模板
57
+
58
+ > 方法见上方「平台适配评估」。
59
+
60
+ | 平台 | 适配度 | 原因 | 调整动作 |
61
+ |------|--------|------|----------|
62
+ | 知乎盐言 | {高/中/低} | {原因} | {如有} |
63
+ | 番茄短篇 | {高/中/低} | {原因} | {如有} |
64
+ | 七猫短篇 | {高/中/低} | {原因} | {如有} |
65
+
66
+ ---
67
+
68
+ ### 详细节奏分析模板
69
+
70
+ > 指标与异常类型见 [stage4-6-reversal-summary.md](stage4-6-reversal-summary.md)「节奏分析」。
71
+
72
+ #### 节奏指标
73
+
74
+ > 各维度数值只作文本描述。判断须回到具体节点、状态变化和后果,并在存在对标时与同题材、同平台样本比较。
75
+
76
+ | 维度 | 数值 | 判断 |
77
+ |------|------|------|
78
+ | 事件密度 | {N}个/千字 | {文本分布与真实状态变化} |
79
+ | 对话密度 | {X%} | {文本倾向、对白功能与无对白推进方式} |
80
+ | 冲突密度 | {X%} | {直接冲突与任务/证据/空间/关系压力的关系} |
81
+ | 信息密度 | {X%} | {读者模型变化与消化效果} |
82
+
83
+ #### 逐节节奏分布
84
+
85
+ | 节 | 字数 | 事件密度 | 对话占比 | 冲突占比 | 节奏判断 |
86
+ |----|------|----------|----------|----------|----------|
87
+ | 1 | {N} | {X/千字} | {Y%} | {Z%} | {快/中/慢/过渡} |
88
+
89
+ #### 节奏异常
90
+
91
+ | 异常类型 | 位置 | 说明 |
92
+ |----------|------|------|
93
+ | {节奏塌陷/压力过载/信息洪峰/对白失效/对白挤压场景/反转过载} | {节N} | {具体说明} |
94
+
95
+ 如无异常,注明"节奏无明显异常"。
96
+
97
+ ---
@@ -2,11 +2,7 @@
2
2
  name: output-contract
3
3
  description: |
4
4
  story-short-analyze 输出契约。定义 Stage → 文件映射、_meta.json schema、
5
- 下游消费规范(story-short-write 读全套 markdown + 原文 + _meta.json 写新短篇)。
6
- sync-policy: |
7
- 本文件在 story-short-analyze 与 story-short-write 之间需保持字节一致(byte-equal)。
8
- 修改任一副本后,必须同步另一副本,并通过 bash scripts/check-shared-files.sh 验证。
9
- 禁止把本文件加入 IGNORE_NAMES 列表——它必须保持同步,不属于 intentional differences。
5
+ 写入顺序、Resume 与验收接入点。story-short-write 怎么读这些产出由写作侧自己维护。
10
6
  ---
11
7
 
12
8
  # 输出契约:story-short-analyze ↔ story-short-write
@@ -29,6 +25,7 @@ sync-policy: |
29
25
 
30
26
  **文件名约定**:`拆文报告.md / 情节节点.md / 写作手法.md` 由 `story-short-write` 硬编码
31
27
  消费,不可重命名。分析叙事走 markdown,数字/枚举走 `_meta.json.structure_counts`。
28
+ 写作侧怎么读这些产出(读哪几段、按什么顺序用)由 `story-short-write` 自己的参考文件维护,不在本契约里。
32
29
 
33
30
  ---
34
31
 
@@ -38,7 +35,7 @@ sync-policy: |
38
35
  |-------|------|----------|---------|
39
36
  | 2 | 结构+情节节点 | `拆文报告.md`(故事核/结构/梗概段) + `情节节点.md` | 故事核 / 4-6 段结构 / 故事梗概 / 情节节点清单 |
40
37
  | 3 | 情感线+爆点 | `拆文报告.md`(情感曲线段+爆点段) | 情感曲线 ≥5 节点 / 爆点 6 维度 / 期待感 |
41
- | 4 | 反转+写作手法 | `拆文报告.md`(反转段) + `写作手法.md` | 前置反转检查 / 反转分析(铺垫 ≥2) / 写作手法 ≥5 项 |
38
+ | 4 | 反转+写作手法 | `拆文报告.md`(反转段) + `写作手法.md` | 前置反转检查 / 反转分析(铺垫 ≥3) / 写作手法 ≥5 项 |
42
39
  | 5 | 人物+开头结尾 | `拆文报告.md`(人物段+首尾段) | 人物分类+功能评估 / 开头分析 / 结尾分析 / 首尾呼应 |
43
40
  | 6 | 综合评估 | `拆文报告.md`(综合段) + `_meta.json`(写 structure_counts) | 五维评分 / 爆点性 / 话题性 / 共鸣 ≥3 层 / 可复用结构 ≥3 条 / 节奏速报 |
44
41
 
@@ -96,7 +93,7 @@ Stage 6 内容写完后、`stages_completed[6]` append 前,跑三道检查:
96
93
 
97
94
  扫描 `拆文报告.md` 全文 against 拆文流程本地加载的禁用词表与报告 AI 腔规则。
98
95
  这是拆文报告质量门;成稿去 AI 规则由写作流程在自己的 Skill 内维护,不跨 Skill 读取参考文件,也不要把两套规则混用。
99
- 命中 → 不写 `stages_completed[6]`,列出位置请用户修订**拆文报告本身**的 AI 腔
96
+ 命中 → 不写 `stages_completed[6]`,逐处修订**拆文报告本身**的 AI 腔后重扫
100
97
  (源文里有 AI 腔不算——这里扫的是分析师写的报告)。
101
98
 
102
99
  ### Step 2:`_meta.json.structure_counts` 数值校验
@@ -111,55 +108,20 @@ Stage 6 内容写完后、`stages_completed[6]` append 前,跑三道检查:
111
108
  | `structure_counts.reversal_type` | 在枚举内(含「无反转」)| 阻断 |
112
109
  | `genre_detected` | 非空 | 阻断 |
113
110
 
114
- > 情节节点数不设阈值,按 `情节节点.md` 的语义变化边界提取(见 material-decomposition.md),不在本表。`beats` 是结构段数,不是情节节点数。
111
+ > 情节节点数不设阈值,按 `情节节点.md` 的语义变化边界提取(见拆文流程的情节节点提取规则),不在本表。`beats` 是结构段数,不是情节节点数。
115
112
 
116
113
  ### Step 3:`story-short-analyze` BLOCK 项扫描
117
114
 
118
- 扫拆文流程本地加载的输出模板,确认所有 `[BLOCK]` 标注项对应的产出段均在 `拆文报告.md` 出现。
115
+ 扫拆文流程本地质量检查清单的全部 `[BLOCK]` 项,确认对应产出均已写出。
119
116
  任一缺失 → 阻断。`[WARN]` 项 → 写入拆文报告末尾「待补」清单,不阻断。
120
117
 
121
118
  ### Step 4:通过
122
119
 
123
- 清空 `_meta.json.last_stage_in_progress`,append `6` 到 `stages_completed[]`,提示
124
- 用户「拆解完成,可调用 `/story-short-write` 写下一篇」。
125
-
126
- ---
127
-
128
- ## 下游消费规范(story-short-write 怎么用)
129
-
130
- > `story-short-write` 当前硬编码读 `拆文报告.md / 情节节点.md / 写作手法.md` 三个 markdown。
131
- > `_meta.json` 是可选增强:read 容忍,不存在不阻塞写作。
132
-
133
- | 文件 | 角色 | 怎么读 |
134
- |------|------|--------|
135
- | `_meta.json`(可选)| 数字门面 + 题材识别 | 看 `genre_detected` 决定哪个题材标尺,读 `structure_counts` 确认拆文完整性,读 `structure_counts.reversal_type` 选反转骨架 |
136
- | `拆文报告.md` | 分析叙事主体 | 读「故事核」「结构」「情感曲线」「爆点」「反转分析」「人物」「五维评分」「共鸣分析」「可复用结构」「同类型写作动作」段,是 writer 的主输入 |
137
- | `情节节点.md` | 节奏锚点 | 看每个节点的字数位置 + 功能 + 触发事件,给新故事排节奏 |
138
- | `写作手法.md` | 手法库 | POV / 对话 / 时间 / 信息控制 等具体手法 + 原文示例,新篇里复用 |
139
- | `原文/` | 语感源 | 抄对话调子、节奏、画面感、打脸张力。**不抄具体情节**,抄写法。 |
140
-
141
- ### 写作流程建议
142
-
143
- 1. 看 `_meta.json.genre_detected` 和 `structure_counts.reversal_type` 选骨架。
144
- 2. 读 `拆文报告.md` 的「核心手法」「共鸣分析」「可复用结构」段,决定要保留 / 调整哪些。
145
- 3. 读 `情节节点.md` 把节奏锚点抄到新故事的字数位置上。
146
- 4. 写场景时翻 `写作手法.md` + `原文/`,参考具体写法。
147
- 5. 写完后(可选)在新文档 frontmatter 写 `derived_from: 拆文库/{书名}/` 追溯。
148
-
149
- ### 维护者本地烟雾测试
150
-
151
- ```bash
152
- ls 拆文库/{书名}/ # 应有:原文/ 拆文报告.md 情节节点.md 写作手法.md _meta.json
153
- /story-short-write 拆文库/{书名}/
154
- # 通过:输出 8000+ 字同题材新短篇,prose 有源文对话节奏和画面感
155
- # 失败:写得像填空 / 或 short-write 找不到三个 markdown
156
- ```
120
+ 清空 `_meta.json.last_stage_in_progress`,append `6` 到 `stages_completed[]`,按拆文
121
+ 流程 SKILL 的完成汇报告诉作者。
157
122
 
158
123
  ---
159
124
 
160
125
  ## 版本约定
161
126
 
162
- - `_meta.json.version` 与本文件 `sync-policy` 联动。
163
- - breaking change(字段重命名 / 类型变更 / 必填变更)必须 bump major version 并同步两侧
164
- 副本,CI 通过 `scripts/check-shared-files.sh` 拦截单边修改。
165
- - additive change(新增可选字段)可 bump minor;producer、consumer 与两侧副本必须在同一变更中升级到当前 schema。
127
+ `_meta.json.version` 跟本契约走:字段改名、类型或必填变更升 major,新增可选字段升 minor。
@@ -0,0 +1,80 @@
1
+ # 质量检查与验收清单
2
+
3
+ 每个 Stage 写完按对应小节自检;Stage 6 之后的「BLOCK 项扫描」扫本文件全部 `[BLOCK]` 项。
4
+
5
+ ## 质量检查必填字段
6
+
7
+ Stage 完成前逐项检查,缺一即不完整。**节点密度、对话占比等只作结构化描述;质量判断须引用具体场景功能、状态变化和同题材对标,不设通用数值阈值。**
8
+
9
+ **标注约定**:
10
+
11
+ - `[BLOCK]`:量化或必备产物,缺失 → 「BLOCK 项扫描」阻断,不写 `_meta.json.stages_completed[6]`,自己回去补写那一部分;原文确实没有、补不出来时,用故事话告诉作者缺什么(如「反转前的铺垫线索只找到 1 条」)。
12
+ - `[WARN]`:质性或辅助项,缺失 → 写入 `拆文报告.md` 末尾「待补」清单,**不阻断**进入下一阶段。
13
+
14
+ **Stage 2(结构+情节节点)**:
15
+ - [ ] 故事核已提取(一句话核心梗) `[BLOCK]`
16
+ - [ ] 结构划分 4-6 段(必须含开端/发展/高潮/结局),每段有字数范围、占比和功能 `[BLOCK]`
17
+ - [ ] 结局类型已标注 `[WARN]`
18
+ - [ ] POV 已识别 `[WARN]`
19
+ - [ ] 叙事时间线已标注 `[WARN]`
20
+ - [ ] 情节节点覆盖全文真实变化,没有为凑数量重复记录同一事件(见 [stage2-3-structure-emotion.md](stage2-3-structure-emotion.md)「情节节点提取规则」) `[BLOCK]`
21
+ - [ ] 每个节点有情绪标记(类型 + 强度值) `[BLOCK]`
22
+
23
+ **Stage 3(情感线+爆点)**:
24
+ - [ ] 至少 5 个情感节点,覆盖每一处情绪立场、期待或压力变化,每个有字数位置、强度值和方向(虐-9~爽+9) `[BLOCK]`
25
+ - [ ] 每个节点标注了钩子类型(含"无") `[WARN]`
26
+ - [ ] 曲线特征 5 项齐全(起始/走向/极值/方向差/翻转次数) `[BLOCK]`
27
+ - [ ] 爆点分析 6 维度齐全(铺垫/积累/延迟/爆发点/余波/印象) `[BLOCK]`
28
+ - [ ] 期待感表已完成 `[WARN]`
29
+
30
+ **Stage 4(反转+写作手法)**:
31
+ - [ ] 前置反转检查已执行(存在/不存在) `[WARN]`
32
+ - [ ] 反转类型已识别 `[BLOCK]`
33
+ - [ ] 铺垫线索至少 3 条,含原文位置(无反转/报应型不查) `[BLOCK]`
34
+ - [ ] 误导方向已说明 `[WARN]`
35
+ - [ ] 写作手法分析 ≥5 项维度 `[BLOCK]`
36
+ - [ ] POV 策略已分析(选择效果+代价+切换) `[WARN]`
37
+ - [ ] 对话指标已量化(占比+潜台词率) `[WARN]`
38
+
39
+ **Stage 5(人物+开头结尾)**:
40
+ - [ ] 所有有名人物已提取,有二维分类(叙事角色:主人公/重要配角/功能人物 + 行动角色:主动型/被动型/转变型) `[BLOCK]`
41
+ - [ ] 人物功能评估已完成 `[BLOCK]`
42
+ - [ ] 人物关系已标注演变轨迹 `[WARN]`
43
+ - [ ] 前 3 句话原文引用 `[BLOCK]`
44
+ - [ ] 前50字/前100字检查已完成 `[WARN]`
45
+ - [ ] 开头情绪强度已标注(1-10) `[WARN]`
46
+ - [ ] 结尾类型和情绪落点已说明 `[WARN]`
47
+ - [ ] 钩子回收检查已完成 `[WARN]`
48
+ - [ ] 首尾呼应分析已完成 `[WARN]`
49
+ - [ ] 所有钩子已标注回收状态(已回收/留白/遗漏) `[WARN]`
50
+
51
+ **Stage 6(综合评估)**:
52
+ - [ ] 一句话评价是具体机制(非泛泛赞美) `[WARN]`
53
+ - [ ] 五维评分每项有具体说明(非泛泛而谈) `[BLOCK]`
54
+ - [ ] 爆点性已分析 `[BLOCK]`
55
+ - [ ] 话题性已分析 `[BLOCK]`
56
+ - [ ] 共鸣分析至少 3 层 `[BLOCK]`
57
+ - [ ] 至少 3 条可复用结构,每条含适用场景 `[BLOCK]`
58
+ - [ ] 同类型写作动作是具体行动 `[WARN]`
59
+ - [ ] `_meta.json.structure_counts` 已写入且各字段达「structure_counts 数值校验」阈值(详见 [output-contract.md](output-contract.md) 同名表) `[BLOCK]`
60
+ - [ ] 节奏速报已包含
61
+
62
+ **验收接入**:以上 `[BLOCK]` 项与 [output-contract.md](output-contract.md)「structure_counts 数值校验」表共同构成「BLOCK 项扫描」的检查清单,在 Stage 6 内容写完后、`stages_completed[6]` append 前调用本节。
63
+
64
+ ## 质量标准
65
+
66
+ ### 拆解完整性检查
67
+
68
+ | 指标 | 阈值 | 计算 | 不达标处理 |
69
+ |------|------|------|------------|
70
+ | 情节节点覆盖 | ≥90% | 有明确功能的节点数 / 总节点数 | <90% 检查遗漏 |
71
+ | 情感曲线完整度 | 100% | 每个节点都有情绪标记 | 补充缺失标记 |
72
+ | 写作手法识别数 | ≥5项 | 识别出的手法维度的数量 | <5 项深入分析 |
73
+ | 对话分析覆盖 | ≥80% | 已分析的对话条数 / 总对话条数 | <80% 补充分析 |
74
+ | 人物提取完整 | 100% | 有名人物全部提取 | 补充遗漏人物 |
75
+
76
+ ### 拆文报告质量检查
77
+
78
+ 即上方 Stage 2、Stage 6 清单的报告项:故事核一句话点明核心梗;五维评分每项有具体说明(非"写得很好");爆点性与话题性具体指出传播点;共鸣至少 3 层;可复用结构至少 3 条,含手法名+用法+适用场景;同类型写作动作是具体行动,不是"多练习"。
79
+
80
+ ---
@@ -2,11 +2,11 @@
2
2
  # 源文质量评估清单
3
3
 
4
4
  > **定位**:story-short-analyze(短篇拆书)的质量自检清单,评估**拆解对象(源文)**的成文质量时逐项核对。
5
- > 拆书管道本身的质量检查见 output-templates.md「质量检查必填字段」;所有数值阈值的唯一权威定义见 material-decomposition.md「质量标准」与「节奏分析」,本清单不自定义数值。
5
+ > 拆书管道本身的质量检查见 quality-checklist.md「质量检查必填字段」;所有数值阈值的唯一权威定义见 quality-checklist.md「质量标准」与 stage4-6-reversal-summary.md「节奏分析」,本清单不自定义数值。
6
6
  >
7
7
  > **三类质量的分工(别混用)**:
8
8
  >
9
- > 1. **拆书管道质量检查**(执行过程中)→ [output-templates.md「质量检查必填字段」](output-templates.md)。每条带 `[BLOCK]` / `[WARN]` 标注;`[BLOCK]` 缺失 → 「BLOCK 项扫描」阻断。
9
+ > 1. **拆书管道质量检查**(执行过程中)→ [quality-checklist.md「质量检查必填字段」](quality-checklist.md)。每条带 `[BLOCK]` / `[WARN]` 标注;`[BLOCK]` 缺失 → 「BLOCK 项扫描」阻断。
10
10
  > 2. **评估对象(源文)质量**(拆什么样的料)→ 本文件。回答"这篇源文写得好不好"。
11
11
  > 3. **拆文报告本身质量**(写什么样的报告)→ [analysis-report-style.md](analysis-report-style.md)。报告自身由「拆文报告表达自检」守门;源文中的套话和 AI 腔仍是分析对象,不作输入过滤。
12
12
 
@@ -81,6 +81,7 @@
81
81
  ### 五维评分标准
82
82
 
83
83
  每个维度 0-100 分,根据评分结果选择精修策略。
84
+ 严重度:critical、high=必须修;medium=建议看;low=仅提示。
84
85
 
85
86
  ### 维度 1:核心一致度
86
87
  检查:关键冲突、关键行动、人物动机是否前后一致。
@@ -108,7 +109,6 @@
108
109
  | 问题 | 严重度 | 修复 |
109
110
  |------|--------|------|
110
111
  | 段落长度差异过大 | medium | 调整段落划分 |
111
- | 章节字数偏离目标 | **high** | 写作/大纲修复时先回到细纲补足计划内情节点,再展开;去AI味已有正文时不得新增剧情 |
112
112
  | 格式混乱(对话/描写不统一)| low | 统一格式 |
113
113
 
114
114
  ### 维度 4:可读性
@@ -195,7 +195,7 @@
195
195
 
196
196
  > **本表评估的是源文**(拆解对象写得好不好),毒点判断必须引用源文证据,不替源文改写。
197
197
  > **不要把本表用来评估拆文报告本身**:报告自身走「拆文报告表达自检」+ [analysis-report-style.md](analysis-report-style.md)。
198
- > **拆文管道完成度** 走 [output-templates.md「质量检查必填字段」](output-templates.md) 的 `[BLOCK]` / `[WARN]` 清单。
198
+ > **拆文管道完成度** 走 [quality-checklist.md「质量检查必填字段」](quality-checklist.md) 的 `[BLOCK]` / `[WARN]` 清单。
199
199
 
200
200
  | 检查项 | 标准 |
201
201
  |--------|------|