@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,8 +1,8 @@
1
1
  # 短篇写作通用底座
2
2
 
3
3
  > 短篇网文正文写作的公共父类。服务番茄 / 七猫 / 黑岩 / 盐选通俗短篇(1-2 万字),不是传统文学。
4
- > 题材风格包(`genre-styles/`)在此基础上做覆盖加味;本文件管所有题材共通的原生写法。
5
- > **总原则:情绪宁烈不温。短篇是情绪产品,靠直白共鸣留人,不靠克制留白。**
4
+ > 本文件是默认写法;题材包(`genre-styles/`)的腔调、开篇与情绪烈度覆盖这里(如悬疑冷静克制)。
5
+ > **默认总原则:情绪宁烈不温。短篇是情绪产品,靠直白共鸣留人,不靠克制留白。**
6
6
 
7
7
  ---
8
8
 
@@ -57,11 +57,12 @@
57
57
 
58
58
  ## 4. 小节结构:超短章节制,一节一炸点
59
59
 
60
- 按平台两套节奏:
60
+ 按平台三套节奏(定平台基调时一并定小节标记与引号,写进 设定.md「平台基调」):
61
61
 
62
62
  | 平台 | 小节标记 | 段落 | 篇幅倾向 |
63
63
  |------|----------|------|----------|
64
64
  | 黑岩 | `###` + 数字(`###1.`) | 段落短、多换行留白 | 小节偏短,长度服从炸点或行动链是否完整 |
65
+ | 知乎盐选 | `1.`(纯数字,对话用「」) | 短段与叙述交织 | 按认知翻转分节,不设单节硬线 |
65
66
  | 番茄 / 七猫 | `###第N章` 或 `###1.` | 短段为底色,允许多句回溯叙述段交织对话 | 可承载较完整场景,古言因礼制、空间与关系动作通常更展开;均不设单节硬线 |
66
67
 
67
68
  - 每个小节围绕一个主问题推进:背叛升级、态度反转、读者新获知信息、行动或后果至少发生一项真实变化;相关变化可由同一动作链同时完成,不强配狠话。
@@ -73,7 +74,7 @@
73
74
 
74
75
  ## 5. 钩子:极高密度,阶梯式背叛
75
76
 
76
- - 导语 50-300 字塞 3-5 个事件 / 反转;正文让爆料、态度、行动或后果持续变化。连续多个单元不变再查停滞,不为逐节达标塞障碍。
77
+ - 导语约 150-220 字(口径见 submission-craft.md)塞 3-5 个事件 / 反转;正文让爆料、态度、行动或后果持续变化。连续多个单元不变再查停滞,不为逐节达标塞障碍。
77
78
  - **阶梯式升级**:道德踩踏 → 经济 → 生命,越揭越大。一页里敢叠多重雷(绝症骗局 + 当众拥吻 + 孩子药引…),别单点反复抒情。
78
79
  - **爽点持续前推**:连续若干叙事单元应能看到反打、行动、亮牌或后果,不要长期停在同一情绪闭环;章尾可用反杀预告、局部兑现、关系变化或明确的下一步制造追读缺口,不要求每章同一种炸点。
79
80
  - **当众围观放大羞辱**:把背叛 / 打脸放在有外人见证的场合(宴席、股东会、群聊截图、请安),用众人的起哄 / 鄙夷 / 沉默放大屈辱与出气感;独角戏起不来「丢脸感」。
@@ -121,50 +122,13 @@
121
122
  | 视角 | 深度限知、不剧透 | 第一人称在场、主动剧透火葬场 |
122
123
  | 情绪 | 不设固定译法,按场景落到选择/台词/后果,必要时直写 | 情绪可直给;不强接身体反应 |
123
124
  | 章尾 | 禁总结 / 升华 / 预告 | 审判金句 / 火葬场预告是卖点 |
124
- | 结构 | 贯穿道具三次 / 数字阶梯 | 偷听 / 底牌 / 回旋镖 / 次数累积 |
125
+ | 结构 | 贯穿道具三次 / 数字阶梯 | 偷听 / 底牌 / 回旋镖 / 次数累积;贯穿道具可选,用就三次出现 |
125
126
  | 内心 | 独白 ≤ 2 段 | 成段宣泄独白 + 连环反问是主引擎 |
126
127
  | 排比 | 砍到一条 | 抒情堆苦难有功能则留 |
127
128
 
128
129
  ---
129
130
 
