@oh-story/dsh 0.1.14 → 0.1.16

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 (533) hide show
  1. package/README.md +12 -10
  2. package/lib/drama/manifest.json +284 -364
  3. package/lib/drama/skills/short-drama/SKILL.md +13 -14
  4. package/lib/drama/skills/short-drama/agents/openai.yaml +1 -1
  5. package/lib/drama/skills/short-drama/references/audience-reveal.md +4 -4
  6. package/lib/drama/skills/short-drama/references/contract-and-ownership.md +2 -2
  7. package/lib/drama/skills/short-drama/references/creator-documents.md +12 -10
  8. package/lib/drama/skills/short-drama/references/creator-workflow.md +6 -5
  9. package/lib/drama/skills/short-drama/references/form-cards/Q/347/211/210/350/241/250/350/276/276.md +8 -8
  10. package/lib/drama/skills/short-drama/references/form-cards//344/272/214/347/273/264/345/212/250/346/200/201/346/274/253.md +5 -5
  11. package/lib/drama/skills/short-drama/references/form-cards//345/233/275/346/274/253/344/272/214/346/254/241/345/205/203.md +5 -6
  12. package/lib/drama/skills/short-drama/references/form-cards//345/256/236/346/213/215.md +6 -7
  13. package/lib/drama/skills/short-drama/references/form-cards//346/260/264/345/242/250/347/254/224/350/247/246.md +2 -3
  14. package/lib/drama/skills/short-drama/references/form-cards//351/243/216/346/240/274/345/214/226/344/270/211/347/273/264.md +6 -7
  15. package/lib/drama/skills/short-drama/references/knowhow-index.md +6 -7
  16. package/lib/drama/skills/short-drama/references/look-development.md +5 -7
  17. package/lib/drama/skills/short-drama/references/pickup-and-alternate.md +6 -3
  18. package/lib/drama/skills/short-drama/references/production-form-profiles.md +14 -16
  19. package/lib/drama/skills/short-drama/references/reference-roles.md +5 -3
  20. package/lib/drama/skills/short-drama/references/runtime-preflight.md +2 -1
  21. package/lib/drama/skills/short-drama-assets/SKILL.md +8 -8
  22. package/lib/drama/skills/short-drama-assets/agents/openai.yaml +1 -1
  23. package/lib/drama/skills/short-drama-assets/references/asset-review-checklist.md +26 -27
  24. package/lib/drama/skills/short-drama-assets/references/character-and-look.md +22 -22
  25. package/lib/drama/skills/short-drama-assets/references/continuity-delta.md +4 -4
  26. package/lib/drama/skills/short-drama-assets/references/continuity-lock.md +4 -4
  27. package/lib/drama/skills/short-drama-assets/references/era-anchors.md +3 -3
  28. package/lib/drama/skills/short-drama-assets/references/identity-vs-variant.md +5 -5
  29. package/lib/drama/skills/short-drama-assets/references/location-and-view.md +6 -7
  30. package/lib/drama/skills/short-drama-assets/references/occurrence-extraction.md +8 -9
  31. package/lib/drama/skills/short-drama-assets/references/prop-and-state.md +8 -11
  32. package/lib/drama/skills/short-drama-assets/references/voice-direction.md +22 -22
  33. package/lib/drama/skills/short-drama-develop/SKILL.md +6 -6
  34. package/lib/drama/skills/short-drama-develop/agents/openai.yaml +1 -1
  35. package/lib/drama/skills/short-drama-develop/assets/creative-brief.md +2 -2
  36. package/lib/drama/skills/short-drama-develop/assets/story-engine.md +2 -2
  37. package/lib/drama/skills/short-drama-develop/references/adaptation-craft.md +13 -12
  38. package/lib/drama/skills/short-drama-develop/references/creative-reference-intake.md +7 -7
  39. package/lib/drama/skills/short-drama-develop/references/director-brief-craft.md +7 -8
  40. package/lib/drama/skills/short-drama-develop/references/episode-design.md +20 -24
  41. package/lib/drama/skills/short-drama-develop/references/genre-and-hook-playbook.md +7 -7
  42. package/lib/drama/skills/short-drama-develop/references/genre-cards//344/272/262/345/255/220/351/232/220/347/247/230.md +4 -5
  43. package/lib/drama/skills/short-drama-develop/references/genre-cards//344/273/231/344/276/240/344/277/256/347/234/237.md +2 -2
  44. package/lib/drama/skills/short-drama-develop/references/genre-cards//345/212/250/344/275/234/344/273/273/345/212/241.md +1 -1
  45. package/lib/drama/skills/short-drama-develop/references/genre-cards//345/217/244/350/243/205/346/235/203/350/260/213.md +2 -2
  46. 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
  47. package/lib/drama/skills/short-drama-develop/references/genre-cards//345/256/266/345/272/255/345/205/263/347/263/273.md +1 -1
  48. package/lib/drama/skills/short-drama-develop/references/genre-cards//346/202/254/347/226/221/350/247/204/345/210/231.md +1 -1
  49. package/lib/drama/skills/short-drama-develop/references/genre-cards//347/224/237/346/264/273/346/265/201.md +1 -1
  50. package/lib/drama/skills/short-drama-develop/references/genre-cards//347/240/264/351/225/234/351/207/215/345/234/206.md +4 -5
  51. package/lib/drama/skills/short-drama-develop/references/genre-cards//350/261/252/351/227/250/345/251/232/346/201/213.md +1 -1
  52. package/lib/drama/skills/short-drama-develop/references/genre-cards//350/272/253/344/273/275/351/224/231/344/275/215.md +1 -1
  53. package/lib/drama/skills/short-drama-develop/references/genre-cards//351/200/206/350/242/255.md +1 -1
  54. package/lib/drama/skills/short-drama-develop/references/genre-cards//351/207/215/347/224/237/347/251/277/350/266/212.md +2 -2
  55. package/lib/drama/skills/short-drama-develop/references/genre-cards.md +4 -4
  56. package/lib/drama/skills/short-drama-develop/references/mechanism-loop.md +6 -7
  57. package/lib/drama/skills/short-drama-develop/references/multi-episode-intake.md +19 -17
  58. package/lib/drama/skills/short-drama-develop/references/premise-devices.md +5 -5
  59. package/lib/drama/skills/short-drama-develop/references/reveal-reversal-payoff.md +6 -5
  60. package/lib/drama/skills/short-drama-develop/references/serial-character-and-memory.md +3 -4
  61. package/lib/drama/skills/short-drama-develop/references/stage-contract.md +7 -9
  62. package/lib/drama/skills/short-drama-develop/references/story-craft.md +8 -10
  63. package/lib/drama/skills/short-drama-edit/SKILL.md +11 -14
  64. package/lib/drama/skills/short-drama-edit/assets/remotion/README.md +12 -19
  65. package/lib/drama/skills/short-drama-edit/assets//345/211/252/350/276/221/345/215/225.md +2 -2
  66. package/lib/drama/skills/short-drama-edit/references/cut-craft.md +5 -4
  67. package/lib/drama/skills/short-drama-edit/references/generated-footage.md +1 -1
  68. package/lib/drama/skills/short-drama-edit/references/sound-and-subtitles.md +6 -4
  69. package/lib/drama/skills/short-drama-edit/references/stage-contract.md +5 -5
  70. package/lib/drama/skills/short-drama-edit/references/still-cuts.md +1 -1
  71. package/lib/drama/skills/short-drama-image-prompts/SKILL.md +7 -2
  72. package/lib/drama/skills/short-drama-image-prompts/agents/openai.yaml +1 -1
  73. package/lib/drama/skills/short-drama-image-prompts/references/character-and-look.md +4 -5
  74. package/lib/drama/skills/short-drama-image-prompts/references/common-recipe.md +17 -17
  75. package/lib/drama/skills/short-drama-image-prompts/references/edit-and-revision.md +10 -9
  76. package/lib/drama/skills/short-drama-image-prompts/references/location-plate.md +11 -12
  77. package/lib/drama/skills/short-drama-image-prompts/references/look-and-state-variant.md +6 -5
  78. package/lib/drama/skills/short-drama-image-prompts/references/lookdev-frame.md +2 -2
  79. package/lib/drama/skills/short-drama-image-prompts/references/production-sheet-recipes.md +6 -6
  80. package/lib/drama/skills/short-drama-image-prompts/references/prop-plate.md +8 -8
  81. package/lib/drama/skills/short-drama-image-prompts/references/review-and-fixtures.md +5 -4
  82. package/lib/drama/skills/short-drama-novel-analyze/SKILL.md +17 -24
  83. package/lib/drama/skills/short-drama-novel-analyze/references/adaptation-triage.md +3 -4
  84. package/lib/drama/skills/short-drama-novel-analyze/references/adaptation-value.md +5 -10
  85. package/lib/drama/skills/short-drama-novel-analyze/references/aggregation-and-entities.md +4 -6
  86. package/lib/drama/skills/short-drama-novel-analyze/references/chapter-extraction.md +9 -13
  87. package/lib/drama/skills/short-drama-novel-analyze/references/stage-contract.md +3 -7
  88. package/lib/drama/skills/short-drama-produce/SKILL.md +43 -42
  89. package/lib/drama/skills/short-drama-produce/agents/openai.yaml +1 -1
  90. package/lib/drama/skills/short-drama-produce/references/adapter-contract.md +31 -18
  91. package/lib/drama/skills/short-drama-produce/references/providers/gpt-image-2.md +1 -1
  92. package/lib/drama/skills/short-drama-produce/references/providers/minimax-h3-video.md +11 -6
  93. package/lib/drama/skills/short-drama-produce/references/providers/minimax-music.md +2 -2
  94. package/lib/drama/skills/short-drama-produce/references/providers/minimax-speech.md +7 -5
  95. package/lib/drama/skills/short-drama-produce/references/providers/seedance.md +14 -8
  96. package/lib/drama/skills/short-drama-review/SKILL.md +9 -9
  97. package/lib/drama/skills/short-drama-review/agents/openai.yaml +1 -1
  98. package/lib/drama/skills/short-drama-review/references/anti-template-repair.md +10 -11
  99. package/lib/drama/skills/short-drama-review/references/production-quality-gates.md +24 -23
  100. package/lib/drama/skills/short-drama-review/references/project-calibration.md +17 -16
  101. package/lib/drama/skills/short-drama-review/references/review-method.md +8 -6
  102. package/lib/drama/skills/short-drama-review/references/rubric-assets-prompts.md +7 -6
  103. package/lib/drama/skills/short-drama-review/references/rubric-source-analysis.md +17 -10
  104. package/lib/drama/skills/short-drama-review/references/rubric-story-script.md +29 -25
  105. package/lib/drama/skills/short-drama-review/references/rubric-visual-motion.md +11 -11
  106. package/lib/drama/skills/short-drama-review/references/stage-contract.md +3 -2
  107. package/lib/drama/skills/short-drama-storyboard/SKILL.md +8 -10
  108. package/lib/drama/skills/short-drama-storyboard/agents/openai.yaml +1 -1
  109. package/lib/drama/skills/short-drama-storyboard/references/blocking-playbooks.md +8 -11
  110. package/lib/drama/skills/short-drama-storyboard/references/comic-keyframe-lexicon.md +11 -12
  111. package/lib/drama/skills/short-drama-storyboard/references/coverage-audition.md +4 -5
  112. package/lib/drama/skills/short-drama-storyboard/references/keyframe-craft.md +19 -24
  113. package/lib/drama/skills/short-drama-storyboard/references/lighting-craft.md +1 -1
  114. package/lib/drama/skills/short-drama-storyboard/references/production-shot-grammar.md +26 -29
  115. package/lib/drama/skills/short-drama-storyboard/references/review-and-fixtures.md +6 -5
  116. package/lib/drama/skills/short-drama-storyboard/references/scene-visual-plan.md +2 -2
  117. package/lib/drama/skills/short-drama-storyboard/references/screenplay-to-keyframe-example.md +4 -4
  118. package/lib/drama/skills/short-drama-storyboard/references/shot-craft.md +8 -8
  119. package/lib/drama/skills/short-drama-storyboard/references/shot-revision-identity.md +3 -3
  120. package/lib/drama/skills/short-drama-video-prompts/SKILL.md +10 -7
  121. package/lib/drama/skills/short-drama-video-prompts/agents/openai.yaml +1 -1
  122. package/lib/drama/skills/short-drama-video-prompts/references/camera-audio-continuity.md +63 -61
  123. package/lib/drama/skills/short-drama-video-prompts/references/delivery-profile.md +20 -18
  124. package/lib/drama/skills/short-drama-video-prompts/references/generability.md +12 -12
  125. package/lib/drama/skills/short-drama-video-prompts/references/minimax-h3.md +4 -3
  126. package/lib/drama/skills/short-drama-video-prompts/references/motion-recipe.md +38 -40
  127. package/lib/drama/skills/short-drama-video-prompts/references/performance-action-timing.md +36 -36
  128. package/lib/drama/skills/short-drama-video-prompts/references/production-prompt-grammar.md +17 -21
  129. package/lib/drama/skills/short-drama-video-prompts/references/review-and-fixtures.md +10 -11
  130. package/lib/drama/skills/short-drama-video-prompts/references/seedance-2.0.md +1 -1
  131. package/lib/drama/skills/short-drama-video-prompts/references/seedance-2.5.md +2 -2
  132. package/lib/drama/skills/short-drama-video-prompts/references/target-model-profile.md +6 -12
  133. package/lib/drama/skills/short-drama-video-prompts/references/wan-3.0.md +2 -1
  134. package/lib/drama/skills/short-drama-write/SKILL.md +15 -15
  135. package/lib/drama/skills/short-drama-write/agents/openai.yaml +1 -1
  136. package/lib/drama/skills/short-drama-write/assets/screenplay.md +3 -4
  137. package/lib/drama/skills/short-drama-write/references/dialogue-craft.md +20 -22
  138. package/lib/drama/skills/short-drama-write/references/production-format-dialect.md +20 -22
  139. package/lib/drama/skills/short-drama-write/references/scene-handoff-capsule.md +10 -10
  140. package/lib/drama/skills/short-drama-write/references/scene-sound-dramaturgy.md +11 -9
  141. package/lib/drama/skills/short-drama-write/references/screenplay-format.md +11 -10
  142. package/lib/drama/skills/short-drama-write/references/script-craft.md +41 -47
  143. package/lib/drama/skills/short-drama-write/references/stage-contract.md +7 -5
  144. package/lib/drama/skills/short-drama-write/references/substitutable-realization.md +19 -25
  145. package/lib/index.js +80 -17
  146. package/lib/index.js.map +3 -3
  147. package/lib/novel-to-game/README.md +8 -9
  148. package/lib/novel-to-game/README_ZH.md +12 -13
  149. package/lib/novel-to-game/manifest.json +19 -19
  150. package/lib/novel-to-game/skills/game-art-direction/SKILL.md +2 -2
  151. package/lib/novel-to-game/skills/game-build/SKILL.md +2 -0
  152. package/lib/novel-to-game/skills/game-concept/SKILL.md +1 -1
  153. package/lib/novel-to-game/skills/game-qa/references/test-design-method.md +1 -1
  154. package/lib/novel-to-game/skills/game-world-design/SKILL.md +1 -1
  155. package/lib/novel-to-game/skills/game-world-design/agents/openai.yaml +1 -1
  156. package/lib/novel-to-game/skills/novel-to-game/references/intake-method.md +4 -4
  157. package/lib/oh-story/manifest.json +676 -676
  158. package/lib/oh-story/roles/chapter-extractor.md +10 -10
  159. package/lib/oh-story/roles/character-designer.md +8 -24
  160. package/lib/oh-story/roles/consistency-checker.md +3 -5
  161. package/lib/oh-story/roles/narrative-writer.md +16 -16
  162. package/lib/oh-story/roles/story-architect.md +8 -11
  163. package/lib/oh-story/roles/story-explorer.md +7 -9
  164. package/lib/oh-story/roles/story-researcher.md +8 -8
  165. package/lib/oh-story/skills/browser-cdp/SKILL.md +19 -18
  166. package/lib/oh-story/skills/story/SKILL.md +15 -20
  167. package/lib/oh-story/skills/story/VERSION +1 -1
  168. package/lib/oh-story/skills/story-cover/SKILL.md +17 -26
  169. package/lib/oh-story/skills/story-cover/references/cover-styles.md +12 -10
  170. package/lib/oh-story/skills/story-deslop/SKILL.md +69 -211
  171. package/lib/oh-story/skills/story-deslop/references/agent-calls.md +17 -3
  172. package/lib/oh-story/skills/story-deslop/references/banned-words.md +63 -151
  173. package/lib/oh-story/skills/story-deslop/references/deslop-gates.md +23 -160
  174. package/lib/oh-story/skills/story-deslop/references/expression.md +76 -0
  175. package/lib/oh-story/skills/story-deslop/references/narrative-focus.md +63 -0
  176. package/lib/oh-story/skills/story-deslop/references/story-logic.md +65 -0
  177. package/lib/oh-story/skills/story-deslop/references/style-resolution.md +5 -5
  178. package/lib/oh-story/skills/story-import/SKILL.md +8 -13
  179. package/lib/oh-story/skills/story-import/references/character-state-reverse.md +9 -8
  180. package/lib/oh-story/skills/story-import/references/deep-analysis.md +5 -5
  181. package/lib/oh-story/skills/story-import/references/format-and-structure.md +11 -11
  182. package/lib/oh-story/skills/story-import/references/import-report.md +5 -5
  183. package/lib/oh-story/skills/story-import/references/import-special-cases.md +4 -4
  184. package/lib/oh-story/skills/story-import/references/import-tracking.md +5 -5
  185. package/lib/oh-story/skills/story-import/references/length-routing.md +12 -20
  186. package/lib/oh-story/skills/story-import/references/outline-reverse-rules.md +3 -3
  187. package/lib/oh-story/skills/story-import/references/outline-reverse.md +2 -2
  188. package/lib/oh-story/skills/story-import/references/state-tracking.md +5 -3
  189. package/lib/oh-story/skills/story-import/references/structure-mapping-long.md +13 -13
  190. package/lib/oh-story/skills/story-import/references/structure-mapping-short.md +10 -14
  191. package/lib/oh-story/skills/story-import/references/tracking-initialization.md +2 -2
  192. package/lib/oh-story/skills/story-import/references/tracking-transaction.md +2 -2
  193. package/lib/oh-story/skills/story-long-analyze/SKILL.md +8 -8
  194. package/lib/oh-story/skills/story-long-analyze/references/author-facing.md +9 -9
  195. package/lib/oh-story/skills/story-long-analyze/references/deconstruction-notes.md +22 -22
  196. package/lib/oh-story/skills/story-long-analyze/references/final-checks.md +5 -4
  197. package/lib/oh-story/skills/story-long-analyze/references/index-rebuild.md +9 -3
  198. package/lib/oh-story/skills/story-long-analyze/references/inspiration-library.md +7 -7
  199. package/lib/oh-story/skills/story-long-analyze/references/pipeline-ops.md +8 -9
  200. package/lib/oh-story/skills/story-long-analyze/references/semantic-acceptance-fixtures.md +2 -2
  201. package/lib/oh-story/skills/story-long-analyze/references/stage1-golden-chapters.md +8 -8
  202. package/lib/oh-story/skills/story-long-analyze/references/stage2-extraction.md +9 -9
  203. package/lib/oh-story/skills/story-long-analyze/references/stage3-plot-rhythm.md +15 -15
  204. package/lib/oh-story/skills/story-long-analyze/references/stage4-characters-settings.md +17 -15
  205. package/lib/oh-story/skills/story-long-analyze/references/stage5-report.md +8 -6
  206. package/lib/oh-story/skills/story-long-analyze/references/style-profile-generator.md +19 -16
  207. package/lib/oh-story/skills/story-long-analyze/references/style-profile-protocol.md +8 -8
  208. package/lib/oh-story/skills/story-long-analyze/references/synthesis-inputs.md +6 -6
  209. package/lib/oh-story/skills/story-long-scan/SKILL.md +24 -34
  210. package/lib/oh-story/skills/story-long-scan/references/genre-trends.md +30 -44
  211. package/lib/oh-story/skills/story-long-scan/references/platform-ciweimao.md +6 -4
  212. package/lib/oh-story/skills/story-long-scan/references/platform-fanqie.md +5 -5
  213. package/lib/oh-story/skills/story-long-scan/references/platform-jjwxc.md +7 -7
  214. package/lib/oh-story/skills/story-long-scan/references/platform-qidian.md +17 -7
  215. package/lib/oh-story/skills/story-long-scan/references/platform-qimao.md +16 -4
  216. package/lib/oh-story/skills/story-long-scan/references/publishing-guide.md +16 -29
  217. package/lib/oh-story/skills/story-long-scan/references/reader-profiling.md +26 -39
  218. package/lib/oh-story/skills/story-long-scan/references/topic-decision.md +10 -11
  219. package/lib/oh-story/skills/story-long-write/SKILL.md +9 -10
  220. package/lib/oh-story/skills/story-long-write/references/agent-calls.md +3 -3
  221. package/lib/oh-story/skills/story-long-write/references/artifact-protocols.md +3 -3
  222. package/lib/oh-story/skills/story-long-write/references/author-memory-maintenance.md +11 -9
  223. package/lib/oh-story/skills/story-long-write/references/author-memory.md +8 -8
  224. package/lib/oh-story/skills/story-long-write/references/banned-words.md +63 -151
  225. package/lib/oh-story/skills/story-long-write/references/benchmark-recall.md +2 -2
  226. package/lib/oh-story/skills/story-long-write/references/character-basics.md +3 -3
  227. package/lib/oh-story/skills/story-long-write/references/character-design-methods.md +4 -4
  228. package/lib/oh-story/skills/story-long-write/references/character-relations.md +4 -4
  229. package/lib/oh-story/skills/story-long-write/references/commercial-core-methods.md +7 -6
  230. package/lib/oh-story/skills/story-long-write/references/cross-book-recall.md +1 -1
  231. package/lib/oh-story/skills/story-long-write/references/deslop-gates.md +23 -160
  232. package/lib/oh-story/skills/story-long-write/references/dialogue-mastery.md +19 -22
  233. package/lib/oh-story/skills/story-long-write/references/emotion-on-page.md +2 -2
  234. package/lib/oh-story/skills/story-long-write/references/emotional-arc-design.md +3 -3
  235. package/lib/oh-story/skills/story-long-write/references/emotional-methods.md +28 -27
  236. package/lib/oh-story/skills/story-long-write/references/expression.md +76 -0
  237. package/lib/oh-story/skills/story-long-write/references/female-audience-writing.md +3 -4
  238. package/lib/oh-story/skills/story-long-write/references/genre-prose-cards//344/270/234/346/226/271/344/273/231/344/276/240.md +3 -3
  239. package/lib/oh-story/skills/story-long-write/references/genre-prose-cards//344/274/240/347/273/237/347/216/204/345/271/273.md +2 -2
  240. package/lib/oh-story/skills/story-long-write/references/genre-prose-cards//345/216/206/345/217/262/345/217/244/344/273/243.md +3 -3
  241. package/lib/oh-story/skills/story-long-write/references/genre-prose-cards//345/216/206/345/217/262/350/204/221/346/264/236.md +3 -3
  242. package/lib/oh-story/skills/story-long-write/references/genre-prose-cards//345/217/214/347/224/267/344/270/273.md +3 -3
  243. package/lib/oh-story/skills/story-long-write/references/genre-prose-cards//345/217/244/350/250/200/350/204/221/346/264/236.md +3 -3
  244. package/lib/oh-story/skills/story-long-write/references/genre-prose-cards//345/217/244/351/243/216/344/270/226/346/203/205.md +3 -3
  245. package/lib/oh-story/skills/story-long-write/references/genre-prose-cards//345/245/263/351/242/221/346/202/254/347/226/221.md +3 -3
  246. package/lib/oh-story/skills/story-long-write/references/genre-prose-cards//345/245/263/351/242/221/347/247/215/347/224/260.md +3 -3
  247. package/lib/oh-story/skills/story-long-write/references/genre-prose-cards//345/256/253/346/226/227/345/256/205/346/226/227.md +3 -3
  248. package/lib/oh-story/skills/story-long-write/references/genre-prose-cards//345/271/264/344/273/243.md +3 -3
  249. package/lib/oh-story/skills/story-long-write/references/genre-prose-cards//345/277/253/347/251/277.md +3 -3
  250. package/lib/oh-story/skills/story-long-write/references/genre-prose-cards//346/202/254/347/226/221/347/201/265/345/274/202.md +3 -3
  251. package/lib/oh-story/skills/story-long-write/references/genre-prose-cards//346/202/254/347/226/221/350/204/221/346/264/236.md +3 -3
  252. package/lib/oh-story/skills/story-long-write/references/genre-prose-cards//346/210/230/347/245/236/350/265/230/345/251/277.md +3 -3
  253. package/lib/oh-story/skills/story-long-write/references/genre-prose-cards//346/212/227/346/210/230/350/260/215/346/210/230.md +3 -3
  254. package/lib/oh-story/skills/story-long-write/references/genre-prose-cards//346/230/237/345/205/211/347/222/200/347/222/250.md +3 -3
  255. package/lib/oh-story/skills/story-long-write/references/genre-prose-cards//346/260/221/345/233/275/350/250/200/346/203/205.md +3 -3
  256. package/lib/oh-story/skills/story-long-write/references/genre-prose-cards//346/270/270/346/210/217/344/275/223/350/202/262.md +3 -3
  257. package/lib/oh-story/skills/story-long-write/references/genre-prose-cards//347/216/204/345/271/273/350/204/221/346/264/236.md +4 -4
  258. package/lib/oh-story/skills/story-long-write/references/genre-prose-cards//347/216/204/345/271/273/350/250/200/346/203/205.md +3 -3
  259. package/lib/oh-story/skills/story-long-write/references/genre-prose-cards//347/216/260/350/250/200/350/204/221/346/264/236.md +3 -3
  260. package/lib/oh-story/skills/story-long-write/references/genre-prose-cards//347/247/221/345/271/273/346/234/253/344/270/226.md +3 -3
  261. package/lib/oh-story/skills/story-long-write/references/genre-prose-cards//350/201/214/345/234/272/345/251/232/346/201/213.md +3 -3
  262. package/lib/oh-story/skills/story-long-write/references/genre-prose-cards//350/245/277/346/226/271/345/245/207/345/271/273.md +3 -3
  263. package/lib/oh-story/skills/story-long-write/references/genre-prose-cards//350/261/252/351/227/250/346/200/273/350/243/201.md +3 -3
  264. package/lib/oh-story/skills/story-long-write/references/genre-prose-cards//351/203/275/345/270/202/344/277/256/347/234/237.md +3 -3
  265. package/lib/oh-story/skills/story-long-write/references/genre-prose-cards//351/203/275/345/270/202/346/227/245/345/270/270.md +2 -2
  266. package/lib/oh-story/skills/story-long-write/references/genre-prose-cards//351/203/275/345/270/202/347/247/215/347/224/260.md +3 -3
  267. package/lib/oh-story/skills/story-long-write/references/genre-prose-cards//351/203/275/345/270/202/350/204/221/346/264/236.md +4 -4
  268. package/lib/oh-story/skills/story-long-write/references/genre-prose-cards//351/203/275/345/270/202/351/253/230/346/255/246.md +3 -3
  269. package/lib/oh-story/skills/story-long-write/references/genre-prose-cards//351/235/222/346/230/245/347/224/234/345/256/240.md +3 -3
  270. package/lib/oh-story/skills/story-long-write/references/genre-prose-cards.md +7 -7
  271. package/lib/oh-story/skills/story-long-write/references/genre-readers.md +32 -39
  272. package/lib/oh-story/skills/story-long-write/references/long-chapter-hooks.md +1 -1
  273. package/lib/oh-story/skills/story-long-write/references/long-chapter-quality.md +2 -2
  274. package/lib/oh-story/skills/story-long-write/references/long-format.md +2 -2
  275. package/lib/oh-story/skills/story-long-write/references/long-genre-catalog.md +13 -13
  276. package/lib/oh-story/skills/story-long-write/references/long-genre-mechanics.md +2 -2
  277. package/lib/oh-story/skills/story-long-write/references/long-reversal.md +3 -3
  278. package/lib/oh-story/skills/story-long-write/references/long-suspense.md +3 -5
  279. package/lib/oh-story/skills/story-long-write/references/narrative-focus.md +63 -0
  280. package/lib/oh-story/skills/story-long-write/references/opening-design.md +4 -4
  281. package/lib/oh-story/skills/story-long-write/references/outline-conflict.md +4 -4
  282. package/lib/oh-story/skills/story-long-write/references/outline-methods.md +4 -4
  283. package/lib/oh-story/skills/story-long-write/references/outline-rhythm.md +2 -2
  284. package/lib/oh-story/skills/story-long-write/references/outline-structure-theory.md +10 -11
  285. package/lib/oh-story/skills/story-long-write/references/plot-core-methods.md +5 -5
  286. package/lib/oh-story/skills/story-long-write/references/plot-emotion-system.md +8 -8
  287. package/lib/oh-story/skills/story-long-write/references/plot-frameworks.md +5 -6
  288. package/lib/oh-story/skills/story-long-write/references/plot-special-topics.md +7 -5
  289. package/lib/oh-story/skills/story-long-write/references/project-files.md +4 -4
  290. package/lib/oh-story/skills/story-long-write/references/reader-contract-and-progression.md +1 -1
  291. package/lib/oh-story/skills/story-long-write/references/reference-index.md +3 -5
  292. package/lib/oh-story/skills/story-long-write/references/stop-and-fix.md +1 -1
  293. package/lib/oh-story/skills/story-long-write/references/story-logic.md +65 -0
  294. package/lib/oh-story/skills/story-long-write/references/style-combat-face.md +3 -3
  295. package/lib/oh-story/skills/story-long-write/references/style-craft.md +8 -29
  296. package/lib/oh-story/skills/story-long-write/references/style-genre-modules.md +3 -3
  297. package/lib/oh-story/skills/story-long-write/references/style-resolution.md +5 -5
  298. package/lib/oh-story/skills/story-long-write/references/tracking-initialization.md +2 -2
  299. package/lib/oh-story/skills/story-long-write/references/tracking-transaction.md +2 -2
  300. package/lib/oh-story/skills/story-long-write/references/workflow-chapter.md +5 -4
  301. package/lib/oh-story/skills/story-long-write/references/workflow-daily.md +3 -2
  302. package/lib/oh-story/skills/story-long-write/references/workflow-outline.md +3 -3
  303. package/lib/oh-story/skills/story-long-write/references/workflow-revision.md +3 -3
  304. package/lib/oh-story/skills/story-long-write/references/workflow-setup.md +1 -1
  305. package/lib/oh-story/skills/story-long-write/references/workflow-volume.md +3 -3
  306. package/lib/oh-story/skills/story-long-write/references/writer-prompt-fallback.md +2 -2
  307. package/lib/oh-story/skills/story-long-write/references/writing-craft.md +25 -24
  308. package/lib/oh-story/skills/story-long-write/scripts/author_memory_commit.py +61 -58
  309. package/lib/oh-story/skills/story-long-write/scripts/build_writer_prompt.py +87 -20
  310. package/lib/oh-story/skills/story-review/SKILL.md +16 -31
  311. package/lib/oh-story/skills/story-review/references/agent-prompts.md +10 -12
  312. package/lib/oh-story/skills/story-review/references/banned-words.md +63 -151
  313. package/lib/oh-story/skills/story-review/references/batch-review.md +4 -4
  314. package/lib/oh-story/skills/story-review/references/character-relations.md +4 -4
  315. package/lib/oh-story/skills/story-review/references/dialogue-mastery.md +19 -22
  316. package/lib/oh-story/skills/story-review/references/expression.md +76 -0
  317. package/lib/oh-story/skills/story-review/references/narrative-focus.md +63 -0
  318. package/lib/oh-story/skills/story-review/references/plot-core-methods.md +5 -5
  319. package/lib/oh-story/skills/story-review/references/quality-rubric.md +5 -5
  320. package/lib/oh-story/skills/story-review/references/review-quality.md +16 -19
  321. package/lib/oh-story/skills/story-review/references/review-tracking.md +5 -5
  322. package/lib/oh-story/skills/story-review/references/rubrics/fanqie.md +6 -5
  323. package/lib/oh-story/skills/story-review/references/rubrics/qidian.md +6 -5
  324. package/lib/oh-story/skills/story-review/references/rubrics/zhihu.md +7 -8
  325. package/lib/oh-story/skills/story-review/references/solo.md +5 -5
  326. package/lib/oh-story/skills/story-review/references/story-logic.md +65 -0
  327. package/lib/oh-story/skills/story-review/references/style-resolution.md +5 -5
  328. package/lib/oh-story/skills/story-review/references/tracking-initialization.md +2 -2
  329. package/lib/oh-story/skills/story-review/references/tracking-transaction.md +2 -2
  330. package/lib/oh-story/skills/story-setup/SKILL.md +18 -18
  331. package/lib/oh-story/skills/story-setup/references/agent-references/agent-quality.md +3 -3
  332. package/lib/oh-story/skills/story-setup/references/agent-references/agent-reference-profiles.md +3 -4
  333. package/lib/oh-story/skills/story-setup/references/agent-references/banned-words.md +63 -151
  334. package/lib/oh-story/skills/story-setup/references/agent-references/benchmark-style-load.md +9 -9
  335. package/lib/oh-story/skills/story-setup/references/agent-references/character-basics.md +3 -3
  336. package/lib/oh-story/skills/story-setup/references/agent-references/character-design-methods.md +4 -4
  337. package/lib/oh-story/skills/story-setup/references/agent-references/character-relations.md +4 -4
  338. package/lib/oh-story/skills/story-setup/references/agent-references/deslop-gates.md +23 -160
  339. package/lib/oh-story/skills/story-setup/references/agent-references/dialogue-mastery.md +19 -22
  340. package/lib/oh-story/skills/story-setup/references/agent-references/emotion-on-page.md +2 -2
  341. package/lib/oh-story/skills/story-setup/references/agent-references/emotional-arc-design.md +3 -3
  342. package/lib/oh-story/skills/story-setup/references/agent-references/expression.md +76 -0
  343. package/lib/oh-story/skills/story-setup/references/agent-references/format-and-structure.md +11 -11
  344. package/lib/oh-story/skills/story-setup/references/agent-references/genre-prose-cards//344/270/234/346/226/271/344/273/231/344/276/240.md +3 -3
  345. package/lib/oh-story/skills/story-setup/references/agent-references/genre-prose-cards//344/274/240/347/273/237/347/216/204/345/271/273.md +2 -2
  346. package/lib/oh-story/skills/story-setup/references/agent-references/genre-prose-cards//345/216/206/345/217/262/345/217/244/344/273/243.md +3 -3
  347. package/lib/oh-story/skills/story-setup/references/agent-references/genre-prose-cards//345/216/206/345/217/262/350/204/221/346/264/236.md +3 -3
  348. package/lib/oh-story/skills/story-setup/references/agent-references/genre-prose-cards//345/217/214/347/224/267/344/270/273.md +3 -3
  349. package/lib/oh-story/skills/story-setup/references/agent-references/genre-prose-cards//345/217/244/350/250/200/350/204/221/346/264/236.md +3 -3
  350. package/lib/oh-story/skills/story-setup/references/agent-references/genre-prose-cards//345/217/244/351/243/216/344/270/226/346/203/205.md +3 -3
  351. package/lib/oh-story/skills/story-setup/references/agent-references/genre-prose-cards//345/245/263/351/242/221/346/202/254/347/226/221.md +3 -3
  352. package/lib/oh-story/skills/story-setup/references/agent-references/genre-prose-cards//345/245/263/351/242/221/347/247/215/347/224/260.md +3 -3
  353. package/lib/oh-story/skills/story-setup/references/agent-references/genre-prose-cards//345/256/253/346/226/227/345/256/205/346/226/227.md +3 -3
  354. package/lib/oh-story/skills/story-setup/references/agent-references/genre-prose-cards//345/271/264/344/273/243.md +3 -3
  355. package/lib/oh-story/skills/story-setup/references/agent-references/genre-prose-cards//345/277/253/347/251/277.md +3 -3
  356. package/lib/oh-story/skills/story-setup/references/agent-references/genre-prose-cards//346/202/254/347/226/221/347/201/265/345/274/202.md +3 -3
  357. package/lib/oh-story/skills/story-setup/references/agent-references/genre-prose-cards//346/202/254/347/226/221/350/204/221/346/264/236.md +3 -3
  358. package/lib/oh-story/skills/story-setup/references/agent-references/genre-prose-cards//346/210/230/347/245/236/350/265/230/345/251/277.md +3 -3
  359. package/lib/oh-story/skills/story-setup/references/agent-references/genre-prose-cards//346/212/227/346/210/230/350/260/215/346/210/230.md +3 -3
  360. package/lib/oh-story/skills/story-setup/references/agent-references/genre-prose-cards//346/230/237/345/205/211/347/222/200/347/222/250.md +3 -3
  361. package/lib/oh-story/skills/story-setup/references/agent-references/genre-prose-cards//346/260/221/345/233/275/350/250/200/346/203/205.md +3 -3
  362. package/lib/oh-story/skills/story-setup/references/agent-references/genre-prose-cards//346/270/270/346/210/217/344/275/223/350/202/262.md +3 -3
  363. package/lib/oh-story/skills/story-setup/references/agent-references/genre-prose-cards//347/216/204/345/271/273/350/204/221/346/264/236.md +4 -4
  364. package/lib/oh-story/skills/story-setup/references/agent-references/genre-prose-cards//347/216/204/345/271/273/350/250/200/346/203/205.md +3 -3
  365. package/lib/oh-story/skills/story-setup/references/agent-references/genre-prose-cards//347/216/260/350/250/200/350/204/221/346/264/236.md +3 -3
  366. package/lib/oh-story/skills/story-setup/references/agent-references/genre-prose-cards//347/247/221/345/271/273/346/234/253/344/270/226.md +3 -3
  367. package/lib/oh-story/skills/story-setup/references/agent-references/genre-prose-cards//350/201/214/345/234/272/345/251/232/346/201/213.md +3 -3
  368. package/lib/oh-story/skills/story-setup/references/agent-references/genre-prose-cards//350/245/277/346/226/271/345/245/207/345/271/273.md +3 -3
  369. package/lib/oh-story/skills/story-setup/references/agent-references/genre-prose-cards//350/261/252/351/227/250/346/200/273/350/243/201.md +3 -3
  370. package/lib/oh-story/skills/story-setup/references/agent-references/genre-prose-cards//351/203/275/345/270/202/344/277/256/347/234/237.md +3 -3
  371. package/lib/oh-story/skills/story-setup/references/agent-references/genre-prose-cards//351/203/275/345/270/202/346/227/245/345/270/270.md +2 -2
  372. package/lib/oh-story/skills/story-setup/references/agent-references/genre-prose-cards//351/203/275/345/270/202/347/247/215/347/224/260.md +3 -3
  373. package/lib/oh-story/skills/story-setup/references/agent-references/genre-prose-cards//351/203/275/345/270/202/350/204/221/346/264/236.md +4 -4
  374. package/lib/oh-story/skills/story-setup/references/agent-references/genre-prose-cards//351/203/275/345/270/202/351/253/230/346/255/246.md +3 -3
  375. package/lib/oh-story/skills/story-setup/references/agent-references/genre-prose-cards//351/235/222/346/230/245/347/224/234/345/256/240.md +3 -3
  376. package/lib/oh-story/skills/story-setup/references/agent-references/genre-prose-cards.md +7 -7
  377. package/lib/oh-story/skills/story-setup/references/agent-references/genre-readers.md +33 -41
  378. package/lib/oh-story/skills/story-setup/references/agent-references/long-chapter-hooks.md +1 -1
  379. package/lib/oh-story/skills/story-setup/references/agent-references/long-emotional-methods.md +28 -27
  380. package/lib/oh-story/skills/story-setup/references/agent-references/long-genre-catalog.md +13 -13
  381. package/lib/oh-story/skills/story-setup/references/agent-references/long-genre-mechanics.md +2 -2
  382. package/lib/oh-story/skills/story-setup/references/agent-references/long-quality.md +3 -3
  383. package/lib/oh-story/skills/story-setup/references/agent-references/long-reversal.md +3 -3
  384. package/lib/oh-story/skills/story-setup/references/agent-references/long-suspense.md +3 -5
  385. package/lib/oh-story/skills/story-setup/references/agent-references/narrative-focus.md +63 -0
  386. package/lib/oh-story/skills/story-setup/references/agent-references/opening-design.md +4 -4
  387. package/lib/oh-story/skills/story-setup/references/agent-references/outline-conflict.md +4 -4
  388. package/lib/oh-story/skills/story-setup/references/agent-references/outline-methods.md +4 -4
  389. package/lib/oh-story/skills/story-setup/references/agent-references/outline-rhythm.md +2 -2
  390. package/lib/oh-story/skills/story-setup/references/agent-references/plot-core-methods.md +5 -5
  391. package/lib/oh-story/skills/story-setup/references/agent-references/short-chapter-hooks.md +14 -34
  392. package/lib/oh-story/skills/story-setup/references/agent-references/short-emotional-methods.md +7 -9
  393. package/lib/oh-story/skills/story-setup/references/agent-references/short-genre-formulas.md +8 -10
  394. package/lib/oh-story/skills/story-setup/references/agent-references/short-paragraph-hooks.md +11 -12
  395. package/lib/oh-story/skills/story-setup/references/agent-references/short-quality.md +6 -4
  396. package/lib/oh-story/skills/story-setup/references/agent-references/short-reversal.md +11 -11
  397. package/lib/oh-story/skills/story-setup/references/agent-references/story-logic.md +65 -0
  398. package/lib/oh-story/skills/story-setup/references/agent-references/style-combat-face.md +3 -3
  399. package/lib/oh-story/skills/story-setup/references/agent-references/style-genre-modules.md +3 -3
  400. package/lib/oh-story/skills/story-setup/references/agent-references/style-resolution.md +5 -5
  401. package/lib/oh-story/skills/story-setup/references/agent-references/writing-craft.md +25 -24
  402. package/lib/oh-story/skills/story-setup/references/diagnostics.md +4 -4
  403. package/lib/oh-story/skills/story-short-analyze/SKILL.md +5 -15
  404. package/lib/oh-story/skills/story-short-analyze/references/analysis-character-basics.md +91 -111
  405. package/lib/oh-story/skills/story-short-analyze/references/analysis-character-design.md +85 -97
  406. package/lib/oh-story/skills/story-short-analyze/references/analysis-character-relations.md +72 -83
  407. package/lib/oh-story/skills/story-short-analyze/references/analysis-method.md +7 -7
  408. package/lib/oh-story/skills/story-short-analyze/references/analysis-paragraph-hooks.md +28 -30
  409. package/lib/oh-story/skills/story-short-analyze/references/analysis-reader-profile.md +59 -66
  410. package/lib/oh-story/skills/story-short-analyze/references/analysis-report-style.md +1 -3
  411. package/lib/oh-story/skills/story-short-analyze/references/analysis-short-genres.md +2 -2
  412. package/lib/oh-story/skills/story-short-analyze/references/analysis-short-hooks.md +3 -3
  413. package/lib/oh-story/skills/story-short-analyze/references/analysis-short-mechanics.md +3 -3
  414. package/lib/oh-story/skills/story-short-analyze/references/analysis-short-patterns.md +2 -2
  415. package/lib/oh-story/skills/story-short-analyze/references/analysis-short-suspense.md +2 -2
  416. package/lib/oh-story/skills/story-short-analyze/references/analysis-writing-techniques.md +76 -89
  417. package/lib/oh-story/skills/story-short-analyze/references/deconstruction-examples.md +5 -5
  418. package/lib/oh-story/skills/story-short-analyze/references/optional-modules.md +3 -3
  419. package/lib/oh-story/skills/story-short-analyze/references/output-contract.md +13 -24
  420. package/lib/oh-story/skills/story-short-analyze/references/quality-checklist.md +3 -3
  421. package/lib/oh-story/skills/story-short-analyze/references/real-market-data.md +24 -25
  422. package/lib/oh-story/skills/story-short-analyze/references/source-story-quality.md +44 -46
  423. package/lib/oh-story/skills/story-short-analyze/references/stage2-3-structure-emotion.md +14 -12
  424. package/lib/oh-story/skills/story-short-analyze/references/stage4-6-reversal-summary.md +17 -17
  425. package/lib/oh-story/skills/story-short-analyze/references/zhihu-style.md +11 -11
  426. package/lib/oh-story/skills/story-short-scan/SKILL.md +22 -29
  427. package/lib/oh-story/skills/story-short-scan/references/manual-rank-input.md +3 -3
  428. package/lib/oh-story/skills/story-short-scan/references/platform-dianzhong.md +2 -2
  429. package/lib/oh-story/skills/story-short-scan/references/platform-heiyan.md +2 -2
  430. package/lib/oh-story/skills/story-short-scan/references/real-market-data.md +24 -25
  431. package/lib/oh-story/skills/story-short-scan/references/topic-match.md +3 -3
  432. package/lib/oh-story/skills/story-short-write/SKILL.md +20 -23
  433. package/lib/oh-story/skills/story-short-write/references/agent-calls.md +4 -4
  434. package/lib/oh-story/skills/story-short-write/references/author-memory-maintenance.md +11 -9
  435. package/lib/oh-story/skills/story-short-write/references/author-memory.md +8 -8
  436. package/lib/oh-story/skills/story-short-write/references/banned-words.md +63 -151
  437. package/lib/oh-story/skills/story-short-write/references/benchmark-recall.md +8 -8
  438. package/lib/oh-story/skills/story-short-write/references/cross-book-recall.md +11 -11
  439. package/lib/oh-story/skills/story-short-write/references/deslop-gates.md +34 -0
  440. package/lib/oh-story/skills/story-short-write/references/dialogue-mastery.md +19 -22
  441. package/lib/oh-story/skills/story-short-write/references/emotional-methods.md +7 -9
  442. package/lib/oh-story/skills/story-short-write/references/expression.md +76 -0
  443. package/lib/oh-story/skills/story-short-write/references/genre-styles//344/270/226/346/203/205/346/211/223/350/204/270.md +9 -9
  444. package/lib/oh-story/skills/story-short-write/references/genre-styles//345/217/214/347/224/267/344/270/273.md +15 -15
  445. package/lib/oh-story/skills/story-short-write/references/genre-styles//345/244/215/344/273/207/346/211/223/350/204/270.md +9 -9
  446. package/lib/oh-story/skills/story-short-write/references/genre-styles//345/256/205/346/226/227/345/256/253/346/226/227.md +14 -14
  447. package/lib/oh-story/skills/story-short-write/references/genre-styles//346/200/273/350/243/201/350/261/252/351/227/250.md +11 -11
  448. package/lib/oh-story/skills/story-short-write/references/genre-styles//346/202/254/347/226/221.md +9 -9
  449. package/lib/oh-story/skills/story-short-write/references/genre-styles//346/260/221/344/277/227/346/200/252/350/260/210.md +14 -13
  450. package/lib/oh-story/skills/story-short-write/references/genre-styles//346/262/231/351/233/225/350/204/221/346/264/236.md +12 -12
  451. package/lib/oh-story/skills/story-short-write/references/genre-styles//347/224/234/345/256/240.md +8 -8
  452. package/lib/oh-story/skills/story-short-write/references/genre-styles//350/277/275/345/246/273/347/201/253/350/221/254/345/234/272.md +12 -12
  453. package/lib/oh-story/skills/story-short-write/references/genre-writing-formulas.md +8 -10
  454. package/lib/oh-story/skills/story-short-write/references/hooks-chapter.md +14 -34
  455. package/lib/oh-story/skills/story-short-write/references/hooks-paragraph.md +11 -12
  456. package/lib/oh-story/skills/story-short-write/references/narrative-focus.md +63 -0
  457. package/lib/oh-story/skills/story-short-write/references/output-contract.md +13 -24
  458. package/lib/oh-story/skills/story-short-write/references/reference-index.md +3 -4
  459. package/lib/oh-story/skills/story-short-write/references/scene-craft.md +8 -7
  460. package/lib/oh-story/skills/story-short-write/references/short-craft.md +16 -18
  461. package/lib/oh-story/skills/story-short-write/references/short-deslop.md +12 -125
  462. package/lib/oh-story/skills/story-short-write/references/short-format.md +9 -13
  463. package/lib/oh-story/skills/story-short-write/references/short-prose-quality.md +18 -35
  464. package/lib/oh-story/skills/story-short-write/references/short-reversal.md +11 -11
  465. package/lib/oh-story/skills/story-short-write/references/story-logic.md +65 -0
  466. package/lib/oh-story/skills/story-short-write/references/style-resolution.md +5 -5
  467. package/lib/oh-story/skills/story-short-write/references/submission-craft.md +8 -8
  468. package/lib/oh-story/skills/story-short-write/references/villain-and-reveal.md +11 -13
  469. package/lib/oh-story/skills/story-short-write/references/workflow-design.md +11 -9
  470. package/lib/oh-story/skills/story-short-write/references/workflow-draft.md +10 -10
  471. package/lib/oh-story/skills/story-short-write/references/workflow-revision.md +10 -9
  472. package/lib/oh-story/skills/story-short-write/references/writing-workflow.md +4 -4
  473. package/lib/oh-story/skills/story-short-write/scripts/author_memory_commit.py +61 -58
  474. package/lib/types/role-tool.d.ts +42 -2
  475. package/lib/types/role-tool.d.ts.map +1 -1
  476. package/lib/types/skill-provider.d.ts.map +1 -1
  477. package/lib/video-recap/CHANGELOG.md +8 -0
  478. package/lib/video-recap/README.en.md +8 -10
  479. package/lib/video-recap/README.md +8 -8
  480. package/lib/video-recap/manifest.json +48 -48
  481. package/lib/video-recap/skills/video-assemble/SKILL.md +5 -8
  482. package/lib/video-recap/skills/video-assemble/references/audio-modes.md +3 -3
  483. package/lib/video-recap/skills/video-assemble/references/jianying/SOURCE.md +1 -2
  484. package/lib/video-recap/skills/video-assemble/references/packaging.md +1 -2
  485. package/lib/video-recap/skills/video-assemble/references/source-score.md +5 -6
  486. package/lib/video-recap/skills/video-cut/SKILL.md +3 -7
  487. package/lib/video-recap/skills/video-cut/references/shot-review.md +1 -1
  488. package/lib/video-recap/skills/video-recap/SKILL.md +7 -11
  489. package/lib/video-recap/skills/video-recap/references/audio-routing.md +1 -2
  490. package/lib/video-recap/skills/video-recap/references/config-playbook.md +5 -7
  491. package/lib/video-recap/skills/video-recap/references/data-schema.md +8 -8
  492. package/lib/video-recap/skills/video-recap/references/resource-library.md +2 -2
  493. package/lib/video-recap/skills/video-reference/SKILL.md +4 -8
  494. package/lib/video-recap/skills/video-reference/references/reference-schema.md +1 -1
  495. package/lib/video-recap/skills/video-script/SKILL.md +4 -13
  496. package/lib/video-recap/skills/video-script/references/creative-editing-playbook.md +2 -2
  497. package/lib/video-recap/skills/video-understanding/SKILL.md +10 -6
  498. package/lib/video-recap/skills/video-understanding/references/data-schema.md +2 -2
  499. package/lib/video-recap/skills/video-voiceover/SKILL.md +3 -11
  500. package/lib/video-recap/skills/video-voiceover/references/index-tts.md +1 -2
  501. package/package.json +25 -24
  502. package/lib/drama/skills/short-drama-image-prompts/assets/image-prompt-spec.jsonl.md +0 -187
  503. package/lib/drama/skills/short-drama-image-prompts/assets/image-prompts.md +0 -42
  504. package/lib/drama/skills/short-drama-image-prompts/assets/lookdev-frame-spec.jsonl.md +0 -128
  505. package/lib/drama/skills/short-drama-image-prompts/assets/lookdev-prompts.md +0 -34
  506. package/lib/drama/skills/short-drama-storyboard/assets/coverage-template.json +0 -49
  507. package/lib/drama/skills/short-drama-storyboard/assets/keyframe-prompts.md +0 -36
  508. package/lib/drama/skills/short-drama-storyboard/assets/keyframe-template.jsonl +0 -2
  509. package/lib/drama/skills/short-drama-storyboard/assets/shot-template.jsonl +0 -2
  510. package/lib/drama/skills/short-drama-video-prompts/assets/delivery-container.jsonl.md +0 -101
  511. package/lib/drama/skills/short-drama-video-prompts/assets/motion-spec.jsonl.md +0 -217
  512. package/lib/drama/skills/short-drama-video-prompts/assets/music-spec.jsonl.md +0 -31
  513. package/lib/drama/skills/short-drama-video-prompts/assets/video-prompts.md +0 -67
  514. package/lib/drama/skills/short-drama-write/assets/beats.jsonl +0 -2
  515. package/lib/drama/skills/short-drama-write/assets/episode-card-standalone.json +0 -120
  516. package/lib/drama/skills/short-drama-write/assets/episode-card.json +0 -55
  517. package/lib/drama/skills/short-drama-write/assets/voice-record-sheet.jsonl.md +0 -89
  518. package/lib/oh-story/skills/story/references/author-memory-maintenance.md +0 -75
  519. package/lib/oh-story/skills/story/references/author-memory.md +0 -117
  520. package/lib/oh-story/skills/story/scripts/author_memory_commit.py +0 -1635
  521. package/lib/oh-story/skills/story-deslop/references/anti-ai-writing.md +0 -556
  522. package/lib/oh-story/skills/story-deslop/references/author-memory-maintenance.md +0 -75
  523. package/lib/oh-story/skills/story-deslop/references/author-memory.md +0 -117
  524. package/lib/oh-story/skills/story-deslop/scripts/author_memory_commit.py +0 -1635
  525. package/lib/oh-story/skills/story-long-write/references/anti-ai-writing.md +0 -556
  526. package/lib/oh-story/skills/story-review/references/anti-ai-writing.md +0 -556
  527. package/lib/oh-story/skills/story-review/references/author-memory-maintenance.md +0 -75
  528. package/lib/oh-story/skills/story-review/references/author-memory.md +0 -117
  529. package/lib/oh-story/skills/story-review/scripts/author_memory_commit.py +0 -1635
  530. package/lib/oh-story/skills/story-setup/references/agent-references/anti-ai-writing.md +0 -556
  531. package/lib/oh-story/skills/story-setup/references/agent-references/short-suspense.md +0 -352
  532. package/lib/oh-story/skills/story-short-write/references/genre-writing-techniques.md +0 -490
  533. package/lib/oh-story/skills/story-short-write/references/short-suspense.md +0 -352
