@oh-story/dsh 0.1.9 → 0.1.10

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 (197) hide show
  1. package/README.md +12 -12
  2. package/lib/client.js +204 -72
  3. package/lib/client.js.map +3 -3
  4. package/lib/drama/manifest.json +84 -74
  5. package/lib/drama/skills/short-drama/SKILL.md +2 -2
  6. package/lib/drama/skills/short-drama/scripts/creator_markdown_check.py +14 -0
  7. package/lib/drama/skills/short-drama-assets/references/character-and-look.md +10 -0
  8. package/lib/drama/skills/short-drama-assets/references/continuity-lock.md +6 -9
  9. package/lib/drama/skills/short-drama-assets/references/voice-direction.md +28 -0
  10. package/lib/drama/skills/short-drama-edit/SKILL.md +27 -29
  11. package/lib/drama/skills/short-drama-edit/assets//345/211/252/350/276/221/345/215/225.md +2 -2
  12. package/lib/drama/skills/short-drama-edit/references/cut-craft.md +24 -67
  13. package/lib/drama/skills/short-drama-edit/references/delivery-verify.md +27 -56
  14. package/lib/drama/skills/short-drama-edit/references/generated-footage.md +37 -79
  15. package/lib/drama/skills/short-drama-edit/references/sound-and-subtitles.md +39 -92
  16. package/lib/drama/skills/short-drama-edit/references/stage-contract.md +12 -16
  17. package/lib/drama/skills/short-drama-edit/scripts/edit_tool.py +126 -11
  18. package/lib/drama/skills/short-drama-edit/scripts/selftest.py +64 -0
  19. package/lib/drama/skills/short-drama-image-prompts/SKILL.md +2 -0
  20. package/lib/drama/skills/short-drama-image-prompts/references/common-recipe.md +11 -0
  21. package/lib/drama/skills/short-drama-produce/SKILL.md +5 -1
  22. package/lib/drama/skills/short-drama-produce/references/adapter-contract.md +14 -20
  23. package/lib/drama/skills/short-drama-produce/references/providers/minimax-h3-video.md +8 -26
  24. package/lib/drama/skills/short-drama-produce/references/providers/minimax-speech.md +41 -0
  25. package/lib/drama/skills/short-drama-produce/scripts/provider_adapters.py +142 -1
  26. package/lib/drama/skills/short-drama-review/SKILL.md +2 -3
  27. package/lib/drama/skills/short-drama-review/references/production-quality-gates.md +6 -19
  28. package/lib/drama/skills/short-drama-review/references/rubric-visual-motion.md +9 -35
  29. package/lib/drama/skills/short-drama-storyboard/SKILL.md +10 -6
  30. package/lib/drama/skills/short-drama-storyboard/references/lighting-craft.md +39 -0
  31. package/lib/drama/skills/short-drama-storyboard/references/shot-craft.md +58 -21
  32. package/lib/drama/skills/short-drama-storyboard/references/stage-contract.md +1 -1
  33. package/lib/drama/skills/short-drama-video-prompts/SKILL.md +10 -9
  34. package/lib/drama/skills/short-drama-video-prompts/references/camera-audio-continuity.md +17 -0
  35. package/lib/drama/skills/short-drama-video-prompts/references/minimax-h3.md +12 -38
  36. package/lib/drama/skills/short-drama-video-prompts/references/motion-recipe.md +4 -7
  37. package/lib/drama/skills/short-drama-video-prompts/references/performance-action-timing.md +8 -22
  38. package/lib/drama/skills/short-drama-video-prompts/references/production-prompt-grammar.md +6 -19
  39. package/lib/drama/skills/short-drama-video-prompts/references/seedance-2.0.md +2 -3
  40. package/lib/drama/skills/short-drama-video-prompts/references/seedance-2.5.md +34 -9
  41. package/lib/drama/skills/short-drama-video-prompts/references/stage-contract.md +2 -2
  42. package/lib/drama/skills/short-drama-write/SKILL.md +2 -4
  43. package/lib/index.js +289 -91
  44. package/lib/index.js.map +4 -4
  45. package/lib/novel-to-game/README.md +299 -59
  46. package/lib/novel-to-game/README_ZH.md +299 -56
  47. package/lib/novel-to-game/VERSION +1 -1
  48. package/lib/novel-to-game/examples/jin-ping-mei/build/BUILD_BRIEF.md +3 -1
  49. package/lib/novel-to-game/examples/jin-ping-mei/build/app/RUN.md +11 -3
  50. package/lib/novel-to-game/examples/jin-ping-mei/build/app/css/new-guofeng.css +397 -8
  51. package/lib/novel-to-game/examples/jin-ping-mei/build/app/css/style.css +0 -31
  52. package/lib/novel-to-game/examples/jin-ping-mei/build/app/js/data.js +71 -73
  53. package/lib/novel-to-game/examples/jin-ping-mei/build/app/js/engine.js +78 -89
  54. package/lib/novel-to-game/examples/jin-ping-mei/build/app/js/main.js +37 -14
  55. package/lib/novel-to-game/examples/jin-ping-mei/build/app/js/text.js +5 -5
  56. package/lib/novel-to-game/examples/jin-ping-mei/build/app/package.json +2 -1
  57. package/lib/novel-to-game/examples/jin-ping-mei/qa/README.md +11 -16
  58. package/lib/novel-to-game/examples/jin-ping-mei/qa/verification.json +11 -11
  59. package/lib/novel-to-game/examples/jin-ping-mei/qa/verify_playable_model.mjs +23 -0
  60. package/lib/novel-to-game/manifest.json +77 -87
  61. package/lib/novel-to-game/skills/game-art-direction/SKILL.md +7 -12
  62. package/lib/novel-to-game/skills/game-art-direction/references/art-direction-method.md +27 -106
  63. package/lib/novel-to-game/skills/game-build/SKILL.md +13 -14
  64. package/lib/novel-to-game/skills/game-build/references/blender-asset-workflow.md +24 -0
  65. package/lib/novel-to-game/skills/game-build/references/build-brief-contract.md +45 -82
  66. package/lib/novel-to-game/skills/game-build/references/generative-media-pipeline.md +14 -45
  67. package/lib/novel-to-game/skills/game-build/references/playable-model-contract.md +30 -65
  68. package/lib/novel-to-game/skills/game-build/references/tts-production-contract.md +13 -27
  69. package/lib/novel-to-game/skills/game-concept/SKILL.md +13 -15
  70. package/lib/novel-to-game/skills/game-concept/references/concept-method.md +28 -75
  71. package/lib/novel-to-game/skills/game-qa/SKILL.md +6 -7
  72. package/lib/novel-to-game/skills/game-qa/references/test-design-method.md +9 -5
  73. package/lib/novel-to-game/skills/game-world-design/SKILL.md +12 -16
  74. package/lib/novel-to-game/skills/game-world-design/references/narrative-design-method.md +23 -72
  75. package/lib/novel-to-game/skills/game-world-design/references/numeric-design-method.md +14 -48
  76. package/lib/novel-to-game/skills/game-world-design/references/world-design-method.md +36 -103
  77. package/lib/novel-to-game/skills/novel-game-analyze/SKILL.md +4 -10
  78. package/lib/novel-to-game/skills/novel-game-analyze/references/gameability-protocol.md +4 -4
  79. package/lib/novel-to-game/skills/novel-to-game/SKILL.md +9 -21
  80. package/lib/novel-to-game/skills/novel-to-game/references/intake-method.md +5 -4
  81. package/lib/novel-to-game/skills/novel-to-game/references/pipeline-contract.md +5 -8
  82. package/lib/oh-story/manifest.json +230 -185
  83. package/lib/oh-story/roles/chapter-extractor.md +177 -237
  84. package/lib/oh-story/roles/consistency-checker.md +4 -4
  85. package/lib/oh-story/roles/narrative-writer.md +24 -25
  86. package/lib/oh-story/roles/story-architect.md +5 -5
  87. package/lib/oh-story/roles/story-explorer.md +11 -11
  88. package/lib/oh-story/skills/story/SKILL.md +13 -7
  89. package/lib/oh-story/skills/story/VERSION +1 -1
  90. package/lib/oh-story/skills/story/references/author-memory.md +54 -24
  91. package/lib/oh-story/skills/story/scripts/author_memory_commit.py +934 -170
  92. package/lib/oh-story/skills/story-cover/SKILL.md +10 -1
  93. package/lib/oh-story/skills/story-deslop/SKILL.md +40 -53
  94. package/lib/oh-story/skills/story-deslop/references/anti-ai-writing.md +11 -10
  95. package/lib/oh-story/skills/story-deslop/references/author-memory.md +54 -24
  96. package/lib/oh-story/skills/story-deslop/references/deslop-gates.md +1 -1
  97. package/lib/oh-story/skills/story-deslop/scripts/author_memory_commit.py +934 -170
  98. package/lib/oh-story/skills/story-import/SKILL.md +77 -81
  99. package/lib/oh-story/skills/story-import/references/character-state-reverse.md +1 -1
  100. package/lib/oh-story/skills/story-import/references/state-tracking.md +4 -69
  101. package/lib/oh-story/skills/story-import/references/structure-mapping-long.md +10 -8
  102. package/lib/oh-story/skills/story-import/references/tracking-transaction.md +8 -6
  103. package/lib/oh-story/skills/story-import/scripts/check-outline-contract.js +34 -16
  104. package/lib/oh-story/skills/story-import/scripts/tracking_commit.py +210 -2
  105. package/lib/oh-story/skills/story-import/scripts/wordcount_core.py +3 -0
  106. package/lib/oh-story/skills/story-long-analyze/SKILL.md +91 -258
  107. package/lib/oh-story/skills/story-long-analyze/references/author-facing.md +245 -0
  108. package/lib/oh-story/skills/story-long-analyze/references/deconstruction-notes.md +2 -2
  109. package/lib/oh-story/skills/story-long-analyze/references/inspiration-library.md +105 -0
  110. package/lib/oh-story/skills/story-long-analyze/references/material-decomposition.md +113 -105
  111. package/lib/oh-story/skills/story-long-analyze/references/output-templates.md +169 -125
  112. package/lib/oh-story/skills/story-long-analyze/references/pipeline-ops.md +172 -64
  113. package/lib/oh-story/skills/story-long-analyze/references/semantic-acceptance-fixtures.md +84 -0
  114. package/lib/oh-story/skills/story-long-analyze/references/style-profile-generator.md +42 -132
  115. package/lib/oh-story/skills/story-long-analyze/references/style-profile-protocol.md +5 -5
  116. package/lib/oh-story/skills/story-long-analyze/scripts/build_chapter_index.py +466 -0
  117. package/lib/oh-story/skills/story-long-analyze/scripts/inspect_existing_assets.py +702 -0
  118. package/lib/oh-story/skills/story-long-analyze/scripts/inspiration_index.py +864 -0
  119. package/lib/oh-story/skills/story-long-analyze/scripts/manage_analysis_run.py +1106 -0
  120. package/lib/oh-story/skills/story-long-analyze/scripts/render_relation_chart.py +425 -0
  121. package/lib/oh-story/skills/story-long-scan/SKILL.md +4 -1
  122. package/lib/oh-story/skills/story-long-write/SKILL.md +38 -29
  123. package/lib/oh-story/skills/story-long-write/references/anti-ai-writing.md +11 -10
  124. package/lib/oh-story/skills/story-long-write/references/artifact-protocols.md +25 -20
  125. package/lib/oh-story/skills/story-long-write/references/author-memory.md +54 -24
  126. package/lib/oh-story/skills/story-long-write/references/benchmark-recall.md +3 -3
  127. package/lib/oh-story/skills/story-long-write/references/cross-book-recall.md +26 -0
  128. package/lib/oh-story/skills/story-long-write/references/dialogue-mastery.md +4 -0
  129. package/lib/oh-story/skills/story-long-write/references/emotional-methods.md +2 -2
  130. package/lib/oh-story/skills/story-long-write/references/long-chapter-quality.md +4 -13
  131. package/lib/oh-story/skills/story-long-write/references/outline-structure-theory.md +1 -1
  132. package/lib/oh-story/skills/story-long-write/references/project-files.md +9 -7
  133. package/lib/oh-story/skills/story-long-write/references/reader-contract-and-progression.md +12 -4
  134. package/lib/oh-story/skills/story-long-write/references/reference-index.md +1 -2
  135. package/lib/oh-story/skills/story-long-write/references/tracking-transaction.md +8 -6
  136. package/lib/oh-story/skills/story-long-write/references/workflow-chapter.md +86 -115
  137. package/lib/oh-story/skills/story-long-write/references/workflow-daily.md +55 -120
  138. package/lib/oh-story/skills/story-long-write/references/workflow-revision.md +15 -11
  139. package/lib/oh-story/skills/story-long-write/references/workflow-setup.md +66 -68
  140. package/lib/oh-story/skills/story-long-write/references/writer-prompt-fallback.md +3 -3
  141. package/lib/oh-story/skills/story-long-write/references/writing-craft.md +4 -12
  142. package/lib/oh-story/skills/story-long-write/scripts/author_memory_commit.py +934 -170
  143. package/lib/oh-story/skills/story-long-write/scripts/build_writer_prompt.py +139 -18
  144. package/lib/oh-story/skills/story-long-write/scripts/check-outline-contract.js +34 -16
  145. package/lib/oh-story/skills/story-long-write/scripts/outline_view.py +5 -3
  146. package/lib/oh-story/skills/story-long-write/scripts/storyctl.py +58 -0
  147. package/lib/oh-story/skills/story-long-write/scripts/tracking_commit.py +210 -2
  148. package/lib/oh-story/skills/story-long-write/scripts/wordcount_core.py +3 -0
  149. package/lib/oh-story/skills/story-review/SKILL.md +68 -85
  150. package/lib/oh-story/skills/story-review/references/anti-ai-writing.md +11 -10
  151. package/lib/oh-story/skills/story-review/references/author-memory.md +54 -24
  152. package/lib/oh-story/skills/story-review/references/dialogue-mastery.md +4 -0
  153. package/lib/oh-story/skills/story-review/references/review-quality.md +4 -10
  154. package/lib/oh-story/skills/story-review/references/tracking-transaction.md +8 -6
  155. package/lib/oh-story/skills/story-review/scripts/author_memory_commit.py +934 -170
  156. package/lib/oh-story/skills/story-review/scripts/tracking_commit.py +210 -2
  157. package/lib/oh-story/skills/story-review/scripts/wordcount_core.py +3 -0
  158. package/lib/oh-story/skills/story-setup/SKILL.md +50 -42
  159. package/lib/oh-story/skills/story-setup/references/agent-references/anti-ai-writing.md +11 -10
  160. package/lib/oh-story/skills/story-setup/references/agent-references/deslop-gates.md +1 -1
  161. package/lib/oh-story/skills/story-setup/references/agent-references/dialogue-mastery.md +4 -0
  162. package/lib/oh-story/skills/story-setup/references/agent-references/long-emotional-methods.md +2 -2
  163. package/lib/oh-story/skills/story-setup/references/agent-references/long-quality.md +1 -1
  164. package/lib/oh-story/skills/story-setup/references/agent-references/writing-craft.md +4 -12
  165. package/lib/oh-story/skills/story-setup/references/diagnostics.md +1 -1
  166. package/lib/oh-story/skills/story-short-analyze/SKILL.md +22 -3
  167. package/lib/oh-story/skills/story-short-analyze/references/material-decomposition.md +5 -1
  168. package/lib/oh-story/skills/story-short-scan/SKILL.md +5 -1
  169. package/lib/oh-story/skills/story-short-write/SKILL.md +6 -147
  170. package/lib/oh-story/skills/story-short-write/references/author-memory.md +54 -24
  171. package/lib/oh-story/skills/story-short-write/references/dialogue-mastery.md +4 -0
  172. package/lib/oh-story/skills/story-short-write/references/reference-index.md +2 -0
  173. package/lib/oh-story/skills/story-short-write/references/workflow-design.md +3 -2
  174. package/lib/oh-story/skills/story-short-write/references/workflow-draft.md +126 -0
  175. package/lib/oh-story/skills/story-short-write/references/workflow-revision.md +32 -0
  176. package/lib/oh-story/skills/story-short-write/scripts/author_memory_commit.py +934 -170
  177. package/lib/types/client/drama-production-view.d.ts.map +1 -1
  178. package/lib/types/client/file-activity.d.ts +19 -1
  179. package/lib/types/client/file-activity.d.ts.map +1 -1
  180. package/lib/types/client/index.d.ts.map +1 -1
  181. package/lib/types/client/production-prompts.d.ts +7 -0
  182. package/lib/types/client/production-prompts.d.ts.map +1 -1
  183. package/lib/types/client/production-runtime.d.ts +16 -0
  184. package/lib/types/client/production-runtime.d.ts.map +1 -1
  185. package/lib/types/drama-adapters.d.ts +5 -3
  186. package/lib/types/drama-adapters.d.ts.map +1 -1
  187. package/lib/types/native-hooks.d.ts +52 -0
  188. package/lib/types/native-hooks.d.ts.map +1 -1
  189. package/lib/types/role-identity.d.ts +17 -0
  190. package/lib/types/role-identity.d.ts.map +1 -0
  191. package/lib/types/role-tool.d.ts.map +1 -1
  192. package/lib/types/skill-provider.d.ts.map +1 -1
  193. package/package.json +45 -45
  194. package/lib/novel-to-game/skills/game-world-design/references/dialogue-design-method.md +0 -58
  195. package/lib/novel-to-game/skills/game-world-design/references/game-writing-craft.md +0 -53
  196. package/lib/novel-to-game/skills/novel-to-game/references/intake-benchmark-reference.md +0 -38
  197. package/lib/oh-story/skills/story-long-write/references/state-tracking.md +0 -108