130
- ## 10. 场景写法:三维度揉进
131
-
132
- 发生、感知、反应是可选信息维度,不是逐段配额。关键子事件只把确有新信息的维度**织进同一段连续正文,不按维度分段**;上下文已清楚时可以留空:
133
-
134
- | 维度 | 内容 | 要点 |
135
- |------|------|------|
136
- | 发生 | 事情出现了 | 1-2 句,含一个具体细节 |
137
- | 感知 | 主角注意到什么 | 只取会改变理解、判断或气氛的声音、物件、空间或身体感受,不按感官凑数 |
138
- | 反应 | 角色接下来怎么办 | 选择、台词、策略、任务动作、明确感受或有后果的身体变化;不默认补手/眼/呼吸微动作 |
139
-
140
- 任务卡点也按需取三维:发生 = 事情办不下去;感知 = 主角看到、摸到或听到卡住的具体证据;反应 = 当场判断、选择或下一步反击。不要把流程单独写成说明段,也不要在场景末尾补动作尾巴解释意义。
141
-
142
- 反模式(绝对禁止):把三维度拆成三段依次写完,同一件事掰开写三遍。
143
-
144
- - 正确(揉进式,《闻笙有两意》原文):我以为陆池是真心跟我道歉,但摸到那碗凉掉的排骨汤时,我的心更冰冷了。上面还浮着凝固的油,根本喝不了。(摸汤、凝固的油、心冰冷揉在一段里)
145
- - 错误(把上面这段拆成三段堆叠):我摸到那碗排骨汤。/ 汤是凉的,浮着凝固的油。/ 我的心更冰冷了。(同一件事掰成三句,读者看三遍)
146
-
147
- **画面分段**:揉进不等于一段到底。按新动作 / 新物件 / 新信息 / 新对话 / 视线转移断段,不按维度断段。一段承载一个镜头拍点或一条连续推理 / 氛围 / 情绪链。
148
-
149
- ---
150
-
151
- ## 11. 疏密分配 + 动静起伏
152
-
153
- **疏密**:不要每个 beat 一样长一样细(平均用力是 AI 腔的根)。
154
-
155
- | beat 类型 | 笔墨 |
156
- |---|---|
157
- | 爽点 / 打脸 / 反转 / 情绪高潮 | 密(详写,感知动作对话铺满,慢镜头逐拍) |
158
- | 过场 / 赶路 / 信息交代 / 时间跳转 | 疏(1-2 句带过,不展开三维度) |
159
- | 铺垫 / 日常 / 关系升温 | 中(挑一两个有代入感的细节写实,其余略) |
160
-
161
- **动静有起伏**:整篇要有推进与停顿,但不要求动作冲击后固定接一段安静感知。停顿可以是信息悬置、对话空白、等待或环境压力,不用微动作填格。避免长时间全动造成疲劳,也避免长时间全静造成拖沓。
162
-
163
- **主语节奏**:段首 / 场景切换 / 多人同场用主角名建立主语;同一动作链内用代词 / 省略流动;关键转折再点名。避免连续多句都以同一主角名开头。
164
-
165
- ---
166
-
167
- ## 12. 开头事件密度
131
+ ## 10. 开头事件密度
168
132
 
169
133
  前 100 字 ≥ 3 个事件。删掉所有背景介绍(「她是 XX 的女孩」「在古代 XX 年间」),第 1 句就是事件 / 对话 / 信息炸弹,不是描述。
170
134
 
@@ -108,7 +108,7 @@
108
108
 
109
109
  ```bash
110
110
  for PYBIN in python3 python py; do "$PYBIN" -c "" 2>/dev/null && break; done
111
- "$PYBIN" -c "from pathlib import Path; print(len(Path('正文.md').read_text(encoding='utf-8')))"
111
+ "$PYBIN" -c "from pathlib import Path; print(len(''.join(Path('正文.md').read_text(encoding='utf-8').split())))"
112
112
  ```
113
113
 
114
114
  各节分布(按小节标记切开,逐节报非空白字符数):
@@ -178,12 +178,12 @@ for name, body in out:
178
178
 
179
179
  | 平台 | 章节标记 | 对话格式 | 段落底色 | 特殊要求 |
180
180
  |------|----------|----------|----------|----------|
181
- | 知乎盐言 | `1.`(纯数字) | `「」` | 短段 + 叙述交织 | 导语需单独标注 |
181
+ | 知乎盐言 | `1.`(纯数字) | `「」` | 短段 + 叙述交织 | 导语即正文开头几段,不另标 |
182
182
  | 番茄 | `###第N章` | `""` | 短段为底色,允许叙述交织对话 | 首段需有吸引力 |
183
183
  | 红果 | `###1.` | `""` | 短段为底色 | 无 |
184
184
  | 黑岩 | `###1.` | `""` | 一句一段,多换行留白 | 节尾按职责承接,不另造悬钩 |
185
185
 
186
- 用户未指定平台时,默认短篇通用格式:`###1.` + `""` + 番茄系短段底色。
186
+ `设定.md`「平台基调」已记小节标记与引号时以它为准;都没定用短篇通用格式:`###1.` + `""` + 番茄系短段底色。
187
187
 
188
188
  ---
189
189
 
@@ -71,6 +71,7 @@
71
71
  ### 五维评分标准
72
72
 
73
73
  每个维度 0-100 分,根据评分结果选择精修策略。
74
+ 严重度:critical、high=必须修;medium=建议看;low=仅提示。
74
75
 
75
76
  ### 维度 1:核心一致度
76
77
  检查:关键冲突、关键行动、人物动机是否前后一致。
@@ -98,7 +99,7 @@
98
99
  | 问题 | 严重度 | 修复 |
99
100
  |------|--------|------|
100
101
  | 机械按字数切段或主语过密 | medium | 按戏剧单元重排段落,段首点名、段中代词/省略、关键转折再点名 |
101
- | 章节字数偏离目标 | **high** | 写作/大纲修复时先回到细纲补足计划内情节点,再展开;去AI味已有正文时不得新增剧情 |
102
+ | 整篇字数不在锁定范围 | **high** | 先核对批准情节点是否写完整,缺了才补回原计划内容,不为凑字新增冲突、对话或独立事件;超字删不推动剧情的内容;去AI味已有正文时不得新增剧情 |
102
103
  | 格式混乱(对话/描写不统一)| low | 统一格式 |
103
104
 
104
105
  ### 维度 4:可读性
@@ -279,7 +279,7 @@
279
279
  - [ ] 反转让读者想翻回开头重看
280
280
 
281
281
  ### 公平性
282
- - [ ] 读者有可能在反转前猜到(不是必须,但有可能)
282
+ - [ ] 细心读者回看能推出真相,但正读时猜不到
283
283
  - [ ] 没有对读者撒谎——只是没说出全部真相
284
284
  - [ ] 揭示方式自然,不靠角色大段独白解释
285
285
 
@@ -12,10 +12,10 @@
12
12
 
13
13
  ## 加载与传递
14
14
 