@@ -1,5 +1,3 @@
1
- <!-- Last synced with README.md: 2026-09-20 -->
2
-
3
1
  <p align="center">
4
2
  <img src="https://zenstory.ai/brand/zenstory-ai-mark.svg" alt="" width="76" height="76">
5
3
  </p>
@@ -23,7 +21,7 @@
23
21
  <p align="center">
24
22
  <a href="https://github.com/zenstory-ai/video-recap-skills/stargazers"><img alt="Stars" src="https://img.shields.io/github/stars/zenstory-ai/video-recap-skills?style=flat-square&color=22D3EE&logo=github&logoColor=white&label=Stars"></a>
25
23
  <a href="https://github.com/zenstory-ai/video-recap-skills/releases/latest"><img alt="Release" src="https://img.shields.io/github/v/release/zenstory-ai/video-recap-skills?style=flat-square&color=081431&label=Release"></a>
26
- <img alt="Skills 6" src="https://img.shields.io/badge/Skills-6-081431?style=flat-square">
24
+ <img alt="Skills 7" src="https://img.shields.io/badge/Skills-7-081431?style=flat-square">
27
25
  <a href="https://www.python.org/"><img alt="Python 3.10%2B" src="https://img.shields.io/badge/Python-3.10%2B-3776AB?style=flat-square&logo=python&logoColor=white"></a>
