@oh-story/dsh 0.1.9 → 0.1.11

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (529) hide show
  1. package/README.md +14 -14
  2. package/lib/client.js +209 -73
  3. package/lib/client.js.map +3 -3
  4. package/lib/drama/manifest.json +248 -168
  5. package/lib/drama/skills/short-drama/SKILL.md +16 -4
  6. package/lib/drama/skills/short-drama/assets/project-template/short-drama.json +3 -0
  7. package/lib/drama/skills/short-drama/references/creator-documents.md +3 -0
  8. package/lib/drama/skills/short-drama/references/knowhow-index.md +15 -0
  9. package/lib/drama/skills/short-drama/scripts/creator_markdown_check.py +14 -0
  10. package/lib/drama/skills/short-drama/scripts/project_tool.py +131 -0
  11. package/lib/drama/skills/short-drama-assets/SKILL.md +2 -1
  12. package/lib/drama/skills/short-drama-assets/references/asset-review-checklist.md +2 -0
  13. package/lib/drama/skills/short-drama-assets/references/character-and-look.md +10 -0
  14. package/lib/drama/skills/short-drama-assets/references/continuity-lock.md +6 -9
  15. package/lib/drama/skills/short-drama-assets/references/era-anchors.md +37 -0
  16. package/lib/drama/skills/short-drama-assets/references/stage-contract.md +2 -0
  17. package/lib/drama/skills/short-drama-assets/references/voice-direction.md +28 -0
  18. package/lib/drama/skills/short-drama-develop/SKILL.md +10 -4
  19. package/lib/drama/skills/short-drama-develop/assets/adaptation-map.example.jsonl +1 -1
  20. package/lib/drama/skills/short-drama-develop/assets/creative-brief.md +8 -0
  21. package/lib/drama/skills/short-drama-develop/references/adaptation-craft.md +80 -13
  22. package/lib/drama/skills/short-drama-develop/references/episode-design.md +95 -12
  23. package/lib/drama/skills/short-drama-develop/references/genre-and-hook-playbook.md +9 -5
  24. package/lib/drama/skills/short-drama-develop/references/genre-cards//345/244/215/344/273/207/346/211/223/350/204/270.md +1 -1
  25. package/lib/drama/skills/short-drama-develop/references/genre-cards//347/263/273/347/273/237/346/265/201.md +51 -0
  26. package/lib/drama/skills/short-drama-develop/references/genre-cards//351/200/206/350/242/255.md +51 -0
  27. package/lib/drama/skills/short-drama-develop/references/genre-cards//351/207/215/347/224/237/347/251/277/350/266/212.md +51 -0
  28. package/lib/drama/skills/short-drama-develop/references/genre-cards.md +10 -7
  29. package/lib/drama/skills/short-drama-develop/references/premise-devices.md +15 -9
  30. package/lib/drama/skills/short-drama-develop/references/serial-character-and-memory.md +3 -2
  31. package/lib/drama/skills/short-drama-develop/references/stage-contract.md +14 -7
  32. package/lib/drama/skills/short-drama-develop/references/story-craft.md +7 -3
  33. package/lib/drama/skills/short-drama-edit/SKILL.md +65 -44
  34. package/lib/drama/skills/short-drama-edit/assets/remotion/README.md +49 -13
  35. package/lib/drama/skills/short-drama-edit/assets/remotion/package.json +4 -2
  36. package/lib/drama/skills/short-drama-edit/assets/remotion/src/Overlay.tsx +31 -0
  37. package/lib/drama/skills/short-drama-edit/assets/remotion/src/Root.tsx +5 -5
  38. package/lib/drama/skills/short-drama-edit/assets/remotion/src/Subtitles.tsx +68 -69
  39. package/lib/drama/skills/short-drama-edit/assets/remotion/src/font.ts +39 -29
  40. package/lib/drama/skills/short-drama-edit/assets/remotion/src/rules.mjs +188 -0
  41. package/lib/drama/skills/short-drama-edit/assets/remotion/src/schema.ts +26 -13
  42. package/lib/drama/skills/short-drama-edit/assets/remotion/src/screen/Card.tsx +72 -0
  43. package/lib/drama/skills/short-drama-edit/assets/remotion/src/screen/CornerChip.tsx +39 -0
  44. package/lib/drama/skills/short-drama-edit/assets/remotion/src/screen/ScreenText.tsx +36 -0
  45. package/lib/drama/skills/short-drama-edit/assets/remotion/src/screen/SystemPanel.tsx +44 -0
  46. package/lib/drama/skills/short-drama-edit/assets/remotion/src/screen/TaskPanel.tsx +100 -0
  47. package/lib/drama/skills/short-drama-edit/assets/remotion/src/screen/chrome.tsx +197 -0
  48. package/lib/drama/skills/short-drama-edit/assets/remotion/src/screen/tokens.ts +62 -0
  49. package/lib/drama/skills/short-drama-edit/assets/remotion/tsconfig.json +1 -0
  50. package/lib/drama/skills/short-drama-edit/assets//345/211/252/350/276/221/345/215/225.md +6 -4
  51. package/lib/drama/skills/short-drama-edit/references/cut-craft.md +26 -67
  52. package/lib/drama/skills/short-drama-edit/references/delivery-verify.md +31 -56
  53. package/lib/drama/skills/short-drama-edit/references/generated-footage.md +42 -78
  54. package/lib/drama/skills/short-drama-edit/references/sound-and-subtitles.md +44 -92
  55. package/lib/drama/skills/short-drama-edit/references/stage-contract.md +14 -16
  56. package/lib/drama/skills/short-drama-edit/scripts/edit_tool.py +1272 -125
  57. package/lib/drama/skills/short-drama-edit/scripts/selftest.py +113 -9
  58. package/lib/drama/skills/short-drama-image-prompts/SKILL.md +2 -0
  59. package/lib/drama/skills/short-drama-image-prompts/references/common-recipe.md +11 -0
  60. package/lib/drama/skills/short-drama-novel-analyze/SKILL.md +3 -3
  61. package/lib/drama/skills/short-drama-novel-analyze/assets/episode-candidate.example.jsonl +2 -2
  62. package/lib/drama/skills/short-drama-novel-analyze/references/adaptation-triage.md +8 -4
  63. package/lib/drama/skills/short-drama-novel-analyze/references/adaptation-value.md +10 -3
  64. package/lib/drama/skills/short-drama-novel-analyze/references/aggregation-and-entities.md +25 -1
  65. package/lib/drama/skills/short-drama-novel-analyze/references/stage-contract.md +1 -0
  66. package/lib/drama/skills/short-drama-produce/SKILL.md +5 -1
  67. package/lib/drama/skills/short-drama-produce/references/adapter-contract.md +14 -20
  68. package/lib/drama/skills/short-drama-produce/references/providers/minimax-h3-video.md +8 -26
  69. package/lib/drama/skills/short-drama-produce/references/providers/minimax-speech.md +41 -0
  70. package/lib/drama/skills/short-drama-produce/scripts/provider_adapters.py +142 -1
  71. package/lib/drama/skills/short-drama-review/SKILL.md +4 -5
  72. package/lib/drama/skills/short-drama-review/references/production-quality-gates.md +6 -19
  73. package/lib/drama/skills/short-drama-review/references/review-method.md +6 -1
  74. package/lib/drama/skills/short-drama-review/references/rubric-assets-prompts.md +11 -0
  75. package/lib/drama/skills/short-drama-review/references/rubric-story-script.md +77 -3
  76. package/lib/drama/skills/short-drama-review/references/rubric-visual-motion.md +24 -35
  77. package/lib/drama/skills/short-drama-review/references/stage-contract.md +3 -0
  78. package/lib/drama/skills/short-drama-storyboard/SKILL.md +23 -11
  79. package/lib/drama/skills/short-drama-storyboard/references/blocking-playbooks.md +1 -1
  80. package/lib/drama/skills/short-drama-storyboard/references/lighting-craft.md +39 -0
  81. package/lib/drama/skills/short-drama-storyboard/references/production-shot-grammar.md +2 -2
  82. package/lib/drama/skills/short-drama-storyboard/references/shot-craft.md +139 -34
  83. package/lib/drama/skills/short-drama-storyboard/references/stage-contract.md +5 -3
  84. package/lib/drama/skills/short-drama-video-prompts/SKILL.md +15 -12
  85. package/lib/drama/skills/short-drama-video-prompts/references/camera-audio-continuity.md +29 -0
  86. package/lib/drama/skills/short-drama-video-prompts/references/delivery-profile.md +4 -5
  87. package/lib/drama/skills/short-drama-video-prompts/references/generability.md +4 -2
  88. package/lib/drama/skills/short-drama-video-prompts/references/minimax-h3.md +52 -39
  89. package/lib/drama/skills/short-drama-video-prompts/references/motion-recipe.md +24 -21
  90. package/lib/drama/skills/short-drama-video-prompts/references/performance-action-timing.md +9 -23
  91. package/lib/drama/skills/short-drama-video-prompts/references/production-prompt-grammar.md +14 -26
  92. package/lib/drama/skills/short-drama-video-prompts/references/review-and-fixtures.md +1 -1
  93. package/lib/drama/skills/short-drama-video-prompts/references/seedance-2.0.md +2 -3
  94. package/lib/drama/skills/short-drama-video-prompts/references/seedance-2.5.md +34 -9
  95. package/lib/drama/skills/short-drama-video-prompts/references/stage-contract.md +3 -2
  96. package/lib/drama/skills/short-drama-video-prompts/references/target-model-profile.md +8 -1
  97. package/lib/drama/skills/short-drama-video-prompts/references/wan-3.0.md +103 -0
  98. package/lib/drama/skills/short-drama-video-prompts/scripts/motion_timing_check.py +8 -7
  99. package/lib/drama/skills/short-drama-write/SKILL.md +10 -7
  100. package/lib/drama/skills/short-drama-write/references/dialogue-craft.md +1 -1
  101. package/lib/drama/skills/short-drama-write/references/script-craft.md +56 -3
  102. package/lib/drama/skills/short-drama-write/references/stage-contract.md +4 -0
  103. package/lib/drama/skills/short-drama-write/scripts/duration_estimate.py +48 -2
  104. package/lib/index.js +346 -98
  105. package/lib/index.js.map +4 -4
  106. package/lib/novel-to-game/README.md +299 -59
  107. package/lib/novel-to-game/README_ZH.md +299 -56
  108. package/lib/novel-to-game/VERSION +1 -1
  109. package/lib/novel-to-game/examples/jin-ping-mei/build/BUILD_BRIEF.md +3 -1
  110. package/lib/novel-to-game/examples/jin-ping-mei/build/app/RUN.md +11 -3
  111. package/lib/novel-to-game/examples/jin-ping-mei/build/app/css/new-guofeng.css +397 -8
  112. package/lib/novel-to-game/examples/jin-ping-mei/build/app/css/style.css +0 -31
  113. package/lib/novel-to-game/examples/jin-ping-mei/build/app/js/data.js +71 -73
  114. package/lib/novel-to-game/examples/jin-ping-mei/build/app/js/engine.js +78 -89
  115. package/lib/novel-to-game/examples/jin-ping-mei/build/app/js/main.js +37 -14
  116. package/lib/novel-to-game/examples/jin-ping-mei/build/app/js/text.js +5 -5
  117. package/lib/novel-to-game/examples/jin-ping-mei/build/app/package.json +2 -1
  118. package/lib/novel-to-game/examples/jin-ping-mei/qa/README.md +11 -16
  119. package/lib/novel-to-game/examples/jin-ping-mei/qa/verification.json +11 -11
  120. package/lib/novel-to-game/examples/jin-ping-mei/qa/verify_playable_model.mjs +23 -0
  121. package/lib/novel-to-game/manifest.json +77 -87
  122. package/lib/novel-to-game/skills/game-art-direction/SKILL.md +7 -12
  123. package/lib/novel-to-game/skills/game-art-direction/references/art-direction-method.md +27 -106
  124. package/lib/novel-to-game/skills/game-build/SKILL.md +13 -14
  125. package/lib/novel-to-game/skills/game-build/references/blender-asset-workflow.md +24 -0
  126. package/lib/novel-to-game/skills/game-build/references/build-brief-contract.md +45 -82
  127. package/lib/novel-to-game/skills/game-build/references/generative-media-pipeline.md +14 -45
  128. package/lib/novel-to-game/skills/game-build/references/playable-model-contract.md +30 -65
  129. package/lib/novel-to-game/skills/game-build/references/tts-production-contract.md +13 -27
  130. package/lib/novel-to-game/skills/game-concept/SKILL.md +13 -15
  131. package/lib/novel-to-game/skills/game-concept/references/concept-method.md +28 -75
  132. package/lib/novel-to-game/skills/game-qa/SKILL.md +6 -7
  133. package/lib/novel-to-game/skills/game-qa/references/test-design-method.md +9 -5
  134. package/lib/novel-to-game/skills/game-world-design/SKILL.md +12 -16
  135. package/lib/novel-to-game/skills/game-world-design/references/narrative-design-method.md +23 -72
  136. package/lib/novel-to-game/skills/game-world-design/references/numeric-design-method.md +14 -48
  137. package/lib/novel-to-game/skills/game-world-design/references/world-design-method.md +36 -103
  138. package/lib/novel-to-game/skills/novel-game-analyze/SKILL.md +4 -10
  139. package/lib/novel-to-game/skills/novel-game-analyze/references/gameability-protocol.md +4 -4
  140. package/lib/novel-to-game/skills/novel-to-game/SKILL.md +9 -21
  141. package/lib/novel-to-game/skills/novel-to-game/references/intake-method.md +5 -4
  142. package/lib/novel-to-game/skills/novel-to-game/references/pipeline-contract.md +5 -8
  143. package/lib/oh-story/manifest.json +607 -327
  144. package/lib/oh-story/roles/chapter-extractor.md +177 -237
  145. package/lib/oh-story/roles/character-designer.md +1 -2
  146. package/lib/oh-story/roles/consistency-checker.md +15 -13
  147. package/lib/oh-story/roles/narrative-writer.md +36 -38
  148. package/lib/oh-story/roles/story-architect.md +9 -61
  149. package/lib/oh-story/roles/story-explorer.md +20 -125
  150. package/lib/oh-story/roles/story-researcher.md +0 -1
  151. package/lib/oh-story/skills/story/SKILL.md +15 -9
  152. package/lib/oh-story/skills/story/VERSION +1 -1
  153. package/lib/oh-story/skills/story/references/author-memory-maintenance.md +75 -0
  154. package/lib/oh-story/skills/story/references/author-memory.md +46 -94
  155. package/lib/oh-story/skills/story/scripts/author_memory_commit.py +934 -170
  156. package/lib/oh-story/skills/story-cover/SKILL.md +10 -1
  157. package/lib/oh-story/skills/story-deslop/SKILL.md +59 -73
  158. package/lib/oh-story/skills/story-deslop/references/agent-calls.md +5 -0
  159. package/lib/oh-story/skills/story-deslop/references/anti-ai-writing.md +12 -11
  160. package/lib/oh-story/skills/story-deslop/references/author-memory-maintenance.md +75 -0
  161. package/lib/oh-story/skills/story-deslop/references/author-memory.md +46 -94
  162. package/lib/oh-story/skills/story-deslop/references/banned-words.md +2 -2
  163. package/lib/oh-story/skills/story-deslop/references/deslop-gates.md +22 -5
  164. package/lib/oh-story/skills/story-deslop/references/style-resolution.md +4 -4
  165. package/lib/oh-story/skills/story-deslop/scripts/author_memory_commit.py +934 -170
  166. package/lib/oh-story/skills/story-deslop/scripts/check-ai-patterns.js +155 -8
  167. package/lib/oh-story/skills/story-import/SKILL.md +64 -584
  168. package/lib/oh-story/skills/story-import/references/character-state-reverse.md +1 -1
  169. package/lib/oh-story/skills/story-import/references/deep-analysis.md +47 -0
  170. package/lib/oh-story/skills/story-import/references/format-and-structure.md +1 -1
  171. package/lib/oh-story/skills/story-import/references/import-report.md +64 -0
  172. package/lib/oh-story/skills/story-import/references/import-special-cases.md +34 -0
  173. package/lib/oh-story/skills/story-import/references/import-tracking.md +95 -0
  174. package/lib/oh-story/skills/story-import/references/length-routing.md +1 -1
  175. package/lib/oh-story/skills/story-import/references/outline-reverse-rules.md +79 -0
  176. package/lib/oh-story/skills/story-import/references/outline-reverse.md +24 -0
  177. package/lib/oh-story/skills/story-import/references/state-tracking.md +4 -69
  178. package/lib/oh-story/skills/story-import/references/structure-mapping-long.md +98 -92
  179. package/lib/oh-story/skills/story-import/references/structure-mapping-short.md +24 -12
  180. package/lib/oh-story/skills/story-import/references/tracking-initialization.md +1 -1
  181. package/lib/oh-story/skills/story-import/references/tracking-transaction.md +15 -11
  182. package/lib/oh-story/skills/story-import/scripts/build_outline_brief.py +332 -0
  183. package/lib/oh-story/skills/story-import/scripts/check-outline-contract.js +132 -27
  184. package/lib/oh-story/skills/story-import/scripts/tracking_commit.py +478 -15
  185. package/lib/oh-story/skills/story-import/scripts/wordcount_core.py +182 -23
  186. package/lib/oh-story/skills/story-long-analyze/SKILL.md +81 -270
  187. package/lib/oh-story/skills/story-long-analyze/references/author-facing.md +252 -0
  188. package/lib/oh-story/skills/story-long-analyze/references/deconstruction-notes.md +3 -3
  189. package/lib/oh-story/skills/story-long-analyze/references/final-checks.md +19 -0
  190. package/lib/oh-story/skills/story-long-analyze/references/index-rebuild.md +11 -0
  191. package/lib/oh-story/skills/story-long-analyze/references/inspiration-library.md +105 -0
  192. package/lib/oh-story/skills/story-long-analyze/references/pipeline-ops.md +138 -64
  193. package/lib/oh-story/skills/story-long-analyze/references/semantic-acceptance-fixtures.md +84 -0
  194. package/lib/oh-story/skills/story-long-analyze/references/stage1-golden-chapters.md +128 -0
  195. package/lib/oh-story/skills/story-long-analyze/references/stage2-extraction.md +229 -0
  196. package/lib/oh-story/skills/story-long-analyze/references/stage3-plot-rhythm.md +480 -0
  197. package/lib/oh-story/skills/story-long-analyze/references/stage4-characters-settings.md +195 -0
  198. package/lib/oh-story/skills/story-long-analyze/references/stage5-report.md +33 -0
  199. package/lib/oh-story/skills/story-long-analyze/references/style-profile-generator.md +55 -128
  200. package/lib/oh-story/skills/story-long-analyze/references/style-profile-protocol.md +6 -6
  201. package/lib/oh-story/skills/story-long-analyze/references/synthesis-inputs.md +39 -0
  202. package/lib/oh-story/skills/story-long-analyze/scripts/build_chapter_index.py +466 -0
  203. package/lib/oh-story/skills/story-long-analyze/scripts/inspect_existing_assets.py +702 -0
  204. package/lib/oh-story/skills/story-long-analyze/scripts/inspiration_index.py +864 -0
  205. package/lib/oh-story/skills/story-long-analyze/scripts/manage_analysis_run.py +1145 -0
  206. package/lib/oh-story/skills/story-long-analyze/scripts/render_relation_chart.py +425 -0
  207. package/lib/oh-story/skills/story-long-scan/SKILL.md +45 -194
  208. package/lib/oh-story/skills/story-long-scan/references/platform-ciweimao.md +19 -0
  209. package/lib/oh-story/skills/story-long-scan/references/platform-fanqie.md +45 -0
  210. package/lib/oh-story/skills/story-long-scan/references/platform-jjwxc.md +28 -0
  211. package/lib/oh-story/skills/story-long-scan/references/platform-qidian.md +35 -0
  212. package/lib/oh-story/skills/story-long-scan/references/platform-qimao.md +27 -0
  213. package/lib/oh-story/skills/story-long-scan/references/topic-decision.md +6 -2
  214. package/lib/oh-story/skills/story-long-write/SKILL.md +49 -81
  215. package/lib/oh-story/skills/story-long-write/references/agent-calls.md +47 -0
  216. package/lib/oh-story/skills/story-long-write/references/anti-ai-writing.md +12 -11
  217. package/lib/oh-story/skills/story-long-write/references/artifact-protocols.md +24 -202
  218. package/lib/oh-story/skills/story-long-write/references/author-memory-maintenance.md +75 -0
  219. package/lib/oh-story/skills/story-long-write/references/author-memory.md +46 -94
  220. package/lib/oh-story/skills/story-long-write/references/banned-words.md +2 -2
  221. package/lib/oh-story/skills/story-long-write/references/benchmark-recall.md +7 -11
  222. package/lib/oh-story/skills/story-long-write/references/character-relations.md +49 -1
  223. package/lib/oh-story/skills/story-long-write/references/cross-book-recall.md +26 -0
  224. package/lib/oh-story/skills/story-long-write/references/deslop-gates.md +171 -0
  225. package/lib/oh-story/skills/story-long-write/references/dialogue-mastery.md +4 -0
  226. package/lib/oh-story/skills/story-long-write/references/emotion-on-page.md +116 -0
  227. package/lib/oh-story/skills/story-long-write/references/emotional-arc-design.md +1 -114
  228. package/lib/oh-story/skills/story-long-write/references/emotional-methods.md +2 -2
  229. package/lib/oh-story/skills/story-long-write/references/genre-prose-cards.md +1 -1
  230. package/lib/oh-story/skills/story-long-write/references/long-chapter-quality.md +7 -15
  231. package/lib/oh-story/skills/story-long-write/references/long-format.md +0 -8
  232. package/lib/oh-story/skills/story-long-write/references/long-genre-catalog.md +1 -1
  233. package/lib/oh-story/skills/story-long-write/references/long-genre-mechanics.md +3 -3
  234. package/lib/oh-story/skills/story-long-write/references/opening-design.md +2 -2
  235. package/lib/oh-story/skills/story-long-write/references/outline-conflict.md +4 -4
  236. package/lib/oh-story/skills/story-long-write/references/outline-methods.md +7 -7
  237. package/lib/oh-story/skills/story-long-write/references/outline-rhythm.md +3 -3
  238. package/lib/oh-story/skills/story-long-write/references/outline-structure-theory.md +14 -69
  239. package/lib/oh-story/skills/story-long-write/references/plot-frameworks.md +1 -1
  240. package/lib/oh-story/skills/story-long-write/references/plot-special-topics.md +2 -2
  241. package/lib/oh-story/skills/story-long-write/references/project-files.md +19 -13
  242. package/lib/oh-story/skills/story-long-write/references/reader-contract-and-progression.md +13 -5
  243. package/lib/oh-story/skills/story-long-write/references/reference-index.md +5 -6
  244. package/lib/oh-story/skills/story-long-write/references/stop-and-fix.md +9 -0
  245. package/lib/oh-story/skills/story-long-write/references/style-combat-face.md +1 -58
  246. package/lib/oh-story/skills/story-long-write/references/style-genre-modules.md +1 -1
  247. package/lib/oh-story/skills/story-long-write/references/style-resolution.md +4 -4
  248. package/lib/oh-story/skills/story-long-write/references/tracking-initialization.md +1 -1
  249. package/lib/oh-story/skills/story-long-write/references/tracking-transaction.md +15 -11
  250. package/lib/oh-story/skills/story-long-write/references/workflow-chapter.md +81 -121
  251. package/lib/oh-story/skills/story-long-write/references/workflow-daily.md +41 -139
  252. package/lib/oh-story/skills/story-long-write/references/workflow-outline.md +157 -0
  253. package/lib/oh-story/skills/story-long-write/references/workflow-revision.md +57 -67
  254. package/lib/oh-story/skills/story-long-write/references/workflow-setup.md +112 -253
  255. package/lib/oh-story/skills/story-long-write/references/workflow-volume.md +142 -0
  256. package/lib/oh-story/skills/story-long-write/references/writer-prompt-fallback.md +6 -4
  257. package/lib/oh-story/skills/story-long-write/references/writing-craft.md +19 -65
  258. package/lib/oh-story/skills/story-long-write/scripts/author_memory_commit.py +934 -170
  259. package/lib/oh-story/skills/story-long-write/scripts/build_architect_brief.py +260 -0
  260. package/lib/oh-story/skills/story-long-write/scripts/build_writer_prompt.py +226 -25
  261. package/lib/oh-story/skills/story-long-write/scripts/check-ai-patterns.js +155 -8
  262. package/lib/oh-story/skills/story-long-write/scripts/check-outline-contract.js +132 -27
  263. package/lib/oh-story/skills/story-long-write/scripts/check-outline-copy.js +7 -2
  264. package/lib/oh-story/skills/story-long-write/scripts/outline_view.py +7 -4
  265. package/lib/oh-story/skills/story-long-write/scripts/storyctl.py +304 -46
  266. package/lib/oh-story/skills/story-long-write/scripts/tracking_commit.py +478 -15
  267. package/lib/oh-story/skills/story-long-write/scripts/wordcount_core.py +182 -23
  268. package/lib/oh-story/skills/story-review/SKILL.md +31 -302
  269. package/lib/oh-story/skills/story-review/references/agent-prompts.md +184 -0
  270. package/lib/oh-story/skills/story-review/references/anti-ai-writing.md +12 -11
  271. package/lib/oh-story/skills/story-review/references/author-memory-maintenance.md +75 -0
  272. package/lib/oh-story/skills/story-review/references/author-memory.md +46 -94
  273. package/lib/oh-story/skills/story-review/references/banned-words.md +2 -2
  274. package/lib/oh-story/skills/story-review/references/batch-review.md +19 -0
  275. package/lib/oh-story/skills/story-review/references/character-relations.md +49 -1
  276. package/lib/oh-story/skills/story-review/references/dialogue-mastery.md +4 -0
  277. package/lib/oh-story/skills/story-review/references/review-quality.md +6 -11
  278. package/lib/oh-story/skills/story-review/references/review-tracking.md +10 -0
  279. package/lib/oh-story/skills/story-review/references/solo.md +52 -0
  280. package/lib/oh-story/skills/story-review/references/style-resolution.md +4 -4
  281. package/lib/oh-story/skills/story-review/references/tracking-initialization.md +1 -1
  282. package/lib/oh-story/skills/story-review/references/tracking-transaction.md +15 -11
  283. package/lib/oh-story/skills/story-review/scripts/author_memory_commit.py +934 -170
  284. package/lib/oh-story/skills/story-review/scripts/check-ai-patterns.js +155 -8
  285. package/lib/oh-story/skills/story-review/scripts/tracking_commit.py +478 -15
  286. package/lib/oh-story/skills/story-review/scripts/wordcount_core.py +182 -23
  287. package/lib/oh-story/skills/story-setup/SKILL.md +71 -452
  288. package/lib/oh-story/skills/story-setup/references/agent-references/agent-quality.md +4 -4
  289. package/lib/oh-story/skills/story-setup/references/agent-references/anti-ai-writing.md +12 -11
  290. package/lib/oh-story/skills/story-setup/references/agent-references/banned-words.md +2 -2
  291. package/lib/oh-story/skills/story-setup/references/agent-references/benchmark-style-load.md +107 -0
  292. package/lib/oh-story/skills/story-setup/references/agent-references/character-relations.md +49 -1
  293. package/lib/oh-story/skills/story-setup/references/agent-references/deslop-gates.md +22 -5
  294. package/lib/oh-story/skills/story-setup/references/agent-references/dialogue-mastery.md +4 -0
  295. package/lib/oh-story/skills/story-setup/references/agent-references/emotion-on-page.md +116 -0
  296. package/lib/oh-story/skills/story-setup/references/agent-references/emotional-arc-design.md +1 -114
  297. package/lib/oh-story/skills/story-setup/references/agent-references/format-and-structure.md +1 -1
  298. package/lib/oh-story/skills/story-setup/references/agent-references/genre-prose-cards.md +1 -1
  299. package/lib/oh-story/skills/story-setup/references/agent-references/long-emotional-methods.md +2 -2
  300. package/lib/oh-story/skills/story-setup/references/agent-references/long-genre-catalog.md +1 -1
  301. package/lib/oh-story/skills/story-setup/references/agent-references/long-genre-mechanics.md +3 -3
  302. package/lib/oh-story/skills/story-setup/references/agent-references/long-quality.md +7 -5
  303. package/lib/oh-story/skills/story-setup/references/agent-references/opening-design.md +2 -2
  304. package/lib/oh-story/skills/story-setup/references/agent-references/outline-conflict.md +4 -4
  305. package/lib/oh-story/skills/story-setup/references/agent-references/outline-methods.md +7 -7
  306. package/lib/oh-story/skills/story-setup/references/agent-references/outline-rhythm.md +3 -3
  307. package/lib/oh-story/skills/story-setup/references/agent-references/short-emotional-methods.md +1 -1
  308. package/lib/oh-story/skills/story-setup/references/agent-references/short-genre-formulas.md +0 -15
  309. package/lib/oh-story/skills/story-setup/references/agent-references/short-reversal.md +1 -1
  310. package/lib/oh-story/skills/story-setup/references/agent-references/style-combat-face.md +1 -58
  311. package/lib/oh-story/skills/story-setup/references/agent-references/style-genre-modules.md +1 -1
  312. package/lib/oh-story/skills/story-setup/references/agent-references/style-resolution.md +4 -4
  313. package/lib/oh-story/skills/story-setup/references/agent-references/writing-craft.md +19 -65
  314. package/lib/oh-story/skills/story-setup/references/diagnostics.md +4 -4
  315. package/lib/oh-story/skills/story-short-analyze/SKILL.md +56 -110
  316. package/lib/oh-story/skills/story-short-analyze/references/analysis-character-relations.md +1 -1
  317. package/lib/oh-story/skills/story-short-analyze/references/analysis-method.md +42 -0
  318. package/lib/oh-story/skills/story-short-analyze/references/optional-modules.md +97 -0
  319. package/lib/oh-story/skills/story-short-analyze/references/output-contract.md +9 -47
  320. package/lib/oh-story/skills/story-short-analyze/references/quality-checklist.md +80 -0
  321. package/lib/oh-story/skills/story-short-analyze/references/source-story-quality.md +4 -4
  322. package/lib/oh-story/skills/story-short-analyze/references/stage2-3-structure-emotion.md +308 -0
  323. package/lib/oh-story/skills/story-short-analyze/references/stage4-6-reversal-summary.md +611 -0
  324. package/lib/oh-story/skills/story-short-scan/SKILL.md +35 -65
  325. package/lib/oh-story/skills/story-short-scan/references/manual-rank-input.md +36 -0
  326. package/lib/oh-story/skills/story-short-scan/references/platform-dianzhong.md +24 -0
  327. package/lib/oh-story/skills/story-short-scan/references/platform-heiyan.md +21 -0
  328. package/lib/oh-story/skills/story-short-scan/references/topic-match.md +38 -0
  329. package/lib/oh-story/skills/story-short-write/SKILL.md +23 -175
  330. package/lib/oh-story/skills/story-short-write/references/agent-calls.md +13 -0
  331. package/lib/oh-story/skills/story-short-write/references/author-memory-maintenance.md +75 -0
  332. package/lib/oh-story/skills/story-short-write/references/author-memory.md +46 -94
  333. package/lib/oh-story/skills/story-short-write/references/banned-words.md +2 -2
  334. package/lib/oh-story/skills/story-short-write/references/benchmark-recall.md +1 -21
  335. package/lib/oh-story/skills/story-short-write/references/dialogue-mastery.md +4 -0
  336. package/lib/oh-story/skills/story-short-write/references/emotional-methods.md +1 -1
  337. package/lib/oh-story/skills/story-short-write/references/genre-writing-formulas.md +0 -15
  338. package/lib/oh-story/skills/story-short-write/references/output-contract.md +9 -47
  339. package/lib/oh-story/skills/story-short-write/references/reference-index.md +17 -47
  340. package/lib/oh-story/skills/story-short-write/references/scene-craft.md +40 -0
  341. package/lib/oh-story/skills/story-short-write/references/short-craft.md +7 -43
  342. package/lib/oh-story/skills/story-short-write/references/short-format.md +3 -3
  343. package/lib/oh-story/skills/story-short-write/references/short-prose-quality.md +2 -1
  344. package/lib/oh-story/skills/story-short-write/references/short-reversal.md +1 -1
  345. package/lib/oh-story/skills/story-short-write/references/style-resolution.md +4 -4
  346. package/lib/oh-story/skills/story-short-write/references/submission-craft.md +1 -1
  347. package/lib/oh-story/skills/story-short-write/references/villain-and-reveal.md +5 -10
  348. package/lib/oh-story/skills/story-short-write/references/workflow-design.md +21 -13
  349. package/lib/oh-story/skills/story-short-write/references/workflow-draft.md +116 -0
  350. package/lib/oh-story/skills/story-short-write/references/workflow-revision.md +99 -0
  351. package/lib/oh-story/skills/story-short-write/references/writing-workflow.md +7 -119
  352. package/lib/oh-story/skills/story-short-write/scripts/author_memory_commit.py +934 -170
  353. package/lib/oh-story/skills/story-short-write/scripts/check-ai-patterns.js +155 -8
  354. package/lib/oh-story/skills/story-short-write/scripts/check-outline-copy.js +7 -2
  355. package/lib/types/client/drama-production-view.d.ts.map +1 -1
  356. package/lib/types/client/file-activity.d.ts +19 -1
  357. package/lib/types/client/file-activity.d.ts.map +1 -1
  358. package/lib/types/client/index.d.ts.map +1 -1
  359. package/lib/types/client/production-prompts.d.ts +7 -0
  360. package/lib/types/client/production-prompts.d.ts.map +1 -1
  361. package/lib/types/client/production-runtime.d.ts +16 -0
  362. package/lib/types/client/production-runtime.d.ts.map +1 -1
  363. package/lib/types/client/video-studio.d.ts.map +1 -1
  364. package/lib/types/drama-adapters.d.ts +5 -3
  365. package/lib/types/drama-adapters.d.ts.map +1 -1
  366. package/lib/types/native-hooks.d.ts +53 -1
  367. package/lib/types/native-hooks.d.ts.map +1 -1
  368. package/lib/types/role-identity.d.ts +17 -0
  369. package/lib/types/role-identity.d.ts.map +1 -0
  370. package/lib/types/role-tool.d.ts.map +1 -1
  371. package/lib/types/skill-provider.d.ts.map +1 -1
  372. package/lib/types/video-project.d.ts.map +1 -1
  373. package/lib/types/workspace-route.d.ts.map +1 -1
  374. package/lib/video-recap/CHANGELOG.md +60 -1
  375. package/lib/video-recap/README.en.md +348 -137
  376. package/lib/video-recap/README.md +340 -136
  377. package/lib/video-recap/manifest.json +406 -251
  378. package/lib/video-recap/skills/video-assemble/SKILL.md +30 -15
  379. package/lib/video-recap/skills/video-assemble/references/audio-modes.md +63 -0
  380. package/lib/video-recap/skills/video-assemble/references/explicit-audio-mix.md +75 -0
  381. package/lib/video-recap/skills/video-assemble/references/foreground-compose.md +118 -0
  382. package/lib/video-recap/skills/video-assemble/references/narration-adoption.md +103 -0
  383. package/lib/video-recap/skills/video-assemble/references/packaging.md +45 -0
  384. package/lib/video-recap/skills/video-assemble/references/pair-media.md +74 -0
  385. package/lib/video-recap/skills/video-assemble/references/source-score.md +147 -0
  386. package/lib/video-recap/skills/video-assemble/references/subtitle-track.md +202 -0
  387. package/lib/video-recap/skills/video-assemble/scripts/adoption/__init__.py +1 -0
  388. package/lib/video-recap/skills/video-assemble/scripts/adoption/audio_mix_binding.py +279 -0
  389. package/lib/video-recap/skills/video-assemble/scripts/adoption/frozen_audio.py +187 -0
  390. package/lib/video-recap/skills/video-assemble/scripts/adoption/narration_binding.py +323 -0
  391. package/lib/video-recap/skills/video-assemble/scripts/adoption/strict_inputs.py +109 -0
  392. package/lib/video-recap/skills/video-assemble/scripts/adoption/strict_publish.py +130 -0
  393. package/lib/video-recap/skills/video-assemble/scripts/artifacts.py +10 -46
  394. package/lib/video-recap/skills/video-assemble/scripts/assemble.py +378 -119
  395. package/lib/video-recap/skills/video-assemble/scripts/assemble_constants.py +29 -12
  396. package/lib/video-recap/skills/video-assemble/scripts/assembly_contract.py +95 -44
  397. package/lib/video-recap/skills/video-assemble/scripts/assembly_settings.py +75 -32
  398. package/lib/video-recap/skills/video-assemble/scripts/audio_mix.py +11 -11
  399. package/lib/video-recap/skills/video-assemble/scripts/compose_foreground.py +293 -0
  400. package/lib/video-recap/skills/video-assemble/scripts/export_jianying.py +71 -78
  401. package/lib/video-recap/skills/video-assemble/scripts/jianying/__init__.py +1 -0
  402. package/lib/video-recap/skills/video-assemble/scripts/{jianying_builders.py → jianying/builders.py} +39 -67
  403. package/lib/video-recap/skills/video-assemble/scripts/{jianying_model.py → jianying/model.py} +3 -11
  404. package/lib/video-recap/skills/video-assemble/scripts/{jianying_optional.py → jianying/optional.py} +1 -1
  405. package/lib/video-recap/skills/video-assemble/scripts/jianying/schema.py +53 -0
  406. package/lib/video-recap/skills/video-assemble/scripts/{jianying_templates.py → jianying/templates.py} +1 -1
  407. package/lib/video-recap/skills/video-assemble/scripts/{jianying_timeline_contract.py → jianying/timeline_contract.py} +34 -13
  408. package/lib/video-recap/skills/video-assemble/scripts/{jianying_writer.py → jianying/writer.py} +7 -17
  409. package/lib/video-recap/skills/video-assemble/scripts/lib.py +37 -4
  410. package/lib/video-recap/skills/video-assemble/scripts/media.py +12 -21
  411. package/lib/video-recap/skills/video-assemble/scripts/narration_audio.py +64 -34
  412. package/lib/video-recap/skills/video-assemble/scripts/packaging.py +122 -0
  413. package/lib/video-recap/skills/video-assemble/scripts/pair_media.py +216 -0
  414. package/lib/video-recap/skills/video-assemble/scripts/render_preflight.py +1 -3
  415. package/lib/video-recap/skills/video-assemble/scripts/source_score.py +469 -0
  416. package/lib/video-recap/skills/video-assemble/scripts/source_subtitles.py +25 -9
  417. package/lib/video-recap/skills/video-assemble/scripts/subtitles/__init__.py +1 -0
  418. package/lib/video-recap/skills/video-assemble/scripts/{subtitle_core.py → subtitles/core.py} +13 -6
  419. package/lib/video-recap/skills/video-assemble/scripts/{subtitle_render.py → subtitles/render.py} +5 -4
  420. package/lib/video-recap/skills/video-assemble/scripts/subtitles/track.py +324 -0
  421. package/lib/video-recap/skills/video-assemble/scripts/subtitles/track_binding.py +200 -0
  422. package/lib/video-recap/skills/video-assemble/scripts/timeline.py +30 -46
  423. package/lib/video-recap/skills/video-assemble/scripts/timeline_emit.py +91 -7
  424. package/lib/video-recap/skills/video-assemble/scripts/visual_render.py +22 -8
  425. package/lib/video-recap/skills/video-cut/SKILL.md +34 -16
  426. package/lib/video-recap/skills/video-cut/references/shot-review.md +50 -0
  427. package/lib/video-recap/skills/video-cut/scripts/cut.py +2 -28
  428. package/lib/video-recap/skills/video-cut/scripts/cut_cli.py +58 -62
  429. package/lib/video-recap/skills/video-cut/scripts/cut_contract.py +21 -106
  430. package/lib/video-recap/skills/video-cut/scripts/cut_render.py +14 -9
  431. package/lib/video-recap/skills/video-cut/scripts/lib.py +39 -0
  432. package/lib/video-recap/skills/video-cut/scripts/narration_mapping.py +2 -155
  433. package/lib/video-recap/skills/video-cut/scripts/narrative_selection.py +244 -0
  434. package/lib/video-recap/skills/video-cut/scripts/shot_review.py +357 -0
  435. package/lib/video-recap/skills/video-recap/SKILL.md +86 -42
  436. package/lib/video-recap/skills/video-recap/references/audio-routing.md +126 -0
  437. package/lib/video-recap/skills/video-recap/references/config-playbook.md +12 -8
  438. package/lib/video-recap/skills/video-recap/references/data-schema.md +44 -33
  439. package/lib/video-recap/skills/video-recap/references/resource-library.md +151 -0
  440. package/lib/video-recap/skills/video-recap/references/shift-left-qc-schema.md +1 -1
  441. package/lib/video-recap/skills/video-recap/scripts/doctor.py +123 -30
  442. package/lib/video-recap/skills/video-recap/scripts/final_qc.py +22 -75
  443. package/lib/video-recap/skills/video-recap/scripts/lib.py +3 -3
  444. package/lib/video-recap/skills/video-recap/scripts/library.py +509 -0
  445. package/lib/video-recap/skills/video-recap/scripts/materials.py +63 -91
  446. package/lib/video-recap/skills/video-recap/scripts/mimo_qc.py +8 -70
  447. package/lib/video-recap/skills/video-recap/scripts/project_binding.py +286 -0
  448. package/lib/video-recap/skills/video-recap/scripts/qc/__init__.py +1 -0
  449. package/lib/video-recap/skills/video-recap/scripts/{mimo_qc_client.py → qc/mimo_client.py} +1 -1
  450. package/lib/video-recap/skills/video-recap/scripts/{mimo_qc_evidence.py → qc/mimo_evidence.py} +33 -66
  451. package/lib/video-recap/skills/video-recap/scripts/{mimo_qc_observations.py → qc/mimo_observations.py} +3 -11
  452. package/lib/video-recap/skills/video-recap/scripts/{mimo_qc_payload.py → qc/mimo_payload.py} +4 -7
  453. package/lib/video-recap/skills/video-recap/scripts/{mimo_qc_report.py → qc/mimo_report.py} +17 -28
  454. package/lib/video-recap/skills/video-recap/scripts/{mimo_qc_runner.py → qc/mimo_runner.py} +2 -2
  455. package/lib/video-recap/skills/video-recap/scripts/qc_contract.py +0 -19
  456. package/lib/video-recap/skills/video-recap/scripts/recap_cli.py +119 -50
  457. package/lib/video-recap/skills/video-recap/scripts/recap_inspect.py +32 -114
  458. package/lib/video-recap/skills/video-recap/scripts/recap_review.py +9 -23
  459. package/lib/video-recap/skills/video-recap/scripts/recap_runner.py +387 -334
  460. package/lib/video-recap/skills/video-recap/scripts/recap_runtime.py +23 -23
  461. package/lib/video-recap/skills/video-recap/scripts/recap_source.py +278 -0
  462. package/lib/video-recap/skills/video-recap/scripts/recap_stage_qc.py +25 -12
  463. package/lib/video-recap/skills/video-recap/scripts/recap_timeline.py +59 -52
  464. package/lib/video-recap/skills/video-recap/scripts/resource_lock.py +162 -0
  465. package/lib/video-recap/skills/video-script/SKILL.md +16 -13
  466. package/lib/video-recap/skills/video-script/references/creative-editing-playbook.md +9 -5
  467. package/lib/video-recap/skills/video-script/references/promotional-copy.md +68 -0
  468. package/lib/video-recap/skills/video-script/references/research-guide.md +1 -1
  469. package/lib/video-recap/skills/video-script/scripts/evidence_bundle.py +24 -76
  470. package/lib/video-recap/skills/video-script/scripts/lib.py +10 -87
  471. package/lib/video-recap/skills/video-script/scripts/narration_lint.py +63 -39
  472. package/lib/video-recap/skills/video-script/scripts/review.py +0 -2
  473. package/lib/video-recap/skills/video-script/scripts/review_grounding.py +35 -59
  474. package/lib/video-recap/skills/video-script/scripts/review_response.py +66 -128
  475. package/lib/video-recap/skills/video-script/scripts/review_runner.py +12 -20
  476. package/lib/video-recap/skills/video-script/scripts/speech_ownership.py +4 -4
  477. package/lib/video-recap/skills/video-script/scripts/validate.py +53 -42
  478. package/lib/video-recap/skills/video-understanding/SKILL.md +6 -4
  479. package/lib/video-recap/skills/video-understanding/references/data-schema.md +50 -156
  480. package/lib/video-recap/skills/video-understanding/references/research-guide.md +4 -4
  481. package/lib/video-recap/skills/video-understanding/scripts/asr.py +85 -65
  482. package/lib/video-recap/skills/video-understanding/scripts/asr_timing_evidence.py +270 -0
  483. package/lib/video-recap/skills/video-understanding/scripts/brief.py +2 -5
  484. package/lib/video-recap/skills/video-understanding/scripts/briefing/__init__.py +1 -0
  485. package/lib/video-recap/skills/{video-script/scripts/agent_brief.py → video-understanding/scripts/briefing/builder.py} +38 -35
  486. package/lib/video-recap/skills/video-understanding/scripts/{brief_context.py → briefing/context.py} +4 -35
  487. package/lib/video-recap/skills/{video-script/scripts/brief_inputs.py → video-understanding/scripts/briefing/inputs.py} +9 -31
  488. package/lib/video-recap/skills/{video-script/scripts/brief_timeline.py → video-understanding/scripts/briefing/timeline.py} +5 -6
  489. package/lib/video-recap/skills/video-understanding/scripts/consolidate.py +65 -116
  490. package/lib/video-recap/skills/video-understanding/scripts/detect.py +31 -40
  491. package/lib/video-recap/skills/video-understanding/scripts/lib.py +30 -86
  492. package/lib/video-recap/skills/video-understanding/scripts/narration_lint.py +63 -39
  493. package/lib/video-recap/skills/video-understanding/scripts/speech_ownership.py +4 -4
  494. package/lib/video-recap/skills/video-understanding/scripts/storyboard.py +17 -79
  495. package/lib/video-recap/skills/video-understanding/scripts/understanding_brief.py +14 -40
  496. package/lib/video-recap/skills/video-understanding/scripts/understanding_cache.py +64 -46
  497. package/lib/video-recap/skills/video-understanding/scripts/understanding_runner.py +31 -11
  498. package/lib/video-recap/skills/video-understanding/scripts/understanding_storyboard.py +19 -14
  499. package/lib/video-recap/skills/video-understanding/scripts/vlm.py +80 -108
  500. package/lib/video-recap/skills/video-voiceover/SKILL.md +29 -19
  501. package/lib/video-recap/skills/video-voiceover/references/index-tts.md +31 -0
  502. package/lib/video-recap/skills/video-voiceover/scripts/approved_text_policy.py +123 -0
  503. package/lib/video-recap/skills/video-voiceover/scripts/dub.py +51 -59
  504. package/lib/video-recap/skills/video-voiceover/scripts/lib.py +8 -44
  505. package/lib/video-recap/skills/video-voiceover/scripts/providers/__init__.py +1 -0
  506. package/lib/video-recap/skills/video-voiceover/scripts/providers/index_tts.py +184 -0
  507. package/lib/video-recap/skills/video-voiceover/scripts/voiceover.py +212 -134
  508. package/package.json +45 -45
  509. package/lib/novel-to-game/skills/game-world-design/references/dialogue-design-method.md +0 -58
  510. package/lib/novel-to-game/skills/game-world-design/references/game-writing-craft.md +0 -53
  511. package/lib/novel-to-game/skills/novel-to-game/references/intake-benchmark-reference.md +0 -38
  512. package/lib/oh-story/skills/story-long-analyze/references/material-decomposition.md +0 -530
  513. package/lib/oh-story/skills/story-long-analyze/references/output-templates.md +0 -559
  514. package/lib/oh-story/skills/story-long-scan/references/scan-output-format.md +0 -207
  515. package/lib/oh-story/skills/story-long-write/references/state-tracking.md +0 -108
  516. package/lib/oh-story/skills/story-short-analyze/references/material-decomposition.md +0 -678
  517. package/lib/oh-story/skills/story-short-analyze/references/output-templates.md +0 -561
  518. package/lib/video-recap/skills/video-assemble/scripts/jianying_schema.py +0 -98
  519. package/lib/video-recap/skills/video-recap/references/creative-editing-playbook.md +0 -225
  520. package/lib/video-recap/skills/video-recap/references/research-guide.md +0 -74
  521. package/lib/video-recap/skills/video-recap/references/timeline-and-jianying.md +0 -250
  522. package/lib/video-recap/skills/video-script/scripts/brief_context.py +0 -348
  523. package/lib/video-recap/skills/video-script/scripts/narration.py +0 -12
  524. package/lib/video-recap/skills/video-understanding/scripts/agent_brief.py +0 -399
  525. package/lib/video-recap/skills/video-understanding/scripts/brief_inputs.py +0 -290
  526. package/lib/video-recap/skills/video-understanding/scripts/brief_timeline.py +0 -327
  527. /package/lib/video-recap/skills/video-assemble/scripts/{jianying_tracks.py → jianying/tracks.py} +0 -0
  528. /package/lib/video-recap/skills/video-recap/scripts/{mimo_qc_contract.py → qc/mimo_contract.py} +0 -0
  529. /package/lib/video-recap/skills/video-voiceover/scripts/{fish_audio.py → providers/fish_audio.py} +0 -0