15
- 1. 从本次正文路径确定书目录(长篇为 `正文/` 的父目录,短篇为 `正文.md` 所在目录)。读该书 `设定/文风.md`;短篇同时读 `设定.md` 的文风约定。无文件就继续,不创建占位文件、不猜其他书。文风无最低字数限制,一句可执行的偏好也有效;空白、纯标题、待补充不算。
16
- 2. `_文风摘要.md` 只能辅助定位,不能独立替代全文。当前会话已读全文时无需反复读;摘要与全文不一致用全文,不让旧摘要压过作者的新修改。
17
- 3. 作者记忆 query 显式传当前书名、已知题材和流程以及需要的 kind,避免只取到 global。只用 active;同一维度窄范围覆盖宽范围,不拼成同时满足的清单。无法判定的同范围冲突才问作者,已能按优先级解决的不询问。
18
- 4. 在现有 prompt 填 `style_resolution`:本次生效的表达要求及来源、被覆盖的默认条款、必须保留的事实/信息边界;只列与任务有关的冲突,无冲突可写“按本书文风”。原样传给正文、去味和文字 reviewer,并传文风全文路径。同一批次复用,当前请求或文风变动时更新。单独调用去味/审稿也执行本步骤,不能靠上一次会话的记忆。
15
+ 1. 从本次正文路径确定书目录(长篇为 `正文/` 的父目录,短篇为 `正文.md` 所在目录)。读该书 `设定/文风.md`;短篇同时读 `设定.md` 的文风约定。无文件就继续,不建占位文件、不猜其他书。文风无最低字数限制,一句可执行的偏好也有效;空白、纯标题、待补充不算。
16
+ 2. `_文风摘要.md` 只辅助定位,不替代全文。当前会话已读全文时无需反复读;摘要与全文不一致用全文,不让旧摘要压过作者的新修改。
17
+ 3. 有作者记忆时 query,显式传当前书名、已知题材和流程以及需要的 kind,避免只取到 global;没有就跳过。只用 active;同一维度窄范围覆盖宽范围,不拼成同时满足的清单。无法判定的同范围冲突才问作者,已能按优先级解决的不询问。
18
+ 4. 在现有 prompt 填 `style_resolution`:本次生效的表达要求及来源、被覆盖的默认条款、必须保留的事实/信息边界;只列与任务有关的冲突,无冲突可写“按本书文风”。原样传给正文、去味和文字 reviewer,并传文风全文路径。同批复用,当前请求或文风变动时更新。单独调用去味/审稿也执行本步骤,不靠上次会话的记忆。
19
19
 
20
20
  ## 检测器如何服从裁决
21
21
 
@@ -13,7 +13,7 @@
13
13
  | 番茄短篇 | 流畅第一/第三人称,目标清晰、金手指直白 | 顺滑无毒点,反派挑衅一两节内转成主角升级/发财的垫脚石 | 开新地图 / 拿到新底牌 / 新人物带资源登场 | 圆满畅快,事业感情双收,坏人受罚 |
14
14
 
15
15
  - 小程序收稿量最大,打脸爽文是主力盘;同一个脑洞可以分别按知乎/小程序/番茄各跑一版,挑最顺的投。
16
- - 基调只调"声音和落点",不覆盖题材招式和本篇情绪目标。基调是投放渠道的声音,与 `short-format.md` 的排版模板是两个轴——小程序基调的稿,排版仍按 short-format 选一套 app 模板。
16
+ - 基调只调"声音和落点",不覆盖题材招式和本篇目标情绪。基调是投放渠道的声音,与 `short-format.md` 的排版模板是两个轴——小程序基调的稿,排版仍按 short-format 选一套 app 模板。
17
17
  - **调基调不松去 AI 底线**:强情绪靠具体动作和对白落地,别把话硬拆成三字碎句成片排列;前情背景靠场景带出,别整段插叙成"来龙去脉"说明书;对仗句式("上辈子…这辈子…")别高频复用。去 AI 味仍按本套件既有规则。
18
18
 
19
19
  ## 二、导语(投稿门面,单独打磨)
@@ -14,10 +14,10 @@
14
14
 
15
15
  ### 人设模板
16
16
 
17
- 填写以下模板,写入设定.md:
17
+ 填写以下模板,写进 设定.md「Phase 2 设计校验」块,替换“反派设计:不适用”那一行(一字段一行):
18
18
 