28
26
  <a href="https://github.com/zenstory-ai/video-recap-skills/actions/workflows/skill-validate.yml"><img alt="CI" src="https://img.shields.io/github/actions/workflow/status/zenstory-ai/video-recap-skills/skill-validate.yml?style=flat-square&label=CI"></a>
29
27
  <a href="https://platform.xiaomimimo.com"><img alt="AI Xiaomi%20MiMo" src="https://img.shields.io/badge/AI-Xiaomi%20MiMo-34A853?style=flat-square"></a>
@@ -43,16 +41,16 @@ The 59-second landscape recap above, *Guohuo (这一秒过火)*, is the final de
43
41
  Seven skills (six for production plus one on-demand reference skill) install into Claude Code, Codex CLI, OpenCode, or OpenClaw. You give the video paths and the recap you want in plain language; the agent understands picture and dialogue, decides the story and audiovisual plan, cuts, writes, voices, mixes, and subtitles. Supported inputs: `.mp4 / .mov / .mkv / .webm`.
44
42
 
45
43
  - **One key, ffmpeg locally.** ASR, VLM, and TTS all go through [Xiaomi MiMo](https://platform.xiaomimimo.com); the local runtime is Python's standard library plus `ffmpeg`, with no GPU, no `pip install`, and no model downloads. Voiceover can switch to Fish Audio, which replaces only that stage.
46
- - **The editorial decision comes before the sound allocation.** The agent compares edit hypotheses first, writes the viewer promise, POV, dramatic question, and change-based beats into `recap_story_plan.json`, then assigns each beat a picture job and an audio owner: narration is voiced as a block only when it has a defined job, and strong dialogue, action sound, or silence may own an entire beat.
47
- - **Cut first, narrate second, so the timeline is aligned by construction.** Cut mode renders the shortened video first and writes narration against that output timeline; feed several videos at once and pick ranges by `source_id` to cut one story spine; each video's analysis is saved to a filesystem material library for reuse.
44
+ - **The editorial decision comes before the sound allocation.** For a new concept, the agent compares viable edit directions; for a directed task or viewing feedback, it follows the current decisions. It records the viewer promise, POV, dramatic question, and change-based beats in `recap_story_plan.json`, then assigns each beat a picture job and an audio owner: narration is voiced as a block only when it has a defined job, and strong dialogue, action sound, or silence may own an entire beat.
45
+ - **Cut first, narrate second, so the timeline is aligned by construction.** Cut mode renders the shortened video first and writes narration against that output timeline; feed several videos at once and pick ranges by `source_id` to cut one story spine; analysis can be saved to a filesystem material library and reused when the source and settings match.
48
46
  - **Keep editing after the render.** The multi-track `timeline.json` exports to a JianYing draft with editable source clips, narration, BGM, subtitles, and image overlays; drop in an accurate subtitle file and it becomes the preferred source for original-dialogue captions.
49
- - **Every step leaves a record you can check.** Narration lint, assembly QC, delivery QC, and the revision log are machine-readable files.
47
+ - **Every step leaves a record you can check.** Narration lint, assembly QC, and final QC produce machine-readable reports. Viewing revisions can separately record changes, frozen items, and verification.
50
48
 
51
49
  ## Install
52
50
 
53
51
  ### ClawHub
54
52
 
55
- ClawHub distribution is governed by the repository's [explicit publish inventory](.clawhub/publish.json), with discovery through [ClawHub](https://clawhub.ai/). A skill-specific link is added here only after its publisher, version, and anonymous accessibility are verified, so this README never presents a nonexistent listing as live.
53
+ ClawHub entries and dependencies are governed by the [explicit publish inventory](.clawhub/publish.json). The `video-recap` orchestrator remains `blocked` pending verification of companion installation under one skills root. For the complete workflow, install the plugin bundle or source checkout below.
56
54
 
57
55
 
58
56
  Prerequisites: Python 3.10 or newer, `ffmpeg` on `PATH`, and one [Xiaomi MiMo](https://platform.xiaomimimo.com) API key. Subtitles are burned in by default, which needs an ffmpeg with libass. Homebrew's stock `ffmpeg` has no libass: the default run then skips the burn, ships a same-name `.srt` sidecar next to the recap, and records a warning in `final_qc.json` (an explicit `--burn-subtitles` stops before the run starts instead). Narration that adds on-screen text overlays (`visual_overlays`) also needs an ffmpeg with drawtext, and stops before voiceover without it. To burn subtitles on macOS, use `brew install ffmpeg-full` (keg-only: put its `bin` first on `PATH`).
@@ -329,7 +327,7 @@ Use /path/to/ep1.mp4 and /path/to/ep2.mp4 to make one ten-minute recap with a sh
329
327
 
330
328
  > I have permission to use 〈local video〉 and am supplying checked picture and dialogue records for it. Propose only the sound handoff for this material: which full dialogue line, action sound or pause to preserve, where narration is needed, and which record supports each choice. List missing evidence rather than inventing motives or unseen events. Return beat notes and necessary narration drafts without calling TTS or rendering.
331
329
 
332
- The agent handles understanding, story and audiovisual planning, cutting, scripting, voiceover, and assembly. In cut mode it first chooses the footage, renders the shortened video, and only then writes narration on the output timeline; the internal pauses and resumes are the agent's job too.
330
+ For a complete production request, the agent handles understanding, story and audiovisual planning, cutting, scripting, voiceover, and assembly. A text-only handoff stops at the requested scope. In cut mode it first chooses the footage, renders the shortened video, and only then writes narration on the output timeline; the internal pauses and resumes are the agent's job too.
333
331
 
334
332
  ## Workflow and the seven skills
335
333
 
@@ -408,7 +406,7 @@ Use /path/to/library as the resource library: register this BGM, this font and t
408
406
  template for 1080x1920 for me to adopt, then render this series with /path/to/series/recap_project.json binding them.
409
407
  ```
410
408
 
411
- Resources, templates and sample films are JSON records in your own directory; licence and "adopted" status are only ever set by you. A binding that conflicts with an explicit setting, or a template whose canvas differs from the output, stops the run before voicing. Each render gets a `resource_lock.json` listing what it actually used and whether the licences are clear. Format: [resource library, templates and samples](skills/video-recap/references/resource-library.md).
409
+ Resources, templates and sample films are JSON records in your own directory; licence and "adopted" status are only ever set by you. A binding that conflicts with an explicit setting, or a template whose canvas differs from the output, stops the run before voicing. Each run writes `work_dir/resource_lock.json`, listing what it actually used and whether the licences are clear. Format: [resource library, templates and samples](skills/video-recap/references/resource-library.md).
412
410
 
413
411
  **Browse projects, runs and the library in a local page (read-only):**
414
412
 
@@ -432,7 +430,7 @@ Yes. Understanding relies on the VLM reading the picture and does not require ex
432
430
 
433
431
  ### A long video hit a 429 or was interrupted halfway. Do I start over?
434
432
 
435
- No. VLM scene analysis resumes from where it stopped and recovers from rate limits; once `narration.json` is written, repeating the same command continues, cut mode records in `recap_phase.json` which clip plan the narration was written for (changing the plan asks for a new narration), and a resume only continues a work directory for the same source video and parameters.
433
+ VLM analysis saves completed scenes and retries suspected rate limits once with lower concurrency. Persistent failures remain visible. After addressing the cause, repeat the same command to reuse matching scene caches and continue. Use the original command after writing `narration.json` too. In cut mode, `recap_phase.json` binds narration to its clip plan; a changed plan requires checking or rewriting the narration. Resuming requires the same source video and parameters.
436
434
 
437
435
  ### The VLM can't tell who is who and the narration is all "a man in black"?
438
436
 
@@ -21,7 +21,7 @@
21
21
  <p align="center">
22
22
  <a href="https://github.com/zenstory-ai/video-recap-skills/stargazers"><img alt="Stars" src="https://img.shields.io/github/stars/zenstory-ai/video-recap-skills?style=flat-square&color=22D3EE&logo=github&logoColor=white&label=Stars"></a>
23
23
  <a href="https://github.com/zenstory-ai/video-recap-skills/releases/latest"><img alt="Release" src="https://img.shields.io/github/v/release/zenstory-ai/video-recap-skills?style=flat-square&color=081431&label=Release"></a>
24
- <img alt="Skills 6" src="https://img.shields.io/badge/Skills-6-081431?style=flat-square">
24
+ <img alt="Skills 7" src="https://img.shields.io/badge/Skills-7-081431?style=flat-square">
25
25
  <a href="https://www.python.org/"><img alt="Python 3.10%2B" src="https://img.shields.io/badge/Python-3.10%2B-3776AB?style=flat-square&logo=python&logoColor=white"></a>
26
26
  <a href="https://github.com/zenstory-ai/video-recap-skills/actions/workflows/skill-validate.yml"><img alt="CI" src="https://img.shields.io/github/actions/workflow/status/zenstory-ai/video-recap-skills/skill-validate.yml?style=flat-square&label=CI"></a>
27
27
  <a href="https://platform.xiaomimimo.com"><img alt="AI Xiaomi%20MiMo" src="https://img.shields.io/badge/AI-Xiaomi%20MiMo-34A853?style=flat-square"></a>
@@ -44,16 +44,16 @@
44
44
  决定故事与视听方案、剪辑、写稿、配音、混音和字幕。支持 `.mp4 / .mov / .mkv / .webm`。
45
45
 
46
46
  - **一个 key,本地只要 ffmpeg。** ASR、VLM、TTS 都走[小米 MiMo](https://platform.xiaomimimo.com),本地只用 Python 标准库和 `ffmpeg`,不需要 GPU,不需要 `pip install`,也不下载模型。配音可以换成 Fish Audio,只替换配音这一段。
47
- - **先做创作决定,再分配声音。** Agent 先比较剪辑假设,把观众承诺、POV、戏剧问题和"发生了什么变化"的 beat 写进 `recap_story_plan.json`,再给每一拍指定画面任务和声音归属:旁白只在有明确任务时整块配音,强对白、动作声或沉默可以完整主导一拍。
48
- - **先剪后配,时间轴天然对齐。** 剪辑模式先把长视频剪成成片,再对着成片写解说;一次可以传多个视频,按 `source_id` 选段剪成一条主线;每个视频的分析沉淀成文件系统素材库,下次直接复用。
47
+ - **先做创作决定,再分配声音。** 首次策划时,Agent 比较可行的剪辑方向;已有指定结构或看片反馈时,按当前决定修订。观众承诺、POV、戏剧问题和每拍变化写进 `recap_story_plan.json`,再给每一拍指定画面任务和声音归属:旁白只在有明确任务时整块配音,强对白、动作声或沉默可以完整主导一拍。
48
+ - **先剪后配,时间轴天然对齐。** 剪辑模式先把长视频剪成成片,再对着成片写解说;一次可以传多个视频,按 `source_id` 选段剪成一条主线;视频分析可按需保存到文件系统素材库,后续在来源和设置匹配时复用。
49
49
  - **成片之外还能继续改。** 多轨时间线 `timeline.json` 可一键导出剪映草稿,原片、解说、BGM、字幕、图片叠层都可编辑;自带一份准确字幕文件就会被当作原声字幕的首选来源。
50
- - **每一步都留下可核对的记录。** 旁白 lint、组装 QC、交付 QC 和看片修改日志都是机器可读文件。
50
+ - **每一步都留下可核对的记录。** 旁白 lint、组装 QC 与最终 QC 会生成机器可读报告;看片修改可另记录本轮改动、冻结项与验证结果。
51
51
 
52
52
  ## 安装
53
53
 
54
54
  ### ClawHub
55
55
 
56
- ClawHub 分发由仓库中的 [显式发布清单](.clawhub/publish.json) 管理,并通过 [ClawHub](https://clawhub.ai/) 提供发现入口。具体 skill 链接只有在发布者、版本和匿名访问均验证后才会写入本文档,避免把尚不存在的条目当成已上架。
56
+ ClawHub 条目与依赖由 [显式发布清单](.clawhub/publish.json) 管理。编排器 `video-recap` 当前仍因同根安装验证未完成而标为 `blocked`;使用完整流程请按下方方式安装整套插件或源码。
57
57
 
58
58
 
59
59
  前提:Python 3.10 或更新版本,`PATH` 上有 `ffmpeg`,以及一个[小米 MiMo](https://platform.xiaomimimo.com) API Key。默认把字幕烧录进画面,这需要带 libass 的 ffmpeg;Homebrew 自带的 `ffmpeg` 没有 libass,这时默认运行不烧录,在成片旁输出同名 `.srt` 外挂字幕并在 `final_qc.json` 里记一条警告(显式传 `--burn-subtitles` 则在开跑前报错)。旁白里写了画面文字叠加(`visual_overlays`)时还需要带 drawtext 的 ffmpeg,缺了会在配音前报错。要在 macOS 上烧录字幕,可用 `brew install ffmpeg-full`(keg-only,需把它的 `bin` 放到 `PATH` 前面)。
@@ -318,7 +318,7 @@ Agent 在剪任何一刀之前先写 [`recap_story_plan.json`](examples/guohuo-6
318
318
 
319
319
  > 我有权使用〈本地视频〉,并提供了对应的已核对画面与对白记录。先只给这段素材的声音分工建议:哪句对白、哪个动作声或停顿应完整保留,哪里确需旁白,依据是哪条记录。缺证据就列待核对项,不补人物动机或没出现的事件。交付分拍说明和必要的旁白草案,不调用配音或渲染。
320
320
 
321
- Agent 会自动完成理解、故事与视听规划、剪辑、写稿、配音和合成。剪辑模式内部会先确定保留片段、生成剪后成片,再按输出时间轴写旁白;这些暂停和续跑也由 Agent 处理。
321
+ 完整制作请求由 Agent 完成理解、故事与视听规划、剪辑、写稿、配音和合成;只做文字交接的请求按指定范围停止。剪辑模式内部会先确定保留片段、生成剪后成片,再按输出时间轴写旁白;这些暂停和续跑也由 Agent 处理。
322
322
 
323
323
  ## 流程与七个技能
324
324
 
@@ -398,7 +398,7 @@ flowchart LR
398
398
  ```
399
399
 
400
400
  资源、模板和样片是你自己目录里的 JSON 记录,授权与"已采用"状态只由你确认;绑定与显式设置冲突、模板画布与成片不符时,会在配音之前停下。
401
- 每条成片旁边的 `resource_lock.json` 记下这次实际用了哪些资源、授权是否清楚。格式见 [资源库、模板与样片](skills/video-recap/references/resource-library.md)。
401
+ 每次运行的 `work_dir/resource_lock.json` 记下这次实际用了哪些资源、授权是否清楚。格式见 [资源库、模板与样片](skills/video-recap/references/resource-library.md)。
402
402
 
403
403
  **在浏览器里看项目、运行和资源库(只读):**
404
404
 
@@ -422,7 +422,7 @@ flowchart LR
422
422
 
423
423
  ### 长视频跑到一半报 429 或中断了,要从头再来吗?
424
424
 
425
- 不用。VLM 场景分析可断点续传,限流会自愈;写好 `narration.json` 后重复同一条命令即可继续,剪辑模式在 `recap_phase.json` 记下解说对应的剪辑计划(改了计划会要求重写解说),续跑只会接同一个源视频、同一组参数的工作目录。
425
+ VLM 会保存已完成的场景;遇到疑似限流会降低并发重试一轮,仍失败时保留错误供处理。解决原因后重复同一条命令,可以复用匹配的场景缓存并继续。写好 `narration.json` 后也用原命令续跑;剪辑模式用 `recap_phase.json` 绑定写稿时的计划,改了计划需重新核对或重写解说。续跑只接受同一源视频、同一组参数的工作目录。
426
426
 
427
427
  ### VLM 认不出谁是谁,解说里全是"黑衣男子"?
428
428
 
@@ -2,10 +2,10 @@
2
2
  "schemaVersion": 1,
3
3
  "upstream": {
4
4
  "repository": "https://github.com/zenstory-ai/video-recap-skills.git",
5
- "commit": "539168622918e058bd250c793b82f043eced31e0",
5
+ "commit": "5785c33d8b5172cfa2837a8a0d57eb4b87837475",
6
6
  "releaseVersion": "0.6.2"
7
7
  },
8
- "generatedAt": "2026-10-08T11:36:39.521Z",
8
+ "generatedAt": "2026-10-15T09:51:04.161Z",
9
9
  "skills": [
10
10
  "video-assemble",
11
11
  "video-cut",
@@ -18,8 +18,8 @@
18
18
  "files": [
19
19
  {
20
20
  "path": "CHANGELOG.md",
21
- "sha256": "043143b851ca8357b371bb782c838a5e6593b6018b911edacab58fa862213786",
22
- "bytes": 107052
21
+ "sha256": "3557aac67f3d50d1f08045e648d40c5cf5fd6a9b7af8e88f9b8fb8443b400580",
22
+ "bytes": 108052
23
23
  },
24
24
  {
25
25
  "path": "LICENSE",
@@ -28,23 +28,23 @@
28
28
  },
29
29
  {
30
30
  "path": "README.en.md",
31
- "sha256": "61ca8e1d4d2ff312fb15444a6dfe1044de77ce83f47063b16db3a245a2a41d02",
32
- "bytes": 30977
31
+ "sha256": "0404dc0dee26a81ecf1595a662a3b74ea7a9edc5df90362518bb0ce4a314a950",
32
+ "bytes": 31281
33
33
  },
34
34
  {
35
35
  "path": "README.md",
36
- "sha256": "e431bb4c4fb45c21e8d9a9e4523bcaceb14cb5be545c55fbc7af3f379252f253",
37
- "bytes": 26828
36
+ "sha256": "a159253fc336a3cea2c6ae7716fd726940a7925c617a1485897fd6de07808f43",
37
+ "bytes": 27093
38
38
  },
39
39
  {
40
40
  "path": "skills/video-assemble/SKILL.md",
41
- "sha256": "db9ba594e52b0e7a8a3daf9a439b6e079621e5bb0bec68818969664b8cff0b1f",
42
- "bytes": 12210
41
+ "sha256": "88ab7ae6de32321e1bdb1858a132e7968b3f5f20a8b549378f727dfe0d3db2ce",
42
+ "bytes": 12364
43
43
  },
44
44
  {
45
45
  "path": "skills/video-assemble/references/audio-modes.md",
46
- "sha256": "39a6544ba0918db7de0a113f6d40a3af3c4e96d6158464e698681cbcef451bac",
47
- "bytes": 3537
46
+ "sha256": "e6d93e29367a3cae24da1bd1b5719810b3d9d3b587062031887b0eb1150f001c",
47
+ "bytes": 3509
48
48
  },
49
49
  {
50
50
  "path": "skills/video-assemble/references/explicit-audio-mix.md",
@@ -58,8 +58,8 @@
58
58
  },
59
59
  {
60
60
  "path": "skills/video-assemble/references/jianying/SOURCE.md",
61
- "sha256": "726b1e12cbde535571cf0c37bd0a4b5dfe6da951bf2918e2210abcbd11e84c79",
62
- "bytes": 781
61
+ "sha256": "43dd440f97b8b07153aeeb66fda3722096b059b297dde356fd6d4f5ef2d1fc00",
62
+ "bytes": 703
63
63
  },
64
64
  {
65
65
  "path": "skills/video-assemble/references/jianying/empty_draft_meta_info.json",
@@ -108,13 +108,13 @@
108
108
  },
109
109
  {
110
110
  "path": "skills/video-assemble/references/packaging.md",
111
- "sha256": "f4f8a1e3bec7775d14a976954e5173794e6109ac375fb3e466d8e08b95e55dd5",
112
- "bytes": 2856
111
+ "sha256": "b9d294ea26c7a359d3dae969fe824c9d9904ec51ad92dd502c1a7a9bc7f3fb53",
112
+ "bytes": 2801
113
113
  },
114
114
  {
115
115
  "path": "skills/video-assemble/references/source-score.md",
116
- "sha256": "cbed800c93e32ddc00987ae4cb5fa77e7e4cc5bbc677a134e61d6adb925c7208",
117
- "bytes": 6864
116
+ "sha256": "7d33561851dd9a39fb9c60e91979faa95f54321301acf9a6d4d4a12444556437",
117
+ "bytes": 6869
118
118
  },
119
119
  {
120
120
  "path": "skills/video-assemble/references/subtitle-track.md",
@@ -328,13 +328,13 @@
328
328
  },
329
329
  {
330
330
  "path": "skills/video-cut/SKILL.md",
331
- "sha256": "d4068e941c98bd773c6000cbafe1f593ada4ac7914ada378b1db5a301879c6b4",
332
- "bytes": 11756
331
+ "sha256": "063eef0a661dd72cdcd987dbf7b59785094a32a69f0fbfded6e5675f01947dea",
332
+ "bytes": 11734
333
333
  },
334
334
  {
335
335
  "path": "skills/video-cut/references/shot-review.md",
336
- "sha256": "3be8547c064a44f2d03d8cf83b1edcc6cf7c72c0916e794a942bb8476accb790",
337
- "bytes": 5537
336
+ "sha256": "12dd50bcdb2ecb15cbd961f017d94cdca1f73bb042581cb73770f913ab0957f7",
337
+ "bytes": 5570
338
338
  },
339
339
  {
340
340
  "path": "skills/video-cut/scripts/cut.py",
@@ -398,28 +398,28 @@
398
398
  },
399
399
  {
400
400
  "path": "skills/video-recap/SKILL.md",
401
- "sha256": "dcee225f8a0e2f797ef03640bf5462c91b28efb34f4e9378ed7fcad373d5df2c",
402
- "bytes": 17027
401
+ "sha256": "e321596c52db87ef347f66d6782d2548c2516b8415f1aa89e4bc460d58f18240",
402
+ "bytes": 17221
403
403
  },
404
404
  {
405
405
  "path": "skills/video-recap/references/audio-routing.md",
406
- "sha256": "31d245880c19b86f795ee8a6265cb681198938cf95e5d5876443a21810b6ceee",
407
- "bytes": 7361
406
+ "sha256": "b13bddf5212d9a576b9dc518e09ae9da827dc48f791b9813c7fa48147190b991",
407
+ "bytes": 7245
408
408
  },
409
409
  {
410
410
  "path": "skills/video-recap/references/config-playbook.md",
411
- "sha256": "0cfc3cf66d39a9faa56d1b61e1b1fba3fefb81a825a3352174a2d0f286cbd821",
412
- "bytes": 13265
411
+ "sha256": "7e6d02f53564238799cb34d9909fd250007042ca86625a3722469b35475c8f60",
412
+ "bytes": 13079
413
413
  },
414
414
  {
415
415
  "path": "skills/video-recap/references/data-schema.md",
416
- "sha256": "d9992b03e036d8c53f73c24232eac7249b3ebc1931ca012286adf085d7746a91",
417
- "bytes": 36030
416
+ "sha256": "6741b2abbce4c6e38baebc4f97f863dbc632d759dd63eb9111134309f1f1b78e",
417
+ "bytes": 36172
418
418
  },
419
419
  {
420
420
  "path": "skills/video-recap/references/resource-library.md",
421
- "sha256": "ae7b2646415d3d9eee1d492d3f21eccb736b44ba32e4384761e76735a0d91bcf",
422
- "bytes": 10117
421
+ "sha256": "86cbdcb95d2381f573513906ce2250713c6ae34df2909918f9487d164491e80b",
422
+ "bytes": 10146
423
423
  },
424
424
  {
425
425
  "path": "skills/video-recap/scripts/doctor.py",
@@ -508,13 +508,13 @@
508
508
  },
509
509
  {
510
510
  "path": "skills/video-reference/SKILL.md",
511
- "sha256": "88940900b89b705883aca00598719e89516b5941a4623f0f9de5eb21d0fb3cb9",
512
- "bytes": 9699
511
+ "sha256": "eba7399c9021d3ad218a4f4f5cfd4e1f02538c0d31c3670a6a5531487aa927e9",
512
+ "bytes": 9672
513
513
  },
514
514
  {
515
515
  "path": "skills/video-reference/references/reference-schema.md",
516
- "sha256": "844be9370c1e03d90da51719e9e9375ddc72cec0b3906668c10682404757486f",
517
- "bytes": 9279
516
+ "sha256": "1a0315d268fd449460fe0ff9e89040b873bca88e6ae890683678e8108d620724",
517
+ "bytes": 9258
518
518
  },
519
519
  {
520
520
  "path": "skills/video-reference/scripts/lib.py",
@@ -548,13 +548,13 @@
548
548
  },
549
549
  {
550
550
  "path": "skills/video-script/SKILL.md",
551
- "sha256": "7ae12d12f77e300829650789452caf867f1cab6bd4f8e002fcb3fc4394b54369",
552
- "bytes": 18296
551
+ "sha256": "02f231df44d60985f23b6cd2ee1c731ca234f5a6cfe1233418535f44919ea405",
552
+ "bytes": 18362
553
553
  },
554
554
  {
555
555
  "path": "skills/video-script/references/creative-editing-playbook.md",
556
- "sha256": "c20ee6bd4f6923a1009b451408416e6db91f70a683f072ffd4e89b3fbb1fe436",
557
- "bytes": 13959
556
+ "sha256": "26269189312abf42f83e275de960866c3b21e7c2d26f00e65d61165b324dde3d",
557
+ "bytes": 13952
558
558
  },
559
559
  {
560
560
  "path": "skills/video-script/references/promotional-copy.md",
@@ -633,13 +633,13 @@
633
633
  },
634
634
  {
635
635
  "path": "skills/video-understanding/SKILL.md",
636
- "sha256": "e62600a4194f720a80075dcdb13e65fe7afcbbefba39e8f018de840e871d3ef6",
637
- "bytes": 7191
636
+ "sha256": "e0a9612667bf2fdff0b50252daa18d3546c1a88cb53bca61544317dea86736b5",
637
+ "bytes": 8117
638
638
  },
639
639
  {
640
640
  "path": "skills/video-understanding/references/data-schema.md",
641
- "sha256": "6f0ac8486933a1bab344dd230830971fe5ab6ed3e1f5711068554f28825c3b1a",
642
- "bytes": 6212
641
+ "sha256": "997beda5d80510520a50e84c332f0f25b03216eff5f4b2a480be8e438b410ece",
642
+ "bytes": 6218
643
643
  },
644
644
  {
645
645
  "path": "skills/video-understanding/references/prompt-templates.md",
@@ -758,13 +758,13 @@
758
758
  },
759
759
  {
760
760
  "path": "skills/video-voiceover/SKILL.md",
761
- "sha256": "2ba0c0c0ded5d561f89ed80d42b7075edc469fb820224a547e97d122ff50fdf9",
762
- "bytes": 11407
761
+ "sha256": "80f1ecf4c26ca9fd93f121fcfd68886d7bbeaccd7a8783b998fc1a42f851a354",
762
+ "bytes": 11341
763
763
  },
764
764
  {
765
765
  "path": "skills/video-voiceover/references/index-tts.md",
766
- "sha256": "fb3972271efd389da432310d69787fcab93460ac32485ca4f2cd11a49865642c",
767
- "bytes": 1623
766
+ "sha256": "485ac7c63c244b60b3b11b9d3b9a8e0158d8dccc057a7e982ab71d570b23f4ea",
767
+ "bytes": 1553
768
768
  },
769
769
  {
770
770
  "path": "skills/video-voiceover/scripts/approved_text_policy.py",
@@ -1,10 +1,7 @@
1
1
  ---
2
2
  name: video-assemble
3
3
  user-invocable: false
4
- description: >
5
- 合成视频解说最终成片:把旁白音频铺到源视频上,按旁白窗口压低原声,生成 SRT / ASS 字幕并可烧录,
6
- 最后做响度标准化。作为最终合成阶段使用。输入源视频、tts_meta.json 与旁白位置;
7
- 输出 recap 成片和字幕。触发词:视频合成、混音、字幕、压字幕、assemble video、mux、ducking、subtitles、成片。
4
+ description: 合成视频解说最终成片:把旁白音频铺到源视频上,按旁白窗口压低原声,生成 SRT / ASS 字幕并可烧录, 最后做响度标准化。作为最终合成阶段使用。输入源视频、tts_meta.json 与旁白位置; 输出 recap 成片和字幕。触发词:视频合成、混音、字幕、压字幕、assemble video、mux、ducking、subtitles、成片。
8
5
  ---
9
6
 
10
7
  ## 1. 定位
@@ -27,7 +24,7 @@ description: >
27
24
  - `silence`
28
25
  - `narration`
29
26
 
30
- 因此,旁白间隙是主动选择,不是必须填满的空白。不要为了“更满”而加入通用 BGM、压住必须听见的台词或消除有意义的沉默。
27
+ 旁白间隙按已选声音分工保留。只在确有任务时加入 BGM,并保住必须听见的台词与有意义的沉默。
31
28
 
32
29
  当前渲染器不解析 `visual_audio_board.json`;Agent 通过旁白时间、`overlaps_speech`、原声留白与现有混音参数落实这些决定。
33
30
 
@@ -73,7 +70,7 @@ python3 scripts/assemble.py <video> --work-dir <work_dir> \
73
70
  - 段落首块(与上一块作者留白超过 1.6 秒)从写的 `start` 放置,但不早于上一块实际结尾加它的 `pause_after_ms`,上一块超时会把它往后推;段落内后续块紧接上一块的实际结尾(间隔 0.35 秒),最多比写的 `start` 提前 1.2 秒。这一提前发生在旁白校验之后,所以提前的那一段不能进入原声对白:有对白时最多提前到最后一段对白结束处。真的提前了的块在 `source_entry_status` 记 `paragraph_tightened`,并在 `written_start` 记写的 `start`。
74
71
  - 旁白不做任何容差裁尾;温和加速后仍放不下即 `no_safe_fit`。每段 `_placed_*.wav`
75
72
  必须与序列化后的时间线区间等长或更短,否则 `timeline_audio_mismatch` 阻断。
76
- - 已采用配音的 v1 合同只支持原速、禁止段内适速;不能让环境默认 1.15 倍速或旧缓存覆盖它。放不下就修订安排,不裁尾。严格运行使用新工作目录与新输出路径;输入/实际混音来源变动或 QC 失败时,不发布候选成片。没有采用文件的旧入口仍是兼容模式,不自动获得同等证据。
73
+ - 已采用配音按其 `tempo_policy` 执行:保守默认是原速且禁止段内适速,也可显式采用符合范围要求的其他速度策略;环境默认 1.15 倍速不能覆盖采用决定。显式完整声音混音分支固定原速,不做自动适配。放不下就修订安排,不裁尾。严格运行使用新工作目录与新输出路径;输入/实际混音来源变动或 QC 失败时,不发布候选成片。没有采用文件时仍可按默认旁白路径合成,但消费记录为 `UNADOPTED`。
77
74
  - 原声在旁白结束后最多再压低 3 秒,等这段时间内的下一个句末锚点:压到它的 `pause_start`,只在实测停顿内渐强,
78
75
  于 `source_restore_at` 回满(锚点为 `unverified` 时状态记 `sentence_boundary_unverified`)。3 秒内没有锚点时,
79
76
  离时间线末端不足 3 秒就压到末端(`held_to_timeline_end`),否则在旁白结束处直接回满(`bounded_release`),
@@ -84,7 +81,7 @@ python3 scripts/assemble.py <video> --work-dir <work_dir> \
84
81
  - 导出只接受 `schema_version: 2` 的 `timeline.json`,只映射视频、音频、字幕和图片叠层(`scale` / `position`);变速、转场、蒙版、富文本、特效轨等手写扩展字段会被明确拒绝。
85
82
  - 剪映草稿引用未烧录的源视频,因此原片硬字幕仍会保留,必要时在剪映内另行遮罩。
86
83
  - 字幕外观可用 `SUBTITLE_FONT_SIZE`、`SUBTITLE_MARGIN_V`、`SUBTITLE_MAX_CHARS` 等控制。
87
- - `SUBTITLE_Y_TOP/BOT` 把 ASS 基线放到测得的原片字幕区域,坐标为显示画布上的半开 `[top, bot)`,只接受方形或近方形像素(SAR 与 1:1 相差不超过 2%,未标注的 `0:1` 按方形);显式遮罩策略下默认 `SUBTITLE_MASK_OPACITY=0.6`,`SOURCE_SUBTITLE_MASK_TIMING=narration`。
84
+ - `SUBTITLE_Y_TOP/BOT` 把 ASS 基线放到测得的原片字幕区域,坐标为显示画布上的半开 `[top, bot)`,只接受方形或近方形像素(SAR 与 1:1 相差不超过 2%,未标注的 `0:1` 按方形);比例遮罩默认 `SUBTITLE_MASK_OPACITY=0.6`;显式指定实测字幕带时默认不透明,除非另设该变量。`SOURCE_SUBTITLE_MASK_TIMING` 默认是 `narration`。
88
85
  - 原声在旁白间隙回到 `IDLE_ORIG_VOLUME`,旁白下压到 `SPEECH_DUCKING_VOLUME`;`DUCK_FADE_SECONDS` 控制过渡。还可配置 `DUCK_BRIDGE_SECONDS`、`ZONE_DUCKING_VOLUME`、`FINAL_LOUDNORM`、`TARGET_LUFS` 与 `LOUDNESS_LIMITER_MAX_DB`。
89
86
  - 可通过 `BGM_PATH` 指定 BGM;它会循环到成片长度,并按 `BGM_VOLUME` / `BGM_DUCKING_VOLUME` 混音。不要在没有创作依据时设置通用 BGM。
90
87
  - 烧录字幕需要带 `subtitles` / libass 的 ffmpeg,合成阶段在渲染前预检。显式要求烧录(`--burn-subtitles` 或环境变量 `BURN_SUBTITLES`)时缺 libass 直接失败;只是默认开启时降级:不烧录,交付外挂 `.srt`(留白里的 `「」` 原声对白仅在有 `user_subtitles.*` 时照常写进去;原本由遮罩触发的对白随遮罩一起关闭,原片硬字幕可见),`visual_qc.json` 的 `warnings` 与 `assembly_manifest.json` 的 `warnings` 记一条 `subtitle_burn_degraded`,`subtitles.burn_degraded_reason` 写原因。降级后遮罩照旧关闭(`mask.trigger` 为 `burn_subtitles_degraded`)。
@@ -92,7 +89,7 @@ python3 scripts/assemble.py <video> --work-dir <work_dir> \
92
89
  - 成片画面一律是 H.264 8-bit 4:2:0 并带 `+faststart`:不需要滤镜、且源画面已是 H.264 8-bit 4:2:0(`yuv420p`,或全范围的 `yuvj420p`)、宽高为偶数时才流复制,原样交付;否则重编码为 `yuv420p`。色彩标记:源未标记或已是 BT.709 时标为 BT.709(`-colorspace/-color_primaries/-color_trc bt709`),其它已声明的色彩空间原样保留;全范围(`pc`)源保留 `pc`,其余标 `tv`。YUV 源只改标记,不转换像素;RGB 源(ffprobe 报 `gbr`,如 PNG/QuickTime RLE 封装的 MOV)没有 YUV 矩阵可保留,按 BT.709 limited 转换。结果记在 `assembly_qc.json` 的 `delivery_qc.color_tags`(RGB 源多一个 `from_rgb: true`)。
93
90
  - 原声留白中的对白字幕优先读取 Agent 校对的 `original_subtitles.json`;否则保守映射 ASR。只有遮罩覆盖留白或用户字幕明确要求替换时才烧录原声对白,并用 `「」` 与旁白区分。
94
91
 
95
- ### 按原片区间准备声音,而不是整体压低旧成片
92
+ ### 按原片区间准备声音底轨
96
93
 
97
94
  已有多段原声取舍和独立 BGM 决定时,先用 `references/source-score.md` 的独立
98
95
  `source_score.py` 从原片声音流按精确帧区间重建原声轨、音乐轨及两者之和;它只输出
@@ -6,7 +6,7 @@ zero-based audio ordinal used by FFmpeg's `0:a:N` selector.
6
6
 
7
7
  ## `narration`
8
8
 
9
- - Requires non-empty `tts_meta.json` segments, as before.
9
+ - Requires non-empty `tts_meta.json` segments.
10
10
  - Builds/places narration WAV, performs source ducking and optional BGM mix,
11
11
  then applies the configured final loudness/limiter stage and AAC encoding.
12
12
  - Missing source audio may use the existing synthetic-silence fallback.
@@ -21,8 +21,8 @@ zero-based audio ordinal used by FFmpeg's `0:a:N` selector.
21
21
  - Uses the selected input audio stream, applies `IDLE_ORIG_VOLUME`, mixes a
22
22
  declared `BGM_PATH` when present, and runs the configured final
23
23
  loudness/limiter stage before AAC encoding.
24
- - A declared but missing `BGM_PATH` is an error in this new mode (the legacy
25
- narration-mode warn-and-skip behavior remains unchanged).
24
+ - A declared but missing `BGM_PATH` is an error in source-mix mode. Narration
25
+ mode warns and skips the missing music.
26
26
  - This is a processed mix, not frozen audio. `assembly_qc.json` reports the
27
27
  operations that actually ran.
28
28
 
@@ -5,8 +5,7 @@ These JSON protocol templates are pinned to
5
5
  `ef4eb46c823910553f901649f2f13fd7575e748f`, under its MIT license. They are
6
6
  data/schema baselines, not executable upstream code. Runtime builders deep-copy
7
7
  the templates and replace authored values such as IDs, paths, timings, and canvas
8
- dimensions. Only the templates the exporter builds from are kept; the nested
9
- compound-draft templates were dropped together with green-screen export.
8
+ dimensions. The directory contains only templates used by the exporter.
10
9
 
11
10
  The required copyright and permission notice is preserved in
12
11
  `LICENSE.duo-video` in this directory.
@@ -13,8 +13,7 @@
13
13
  4. 渲染完整透明字幕层,再 overlay 到锁定母版;合成后确认音轨未被意外改写。
14
14
  5. 完整播放实际最终文件,并复查字幕遮脸、跳字、断行、首尾帧和边界处残影。
15
15
 
16
- 已有项目级渲染器能输出精确包装时,由该项目自己把它生成的透明层合成到锁定母版,而不是用通用白字黑框
17
- 近似品牌样式;本技能不提供逐帧前景合成命令。合成时音轨按流复制,合成后核对帧率、时长与音轨未被改写,
16
+ 已有项目级渲染器时,由该项目把透明层合成到锁定母版,以保留已确认的包装样式;本技能不提供逐帧前景合成命令。合成时音轨按流复制,合成后核对帧率、时长与音轨未被改写,
18
17
  再写入新文件。片名卡有渐显或动画时须渲染完整序列,不能冻结最后一张图代替。
19
18
 
20
19
  ## 静态包装图层 `packaging_layers.json`
@@ -73,8 +73,9 @@ Each unique selected source stream is decoded from its actual PTS clock to canon
73
73
  48 kHz stereo exactly once. All authored intervals are then cut from that canonical
74
74
  sample array—never independently decoded or `-ss`-seeked per edit.
75
75
 
76
- The source segment duration is `(source_end_frame-source_start_frame)*48000/fps`.
77
- Its output end is derived, not declared. Source segments and explicit silence ranges
76
+ The source segment length is the difference between the rounded start and end
77
+ sample positions described above. Its output end is derived from that integer
78
+ length, not declared or rounded from the duration again. Source segments and explicit silence ranges
78
79
  must form an exact, nonoverlapping partition of `[0,total_samples)`. There are no
79
80
  implicit gaps. Supported roles are `protected_original` and
80
81
  `mixed_original_under_narration`; their gains and labels are retained unchanged.
@@ -131,9 +132,7 @@ directory cannot publish final-named beds or a receipt.
131
132
  Diagnostic command/log/intermediate files may remain in the unique failed directory.
132
133
 
133
134
  To consume a completed receipt with explicitly adopted narration, use the strict
134
- `--audio-mix-adoption` path in `explicit-audio-mix.md`. To deliver an already complete
135
- prepared bed without narration, a dedicated prepared-audio renderer will follow in a
136
- later release. Do not feed `prepared_bed.wav` through legacy source ducking or
135
+ `--audio-mix-adoption` path in `explicit-audio-mix.md`. This path does not render a final video from a prepared bed alone. Do not feed `prepared_bed.wav` through legacy source ducking or
137
136
  ambient BGM/loudness settings.
138
137
 
139
138
  ## 与旧入口的关系(中文摘要)
@@ -143,5 +142,5 @@ ambient BGM/loudness settings.
143
142
  完整音乐决定且不再叠加配乐,使用严格的 `score:{"kind":"none"}`;它生成真实全零 score,
144
143
  并保持 prepared 与 source 逐字节相同,不伪造静音音乐资产。
145
144
 
146
- 这一步仅输出声音底轨和来源回执,不是最终视频。旧入口保留兼容行为;调用方须区分
145
+ 这一步输出声音底轨和来源回执,后续合成负责最终视频。调用方须区分
147
146
  “底轨已验证”“配音已验证”和“完整混音已验证”三种状态,不能相互冒充。
@@ -1,11 +1,7 @@
1
1
  ---
2
2
  name: video-cut
3
3
  user-invocable: false
4
- description: >
5
- 把长视频按 Agent 选择的原片区间剪成短片。作为两阶段创作流程中的剪辑环节,读取 clip_plan.json 与源视频,
6
- 输出 edited_source.mp4;随后 Agent 按输出时间线写 narration.json。支持单视频与多视频(sources manifest)拼剪,
7
- 本工具不读取、不映射旁白。
8
- 触发词:视频剪辑、剪辑式解说、video cut、clip plan、拼剪。
4
+ description: 把长视频按 Agent 选择的原片区间剪成短片。作为两阶段创作流程中的剪辑环节,读取 clip_plan.json 与源视频, 输出 edited_source.mp4;随后 Agent 按输出时间线写 narration.json。支持单视频与多视频(sources manifest)拼剪, 本工具不读取、不映射旁白。 触发词:视频剪辑、剪辑式解说、video cut、clip plan、拼剪。
9
5
  ---
10
6
 
11
7
  ## 1. 定位
@@ -18,7 +14,7 @@ description: >
18
14
  4. 拼接选定区间,输出恒定帧率的 `edited_source.mp4`,帧数与 `clip_plan_validated.json` 记录的一致。
19
15
  5. 到此停止,由 Agent 按真实输出时间线写 `narration.json`;本工具不读取旁白,也不做原片→输出映射。
20
16
 
21
- 相同输入会得到相同输出。`edited_source.mp4.meta.json` 记录标准化 clips、渲染设置和每个源文件的 `size`/`mtime_ns`;三者与当前一致且 `edited_source.mp4` 存在非空才复用,任一不同即重渲染。只有 sidecar 而没有媒体文件不复用。
17
+ 渲染缓存按输入与设置复用。`edited_source.mp4.meta.json` 记录标准化 clips、渲染设置和每个源文件的 `size`/`mtime_ns`;三者与当前一致且 `edited_source.mp4` 存在非空才复用,任一不同即重渲染。只有 sidecar 而没有媒体文件不复用。
22
18
 
23
19
  ## 2. 输入契约
24
20
 
@@ -43,7 +39,7 @@ description: >
43
39
 
44
40
  ## 3. 剪辑意图契约
45
41
 
46
- 工具不会替 Agent 做创作选择。写片段前先完成本节的剪辑意图检查,并让每个区间映射到 `recap_story_plan.json` 的一个 beat。
42
+ Agent 写片段前先确认剪辑意图,并让每个区间映射到 `recap_story_plan.json` 的一个 beat;工具负责执行与校验。
47
43
 
48
44
  使用现有自由文本 `reason` 保存简洁决定:
49
45
 
@@ -40,7 +40,7 @@ python3 scripts/cut.py source.mp4 --work-dir work --review-shots
40
40
 
41
41
  对每个候选看前后 0.5–1 秒,核对角色表演、完整动作、对白与原片切镜;未实际播放就保留 `NEEDS_DYNAMIC_REVIEW`。
42
42
  先对照源画面和取景参数:同一原生镜头中途换 crop/画窗,或曝光闪光,都可能产生切点分数;两个候选间的帧数不一定是一段真实短镜头。
43
- 修复后用同样参数重跑对照:候选消失才算真的修掉;仍被保留的短镜逐个判断,不因“短”就判错。
43
+ 修复后用同样参数重跑,核对候选变化,再以正常速度播放确认修复是否成立;仍被保留的短镜逐个判断,不因“短”就判错。
44
44
  判断无关残镜后,在作者计划里删除整个无关镜头或恢复同源连续画面;相关反应可回原片扩完整,不能用定格补长、转场掩盖或只修导出文件。
45
45
 
46
46
  ## 修短残镜时的取景复核
@@ -1,10 +1,6 @@
1
1
  ---
2
2
  name: video-recap
3
- description: >
4
- 从输入视频生成中文解说成片或原声剧情短片。用户提供 .mp4 / .mov / .mkv / .webm,并要求剪辑、添加旁白、
5
- 配音、总结、短剧/电视剧/电影/纪录片/科普解说时使用。负责编排 video-* 技能链:视频理解 →
6
- Agent 制定故事与视听方案 → 剪辑 → 配音 → 合成。触发词:视频解说、视频旁白、生成解说、
7
- 视频 recap、video recap、voiceover、narration、auto-dub、recap。
3
+ description: 从输入视频生成中文解说成片或原声剧情短片。用户提供 .mp4 / .mov / .mkv / .webm,并要求剪辑、添加旁白、 配音、总结、短剧/电视剧/电影/纪录片/科普解说时使用。负责编排 video-* 技能链:视频理解 → Agent 制定故事与视听方案 → 剪辑 → 配音 → 合成。触发词:视频解说、视频旁白、生成解说、 视频 recap、video recap、voiceover、narration、auto-dub、recap。
8
4
  ---
9
5
 
10
6
  ## 1. 定位与流程
@@ -60,7 +56,7 @@ video-assemble 严格验证,recap 只核对子技能绑定记录引用的是
60
56
 
61
57
  ## 2. 创作职责
62
58
 
63
- 这不是单纯的 JSON / 渲染流水线。Agent 是本次内容的创作负责人。先判断本轮的**创作控制模式**(CREATE / DIRECTED / REVISION,与 `--edit-mode` 无关),再在进入昂贵的下游处理前完成五次判断:
59
+ Agent 负责本次创作。先判断本轮的**创作控制模式**(CREATE / DIRECTED / REVISION,与 `--edit-mode` 分别选择),再在配音和渲染前完成五次判断:
64
60
 
65
61
  1. **导演判断**:观众承诺、POV、戏剧问题、情绪终点与揭示节奏。
66
62
  2. **故事编辑**:beat 定义为“发生了什么变化”,不是场景摘要。
@@ -93,7 +89,7 @@ TTS 供应商由 `--tts-provider mimo-tts|fish-audio|index-tts`(或 `TTS_PROVI
93
89
 
94
90
  可覆盖配置见 `references/config-playbook.md`,`final_qc.json` 的字段见 `references/data-schema.md`。
95
91
 
96
- 下面的 `scripts/...` 均相对于本技能目录。若执行器从仓库根目录启动,请给脚本路径加上本技能的绝对目录。脚本启动后会自行定位兄弟技能和资源。
92
+ 下面的 `scripts/...` 均相对于本技能目录。若执行器从仓库根目录启动,请给脚本路径加上本技能的绝对目录。编排脚本从同一技能根目录定位所需阶段;安装时需让五个阶段技能与本技能位于同一层。
97
93
 
98
94
  ## 4. 标准解说流程(audio-mode narration)
99
95
 
@@ -161,13 +157,13 @@ python3 scripts/recap.py <video> --work-dir <work_dir> # 可追加 --edit-mode
161
157
 
162
158
  ### 4.5 字幕与克隆旁白
163
159
 
164
- 若要把旁白字幕固定在原片字幕区域,先在仓库根目录运行:
160
+ 若要把旁白字幕固定在原片字幕区域,先测量位置。完整源码安装可在仓库根目录运行以下工具;单独安装技能时,由 Agent 查看视频帧测出同一显示画布上的上下边界:
165
161
 
166
162
  ```bash
167
163
  python3 tools/measure_subtitle.py <video>
168
164
  ```
169
165
 
170
- 再传入测得的 `--subtitle-y-top/--subtitle-y-bot`。坐标基于 ffmpeg 自动旋转后的显示画布,区间为半开 `[top, bot)`,并要求底对齐 ASS 样式;显式设置后,该区域默认使用 60% 透明度的旁白窗口遮罩。
166
+ 再传入测得的 `--subtitle-y-top/--subtitle-y-bot`。坐标基于 ffmpeg 自动旋转后的显示画布,区间为半开 `[top, bot)`,并要求底对齐 ASS 样式;显式设置后,该区域默认使用不透明的旁白窗口遮罩;可用 `SUBTITLE_MASK_OPACITY` 调整。
171
167
 
172
168
  解说模式如需克隆参考声音,使用 `--voice-ref <audio>`;它与 dub 模式不同。
173
169
 
@@ -190,7 +186,7 @@ full/cut 交付如需让确定性的最终检查影响命令退出状态,显
190
186
  该参数不支持 `--edit-mode dub`;dub 未传该参数时的准备和渲染行为不变。
191
187
 
192
188
  交付时读 `final_qc.json` 的 `metadata.warnings`,有内容就原样告诉用户,不能只报“完成”。`subtitle_burn_degraded`
193
- 表示 ffmpeg 缺 libass、默认烧录被降级:成片里没有字幕,字幕在成片旁的同名 `.srt`。用户要烧录字幕,就请他装带 libass 的
189
+ 表示 ffmpeg 缺 libass、默认烧录被降级:新字幕保存在成片旁的同名 `.srt`,原片已有硬字幕仍保留。用户要烧录字幕,就请他装带 libass 的
194
190
  ffmpeg 后重跑;显式传 `--burn-subtitles` 时缺 libass 会在开跑前报错。旁白里写了 `visual_overlays` 而 ffmpeg 缺
195
191
  drawtext 时,流程在配音前停下,按报错删掉叠加或换 ffmpeg 后续跑。
196
192
 
@@ -256,4 +252,4 @@ python3 scripts/dashboard_server.py --root <目录> [--port 0] [--open]
256
252
  ## 8. 能力边界
257
253
 
258
254
  - 语义评审默认建议型、失败开放;只有调用方显式启用严格解说评审时,事实矛盾、残句或评审不可用才会在 TTS 前阻断。确定性校验阶段始终负责硬校验。
259
- - 宣发标题、花字或外部文案回填见 `video-script` 的 references/promotional-copy.md。
255
+ - 宣发标题、花字或外部文案回填交给 `video-script`,由它读取自己的宣发参考。
@@ -57,8 +57,7 @@ episodes. Use two existing stages rather than sending an old mix binding into a
57
57
  `SOURCES_JSON` must be `{"sources": [{"source_id": ..., "source_path": ...}]}`
58
58
  (optional per-source `duration` and `source_work_dir`); recap's
59
59
  `multi_source_manifest.json` already has this shape. A single-source cut omits
60
- `--sources-manifest`. For already locked frame decisions, use the picture-plan path instead. Read `clip_plan_validated.json` (or the locked path's
61
- `picture_map.json`) before placing sound.
60
+ `--sources-manifest`. Read `clip_plan_validated.json` before placing sound.
62
61
  2. Keep the selected WAVs, `tts_meta.json`, and `narration_adoption.json` when the words,
63
62
  WAV bytes, and selected voice are unchanged. Do not run voiceover just to move a line.
64
63
  In this explicit mix, new `output_start_sample` values own placement; old generation