@oh-story/dsh 0.1.4 → 0.1.6

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 (479) hide show
  1. package/README.md +56 -12
  2. package/lib/client.js +2707 -268
  3. package/lib/client.js.map +4 -4
  4. package/lib/drama/manifest.json +136 -101
  5. package/lib/drama/skills/short-drama/SKILL.md +61 -1
  6. package/lib/drama/skills/short-drama/references/contract-and-ownership.md +7 -4
  7. package/lib/drama/skills/short-drama/references/creator-documents.md +133 -8
  8. package/lib/drama/skills/short-drama/references/creator-workflow.md +38 -2
  9. package/lib/drama/skills/short-drama/references/knowhow-index.md +3 -0
  10. package/lib/drama/skills/short-drama/references/reference-roles.md +10 -7
  11. package/lib/drama/skills/short-drama/references/runtime-preflight.md +3 -0
  12. package/lib/drama/skills/short-drama/scripts/creator_markdown_check.py +1002 -0
  13. package/lib/drama/skills/short-drama/scripts/project_tool.py +485 -5
  14. package/lib/drama/skills/short-drama-assets/SKILL.md +13 -3
  15. package/lib/drama/skills/short-drama-assets/references/continuity-lock.md +116 -0
  16. package/lib/drama/skills/short-drama-assets/references/identity-vs-variant.md +2 -1
  17. package/lib/drama/skills/short-drama-assets/references/prop-and-state.md +19 -0
  18. package/lib/drama/skills/short-drama-assets/references/stage-contract.md +2 -0
  19. package/lib/drama/skills/short-drama-assets/scripts/asset_check.py +1 -1
  20. package/lib/drama/skills/short-drama-image-prompts/SKILL.md +6 -2
  21. package/lib/drama/skills/short-drama-image-prompts/references/common-recipe.md +4 -3
  22. package/lib/drama/skills/short-drama-image-prompts/references/lookdev-frame.md +1 -1
  23. package/lib/drama/skills/short-drama-image-prompts/references/review-and-fixtures.md +1 -1
  24. package/lib/drama/skills/short-drama-image-prompts/references/stage-contract.md +3 -1
  25. package/lib/drama/skills/short-drama-image-prompts/scripts/image_prompt_check.py +8 -8
  26. package/lib/drama/skills/short-drama-image-prompts/scripts/selftest.py +4 -2
  27. package/lib/drama/skills/short-drama-produce/SKILL.md +46 -10
  28. package/lib/drama/skills/short-drama-produce/references/adapter-contract.md +65 -8
  29. package/lib/drama/skills/short-drama-produce/references/providers/minimax-h3-video.md +85 -0
  30. package/lib/drama/skills/short-drama-produce/references/providers/seedance.md +27 -10
  31. package/lib/drama/skills/short-drama-produce/scripts/production_tool.py +362 -3
  32. package/lib/drama/skills/short-drama-produce/scripts/provider_adapters.py +627 -40
  33. package/lib/drama/skills/short-drama-produce/scripts/selftest.py +5 -4
  34. package/lib/drama/skills/short-drama-review/references/rubric-visual-motion.md +12 -0
  35. package/lib/drama/skills/short-drama-review/scripts/review_check.py +1 -1
  36. package/lib/drama/skills/short-drama-storyboard/SKILL.md +76 -7
  37. package/lib/drama/skills/short-drama-storyboard/assets/shot-template.jsonl +1 -1
  38. package/lib/drama/skills/short-drama-storyboard/references/keyframe-craft.md +6 -2
  39. package/lib/drama/skills/short-drama-storyboard/references/production-shot-grammar.md +19 -4
  40. package/lib/drama/skills/short-drama-storyboard/references/review-and-fixtures.md +5 -2
  41. package/lib/drama/skills/short-drama-storyboard/references/screenplay-to-keyframe-example.md +16 -0
  42. package/lib/drama/skills/short-drama-storyboard/references/stage-contract.md +8 -3
  43. package/lib/drama/skills/short-drama-storyboard/scripts/storyboard_check.py +1 -1
  44. package/lib/drama/skills/short-drama-video-prompts/SKILL.md +81 -13
  45. package/lib/drama/skills/short-drama-video-prompts/assets/motion-spec.jsonl.md +6 -1
  46. package/lib/drama/skills/short-drama-video-prompts/assets/video-prompts.md +17 -1
  47. package/lib/drama/skills/short-drama-video-prompts/references/delivery-profile.md +21 -1
  48. package/lib/drama/skills/short-drama-video-prompts/references/minimax-h3.md +154 -0
  49. package/lib/drama/skills/short-drama-video-prompts/references/motion-recipe.md +24 -6
  50. package/lib/drama/skills/short-drama-video-prompts/references/production-prompt-grammar.md +11 -7
  51. package/lib/drama/skills/short-drama-video-prompts/references/seedance-2.0.md +41 -0
  52. package/lib/drama/skills/short-drama-video-prompts/references/seedance-2.5.md +66 -0
  53. package/lib/drama/skills/short-drama-video-prompts/references/stage-contract.md +5 -2
  54. package/lib/drama/skills/short-drama-video-prompts/references/target-model-profile.md +115 -0
  55. package/lib/drama/skills/short-drama-video-prompts/scripts/container_check.py +1 -1
  56. package/lib/drama/skills/short-drama-video-prompts/scripts/music_spec_check.py +1 -1
  57. package/lib/drama/skills/short-drama-write/SKILL.md +3 -2
  58. package/lib/drama/skills/short-drama-write/scripts/duration_estimate.py +1 -1
  59. package/lib/drama/skills/short-drama-write/scripts/screenplay_index.py +2 -2
  60. package/lib/drama/skills/short-drama-write/scripts/voice_sheet_check.py +1 -1
  61. package/lib/index.js +865 -33
  62. package/lib/index.js.map +4 -4
  63. package/lib/novel-to-game/LICENSE +21 -0
  64. package/lib/novel-to-game/README.md +180 -0
  65. package/lib/novel-to-game/README_ZH.md +178 -0
  66. package/lib/novel-to-game/VERSION +1 -0
  67. package/lib/novel-to-game/examples/jin-ping-mei/build/BUILD_BRIEF.md +217 -0
  68. package/lib/novel-to-game/examples/jin-ping-mei/build/app/.vercelignore +3 -0
  69. package/lib/novel-to-game/examples/jin-ping-mei/build/app/RUN.md +130 -0
  70. package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/bg/compound_new_guofeng.webp +0 -0
  71. package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/cg/finale/fate_coda.webp +0 -0
  72. package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/cg/finale/meng.webp +0 -0
  73. package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/cg/finale/pan.webp +0 -0
  74. package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/cg/finale/pinger.webp +0 -0
  75. package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/cg/finale/xuee.webp +0 -0
  76. package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/cg/finale/yue.webp +0 -0
  77. package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/cg/group/inner_court_accord_five.webp +0 -0
  78. package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/cg/group/inner_court_afterglow_five.webp +0 -0
  79. package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/cg/group/inner_court_alliance.webp +0 -0
  80. package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/cg/group/public_day10.webp +0 -0
  81. package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/cg/group/public_day15.webp +0 -0
  82. package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/cg/group/public_day5.webp +0 -0
  83. package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/cg/group/title_new_guofeng.webp +0 -0
  84. package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/cg/joint/pan_pinger.webp +0 -0
  85. package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/cg/joint/pan_xuee.webp +0 -0
  86. package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/cg/joint/yue_meng.webp +0 -0
  87. package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/cg/joint/yue_pan.webp +0 -0
  88. package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/cg/joint/yue_pinger.webp +0 -0
  89. package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/cg/meng/explicit.webp +0 -0
  90. package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/cg/meng/prelude.webp +0 -0
  91. package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/cg/milestone/meng.webp +0 -0
  92. package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/cg/milestone/pan.webp +0 -0
  93. package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/cg/milestone/pinger.webp +0 -0
  94. package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/cg/milestone/xuee.webp +0 -0
  95. package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/cg/milestone/yue.webp +0 -0
  96. package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/cg/pan/explicit.webp +0 -0
  97. package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/cg/pan/prelude.webp +0 -0
  98. package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/cg/pinger/explicit.webp +0 -0
  99. package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/cg/pinger/prelude.webp +0 -0
  100. package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/cg/xuee/explicit.webp +0 -0
  101. package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/cg/xuee/prelude.webp +0 -0
  102. package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/cg/yue/explicit.webp +0 -0
  103. package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/cg/yue/prelude.webp +0 -0
  104. package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/heroine/meng/night.webp +0 -0
  105. package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/heroine/pan/night.webp +0 -0
  106. package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/heroine/pinger/night.webp +0 -0
  107. package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/heroine/xuee/night.webp +0 -0
  108. package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/heroine/yue/night.webp +0 -0
  109. package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/household/li_jiaoer.webp +0 -0
  110. package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/scene/gate_collector.webp +0 -0
  111. package/lib/novel-to-game/examples/jin-ping-mei/build/app/css/new-guofeng.css +1105 -0
  112. package/lib/novel-to-game/examples/jin-ping-mei/build/app/css/style.css +2539 -0
  113. package/lib/novel-to-game/examples/jin-ping-mei/build/app/index.html +18 -0
  114. package/lib/novel-to-game/examples/jin-ping-mei/build/app/js/assets.js +147 -0
  115. package/lib/novel-to-game/examples/jin-ping-mei/build/app/js/audio.js +332 -0
  116. package/lib/novel-to-game/examples/jin-ping-mei/build/app/js/data.js +7472 -0
  117. package/lib/novel-to-game/examples/jin-ping-mei/build/app/js/engine.js +13077 -0
  118. package/lib/novel-to-game/examples/jin-ping-mei/build/app/js/main.js +3028 -0
  119. package/lib/novel-to-game/examples/jin-ping-mei/build/app/js/text.js +32 -0
  120. package/lib/novel-to-game/examples/jin-ping-mei/build/app/package.json +10 -0
  121. package/lib/novel-to-game/examples/jin-ping-mei/build/app/vercel.json +23 -0
  122. package/lib/novel-to-game/examples/jin-ping-mei/build/art/generated-art.json +161 -0
  123. package/lib/novel-to-game/examples/jin-ping-mei/example.json +12 -0
  124. package/lib/novel-to-game/examples/jin-ping-mei/qa/README.md +31 -0
  125. package/lib/novel-to-game/examples/jin-ping-mei/qa/playable-model.json +99 -0
  126. package/lib/novel-to-game/examples/jin-ping-mei/qa/verification.json +41 -0
  127. package/lib/novel-to-game/examples/jin-ping-mei/qa/verify_playable_model.mjs +129 -0
  128. package/lib/novel-to-game/manifest.json +508 -0
  129. package/lib/novel-to-game/skills/game-art-direction/SKILL.md +73 -0
  130. package/lib/novel-to-game/skills/game-art-direction/agents/openai.yaml +4 -0
  131. package/lib/novel-to-game/skills/game-art-direction/references/art-direction-method.md +119 -0
  132. package/lib/novel-to-game/skills/game-build/SKILL.md +84 -0
  133. package/lib/novel-to-game/skills/game-build/agents/openai.yaml +4 -0
  134. package/lib/novel-to-game/skills/game-build/references/build-brief-contract.md +109 -0
  135. package/lib/novel-to-game/skills/game-build/references/generative-media-pipeline.md +56 -0
  136. package/lib/novel-to-game/skills/game-build/references/playable-model-contract.md +81 -0
  137. package/lib/novel-to-game/skills/game-build/references/tts-production-contract.md +37 -0
  138. package/lib/novel-to-game/skills/game-concept/SKILL.md +72 -0
  139. package/lib/novel-to-game/skills/game-concept/agents/openai.yaml +4 -0
  140. package/lib/novel-to-game/skills/game-concept/references/concept-method.md +94 -0
  141. package/lib/novel-to-game/skills/game-qa/SKILL.md +50 -0
  142. package/lib/novel-to-game/skills/game-qa/agents/openai.yaml +4 -0
  143. package/lib/novel-to-game/skills/game-qa/references/qa-contract.md +66 -0
  144. package/lib/novel-to-game/skills/game-qa/references/test-design-method.md +45 -0
  145. package/lib/novel-to-game/skills/game-world-design/SKILL.md +63 -0
  146. package/lib/novel-to-game/skills/game-world-design/agents/openai.yaml +4 -0
  147. package/lib/novel-to-game/skills/game-world-design/references/dialogue-design-method.md +59 -0
  148. package/lib/novel-to-game/skills/game-world-design/references/game-writing-craft.md +53 -0
  149. package/lib/novel-to-game/skills/game-world-design/references/narrative-design-method.md +84 -0
  150. package/lib/novel-to-game/skills/game-world-design/references/numeric-design-method.md +56 -0
  151. package/lib/novel-to-game/skills/game-world-design/references/world-design-method.md +124 -0
  152. package/lib/novel-to-game/skills/novel-game-analyze/SKILL.md +77 -0
  153. package/lib/novel-to-game/skills/novel-game-analyze/agents/openai.yaml +4 -0
  154. package/lib/novel-to-game/skills/novel-game-analyze/references/gameability-protocol.md +65 -0
  155. package/lib/novel-to-game/skills/novel-to-game/SKILL.md +71 -0
  156. package/lib/novel-to-game/skills/novel-to-game/agents/openai.yaml +4 -0
  157. package/lib/novel-to-game/skills/novel-to-game/references/intake-benchmark-reference.md +42 -0
  158. package/lib/novel-to-game/skills/novel-to-game/references/intake-method.md +51 -0
  159. package/lib/novel-to-game/skills/novel-to-game/references/pipeline-contract.md +65 -0
  160. package/lib/oh-story/manifest.json +415 -305
  161. package/lib/oh-story/roles/consistency-checker.md +1 -1
  162. package/lib/oh-story/roles/narrative-writer.md +32 -33
  163. package/lib/oh-story/roles/story-architect.md +16 -26
  164. package/lib/oh-story/skills/browser-cdp/SKILL.md +1 -1
  165. package/lib/oh-story/skills/story/SKILL.md +16 -9
  166. package/lib/oh-story/skills/story/VERSION +1 -1
  167. package/lib/oh-story/skills/story/references/author-memory.md +163 -0
  168. package/lib/oh-story/skills/story/scripts/author_memory_commit.py +871 -0
  169. package/lib/oh-story/skills/story-cover/SKILL.md +1 -1
  170. package/lib/oh-story/skills/story-deslop/SKILL.md +10 -5
  171. package/lib/oh-story/skills/story-deslop/references/anti-ai-writing.md +2 -1
  172. package/lib/oh-story/skills/story-deslop/references/author-memory.md +163 -0
  173. package/lib/oh-story/skills/story-deslop/references/banned-words.md +6 -4
  174. package/lib/oh-story/skills/story-deslop/scripts/author_memory_commit.py +871 -0
  175. package/lib/oh-story/skills/story-deslop/scripts/check-ai-patterns.js +64 -1
  176. package/lib/oh-story/skills/story-import/SKILL.md +19 -10
  177. package/lib/oh-story/skills/story-import/references/format-and-structure.md +9 -10
  178. package/lib/oh-story/skills/story-import/references/structure-mapping-long.md +2 -2
  179. package/lib/oh-story/skills/story-import/references/structure-mapping-short.md +1 -1
  180. package/lib/oh-story/skills/story-import/references/tracking-transaction.md +14 -6
  181. package/lib/oh-story/skills/story-import/scripts/check-outline-contract.js +251 -0
  182. package/lib/oh-story/skills/story-import/scripts/tracking_commit.py +98 -9
  183. package/lib/oh-story/skills/story-import/scripts/wordcount_core.py +246 -0
  184. package/lib/oh-story/skills/story-long-analyze/SKILL.md +4 -4
  185. package/lib/oh-story/skills/story-long-scan/SKILL.md +1 -1
  186. package/lib/oh-story/skills/story-long-write/SKILL.md +35 -21
  187. package/lib/oh-story/skills/story-long-write/references/anti-ai-writing.md +2 -1
  188. package/lib/oh-story/skills/story-long-write/references/artifact-protocols.md +7 -3
  189. package/lib/oh-story/skills/story-long-write/references/author-memory.md +163 -0
  190. package/lib/oh-story/skills/story-long-write/references/banned-words.md +6 -4
  191. package/lib/oh-story/skills/story-long-write/references/cross-book-recall.md +6 -6
  192. package/lib/oh-story/skills/story-long-write/references/genre-prose-cards.md +1 -1
  193. package/lib/oh-story/skills/story-long-write/references/genre-readers.md +1 -1
  194. package/lib/oh-story/skills/{story-setup/references/agent-references/hooks-chapter.md → story-long-write/references/long-chapter-hooks.md} +5 -5
  195. package/lib/oh-story/skills/story-long-write/references/{quality-checklist.md → long-chapter-quality.md} +2 -1
  196. package/lib/oh-story/skills/story-long-write/references/long-format.md +42 -0
  197. package/lib/oh-story/skills/{story-setup/references/agent-references/genre-catalog.md → story-long-write/references/long-genre-catalog.md} +11 -97
  198. package/lib/oh-story/skills/{story-setup/references/agent-references/genre-core-mechanics.md → story-long-write/references/long-genre-mechanics.md} +1 -1
  199. package/lib/oh-story/skills/{story-short-write/references/reversal-toolkit.md → story-long-write/references/long-reversal.md} +18 -32
  200. package/lib/oh-story/skills/story-long-write/references/{hooks-suspense.md → long-suspense.md} +6 -6
  201. package/lib/oh-story/skills/story-long-write/references/opening-design.md +1 -1
  202. package/lib/oh-story/skills/story-long-write/references/outline-structure-theory.md +1 -1
  203. package/lib/oh-story/skills/story-long-write/references/style-genre-modules.md +1 -1
  204. package/lib/oh-story/skills/story-long-write/references/tracking-transaction.md +14 -6
  205. package/lib/oh-story/skills/story-long-write/references/workflow-chapter.md +32 -27
  206. package/lib/oh-story/skills/story-long-write/references/workflow-daily.md +4 -4
  207. package/lib/oh-story/skills/story-long-write/references/workflow-revision.md +2 -2
  208. package/lib/oh-story/skills/story-long-write/references/workflow-setup.md +14 -14
  209. package/lib/oh-story/skills/story-long-write/references/writing-craft.md +54 -54
  210. package/lib/oh-story/skills/story-long-write/scripts/author_memory_commit.py +871 -0
  211. package/lib/oh-story/skills/story-long-write/scripts/check-ai-patterns.js +64 -1
  212. package/lib/oh-story/skills/story-long-write/scripts/check-outline-contract.js +251 -0
  213. package/lib/oh-story/skills/story-long-write/scripts/storyctl.py +303 -0
  214. package/lib/oh-story/skills/story-long-write/scripts/tracking_commit.py +98 -9
  215. package/lib/oh-story/skills/story-long-write/scripts/wordcount_core.py +246 -0
  216. package/lib/oh-story/skills/story-review/SKILL.md +26 -17
  217. package/lib/oh-story/skills/story-review/references/anti-ai-writing.md +2 -1
  218. package/lib/oh-story/skills/story-review/references/author-memory.md +163 -0
  219. package/lib/oh-story/skills/story-review/references/banned-words.md +6 -4
  220. package/lib/oh-story/skills/story-review/references/{quality-checklist.md → review-quality.md} +22 -21
  221. package/lib/oh-story/skills/story-review/references/tracking-transaction.md +14 -6
  222. package/lib/oh-story/skills/story-review/scripts/author_memory_commit.py +871 -0
  223. package/lib/oh-story/skills/story-review/scripts/check-ai-patterns.js +64 -1
  224. package/lib/oh-story/skills/story-review/scripts/tracking_commit.py +98 -9
  225. package/lib/oh-story/skills/story-review/scripts/wordcount_core.py +246 -0
  226. package/lib/oh-story/skills/story-setup/SKILL.md +74 -33
  227. package/lib/oh-story/skills/story-setup/references/agent-references/agent-quality.md +72 -0
  228. package/lib/oh-story/skills/story-setup/references/agent-references/agent-reference-profiles.md +55 -0
  229. package/lib/oh-story/skills/story-setup/references/agent-references/anti-ai-writing.md +2 -1
  230. package/lib/oh-story/skills/story-setup/references/agent-references/banned-words.md +6 -4
  231. package/lib/oh-story/skills/story-setup/references/agent-references/format-and-structure.md +9 -10
  232. package/lib/oh-story/skills/story-setup/references/agent-references/genre-prose-cards.md +1 -1
  233. package/lib/oh-story/skills/story-setup/references/agent-references/genre-readers.md +1 -1
  234. package/lib/oh-story/skills/{story-short-analyze/references/hooks-chapter.md → story-setup/references/agent-references/long-chapter-hooks.md} +5 -5
  235. package/lib/oh-story/skills/story-setup/references/agent-references/long-emotional-methods.md +209 -0
  236. package/lib/oh-story/skills/{story-long-write/references/genre-catalog.md → story-setup/references/agent-references/long-genre-catalog.md} +11 -97
  237. package/lib/oh-story/skills/{story-long-write/references/genre-core-mechanics.md → story-setup/references/agent-references/long-genre-mechanics.md} +1 -1
  238. package/lib/oh-story/skills/story-setup/references/agent-references/long-quality.md +40 -0
  239. package/lib/oh-story/skills/story-setup/references/agent-references/{reversal-toolkit.md → long-reversal.md} +18 -32
  240. package/lib/oh-story/skills/{story-short-write/references/hooks-suspense.md → story-setup/references/agent-references/long-suspense.md} +6 -6
  241. package/lib/oh-story/skills/story-setup/references/agent-references/opening-design.md +1 -1
  242. package/lib/oh-story/skills/story-setup/references/agent-references/{emotional-methods.md → short-emotional-methods.md} +4 -4
  243. package/lib/oh-story/skills/{story-long-write/references/genre-writing-formulas.md → story-setup/references/agent-references/short-genre-formulas.md} +32 -44
  244. package/lib/oh-story/skills/story-setup/references/agent-references/short-quality.md +39 -0
  245. package/lib/oh-story/skills/{story-long-write/references/reversal-toolkit.md → story-setup/references/agent-references/short-reversal.md} +29 -23
  246. package/lib/oh-story/skills/story-setup/references/agent-references/{hooks-suspense.md → short-suspense.md} +31 -31
  247. package/lib/oh-story/skills/story-setup/references/agent-references/style-genre-modules.md +1 -1
  248. package/lib/oh-story/skills/story-setup/references/agent-references/writing-craft.md +55 -55
  249. package/lib/oh-story/skills/story-short-analyze/SKILL.md +28 -28
  250. package/lib/oh-story/skills/story-short-analyze/references/{character-basics.md → analysis-character-basics.md} +1 -1
  251. package/lib/oh-story/skills/story-short-analyze/references/{character-design-methods.md → analysis-character-design.md} +1 -1
  252. package/lib/oh-story/skills/story-short-analyze/references/{character-relations.md → analysis-character-relations.md} +1 -1
  253. package/lib/oh-story/skills/story-short-analyze/references/{hooks-paragraph.md → analysis-paragraph-hooks.md} +1 -1
  254. package/lib/oh-story/skills/story-short-analyze/references/{genre-readers.md → analysis-reader-profile.md} +2 -2
  255. package/lib/oh-story/skills/story-short-analyze/references/analysis-report-style.md +45 -0
  256. package/lib/oh-story/skills/story-short-analyze/references/analysis-short-genres.md +65 -0
  257. package/lib/oh-story/skills/story-short-analyze/references/analysis-short-hooks.md +77 -0
  258. package/lib/oh-story/skills/story-short-analyze/references/analysis-short-mechanics.md +82 -0
  259. package/lib/oh-story/skills/story-short-analyze/references/analysis-short-patterns.md +50 -0
  260. package/lib/oh-story/skills/story-short-analyze/references/analysis-short-suspense.md +98 -0
  261. package/lib/oh-story/skills/story-short-analyze/references/{genre-writing-techniques.md → analysis-writing-techniques.md} +21 -19
  262. package/lib/oh-story/skills/story-short-analyze/references/deconstruction-examples.md +1 -1
  263. package/lib/oh-story/skills/story-short-analyze/references/material-decomposition.md +21 -28
  264. package/lib/oh-story/skills/story-short-analyze/references/output-contract.md +1 -1
  265. package/lib/oh-story/skills/story-short-analyze/references/output-templates.md +17 -17
  266. package/lib/oh-story/skills/story-short-analyze/references/{quality-checklist.md → source-story-quality.md} +28 -49
  267. package/lib/oh-story/skills/story-short-analyze/references/zhihu-style.md +2 -2
  268. package/lib/oh-story/skills/story-short-scan/SKILL.md +1 -1
  269. package/lib/oh-story/skills/story-short-write/SKILL.md +78 -55
  270. package/lib/oh-story/skills/story-short-write/references/author-memory.md +163 -0
  271. package/lib/oh-story/skills/story-short-write/references/banned-words.md +6 -4
  272. package/lib/oh-story/skills/story-short-write/references/cross-book-recall.md +3 -3
  273. package/lib/oh-story/skills/story-short-write/references/emotional-methods.md +4 -4
  274. package/lib/oh-story/skills/story-short-write/references/genre-styles//344/270/226/346/203/205/346/211/223/350/204/270.md +3 -3
  275. package/lib/oh-story/skills/story-short-write/references/genre-styles//345/217/214/347/224/267/344/270/273.md +2 -2
  276. package/lib/oh-story/skills/story-short-write/references/genre-styles//345/244/215/344/273/207/346/211/223/350/204/270.md +3 -3
  277. package/lib/oh-story/skills/story-short-write/references/genre-styles//345/256/205/346/226/227/345/256/253/346/226/227.md +6 -6
  278. package/lib/oh-story/skills/story-short-write/references/genre-styles//346/200/273/350/243/201/350/261/252/351/227/250.md +3 -3
  279. package/lib/oh-story/skills/story-short-write/references/genre-styles//346/202/254/347/226/221.md +4 -4
  280. package/lib/oh-story/skills/story-short-write/references/genre-styles//346/260/221/344/277/227/346/200/252/350/260/210.md +7 -7
  281. package/lib/oh-story/skills/story-short-write/references/genre-styles//346/262/231/351/233/225/350/204/221/346/264/236.md +5 -5
  282. package/lib/oh-story/skills/story-short-write/references/genre-styles//347/224/234/345/256/240.md +4 -4
  283. 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 +3 -3
  284. package/lib/oh-story/skills/story-short-write/references/genre-writing-formulas.md +32 -44
  285. package/lib/oh-story/skills/story-short-write/references/genre-writing-techniques.md +20 -18
  286. package/lib/oh-story/skills/story-short-write/references/output-contract.md +1 -1
  287. package/lib/oh-story/skills/story-short-write/references/short-craft.md +18 -18
  288. package/lib/oh-story/skills/story-short-write/references/short-deslop.md +1 -1
  289. package/lib/oh-story/skills/story-short-write/references/short-format.md +38 -8
  290. package/lib/oh-story/skills/story-short-write/references/{quality-checklist.md → short-prose-quality.md} +22 -21
  291. package/lib/oh-story/skills/story-short-write/references/short-reversal.md +355 -0
  292. package/lib/oh-story/skills/{story-short-analyze/references/hooks-suspense.md → story-short-write/references/short-suspense.md} +31 -31
  293. package/lib/oh-story/skills/story-short-write/references/submission-craft.md +2 -2
  294. package/lib/oh-story/skills/story-short-write/references/writing-workflow.md +31 -22
  295. package/lib/oh-story/skills/story-short-write/scripts/author_memory_commit.py +871 -0
  296. package/lib/oh-story/skills/story-short-write/scripts/check-ai-patterns.js +64 -1
  297. package/lib/oh-story/skills/story-short-write/scripts/check-delivery-contract.js +212 -0
  298. package/lib/oh-story/skills/story-short-write/scripts/check-phase2-contract.js +363 -0
  299. package/lib/types/client/drama-production-view.d.ts +34 -0
  300. package/lib/types/client/drama-production-view.d.ts.map +1 -0
  301. package/lib/types/client/drama-production.d.ts +92 -0
  302. package/lib/types/client/drama-production.d.ts.map +1 -0
  303. package/lib/types/client/file-activity.d.ts +4 -2
  304. package/lib/types/client/file-activity.d.ts.map +1 -1
  305. package/lib/types/client/index.d.ts +1 -1
  306. package/lib/types/client/index.d.ts.map +1 -1
  307. package/lib/types/client/production-intents.d.ts +9 -0
  308. package/lib/types/client/production-intents.d.ts.map +1 -0
  309. package/lib/types/client/production-prompts.d.ts +9 -0
  310. package/lib/types/client/production-prompts.d.ts.map +1 -0
  311. package/lib/types/client/production-runtime.d.ts +58 -0
  312. package/lib/types/client/production-runtime.d.ts.map +1 -0
  313. package/lib/types/client/video-studio.d.ts +41 -0
  314. package/lib/types/client/video-studio.d.ts.map +1 -0
  315. package/lib/types/client/workbench-ui.d.ts +5 -0
  316. package/lib/types/client/workbench-ui.d.ts.map +1 -0
  317. package/lib/types/game-verification.d.ts +16 -0
  318. package/lib/types/game-verification.d.ts.map +1 -0
  319. package/lib/types/index.d.ts +3 -1
  320. package/lib/types/index.d.ts.map +1 -1
  321. package/lib/types/production-intent.d.ts +21 -0
  322. package/lib/types/production-intent.d.ts.map +1 -0
  323. package/lib/types/production-tool.d.ts +5 -0
  324. package/lib/types/production-tool.d.ts.map +1 -0
  325. package/lib/types/role-tool.d.ts.map +1 -1
  326. package/lib/types/skill-provider.d.ts +7 -0
  327. package/lib/types/skill-provider.d.ts.map +1 -1
  328. package/lib/types/video-project.d.ts +42 -0
  329. package/lib/types/video-project.d.ts.map +1 -0
  330. package/lib/types/workspace-request-trust.d.ts +6 -0
  331. package/lib/types/workspace-request-trust.d.ts.map +1 -1
  332. package/lib/types/workspace-route.d.ts +20 -0
  333. package/lib/types/workspace-route.d.ts.map +1 -1
  334. package/lib/video-recap/CHANGELOG.md +282 -0
  335. package/lib/video-recap/LICENSE +21 -0
  336. package/lib/video-recap/README.en.md +257 -0
  337. package/lib/video-recap/README.md +255 -0
  338. package/lib/video-recap/manifest.json +684 -0
  339. package/lib/video-recap/skills/video-assemble/SKILL.md +97 -0
  340. package/lib/video-recap/skills/video-assemble/references/jianying/LICENSE.duo-video +21 -0
  341. package/lib/video-recap/skills/video-assemble/references/jianying/SOURCE.md +15 -0
  342. package/lib/video-recap/skills/video-assemble/references/jianying/empty_draft_meta_info.json +69 -0
  343. package/lib/video-recap/skills/video-assemble/references/jianying/empty_jy_combination_segment.json +84 -0
  344. package/lib/video-recap/skills/video-assemble/references/jianying/empty_jy_combination_video_material.json +98 -0
  345. package/lib/video-recap/skills/video-assemble/references/jianying/empty_jy_draft.json +204 -0
  346. package/lib/video-recap/skills/video-assemble/references/jianying/empty_jy_material_video.json +83 -0
  347. package/lib/video-recap/skills/video-assemble/references/jianying/empty_jy_meta_material_value.json +23 -0
  348. package/lib/video-recap/skills/video-assemble/references/jianying/empty_jy_project_info.json +133 -0
  349. package/lib/video-recap/skills/video-assemble/references/jianying/empty_jy_segment.json +70 -0
  350. package/lib/video-recap/skills/video-assemble/references/jianying/empty_jy_text_styles.json +30 -0
  351. package/lib/video-recap/skills/video-assemble/references/jianying/empty_yj_material_audio.json +41 -0
  352. package/lib/video-recap/skills/video-assemble/references/jianying/empty_yj_material_text.json +109 -0
  353. package/lib/video-recap/skills/video-assemble/scripts/artifacts.py +88 -0
  354. package/lib/video-recap/skills/video-assemble/scripts/assemble.py +345 -0
  355. package/lib/video-recap/skills/video-assemble/scripts/assemble_constants.py +34 -0
  356. package/lib/video-recap/skills/video-assemble/scripts/assembly_contract.py +305 -0
  357. package/lib/video-recap/skills/video-assemble/scripts/assembly_settings.py +94 -0
  358. package/lib/video-recap/skills/video-assemble/scripts/audio_automation.py +205 -0
  359. package/lib/video-recap/skills/video-assemble/scripts/audio_mix.py +555 -0
  360. package/lib/video-recap/skills/video-assemble/scripts/export_jianying.py +261 -0
  361. package/lib/video-recap/skills/video-assemble/scripts/jianying_builders.py +767 -0
  362. package/lib/video-recap/skills/video-assemble/scripts/jianying_model.py +111 -0
  363. package/lib/video-recap/skills/video-assemble/scripts/jianying_optional.py +24 -0
  364. package/lib/video-recap/skills/video-assemble/scripts/jianying_schema.py +109 -0
  365. package/lib/video-recap/skills/video-assemble/scripts/jianying_templates.py +37 -0
  366. package/lib/video-recap/skills/video-assemble/scripts/jianying_timeline_contract.py +191 -0
  367. package/lib/video-recap/skills/video-assemble/scripts/jianying_tracks.py +75 -0
  368. package/lib/video-recap/skills/video-assemble/scripts/jianying_writer.py +394 -0
  369. package/lib/video-recap/skills/video-assemble/scripts/lib.py +239 -0
  370. package/lib/video-recap/skills/video-assemble/scripts/media.py +243 -0
  371. package/lib/video-recap/skills/video-assemble/scripts/narration_audio.py +477 -0
  372. package/lib/video-recap/skills/video-assemble/scripts/render_preflight.py +46 -0
  373. package/lib/video-recap/skills/video-assemble/scripts/source_subtitles.py +486 -0
  374. package/lib/video-recap/skills/video-assemble/scripts/subtitle_core.py +376 -0
  375. package/lib/video-recap/skills/video-assemble/scripts/subtitle_render.py +88 -0
  376. package/lib/video-recap/skills/video-assemble/scripts/timeline.py +248 -0
  377. package/lib/video-recap/skills/video-assemble/scripts/timeline_emit.py +89 -0
  378. package/lib/video-recap/skills/video-assemble/scripts/visual_render.py +512 -0
  379. package/lib/video-recap/skills/video-cut/SKILL.md +90 -0
  380. package/lib/video-recap/skills/video-cut/scripts/cut.py +67 -0
  381. package/lib/video-recap/skills/video-cut/scripts/cut_cli.py +320 -0
  382. package/lib/video-recap/skills/video-cut/scripts/cut_contract.py +545 -0
  383. package/lib/video-recap/skills/video-cut/scripts/cut_render.py +348 -0
  384. package/lib/video-recap/skills/video-cut/scripts/lib.py +77 -0
  385. package/lib/video-recap/skills/video-cut/scripts/media_geometry.py +341 -0
  386. package/lib/video-recap/skills/video-cut/scripts/narration_mapping.py +249 -0
  387. package/lib/video-recap/skills/video-cut/scripts/sentence_boundaries.py +745 -0
  388. package/lib/video-recap/skills/video-recap/SKILL.md +216 -0
  389. package/lib/video-recap/skills/video-recap/references/config-playbook.md +61 -0
  390. package/lib/video-recap/skills/video-recap/references/creative-editing-playbook.md +225 -0
  391. package/lib/video-recap/skills/video-recap/references/data-schema.md +534 -0
  392. package/lib/video-recap/skills/video-recap/references/research-guide.md +74 -0
  393. package/lib/video-recap/skills/video-recap/references/shift-left-qc-schema.md +23 -0
  394. package/lib/video-recap/skills/video-recap/references/timeline-and-jianying.md +251 -0
  395. package/lib/video-recap/skills/video-recap/scripts/doctor.py +483 -0
  396. package/lib/video-recap/skills/video-recap/scripts/final_qc.py +737 -0
  397. package/lib/video-recap/skills/video-recap/scripts/lib.py +242 -0
  398. package/lib/video-recap/skills/video-recap/scripts/materials.py +457 -0
  399. package/lib/video-recap/skills/video-recap/scripts/mimo_qc.py +95 -0
  400. package/lib/video-recap/skills/video-recap/scripts/mimo_qc_client.py +18 -0
  401. package/lib/video-recap/skills/video-recap/scripts/mimo_qc_contract.py +9 -0
  402. package/lib/video-recap/skills/video-recap/scripts/mimo_qc_evidence.py +371 -0
  403. package/lib/video-recap/skills/video-recap/scripts/mimo_qc_observations.py +201 -0
  404. package/lib/video-recap/skills/video-recap/scripts/mimo_qc_payload.py +227 -0
  405. package/lib/video-recap/skills/video-recap/scripts/mimo_qc_report.py +362 -0
  406. package/lib/video-recap/skills/video-recap/scripts/mimo_qc_runner.py +129 -0
  407. package/lib/video-recap/skills/video-recap/scripts/qc_contract.py +338 -0
  408. package/lib/video-recap/skills/video-recap/scripts/recap.py +9 -0
  409. package/lib/video-recap/skills/video-recap/scripts/recap_cli.py +140 -0
  410. package/lib/video-recap/skills/video-recap/scripts/recap_inspect.py +550 -0
  411. package/lib/video-recap/skills/video-recap/scripts/recap_review.py +77 -0
  412. package/lib/video-recap/skills/video-recap/scripts/recap_runner.py +654 -0
  413. package/lib/video-recap/skills/video-recap/scripts/recap_runtime.py +335 -0
  414. package/lib/video-recap/skills/video-recap/scripts/recap_stage_qc.py +217 -0
  415. package/lib/video-recap/skills/video-recap/scripts/recap_timeline.py +795 -0
  416. package/lib/video-recap/skills/video-script/SKILL.md +248 -0
  417. package/lib/video-recap/skills/video-script/references/creative-editing-playbook.md +225 -0
  418. package/lib/video-recap/skills/video-script/references/research-guide.md +75 -0
  419. package/lib/video-recap/skills/video-script/scripts/agent_brief.py +399 -0
  420. package/lib/video-recap/skills/video-script/scripts/agent_text.py +410 -0
  421. package/lib/video-recap/skills/video-script/scripts/brief_context.py +403 -0
  422. package/lib/video-recap/skills/video-script/scripts/brief_inputs.py +332 -0
  423. package/lib/video-recap/skills/video-script/scripts/brief_timeline.py +442 -0
  424. package/lib/video-recap/skills/video-script/scripts/deslop_qc.py +237 -0
  425. package/lib/video-recap/skills/video-script/scripts/evidence_bundle.py +492 -0
  426. package/lib/video-recap/skills/video-script/scripts/lib.py +327 -0
  427. package/lib/video-recap/skills/video-script/scripts/narration.py +12 -0
  428. package/lib/video-recap/skills/video-script/scripts/narration_lint.py +678 -0
  429. package/lib/video-recap/skills/video-script/scripts/review.py +42 -0
  430. package/lib/video-recap/skills/video-script/scripts/review_grounding.py +262 -0
  431. package/lib/video-recap/skills/video-script/scripts/review_response.py +761 -0
  432. package/lib/video-recap/skills/video-script/scripts/review_runner.py +200 -0
  433. package/lib/video-recap/skills/video-script/scripts/speech_ownership.py +204 -0
  434. package/lib/video-recap/skills/video-script/scripts/timeline_fusion.py +199 -0
  435. package/lib/video-recap/skills/video-script/scripts/validate.py +164 -0
  436. package/lib/video-recap/skills/video-understanding/SKILL.md +75 -0
  437. package/lib/video-recap/skills/video-understanding/references/data-schema.md +299 -0
  438. package/lib/video-recap/skills/video-understanding/references/prompt-templates.md +37 -0
  439. package/lib/video-recap/skills/video-understanding/references/research-guide.md +74 -0
  440. package/lib/video-recap/skills/video-understanding/scripts/agent_brief.py +399 -0
  441. package/lib/video-recap/skills/video-understanding/scripts/agent_text.py +410 -0
  442. package/lib/video-recap/skills/video-understanding/scripts/asr.py +260 -0
  443. package/lib/video-recap/skills/video-understanding/scripts/brief.py +12 -0
  444. package/lib/video-recap/skills/video-understanding/scripts/brief_context.py +403 -0
  445. package/lib/video-recap/skills/video-understanding/scripts/brief_inputs.py +332 -0
  446. package/lib/video-recap/skills/video-understanding/scripts/brief_timeline.py +442 -0
  447. package/lib/video-recap/skills/video-understanding/scripts/consolidate.py +647 -0
  448. package/lib/video-recap/skills/video-understanding/scripts/deslop_qc.py +237 -0
  449. package/lib/video-recap/skills/video-understanding/scripts/detect.py +513 -0
  450. package/lib/video-recap/skills/video-understanding/scripts/extract.py +62 -0
  451. package/lib/video-recap/skills/video-understanding/scripts/lib.py +470 -0
  452. package/lib/video-recap/skills/video-understanding/scripts/narration_lint.py +678 -0
  453. package/lib/video-recap/skills/video-understanding/scripts/speech_ownership.py +204 -0
  454. package/lib/video-recap/skills/video-understanding/scripts/storyboard.py +507 -0
  455. package/lib/video-recap/skills/video-understanding/scripts/timeline_fusion.py +199 -0
  456. package/lib/video-recap/skills/video-understanding/scripts/understand.py +9 -0
  457. package/lib/video-recap/skills/video-understanding/scripts/understanding_brief.py +216 -0
  458. package/lib/video-recap/skills/video-understanding/scripts/understanding_cache.py +327 -0
  459. package/lib/video-recap/skills/video-understanding/scripts/understanding_runner.py +367 -0
  460. package/lib/video-recap/skills/video-understanding/scripts/understanding_storyboard.py +162 -0
  461. package/lib/video-recap/skills/video-understanding/scripts/vlm.py +705 -0
  462. package/lib/video-recap/skills/video-voiceover/SKILL.md +81 -0
  463. package/lib/video-recap/skills/video-voiceover/scripts/dub.py +637 -0
  464. package/lib/video-recap/skills/video-voiceover/scripts/fish_audio.py +109 -0
  465. package/lib/video-recap/skills/video-voiceover/scripts/lib.py +421 -0
  466. package/lib/video-recap/skills/video-voiceover/scripts/tts_audio.py +113 -0
  467. package/lib/video-recap/skills/video-voiceover/scripts/voiceover.py +782 -0
  468. package/package.json +55 -40
  469. package/lib/oh-story/skills/story-deslop/scripts/check-outline-copy.js +0 -241
  470. package/lib/oh-story/skills/story-long-write/references/format-and-structure.md +0 -169
  471. package/lib/oh-story/skills/story-setup/references/agent-references/genre-writing-formulas.md +0 -444
  472. package/lib/oh-story/skills/story-setup/references/agent-references/quality-checklist.md +0 -247
  473. package/lib/oh-story/skills/story-short-analyze/references/anti-ai-writing.md +0 -582
  474. package/lib/oh-story/skills/story-short-analyze/references/banned-words.md +0 -147
  475. package/lib/oh-story/skills/story-short-analyze/references/genre-catalog.md +0 -490
  476. package/lib/oh-story/skills/story-short-analyze/references/genre-core-mechanics.md +0 -425
  477. package/lib/oh-story/skills/story-short-analyze/references/genre-writing-formulas.md +0 -453
  478. /package/lib/oh-story/skills/{story-long-write/references/hooks-chapter.md → story-setup/references/agent-references/short-chapter-hooks.md} +0 -0
  479. /package/lib/oh-story/skills/{story-long-write/references/hooks-paragraph.md → story-setup/references/agent-references/short-paragraph-hooks.md} +0 -0
