@oh-story/dsh 0.1.15 → 0.1.17

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 (560) hide show
  1. package/README.md +17 -15
  2. package/lib/client.js +26 -15
  3. package/lib/client.js.map +2 -2
  4. package/lib/drama/manifest.json +284 -364
  5. package/lib/drama/package.json +4 -0
  6. package/lib/drama/skills/short-drama/SKILL.md +13 -14
  7. package/lib/drama/skills/short-drama/agents/openai.yaml +1 -1
  8. package/lib/drama/skills/short-drama/references/audience-reveal.md +4 -4
  9. package/lib/drama/skills/short-drama/references/contract-and-ownership.md +2 -2
  10. package/lib/drama/skills/short-drama/references/creator-documents.md +12 -10
  11. package/lib/drama/skills/short-drama/references/creator-workflow.md +6 -5
  12. package/lib/drama/skills/short-drama/references/form-cards/Q/347/211/210/350/241/250/350/276/276.md +8 -8
  13. 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
  14. 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
  15. package/lib/drama/skills/short-drama/references/form-cards//345/256/236/346/213/215.md +6 -7
  16. package/lib/drama/skills/short-drama/references/form-cards//346/260/264/345/242/250/347/254/224/350/247/246.md +2 -3
  17. 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
  18. package/lib/drama/skills/short-drama/references/knowhow-index.md +6 -7
  19. package/lib/drama/skills/short-drama/references/look-development.md +5 -7
  20. package/lib/drama/skills/short-drama/references/pickup-and-alternate.md +6 -3
  21. package/lib/drama/skills/short-drama/references/production-form-profiles.md +14 -16
  22. package/lib/drama/skills/short-drama/references/reference-roles.md +5 -3
  23. package/lib/drama/skills/short-drama/references/runtime-preflight.md +2 -1
  24. package/lib/drama/skills/short-drama-assets/SKILL.md +8 -8
  25. package/lib/drama/skills/short-drama-assets/agents/openai.yaml +1 -1
  26. package/lib/drama/skills/short-drama-assets/references/asset-review-checklist.md +26 -27
  27. package/lib/drama/skills/short-drama-assets/references/character-and-look.md +22 -22
  28. package/lib/drama/skills/short-drama-assets/references/continuity-delta.md +4 -4
  29. package/lib/drama/skills/short-drama-assets/references/continuity-lock.md +4 -4
  30. package/lib/drama/skills/short-drama-assets/references/era-anchors.md +3 -3
  31. package/lib/drama/skills/short-drama-assets/references/identity-vs-variant.md +5 -5
  32. package/lib/drama/skills/short-drama-assets/references/location-and-view.md +6 -7
  33. package/lib/drama/skills/short-drama-assets/references/occurrence-extraction.md +8 -9
  34. package/lib/drama/skills/short-drama-assets/references/prop-and-state.md +8 -11
  35. package/lib/drama/skills/short-drama-assets/references/voice-direction.md +22 -22
  36. package/lib/drama/skills/short-drama-develop/SKILL.md +6 -6
  37. package/lib/drama/skills/short-drama-develop/agents/openai.yaml +1 -1
  38. package/lib/drama/skills/short-drama-develop/assets/creative-brief.md +2 -2
  39. package/lib/drama/skills/short-drama-develop/assets/story-engine.md +2 -2
  40. package/lib/drama/skills/short-drama-develop/references/adaptation-craft.md +13 -12
  41. package/lib/drama/skills/short-drama-develop/references/creative-reference-intake.md +7 -7
  42. package/lib/drama/skills/short-drama-develop/references/director-brief-craft.md +7 -8
  43. package/lib/drama/skills/short-drama-develop/references/episode-design.md +20 -24
  44. package/lib/drama/skills/short-drama-develop/references/genre-and-hook-playbook.md +7 -7
  45. 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
  46. 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
  47. 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
  48. 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
  49. 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
  50. 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
  51. 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
  52. package/lib/drama/skills/short-drama-develop/references/genre-cards//347/224/237/346/264/273/346/265/201.md +1 -1
  53. 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
  54. 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
  55. 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
  56. package/lib/drama/skills/short-drama-develop/references/genre-cards//351/200/206/350/242/255.md +1 -1
  57. 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
  58. package/lib/drama/skills/short-drama-develop/references/genre-cards.md +4 -4
  59. package/lib/drama/skills/short-drama-develop/references/mechanism-loop.md +6 -7
  60. package/lib/drama/skills/short-drama-develop/references/multi-episode-intake.md +19 -17
  61. package/lib/drama/skills/short-drama-develop/references/premise-devices.md +5 -5
  62. package/lib/drama/skills/short-drama-develop/references/reveal-reversal-payoff.md +6 -5
  63. package/lib/drama/skills/short-drama-develop/references/serial-character-and-memory.md +3 -4
  64. package/lib/drama/skills/short-drama-develop/references/stage-contract.md +7 -9
  65. package/lib/drama/skills/short-drama-develop/references/story-craft.md +8 -10
  66. package/lib/drama/skills/short-drama-edit/SKILL.md +11 -14
  67. package/lib/drama/skills/short-drama-edit/assets/remotion/README.md +12 -19
  68. package/lib/drama/skills/short-drama-edit/assets//345/211/252/350/276/221/345/215/225.md +2 -2
  69. package/lib/drama/skills/short-drama-edit/references/cut-craft.md +5 -4
  70. package/lib/drama/skills/short-drama-edit/references/generated-footage.md +1 -1
  71. package/lib/drama/skills/short-drama-edit/references/sound-and-subtitles.md +6 -4
  72. package/lib/drama/skills/short-drama-edit/references/stage-contract.md +5 -5
  73. package/lib/drama/skills/short-drama-edit/references/still-cuts.md +1 -1
  74. package/lib/drama/skills/short-drama-image-prompts/SKILL.md +7 -2
  75. package/lib/drama/skills/short-drama-image-prompts/agents/openai.yaml +1 -1
  76. package/lib/drama/skills/short-drama-image-prompts/references/character-and-look.md +4 -5
  77. package/lib/drama/skills/short-drama-image-prompts/references/common-recipe.md +17 -17
  78. package/lib/drama/skills/short-drama-image-prompts/references/edit-and-revision.md +10 -9
  79. package/lib/drama/skills/short-drama-image-prompts/references/location-plate.md +11 -12
  80. package/lib/drama/skills/short-drama-image-prompts/references/look-and-state-variant.md +6 -5
  81. package/lib/drama/skills/short-drama-image-prompts/references/lookdev-frame.md +2 -2
  82. package/lib/drama/skills/short-drama-image-prompts/references/production-sheet-recipes.md +6 -6
  83. package/lib/drama/skills/short-drama-image-prompts/references/prop-plate.md +8 -8
  84. package/lib/drama/skills/short-drama-image-prompts/references/review-and-fixtures.md +5 -4
  85. package/lib/drama/skills/short-drama-novel-analyze/SKILL.md +17 -24
  86. package/lib/drama/skills/short-drama-novel-analyze/references/adaptation-triage.md +3 -4
  87. package/lib/drama/skills/short-drama-novel-analyze/references/adaptation-value.md +5 -10
  88. package/lib/drama/skills/short-drama-novel-analyze/references/aggregation-and-entities.md +4 -6
  89. package/lib/drama/skills/short-drama-novel-analyze/references/chapter-extraction.md +9 -13
  90. package/lib/drama/skills/short-drama-novel-analyze/references/stage-contract.md +3 -7
  91. package/lib/drama/skills/short-drama-produce/SKILL.md +43 -42
  92. package/lib/drama/skills/short-drama-produce/agents/openai.yaml +1 -1
  93. package/lib/drama/skills/short-drama-produce/references/adapter-contract.md +31 -18
  94. package/lib/drama/skills/short-drama-produce/references/providers/gpt-image-2.md +1 -1
  95. package/lib/drama/skills/short-drama-produce/references/providers/minimax-h3-video.md +11 -6
  96. package/lib/drama/skills/short-drama-produce/references/providers/minimax-music.md +2 -2
  97. package/lib/drama/skills/short-drama-produce/references/providers/minimax-speech.md +7 -5
  98. package/lib/drama/skills/short-drama-produce/references/providers/seedance.md +14 -8
  99. package/lib/drama/skills/short-drama-review/SKILL.md +9 -9
  100. package/lib/drama/skills/short-drama-review/agents/openai.yaml +1 -1
  101. package/lib/drama/skills/short-drama-review/references/anti-template-repair.md +10 -11
  102. package/lib/drama/skills/short-drama-review/references/production-quality-gates.md +24 -23
  103. package/lib/drama/skills/short-drama-review/references/project-calibration.md +17 -16
  104. package/lib/drama/skills/short-drama-review/references/review-method.md +8 -6
  105. package/lib/drama/skills/short-drama-review/references/rubric-assets-prompts.md +7 -6
  106. package/lib/drama/skills/short-drama-review/references/rubric-source-analysis.md +17 -10
  107. package/lib/drama/skills/short-drama-review/references/rubric-story-script.md +29 -25
  108. package/lib/drama/skills/short-drama-review/references/rubric-visual-motion.md +11 -11
  109. package/lib/drama/skills/short-drama-review/references/stage-contract.md +3 -2
  110. package/lib/drama/skills/short-drama-storyboard/SKILL.md +8 -10
  111. package/lib/drama/skills/short-drama-storyboard/agents/openai.yaml +1 -1
  112. package/lib/drama/skills/short-drama-storyboard/references/blocking-playbooks.md +8 -11
  113. package/lib/drama/skills/short-drama-storyboard/references/comic-keyframe-lexicon.md +11 -12
  114. package/lib/drama/skills/short-drama-storyboard/references/coverage-audition.md +4 -5
  115. package/lib/drama/skills/short-drama-storyboard/references/keyframe-craft.md +19 -24
  116. package/lib/drama/skills/short-drama-storyboard/references/lighting-craft.md +1 -1
  117. package/lib/drama/skills/short-drama-storyboard/references/production-shot-grammar.md +26 -29
  118. package/lib/drama/skills/short-drama-storyboard/references/review-and-fixtures.md +6 -5
  119. package/lib/drama/skills/short-drama-storyboard/references/scene-visual-plan.md +2 -2
  120. package/lib/drama/skills/short-drama-storyboard/references/screenplay-to-keyframe-example.md +4 -4
  121. package/lib/drama/skills/short-drama-storyboard/references/shot-craft.md +8 -8
  122. package/lib/drama/skills/short-drama-storyboard/references/shot-revision-identity.md +3 -3
  123. package/lib/drama/skills/short-drama-video-prompts/SKILL.md +10 -7
  124. package/lib/drama/skills/short-drama-video-prompts/agents/openai.yaml +1 -1
  125. package/lib/drama/skills/short-drama-video-prompts/references/camera-audio-continuity.md +63 -61
  126. package/lib/drama/skills/short-drama-video-prompts/references/delivery-profile.md +20 -18
  127. package/lib/drama/skills/short-drama-video-prompts/references/generability.md +12 -12
  128. package/lib/drama/skills/short-drama-video-prompts/references/minimax-h3.md +4 -3
  129. package/lib/drama/skills/short-drama-video-prompts/references/motion-recipe.md +38 -40
  130. package/lib/drama/skills/short-drama-video-prompts/references/performance-action-timing.md +36 -36
  131. package/lib/drama/skills/short-drama-video-prompts/references/production-prompt-grammar.md +17 -21
  132. package/lib/drama/skills/short-drama-video-prompts/references/review-and-fixtures.md +10 -11
  133. package/lib/drama/skills/short-drama-video-prompts/references/seedance-2.0.md +1 -1
  134. package/lib/drama/skills/short-drama-video-prompts/references/seedance-2.5.md +2 -2
  135. package/lib/drama/skills/short-drama-video-prompts/references/target-model-profile.md +6 -12
  136. package/lib/drama/skills/short-drama-video-prompts/references/wan-3.0.md +2 -1
  137. package/lib/drama/skills/short-drama-write/SKILL.md +15 -15
  138. package/lib/drama/skills/short-drama-write/agents/openai.yaml +1 -1
  139. package/lib/drama/skills/short-drama-write/assets/screenplay.md +3 -4
  140. package/lib/drama/skills/short-drama-write/references/dialogue-craft.md +20 -22
  141. package/lib/drama/skills/short-drama-write/references/production-format-dialect.md +20 -22
  142. package/lib/drama/skills/short-drama-write/references/scene-handoff-capsule.md +10 -10
  143. package/lib/drama/skills/short-drama-write/references/scene-sound-dramaturgy.md +11 -9
  144. package/lib/drama/skills/short-drama-write/references/screenplay-format.md +11 -10
  145. package/lib/drama/skills/short-drama-write/references/script-craft.md +41 -47
  146. package/lib/drama/skills/short-drama-write/references/stage-contract.md +7 -5
  147. package/lib/drama/skills/short-drama-write/references/substitutable-realization.md +19 -25
  148. package/lib/index.js +120 -31
  149. package/lib/index.js.map +3 -3
  150. package/lib/novel-to-game/README.md +10 -11
  151. package/lib/novel-to-game/README_ZH.md +14 -15
  152. package/lib/novel-to-game/VERSION +1 -1
  153. package/lib/novel-to-game/manifest.json +34 -29
  154. package/lib/novel-to-game/package.json +4 -0
  155. package/lib/novel-to-game/skills/game-art-direction/SKILL.md +2 -2
  156. package/lib/novel-to-game/skills/game-art-direction/references/art-direction-method.md +4 -0
  157. package/lib/novel-to-game/skills/game-build/SKILL.md +9 -1
  158. package/lib/novel-to-game/skills/game-build/references/baked-sprite-workflow.md +19 -0
  159. package/lib/novel-to-game/skills/game-concept/SKILL.md +1 -1
  160. package/lib/novel-to-game/skills/game-concept/references/concept-method.md +4 -1
  161. package/lib/novel-to-game/skills/game-qa/references/test-design-method.md +1 -1
  162. package/lib/novel-to-game/skills/game-world-design/SKILL.md +1 -1
  163. package/lib/novel-to-game/skills/game-world-design/agents/openai.yaml +1 -1
  164. package/lib/novel-to-game/skills/novel-to-game/SKILL.md +6 -3
  165. package/lib/novel-to-game/skills/novel-to-game/references/intake-method.md +5 -4
  166. package/lib/novel-to-game/skills/novel-to-game/references/pipeline-contract.md +13 -2
  167. package/lib/oh-story/manifest.json +628 -803
  168. package/lib/oh-story/package.json +4 -0
  169. package/lib/oh-story/roles/chapter-extractor.md +13 -12
  170. package/lib/oh-story/roles/character-designer.md +20 -101
  171. package/lib/oh-story/roles/consistency-checker.md +7 -9
  172. package/lib/oh-story/roles/narrative-writer.md +22 -22
  173. package/lib/oh-story/roles/story-architect.md +22 -32
  174. package/lib/oh-story/roles/story-explorer.md +11 -14
  175. package/lib/oh-story/roles/story-researcher.md +13 -14
  176. package/lib/oh-story/skills/browser-cdp/SKILL.md +38 -26
  177. package/lib/oh-story/skills/story/SKILL.md +98 -63
  178. package/lib/oh-story/skills/story/VERSION +1 -1
  179. package/lib/oh-story/skills/story-cover/SKILL.md +46 -234
  180. package/lib/oh-story/skills/story-cover/references/api-fallback.md +128 -0
  181. package/lib/oh-story/skills/story-cover/references/cover-styles.md +61 -93
  182. package/lib/oh-story/skills/story-deslop/SKILL.md +75 -212
  183. package/lib/oh-story/skills/story-deslop/references/agent-calls.md +17 -3
  184. package/lib/oh-story/skills/story-deslop/references/banned-words.md +61 -151
  185. package/lib/oh-story/skills/story-deslop/references/deslop-gates.md +23 -160
  186. package/lib/oh-story/skills/story-deslop/references/expression.md +83 -0
  187. package/lib/oh-story/skills/story-deslop/references/narrative-focus.md +63 -0
  188. package/lib/oh-story/skills/story-deslop/references/story-logic.md +65 -0
  189. package/lib/oh-story/skills/story-deslop/references/style-resolution.md +5 -5
  190. package/lib/oh-story/skills/story-import/SKILL.md +18 -22
  191. package/lib/oh-story/skills/story-import/references/benchmark-sync.md +50 -0
  192. package/lib/oh-story/skills/story-import/references/character-state-reverse.md +9 -9
  193. package/lib/oh-story/skills/story-import/references/deep-analysis.md +7 -8
  194. package/lib/oh-story/skills/story-import/references/import-report.md +9 -8
  195. package/lib/oh-story/skills/story-import/references/import-special-cases.md +7 -17
  196. package/lib/oh-story/skills/story-import/references/import-tracking.md +6 -6
  197. package/lib/oh-story/skills/story-import/references/length-routing.md +10 -60
  198. package/lib/oh-story/skills/story-import/references/outline-reverse-rules.md +10 -10
  199. package/lib/oh-story/skills/story-import/references/outline-reverse.md +3 -3
  200. package/lib/oh-story/skills/story-import/references/structure-mapping-long.md +120 -132
  201. package/lib/oh-story/skills/story-import/references/structure-mapping-short.md +77 -92
  202. package/lib/oh-story/skills/story-import/references/tracking-initialization.md +2 -2
  203. package/lib/oh-story/skills/story-import/scripts/build_outline_brief.py +36 -59
  204. package/lib/oh-story/skills/story-import/scripts/check-outline-contract.js +5 -1
  205. package/lib/oh-story/skills/story-import/scripts/outline_view.py +286 -0
  206. package/lib/oh-story/skills/story-long-analyze/SKILL.md +41 -78
  207. package/lib/oh-story/skills/story-long-analyze/references/author-facing.md +28 -30
  208. package/lib/oh-story/skills/story-long-analyze/references/final-checks.md +9 -17
  209. package/lib/oh-story/skills/story-long-analyze/references/index-rebuild.md +9 -3
  210. package/lib/oh-story/skills/story-long-analyze/references/inspiration-library.md +23 -10
  211. package/lib/oh-story/skills/story-long-analyze/references/pipeline-ops.md +13 -20
  212. package/lib/oh-story/skills/story-long-analyze/references/stage1-golden-chapters.md +28 -29
  213. package/lib/oh-story/skills/story-long-analyze/references/stage2-extraction.md +74 -162
  214. package/lib/oh-story/skills/story-long-analyze/references/stage3-plot-rhythm.md +124 -309
  215. package/lib/oh-story/skills/story-long-analyze/references/stage4-characters-settings.md +49 -164
  216. package/lib/oh-story/skills/story-long-analyze/references/stage5-report.md +12 -13
  217. package/lib/oh-story/skills/story-long-analyze/references/style-profile-generator.md +114 -35
  218. package/lib/oh-story/skills/story-long-analyze/references/synthesis-inputs.md +16 -6
  219. package/lib/oh-story/skills/story-long-analyze/scripts/inspect_existing_assets.py +3 -1
  220. package/lib/oh-story/skills/story-long-analyze/scripts/manage_analysis_run.py +5 -1
  221. package/lib/oh-story/skills/story-long-scan/SKILL.md +54 -82
  222. package/lib/oh-story/skills/story-long-scan/references/genre-trends.md +47 -181
  223. package/lib/oh-story/skills/story-long-scan/references/platform-ciweimao.md +24 -7
  224. package/lib/oh-story/skills/story-long-scan/references/platform-fanqie.md +24 -22
  225. package/lib/oh-story/skills/story-long-scan/references/platform-jjwxc.md +25 -13
  226. package/lib/oh-story/skills/story-long-scan/references/platform-qidian.md +41 -27
  227. package/lib/oh-story/skills/story-long-scan/references/platform-qimao.md +26 -16
  228. package/lib/oh-story/skills/story-long-scan/references/topic-decision.md +31 -34
  229. package/lib/oh-story/skills/story-long-write/SKILL.md +12 -13
  230. package/lib/oh-story/skills/story-long-write/references/agent-calls.md +2 -2
  231. package/lib/oh-story/skills/story-long-write/references/artifact-protocols.md +53 -26
  232. package/lib/oh-story/skills/story-long-write/references/author-memory-maintenance.md +9 -7
  233. package/lib/oh-story/skills/story-long-write/references/author-memory.md +6 -6
  234. package/lib/oh-story/skills/story-long-write/references/banned-words.md +61 -151
  235. package/lib/oh-story/skills/story-long-write/references/benchmark-recall.md +4 -4
  236. package/lib/oh-story/skills/story-long-write/references/character-basics.md +57 -95
  237. package/lib/oh-story/skills/story-long-write/references/character-relations.md +120 -270
  238. package/lib/oh-story/skills/story-long-write/references/cross-book-recall.md +3 -3
  239. package/lib/oh-story/skills/story-long-write/references/dialogue-mastery.md +26 -29
  240. package/lib/oh-story/skills/story-long-write/references/emotion-on-page.md +9 -9
  241. package/lib/oh-story/skills/story-long-write/references/emotional-arc-design.md +38 -298
  242. package/lib/oh-story/skills/story-long-write/references/emotional-methods.md +33 -73
  243. package/lib/oh-story/skills/story-long-write/references/female-audience-writing.md +42 -89
  244. 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
  245. 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
  246. 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
  247. 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
  248. package/lib/oh-story/skills/story-long-write/references/genre-prose-cards//345/217/214/347/224/267/344/270/273.md +3 -3
  249. 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
  250. 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
  251. 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
  252. 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
  253. 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
  254. package/lib/oh-story/skills/story-long-write/references/genre-prose-cards//345/271/264/344/273/243.md +3 -3
  255. package/lib/oh-story/skills/story-long-write/references/genre-prose-cards//345/277/253/347/251/277.md +3 -3
  256. 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
  257. 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
  258. 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
  259. 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
  260. 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
  261. 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
  262. 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
  263. 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
  264. 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
  265. 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
  266. 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
  267. 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
  268. 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
  269. 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
  270. 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
  271. 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
  272. 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
  273. 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
  274. 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
  275. 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
  276. package/lib/oh-story/skills/story-long-write/references/genre-prose-cards.md +7 -7
  277. package/lib/oh-story/skills/story-long-write/references/genre-readers.md +99 -172
  278. package/lib/oh-story/skills/story-long-write/references/long-chapter-hooks.md +40 -120
  279. package/lib/oh-story/skills/story-long-write/references/long-chapter-quality.md +39 -91
  280. package/lib/oh-story/skills/story-long-write/references/long-format.md +2 -2
  281. package/lib/oh-story/skills/story-long-write/references/long-genre-catalog.md +82 -311
  282. package/lib/oh-story/skills/story-long-write/references/long-genre-mechanics.md +115 -326
  283. package/lib/oh-story/skills/story-long-write/references/long-reversal.md +4 -4
  284. package/lib/oh-story/skills/story-long-write/references/long-suspense.md +11 -13
  285. package/lib/oh-story/skills/story-long-write/references/opening-design.md +38 -334
  286. package/lib/oh-story/skills/story-long-write/references/outline-methods.md +128 -281
  287. package/lib/oh-story/skills/story-long-write/references/plot-core-methods.md +58 -499
  288. package/lib/oh-story/skills/story-long-write/references/project-files.md +12 -16
  289. package/lib/oh-story/skills/story-long-write/references/reader-contract-and-progression.md +1 -1
  290. package/lib/oh-story/skills/story-long-write/references/reference-index.md +29 -84
  291. package/lib/oh-story/skills/story-long-write/references/revision-diagnosis.md +31 -0
  292. package/lib/oh-story/skills/story-long-write/references/stop-and-fix.md +3 -3
  293. package/lib/oh-story/skills/story-long-write/references/style-combat-face.md +15 -22
  294. package/lib/oh-story/skills/story-long-write/references/style-genre-modules.md +4 -172
  295. package/lib/oh-story/skills/story-long-write/references/style-resolution.md +5 -5
  296. package/lib/oh-story/skills/story-long-write/references/tracking-initialization.md +2 -2
  297. package/lib/oh-story/skills/story-long-write/references/tracking-transaction.md +2 -2
  298. package/lib/oh-story/skills/story-long-write/references/workflow-chapter.md +10 -8
  299. package/lib/oh-story/skills/story-long-write/references/workflow-daily.md +3 -3
  300. package/lib/oh-story/skills/story-long-write/references/workflow-outline.md +47 -47
  301. package/lib/oh-story/skills/story-long-write/references/workflow-revision.md +10 -10
  302. package/lib/oh-story/skills/story-long-write/references/workflow-setup.md +5 -10
  303. package/lib/oh-story/skills/story-long-write/references/workflow-volume.md +72 -98
  304. package/lib/oh-story/skills/story-long-write/references/writer-prompt-fallback.md +1 -1
  305. package/lib/oh-story/skills/story-long-write/references/writing-craft.md +77 -132
  306. package/lib/oh-story/skills/story-long-write/scripts/build_architect_brief.py +38 -18
  307. package/lib/oh-story/skills/story-long-write/scripts/build_writer_prompt.py +23 -11
  308. package/lib/oh-story/skills/story-long-write/scripts/check-outline-contract.js +5 -1
  309. package/lib/oh-story/skills/story-long-write/scripts/outline_view.py +1 -1
  310. package/lib/oh-story/skills/story-review/SKILL.md +41 -54
  311. package/lib/oh-story/skills/story-review/references/agent-prompts.md +20 -18
  312. package/lib/oh-story/skills/story-review/references/banned-words.md +61 -151
  313. package/lib/oh-story/skills/story-review/references/batch-review.md +4 -4
  314. package/lib/oh-story/skills/story-review/references/expression.md +83 -0
  315. package/lib/oh-story/skills/story-review/references/narrative-focus.md +63 -0
  316. package/lib/oh-story/skills/story-review/references/quality-rubric.md +11 -11
  317. package/lib/oh-story/skills/story-review/references/review-tracking.md +6 -5
  318. package/lib/oh-story/skills/story-review/references/rubrics/fanqie.md +10 -10
  319. package/lib/oh-story/skills/story-review/references/rubrics/qidian.md +10 -11
  320. package/lib/oh-story/skills/story-review/references/rubrics/zhihu.md +12 -12
  321. package/lib/oh-story/skills/story-review/references/solo.md +8 -7
  322. package/lib/oh-story/skills/story-review/references/story-logic.md +65 -0
  323. package/lib/oh-story/skills/story-review/references/style-resolution.md +5 -5
  324. package/lib/oh-story/skills/story-review/references/tracking-initialization.md +2 -2
  325. package/lib/oh-story/skills/story-review/references/tracking-transaction.md +2 -2
  326. package/lib/oh-story/skills/story-setup/SKILL.md +29 -36
  327. package/lib/oh-story/skills/story-setup/references/agent-references/agent-quality.md +3 -3
  328. package/lib/oh-story/skills/story-setup/references/agent-references/agent-reference-profiles.md +14 -16
  329. package/lib/oh-story/skills/story-setup/references/agent-references/banned-words.md +61 -151
  330. package/lib/oh-story/skills/story-setup/references/agent-references/benchmark-style-load.md +10 -10
  331. package/lib/oh-story/skills/story-setup/references/agent-references/character-basics.md +57 -95
  332. package/lib/oh-story/skills/story-setup/references/agent-references/character-relations.md +120 -270
  333. package/lib/oh-story/skills/story-setup/references/agent-references/deslop-gates.md +23 -160
  334. package/lib/oh-story/skills/story-setup/references/agent-references/dialogue-mastery.md +26 -29
  335. package/lib/oh-story/skills/story-setup/references/agent-references/emotion-on-page.md +9 -9
  336. package/lib/oh-story/skills/story-setup/references/agent-references/emotional-arc-design.md +38 -298
  337. package/lib/oh-story/skills/story-setup/references/agent-references/expression.md +83 -0
  338. package/lib/oh-story/skills/story-setup/references/agent-references/female-audience-writing.md +141 -0
  339. package/lib/oh-story/skills/story-setup/references/agent-references/format-and-structure.md +11 -11
  340. 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
  341. 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
  342. 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
  343. 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
  344. 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
  345. 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
  346. 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
  347. 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
  348. 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
  349. 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
  350. package/lib/oh-story/skills/story-setup/references/agent-references/genre-prose-cards//345/271/264/344/273/243.md +3 -3
  351. package/lib/oh-story/skills/story-setup/references/agent-references/genre-prose-cards//345/277/253/347/251/277.md +3 -3
  352. 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
  353. 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
  354. 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
  355. 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
  356. 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
  357. 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
  358. 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
  359. 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
  360. 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
  361. 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
  362. 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
  363. 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
  364. 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
  365. 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
  366. 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
  367. 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
  368. 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
  369. 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
  370. 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
  371. 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
  372. package/lib/oh-story/skills/story-setup/references/agent-references/genre-prose-cards.md +7 -7
  373. package/lib/oh-story/skills/story-setup/references/agent-references/genre-readers.md +99 -172
  374. package/lib/oh-story/skills/story-setup/references/agent-references/long-chapter-hooks.md +40 -120
  375. package/lib/oh-story/skills/story-setup/references/agent-references/long-emotional-methods.md +34 -74
  376. package/lib/oh-story/skills/story-setup/references/agent-references/long-genre-catalog.md +82 -311
  377. package/lib/oh-story/skills/story-setup/references/agent-references/long-genre-mechanics.md +115 -326
  378. package/lib/oh-story/skills/story-setup/references/agent-references/long-quality.md +3 -3
  379. package/lib/oh-story/skills/story-setup/references/agent-references/long-reversal.md +4 -4
  380. package/lib/oh-story/skills/story-setup/references/agent-references/long-suspense.md +11 -13
  381. package/lib/oh-story/skills/story-setup/references/agent-references/narrative-focus.md +63 -0
  382. package/lib/oh-story/skills/story-setup/references/agent-references/opening-design.md +38 -334
  383. package/lib/oh-story/skills/story-setup/references/agent-references/outline-methods.md +128 -281
  384. package/lib/oh-story/skills/story-setup/references/agent-references/plot-core-methods.md +58 -499
  385. package/lib/oh-story/skills/story-setup/references/agent-references/short-chapter-hooks.md +64 -192
  386. package/lib/oh-story/skills/story-setup/references/agent-references/short-emotional-methods.md +15 -69
  387. package/lib/oh-story/skills/story-setup/references/agent-references/short-genre-formulas.md +46 -58
  388. package/lib/oh-story/skills/story-setup/references/agent-references/short-quality.md +6 -4
  389. package/lib/oh-story/skills/story-setup/references/agent-references/short-reversal.md +23 -48
  390. package/lib/oh-story/skills/story-setup/references/agent-references/story-logic.md +65 -0
  391. package/lib/oh-story/skills/story-setup/references/agent-references/style-combat-face.md +15 -22
  392. package/lib/oh-story/skills/story-setup/references/agent-references/style-genre-modules.md +4 -172
  393. package/lib/oh-story/skills/story-setup/references/agent-references/style-resolution.md +5 -5
  394. package/lib/oh-story/skills/story-setup/references/agent-references/writing-craft.md +77 -132
  395. package/lib/oh-story/skills/story-setup/references/diagnostics.md +4 -4
  396. package/lib/oh-story/skills/story-short-analyze/SKILL.md +44 -103
  397. package/lib/oh-story/skills/story-short-analyze/references/analysis-characters.md +66 -0
  398. package/lib/oh-story/skills/story-short-analyze/references/analysis-method.md +7 -7
  399. package/lib/oh-story/skills/story-short-analyze/references/analysis-report-style.md +1 -3
  400. package/lib/oh-story/skills/story-short-analyze/references/analysis-short-genres.md +22 -21
  401. package/lib/oh-story/skills/story-short-analyze/references/analysis-short-hooks.md +7 -6
  402. package/lib/oh-story/skills/story-short-analyze/references/analysis-short-mechanics.md +6 -6
  403. package/lib/oh-story/skills/story-short-analyze/references/analysis-short-patterns.md +2 -2
  404. package/lib/oh-story/skills/story-short-analyze/references/analysis-short-suspense.md +6 -6
  405. package/lib/oh-story/skills/story-short-analyze/references/analysis-submission.md +52 -0
  406. package/lib/oh-story/skills/story-short-analyze/references/optional-modules.md +23 -73
  407. package/lib/oh-story/skills/story-short-analyze/references/output-contract.md +38 -50
  408. package/lib/oh-story/skills/story-short-analyze/references/quality-checklist.md +20 -38
  409. package/lib/oh-story/skills/story-short-analyze/references/source-story-quality.md +24 -175
  410. package/lib/oh-story/skills/story-short-analyze/references/stage2-3-structure-emotion.md +53 -38
  411. package/lib/oh-story/skills/story-short-analyze/references/stage4-6-reversal-summary.md +54 -83
  412. package/lib/oh-story/skills/story-short-scan/SKILL.md +56 -73
  413. package/lib/oh-story/skills/story-short-scan/references/manual-rank-input.md +16 -12
  414. package/lib/oh-story/skills/story-short-scan/references/platform-dianzhong.md +10 -4
  415. package/lib/oh-story/skills/story-short-scan/references/platform-heiyan.md +15 -6
  416. package/lib/oh-story/skills/story-short-scan/references/real-market-data.md +36 -75
  417. package/lib/oh-story/skills/story-short-scan/references/topic-match.md +35 -15
  418. package/lib/oh-story/skills/story-short-write/SKILL.md +23 -26
  419. package/lib/oh-story/skills/story-short-write/references/agent-calls.md +4 -4
  420. package/lib/oh-story/skills/story-short-write/references/author-memory-maintenance.md +9 -7
  421. package/lib/oh-story/skills/story-short-write/references/author-memory.md +6 -6
  422. package/lib/oh-story/skills/story-short-write/references/banned-words.md +61 -151
  423. package/lib/oh-story/skills/story-short-write/references/benchmark-recall.md +17 -22
  424. package/lib/oh-story/skills/story-short-write/references/cross-book-recall.md +22 -37
  425. package/lib/oh-story/skills/story-short-write/references/deslop-gates.md +34 -0
  426. package/lib/oh-story/skills/story-short-write/references/dialogue-mastery.md +26 -29
  427. package/lib/oh-story/skills/story-short-write/references/emotional-methods.md +15 -69
  428. package/lib/oh-story/skills/story-short-write/references/expression.md +83 -0
  429. package/lib/oh-story/skills/story-short-write/references/genre-styles//344/270/226/346/203/205/346/211/223/350/204/270.md +12 -12
  430. package/lib/oh-story/skills/story-short-write/references/genre-styles//345/217/214/347/224/267/344/270/273.md +21 -21
  431. package/lib/oh-story/skills/story-short-write/references/genre-styles//345/244/215/344/273/207/346/211/223/350/204/270.md +17 -17
  432. package/lib/oh-story/skills/story-short-write/references/genre-styles//345/256/205/346/226/227/345/256/253/346/226/227.md +17 -17
  433. package/lib/oh-story/skills/story-short-write/references/genre-styles//346/200/273/350/243/201/350/261/252/351/227/250.md +19 -19
  434. package/lib/oh-story/skills/story-short-write/references/genre-styles//346/202/254/347/226/221.md +16 -16
  435. package/lib/oh-story/skills/story-short-write/references/genre-styles//346/260/221/344/277/227/346/200/252/350/260/210.md +17 -16
  436. package/lib/oh-story/skills/story-short-write/references/genre-styles//346/262/231/351/233/225/350/204/221/346/264/236.md +17 -17
  437. package/lib/oh-story/skills/story-short-write/references/genre-styles//347/224/234/345/256/240.md +11 -11
  438. 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 +22 -22
  439. package/lib/oh-story/skills/story-short-write/references/genre-writing-formulas.md +46 -58
  440. package/lib/oh-story/skills/story-short-write/references/hooks-chapter.md +64 -192
  441. package/lib/oh-story/skills/story-short-write/references/narrative-focus.md +63 -0
  442. package/lib/oh-story/skills/story-short-write/references/reference-index.md +14 -16
  443. package/lib/oh-story/skills/story-short-write/references/scene-craft.md +8 -7
  444. package/lib/oh-story/skills/story-short-write/references/short-craft.md +22 -43
  445. package/lib/oh-story/skills/story-short-write/references/short-deslop.md +12 -125
  446. package/lib/oh-story/skills/story-short-write/references/short-format.md +19 -43
  447. package/lib/oh-story/skills/story-short-write/references/short-reversal.md +23 -48
  448. package/lib/oh-story/skills/story-short-write/references/story-logic.md +65 -0
  449. package/lib/oh-story/skills/story-short-write/references/style-resolution.md +5 -5
  450. package/lib/oh-story/skills/story-short-write/references/submission-craft.md +29 -19
  451. package/lib/oh-story/skills/story-short-write/references/villain-and-reveal.md +23 -30
  452. package/lib/oh-story/skills/story-short-write/references/workflow-design.md +69 -26
  453. package/lib/oh-story/skills/story-short-write/references/workflow-draft.md +19 -20
  454. package/lib/oh-story/skills/story-short-write/references/workflow-revision.md +52 -70
  455. package/lib/oh-story/skills/story-short-write/scripts/check-phase2-contract.js +21 -16
  456. package/lib/types/client/file-activity.d.ts +10 -0
  457. package/lib/types/client/file-activity.d.ts.map +1 -1
  458. package/lib/types/client/index.d.ts.map +1 -1
  459. package/lib/types/native-hooks.d.ts.map +1 -1
  460. package/lib/types/role-tool.d.ts +42 -2
  461. package/lib/types/role-tool.d.ts.map +1 -1
  462. package/lib/types/skill-provider.d.ts.map +1 -1
  463. package/lib/types/workspace-route.d.ts.map +1 -1
  464. package/lib/video-recap/CHANGELOG.md +8 -0
  465. package/lib/video-recap/README.en.md +8 -10
  466. package/lib/video-recap/README.md +8 -8
  467. package/lib/video-recap/manifest.json +48 -48
  468. package/lib/video-recap/package.json +4 -0
  469. package/lib/video-recap/skills/video-assemble/SKILL.md +5 -8
  470. package/lib/video-recap/skills/video-assemble/references/audio-modes.md +3 -3
  471. package/lib/video-recap/skills/video-assemble/references/jianying/SOURCE.md +1 -2
  472. package/lib/video-recap/skills/video-assemble/references/packaging.md +1 -2
  473. package/lib/video-recap/skills/video-assemble/references/source-score.md +5 -6
  474. package/lib/video-recap/skills/video-cut/SKILL.md +3 -7
  475. package/lib/video-recap/skills/video-cut/references/shot-review.md +1 -1
  476. package/lib/video-recap/skills/video-recap/SKILL.md +7 -11
  477. package/lib/video-recap/skills/video-recap/references/audio-routing.md +1 -2
  478. package/lib/video-recap/skills/video-recap/references/config-playbook.md +5 -7
  479. package/lib/video-recap/skills/video-recap/references/data-schema.md +8 -8
  480. package/lib/video-recap/skills/video-recap/references/resource-library.md +2 -2
  481. package/lib/video-recap/skills/video-reference/SKILL.md +4 -8
  482. package/lib/video-recap/skills/video-reference/references/reference-schema.md +1 -1
  483. package/lib/video-recap/skills/video-script/SKILL.md +4 -13
  484. package/lib/video-recap/skills/video-script/references/creative-editing-playbook.md +2 -2
  485. package/lib/video-recap/skills/video-understanding/SKILL.md +10 -6
  486. package/lib/video-recap/skills/video-understanding/references/data-schema.md +2 -2
  487. package/lib/video-recap/skills/video-voiceover/SKILL.md +3 -11
  488. package/lib/video-recap/skills/video-voiceover/references/index-tts.md +1 -2
  489. package/package.json +25 -24
  490. package/lib/drama/skills/short-drama-image-prompts/assets/image-prompt-spec.jsonl.md +0 -187
  491. package/lib/drama/skills/short-drama-image-prompts/assets/image-prompts.md +0 -42
  492. package/lib/drama/skills/short-drama-image-prompts/assets/lookdev-frame-spec.jsonl.md +0 -128
  493. package/lib/drama/skills/short-drama-image-prompts/assets/lookdev-prompts.md +0 -34
  494. package/lib/drama/skills/short-drama-storyboard/assets/coverage-template.json +0 -49
  495. package/lib/drama/skills/short-drama-storyboard/assets/keyframe-prompts.md +0 -36
  496. package/lib/drama/skills/short-drama-storyboard/assets/keyframe-template.jsonl +0 -2
  497. package/lib/drama/skills/short-drama-storyboard/assets/shot-template.jsonl +0 -2
  498. package/lib/drama/skills/short-drama-video-prompts/assets/delivery-container.jsonl.md +0 -101
  499. package/lib/drama/skills/short-drama-video-prompts/assets/motion-spec.jsonl.md +0 -217
  500. package/lib/drama/skills/short-drama-video-prompts/assets/music-spec.jsonl.md +0 -31
  501. package/lib/drama/skills/short-drama-video-prompts/assets/video-prompts.md +0 -67
  502. package/lib/drama/skills/short-drama-write/assets/beats.jsonl +0 -2
  503. package/lib/drama/skills/short-drama-write/assets/episode-card-standalone.json +0 -120
  504. package/lib/drama/skills/short-drama-write/assets/episode-card.json +0 -55
  505. package/lib/drama/skills/short-drama-write/assets/voice-record-sheet.jsonl.md +0 -89
  506. package/lib/oh-story/skills/story/references/author-memory-maintenance.md +0 -75
  507. package/lib/oh-story/skills/story/references/author-memory.md +0 -117
  508. package/lib/oh-story/skills/story/scripts/author_memory_commit.py +0 -1638
  509. package/lib/oh-story/skills/story-deslop/references/anti-ai-writing.md +0 -556
  510. package/lib/oh-story/skills/story-deslop/references/author-memory-maintenance.md +0 -75
  511. package/lib/oh-story/skills/story-deslop/references/author-memory.md +0 -117
  512. package/lib/oh-story/skills/story-deslop/scripts/author_memory_commit.py +0 -1638
  513. package/lib/oh-story/skills/story-import/references/format-and-structure.md +0 -168
  514. package/lib/oh-story/skills/story-import/references/state-tracking.md +0 -43
  515. package/lib/oh-story/skills/story-import/references/tracking-transaction.md +0 -146
  516. package/lib/oh-story/skills/story-long-analyze/references/deconstruction-notes.md +0 -270
  517. package/lib/oh-story/skills/story-long-analyze/references/semantic-acceptance-fixtures.md +0 -84
  518. package/lib/oh-story/skills/story-long-analyze/references/style-profile-protocol.md +0 -133
  519. package/lib/oh-story/skills/story-long-scan/references/publishing-guide.md +0 -114
  520. package/lib/oh-story/skills/story-long-scan/references/reader-profiling.md +0 -105
  521. package/lib/oh-story/skills/story-long-write/references/anti-ai-writing.md +0 -556
  522. package/lib/oh-story/skills/story-long-write/references/character-design-methods.md +0 -428
  523. package/lib/oh-story/skills/story-long-write/references/commercial-core-methods.md +0 -502
  524. package/lib/oh-story/skills/story-long-write/references/deslop-gates.md +0 -171
  525. package/lib/oh-story/skills/story-long-write/references/outline-conflict.md +0 -457
  526. package/lib/oh-story/skills/story-long-write/references/outline-rhythm.md +0 -389
  527. package/lib/oh-story/skills/story-long-write/references/outline-structure-theory.md +0 -273
  528. package/lib/oh-story/skills/story-long-write/references/plot-emotion-system.md +0 -354
  529. package/lib/oh-story/skills/story-long-write/references/plot-frameworks.md +0 -711
  530. package/lib/oh-story/skills/story-long-write/references/plot-special-topics.md +0 -622
  531. package/lib/oh-story/skills/story-long-write/references/style-craft.md +0 -327
  532. package/lib/oh-story/skills/story-review/references/anti-ai-writing.md +0 -556
  533. package/lib/oh-story/skills/story-review/references/author-memory-maintenance.md +0 -75
  534. package/lib/oh-story/skills/story-review/references/author-memory.md +0 -117
  535. package/lib/oh-story/skills/story-review/references/character-relations.md +0 -433
  536. package/lib/oh-story/skills/story-review/references/dialogue-mastery.md +0 -288
  537. package/lib/oh-story/skills/story-review/references/plot-core-methods.md +0 -522
  538. package/lib/oh-story/skills/story-review/references/review-quality.md +0 -246
  539. package/lib/oh-story/skills/story-review/scripts/author_memory_commit.py +0 -1638
  540. package/lib/oh-story/skills/story-setup/references/agent-references/anti-ai-writing.md +0 -556
  541. package/lib/oh-story/skills/story-setup/references/agent-references/character-design-methods.md +0 -428
  542. package/lib/oh-story/skills/story-setup/references/agent-references/outline-conflict.md +0 -457
  543. package/lib/oh-story/skills/story-setup/references/agent-references/outline-rhythm.md +0 -389
  544. package/lib/oh-story/skills/story-setup/references/agent-references/short-paragraph-hooks.md +0 -146
  545. package/lib/oh-story/skills/story-setup/references/agent-references/short-suspense.md +0 -352
  546. package/lib/oh-story/skills/story-short-analyze/references/analysis-character-basics.md +0 -453
  547. package/lib/oh-story/skills/story-short-analyze/references/analysis-character-design.md +0 -438
  548. package/lib/oh-story/skills/story-short-analyze/references/analysis-character-relations.md +0 -395
  549. package/lib/oh-story/skills/story-short-analyze/references/analysis-paragraph-hooks.md +0 -146
  550. package/lib/oh-story/skills/story-short-analyze/references/analysis-reader-profile.md +0 -245
  551. package/lib/oh-story/skills/story-short-analyze/references/analysis-writing-techniques.md +0 -477
  552. package/lib/oh-story/skills/story-short-analyze/references/deconstruction-examples.md +0 -79
  553. package/lib/oh-story/skills/story-short-analyze/references/real-market-data.md +0 -90
  554. package/lib/oh-story/skills/story-short-analyze/references/zhihu-style.md +0 -54
  555. package/lib/oh-story/skills/story-short-write/references/genre-writing-techniques.md +0 -490
  556. package/lib/oh-story/skills/story-short-write/references/hooks-paragraph.md +0 -146
  557. package/lib/oh-story/skills/story-short-write/references/output-contract.md +0 -127
  558. package/lib/oh-story/skills/story-short-write/references/short-prose-quality.md +0 -224
  559. package/lib/oh-story/skills/story-short-write/references/short-suspense.md +0 -352
  560. package/lib/oh-story/skills/story-short-write/references/writing-workflow.md +0 -50