@@ -31,8 +31,7 @@ non_diegetic_music: ...
31
31
 
32
32
  - `integrated_multimodal_description` 按 `[Shot 1]`、`[Shot 2]` 写画面、动作、说话人、逐字对白和同步声音;
33
33
  单镜也保留 `[Shot 1]`。第一镜不加切镜时间戳,后续切镜用 `[Shot 2] At 00:03.500, ...`,时间递增且落在本次生成时长内。
34
- 实测这个时间戳很准:要求第 4.0 秒切,三次实际落在 3.96/4.04/4.12 秒。需要成员边界与已接受时长
35
- 对得上的多镜容器,用这种写法。
34
+ 小样本观察到切点接近要求,但仍有偏差;交付要求精确时应检查实际切点并在剪辑中调整。
36
35
  - `overall_soundscape` 汇总环境声、物理音效和非语言人声,不重复对白;对白事件留在上面的主时间线。
37
36
  无非画内配乐时写 `non_diegetic_music: N/A`,不要留空让模型补乐——这一条有实测支撑,见
38
37
  [无对白镜](#无对白镜)。
@@ -40,35 +39,13 @@ non_diegetic_music: ...
40
39
 
41
40
  ## 无对白镜
42
41
 
43
- H3 画音同轨。实测下来两个通道的表现并不一样:**配乐通道不写就会被模型填上**,语音通道在本套件
44
- 的样本里没有出现过这种情况。下面两节按这个差别分开写,别把配乐那条的力度套到语音上。
45
- 三段结构和六段结构同此处理。
42
+ 在 `overall_soundscape` 写清全镜的环境声、音效或静默。
43
+ **`craft_default`**:优先描述需要的声轨;必要时可以补「无对白」,不因用了否定句判错。
44
+ 人物嘴部状态按实际表演写,不能把无对白一律改成全程闭嘴。
46
45
 
47
- **`craft_default`**:无对白镜的声音段正面写,不用 `no dialogue`、`无对白`、`不说话` 这类排除句
48
- 关闭语音通道。这条是写法约定,不是已验证的因果:本套件用 H3 实测过含 `No dialogue` 排除句的正文
49
- (文生 5 次、多槽参考 3 次,共 8 次),没有一次生成出台词,所以**不能说**排除句会招来对白。
50
- 选正面写法的理由是它同时交代了这一镜该有什么声音,排除句只说了不要什么。
51
-
52
- 正面写法有两处,缺一处都不算写满:
53
-
54
- - `overall_soundscape` 写这条声轨**由什么组成、覆盖多长**,只列已声明的 ambience 与音效。例如
55
- `overall_soundscape: A faint wind outside the window is the only sound present, continuous from the first frame to the last.`
56
- - 主时间线(`integrated_multimodal_description` 或 `detailed_description`)把「不说话」写成**可见状态**,
57
- 绑到本镜真正在场的人身上。它是表演描述,说的是画面里看得见的事。例如
58
- `Both keep their lips closed and their mouths still for the full shot.`
59
-
60
- ### 配乐通道必须显式关掉
61
-
62
- 这一条有实测支撑,且比上面一条重要得多:正文写了 `non_diegetic_music: N/A` 的 14 次生成没有一次
63
- 自带配乐;完全不提配乐的 3 次里有 2 次返回了自造的背景音乐(持续谐波音床,随镜头变化换和弦)。
64
- **所以 `non_diegetic_music` 这一行不能省。** 语音通道目前没有观察到同样的现象,配乐通道有。
65
-
66
- ### 时间线完整声明
67
-
68
- 主时间线闭合时只声明**本镜实际有的**声音层:无对白镜写
69
- `The audio timeline is complete after the listed ambience and effects.`,
70
- 把 `timed dialogue` 加进这句是有对白时才成立的写法。无对白镜枚举 `timed dialogue` 是一句与本镜事实
71
- 不符的话;实测未观察到它单独导致生成台词,但正文不该写与本镜不符的内容。
46
+ 无非画内配乐时保留 `non_diegetic_music: N/A`。小样本中省略这一层出现过额外配乐,
47
+ 显式写空可作为 H3 的默认写法,不保证所有生成都遵守。
48
+ 时间线总结只列本镜实际存在的声音层,不照抄包含对白的模板。
72
49
 
73
50
  ## 选哪一种模式
74
51
 
@@ -144,11 +121,8 @@ REF-STUDY-PLATE(顺序:3;用途:地理) -> <Picture 3>
144
121
 
145
122
  `用途` 决定这一张在正文里被要求保留什么,具体到哪几项由该槽位自己写下的 `控制` 范围决定。
146
123
 
147
- **实测口径**:模型响应的是 `控制` 这半句的肯定表述——正文明确写「保留起始构图、站位、机位高度」时,
148
- 构图会被准确带过来;只写 `fully_preserved` 或只写「不得控制构图」时,构图都不会被带过来。
149
- 所以**需要保住构图的槽位(典型是 `用途:起始帧`)必须在 `控制` 里点名构图**,漏写就拿不到这个锚点,
150
- 在别处补多少 `不得控制` 都无效。`不得控制` 照常写,但它是给 owner 与 reviewer 看的责任边界,
151
- 不是对模型的开关。
124
+ 需要保留构图时,在 `控制` 中点名构图、站位或机位高度。
125
+ `不得控制` 记录不应照搬的内容,生成后仍需检查实际参考影响,不能把文字声明当成模型保证。
152
126
 
153
127
  `起始帧` 只锚定开场构图与姿态,`身份` 锚定这个人跨镜不变的长相与体态(角色板同时固定本集造型时,
154
128
  `控制` 里会写明),
@@ -180,7 +154,7 @@ non_diegetic_music: N/A
180
154
  ```
181
155
 
182
156
  三张图各自只负责一件事:`<Picture 1>` 给构图,`<Picture 2>` 给身份,`<Picture 3>` 给地理。
183
- 把这条差异写进 `retention_analysis`,角色板就不会顺带决定构图,场景板也不会顺带决定长相。
157
+ 把这条差异写进 `retention_analysis`,生成后检查身份、构图与地理是否分别保留。
184
158
 
185
159
  ## 素材数量上限
186
160
 
@@ -221,8 +195,8 @@ full-reference:
221
195
 
222
196
  **`craft_default`**:按 [对白预算](performance-action-timing.md#对白预算) 先核对完整发声需要多久,
223
197
  再给主时间线安排开口、停顿与落点。分镜镜长够长但开口太晚,一样会赶词。
224
- 实测口径:H3 中文自然语速约 **4.1 字/秒**,容量约 `4.1 × 镜长`;超出后先赶语速(最快约 2.5 倍),
225
- 再超过约 9 字/秒就**静默截断**,接口不报错。别把"没报错"当成台词说完了。
198
+ H3 中文小样本可参考约 4.1 个可发声字/秒;用实际可发声区间估算,生成后核对台词完整性。
199
+ 样本出现过赶词与静默截断,不能据此确定通用截断阈值。
226
200
  口语语言、声线与语速描述放在 `<d>` 外;`<d>` 内只放语言标签和逐字台词,不放秒数或表演指令。
227
201
  稳定说话人用 `(S1)`、`(S2)`;full-reference 中说话人物同时写 `<Subject N> (Sx)`。
228
202
 
@@ -130,7 +130,7 @@ reviewer 结合完整故事义务决定,不能让未承担内容随更短提
130
130
 
131
131
  先把起点中的持续关系翻译成动作自由度:用正向状态写清贯穿本镜的支撑、固定、接触或空间关系,
132
132
  再只安排允许的身体/物件通道。关系变化必须来自已接受动作并落到已接受终点;否则按 `VID-01`
133
- 保持只读。可复制正文只写持续状态和允许动作,不用 `no/not/without + 动作` 复述边界。
133
+ 保持只读。可复制正文写清持续状态和允许动作,避免重复约束;必要的排除条件可以保留。
134
134
  成稿后在正文内直接改掉残留的这类否定结构,不另建检查步骤或报告。
135
135
 
136
136
  **`craft_default`**:一条运动提示词优先只有一个主导的戏剧变化,必要反应、环境与摄影
@@ -172,13 +172,10 @@ reviewer 结合完整故事义务决定,不能让未承担内容随更短提
172
172
  1. 按发生顺序列出本镜全部对白、VO、OS、必要非语言发声和 SFX;
173
173
  2. 每条台词同时标说话人、声源性质、口语语言和逐字文本,发声从原文首字开始、到末字结束;
174
174
  3. 所列事件之外只保留已声明的 ambience 或静默;相邻两句之间若有停顿,也明确回到这一底声;
175
- 4. 声明时间线完整并结束声音段落,不再列出或否定集合外的语言、语气或声源;这条声明只列本镜
176
- 实际有的层,不枚举本镜没有的层。
175
+ 4. 用实际存在的声音层总结时间线,避免模板与本镜内容矛盾。
177
176
 
178
- 本镜一句发声都没有时,第 1、2 步的列表为空,第 3、4 步照做,而且是这一镜声音写法的全部:正面写出
179
- 底声或静默的构成与覆盖区间,把「不说话」写成在场人物的可见状态(嘴唇闭合),完整性声明里不出现
180
- dialogue。不用 `no dialogue`、`无对白` 关闭语音通道:正面句同时说清了这一镜该有什么声音,排除句
181
- 只说了不要什么。非画内配乐层另外显式写空——这一层不写,实测会被模型补上一段自造配乐。
177
+ 无对白镜写清底声或静默及覆盖区间。必要的「无对白」声明可以保留,
178
+ 人物嘴部状态由本镜表演决定。非画内配乐的空形式按目标方言填写。
182
179
 
183
180
  确有叹气、吸气、笑声或重叠说话时,把它作为有来源的事件列入。声音不同轨时仍只写后期职责。
184
181
 
@@ -157,31 +157,17 @@
157
157
  8–10 秒(含句内停顿),即使写成「0–7 秒」也不成立。请求分镜按至少 11 秒重新安排,或按语义拆镜,
158
158
  待上游修订后同步本镜时长、正文时序和生成设置。不要用更快语速、截断标记或静默删词让算术看起来成立。
159
159
 
160
- ### 超出容量时会发生什么(H3 中文实测)
160
+ ### H3 中文的估算参考
161
161
 
162
- **`craft_default`**:本套件在 MiniMax H3 上测过同一镜从 7 字到 108 字、镜长 5–13 秒的表现,
163
- 分三段,可作为该模型的可覆盖估算(别的模型、别的语言要各自实测):
162
+ **`craft_default`**:一次同镜头、20 次生成的中文对照中,自然语速约 4.1 个可发声字/秒。
163
+ 短镜装入更多台词时先出现赶词,较长输入还出现未报错的截断;延长镜头改善了该组表现。
164
+ 样本不能确定通用截断阈值,其他声音、表演和模型需要另行校准。
164
165
 
165
- | 送入字数 ÷ 镜长 | 表现 |
166
- |---|---|
167
- | ≤ 约 4.1 字/秒 | 自然语速,完整 |
168
- | 约 4.1–9 字/秒 | **完整但明显赶**,最快到自然语速的 2.5 倍 |
169
- | > 约 9 字/秒 | **静默截断**:超出的部分根本不发声 |
166
+ 无录音时可用约 4.1 字/秒辅助估算实际可发声区间,并另计开口等待、停顿和顺序动作。
167
+ 这不是按整个镜长计算的保证容量;有音频时以实际发声区间为准,生成后回听是否完整。
170
168
 
171
- 两件事决定了为什么必须先做预算,而不是"生成出来再听":
172
-
173
- - **接口不会报错**。截断时任务照样返回成功、画面正常,只是台词后半段没有了
174
- (实测送 78 字只说了 46 字,送 108 字同样只说了 46 字)。文字审查看不出来,
175
- 秒段加总也仍然"正确"——**算术通过从来不是台词说得完的证据**。
176
- - **延长镜头确实管用**,这一条也实测过:37 字从 5 秒改到 10 秒,语速由 7.0 回到 4.3 字/秒;
177
- 50 字从 5 秒改到 13 秒,由 9.6 回到 4.2 字/秒,都恢复自然且完整。所以下面第 3 项不是敷衍的建议。
178
-
179
- 估算按 **容量 ≈ 4.1 × 镜长(秒)字**:5 秒镜约 20 字,10 秒镜约 40 字。
180
- 样本为同一镜 20 次生成(7/15/20/29/37/50/78/108 字,镜长 5/10/13 秒)。
181
-
182
- **这里的「字」是可发声字,不含标点。** 写作阶段 `duration_estimate.py` 报的
183
- `dialogue_characters` 是另一个口径(标点计入),拿它乘 4.1 会高估约两成;按秒核对容量时
184
- 以可发声字数为准。
169
+ 这里的字数不含标点。`duration_estimate.py` 的 `dialogue_characters` 包含标点,
170
+ 不能直接按这一语速换算发声时长。
185
171
 
186
172
  对白太长时选项:
187
173
 
@@ -244,13 +244,8 @@
244
244
  **`VID-22 · reviewed_invariant`**:交给执行端的那段文本里,只能出现要被拍出来的画面内容。
245
245
  任何描述“我们内部怎么做这件事”的流程词都不得进入。本条同样管关键帧的交付文本。
246
246
 
247
- 执行端把整段交付文本当作**画面描述**读取,它没有办法区分“这句是给人看的工艺备注”和
248
- “这句是要画的东西”,于是把文件名渲染成画面上的字符、把版本号读成画面里有两个版本的
249
- 同一个人。「把否定罗列里的名词当成应当出现的物件」这一条常被当作定论,但本套件的定向实测
250
- 没有复现:向 H3 送入含 `There is no red balloon anywhere in the room.` 的正文 3 次,没有一次
251
- 画出气球。下面的禁入清单按“交付文本只含交付内容”成立,不依赖这个未复现的机制。这类缺陷和动作超载不是同一种问题:
252
- 超载只是难以完成,工艺词进入交付文本会直接让画面长出没有人要过的东西,而且是最难在
253
- 文字审查中被发现的一类——它读起来“信息很全”。
247
+ 可复制正文只保留生成所需的画面、动作、声音和限制条件。
248
+ 内部流程备注留在正文外,避免与生成内容混淆;不假定出现某个词就一定被模型画出来。
254
249
 
255
250
  不得进入交付文本:
256
251
 
@@ -258,18 +253,10 @@
258
253
  2. 内部锁定标记、规则 ID、`hash`、字段路径与状态词(`accepted`、`stale`、`provisional`);
259
254
  3. 走位草图、示意图、分镜板格号的指代(“按草图第二格”“沿用上次走位”);
260
255
  4. 任务备注、重投说明、失败记录与待办(“这次重生成”“上次手部崩坏”“重点修手”);
261
- 5. 成段的否定罗列:把一长串“不要 X”堆在正文首尾。唯一允许的否定是项目确实没有可读
262
- 文字义务时的无文字要求(见第五节第 1 条)。
263
- 6. **把本文件的规则本身抄进去**。实测最常见的一种:
264
- `以竖屏当代写实动画化 SHOT-EP001-01,时长 2.5 秒。戏剧目的:冷开场。表演者:CHAR-JIANGCHEN。
265
- 只做常见的整体动作,不做精确拦截、不可见内部状态、否定式动作或三步以上双手编排。`
266
- ——镜头 ID、角色记录 ID、内部工艺词(“戏剧目的”“表演者”)与 `VID-21` 的禁令原文一次踩齐。
267
- 它读起来“很规范”,但整段没有一个可以画出来的名词:谁、在哪、什么光、手里有什么,一个都没有。
268
- 判据只有一句:**把这段文本交给一个没读过规格的人,他能不能画出一张确定的画**。
269
-
270
- 这些内容留在 Markdown 卡片、规格字段和审查记录里;交付文本只承接它们的**结果**:否定
271
- 意图改写成正向状态,参考图约束改写成可见事实,重投经验改写成本次要保持的状态,而不是
272
- 失败史。
256
+ 5. 与本镜无关或重复的否定罗列。必要的排除条件可以保留,文字限制须服从本镜的文字政策。
257
+ 6. 把规则说明原样抄入正文,却没有描述主体、环境和具体动作。
258
+
259
+ 将参考范围与修订要求落实为本镜需要的状态和动作;失败记录、规则 ID 和维护说明留在正文外。
273
260
 
274
261
  ### 合成反例与改写
275
262
 
@@ -21,9 +21,8 @@
21
21
  - 单镜直接按动作先后写。一次生成含多个镜头时才用 `镜头1:`、`镜头2:`;每个内部镜头都写
22
22
  “谁、在哪、做什么、镜头怎么动”。官方说明 2.0 响应镜头序号、不响应时间戳;秒数可作为内部预算,
23
23
  正文用动作顺序与相对停顿表达,不把逐秒时间码当作执行保证。
24
- **实测后果**:8 秒装两镜、按序号写,三次切点落在 5.21/5.38/5.54 秒,稳定偏后而不是均分。
25
- 也就是说 2.0 能给你两个镜头,但给不了你切在第几秒。**成员边界必须等于已接受时长时
26
- (`VID-13`),不要把容器交给 2.0**——改用会响应时间戳的方言,或一镜一生成。
24
+ 三次小样本的切点没有按两镜均分。需要精确成员边界时,评估独立生成再剪或其他方言,
25
+ 并核对实际输出;容器时长算术正确不代表切点准确。
27
26
  - 每个可辨对白事件都必须写成 `{角色用中文说:“逐字台词”}`,不能只留下普通引号或把说话要求散落
28
27
  在括号外;对白全文只用一种口语语言,专名除外,不在台词前增加外语暖场。
29
28
  - 每个音效事件写 `<声音>`,音乐写 `(音乐)`。字幕只有创作者明确开启时才用 `【字幕】`;默认禁字幕时正文
@@ -19,16 +19,40 @@
19
19
  ## 生成与参考
20
20
 
21
21
  - 短单镜按“主体 + 动作 + 场景 + 光色 + 运镜 + 风格 + 约束”写。
22
- - **单镜正文里用散文写的秒数不构成时间控制。** 「约第一秒八把眼镜戴回、约第三秒半开口」
23
- 这样的写法只对人有效:实测一条 9 秒单镜,动作顺序与终点都照做了,中途那个动作却被推到接近结尾,
24
- 说话时它还没发生。需要模型按秒排布时用下面的时间戳语法;散文秒数留给分镜与剪辑读,
25
- 它记录的是意图,不是给模型的指令。
26
- - 多镜或长叙事按 `镜头 1 [0:00–0:03]:` 顺序写;每段时间不重叠、不留无意空档,最后一个终点
27
- 等于总时长。官方时间戳以整数秒为单位;时间段塞入过多内容仍可能造成过度剪切或剧情遗漏。
28
- 实测切点精度约 ±0.4 秒(要求第 4 秒切,三次落在 3.71/4.29/4.46 秒),比 H3 松、比 2.0 可控。
29
- 时间戳服务于 2.5 的长叙事控制,不能反过来改写上游镜头状态链,也不是音节级同步保证。
22
+ - 单镜内部的动作时机先写清先后与触发;散文秒数不保证精确落点。
23
+ - 多镜或长叙事按 `镜头 1 [0:00–0:03]:` 写时间段,不重叠、不留无意空档,最后终点等于总时长。
24
+ 时间戳仍有生成偏差,不能作为音节同步或精确剪辑点的保证。
25
+
30
26
  - 每次使用素材时重复绑定 `人物 @图片1`、`@视频1 的表演节奏` 等具体职责。普通参考任务说明保留和
31
27
  借用什么,不让一个素材顺手控制身份、动作、构图等所有维度。
28
+ - 多镜容器使用一份参考清单,各镜的 `@图片N` 重新映射到这份清单,不能照抄独立生成时的编号。
29
+ - 多镜容器不自动保证跨镜一致性。一组对照没有改善,但容器的起始帧锚点也更少,不能归因于
30
+ 一次生成本身。按当前参考输入检查结果,不把该次观察变成禁用规则。
31
+ - 多镜容器包含切口;一镜到底是连续画面。按叙事目的选择,并保留生成后剪辑的余地。
32
+
33
+ ### 两端都锚:`用途:起始帧` 与 `用途:结束帧`
34
+
35
+ 接口提供 `first_frame` 与 `last_frame` 两个位置,各自只收一张。
36
+ 终点状态重要时可增加尾帧约束,仍需检查生成后的中间动作与节奏。
37
+
38
+ 按分镜已接受的终点制作尾帧并绑定 `用途:结束帧`;套件内生产入口见
39
+ `$short-drama-storyboard` 的「首尾成对」。未提供尾帧时,在正文中说明终点。
40
+
41
+ 两个帧位仍然各占一个图片序号,所以 `@图片N` 的编号按素材出现顺序连续往下数,不跳过它们。
42
+
43
+ 首尾帧与其他参考能否混用,按目标接口核对并验证。H3 的互斥规则不能直接套到 2.5,
44
+ 2.5 的素材角色共用一个 `content` 数组也不能证明任意组合都被接受。
45
+
46
+ ### 音色参考
47
+
48
+ 目标接口支持 `reference_audio` 时,可用已接受的角色参考音频辅助约束声音。
49
+ 参考可以来自预置音色合成或已授权录音,选型由视觉设定记录,生成后回听确认。
50
+
51
+ 当前 creator-first 的 `输入参考图` 只接受图片,封闭用途表也没有「音色」。
52
+ 不要在该字段塞入音频或写 `用途:音色`;这会被校验器拒绝。
53
+ 内置 adapter 可处理音频 role,但从五文档准备带音频的 job 尚无完整绑定路径。
54
+ 需要该能力时使用已支持音频绑定的外部执行流程,并记录角色、音频来源和实际 role;
55
+ 不能仅凭正文提到音频就声称已经绑定。
32
56
 
33
57
  ## 编辑与延长不是普通参考
34
58
 
@@ -51,7 +75,8 @@
51
75
  | `生成方式` | 这一镜送不送图 | `文生视频` / `图生视频` | 由「输入参考图」是否为空机械推出,`creator_markdown_check.py` 会核对 |
52
76
  | `任务类型` | 这一次是参考、编辑还是延长 | `reference` / `edit` / `extend` | 创作决定,本套件不推断 |
53
77
 
54
- 三种任务类型都是图生视频(都送素材),所以只看 `生成方式` 分不出它们;而 `edit` 与 `extend`
78
+ `edit` 与 `extend` 使用视频素材,不一定有图片;不能把“送素材”一律写成“图生视频”。
79
+ 现有五文档的图片字段不足以表达纯视频输入,准备 job 时需核对实际绑定。`edit` 与 `extend`
55
80
  在 API 上还各自要求 `ratio: adaptive`(`edit` 另要求 `duration: -1`),送错会被 2.5 判为任务
56
81
  类型不匹配。目标模型不是 2.5 时不写这一行——其余方言没有这个概念。
57
82
 
@@ -38,8 +38,8 @@
38
38
  | VID-19 | reviewed_invariant | When the creator profile declares required literal tokens for a delivery route, that route's delivery text preserves them byte-for-byte and outside the verbatim-dialogue fence. Paraphrase, translation, reordering, or omission is treated as a defect because a literal-matching surface has no reason to reject the rewritten text—the failure is silent rather than reported. The suite asserts no specific surface's behaviour, and whether a given result took the route is returned adherence, provable only by a bound production observation. Tokens declare a route and never substitute for the start state, action, or endpoint. Absent a declared token list the suite invents none; until the profile exposes a machine-readable list at a pinned field path, the reviewer cites the profile against the delivery text rather than claiming mechanical enforcement. |
39
39
  | VID-20 | reviewed_invariant | Packing routes change delivery granularity only, leaving shot boundaries, shot purpose, and per-shot reviewability intact. A single long-form generation carrying several accepted shots *is* a multi-shot container and is billed under VID-13 and VID-15; it introduces no separate accounting and no exemption from the contiguity, binding-chain, and scene-boundary constraints. A continuation route instead starts from a previously generated result, which is observation evidence and not an accepted artifact: the accepted shot start boundary stays the sole authority, and any claim about the observed state binds a production observation record or remains `unverified`. |
40
40
  | VID-21 | craft_default | When the project's accepted production profile has generated imagery carry the frame, actions are written as high-frequency, whole-body or single-limb movements common in everyday footage; precise interception, invisible internal states, negative actions, and three-or-more-step two-handed choreography are rewritten into equivalent common-action combinations, with the dramatic information carried by combination and timing. The rule is inactive for live action or an undeclared profile, and a rewrite may never change accepted shot boundaries, terminal states, or screenplay fact. |
41
- | VID-22 | reviewed_invariant | Copyable text carries only what will be filmed. IDs, workflow status, hashes, file paths and craft notes stay outside the prompt; negative action intent is rewritten as a visible positive state. Unless explicitly authored, the copyable prompt directly prohibits non-diegetic subtitles, captions and dialogue-text overlays at every moment rather than naming an abstract empty layer; this never erases an exact-readable in-scene text obligation, which stays a closed allow-list of exact glyph, language, carrier and placement. A prompt that only recites constraints renders as nothing. |
42
- | VID-23 | reviewed_invariant | When the target model is declared to generate audio in the same pass, the copyable body treats all allowed dialogue, VO, OS, non-verbal vocalization, SFX, ambience and silence as a closed event set. Each spoken event keeps its source, speaker, spoken language and verbatim text boundary; gaps return to declared ambience or silence instead of leaving an undefined vocal channel for the execution end to fill. |
41
+ | VID-22 | reviewed_invariant | Copyable text describes the intended image and action. IDs, workflow status, hashes and file paths stay outside it. Prefer observable states where they clarify execution; necessary negative constraints are allowed. Unless explicitly authored, prohibit non-diegetic subtitles, captions and dialogue overlays while preserving approved in-scene text and its exact content, carrier and placement. |
42
+ | VID-23 | reviewed_invariant | For models generating audio with video, specify the intended dialogue, VO, OS, vocalizations, effects, ambience and silence. Keep source, speaker, language and verbatim dialogue boundaries. Summaries must match the actual sound layers; follow model-specific music syntax without assuming missing layers will always be generated. |
43
43
  | VID-24 | structural_invariant | An image-to-video shot carries the storyboard's `REF-...` and `PLAN-...` slots unchanged, each with its 用途, so the motion document itself answers which start frame and which identity, geography, and prop pictures this shot sends — and, for `PLAN-...`, in which order the creator attaches them. The reference mode — first frame, first and last frame, or multi-slot reference — is read from that 用途 combination and translated by the matched model dialect; where a model makes frame and reference conditioning mutually exclusive, the start frame joins the reference group rather than splitting the request. |
44
44
  | VID-25 | structural_invariant | Quoted Chinese in a copyable body is delivered, not authored. Every run of four or more Han characters inside a `<d>` tag or quotation marks resolves, ignoring punctuation and spacing, to text that already exists in `剧本.md`, `视觉设定.md` or `分镜.md`. A line the shot wishes the character had said belongs upstream in the screenplay, not in the prompt. Runs of three characters or fewer are in-frame labels and interjections far more often than lines, so they stay with review rather than the mechanical check. |
45
45
 
@@ -82,10 +82,8 @@ python3 "{技能目录}/scripts/duration_estimate.py" "剧集/EP001/剧本.md" -
82
82
  要保留原有块 ID 就加 `--previous-index <同一路径>`,要从头重编号就加 `--no-previous`;
83
83
  或者干脆回到第一条命令另取一个临时路径。
84
84
 
85
- **字数单位不要混用**:`duration_estimate.py` 报的 `dialogue_characters` **把标点计入**
86
- (`关窗,水进来了!` 记 8 而不是 6,这是它的既定口径,有测试固定)。而视频提示词阶段
87
- 「对白预算」给出的那个「约 4.1 字/秒」是按**可发声字**(不含标点)实测的。两个数直接相乘
88
- 会高估两成左右——要按秒核对容量时,用可发声字数自己数一遍,别拿 `dialogue_characters` 去乘。
85
+ 估时前区分计数口径:`dialogue_characters` 包含标点,视频提示词中的参考语速按可发声字数计算。
86
+ 按语速换算时排除标点,并按实际读法处理数字和缩写;不把两个计数混用。
89
87
 
90
88
  估算是参考,不是门禁;没有语速或动作段速率时只报告可数事实,不猜秒数。但任务已给目标时长时,
91
89
  写作者仍须用真实朗读和动作通读判断能否容纳,并直接压缩重复节拍;“不能精确估秒”不是忽略目标的理由。