@@ -11,16 +11,41 @@
11
11
 
12
12
  ## `视觉设定.md`
13
13
 
14
- 按人物、造型、地点和道具分节。每项只写后续生成真正需要保持的识别锚点、当前状态与变化原因,
15
- 不要抄剧情摘要,也不要把瞬时姿势或镜头角度升级成新资产。
14
+ 按人物、造型、地点和道具分节,每一项自己是一个二级标题。每项只写后续生成真正需要保持的识别锚点、
15
+ 当前状态与变化原因,不要抄剧情摘要,也不要把瞬时姿势或镜头角度升级成新资产。
16
16
 
17
17
  ```markdown
18
18
  ## 人物 · 江辰
19
19
  - 识别锚点:窄长眼、左眉尾旧疤、肩背略绷。
20
20
  - 本集造型:深灰旧西装,右袖口有雨水深痕。
21
21
  - 状态变化:EP001-SC003 后右手掌沾血。
22
+ - 画面代称:Jiangchen
23
+ - 连续性锁:LOCK-JIANGCHEN-SUIT《江辰深灰旧西装》(镜头:全集;图片提示词项:IMG-JIANGCHEN-SHEET)· 锁面:dark-grey worn wool suit
22
24
  ```
23
25
 
26
+ 二级标题固定写成 `## <人物|造型|地点|道具> · <名称>`;分镜的「视觉依据」按这个标题定位条目。
27
+
28
+ **画面代称**是提示词正文里直接叫到这一条的名字,按项目提示词语言写;多个写法用 `、` 分隔,
29
+ 大小写必须与正文一致。条目自身的中文名称始终算一个代称,所以中文项目通常不必写这一行。
30
+ `creator_markdown_check.py` 用它机械核对「冻结关键帧里出现的名字,视觉依据必须覆盖」。
31
+
32
+ 提示词正文语言不是中文时,被某镜「视觉依据」引用过的**人物**条目必须给出结论:写
33
+ `画面代称:<正文里的拼写>`,或在正文从不点名它时写 `画面代称:无`。少了这一行,中文条目名在英文正文里
34
+ 永远匹配不上,这条核对就静默失效——那正是 #94 报告的形状。地点和道具通常在正文里只被描述、不被点名,
35
+ 不作强制。
36
+
37
+ 识别锚点写给创作者读;**连续性锁**写给执行端逐字带走。跨镜出现、观众看得出不一致、又不随剧情
38
+ 改变的可见事实(服装主色与形制、道具颜色材质、发型长度、伤口位置)才上锁,会变的部分留在
39
+ `状态变化`。一行一把锁:
40
+
41
+ - `LOCK-...` 在本集唯一,与 `IMG-...`、`REF-...`、`SHOT-...` 互不混用;
42
+ - `镜头:` 写 `全集` 或 `、` 分隔的 `SHOT-...` 列表,两者不能混写;
43
+ - `;图片提示词项:` 可选,写 `、` 分隔的 `IMG-...` 列表;
44
+ - `· 锁面:` 之后是被逐字带走的最小名词短语,用项目提示词语言写,不含标点、动作和剧情。
45
+
46
+ 生效范围内的冻结关键帧、`MOTION-...` 正文和被点名的 `IMG-...` 正文都必须含有这段锁面(忽略
47
+ 大小写);`creator_markdown_check.py` 会机械核对。没有锁的项目不受影响。
48
+
24
49
  ## `分镜.md`