19
19
  ```
20
- 反派:
20
+ 反派设计:
21
21
  - 身份:{与主角的关系}
22
22
  - 动机:{自洽的作恶逻辑:贪婪/嫉妒/控制欲/报复/自保}
23
23
  - 作恶方式:{具体手段:言语打压/经济控制/社交孤立/人身伤害/法律构陷}
@@ -146,13 +146,8 @@
146
146
 
147
147
  ## 4. 反转有效性自检(Phase 2 使用)
148
148
 
149
- 写完 outline 后,用这个自检确认反转真的能反转读者:
150
-
151
- | 检查项 | 通过标准 | 不通过 = 需要 |
152
- |--------|---------|-------------|
153
- | 读者知道真相的时机 | >60% 合理;50-60% 灰区需审视反转力度;<50% 不算反转(三档口径详见 writing-workflow.md「反转信息差验证」) | 调整线索释放节奏,延后真相揭露 |
154
- | 是否有误导假线索 | ≥ 1 条读者会信的假线索 | 加入红鲱鱼或选择性叙述误导 |
155
- | 真相线索隐蔽度 | 回看能找到但正读时会忽略 | 线索藏在日常细节中,不用强调语气 |
156
- | 角色知道 vs 读者知道 | 反转前读者和角色至少有一方不知道真相 | 制造信息差:读者不知道 / 角色不知道 / 双方都不知道 |
149
+ 写完 outline 后按 writing-workflow.md「反转信息差验证」逐项过:揭示时机按功能定(误判先参与至少一次重要决定),百分比只记录、不当阈值。本文件只补两条:
150
+ - 反转前读者和角色至少有一方不知道真相;没有就制造信息差(读者不知道 / 角色不知道 / 双方都不知道)。
151
+ - 假线索用红鲱鱼或选择性叙述;真相线索藏在日常细节里,回看能找到、正读会忽略,不用强调语气。
157
152
 
158
153
  **失败模式**:「延迟揭露」不算反转。读者在第 2 节就知道真相,后面 10 节只等角色追上来 = 延迟揭露,读者会无聊。真正的反转发生在揭示那一刻,让读者和角色一起震惊。
@@ -2,7 +2,7 @@
2
2
 
3
3
  #### Agent 调用:story-architect
4
4
 
5
- 构思阶段,如果项目已部署 story-architect agent(查找顺序见 [SKILL.md](../SKILL.md)),可 spawn `Agent(subagent_type: "story-architect", prompt: "项目目录:{dir}\n任务类型:短篇构思\n查询参数:{情绪目标+题材方向}")` 辅助框架设计。如 agent 不可用,由主线程直接执行。
5
+ 已部署 story-architect 时可 spawn `Agent(subagent_type: "story-architect", prompt: "项目目录:{dir}\n任务类型:短篇构思\n查询参数:{目标情绪+题材方向}")` 辅助框架设计;不可用由主会话直接执行。
6
6
 
7
7
  帮用户确定短篇的核心框架:
8
8
 
@@ -13,7 +13,8 @@
13
13
  - 标题(暂定):{}
14
14
  - 目标字数:{} 字(短篇通常 8000-20000 字)
15
15
  - 目标平台:{知乎盐选 / 小程序 / 番茄短篇}(三选一)
16
- - 情绪目标:{读者读完的感受}
16
+ - 平台基调:{按 submission-craft.md 平台表记下视角、矛盾烈度、章末钩子、结局质感;小节标记与引号按 short-craft.md 第 4 节}
17
+ - 目标情绪:{读者读完的感受}
17
18
 
18
19
  ### 一句话梗概
19
20
  {主角 + 困境 + 反转 + 情绪落点}
@@ -31,9 +32,15 @@
31
32
  - 反转高潮不要骤降:反转前 1 节开始升温,反转节达到峰值,反转后 1 节维持峰值不骤降
32
33
 
33
34
  ### 人设速写
34
- - 主角:{一句话人设}
35
- - 关键角色:{一句话人设}
35
+ - {角色}:{一句话人设};声线:{};口头禅:{};禁忌:{}(每人一行)
36
36
  - 关系:{他们之间的关系}
37
+
38
+ ### 题材招式
39
+ - {招式名}:{本篇怎么用、落在哪几节}(2-3 条,与校验区核心招式一致)
40
+ - 冷门题材另记:{所用公式、情绪节拍、必选场景、规则要点}
41
+
42
+ ### 作者已定
43
+ - {作者在对话里定下的人称、偏好、红线,一条一行;否掉的方案也记一行,写明为什么不要}
37
44
  ```
38
45
 
39
46
  框架确定后,完成设计任务,然后在工作目录下创建文件。
@@ -42,10 +49,10 @@
42
49
 
43
50
  详细步骤和模板见 `references/writing-workflow.md`。构思时从目标情绪反推剧情,不是从灵感正向构建。按顺序完成:
44
51
 
45
- 1. 定平台基调 + 加载题材风格包 → 先读 `references/submission-craft.md` 定投稿平台(知乎/小程序/番茄),正文视角、矛盾烈度、章末落点随之切换;再读 `references/genre-styles/{题材}.md`(核心 10 题材)+ 通用底座 `references/short-craft.md`,从招式库选 2-3 个核心招式(如追妻的白月光触发链 / 信物翻转 / 火葬场预告),写入 设定.md「题材招式」区,全程照此招式与腔调写
52
+ 1. 定平台基调 + 加载题材风格包 → 先读 `references/submission-craft.md` 定投稿平台(知乎/小程序/番茄),正文视角、矛盾烈度、章末落点随之切换;再读 `references/genre-styles/{题材}.md`(核心 10 题材)+ 通用底座 `references/short-craft.md`,从招式库选 2-3 个核心招式(如追妻的白月光触发链 / 信物翻转 / 火葬场预告),写入 设定.md「题材招式」区,全程照此招式与腔调写;冷门题材把所用公式要点按模板一并写进该区,写正文与精修不再重读公式全文
46
53
  2. 设计反派(如有)→ 加载 `villain-and-reveal.md`
47
54
  3. 确定揭露方式 → 同上
48
- 4. 编写 小节大纲.md(格式见 writing-workflow.md):短篇只做轻量蓝图,每节包含结构段/五段功能、人物/关系或其他状态变化、因果/逻辑链、结尾承接/钩子,不套长篇完整章节蓝图。**标出付费点卡在哪一节末**(见 `submission-craft.md`「付费点」:用未完成动作、身份/证据变化或两难选择形成真实断点);用反推法先想透付费点那一节,再倒排前后。每节可选一个任务卡点,但必须服务情绪升级、证据推进、关系撕裂、反转铺垫或反击动作;没有就不强补
55
+ 4. 编写 小节大纲.md(12 列表格见 writing-workflow.md,只做轻量蓝图)。**标出付费点卡在哪一节末**(见 `submission-craft.md`「付费点」:用未完成动作、身份/证据变化或两难选择形成真实断点);用反推法先想透付费点那一节,再倒排前后。每节可选一个任务卡点,但必须服务情绪升级、证据推进、关系撕裂、反转铺垫或反击动作;没有就不强补
49
56
  5. 反转信息差验证(公式见 writing-workflow.md)
50
57
  6. 伏笔回查清单(标准见 writing-workflow.md)
51
58
 
@@ -61,7 +68,11 @@
61
68
  - 付费点:第 {N} 节末