@@ -10,7 +10,7 @@
10
10
  |---|---|
11
11
  | `拆文库/{书名}/角色/{角色名}.md` | 身份、能力、目标、成长弧线、出场记录 |
12
12
  | `拆文库/{书名}/角色/角色关系.md` | 截至最后完整章的关键关系 |
13
- | `拆文库/{书名}/章节/第N章_摘要.md` | 最后位置、最新状态、已知信息与未结事项 |
13
+ | `拆文库/{书名}/章节/第N章_摘要.md` | 从 `涉及` 锁定相关章,从 `状态变化`、`信息变化`、`局面结果` 和 `章尾钩子` 提取最后位置、最新状态、已知信息与未结事项;旧摘要缺字段时回退其关键事件与情节点 |
14
14
  | `拆文库/{书名}/剧情/*.md` | 阵营/身份转折、阶段目标和长期冲突 |
15
15
  | 初始化事务中的伏笔与时间线候选 | 核对角色未结事项及其可知范围 |
16
16
 
@@ -0,0 +1,47 @@
1
+ # 深度分析时刻:导入场景怎么驱动拆解管道
2
+
3
+ Phase 2 只读本文件,再按篇幅进入对应 analyze skill;拆书的方法、产物结构、分批、恢复与质量检查全部由 analyze skill 自己的流程负责,本文件只写导入场景的取值。篇幅、原文位置、题材和写作环境都读导入记录(`{书目录}/.story/work/导入记录.md`),不回翻对话、不重新问作者。
4
+
5
+ | 篇幅 | 进入 | 产物目录 |
6
+ |------|------|---------|
7
+ | 长篇 | `/story-long-analyze` 的统一管道(旧成果直用 / 按需增强 / 全新或部分续跑) | `拆文库/{导入书名}/` |
8
+ | 短篇 | `/story-short-analyze` 的拆解管道(Stage 2-6) | `拆文库/{导入书名}/` |
9
+
10
+ ## 长篇:先兼容识别,再决定是否续跑
11
+
12
+ 先运行 story-long-analyze Phase 1 的只读检查器(`inspect_existing_assets.py`),登记实际文件和覆盖范围;检查建议不能覆盖下列语义规则:
13
+
14
+ 新生成或按当前契约续跑的长篇进度保持 `schema_version: 2`;旧成果直接使用不以缺少该字段为失败。
15
+
16
+ - **旧成果已完成且足以重建写作工程**:直接进入 Phase 3。旧 `_progress.md` 版本、缺少 `chapter_index.csv`,或缺少本次新增字段,都不能单独成为重拆理由。
17
+ - **旧成果可以导入,但缺少当前写作/对标功能需要的 `剧情/节奏.md`、`剧情/情绪模块.md` 等资料**:先用现有逐章、剧情、关系、报告和文风做 Stage 3+ 按需增强,不回读原文。不得重跑已完成章节,也不得用空壳文件让门禁通过。
18
+ - **只完成一部分或新旧产物混存**:验证并保留已完成部分,从首个缺失的连续章节块续跑,最后统一聚合。进度记录与实际文件冲突时,以可验证文件为准并记录冲突。
19
+ - **全新导入**:运行 Stage 0-6 完整管道。
20
+
21
+ 导入需要自动完成本次判定出的必需范围,不把 Stage 1 停靠询问甩给作者。全新导入命中「完整拆解、一次跑完」路径;旧成果增强或部分续跑只执行缺失 Stage/章节块。原有用途当前不消费新增分析时,缺少新增字段只记录能力限制,不阻断导入。
22
+
23
+ - 措辞示例(全新):启动深度分析时声明「以『完整拆解、一次跑完、不要停下询问』模式拆解本书,确保 Stage 2-6 全部产出」。
24
+ - 措辞示例(旧成果):声明「先复用并校验现有成果,只补当前导入缺失的章节或分析,不覆盖用户原成果」。
25
+ - **兜底**:若全新导入实际仍停在 Stage 1,自动选择继续;若旧成果任务停靠,则按已登记的缺失范围继续,不能扩大成全书重跑。
26
+ - 派发:导入记录写着分析助手可用时,属自动续跑,按 story-long-analyze 的「有限并行」档派 `chapter-extractor`(每轮 3 批),每个连续章节批次只调用一次,同次生成逐章事实与跨章观察;作者明确要求时改用串行或不限批次顺序。作者选了直接导入(或 ZCode)时,Stage 2 由主会话按相同连续章节块契约串行处理,不能退回每章一次独立调用;产物仍完整,仅速度变慢。
27
+ - 超过 200 章的作品按 [import-special-cases.md](import-special-cases.md)「超过 200 章的作品」分批拆解。
28
+
29
+ ## 短篇:单一全量管道
30
+
31
+ story-short-analyze 的拆解管道(Stage 2-6)本身**无 Stage 1 停靠点**,一次跑完即可。它的 Phase 1 四个 Step 都要跑,按下表的导入场景取值执行,不整段跳过:
32
+
33
+ | Phase 1 步骤 | 导入场景下的处理 |
34
+ |-------------|----------------|
35
+ | Step 1:拿到原文 | 用导入记录里的源文件,不重新问 |
36
+ | Step 2:字数检查(长短篇路由) | 篇幅已在导入 Phase 1 判定并经作者确认,直接答「按短篇继续」,不重新路由 |
37
+ | Step 3:题材识别 | **照常跑**,题材标尺必须加载;导入记录里已确认的题材类型直接代入,不重复提问 |
38
+ | Step 4:续跑检查(`拆文库/{导入书名}/_meta.json` 已存在时三选一) | 先看旧产出是否可直接复用:`stages_completed` 已含 6 且 `拆文报告.md` / `情节节点.md` / `写作手法.md` / `原文/` 均非空、来源与本次导入源一致 → 直接进 Phase 3,不重跑也不归档。否则本轮首次进入 Phase 2 → 按 (a) 覆盖:先把旧产出归档到 `拆文库/{导入书名}/_archive_{时间戳}/`,再从 Stage 2 重跑;同一轮导入内重试同一本书 → 按 (b) 续跑。不把三选一甩给作者,也不跳过归档 |
39
+
40
+ `_meta.json` 的 `genre_detected` 由 Step 3 产出,是拆文契约的阻断级必填字段,下游 story-short-write 靠它选题材标尺——**不要跳过 Step 3 直接从原文备份起跑**。
41
+
42
+ - 措辞示例:启动深度分析时声明「《{导入书名}》篇幅已确认为短篇(题材 {题材类型},全文约 {N} 字),Step 2 直接按短篇继续,Step 4 按覆盖并归档处理,题材识别照跑,确保 Stage 2-6 全部产出」。
43
+ - **兜底**:若运行环境仍抛出「此文字数 {N} 偏长,建议改用 `/story-long-analyze`」或灰区提问「介于短/长之间,按短篇还是长篇拆?」,一律按导入记录里锁定的判定逐字回「按短篇继续」,**绝不把路由询问甩给作者**。
44
+
45
+ ## 交付
46
+
47
+ 拆解管道自带的质量检查通过、产物落在 `拆文库/{导入书名}/` 后,在导入记录勾「深度分析」。拆书流程自带的完工汇报(长篇「全部拆完」、短篇「可以运行 /story-short-write 写下一篇」)在导入里不用,由这里交代:向作者用一两句故事话说拆到了什么(几章、主要人物、主线一句),末尾按 [SKILL.md 的换上下文规则](../SKILL.md#时刻表与交接) 建议新开对话。拆书中断时不在这里另做恢复:重新进入同一拆解管道,由它按自己的进度文件续跑。
@@ -146,7 +146,7 @@
146
146
 
147
147
  | 平台 | 章节标记 | 对话格式 | 特殊要求 |
148
148
  |------|----------|----------|----------|
149
- | 知乎盐言 | `1.` | `「」` | 导语需单独标注 |
149
+ | 知乎盐言 | `1.` | `「」` | 导语即正文开头几段,不另标 |
150
150
  | 番茄 | `###第一章` | `""` | 首段需有吸引力 |
151
151
  | 红果 | `###1.` | `""` | 无 |
152
152
 
@@ -0,0 +1,64 @@
1
+ # 汇报与激活时刻
2
+
3
+ Phase 5 只读本文件和导入记录(`{书目录}/.story/work/导入记录.md`)。前面每个时刻已按自己的清单验收后才勾进度,这里不重读迁移规则。
4
+
5
+ ## Step 1:收尾自检
6
+
7
+ 这是你自己的自检,不念给作者:全部通过就不提;没通过先回到对应时刻修,修不了才用故事话告诉作者影响和办法。
8
+
9
+ - 导入记录的进度全部勾上(短篇没有细纲与追踪两项)。
10
+ - **长篇**:`正文/` 章节文件数等于导入范围章数;每章都有 `大纲/细纲_第XXX章.md`,且对全部细纲再跑一次 `node {story-import skill 根}/scripts/check-outline-contract.js --json {书目录}/大纲/细纲_第*.md` 通过;再跑一次 `{PYTHON} {story-import skill 根}/scripts/tracking_commit.py check --project {书目录}`(按 `python3` → `python` → `py -3` 探测)通过;原文没分卷时卷划分已经作者确认;`拆文库/{导入书名}/` 未被复制到 `对标/`。
11
+ - **短篇**:`正文.md`、`设定.md`、`小节大纲.md` 都在,未误建 `追踪/`、`大纲/`、`正文/`。
12
+
13
+ ## Step 2:导入完成报告
14
+
15
+ 报告写给作者:导进来了什么、哪几处请他核对、要他拍板的事、下一步怎么说。字段名、脚本名、校验结果、字数口径、伏笔/事件编号不进报告;编号只能跟着故事描述出现(如「玉佩的来历(F003)」)。核对项要落到具体人和事,一次最多 5 条。
16
+
17
+ **长篇**:
18
+
19
+ <!-- author-report -->
20
+ ```md
21
+ === 《{导入书名}》导入完成 ===
22
+ 导进来了:第 1–{N} 章,约 {Y} 万字{;第 {N+1} 章只写了一半,按你的决定{接着残章写 | 先补完}}。项目在 `{项目目录}`。
23
+
24
+ 我整理出了:
25
+ - 人物:{M} 个角色档案,主要人物写到第 {N} 章时的处境已记下(如「{角色}:{一句话现状}」)
26
+ - 大纲:全书大纲、{V} 卷卷纲、每章细纲
27
+ - 还没收的线:{K} 条(如「{伏笔的故事描述}」)
28
+ - 时间线:真相和读者目前知道的分开记,续写时不会提前泄底
29
+ - 设定:{设定文件数} 份世界观资料
30
+ - 对标书:{没有绑定 | 已接入《{对标书名}》 | 没接上:原因和补救}
31
+
32
+ 请你核对:
33
+ 1. {最拿不准的一处,写成具体问题,如「第 5 章的黑衣人和第 2 章的车夫是同一人吗?」}
34
+ 2. {如「还没收的线里有没有漏的?我列的是:……」}
35
+
36
+ 需要你决定:{仅在有待定事项时写,如「原文没分卷,我按剧情分成 3 卷(1–40 / 41–95 / 96–{N} 章),这样分可以吗?」}
37
+
38
+ 下一步:说「日更」就从第 {N+1} 章接着写;想先检查导入质量,说「审一下」。
39
+ ```
40
+
41
+ **短篇**:
42
+
43
+ <!-- author-report -->
44
+ ```md
45
+ === 《{短篇标题}》导入完成 ===
46
+ 导进来了:全文约 {Y} 字,分成 {N} 个小节。项目在 `{项目目录}`。
47
+
48
+ 我整理出了:
49
+ - 设定:核心框架和续写要守住的人物、情绪基调
50
+ - 小节大纲:{N} 节,每节讲了什么
51
+ - 对标书:{没有绑定 | 已接入《{对标书名}》 | 没接上:原因和补救}
52
+
53
+ 请你核对:
54
+ 1. {标了 [待补充] 的地方,写成问题,如「女主最后原谅他了吗?原文没写明」}
55
+ 2. {核心反转前埋的线索我找到的是:……,有没有漏的?}
56
+
57
+ 下一步:{没写完:运行 `/story-short-write` 说「接着写」,从第 {N+1} 节往下写 | 已完本:想改稿说「审一下」}。
58
+ ```
59
+
60
+ ## Step 3:项目激活
61
+
62
+ - 设置 `.active-book` 指向导入的书名/标题目录,在导入记录勾「汇报与激活」。
63
+ - 确认项目可以被对应写作 skill 识别(长篇 → story-long-write,短篇 → story-short-write)。
64
+ - 可选验证:如果当前运行时的 canonical 目录已部署 story-explorer agent,可 spawn 交叉验证迁移数据完整性;Antigravity 检查 `.agents/agents/story-explorer/agent.md` 并用 `invoke_subagent` + `TypeName: "story-explorer"`。Prompt:`项目目录:{dir}\n查询类型:progress\n查询参数:导入验证`
@@ -0,0 +1,34 @@
1
+ # 导入的特殊情况
2
+
3
+ 只在下面几种情况读;普通导入不读。
4
+
5
+ ## 流程答疑
6
+
7
+ 用户问「导入续写先装环境还是先导入」「已有小说怎么续写」「导入流程」这类问题时,先直接给结论,再继续收集原文——避免用户只想确认流程却被直接要求贴原文:
8
+
9
+ 1. **推荐顺序**:先 `/story-setup` 装好写作环境,新开或刷新会话后运行 `/story-import`,最后用 `/story-long-write 日更` 或 `写第N章` 续写。
10
+ 2. **也可以直接 `/story-import`**:导入会在深度分析前检查写作环境;没装时给「先去装」或「直接导入,慢一点」两种选择。
11
+ 3. **已导入过的当前协议项目**(书名目录下有 `追踪/_tracking-state.json`):不要重复跑完整导入;直接进入书名目录,确认 `.active-book` 指向正确书目,再用 `/story-long-write 日更` 或 `/story-long-write 写第N章`。书目录下有 `{书目录}/.story/work/导入记录.md` 且进度没勾完时,是上次导入做到一半:从第一个未完成的进度接着做。
12
+ 4. **v0.7.2 及更早的旧追踪项目**(有 `追踪/` 和正文,但没有 `追踪/_tracking-state.json`):日更会停下要求重新导入,但**不需要重跑全书拆解**,只重建追踪,见下一节。
13
+
14
+ ## 旧追踪项目迁移
15
+
16
+ 书名目录下有 `追踪/` 与正文、但没有 `追踪/_tracking-state.json` 时,项目停在 v0.7.2 及更早的追踪结构上。正文和 `设定/`、`大纲/`、`拆文库/` 都不受影响,**只需重建 `追踪/`**,不重跑深度分析、不碰正文:
17
+
18
+ 1. 数清最后一个完整章号 `N`(`正文/第NNN章_*.md` 的最大值)。
19
+ 2. 从旧 `追踪/` 现有文件(角色状态、伏笔、时间线等,文件名按项目实际情况)和最近 3-5 章正文,重建当前状态:核心角色快照、未回收伏笔、已揭示时间线事件、长期约束、下一章承诺。角色快照的反推方法见 [character-state-reverse.md](character-state-reverse.md)。
20
+ 3. 按 [import-tracking.md](import-tracking.md) 构造初始化事务(其中点名的 tracking-initialization.md 完整读取),`last_chapter` 写 `N`(第 1..N 章不伪造逐章记录),执行 `tracking_commit.py init`。
21
+ 4. `init` 会把旧追踪结构按原样整体移入 `追踪/_旧追踪存档/` 再建当前协议——旧内容不删除、不参与解析,留给作者查阅。
22
+ 5. 跑 `tracking_commit.py check` 确认通过,再回 `/story-long-write 日更` 续写。
23
+
24
+ 重建结果以第 2 步的证据为准;拿不准的字段留空或写进 `continuity_risks`,不杜撰。用户明确要求重拆全书时才走完整导入。
25
+
26
+ ## 超过 200 章的作品
27
+
28
+ 仅长篇。短篇为单文件全量迁移,无增量导入需求。拆解可以分批,追踪初始化必须一次覆盖全部已写章节:
29
+
30
+ 1. **拆解分批**:首期只深拆前 50 章 + 全书概要,后续按需补拆更多章节到 `拆文库/`。
31
+ 2. **追踪一次到位**:初始化事务的 `last_chapter` 写**最后一个已写完的章号 N**,不是首期拆解的 50。`imported_through_chapter` 由 `init` 一次写定、之后不再推进,逐章事务只接受 N+1 起的章号;第 1..N 章不伪造逐章记录,续写从 N+1 开始。若 init 时误写成 50,第 51..N 章仍可逐章 `append` 补上(一章一份事务,章号必须连续),只是要为已写好的旧章逐章构造事务;不要删 `追踪/` 重来——`_旧追踪存档/` 也在里面。
32
+ 3. **简化摘要**:未深拆的章节每章写一份约 200 字的简化摘要(谁做了什么、局面怎么变、章尾留下什么等待),固定落在 `{书目录}/.story/work/简化摘要/第NNN章.md`(三位补零)。细纲任务包在拆文库没有该章摘要时自动取这里;追踪初始化反推当前状态也从这里取证。
33
+
34
+ 首期深拆范围写进导入记录「范围」一行,细纲与追踪时刻据此取证据。
@@ -0,0 +1,95 @@
1
+ # 追踪初始化时刻(仅长篇)
2
+
3
+ Phase 4 只读本文件、[tracking-initialization.md](tracking-initialization.md)(初始化事务的原始 JSON 与导入边界,完整读取)和 [character-state-reverse.md](character-state-reverse.md)(核心角色快照反推)。导入截止章、残稿决定、卷划分读导入记录(`{书目录}/.story/work/导入记录.md`);证据只取已落盘的 `拆文库/{导入书名}/` 与项目 `大纲/`,不重读原文。续写时的逐章事务与导入无关,不读。
4
+
5
+ 导入项目必须通过本 skill 自带的 `scripts/tracking_commit.py init` 一次性生成追踪状态,禁止模型分别写最终文件。
6
+
7
+ ## 语义准备顺序
8
+
9
+ 1. **导入截止章**:把最后完整章 N 写入初始化事务的 `last_chapter`。工具在 meta 记录 `imported_through_chapter=N`;导入旧章没有日更事务,不得为第 1..N 章伪造逐章增量,也不额外生成一份重复当前状态的叙事基线。
10
+ 2. **核心角色当前快照**:从拆书产物反推主角、反派、核心配角的截至 N 章状态,按角色写入 `character_snapshots`,工具生成 `追踪/角色状态/{角色名}.md`;算法见 character-state-reverse.md。
11
+ 3. **伏笔当前行**:从有正文证据的铺垫/回收事件生成 `foreshadow`(识别方法见下)。每个 ID 只保留当前状态一行;尚未实际埋设的未来设计留在大纲,不写 `伏笔.md`。
12
+ 4. **事实与读者认知**:把关键事件生成到 `timeline_events`(提取方法见下)。同一事件同时写客观事实、读者截至 N 章已知内容和实际揭示状态;未来计划揭示章不得伪装成已发生事实。
13
+ 5. **续写状态卡输入**:准备当前位置、长期约束、活跃核心角色、近三章速记、下一章承诺和连贯性风险。`上下文.md` 由工具生成固定 7 栏,不把文风、文件索引、普通待办或质检计数塞进续写状态卡。
14
+ 6. **执行初始化**:事务写到 `{书目录}/.story/work/init.json`(成功前保留,不写系统 `/tmp`、书根、`大纲/` 或 `正文/`)。按当前平台探测 Python 3(`python3` → `python` → `py -3`),执行:
15
+
16
+ > 项目 `追踪/` 里已有不属于当前协议的早期文件时不必手工清理:`init` 会先把它们按原样整体移入 `追踪/_旧追踪存档/`,再在原地建当前协议。旧内容保留供作者查阅,不参与解析,当前状态完全由本次导入输入决定;校验失败的 `init` 不移动任何文件。`init` 只在 `_tracking-state.json` 不存在时执行,绝不覆盖已初始化项目。
17
+
18
+ ```text
19
+ {PYTHON} {story-import skill 根}/scripts/tracking_commit.py init --project {书目录} --input {书目录}/.story/work/init.json
20
+ {PYTHON} {story-import skill 根}/scripts/tracking_commit.py check --project {书目录}
21
+ ```
22
+
23
+ 半成品最后一章为残稿时,`last_chapter`、角色快照和其他当前语义检查点一律截至最后完整章;残稿处理策略(导入记录里作者的决定)写入 `continuity_risks`,不把未完成动作登记成既成事实。
24
+
25
+ 以 demo《让你管账号,你高燃混剪炸全网》导入至第 10 章为例:续写状态卡要写清江晨的手机原版《诸君,且听龙吟》被专业团队高清重拍,但高层看片后认为新版“缺了灵魂”,最终继续采用原版;江晨快照应体现其军宣创作价值已获周薄森、张耀祖确认;读者时间线只写读者已经看到的看片会结论,钟嘉嘉“只猜对了一半”背后的培养安排若尚未揭示,只能出现在作者真相,不能泄露到读者视图。
26
+
27
+ ## 条目形状与容量
28
+
29
+ 在 tracking-initialization.md 的骨架上填条目(导入时 `last_chapter` 写 N):
30
+
31
+ ```json
32
+ {
33
+ "foreshadow": [
34
+ {"id": "F027", "summary": "专业团队仍拍不出江晨原版的灵魂", "planted_chapter": 10,
35
+ "planned_resolution_chapter": null, "status": "已埋", "importance": "中"}
36
+ ],
37
+ "timeline_events": [
38
+ {"id": "E010", "story_time": "实弹训练两天后",
39
+ "objective_fact": "文工团高层否决专业重拍版,决定沿用江晨手机拍摄的原版视频",
40
+ "reader_knowledge": "读者已看到周薄森指出专业版缺了灵魂,张耀祖当场拍板用回原版",
41
+ "reveal_status": "已揭示", "reveal_chapter": 10, "characters": ["江晨", "周薄森", "张耀祖"]}
42
+ ],
43
+ "context": {
44
+ "recent_chapters": [{"chapter": 10, "summary": "专业重拍版被判缺了灵魂,高层拍板用回手机原版"}]
45
+ }
46
+ }
47
+ ```
48
+
49
+ - 伏笔 `id` 形如 `F001`,`status` 取 已埋/已回收/已过期/放弃,`importance` 取 高/中/低;`planted_chapter` 不晚于 N。事件 `id` 形如 `E001`,`reveal_status` 取 未揭示/部分揭示/已揭示:`未揭示` 的 `reveal_chapter` 必须为 `null`,部分/完全揭示只能填已经发生的实际章节。
50
+ - `context` 在 init 时收六项:`position`、`long_term_constraints`、`active_character_names`、`continuity_risks`、`recent_chapters`(最多 3 章,按章号升序)、`next_chapter_commitments`。
51
+ - `character_snapshots` 里的角色就是核心角色;四个列表不限条数,单角色文件目标 ≤4096 字节,硬上限 8192 字节,超过在任何写入前拒绝。`active_character_names` 最多 6 人且必须已有快照;`long_term_constraints` 最多 6 条。
52
+ - `上下文.md` ≤12288 字节,只含 7 个顶层区块:当前位置、长期约束、核心角色状态、活跃伏笔(最多 8 条)、近三章速记、下一章承诺、连贯性风险。
53
+ - 报错按提示改事务本身再跑;排查字段全集时才查 [tracking-transaction.md](tracking-transaction.md)。导入后续写时角色状态怎么更新见 [state-tracking.md](state-tracking.md),本时刻不读。
54
+
55
+ ## 伏笔提取
56
+
57
+ | 情节点类型 | 伏笔可能性 | 提取方式 |
58
+ |-----------|-----------|---------|
59
+ | 铺垫 | 高 | 直接提取为伏笔 |
60
+ | 信息揭示(部分) | 中 | 检查后续是否有呼应 |
61
+ | 物品首次出现 | 中 | 检查后续是否有使用 |
62
+ | 角色秘密 | 高 | 标记为角色伏笔 |
63
+ | 未解决的悬念 | 高 | 从章尾标记提取 |
64
+
65
+ 状态推断:铺垫点在后续章节有「揭示」或「解决」类情节点 → 已回收;无后续呼应 → 已埋;半成品最后几章的铺垫 → 已埋,摘要里注明「接近断点」。
66
+
67
+ ## 时间线提取
68
+
69
+ 从情节点和时间标记中提取:明确日期(“天元三年春”)直接记录;相对时间(“三日后”)推算;事件间隔(“翌日”)连续标记;季节标记(“入冬”)推断季节。按章节顺序排列,同一章内按情节点序号排列;时间标记缺失时标注 `[推断]`。
70
+
71
+ ## 验收
72
+
73
+ 初始化成功后应得到:
74
+
75
+ ```text
76
+ 追踪/
77
+ ├── _tracking-state.json
78
+ ├── 上下文.md
79
+ ├── 逐章记录/ # 导入旧章不补造文件,续写从第 N+1 章开始
80
+ ├── 角色状态/{角色名}.md
81
+ ├── 伏笔.md
82
+ ├── 时间线/
83
+ │ ├── 作者真相.md
84
+ │ └── 读者已知.md
85
+ ```
86
+
87
+ - [ ] `tracking_commit.py check` 通过,`_tracking-state.json` 与全部派生视图一致
88
+ - [ ] `_tracking-state.json.imported_through_chapter` 等于最后完整导入章
89
+ - [ ] `追踪/伏笔.md` 每个 ID 至多一行,未来尚未埋设的设计没有混入
90
+ - [ ] `_tracking-state.json.timeline` 已登记关键事实与读者认知,`读者已知.md` 无真相泄露
91
+ - [ ] `追踪/角色状态/{角色名}.md` 已覆盖全部核心角色并对齐 character-state-reverse.md
92
+ - [ ] `追踪/逐章记录/` 空目录已创建,且没有为导入章伪造日更记录
93
+ - [ ] `追踪/上下文.md` 顶层恰好固定 7 栏且 ≤12288 字节
94
+
95
+ 通过后在导入记录勾「追踪初始化」,`init.json` 可删除;汇报末尾按 [SKILL.md 的换上下文规则](../SKILL.md#时刻表与交接) 建议新开对话。
@@ -85,7 +85,7 @@ Phase 1 信息确认时向用户提问:**「这是长篇还是短篇?」**
85
85
  | 用户未声明、全文无章节分隔、单文件单篇,但字数 ≥ 30000 | 复述:「全文无章节分隔,但总字数约 {X} 字,已超过短篇常见上界。按长篇导入建工程,还是仍按短篇处理?」由用户拍板 |
86
86
  | 结构信号与字数信号方向相反 | 展示两项信号,请用户决定 |
87
87
 
88
- 用户拍板的结果记入 Phase 1 上下文,后续步骤以此为准,不再重新判定。
88
+ 用户拍板的结果写进导入记录(`{书目录}/.story/work/导入记录.md` 的「篇幅」),后续时刻以此为准,不再重新判定。
89
89
 
90
90
  ---
91
91
 
@@ -0,0 +1,79 @@
1
+ # 细纲反推规则与模板(长篇导入)
2
+
3
+ 本文件是逐批反推细纲任务包的正文,由 `build_outline_brief.py` 整份放进任务包,不单独加载。
4
+
5
+ ## 反推原则
6
+
7
+ - 对本批每一章,从任务包里该章的摘要要点反推 `大纲/细纲_第XXX章.md`;要点写「摘要未写」又必须写实际内容时,回看该章正文相关段落补证据,不改正文。
8
+ - 字数目标写任务包里测好的历史长度(`visible_chars_v1` 下的实际长度),不是重新决定创作目标,不自己估算。
9
+ - 单元ID 取任务包附的卷纲「剧情单元(反推)」行里包含本章的单元;单元内第几拍判断不出写 `[待补充]`。
10
+ - 钩子、人物关系变化、辅线/感情线、行动成本/收益归属等无法由原文摘要稳定判断的字段统一标 `[待补充]`;只反推有证据的蓝图,不为补齐字段编造关系或副线。已写成的历史章「本章禁止提前释放」写「无」;目标情绪与主角目标/关键选择不接受 `[待补充]`。
11
+
12
+ ## 字段映射
13
+
14
+ | 摘要字段 | 细纲字段 | 转换方式 |
15
+ |---------|---------|---------|
16
+ | 关键事件 + 局面结果 | 核心事件 | 合并为“谁采取什么行动 → 局面如何变化”;旧摘要没有 `局面结果` 时只用 `关键事件` |
17
+ | 章节字数 | 字数目标 + 字数口径 | 写任务包里测好的 `actual` 与 `visible_chars_v1` |
18
+ | `基调:` + 状态变化 | 目标情绪 | 写成「前状态→后状态」:用基调枚举(紧张/轻松/悲伤/热血/爽/甜/温馨/恐怖/压抑/其他)加本章状态变化归纳,不只写一个情绪词;必须写实际内容 |
19
+ | 关键事件 + 主角行动 | 主角目标/关键选择 | 原文里主角本章要什么、做了什么判断或选择;必须写实际内容 |
20
+ | 所属剧情单元 | 单元ID/位置 | 取反推卷纲「剧情单元」表里包含本章的单元ID;单元内第几拍判断不出写 `[待补充]` |
21
+ | (历史章) | 本章禁止提前释放 | 已写成的章节写「无」 |
22
+ | 章尾钩子 | 章首承接证据 | 作为下一章开篇需要承接的等待;新的章首钩子设计目标仍标 `[待补充]` |
23
+ | 爽点类情节点 | 爽点 | 从情节点类型推断;没有则写“无显性爽点 / [待补充]” |
24
+ | 情节点起承转合 + 因果 | 内容概括(起因/发展/转折/高潮/结尾) | 按情节点顺序归纳,用因果链校正起因与转折;证据不足写 `[待补充]` |
25
+ | 主线/支线/任务线索 | 情节安排(主线/辅线/事件线/感情线/逻辑线) | 从剧情单元索引与摘要反推;无证据的辅线/感情线写“无”或 `[待补充]`,不得杜撰 |
26
+ | 涉及 + 状态变化 | 人物关系和出场顺序 | `涉及` 给出候选人物,`状态变化` 只写有证据的“前 → 后”;关键物件从证据或旧情节点补充,缺失写 `[待补充]` |
27
+ | 全部情节点 | 情节细化 / 情节点序列 | 按表格逐行写(# / 情节点 / 功能标签 / 执行边界);保持原顺序,功能或边界不明写 `[待补充]`,不反推逐点字数配额 |
28
+ | 胜负/反转/收益损失 | 行动成本(可无)/收益归属 | 有明确证据才填写;行动成本可无、不硬造;否则 `[待补充]` |
29
+ | 章尾钩子 + 局面结果 | 结尾设定和钩子 | 结尾设定写原文落到最后的具体动作或画面,章尾钩子写已存在的等待;未来设计仍标 `[待补充]` |
30
+
31
+ ## 细纲模板
32
+
33
+ ```markdown
34
+ ## 细纲(第 N 章)
35
+
36
+ ### 第 N 章:{章名}
37
+ - 核心事件:{从摘要中提取}
38
+ - 字数目标:{任务包里的 actual} 字
39
+ - 字数口径:visible_chars_v1
40
+ - 单元ID/位置:{反推卷纲里本章所属剧情单元ID;单元内第几拍,判断不出写 [待补充]}
41
+ - 目标情绪:{前状态→后状态,从基调与状态变化归纳,不只写一个情绪词;必须写实际内容}
42
+ - 主角目标/关键选择:{原文里主角本章要什么、做了什么判断或选择;必须写实际内容}
43
+ - 章首钩子:[待补充]
44
+ - 爽点:{从情节点推断;无明确证据写 [待补充]}
45
+ - 本章禁止提前释放:无
46
+
47
+ #### 内容概括(五段式)
48
+ - 起因:{从情节点归纳;未知写 [待补充]}
49
+ - 发展:{从情节点归纳;未知写 [待补充]}
50
+ - 转折:{从情节点归纳;未知写 [待补充]}
51
+ - 高潮:{从情节点归纳;未知写 [待补充]}
52
+ - 结尾:{原文最后落在什么动作/画面/台词上;未知写 [待补充]}
53
+
54
+ #### 情节安排(多线)
55
+ - 主线推进:{从剧情单元索引/摘要反推}
56
+ - 辅线推进:{无证据写“无”或 [待补充]}
57
+ - 事件线 / 任务线:{外部事件链}
58
+ - 感情线 / 关系线:{有证据才写;否则“无显性”或 [待补充]}
59
+ - 逻辑线:原因 → 行动 → 结果 → 后果/新问题
60
+
61
+ #### 人物关系和出场顺序
62
+ - 出场顺序:{摘要中角色/势力/关键物件出现顺序}
63
+ - 人物关系变化:{本章前 → 本章后;未知写 [待补充]}
64
+ - 视角/信息差:{谁知道什么;读者知道什么;主角误判什么;未知写 [待补充]}
65
+
66
+ #### 情节细化
67
+ - 情节点序列(逐行填下表;从摘要情节点反推):
68
+
69
+ | # | 情节点(谁做了什么) | 功能标签 | 执行边界 |
70
+ |---|---|---|---|
71
+ | 1 | {} | {功能不明写 [待补充]} | {从原文确认本点没有释放什么;未知写 [待补充]} |
72
+ - 行动成本(可无)/收益归属:{有证据才写;行动成本可无、不硬造;未知写 [待补充]}
73
+
74
+ #### 结尾设定和钩子
75
+ - 结尾设定:{原文落到最后的具体动作或画面;未解决问题;下一章推动力;未知写 [待补充]}
76
+ - 章尾钩子:[待补充]
77
+ ```
78
+
79
+ 每章一个文件,文件名 `大纲/细纲_第XXX章.md`(三位补零,与 `正文/第XXX章_*.md` 同号)。
@@ -0,0 +1,24 @@
1
+ # 逐批反推细纲(长篇导入)
2
+
3
+ 卷纲写定后,从章节摘要反推每章细纲,一批一个任务包。进度记在导入记录(`{书目录}/.story/work/导入记录.md`)的「细纲:已验收到第 B 章」;续跑从第 B+1 章起整批重做,这一批里已经存在但没验收的细纲文件按新任务包重写覆盖。
4
+
5
+ ## Step 1:生成本批任务包
6
+
7
+ 按当前平台探测 Python 3(`python3` → `python` → `py -3`),请求第 B+1 章起的 20 章(剩下不足 20 章就到最后一章):
8
+
9
+ ```text
10
+ {PYTHON} {story-import skill 根}/scripts/build_outline_brief.py --project {书目录} --chapters {A-B}
11
+ ```
12
+
13
+ 脚本把反推规则与模板([outline-reverse-rules.md](outline-reverse-rules.md) 全文)、每章按 `visible_chars_v1` 测好的历史长度与摘要要点、卷纲里覆盖本批的剧情单元行,拼成 `{书目录}/.story/work/排纲/导入细纲_第AAA-BBB章.md`。执行者要读的总量超过约 25K 字时脚本自动少排几章(可少于 10 章),以 stdout JSON 的 `chapters` 为本批实际范围、`next` 为下一批起点。缺摘要的章改用简化摘要或正文,已算进总量。
14
+
15
+ 长度必须由脚本测,不得用模型估算或静默跳过。找不到 Python 3 或脚本报错时停下,用一句话告诉作者卡在哪(如「第 12 章正文读不到,先把正文迁完」),原文报错放技术备注;卷纲缺失时先回结构迁移补卷纲。
16
+
17
+ ## Step 2:写本批细纲
18
+
19
+ - **有 story-architect**(导入记录写着可用,按 SKILL.md 顶部的 Agent 兼容性检查 canonical 目录):主会话只取任务包路径,不读包的内容。Prompt:`项目目录:{dir}\n任务包:{任务包路径}\n先完整读取任务包,按包里的规则与模板完成;作者已定的事在 .story/work/导入记录.md,对话内容不会传给你\n交付后只回任务包开头要求的几项`。Antigravity 用 `invoke_subagent` + `TypeName: "story-architect"`。
20
+ - **没有**:主会话完整读取任务包,自己按包写本批;不另读本文件以外的规则,也不整读拆文库摘要。
21
+
22
+ ## Step 3:验收与交接
23
+
24
+ 每批写完由主会话运行 `node {story-import skill 根}/scripts/check-outline-contract.js --json <本批细纲路径...>`:exit 1 时只按报告补缺的字段或小节(有 story-architect 时把报错原样交回同一 agent 修一次)。通过后把导入记录的细纲进度改成「已验收到第 B 章」。还有下一批时,向作者一句话说到第几章了,末尾按 [SKILL.md 的换上下文规则](../SKILL.md#时刻表与交接) 建议新开对话说「继续导入」;没有子代理时每批都这样建议。全部章节细纲写完再进 Phase 4。
@@ -1,75 +1,10 @@
1
- # 状态追踪协议
1
+ # 角色状态记录格式
2
2
 
3
- > 本文件定义"本节速记"的提取逻辑和"角色状态记录"的格式。写作 skill 在写前准备的状态筛选步骤中加载此文件。
4
-
5
- ---
6
-
7
- ## 本节速记
8
-
9
- 写作每一章/每一节前,从所有已加载的上下文中筛选出只与本节相关的信息。目的是避免全量加载导致 LLM 上下文被无关信息稀释。
10
-
11
- ### 筛选逻辑
12
-
13
- 从上下文中提取三类信息:
14
-
15
- 1. **当前状态**:本章涉及角色的最新能力、关系变化、公众形象
16
- 2. **历史因果**:与本章事件直接相关的伏笔成因、前史事件
17
- 3. **世界约束**:本章涉及的世界观规则(力量体系、社会规则、地理限制)
18
-
19
- ### 筛选标准
20
-
21
- **只保留"如果不知道这个,本章会写错"的信息。**
22
-
23
- 具体判断方法:
24
- - 本章细纲中提到了某个角色 → 保留该角色的当前状态
25
- - 本章有伏笔回收 → 保留伏笔的埋设细节和前文铺垫
26
- - 本章涉及特定地点/能力/规则 → 保留相关世界观约束
27
- - 纯背景知识(与本章事件无因果关联) → 丢弃
28
-
29
- ### 输出格式
30
-
31
- 筛选后输出一个简洁的"本节速记":
32
-
33
- ```
34
- ## 本节速记(第{N}章)
35
-
36
- ### 角色状态
37
- {角色A}:{一句话当前状态,含最近变化}
38
- {角色B}:{一句话当前状态}
39
-
40
- ### 相关伏笔/前史
41
- {伏笔1}:{埋设细节,{埋设章节}},本章需要{回收/推进}
42
-
43
- ### 世界约束
44
- {约束1}:{与本章相关的规则/设定}
45
- ```
46
-
47
- **示例(demo《让你管账号,你高燃混剪炸全网》第 10 章):**
48
- ```
49
- ## 本节速记(第10章)
50
-
51
- ### 角色状态
52
- 江晨:火箭军文工团宣传兵,《诸君,且听龙吟》已爆红,正从军宣新人升为军内认可的创作者
53
- 钟嘉嘉:军报记者,采访稿已经过审,与江晨从采访关系转为稳定合作
54
- 周薄森:文工团副团长,已从担心江晨惹事转为认可其创作能力
55
-
56
- ### 相关伏笔/前史
57
- 五天百万粉任务:第1章发布,第10章仍未结算;本章只推进声量,留到第11章结算
58
- 专业团队重拍:本章用高清专业版“缺了灵魂”反衬江晨手机原版不可替代
59
-
60
- ### 世界约束
61
- 军宣作品采用要经过组织决策;江晨可以靠作品效果赢得认可,不能跳过军内流程直接拍板
62
- ```
63
-
64
- ---
65
-
66
- ## 角色状态记录格式
67
-
68
- > ⚠️ **本节仅适用于长篇写作。** 短篇通常不需要独立角色状态追踪。
3
+ > story-import 反推角色状态(character-state-reverse.md)时按本格式写 `追踪/角色状态/{角色名}.md`。
69
4
 
70
5
  动态状态按核心角色拆成 `追踪/角色状态/{角色名}.md`,由 `tracking_commit.py` 根据事务 JSON 整份覆盖;静态原始人设仍在 `设定/角色/{角色名}.md`。只为后续会复用的主角、反派、核心配角建快照,不为路人、一次性功能角色建文件。
71
6
 
72
- ### 格式
7
+ ## 格式
73
8
 
74
9
  ```markdown
75
10
  # 江晨|当前状态
@@ -98,7 +33,7 @@
98
33
  - 钟嘉嘉所谓“只猜对一半”仍未解释
99
34
  ```
100
35
 
101
- ### 更新规则
36
+ ## 更新规则
102
37
 
103
38
  1. 每章只记录身份、位置、目标、身心状态、能力资源、关系、已知信息、未结事项中真正发生变化的内容。
104
39
  2. 核心复用角色发生变化时,在同一事务的 `character_changes` 写变化,并在 `character_snapshots` 提交其**截至当前已写最后一章**的完整快照;工具以快照是否存在判断核心/临时角色,整份覆盖核心角色小文件,不追加历史。