25
50
 
26
51
  每镜一个二级标题。镜头 ID 在本集内唯一并保持稳定;修订镜头内容时不要无故换 ID。
@@ -32,8 +57,11 @@
32
57
  - 目的:先让观众看见他不敢进门,再揭示门内争吵。
33
58
  - 景别/机位:中近景,门框外侧,轻微低机位。
34
59
  - 起点:江辰右手悬在门把上方。
35
- - 终点:手收回,门内传来玻璃落地声。
36
- - 参考:IMG-JIANGCHEN-SHEET;IMG-OLD-DOOR;IMG-CORRIDOR-NIGHT。
60
+ - 唯一动作:门内玻璃落地声触发江辰收回右手,视线从门把转向门缝。
61
+ - 终点:江辰右手垂回身侧,视线落在门缝。
62
+ - 图片提示词项:IMG-JIANGCHEN-SHEET《江辰角色板》(控制:身份、体态、本集造型);IMG-CORRIDOR-NIGHT《夜间走廊场景板》(控制:空间地理、门位、光向)。
63
+ - 输入参考图:无(待补参考图:江辰本集造型、夜间走廊地理、本镜起始帧)。
64
+ - 视觉依据:《视觉设定.md》·人物「江辰」(控制:身份、体态、本集造型);地点「旧走廊」(控制:空间地理、出入口、光向)。
37
65
 