@@ -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",
@@ -0,0 +1,4 @@
1
+ {
2
+ "private": true,
3
+ "description": "Bundled upstream Skills; no module type so scripts resolve as in an upstream install."
4
+ }
@@ -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
@@ -1,11 +1,9 @@
1
1
  # Config playbook (override-only)
2
2
 
3
- The bundle runs **zero-config** with sensible defaults. To change behavior, set the
4
- environment variables below (or pass the noted CLI flags) — they **override** the defaults.
5
- Nothing here is required; this is documentation only. The only config file any tool reads is an
6
- optional `recap_project.json` passed with `--project` (see `resource-library.md`): it resolves to the same
7
- variables below, and a variable you set that disagrees with the project stops the run. The bundle ships no
8
- root `CLAUDE.md` (so it never collides with your project/global instructions).
3
+ Use the defaults after configuring the required credentials and local tools. The environment
4
+ variables and CLI flags below override those defaults. An optional `recap_project.json` passed
5
+ with `--project` binds resources and templates to the same settings (see `resource-library.md`).
6
+ A conflict between a project binding and an explicit setting stops the run.
9
7
  Defaults below are bundle-level defaults unless a note scopes them to a specific stage.
10
8
 
11
9
  | Concern | Env var / flag | Default | Notes |
@@ -31,7 +29,7 @@ Defaults below are bundle-level defaults unless a note scopes them to a specific
31
29
  | Source sentence boundary detector | `SOURCE_BOUNDARY_NOISE_THRESHOLD` / `SOURCE_BOUNDARY_MIN_PAUSE` / `SOURCE_BOUNDARY_MAX_ALIGNMENT_ERROR` | `-18dB` / `0.12` / `2.1` | aligns ASR terminal punctuation to short acoustic pauses and writes `speech_boundary_anchors.json`; unsafe narration entries and cut in/out points are blocked. There is no intentional-interrupt override |