62
69
  ```
63
70
 
64
- 有反派时用 `villain-and-reveal.md` 的身份、动机、作恶方式、致命弱点、报应五字段替换“不适用”。`short-reversal.md` 判断确属无反转题材时,写 `反转类型:无反转` 和 `反转位置:不适用({报应兑现/甜度递进等原因})`,不要硬编节号。`小节大纲.md` 必须使用 `writing-workflow.md` 规定的固定 12 列 Markdown 表格,并在对应节末明确标出“付费点”。
71
+ 有反派时按 `villain-and-reveal.md` 人设模板,在本块内把“不适用”换成身份、动机、作恶方式、致命弱点、报应五行(一字段一行)。`short-reversal.md` 判断确属无反转题材时,写 `反转类型:无反转` 和 `反转位置:不适用({报应兑现/甜度递进等原因})`,不要硬编节号。付费点写进 `小节大纲.md` 对应节的“结尾承接/钩子”单元格。
72
+
73
+ #### Agent 调用:character-designer
74
+
75
+ 设计任务完成后、跑完成门禁前,已部署 character-designer 时可 spawn `Agent(subagent_type: "character-designer", prompt: "项目目录:{dir}\n任务类型:角色设定\n查询参数:{人设速写+关系}")` 辅助角色设定和语言风格档案;不可用由主会话直接执行。结果压成每人一行(声线、口头禅、禁忌)写进 设定.md「人设速写」,写正文只读这里。
65
76
 
66
77
  #### Phase 2 完成门禁
67
78
 
@@ -69,9 +80,6 @@
69
80
 
70
81
  - exit 0:Phase 2 机械契约通过,才可进入下一阶段;这不替代故事质量判断
71
82
  - exit 1:只把 `repair_scope` 中的检查 ID、证据、期望、reference 路径和修复范围交给本轮 writer;只改失败字段,再运行同一命令
72
- - 最多做 2 轮定向 repair;仍失败则停止并报告剩余检查 ID,不得声称 Phase 2 已完成
73
- - exit 2、脚本缺失或不可执行:报告 verifier 不可用,不得用泛化“自检”替代后继续
74
-
75
- #### Agent 调用:character-designer
76
-
77
- 设计任务完成后,如果项目已部署 character-designer agent(查找顺序见 [SKILL.md](../SKILL.md)),可 spawn `Agent(subagent_type: "character-designer", prompt: "项目目录:{dir}\n任务类型:角色设定\n查询参数:{人设速写+关系}")` 辅助角色设定和语言风格档案。如 agent 不可用,由主线程直接执行。
83
+ - 最多做 2 轮定向 repair;仍失败则停止,用中文告诉作者设计还缺什么,不得声称 Phase 2 已完成
84
+ - exit 2、脚本缺失或不可执行:告诉作者自动检查没跑成,不得用泛化“自检”替代后继续
85
+ - 向作者汇报构思只讲故事(梗概、反转、付费点在第几节)和待拍板的问题(附推荐默认),不提脚本、检查 ID、字段或表格列数;作者拍板的改动先写回两份文件并重跑本门禁,汇报末尾按 SKILL.md「写前必读」建议新开对话写正文
@@ -0,0 +1,116 @@
1
+ # Phase 3:短篇逐场景写作
2
+
3
+ 本文件中的 `scripts/` 与 `references/` 路径均相对本 skill 根目录。
4
+
5
+ **格式规范(最高优先级)**:正文只存 `正文.md`,主会话与写手同一套格式:段间只允许一个换行符、不留空行,小节标记与引号全篇统一,按 `设定.md`「平台基调」,没写才查 `short-format.md` 平台覆盖表;子代理输出不一致时按此重排。
6
+
7
+ **构思收口先验**:写前先跑 `node {skill 根}/scripts/check-phase2-contract.js --json {短篇目录}`;不是 exit 0 就告诉作者构思还没收口、请回到构思补完,不自己重读构思方法论补写。
8
+
9
+ **本时刻只靠落盘文件接上构思**:`设定.md`(核心框架、作者已定、平台基调、题材招式、反转铺垫、贯穿道具、反派与揭露方式、对标摘要)与 `小节大纲.md` 为 Phase 2 产出,`正文.md` 为本阶段产出。反转、反派、揭露、付费点与平台基调以两份设计文件为准,不重读构思方法论(workflow-design、writing-workflow、short-reversal、submission-craft、villain-and-reveal、冷门题材公式全文);作者在对话里改过、设计文件还没写的,先写回 `设定.md` 再动笔。
10
+
11
+ **导入项目续写基线**:`设定.md` 存在「本书续写基线」时先读取,作为已写内容的内部连续性与既有写法约束;它不是对标摘要,不参与主/副对标排序,也不复制到 `对标/`。
12
+
13
+ > 术语说明:Phase 3 按「段」划分叙事结构(开头段/铺垫段/升级段/反转段/结尾段),每段包含若干「小节」(数字编号的 beat)。「场景」指写作时的具体画面。
14
+
15
+ **写前加载**:`short-format.md`(正文格式)、`short-craft.md`(通用底座)、[scene-craft.md](scene-craft.md)(场景写法)、`设定.md` 题材参考里的那一个 `genre-styles/{题材}.md`(冷门题材不读公式,按「题材招式」区记下的要点写,腔调按 `short-craft.md`);写羁绊铺设或余韵收尾时按需读 `emotional-methods.md` 对应一斧。`short-deslop.md` 到 Phase 4 去味时再读,写作中的 AI 腔由完成门槛的检测器兜底。
16
+
17
+ **交付参数先锁定**:用户明确的字数范围优先,逐字取其最小值/最大值与节数;只给单一目标时用目标的 95%-105%;都未给时用 8000-20000 字和大纲节数。后文的默认字数不得覆盖用户范围。
18
+
19
+ **写前参数验收(锁定后、写 `正文.md` 前必跑)**:`node {skill 根}/scripts/check-delivery-contract.js --json --check-contract --min-chars {MIN} --max-chars {MAX} --sections {N} [--min-section-chars {用户逐节下限}] {短篇目录}`。exit 0 只说明参数能同时满足,不算交付;exit 2 即冲突,停在写前,用中文告诉用户字数范围与节数哪里对不上,请其选择调整项,不代改用户约束。
20
+
21
+ **写前准备**(每个场景写前执行 2 步,是核心方法的落地:确认目标情绪 → 召回技法模块):
22
+ - **步骤 1:记忆+召回**:① 本场景目标情绪词?② 借鉴哪个参考文件的哪个技法?③ 具体用在哪个段落?答不出 → 先回读本时刻已加载的参考再动笔。有对标时从 `设定.md`「对标摘要」召回 1-2 个与本场景相关的技法,要细看再查主对标 `对标/{书}/写作手法.md`(没有就用 `拆文库/{书}/`)的对应条目,写入“拆文召回摘要”
23
+ - **多对标书时**:副对标只用「对标摘要」里构思时已登记的条目(正文阶段不新增召回),作为“副对标召回摘要”;正文只传摘要,不传副书文风或原文
24
+ - **步骤 2:指令确认**:用一句话概括本场景写作意图(情绪+技法+适配段落),并确认本场景是否有任务卡点、它卡出哪种情绪变化或新证据;没有就不强补。确认后开始写作
25
+
26
+ **写作指令**:写法按 `short-craft.md`(情绪直写与上下文支撑第 2 节、在场叙述第 3 节)与 `scene-craft.md`(三维度揉进与画面分段、疏密与主语节奏),段落与标点按 `short-format.md`,不照搬大纲腔。情绪烈度按 `设定.md` 与题材包的腔调,没写时默认宁烈不温(冲突前置、爽点具体、台词带刺);任务卡点必须直接加重羞辱、误会、背叛、证据、反击或心死节点,删掉无损就压缩。
27
+
28
+ #### 分批写与子代理
29
+
30
+ 正文写作阶段默认由主会话按 2-3 节/批分批写正文;主会话输出是短篇正文的标准形态,不要求单次 agent spawn 完成 8000+ 字全文。
31
+
32
+ - 每批写完后更新短篇目录下 `.story/work/已写小节摘要.md`(3-5 条:已揭示信息、情绪位置、未回收伏笔、下一批衔接句),换对话靠它接上,交付后可删。
33
+ - 下一批先读该摘要和 `正文.md` 尾部 300-500 字再续写。
34
+ - 只有用户明确要求子代理、主会话上下文不足,或需要隔离试写时,才检查 narrative-writer agent(查找顺序见顶部),可用时按 [agent-calls.md](agent-calls.md)「写正文」派出。
35
+ - 无论谁写,写入 `正文.md` 前都按同一格式规范重排,保证主会话与子代理输出一致。
36
+
37
+ ⚠️ **硬约束只作用于整篇交付范围,不设统一逐节最低字数或行数**。
38
+ 写完每批后去掉 `--check-contract` 重跑上面命令,取其非空白字符数作整篇累计值(未写完 exit 1 属正常),各节分布按 `short-format.md`「字数统计」;不自写 Python 计数。某节明显短于相邻节时,先核对批准情节点、可见动作和后果是否已经完整;完整就保留,缺失才补回原计划内容。不得为拉齐节长新增冲突、对话、回忆、配角反应或独立事件。整篇以锁定的用户交付范围为准;未给范围时才使用 8000-20000 字默认值。
39
+ **⚠️ 未进入锁定范围 = 正文未完成。禁止越界后结束;不足只扩已有情节点,超出只压重复解释,不借 repair 新增或删除关键剧情。**
40
+
41
+ **节数守恒**:正文节数必须等于小节大纲规划节数。不得合并多节为一节。如果写作中发现某节不需要独立存在,应回到大纲阶段调整,而非在写作时偷减。
42
+
43
+ 按以下结构分段写(占比仅参考,以小节大纲为准):
44
+
45
+ #### 第一段:开头(前 300-500 字)
46
+
47
+ **目标**:3 句话内抓住读者。**必须包含一个开篇钩子**(从下表或题材包「开篇范式」选类型)。
48
+
49
+ **先写导语**:正文开头先写一条 150-220 字导语(投稿门面,编辑第一眼看它)——四维骨架(起因+核心冲突+人设底色+情绪反转)配黄金三角(具体物件+信息差+留白钩子),一句一段(黑岩/盐言导语形态;番茄导语按 short-format.md 短段叙织)——完整句各自独立成段,不是拆成三字碎句。它就是正文开头的头几段,写好顺势往下接、不重写,所以首句同样守下面的开头零环境和前 100 字事件密度≥3(首句是事件/动作/信息炸弹,不是背景或弧线概括),剧透钩子放导语后半;不平铺背景或抒情,底牌不全亮(留给正文兑现),不只写惨不写后手。
50
+
51
+ **开头零环境规则**(默认适用;悬疑、惊悚、灾难、强氛围题材可例外):
52
+ - 前 3 句禁止出现无事件承载的环境描写(灯光、天气、气味、温度、装修)
53
+ - 前 3 句必须是:事件 / 对话 / 动作 / 信息炸弹,四种之一
54
+ - 任务卡点可以作为动作/事件钩子,但必须立刻带出赌注或矛盾,不能先写流程再解释意义
55
+ - 环境细节只能揉进角色的动作和感知中自然带出,不能独立成句;例外题材中,环境也必须携带威胁、异常或信息差
56
+ - 检查方法:标出前 3 句的主语,如果主语是环境物件(灯光/走廊/房间/天气),重写
57
+
58
+ 开头技巧:
59
+
60
+ | 技巧 | 说明 | 示例 |
61
+ |------|------|------|
62
+ | 冲突前置 | 第一句就是矛盾 | 「离婚协议放在桌上,他已经签了。」 |
63
+ | 信息差钩 | 给读者一个角色不知道的信息 | 「她不知道,对面那个男人已经在计划第三次了。」 |
64
+ | 反常行为 | 用一个不合常理的行为引起好奇 | 「她把订婚戒指冲进了马桶。」 |
65
+ | 重生反常 | 重生后做前世绝不会做的事 | 「沈栀心念成灰,支着一口气找到了媒婆:郭家的那个天阉,我来嫁。」 |
66
+ | 超自然身份 | 开篇揭示非人类身份 | 「我是世上仅存的红衣厉鬼。我不知自己是怎么死的。」 |
67
+ | 灵魂旁观 | 以灵魂视角描述死亡现场 | 「我的尸体躺在透明棺材里,三个哥哥在外面笑着说:她演得真像。」 |
68
+ | 悬念句 | 抛出一个需要解释的事实 | 「我死后的第三天,老公发了一条朋友圈。」 |
69
+ | 替嫁被弃 | 被迫接受不公正的命运 | 「三个月后,我代替皇后的嫡亲公主坐上了去漠北和亲的轿撵。」 |
70
+ | 代入式提问 | 直接让读者产生共鸣 | 「你有没有在深夜接到过一个不该接的电话?」 |
71
+
72
+ #### 第二段:铺垫(占全文 30-40%)
73
+
74
+ - 用物件/数字/习惯建立羁绊(详见 emotional-methods.md「羁绊铺设」)
75
+ - 埋入至少 3 个反转线索,分散在不同小节
76
+ - 在会改变读者预期、行动方向或关系判断的位置埋钩;连续多个小节只有提问没有局部兑现时再调整,不按固定节数填格(按小节大纲「结尾承接/钩子」列落地)
77
+ - 小节用数字分割,每小节推进一个情节点
78
+ - 情绪强度逐节递增,不允许连续 2 节无情绪变化
79
+ - **贯穿道具(设定.md 有才写)第 1 次出现必须在此段完成**
80
+ - **反派作恶按阶梯递增**(小恶→中恶,按 `设定.md` 反派设计)
81
+
82
+ #### 第三段:升级(占全文 20-30%)
83
+
84
+ - 冲突必须比上一段升级(强度/范围/代价至少一个维度上升)
85
+ - 插入倒计时钩子或代价钩子制造紧迫感
86
+ - 随风险和选择升级提高牵引强度;用新证据、代价、误判修正或局部反击推动,不按固定节数另塞钩子(按题材包)
87
+ - 埋入误导信息,让读者猜错反转方向
88
+ - **数字/金额递增作为叙事工具**(具体数字替代模糊描述,见各 genre-styles 招式库「数字承重」)
89
+ - **场景引擎有变化**:行动、对话、证据、任务、等待、空间压力与关系选择按因果需要切换;不为动静交替补无功能小动作
90
+
91
+ #### 第四段:反转(占全文 10-15%)
92
+
93
+ - 反转在一节内完成揭示,不拖延
94
+ - 揭示后确保前面铺垫的线索可被回溯(读者能找到「原来如此」的伏笔)
95
+ - 反转节的情绪冲击强度必须 > 前面所有节的最高值
96
+ - **按 `设定.md` 选定的揭露方式揭露真相**(证物/证人/偷听/剥洋葱)
97
+ - **贯穿道具第 2 次出现必须在此段完成**(意义被颠覆)
98
+
99
+ #### 第五段:结尾(占全文 5-10%)
100
+
101
+ - 章末必须有钩子(悬念或余韵)
102
+ - 用安静细节收尾(一个物件、一个动作、一句短话),不写大段抒情
103
+ - 结尾方式见下表,参考 emotional-methods.md「余韵钝痛」
104
+ - **贯穿道具第 3 次出现(回扣暴击)**
105
+
106
+ 结尾类型:
107
+
108
+ | 类型 | 效果 | 适合情绪 |
109
+ |------|------|----------|
110
+ | 余韵式 | 不说完,让读者自己想 | 意难平 |
111
+ | 呼应式 | 首尾呼应,形成闭环 | 治愈、成长 |
112
+ | 开放式 | 留下悬念 | 细思极恐 |
113
+ | 反转再反转 | 结尾再来一个小反转 | 震惊 |
114
+ | 金句式 | 一句话点题 | 共鸣 |
115
+
116
+ 写作中及进入精修前,执行 [SKILL.md](../SKILL.md) Phase 3 的「小节完整性流程」与「完成门槛」。
@@ -0,0 +1,99 @@
1
+ # Phase 4:短篇精修打磨
2
+
3
+ 本文件中的 `scripts/` 与 `references/` 路径均相对本 skill 根目录。精修必读本文件与 `short-format.md`(格式快速检查、字数口径);新对话里精修也先读它。
4
+
5
+ Phase 3 写手只做内容覆盖与格式自检(该分工随写作 prompt 传入)。Phase 4 去味由一个执行者(下方 narrative-writer 或主会话)按 `references/short-deslop.md` 自检清单完成;一致性检查职责不变。S1/S2 与 blocking 必须修,S3 与 advisory 建议看,S4 仅提示。最终扫描与交付验收由主会话对落盘文件执行,修改后只复核改动、重跑受影响检查,不另开整轮去味。
6
+
7
+ 按文末「精修清单」完成检查。文件模式依次运行 `node scripts/check-ai-patterns.js --check --fail-on=blocking 正文.md`、`node scripts/check-outline-copy.js --outline 小节大纲.md 正文.md`、`node scripts/normalize-punctuation.js 正文.md`、`node scripts/check-degeneration.js --check 正文.md`,blocking 先改正文再复扫。照搬检测报出的誓词、关键原话等功能性台词保留,登记进 `小节大纲.md` 末尾「复沓锚句」再复检,其余现场重写。
8
+
9
+ 全部落盘后运行 `node scripts/check-delivery-contract.js --json --min-chars {MIN} --max-chars {MAX} --sections {N} {短篇目录}`。exit 0 才可交付;exit 1 只按 `repair_scope` 最小修复并重跑受影响的质量检查与本命令,最多 2 轮;仍失败则停止,按下方交付说明告诉作者哪项没达标、差多少。exit 2、脚本缺失或不可执行时不得声称交付契约通过。它只验字数、节数与排版。
10
+
11
+ #### Agent 调用:narrative-writer(去AI味)+ consistency-checker
12
+
13
+ 已部署对应 agent 时可派出:narrative-writer 去味的 prompt 见 [agent-calls.md](agent-calls.md)「精修去味」;一致性检查派 `Agent(subagent_type: "consistency-checker", prompt: "项目目录:{dir}\n检查范围:{正文文件}\n检查类型:事实冲突+伏笔断线+角色属性不一致")`。agent 不可用时主会话直接执行。
14
+
15
+ **正文洁净规则**:自检(字数、禁用词、格式)结果只在对话里说明,不落盘成文件,**绝对不能**附到正文末尾,正文不得出现 `<!-- 自检 -->` 等检查标记。
16
+
17
+ **交付说明(给作者看)**:只用大白话,按三块写:
18
+ 1. 写了什么:标题、一句话核心钩子或反转、总字数、几节。
19
+ 2. 要作者拍板的事:每件写成一句问题并附推荐默认(如「结尾要不要再留个小反转?默认不留」);没有就省略。
20
+ 3. 下一步可选:精修某段、去 AI 味、换平台改写等。
21
+
22
+ 自查结果只写一句(如「自查过字数、分节和常见 AI 腔,都过了」;没过就说哪项差多少)。不写脚本名、检查 ID、字段名、参数或大纲表格格式;助手降级、版本提示等执行细节只放最后一行「技术备注:」。
23
+
24
+ ## 精修清单与常见问题
25
+
26
+ ### 精修检查清单
27
+
28
+ ```
29
+ ## 精修清单
30
+
31
+ ### 开头
32
+ - [ ] 前 3 句话能抓住人?
33
+ - [ ] 没有无意义的背景介绍?
34
+ - [ ] 包含一个开篇钩子?
35
+
36
+ ### 情绪
37
+ - [ ] 情绪曲线是否有明确走向?
38
+ - [ ] 反转前的情绪铺垫够不够?
39
+ - [ ] 反转后的冲击够不够?
40
+
41
+ ### 反转
42
+ - [ ] 反转是否出乎意料?
43
+ - [ ] 反转是否合情合理(回看有铺垫)?
44
+ - [ ] 反转时机是否合适?
45
+
46
+ ### 节奏
47
+ - [ ] 有没有拖沓的部分?
48
+ - [ ] 每句话是否都有存在价值?
49
+ - [ ] 字数是否在目标范围内?
50
+
51
+ ### 格式
52
+ - [ ] 按 short-format.md 文末「写完每段快速检查」逐项过;另查有无连续超长大段
53
+
54
+ ### 钩子
55
+ - [ ] 钩子是否出现在读者预期、行动方向或关系判断发生变化的位置;有没有连续提问却不局部兑现?
56
+ - [ ] 章末是否有未完成动作、新信息、局部兑现、关系变化、余韵或明确下一步之一?
57
+
58
+ ### AI 腔
59
+ - [ ] 无禁止比喻:「命运的齿轮」「如潮水般」「仿佛春风」「心猛地一沉」「眼眶泛红」
60
+ - [ ] 重复的身体/情绪描写按功能取舍:无新增信息就删,不换部位或同义动作凑数
61
+ - [ ] 「像/好像/仿佛/如同」不成片堆叠;超过 10 处或检测器报比喻密度时逐处复核功能,有功能的留,不设硬上限、不机械全删
62
+ - [ ] 完整 AI 腔黑名单见 short-deslop.md
63
+
64
+ ### 技法
65
+ - [ ] 情绪落地:按 `short-craft.md` 第 2 节检查上下文支撑,保留准确直写,清理空泛与重复说明
66
+ - [ ] 信物(若用):意义翻转是否完整?(查设定.md追踪表,改了出现位置同步改表)
67
+ - [ ] 场景引擎:每节是否通过行动、证据、任务、对话、物件、等待或关系选择改变了至少一项状态?
68
+ - [ ] 开头密度:前 100 字事件 ≥ 3?
69
+
70
+ ### 结尾
71
+ - [ ] 结尾是否有余韵?
72
+ - [ ] 读者会不会想转发?
73
+ ```
74
+
75
+ ### 标点确定性收尾
76
+
77
+ 精修后对 `正文.md` 先运行 `node scripts/check-ai-patterns.js --check --fail-on=blocking 正文.md`。blocking 先改正文并复扫;advisory 只作读感提示,确属问题才改,功能性写法标 `[需复核]`。
78
+ 再运行 `node scripts/normalize-punctuation.js 正文.md`(默认 `--quote-mode keep`)清理无功能省略号、破折号、双连字符和独立分隔线;盐言「」不受影响。
79
+
80
+ ### 删减原则
81
+
82
+ 按 SKILL.md 执行规则 3 删掉不推动剧情、不铺垫反转、不推高情绪的对话、描写与心理活动;读者能猜到的缩短,重复表达的情绪合并。
83
+
84
+ ---
85
+
86
+ ## 常见问题与解决方案
87
+
88
+ | 问题 | 原因 | 解决方案 |
89
+ |------|------|----------|
90
+ | 开头不抓人 | 在做背景铺垫 | 直接从冲突开始 |
91
+ | 中间拖沓 | 信息密度太低 | 删减或合并场景 |
92
+ | 反转没力度 | 铺垫不够或太明显 | 增加误导线索 |
93
+ | 结尾无力 | 反转后还在补交代 | 篇幅按小节大纲;反转后只写兑现与余韵 |
94
+ | 全篇平淡 | 情绪曲线太平 | 加大情绪落差 |
95
+ | 感觉像流水账 | 缺乏情绪描写 | 加入人物内心感受 |
96
+
97
+ ### 冷门题材公式核对
98
+
99
+ 设定.md 的题材参考写的是 `genre-writing-formulas.md` 时,对照「题材招式」区记下的公式核对(不重读公式全文):情绪节拍不跳不乱,必选场景都出现,规则都落实,没混用不相关公式。牵引与开头按上方清单。