38
66
  ### 冻结关键帧提示词
39
67
  > 按项目提示词语言编写的冻结瞬间正文……
@@ -42,15 +70,96 @@
42
70
  只写有镜头职责的镜头。关键帧提示词必须与该镜“起点”一致;终点才出现的文字、动作或状态不得
43
71
  提前进入静帧,也不要把整段动作塞进静帧。
44
72
 
73
+ 三类依据不得混用:
74
+
75
+ - **图片提示词项**:《图片提示词.md》中可见二级标题的 `IMG-...` 条目,只证明提示词存在;
76
+ - **输入参考图**:创作者已提供,或经确认生产且当前可读的真实图片;每张图用稳定 `REF-...` 槽位绑定显式顺序、可见项目相对路径、中文名称、用途、控制与不得控制范围;
77
+ - **视觉依据**:《视觉设定.md》中的文字事实,不冒充图片。
78
+
79
+ **「视觉依据」是每镜必写字段,也是这一格画面的人物、地点与道具清单。** 冻结关键帧写完之后,
80
+ 按成稿画面逐项回填,语法固定:
81
+
82
+ ```markdown
83
+ - 视觉依据:《视觉设定.md》·人物「江辰」(控制:身份、造型);地点「旧走廊」(控制:空间地理、出入口、光向)。
84
+ ```
85
+
86
+ - `《视觉设定.md》·` 只写一次,条目之间用 `;` 连接,条目名称必须能在《视觉设定.md》里找到同名标题;
87
+ - 画面里需要认出身份、造型或地理的人物、地点和道具都要在列,小比例或背景人物只要需要认出身份仍在范围内;
88
+ - 画外的人声、不可识别的局部和不需要保持一致的临时物件不在列,也不要为凑齐而写进来;
89
+ - 「控制」写这一条在本镜真正决定什么,只写这一格画面承担得起的范围——手部特写不写「本集造型」;
90
+ - 本镜确实没有需要保持一致的可见条目时写 `无`,这不是省略的借口:关键帧里点名的条目仍会被机械核对。
91
+
92
+ 关键帧正文提到某个条目的名字、但它本镜确实不在画面里时(物主已离场、名字只出现在屏幕文字上),
93
+ 在同一字段末尾追加画外清单,如实说明它被提到而不在场:
94
+
95
+ ```markdown
96
+ - 视觉依据:《视觉设定.md》·地点「教室」(控制:课桌排列、窗位);道具「旧书包」(控制:磨损、颜色);画外:人物「小明」。
97
+ ```
98
+
99
+ 某个条目的名字在正文里根本不可靠时——`道具「手机」` 会撞上「手机店」,`人物「小雨」` 会撞上「下着小雨」——
100
+ 在《视觉设定.md》该条目写 `画面代称:无`,机械核对不再按名字找它;这一镜是否画到它,仍由「视觉依据」如实回答。
101
+
102
+ 每个 `REF-...` 槽位的语法是:
103
+
104
+ ```markdown
105
+ REF-<slot>(顺序:<n>)· <项目相对路径>《<中文名称>》(用途:<用途>;控制:<范围>;不得控制:<范围>)
106
+ ```
107
+
108
+ `用途` 回答「这一张在本镜决定什么」,取值只能是
109
+ `身份`、`造型状态`、`地理`、`构图`、`尺度`、`效果`、`起始帧`、`结束帧`、`风格` 之一,逐条含义见
110
+ [参考角色](reference-roles.md)。一张图承担两件事时拆成两个槽位,不写「全参考」。一镜最多一张
111
+ `起始帧`、一张 `结束帧`,且写 `结束帧` 时必须同时有 `起始帧`。有了 `用途`,视频提示词就能直接回答
112
+ 「本镜要送哪一张分镜起始帧、哪些人物/道具/场景图」,生产端也不必再猜每张图的职责。
113
+
114
+ 「输入参考图」有三种准备结果,不能把后两种混在一起:
115
+
116
+ - 已绑定 `REF-...`:图片真实存在,可进入图生/参考生视频;
117
+ - 待补:一张都没有时写 `无(待补参考图:……)`;只缺一部分时保留已有 `REF-...`,末尾追加 `;待补参考图:……`。视频提示词尚未就绪;
118
+ - `无(创作者已明确选择文生视频)`:创作者在了解一致性影响后明确不用图,可进入文生视频。
119
+
120
+ `IMG-...` 只用于查找,不靠英文 slug 向创作者解释含义。每个引用都同时写简短中文名称和
121
+ 控制范围,且 ID 必须在当前《图片提示词.md》标题中存在。中文名称帮助阅读,不取代 ID 定义条目身份。没有该文档或没有合适条目时,分镜仍可
122
+ 直接从剧本和视觉设定进入,使用下列回退格式,不编造 ID 也不补造提示词阶段:
123
+
124
+ ```markdown
125
+ - 图片提示词项:无
126
+ - 输入参考图:无(待补参考图:江辰身份、旧走廊地理、本镜起始帧)
127
+ - 视觉依据:《视觉设定.md》·人物「江辰」(控制:身份、造型);地点「旧走廊」(控制:空间地理、出入口、光向)。
128
+ ```
129
+
130
+ 提示词条目和真实图片是独立的:有 `IMG-...` 条目时,「输入参考图」可以仍为「无」;创作者给了
131
+ 真实图片时,也不需要为它编造提示词条目:
132
+
133
+ ```markdown
134
+ - 图片提示词项:无
135
+ - 输入参考图:REF-JIANGCHEN-LOOK(顺序:1)· 输入/参考图/江辰定妆.jpg《江辰定妆照》(用途:造型状态;控制:本集造型、面料质感;不得控制:镜头构图、动作、表情)
136
+ - 视觉依据:《视觉设定.md》·人物「江辰」(控制:身份、体态)。
137
+ ```
138
+
139
+ 只准备了一部分时,已核对的图不丢弃,但必须把缺口留在同一字段中:
140
+
141
+ ```markdown
142
+ - 输入参考图:REF-JIANGCHEN-LOOK(顺序:1)· 输入/参考图/江辰定妆.jpg《江辰定妆照》(用途:身份;控制:脸型、体态、本集造型;不得控制:场景地理、构图、动作);待补参考图:夜间走廊地理、本镜起始帧
143
+ ```
144
+
145
+ 两者也可同时存在,但各用各的定位符:
146
+
147
+ ```markdown
148
+ - 图片提示词项:IMG-JIANGCHEN-SHEET《江辰角色板》(控制:身份、体态)
149
+ - 输入参考图:REF-CORRIDOR-COMPOSITION(顺序:1)· 输入/参考图/走廊构图.jpg《走廊构图参考》(用途:构图;控制:占画比例、留白;不得控制:人物身份、动作、剧情事件)
150
+ - 视觉依据:《视觉设定.md》·人物「江辰」(控制:身份、体态);地点「旧走廊」(控制:空间地理、出入口)。
151
+ ```
152
+
45
153
  ## `图片提示词.md`