32
30
  | Cut sentence snapping | `SNAP_CLIP_LINE_END` / `CLIP_START_SNAP_MAX_PREPEND` / `CLIP_START_SNAP_MAX_TRIM` / `CLIP_SNAP_MAX_EXTEND` | on / `1.8` / `0.35` / `2.0` | scene-cut cleanup runs first, then reliable sentence/quiet snapping, then a sub-frame frame-grid alignment that keeps the edge in its pause. An ASR-owned edge still inside speech produces `unsafe_clip_sentence_boundary` instead of a half sentence, with `nearest_safe` before/after times within 5 s, already on the source frame grid |
33
31
  | Mask source subs | `MASK_SOURCE_SUBTITLES` / `SOURCE_SUBTITLE_MASK_POLICY` / `SOURCE_SUBTITLE_MASK_RATIO` | off / `off` / `0.14` | masking requires an explicit policy (`opt_in`, `safe`, or `forced`) and burned recap subtitles. Passing measured `--subtitle-y-top/--subtitle-y-bot` opts in automatically. With `--no-burn-subtitles`, or when a default burn degrades because ffmpeg lacks libass, the MP4 stays unmasked |
34
- | Measured subtitle band | `SUBTITLE_Y_TOP` / `SUBTITLE_Y_BOT`; `--subtitle-y-top/--subtitle-y-bot` | off | half-open `[top, bot)` rows of the auto-rotated display canvas (the stored width is scaled by the SAR; a rotated non-square stream's rows are scaled by it too, and the mask converts them back to decoded-frame rows); square or near-square pixels (SAR within 2% of 1:1; unspecified `0:1` counts as square) and bottom ASS alignment (1/2/3) only; use `tools/measure_subtitle.py` to generate source-identified previews and suggestions |
32
+ | Measured subtitle band | `SUBTITLE_Y_TOP` / `SUBTITLE_Y_BOT`; `--subtitle-y-top/--subtitle-y-bot` | off | half-open `[top, bot)` rows of the auto-rotated display canvas (the stored width is scaled by the SAR; a rotated non-square stream's rows are scaled by it too, and the mask converts them back to decoded-frame rows); square or near-square pixels (SAR within 2% of 1:1; unspecified `0:1` counts as square) and bottom ASS alignment (1/2/3) only; a full source checkout includes `tools/measure_subtitle.py` for source-identified previews and suggestions |
35
33
  | Subtitle mask look | `SUBTITLE_MASK_OPACITY` / `SOURCE_SUBTITLE_MASK_TIMING` / `SUBTITLE_MASK_PADDING` | `0.6` / `narration` / `4` | generic ratio masks stay translucent by default; an explicitly measured `--subtitle-y-top/--subtitle-y-bot` band defaults to opaque so source glyphs cannot show through. Set `SUBTITLE_MASK_OPACITY` to override; timing `all` restores full-time masking |
36
34
  | Original ducking | `IDLE_ORIG_VOLUME` / `SPEECH_DUCKING_VOLUME` | `1.0` / `0.2` | the original returns to full-volume `IDLE` in deliberate gaps/original blocks, and ducks to `SPEECH` under narration. Inter-beat gaps shorter than `DUCK_BRIDGE_SECONDS` stay ducked so a single narration block does not swell between sentences. A fixed `0.3` is only the fallback when beats carry no placement info |
37
35
  | Foreign source audio | `FOREIGN_SOURCE_AUDIO` | off | set when the original audio is in a language the narration is **not** (e.g. a Japanese drama recapped in Chinese). The under-narration original (`SPEECH_DUCKING_VOLUME` / `ZONE_DUCKING_VOLUME`) drops from `0.2`/`0.12` to `0.05` so the foreign speech doesn't bleed under the narration as 怪音; original-audio gap blocks still play full-volume (`IDLE_ORIG_VOLUME`). Explicit `SPEECH_DUCKING_VOLUME`/`ZONE_DUCKING_VOLUME` still override. Pairs with bring-your-own `user_subtitles.*` for the foreign dialogue |
@@ -1,6 +1,6 @@
1
1
  # 数据格式(中间 JSON)
2
2
 
3
- 所有中间文件均在 pipeline 工作目录(work_dir/)下。
3
+ 中间产物保存在本次运行的工作目录 `work_dir/` 下。
4
4
 
5
5
  ## vlm_analysis.json
6
6
 
@@ -165,7 +165,7 @@ cut 第二轮(已有 `edited_source.mp4`)时本文件与 `asr_writing_chunks
165
165
 
166
166
  ## narration.json
167
167
 
168
- Agent 撰写的解说词。full 模式下使用原视频时间;**orchestrated cut 模式(`video-recap --edit-mode cut`)下,第二次暂停时已经先剪出 `edited_source.mp4`,因此 `narration.json` 必须直接使用剪后成片的 OUTPUT 时间轴(0..成片总时长);不存在原视频时间→输出时间的旁白映射产物:
168
+ Agent 撰写的解说词。full 模式下使用原视频时间;**编排 cut 模式(`video-recap --edit-mode cut`)下**,第二次暂停时已经先剪出 `edited_source.mp4`,因此 `narration.json` 必须直接使用剪后成片的 OUTPUT 时间轴(0..成片总时长);不存在原视频时间→输出时间的旁白映射产物:
169
169
 
170
170
  ```json
171
171
  [
@@ -180,7 +180,7 @@ Agent 撰写的解说词。full 模式下使用原视频时间;**orchestrated
180
180
  ```json
181
181
  {
182
182
  "ok": false,
183
- "error_count": 1,
183
+ "error_count": 2,
184
184
  "warning_count": 1,
185
185
  "metrics": {
186
186
  "segment_count": 12,
@@ -245,7 +245,7 @@ CLI 不以它们作为渲染硬门禁,也不新增解析服务;建议型解
245
245
 
246
246
  ## narration_lint.json 的 deslop_qc(CLI 生成,报告型 QC)
247
247
 
248
- `narration_lint.json` 的 `deslop_qc` 字段由本地 deterministic scanner 生成,Agent 不手写;不再单独写 `deslop_qc.json`。它只是 report-only QC:不是 AIGC detector,不判断文本是不是 AI 写的,不会自动改写。修改仍由 Agent/人工根据报告回到 `narration.json`、`style_card.json` 或字幕源里处理。
248
+ `narration_lint.json` 的 `deslop_qc` 字段由本地 deterministic scanner 生成,Agent 不手写;不再单独写 `deslop_qc.json`。它输出可读性报告,区分下面两类结果;不判断文本是否由 AI 生成,也不自动改写。修改仍由 Agent/人工根据报告回到 `narration.json`、`style_card.json` 或字幕源里处理。
249
249
 
250
250
  报告分两层:
251
251
 
@@ -417,14 +417,14 @@ CLI 校验 `clip_plan.json` 后写出,额外包含输出时间轴:
417
417
 
418
418
  ## original_subtitles.json / user_subtitles.{json,srt,ass}(可选,原声留白字幕)
419
419
 
420
- 解说块之间的原声留白会把【原声台词】烧成字幕(assemble 阶段用 `「」` 包裹以区分解说)。来源优先级(高→低):
420
+ 遮罩覆盖原声留白或用户字幕明确要求替换时,assemble 才为留白生成原声对白字幕,并用 `「」` 与旁白区分。来源优先级(高→低):
421
421
 
422
- 1. **`work_dir/user_subtitles.json`**(用户自带,最准)— 数组 `[{start,end,text}]` 默认按**成片 OUTPUT** 时间轴直接使用;也可写成 `{"timeline": "source"|"output", "lines": [...]}`,`source` 表示按**原片**时间轴给出,由 assemble 依 `clip_plan_validated.json` 映射到成片。
422
+ 1. **`work_dir/user_subtitles.json`**(用户自带,优先使用)— 数组 `[{start,end,text}]` 默认按**成片 OUTPUT** 时间轴直接使用;也可写成 `{"timeline": "source"|"output", "lines": [...]}`,`source` 表示按**原片**时间轴给出,由 assemble 依 `clip_plan_validated.json` 映射到成片。
423
423
  2. **`work_dir/user_subtitles.srt` / `.ass`**(用户自带)— 默认按**原片**时间轴解析后映射到成片。
424
424
  3. **`work_dir/original_subtitles.json`**(Agent 校对,cut pass2 写)— OUTPUT 时间轴 `[{start,end,text}]`,订正 ASR 错字/人名、只写留白里真正出声的句子。
425
425
  4. **ASR 兜底** — 无上述文件时,用 `asr_result.json` 按留白粗略映射(中点估时,可能偏多偏乱)。
426
426
 
427
- 来源 1–3 为「精确来源」:每条按句**区间裁剪**落到所覆盖的留白边界(跨边界会拆分),不走 ASR 兜底的中点估时;over-dense 行截断显示而非丢弃。
427
+ 来源 1–3 直接采用声明的时间区间:每条按句**区间裁剪**落到所覆盖的留白边界(跨边界会拆分),不走 ASR 兜底的中点估时;过密行截断显示而非丢弃。时间声明仍需对照实际声音核准,不能仅凭文件来源认定已精确对齐。
428
428
 
429
429
  ```json
430
430
  [
@@ -599,4 +599,4 @@ Dub 模式下,`dub_script.json` 在 voiceclone **之前**先经过 determinist
599
599
  "mask_dropped": false, "message": "…", "next_action": "…"}
600
600
  ```
601
601
 
602
- 这时成片里没有字幕,字幕在成片旁的同名 `.srt`(路径见 `assembly_manifest.json` 的 `subtitle_sidecar`);`mask_dropped` 为 `true` 表示原本会画的原字幕遮罩也一并关掉了。`final_qc.py` 打印的摘要 `final_qc.warnings` 列出这些 code,`recap.py` 完成时打印一行警告和外挂字幕路径。
602
+ 这时新字幕保存在成片旁的同名 `.srt`,路径见 `assembly_manifest.json` 的 `subtitle_sidecar`;原片已有硬字幕仍保留。`mask_dropped` 为 `true` 表示原本会画的原字幕遮罩也一并关掉了。`final_qc.py` 打印的摘要 `final_qc.warnings` 列出这些 code,`recap.py` 完成时打印一行警告和外挂字幕路径。
@@ -22,7 +22,7 @@ python3 scripts/library.py --library-dir <library> show <id|id@vN>
22
22
 
23
23
  浏览资源、模板与样片(含图片、音频与样片预览)可用只读 dashboard:`python3 scripts/dashboard_server.py --root <library 或其上层目录>`。
24
24
 
25
- 工具从不写库。新增或修改记录时直接编辑 JSON,再跑 `check`。**错误**表示该条目不能用;**警告**表示能用但需要人看一眼
25
+ 这三个查询命令不写库。新增或修改记录时直接编辑 JSON,再跑 `check`。**错误**表示该条目不能用;**警告**表示能用但需要人看一眼
26
26
  (授权未确认、声音授权未确认、样片不在本机、模板采用后资源文件已变化)。
27
27
 
28
28
  ## 通用规则
@@ -114,7 +114,7 @@ python3 scripts/library.py --library-dir <library> show <id|id@vN>
114
114
  任何层级出现 `source_facts`、`labels`、`evidence`、`entities`、`statement`、`from`、`path` 键都报错(与参考技能导出时的复扫同一组键)。
115
115
  5. 用户确认后把 `status` 改为 `adopted` 并用用户原话写 `adoption`。之后要改内容就出 `v2`,不改已采纳的版本。
116
116
 
117
- 库仍然只读,登记与采纳都是手工编辑。
117
+ 上述库查询命令只读,登记与采纳由操作者编辑 JSON。
118
118
 
119
119
  ## 样片 `sample.json`
120
120
 
@@ -1,16 +1,12 @@
1
1
  ---
2
2
  name: video-reference
3
3
  user-invocable: true
4
- description: >
5
- 按需把一部成片拆成可复用的制作参考:测镜头节奏与响度,标注段落与音轨分工,把原片事实与可迁移方法分开,
6
- 导出不含原片人名台词的 production_reference.json 供下次制作参考。不在默认生产路径上。
7
- 触发词:拆片、拆解成片、制作参考、参考模板、production reference。
4
+ description: 按需把一部成片拆成可复用的制作参考:测镜头节奏与响度,标注段落与音轨分工,把原片事实与可迁移方法分开, 导出不含原片人名台词的 production_reference.json 供下次制作参考。不在默认生产路径上。 触发词:拆片、拆解成片、制作参考、参考模板、production reference。
8
5
  ---
9
6
 
10
7
  ## 1. 定位
11
8
 
12
- 本技能把一部**已完成的成片**拆成下一次制作能直接参考的方法与数值。它是按需的参考分析,不是生产阶段,也不是质检:
13
- 不调用 MiMo,不改其他产物,不给任何运行打分或拦截。
9
+ 本技能把一部**已完成的成片**拆成下一次制作可参考的方法与数值,按需在本地运行。它只写自己的测量、标注与导出物,不调用 MiMo,也不对生产流程评分或拦截。
14
10
 
15
11
  Agent 的角色是**拆片编辑**:先如实记录"这部片子怎么做的"(事实),再提炼"换一部素材还能怎么用"(方法)。
16
12
  两者必须分开:事实只留在本地工作目录,导出物只含方法和测得的数值。
@@ -24,7 +20,7 @@ Agent 的角色是**拆片编辑**:先如实记录"这部片子怎么做的"
24
20
  标注时 Agent 还应看故事板 / contact sheet 与 `vlm_analysis.json`。
25
21
 
26
22
  没有理解产物也能跑,但旁白语速为空,泄漏扫描只剩 Agent 自己写的 `entities`,check 会给出警告;
27
- 看画面改用 `frames --span 0,<时长> --step 2` 的接触表。
23
+ 看画面可用 `frames --span 0,<时长> --step 2` 生成的抽帧拼图。
28
24
 
29
25
  下面的 `scripts/...` 均相对于本技能目录。
30
26
 
@@ -94,7 +90,7 @@ R6 只能拦住字面泄漏,拦不住改写过的剧情;写方法时要写"
94
90
 
95
91
  使用方式:把它复制进下一次制作的 `work_dir`。写稿阶段只在文件存在时阅读它,
96
92
  并可在 `recap_story_plan.json` 的可选字段 `reference_methods` 记录每条方法的 adopt / adapt / skip。
97
- 它是参考,不是配额:与新素材的证据冲突时以素材为准。没有任何脚本读取它,也不会因为它的存在改变任何阶段的通过与否。
93
+ 采用时以新素材证据为准,不把参考数值当作配额。没有任何脚本读取它,也不会因为它的存在改变任何阶段的通过与否。
98
94
 
99
95
  `U/` 里的 breakdown 与 `reference_frames/` 含原片事实和画面,只留在本地,不要复制或提交。
100
96
 
@@ -1,6 +1,6 @@
1
1
  # 制作参考:字段、枚举与示例
2
2
 
3
- 本文件只列字段与枚举;剧作与剪辑手法的具体规则以后续写稿阶段自己的手册为准,这里不复述。
3
+ 按本文件填写测量标注、事实与可迁移方法。后续写稿阶段自行决定是否采用方法。
4
4
 
5
5
  ## 标注词表
6
6