46
154
 
47
155
  每项一个可投产的角色板、场景板、道具板或状态图。标题使用 `IMG-...` ID;正文放在
48
156
  `### 可复制提示词` 的引用块里,前面只保留用途和参考约束。
157
+ 这里的 `IMG-...` 是提示词条目 ID,不是已生成图片的记录。
49
158
 
50
159
  ```markdown
51
160
  ## IMG-JIANGCHEN-SHEET · 江辰角色板
52
161
  - 用途:锁定身份、体态和本集造型。
53
- - 参考:无;若有参考图,只说明它控制什么。
162
+ - 参考:无;若有真实参考图,使用与分镜相同的完整 `REF-...` 格式,说明顺序、项目相对路径、中文名称、用途、控制与不得控制范围。
54
163
 
55
164
  ### 可复制提示词
56
165
  > 按项目提示词语言编写的正文……
@@ -58,22 +167,38 @@
58
167
 
59
168
  ## `视频提示词.md`
60
169
 
61
- 与分镜一一对应时沿用镜头号并使用 `MOTION-...` ID。正文只描述从已确认起点到终点的变化,
62
- 不重复静帧已经锁定的外观。
170
+ 与分镜一一对应时沿用镜头号并使用 `MOTION-...` ID。若「输入参考图」中的 `REF-...` 已全部就绪,使用图生视频,正文
171
+ 只需重述运动所需的局部起点和防漂移事实;只有「输入参考图:无(创作者已明确选择文生视频)」才使用文生视频,正文必须自足地
172
+ 包含人物、造型、地点、构图、光线等本镜需要的静态视觉锚点,不能用 `preserve/保持已有外观`
173
+ 代替模型并未收到的图片。「待补参考图」会阻止最终视频提示词;视频文档中的「输入参考图」必须与对应分镜逐字一致。
174
+
175
+ 除非剧本或创作者明确要求,视频正文用项目提示词语言直接声明全镜任何时刻都不生成非画内字幕、
176
+ caption 和对白文字叠加,不能只写抽象的“文字层为空”,让对白只通过声音与口型发生。旗帜、标牌、
177
+ 屏幕等画内文字另走已接受的文字政策:`exact_readable` 逐字携带准确
178
+ 字符、语言、承载面和位置;关闭字幕不能写成会同时抹掉这些画内文字的全局 `no-text`。
63
179
 
64
180
  ```markdown
65
181
  ## MOTION-EP001-001 · 门外停步
66
182
  - 分镜:SHOT-EP001-001
67
183
  - 时长:4s
184
+ - 生成方式:文生视频
185
+ - 输入参考图:无(创作者已明确选择文生视频)。
186
+ - 静态视觉锚点:A lean young East Asian man in a dark-grey worn suit stands outside an old corridor door under cold overhead light.
68
187
  - 起始帧:SHOT-EP001-001 的冻结关键帧
188
+ - 状态链:右手悬在门把上方 → 门内玻璃落地触发他收回右手并转移视线 → 右手收回,视线落到门缝
69
189
  - 终点:右手收回;门内玻璃落地;人物视线转向门缝。
70
190
 
71
191
  ### 可复制提示词
72
- > 从右手悬停的已确认起始帧开始……
192
+ > A lean young East Asian man in a dark-grey worn suit stands outside an old corridor door under cold overhead light. His right hand starts suspended above the handle, then withdraws……
73
193
  ```
74
194
 
195
+ 有真实输入图时改用「生成方式:图生视频」,并原样携带分镜的完整 REF 声明;静态视觉锚点只写
196
+ 执行动作所需、且不能仅靠参考图用途推断的可见起点,不把路径或 REF ID 放进可复制正文。
197
+
75
198
  ## 共通规则
76
199
 
77
200
  - 提示词正文必须可直接复制,不放占位符、流程备注或 QA 结论。
201
+ - `### 可复制提示词` 下的引用块是**一条**提示词:从第一行到最后一行整段复制进那一次生成。方言把它分成 `subject_definitions` / `overall_soundscape` 这类段落时,段落仍属于同一条正文,不是分几次提交,也不是只交第一段。
78
202
  - 引用使用文档里看得见的场景/镜头/提示词 ID;不写文件哈希和内部路径。
79
203
  - 用户没要求的字段不为“完整”而补造。
204
+ - 完成或修订五份文档后运行 `python3 {技能目录}/scripts/creator_markdown_check.py 剧集/<EP> --project-root .`,校验可执行的跨文档结构;内容质量仍由创作者审查。
@@ -23,8 +23,17 @@
23
23
  工作区,不是单集创作真相。其存在不会改变 `剧集/<EP>/` 的五文档布局,也不能要求单集 owner
24
24
  补造并行结构化产物。
25
25
 
26
- 创作者说明跟随项目语言。图片、关键帧和视频的可复制正文跟随 `prompt_language`;没有
27
- `short-drama.json` 时默认使用 `en`,同一任务保持一致。两种语言互相独立,不能用一个推断另一个。
26
+ 创作者说明跟随项目语言。图片和关键帧正文跟随 `prompt_language`;视频正文优先跟随目标视频模型
27
+ 档案的 `video_prompt_language` 和 `video_prompt_dialect`,未声明时回退 `prompt_language` 与通用自然语言。
28
+ `native_duration_seconds` 在分镜规划时生效,不能等生产提交才发现镜头不合法。没有 `short-drama.json` 时,图片与
29
+ 关键帧正文默认使用 `en`;视频正文根据目标模型确认,目标也未声明时沿用用户当前语言。描述语言、
30
+ 对白口语语言和画内文字互相独立,不能用一个推断另一个。
31
+
32
+ 用户在 Brief 或当前请求中已经给出的项目级事实要在初始化时同步到 `short-drama.json`:至少包括已确认的
33
+ 集数、单集目标时长、画幅和目标生产档案。生产档案只有 `unset` 与 `accepted` 两种项目级状态;下游只读取
34
+ 已接受档案,不用临时状态代替创作者决定。
35
+ 同一场次连续生产且目标模型支持续接时,生产档案把连续性路由声明为“上一段实际视频 + 实际尾帧接力”;
36
+ `one-shot-per-generation`、单镜容器或多镜容器只描述打包粒度,不能用来取消这条连续性路由。
28
37
 
29
38
  ## 请求范围
30
39
 
@@ -38,6 +47,33 @@
38
47
  2. 缺失事实形成会显著改变剧情或视觉方向的真实创作分叉;
39
48
  3. 下一步会调用外部生产,必须先展示精确 job 并取得显式确认。
40
49
 
50
+ ### 一句话把范围说清楚
51
+
52
+ 请求不需要固定话术,技能也不靠关键词匹配。下面几句只是把「一句话里到底要交代哪几件事」写明白,
53
+ 照抄或改写都可以:
54
+
55
+ ```text
56
+ 写 EP001 的分镜和每镜冻结关键帧。目标视频模型是 MiniMax H3,先把它写进项目档案。
57
+ ```
58
+
59
+ ```text
60
+ EP001 分镜确认采用,按 MiniMax H3 写视频提示词。人物、场景、道具要跨镜一致,
61
+ 所以先在项目里找已有的角色图、场景图、道具图和本镜起始帧并绑成参考;缺哪张就列出来,别改成文生视频。
62
+ ```
63
+
64
+ ```text
65
+ EP001 的角色图和场景图在 输入/参考图/ 下,本镜起始帧在 剧集/EP001/制作成果/images/ 下,
66
+ 请按这些图写 MiniMax H3 的图生视频提示词,逐镜说明送哪一张起始帧、哪些人物/道具/场景图。
67
+ ```
68
+
69
+ ```text
70
+ 这一集没有也不打算做参考图,明确走文生视频,静态视觉锚点写足。
71
+ ```
72
+
73
+ 一句请求里值得交代的是四件事:**做哪一集的哪一阶段**、**目标视频模型**、**参考图在哪里或还没有**、
74
+ **没有图时是等图还是明确走文生视频**。前三件缺一件,技能会来问或按已接受档案推进;最后一件从不替
75
+ 创作者假设——没有说“明确走文生视频”,就当成还在等图。
76
+
41
77
  结构检查服务于发现错误,不是创作门禁。能在当前文档直接修正的问题直接修正;审查、归档和媒体
42
78
  生产只有用户点名时开始。安装 selftest、全量 QA 和 demo 验证属于技能维护,不属于普通创作请求。
43
79
 
@@ -38,6 +38,7 @@
38
38
  | 有限行动单位与精确时限 | `$short-drama-write` | 题面明确给出可核对的次数、轮次、节拍或字面死线 | 按完成状态与题面约定检查,不把定性压力升级为数字或主动增加计数结构 |
39
39
  | 资产出现证据 | `$short-drama-assets` | 从剧本拆角色、地点、道具与状态 | 不用名词/人名匹配直接建资产 |
40
40
  | 身份、变体与复用 | `$short-drama-assets` | 决定复用、新变体、新身份或未决 | 相机角度通常不是资产变体 |
41
+ | 原著自带的真实品牌与现实实体 | `$short-drama-assets` | 剧本沿用了原著专名,且该专名指向现实存在的品牌、商标、机构或人物 | 不判断合规、不给禁令、不内置清单;只把选择交给创作者并留痕 |
41
42
  | 资产图片提示词 | `$short-drama-image-prompts` | 把已接受资产投影为单帧可见规格 | 不承载有先后顺序的剧情动作 |
42
43
  | 场景板光线与跨 View 一致 | `$short-drama-image-prompts` | 同一地点要拆多个观察方向、且这些板会被互相剪接 | 朝向造成的逆光/落影差异不需拉平 |
43
44
  | 图片提示词定点修改 | `$short-drama-image-prompts` | 修改局部并冻结 preserve set | 不把重写整图伪装成局部编辑 |
@@ -51,7 +52,9 @@
51
52
  | 交付路由与执行触发词 | `$short-drama-video-prompts` | 项目声明了逐镜以外的路由,或某路由要求固定字样 | 触发词与路由都由创作者档案声明,本套件不自造字样,续接不产生第二个起点权威 |
52
53
  | 表演动作与时长 | `$short-drama-video-prompts` | 动作、台词与落点可能超载 | 不用每秒动作数设通用阈值 |
53
54
  | 摄影机、声音与相连边界 | `$short-drama-video-prompts` | 写运镜、环境运动、口型或声音方向 | 不添加无来源的音乐/事件 |
55
+ | 目标执行端能力档案 | `$short-drama-video-prompts` | 执行端的时长、参考方式、声音同轨或长度上限会改变正文写法 | 能力由创作者声明不由推断;不内置模型清单,不因收敛改写已接受边界 |
54
56
  | 跨场与跨镜连续性 | `$short-drama-assets` | 状态变化会传给下一场/镜/集 | 不复制整本 设定集 到每镜 |
57
+ | 跨镜可见事实上锁 | `$short-drama-assets` | 服装、道具的颜色/材质在镜与镜之间漂移,参考图管不到 | 锁不变事实,不锁状态、姿势与镜头瞬态;锁面不替创作者选颜色 |
55
58
  | 制作形态翻译 | `$short-drama` | 把实拍、二维、三维、水墨等方向投影到各阶段 | 风格名或模型代码不是生产决策 |
56
59
  | 独立证据审查 | `$short-drama-review` | 冻结目标后写 finding 与 verdict | reviewer 不编辑 owner 来源 |
57
60
  | 项目生产观察与校准 | `$short-drama-review` | 有授权文字观察且需定位到准确 prompt/spec/reference/config | 只在当前项目和版本有效;未观察结果保持未知 |
@@ -2,14 +2,17 @@
2
2
 
3
3
  绑定参考图等于告诉下游“哪些地方照着它”。不说明边界,身份参考会越权决定服装、构图、背景或文字。
4
4
 
5
- ## 每张参考回答四个问题
5
+ ## 每张参考回答五个问题
6
6
 
7
- 1. 它的稳定可见 ID 是什么,例如 `IMG-JIANGCHEN-SHEET`;
8
- 2. 本次参考身份、造型状态、地点地理、构图、尺度、效果、起点、终点还是风格;
9
- 3. 哪些可见内容允许照着写;
10
- 4. 哪些身份、文字、人数、道具和空间锚点不能跟着变。
7
+ 1. 它的稳定 `REF-...` 槽位和显式顺序是什么;
8
+ 2. 它的可见项目相对路径和中文名称是什么,例如 `输入/参考图/江辰定妆.jpg《江辰定妆照》`;
9
+ 3. 本次参考身份、造型状态、地理、构图、尺度、效果、起始帧、结束帧还是风格;
10
+ 4. 哪些可见内容允许照着写;
11
+ 5. 哪些身份、文字、人数、道具和空间锚点不能跟着变。
11
12
 
12
- 同一张图承担两个作用时分开说明,不写“全参考”。
13
+ 第 3 问在创作文档里有固定落点:`REF-...` 槽位的 `用途` 字段,取值只能是下表左列的九个词之一。
14
+ 它同时回答创作者的「这一镜要送哪一张分镜起始帧、哪些人物/道具/场景图」,和执行端的「这张图翻成哪个
15
+ 供应商 role」。同一张图承担两个作用时分开成两个槽位,不写“全参考”。
13
16
 
14
17
  | 用途 | 可以控制 | 默认不能控制 |
15
18
  |---|---|---|
@@ -29,7 +32,7 @@
29
32
  内容。两者都没有时保持“未验证”,不得声称水印、文字、裁切或身份已经通过。负面提示词不能擦掉
30
33
  参考图已有的像素。
31
34
 
32
- 多张图需要稳定 ID 和明确顺序;联系表只是浏览包装,不改变每张图自己的用途。首尾帧默认只使用起点;
35
+ 真实参考图使用 `REF-...` 稳定槽位,不使用 `IMG-...`;后一前缀专属《图片提示词.md》的可见提示词标题。多张真实图的每个槽位绑定显式顺序、项目相对路径、中文名称、用途、可控制范围和不可控制范围;联系表只是浏览包装,不改变每张图自己的用途。首尾帧默认只使用起点;
33
36
  确实需要终点帧时,它只能投影 `SHOT-...` 已写明的终点,不能自行发明结果。
34
37
 
35
38
  观众知情时机见 [观众揭示](audience-reveal.md),补拍是否能替代母版见
@@ -8,6 +8,9 @@
8
8
  python3 <core>/scripts/project_tool.py init <project> --title "项目名"
9
9
  ```
10
10
 
11
+ 本文各处写作 `python3`;Windows 原生环境没有这个名字,改用 `py -3` 或 `python`。
12
+ 套件脚本(含 Dashboard)在 macOS、Linux、WSL 与 Windows 原生都可运行。
13
+
11
14
  创作文档固定写入 `剧集/<EP>/`。只读取当前任务需要的直接输入;不要扫描整个项目寻找可补造的上游。
12
15
 
13
16
  ## 写入纪律