@gitruck/cli 1.3.3 → 1.3.5

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 (52) hide show
  1. package/AGENT.md +53 -28
  2. package/CHANGELOG.md +30 -0
  3. package/README.en.md +50 -50
  4. package/README.md +50 -50
  5. package/assets/composite-kit/kit.css +57 -0
  6. package/assets/composite-kit/kit.js +246 -0
  7. package/assets/composite-kit/stage.html +265 -0
  8. package/assets/readme/wordmark.svg +6 -6
  9. package/contracts/README.md +16 -16
  10. package/contracts/gsap-emit-v1-evidence.md +200 -196
  11. package/contracts/gsap-emit-v1.md +163 -163
  12. package/contracts/handoff-contracts.json +10 -10
  13. package/dist/index.js +445 -291
  14. package/docs/development.en.md +47 -47
  15. package/docs/development.md +47 -47
  16. package/docs/reference.en.md +77 -11
  17. package/docs/reference.md +88 -22
  18. package/docs/workflow.en.md +72 -72
  19. package/docs/workflow.md +72 -72
  20. package/package.json +2 -2
  21. package/skills/gtrk-ai-drama/SKILL.md +10 -10
  22. package/skills/gtrk-ai-drama/references/sparse-key-scenes.md +38 -38
  23. package/skills/gtrk-ai-drama/scripts/validate-storyboard.mjs +119 -119
  24. package/skills/gtrk-composite/SKILL.md +194 -0
  25. package/skills/gtrk-cover/SKILL.md +3 -3
  26. package/skills/gtrk-cover/references/layout-recipes.md +337 -337
  27. package/skills/gtrk-cover/references/prompt-templates.md +119 -119
  28. package/skills/gtrk-food-recap/SKILL.md +9 -9
  29. package/skills/gtrk-live-slicing/SKILL.md +75 -25
  30. package/skills/gtrk-long2short/SKILL.md +11 -2
  31. package/skills/gtrk-matrix/SKILL.md +20 -10
  32. package/skills/gtrk-mg/SKILL.md +391 -391
  33. package/skills/gtrk-music-visualizer/SKILL.md +3 -3
  34. package/skills/gtrk-narration/SKILL.md +23 -23
  35. package/skills/gtrk-oralcut/SKILL.md +5 -4
  36. package/skills/gtrk-splitter/SKILL.md +298 -298
  37. package/skills/gtrk-splitter/references/example-visual-split.json +645 -645
  38. package/skills/gtrk-splitter/references/example-visual-split.md +439 -439
  39. package/skills/gtrk-splitter/references/field-schema.md +171 -171
  40. package/skills/gtrk-style-maker/SKILL.md +1 -1
  41. package/skills/gtrk-style-maker/references/ammo.md +16 -16
  42. package/skills/gtrk-style-maker/references/contracts-ref.md +9 -9
  43. package/skills/gtrk-style-maker/references/seeds/README.md +4 -4
  44. package/skills/gtrk-style-maker/references/seeds/seed-ecom-home-goods.md +37 -37
  45. package/skills/gtrk-style-maker/references/seeds/seed-psych-humanities.md +35 -35
  46. package/skills/gtrk-talking-head/SKILL.md +15 -7
  47. package/skills/gtrk-tools/SKILL.md +3 -2
  48. package/skills/gtrk-transcript/SKILL.md +4 -4
  49. package/skills/gtrk-transcript/agents/openai.yaml +4 -4
  50. package/skills/gtrk-travel-recap/SKILL.md +52 -52
  51. package/skills/gtrk-vlog-docu/SKILL.md +6 -6
  52. package/skills/gtrk-voiceover/SKILL.md +2 -2
@@ -1,119 +1,119 @@
1
- # 文生图 Prompt 模板(框架版)
2
-
3
- **铁律**:
4
- - **不**在 Prompt 里要求生图模型渲染中文字。汉字由**阶段二的 H5 工作台**贴字(用户用浏览器交互完成),图里**只留"气息性的软留白"**——不必做硬留白约束。
5
- - 总是输出**英文主版 + 中文辅版**两套。
6
- - 三种尺寸(16:9 / 4:3 / 3:4)**各出一套**,构图差异显式化:
7
- - **16:9**:横版,主体居中,两侧有气息的空间
8
- - **4:3**:横版饱满,主体可以顶到三边,对角留气口
9
- - **3:4**:竖版,主体在中段,上下舒展,便于"上下分飞"排字
10
- - 每套 Prompt 各占一段,不要三尺寸塞一个段落。
11
- - 每套都塞满"风格锚点 + 色板 + 材质"三件套,不要只写主体。
12
-
13
- **风格注入槽位**:框架对审美零预设,风格三件套里的「风格」与「材质」是两个注入槽位,值由**栏目封面风格资产**供给;无资产时用中性默认值。
14
-
15
- | 槽位 | 含义 | 中性默认值 | 栏目资产供值示例(示例、非默认) |
16
- |---|---|---|---|
17
- | 【风格锚点 A】 | 画风定调串 | cinematic illustration, clean composition | anime illustration style, 2D cel-shaded |
18
- | 【材质串 T】 | 质感/印刷肌理串 | subtle film grain | film grain, paper texture, halftone dots |
19
-
20
- ---
21
-
22
- ## 英文主版骨架(Midjourney / SD / Flux / Nano Banana)
23
-
24
- ```
25
- [主体 S 描写], [容器意象 C 融合描写], [情绪氛围 M],
26
- 【风格锚点 A】,
27
- [光线 L], [镜头 Cam], [色板 P],
28
- 【材质串 T】,
29
- composition: [留字位描述 R],
30
- negative: photorealistic face, 3D render, glossy skin, ugly anatomy, watermark, text, chinese characters, blurry
31
- --ar [比例] --style raw --stylize 250
32
- ```
33
-
34
- (负面提示里与画风相斥的项目也随栏目资产调整,如写实系栏目不排除 photorealistic。)
35
-
36
- ### 槽位填法
37
-
38
- | 槽位 | 填法 | 范例 |
39
- |---|---|---|
40
- | S | 角色外形 + 表情 + 姿态;或抽象意象描写 | a solitary young woman with silver hair, downcast eyes, wearing a dark coat / a lone astronaut silhouette |
41
- | C | 容器意象的视觉化,叠在主体身上/周围 | overlaid with translucent neural network patterns glitching / surrounded by colliding light particles forming a supernova |
42
- | M | 情绪形容 | quiet despair yet faint hope, suffocating tenderness, cold clinical detachment |
43
- | L | 光线 | rim light from behind, single hard light from upper left, god rays through dust |
44
- | Cam | 镜头 | close-up portrait, medium shot, wide cinematic shot, dutch angle |
45
- | P | 色板(由栏目风格资产的色板表供英译) | 见下「色板英译」 |
46
- | R | 留字位 | 软建议而非硬约束。例如 "edges with softer visual weight for typography overlay" / "central subject with breathing room on sides" |
47
- | 比例 | --ar 参数 | `--ar 16:9` / `--ar 4:3` / `--ar 3:4` |
48
-
49
- ### 色板英译
50
-
51
- 色板英译由**栏目风格资产的色板表自带**(每个色板代号配一条英文描述串);无资产时用中性描述(如 muted cool palette with a single warm accent)。格式示例:
52
-
53
- ```
54
- | 代号 | 英文描述 |
55
- |---|---|
56
- | P-x | steel blue and bone white, single warm amber accent |
57
- ```
58
-
59
- ### 完整范例(16:9,"过拟合"主题)——某栏目实例(风格锚点/色板为该栏目资产值)
60
-
61
- ```
62
- a lone young woman gazing away, her silhouette gradually dissolving into
63
- translucent glitching neural network lines, looping patterns repeating
64
- over her shoulders and hair, quiet despair with a distant trace of
65
- awakening, anime illustration style, 2D cel-shaded with thick line
66
- art, rim light from behind suggesting hidden warmth, medium close-up
67
- slightly off-center, steel blue and bone white palette with a single
68
- amber accent, film grain, paper texture, halftone noise on background,
69
- composition: subject centered with breathing room on both sides,
70
- edges with softer visual weight so typography can overlay later,
71
- negative: photorealistic face, 3D render, glossy skin, ugly anatomy,
72
- watermark, text, chinese characters, blurry, extra fingers, deformed hand
73
- --ar 16:9 --style raw --stylize 250
74
- ```
75
-
76
- ---
77
-
78
- ## 中文辅版骨架(即梦 / 可灵 / 通义万相 / 文心)
79
-
80
- 中文模型对自然语言段落式 Prompt 响应更好,不要生搬英文结构。
81
-
82
- ```
83
- 【画面主体】一位/一件/一个……,[外形 + 神态 + 姿势]。
84
- 【容器意象】画面中融合 [容器的视觉化描述],与主体叠压 / 环绕 / 映射在背景。
85
- 【情绪氛围】整体气氛 [情绪形容]。
86
- 【风格】[风格锚点 A 的中文表述],不要真人写真,不要 3D 渲染(排除项随栏目画风调整)。
87
- 【光线】[光线描述]。
88
- 【镜头】[镜头角度与景别]。
89
- 【色彩】主色 [主色],辅色 [辅色],点缀 [强调色](取值由栏目色板表供给)。
90
- 【质感】[材质串 T 的中文表述]。
91
- 【构图】主体 [位置];[明确留白区域],该区域绝对不要出现任何元素。
92
- 【排除】不要文字,不要中文字符,不要水印,不要 3D 光泽皮肤,不要多余手指。
93
- 【比例】[16:9 / 4:3 / 3:4]。
94
- ```
95
-
96
- ---
97
-
98
- ## 模型差异化调参
99
-
100
- | 平台 | 独有参数 / 注意事项 |
101
- |---|---|
102
- | Midjourney v7 | 加 `--style raw --stylize 150~400`;需要一致风格时加 `--sref <URL>` 引用一张基准图 |
103
- | Flux.1 (dev/pro) | 去掉 `--ar` 用 `aspect ratio: 16:9` 自然语言;风格锚点要更具体 |
104
- | Stable Diffusion XL | 用 `(keyword:1.3)` 给权重;负面提示单独输入 |
105
- | Nano Banana | 接受长段描述,可直接贴中文辅版;支持参考图输入 |
106
- | 即梦 / 可灵 | 参考图 + 中文辅版效果最佳,英文 Prompt 表现弱 |
107
- | 通义万相 | 对"不要 XX"这类排除描述响应很好,用中文辅版 |
108
-
109
- ---
110
-
111
- ## 常见 Prompt 失败与补救
112
-
113
- | 症状 | 补救 |
114
- |---|---|
115
- | 模型硬要画中文字,全是乱码 | 负面提示加 `text, chinese characters, letters, signs`,主提示加 `no text, empty space for text overlay` |
116
- | 脸的质感偏离栏目画风(如插画系被画成真人磨皮) | 主提示前置栏目的【风格锚点 A】并显式排除对立画风(如 `NOT photorealistic`);负面加对立项(如 `3D render, photograph, realistic skin`) |
117
- | 主体被容器意象吞掉,看不清 | 调整描述比例:"subject clearly visible, container motif as translucent overlay at 30% opacity" |
118
- | 太满没留字位 | 显式写 "composition: LEFT THIRD completely empty, solid color, no elements";可先用构图图参考(scribble / sketch)约束 |
119
- | 色板没出效果 | 把色板 HEX 值写进 Prompt:`dominant colors #XXXXXX and #XXXXXX`;或附参考色板图。精确色 token 由栏目风格资产自带,写进 Prompt 用 HEX |
1
+ # 文生图 Prompt 模板(框架版)
2
+
3
+ **铁律**:
4
+ - **不**在 Prompt 里要求生图模型渲染中文字。汉字由**阶段二的 H5 工作台**贴字(用户用浏览器交互完成),图里**只留"气息性的软留白"**——不必做硬留白约束。
5
+ - 总是输出**英文主版 + 中文辅版**两套。
6
+ - 三种尺寸(16:9 / 4:3 / 3:4)**各出一套**,构图差异显式化:
7
+ - **16:9**:横版,主体居中,两侧有气息的空间
8
+ - **4:3**:横版饱满,主体可以顶到三边,对角留气口
9
+ - **3:4**:竖版,主体在中段,上下舒展,便于"上下分飞"排字
10
+ - 每套 Prompt 各占一段,不要三尺寸塞一个段落。
11
+ - 每套都塞满"风格锚点 + 色板 + 材质"三件套,不要只写主体。
12
+
13
+ **风格注入槽位**:框架对审美零预设,风格三件套里的「风格」与「材质」是两个注入槽位,值由**栏目封面风格资产**供给;无资产时用中性默认值。
14
+
15
+ | 槽位 | 含义 | 中性默认值 | 栏目资产供值示例(示例、非默认) |
16
+ |---|---|---|---|
17
+ | 【风格锚点 A】 | 画风定调串 | cinematic illustration, clean composition | anime illustration style, 2D cel-shaded |
18
+ | 【材质串 T】 | 质感/印刷肌理串 | subtle film grain | film grain, paper texture, halftone dots |
19
+
20
+ ---
21
+
22
+ ## 英文主版骨架(Midjourney / SD / Flux / Nano Banana)
23
+
24
+ ```
25
+ [主体 S 描写], [容器意象 C 融合描写], [情绪氛围 M],
26
+ 【风格锚点 A】,
27
+ [光线 L], [镜头 Cam], [色板 P],
28
+ 【材质串 T】,
29
+ composition: [留字位描述 R],
30
+ negative: photorealistic face, 3D render, glossy skin, ugly anatomy, watermark, text, chinese characters, blurry
31
+ --ar [比例] --style raw --stylize 250
32
+ ```
33
+
34
+ (负面提示里与画风相斥的项目也随栏目资产调整,如写实系栏目不排除 photorealistic。)
35
+
36
+ ### 槽位填法
37
+
38
+ | 槽位 | 填法 | 范例 |
39
+ |---|---|---|
40
+ | S | 角色外形 + 表情 + 姿态;或抽象意象描写 | a solitary young woman with silver hair, downcast eyes, wearing a dark coat / a lone astronaut silhouette |
41
+ | C | 容器意象的视觉化,叠在主体身上/周围 | overlaid with translucent neural network patterns glitching / surrounded by colliding light particles forming a supernova |
42
+ | M | 情绪形容 | quiet despair yet faint hope, suffocating tenderness, cold clinical detachment |
43
+ | L | 光线 | rim light from behind, single hard light from upper left, god rays through dust |
44
+ | Cam | 镜头 | close-up portrait, medium shot, wide cinematic shot, dutch angle |
45
+ | P | 色板(由栏目风格资产的色板表供英译) | 见下「色板英译」 |
46
+ | R | 留字位 | 软建议而非硬约束。例如 "edges with softer visual weight for typography overlay" / "central subject with breathing room on sides" |
47
+ | 比例 | --ar 参数 | `--ar 16:9` / `--ar 4:3` / `--ar 3:4` |
48
+
49
+ ### 色板英译
50
+
51
+ 色板英译由**栏目风格资产的色板表自带**(每个色板代号配一条英文描述串);无资产时用中性描述(如 muted cool palette with a single warm accent)。格式示例:
52
+
53
+ ```
54
+ | 代号 | 英文描述 |
55
+ |---|---|
56
+ | P-x | steel blue and bone white, single warm amber accent |
57
+ ```
58
+
59
+ ### 完整范例(16:9,"过拟合"主题)——某栏目实例(风格锚点/色板为该栏目资产值)
60
+
61
+ ```
62
+ a lone young woman gazing away, her silhouette gradually dissolving into
63
+ translucent glitching neural network lines, looping patterns repeating
64
+ over her shoulders and hair, quiet despair with a distant trace of
65
+ awakening, anime illustration style, 2D cel-shaded with thick line
66
+ art, rim light from behind suggesting hidden warmth, medium close-up
67
+ slightly off-center, steel blue and bone white palette with a single
68
+ amber accent, film grain, paper texture, halftone noise on background,
69
+ composition: subject centered with breathing room on both sides,
70
+ edges with softer visual weight so typography can overlay later,
71
+ negative: photorealistic face, 3D render, glossy skin, ugly anatomy,
72
+ watermark, text, chinese characters, blurry, extra fingers, deformed hand
73
+ --ar 16:9 --style raw --stylize 250
74
+ ```
75
+
76
+ ---
77
+
78
+ ## 中文辅版骨架(即梦 / 可灵 / 通义万相 / 文心)
79
+
80
+ 中文模型对自然语言段落式 Prompt 响应更好,不要生搬英文结构。
81
+
82
+ ```
83
+ 【画面主体】一位/一件/一个……,[外形 + 神态 + 姿势]。
84
+ 【容器意象】画面中融合 [容器的视觉化描述],与主体叠压 / 环绕 / 映射在背景。
85
+ 【情绪氛围】整体气氛 [情绪形容]。
86
+ 【风格】[风格锚点 A 的中文表述],不要真人写真,不要 3D 渲染(排除项随栏目画风调整)。
87
+ 【光线】[光线描述]。
88
+ 【镜头】[镜头角度与景别]。
89
+ 【色彩】主色 [主色],辅色 [辅色],点缀 [强调色](取值由栏目色板表供给)。
90
+ 【质感】[材质串 T 的中文表述]。
91
+ 【构图】主体 [位置];[明确留白区域],该区域绝对不要出现任何元素。
92
+ 【排除】不要文字,不要中文字符,不要水印,不要 3D 光泽皮肤,不要多余手指。
93
+ 【比例】[16:9 / 4:3 / 3:4]。
94
+ ```
95
+
96
+ ---
97
+
98
+ ## 模型差异化调参
99
+
100
+ | 平台 | 独有参数 / 注意事项 |
101
+ |---|---|
102
+ | Midjourney v7 | 加 `--style raw --stylize 150~400`;需要一致风格时加 `--sref <URL>` 引用一张基准图 |
103
+ | Flux.1 (dev/pro) | 去掉 `--ar` 用 `aspect ratio: 16:9` 自然语言;风格锚点要更具体 |
104
+ | Stable Diffusion XL | 用 `(keyword:1.3)` 给权重;负面提示单独输入 |
105
+ | Nano Banana | 接受长段描述,可直接贴中文辅版;支持参考图输入 |
106
+ | 即梦 / 可灵 | 参考图 + 中文辅版效果最佳,英文 Prompt 表现弱 |
107
+ | 通义万相 | 对"不要 XX"这类排除描述响应很好,用中文辅版 |
108
+
109
+ ---
110
+
111
+ ## 常见 Prompt 失败与补救
112
+
113
+ | 症状 | 补救 |
114
+ |---|---|
115
+ | 模型硬要画中文字,全是乱码 | 负面提示加 `text, chinese characters, letters, signs`,主提示加 `no text, empty space for text overlay` |
116
+ | 脸的质感偏离栏目画风(如插画系被画成真人磨皮) | 主提示前置栏目的【风格锚点 A】并显式排除对立画风(如 `NOT photorealistic`);负面加对立项(如 `3D render, photograph, realistic skin`) |
117
+ | 主体被容器意象吞掉,看不清 | 调整描述比例:"subject clearly visible, container motif as translucent overlay at 30% opacity" |
118
+ | 太满没留字位 | 显式写 "composition: LEFT THIRD completely empty, solid color, no elements";可先用构图图参考(scribble / sketch)约束 |
119
+ | 色板没出效果 | 把色板 HEX 值写进 Prompt:`dominant colors #XXXXXX and #XXXXXX`;或附参考色板图。精确色 token 由栏目风格资产自带,写进 Prompt 用 HEX |
@@ -17,9 +17,9 @@ description: 美食解说垂类图纸(解说链示例)——把探店/密着
17
17
  | 形态 | 输入 | 时序档位(正本 §三) |
18
18
  |---|---|---|
19
19
  | **探店 · 密着** | 一条纪实长片(二创;带字幕文件的直接当台词锚,无则转写)或自拍探店素材夹 | 软窗档缺省:进店→点单→出品→吃→人的故事,流程线单调、允许蒙太奇跳 |
20
- | **做饭流程** | 一条做饭记录或素材夹 | 软窗档且**步骤线忠实**:工序 MUST NOT 乱序重排 |
20
+ | **做饭流程** | 一条做饭记录或素材夹 | 软窗档且**步骤线忠实**:工序 MUST NOT 乱序重排 |
21
21
 
22
- 稿源与声音基座随正本开工问询(AI 代写/自备稿;TTS/自己念)。**推荐面(公约 §三‴)**:问答收口时可问一句「要不要看看第三方 skill?」;题材命中场景触发词才定向推荐,读取 `gtrk skills recommend --scene <id> --json`;用户拒绝后不执行推荐动作。**MUST NOT 执行任何网络下载**;二创长片是第三方作品,版权与平台二创规则责任归用户。
22
+ 稿源与声音基座随正本开工问询(AI 代写/自备稿;TTS/自己念)。**推荐面(公约 §三‴)**:问答收口时可问一句「要不要看看第三方 skill?」;题材命中场景触发词才定向推荐,读取 `gtrk skills recommend --scene <id> --json`;用户拒绝后不执行推荐动作。**MUST NOT 执行任何网络下载**;二创长片是第三方作品,版权与平台二创规则责任归用户。
23
23
 
24
24
  ## 二、美食要素层(写稿规约,叠在通用框架层之上)
25
25
 
@@ -32,12 +32,12 @@ description: 美食解说垂类图纸(解说链示例)——把探店/密着
32
32
  禁拟声堆砌与「入口即化」式空转(文风铁律照打);
33
33
  - **数字如实**:分量/价格/营业时间只用素材里可见可听的,MUST NOT 编造;
34
34
  **时效丑话**:价格与营业信息随拍摄时点变动,成片引用时提醒用户自行核对;
35
- - **背景检索建议**(旅拍 §三 通用框架层同款):对店名/地段/菜系关键词
35
+ - **背景检索建议**(旅拍 §三 通用框架层同款):对店名/地段/菜系关键词
36
36
  做一轮背景检索补写稿语料(店家来历、当地饮食脉络),有检索能力就做、没有不强求;
37
37
  检索所得与素材互证后才入稿、档案标注来源;
38
38
  - **做饭流程线**:步骤忠实、关键动作给特写位(刀工/火候/翻面)、成品定格收束。
39
39
 
40
- ## 二′、L1 看点 rubric · 画面投影版(供 `--highlight-weight` 使用)
40
+ ## 二′、L1 看点 rubric · 画面投影版(供 `--highlight-weight` 使用)
41
41
 
42
42
  `highlight` 是**镜头看点分**——服务端 VLM 对着一帧画面打 0–100。喂给它的评分准则
43
43
  (`highlight_rubric`)按垂类走,美食这一档取下面这份:
@@ -58,7 +58,7 @@ description: 美食解说垂类图纸(解说链示例)——把探店/密着
58
58
  >
59
59
  > 两侧的分工是:**画面 rubric 管「这一帧值不值得看」,写稿管「这件事值不值得讲」。**
60
60
 
61
- **传入方式**:把上面代码块**原样**存成工程目录下的
61
+ **传入方式**:把上面代码块**原样**存成工程目录下的
62
62
  `highlight-rubric.txt`,理解那一步带上它——
63
63
 
64
64
  ```bash
@@ -93,17 +93,17 @@ BGM 检索词照公约 §三′ 内容驱动(这家店的气质:地域/年
93
93
  带上 `--highlight-rubric @<工程>/highlight-rubric.txt`**——不带就是按服务端缺省准则打分,
94
94
  美食这一档的分量对比/价格实物/名场面动作全不算数;两样都漏则全部候选中性、权重白传,lay 会就此告警)。
95
95
  BGM 选带人声歌曲(`audio_type:"song"`)时 **MUST 下载 `accompaniment_url` 伴奏版上轨**,
96
- 不得直接用 `download_url` 原曲——人声与解说配音会打架。换已上轨的 BGM 文件时
96
+ 不得直接用 `download_url` 原曲——人声与解说配音会打架。换已上轨的 BGM 文件时
97
97
  注意:`audio lay` 同源幂等按文件路径判定,**换不同文件不会替换旧轨**,须先剥旧 BGM 轨再 lay。
98
- 质检按公约「三级收敛」执行:L1 结构自检恒开;L2 画音对齐在落轨前可选运行;L3 渲后终检随本来就要交付的本地渲附带,不为质检单独逼渲。跑过的质检结论随交付呈现。
98
+ 质检按公约「三级收敛」执行:L1 结构自检恒开;L2 画音对齐在落轨前可选运行;L3 渲后终检随本来就要交付的本地渲附带,不为质检单独逼渲。跑过的质检结论随交付呈现。
99
99
  字卡走 MG 临场泛化(公约 §三):店名条/菜名条/价格条为主,风格锚在这家店的气质上。
100
100
 
101
101
  ## 五、检查点①(拍板停一次;铺画面前另有一次用量确认)
102
102
 
103
103
  稿件(含引用窗口)+ 出处对照表(自备稿时)+ 画幅 + 音色(试听)+ BGM(试听)+ 字幕样式,
104
- 一屏一次拍板;在确认前不发起计费动作。
104
+ 一屏一次拍板;在确认前不发起计费动作。
105
105
 
106
- > 本地素材的编排缺省走云端并按编排量计费。`matrix lay` 跑前必须报告预估用量,取得同意后才能带 `--yes`。
106
+ > 本地素材的编排缺省走云端并按编排量计费。`matrix lay` 跑前必须报告预估用量,取得同意后才能带 `--yes`。
107
107
  > 详见 `gtrk-narration` 正本 §六 的 agent 纪律(先报用量拿同意,再带 `--yes`)。
108
108
 
109
109
  ## 六、个性化出路(垂类示例定位)
@@ -5,7 +5,7 @@ description: 直播切片图纸——把一场数小时的直播回放,拆成
5
5
 
6
6
  # gtrk-live-slicing(直播切片 · 组合成片图纸)
7
7
 
8
- 把**一场直播回放**(1–4 小时)变成**一批可编辑的逐 clip 粗剪工程**:四问定策略 → 分段 → 逐段选段 → **选题清单必停** → 出工程。
8
+ 把**一场直播回放**(1–4 小时)变成**一批可编辑的逐 clip 粗剪工程**:五问定策略 → 分段 → 逐段选段 → **选题清单必停** → 出工程。
9
9
 
10
10
  > **定位**:第三张 **structure 级组合图纸**(前两张=`gtrk-travel-recap` 旅拍解说、`gtrk-vlog-docu` Vlog 纪实)。不新增任何命令,只编排既有零件。参数细节以 `gtrk-long2short` 与 `--help` 为准,**本图纸引用不复制**;**编排次序、分段规约、检查点**以本图纸为准。**CLI 是手,你是脑。**
11
11
 
@@ -17,17 +17,18 @@ description: 直播切片图纸——把一场数小时的直播回放,拆成
17
17
 
18
18
  - ❌ 不去水印、❌ 不去烧录贴片、❌ 不做画面清理美化、❌ 不调色不裁切
19
19
  - 源片长什么样,切片就长什么样。要不要动那些元素,是**用户在客户端二次编辑时的决定**,不是你的。
20
- - 分段所需的时间轴裁切**必须用 `ffmpeg -c copy` 流拷贝**(不重编码)。
20
+ - 分段所需的时间轴裁切**必须用 `ffmpeg -c copy` 流拷贝**(不重编码)。
21
+ - **工程层设置不算像素改动**:变速倍率(`--speed-factor`)、运镜关键帧(`--camera-move`)、客户端字幕轨(`gtrk subtitle lay`)、画布模糊底(`gtrk project background`)都写在工程里、可在客户端撤销,源片本身一个像素不动——与本条不冲突。
21
22
 
22
23
  > **用户只要能直接发的成片、不打算再剪?** 那不是本图纸的活,转 `gtrk tool video_long2short_pro`(精剪,整片上传、云端渲染、计费约两倍)。判断句同 `gtrk-long2short`:**「剪完还要不要再动?」要动 → 留这儿;不动 → 转精剪。**
23
24
 
24
- ## 一、输入契约与开工四问
25
+ ## 一、输入契约与开工五问
25
26
 
26
27
  **输入**:一条直播回放的**本地文件**(`.ts` / `.mp4` 等均可)。
27
28
 
28
29
  **MUST NOT 执行录制或下载**——平台动作与版权责任归用户。用户给什么文件就用什么。
29
30
 
30
- 开工前先答四问,答案决定后面全部策略:
31
+ 开工前先答五问,答案决定后面全部策略:
31
32
 
32
33
  | # | 问 | 怎么取证 | 决定什么 |
33
34
  |---|---|---|---|
@@ -35,28 +36,30 @@ description: 直播切片图纸——把一场数小时的直播回放,拆成
35
36
  | ② | 画面形态是否单一 | **问用户**——全程主播口播位?还是含实景走播/换机位? | **哪些段开分屏**(§四) |
36
37
  | ③ | 有无烧录贴片 | 抽 2–3 帧看(开头/中段/尾段各一) | **交付时要如实告知什么**(§五) |
37
38
  | ④ | 入选切片要不要叠 MG 动画 | **问用户**——缺省不叠(粗剪定位) | **选题清单敲定后是否走 MG 车道**(§七) |
39
+ | ⑤ | 入选切片要不要加运镜(推拉镜头) | **问用户**——缺省不加 | **逐段提交是否带 `--camera-move`**(§七「运镜」) |
38
40
 
39
- > **②④ MUST 问用户、MUST NOT 代猜。** ②猜错的代价是白跑一轮分屏(几十分钟 + 积分);
40
- > ④缺省是**不叠**——用户没要就零 MG 动作,MUST NOT 硬塞。
41
+ > **②④⑤ MUST 问用户、MUST NOT 代猜。** ②猜错的代价是白跑一轮分屏(几十分钟 + 积分);
42
+ > ④缺省是**不叠**——用户没要就零 MG 动作,MUST NOT 硬塞;⑤缺省是**不加**——用户没要就全程不带 `--camera-move`、不再追问。
43
+ > ⑤ 必须在提交前问:运镜是云端任务参数,交上去之后改不了(没入选的 clip 带了运镜也无害,随 clip 一起丢弃)。
41
44
  > **③ 的取证目的只是「告知」,不是「处置」**——看到贴片不要动手,见定位铁律。
42
45
  > ② 与 `/gtrk-long2short`、`/gtrk-tools` 精剪开工的「多人同框」一问同口径:是就开、不确定按否;
43
46
  > 分屏单段最长 8 秒、每条最多 3 处。
44
47
 
45
- > **推荐面(公约 §三‴)**:问答收口时可问一句「要不要看看第三方 skill?」;题材命中场景触发词才定向推荐,读取 `gtrk skills recommend --scene <id> --json`;用户拒绝后不执行推荐动作。
48
+ > **推荐面(公约 §三‴)**:问答收口时可问一句「要不要看看第三方 skill?」;题材命中场景触发词才定向推荐,读取 `gtrk skills recommend --scene <id> --json`;用户拒绝后不执行推荐动作。
46
49
 
47
50
  ## 二、分段规约(本图纸的骨干)
48
51
 
49
- ### 两道闸
52
+ ### 两道闸
50
53
 
51
54
  | | 闸 | 值 | 命中时的表现 |
52
55
  |---|---|---|---|
53
56
  | **闸一** | 服务端媒体探测层全局业务限制 | **2 小时** | **建单期直接拒**:`6019 媒体时长无效或超过业务限制`。**任务不创建、不计费** |
54
57
  | **闸二** | CLI 轮询墙钟 | **60 分钟** | 轮询超时报错(任务在云端照常跑完,可取回) |
55
58
 
56
- **处理耗时 / 源时长比值按分屏与否分档**:
59
+ **处理耗时 / 源时长比值按分屏与否分档**:
57
60
 
58
- - **不开分屏**:墙钟压力较小;
59
- - **开分屏**:处理耗时明显增加,优先按较短段切分。
61
+ - **不开分屏**:墙钟压力较小;
62
+ - **开分屏**:处理耗时明显增加,优先按较短段切分。
60
63
 
61
64
  ⇒ **单段 MUST ≤ 2h(硬拒线),开分屏时 SHOULD ≤ 48min(墙钟线)。**
62
65
 
@@ -75,7 +78,7 @@ ffmpeg -ss 3600 -t 2400 -i "<直播回放>" -c copy "<工作区>/inputs/<名>_se
75
78
 
76
79
  ### ⚠️ 两条必须在动手前告诉用户
77
80
 
78
- 1. **切段是新文件,工程指向它、不指向原片。** 逐 clip 工程的 `materials[].path` 实指切段;用户删掉切段文件,工程就素材脱机。让他把 `inputs/` 留着。
81
+ 1. **切段是新文件,工程指向它、不指向原片。** 逐 clip 工程的 `materials[].path` 实指切段;用户删掉切段文件,工程就素材脱机。让他把 `inputs/` 留着。
79
82
  2. **超过 2 小时整条提交会被直接拒**,不是慢、是拒。好消息是零计费(不进队列),但会白抽白传一个大文件——所以先分段。
80
83
 
81
84
  ### 超时兜底
@@ -96,7 +99,7 @@ gtrk oralcut-result <task_id> --out <目录> # task_id 在产物根 task.json
96
99
 
97
100
  | 模式 | 停点 |
98
101
  |---|---|
99
- | **快速成片** | 四问 + 分段方案确认 → 逐段跑 → **【必停】选题清单** → 确认后一路出工程 |
102
+ | **快速成片** | 五问 + 分段方案确认 → 逐段跑 → **【必停】选题清单** → 确认后一路出工程 |
100
103
  | **逐步推进模式** | 上述基础上每步都停(分段方案 / 逐段选段结果 / 逐条工程产物) |
101
104
 
102
105
  两模式共用同一套分段规约与参数配方,**差别只在停几次,不在停不停**。
@@ -121,7 +124,7 @@ gtrk oralcut-result <task_id> --out <目录> # task_id 在产物根 task.json
121
124
  > **判断分屏是否真的生效,MUST 看产物证据,MUST NOT 按「没报错」推定。**
122
125
  > 证据 = `report.json` 的 `split_manifest` 条数 + 毛片旁 `split_screen/` 目录里的素材(可抽帧看)。
123
126
 
124
- **分屏在子轨、主轨原片可回退**:分屏素材落在独立子轨上叠放,
127
+ **分屏在子轨、主轨原片可回退**:分屏素材落在独立子轨上叠放,
125
128
  主轨的原片全程完整在场——用户对某段分屏不满意时,在客户端隐藏/删除子轨该段即回退原片,
126
129
  零重跑。交付时把这条回退动线告诉用户。⚠️ 连带边界:本地 `gtrk render` 是快照渲染、
127
130
  **不合成子轨**——渲出来没有分屏画面;要分屏成片走客户端出片(或剪映导出)。
@@ -129,9 +132,11 @@ gtrk oralcut-result <task_id> --out <目录> # task_id 在产物根 task.json
129
132
  其余参数配方:
130
133
 
131
134
  - `--language` **必填**,缺失在上传前就报错(省一次白上传)
132
- - 竖屏直播源通常**无需转比例**,`--output-size` 缺省即可
135
+ - 竖屏直播源通常**无需转比例**,`--output-size` 缺省即可
133
136
  - `--duration-pref` / `--max-clip-sec` 按投放平台口径给档
134
- - `--subtitle-out` 产逐 clip **独立 `.srt`**(不烧进画面——符合粗剪工程定位)
137
+ - `--subtitle-out` 产逐 clip **独立 `.srt`**(不烧进画面)——**可选**,给要拿去 PR 精修的用户;客户端用户走 §七 的字幕上轨
138
+ - `--speed-factor` **只在用户主动要求时加**(见 §七「调速」);开工问询里不问速度
139
+ - `--camera-move` 按开工⑤:用户要运镜才带(见 §七「运镜」),各段一致
135
140
 
136
141
  > 完整参数表在 `gtrk-long2short`,本节只给直播场景的**配方差异**,不搬手册。
137
142
 
@@ -145,7 +150,7 @@ gtrk oralcut-result <task_id> --out <目录> # task_id 在产物根 task.json
145
150
  | **时效信息贴片**(价格 / 截止日期) | 切片再发布时是**过期信息** | 额外点一句,让用户自行判断是否适合再发 |
146
151
  | **无叠加** | — | 不必提 |
147
152
 
148
- > 贴片可能贯穿全场且与切片主题无关,也可能包含会过期的价格或日期;交付时按实际画面如实告知。
153
+ > 贴片可能贯穿全场且与切片主题无关,也可能包含会过期的价格或日期;交付时按实际画面如实告知。
149
154
 
150
155
  **这一节不含任何去除动作。** 用户问「能不能去掉」→ 告诉他这超出本图纸射程,可在客户端二次编辑时自行处理。
151
156
 
@@ -158,9 +163,9 @@ gtrk oralcut-result <task_id> --out <目录> # task_id 在产物根 task.json
158
163
  - **格式**:B站式 `.xml` 是 `<d p="秒数,…">用户:文本</d>`,**`p` 首字段即距开播秒数 = 源片时码**;平台导出 `.txt` 通常是时钟列。归一化成「秒 + 文本 + 用户」三元组即可。
159
164
  - **两个信号**:**复述密度**(同一句话被多个用户在短窗口内重复——观众自发复述的往往就是金句)、**刷屏密度**(互动符号瞬时峰值)。
160
165
 
161
- ### ⚠️ 别高估它:弹幕对「选哪些段」通常只是辅助
166
+ ### ⚠️ 别高估它:弹幕对「选哪些段」通常只是辅助
162
167
 
163
- **结论**:弹幕主要用于验证选段、提取观众原句标题和微调边界,不是必需输入:
168
+ **结论**:弹幕主要用于验证选段、提取观众原句标题和微调边界,不是必需输入:
164
169
 
165
170
  - ❌ **不要**为了「更准地选段」去要用户补弹幕(没有就没有,主干照跑)
166
171
  - ✅ 它真正剩下的价值是 **取候选标题原句**:观众自发复述出来的那句话(如「大脑不接受否定」被 15 人复述),
@@ -180,9 +185,54 @@ gtrk oralcut-result <task_id> --out <目录> # task_id 在产物根 task.json
180
185
  看板点名的三件,都不碰源片:
181
186
 
182
187
  - **标题钩子**:文本建议。有弹幕时优先取观众复述的原句。
183
- - **字幕**:`--subtitle-out` 已产独立 `.srt`,交用户在客户端决定烧不烧。
188
+ - **字幕**:见下「字幕上轨」——选题确认后对入选 clip **缺省做**。
189
+ - **模糊底**:见下「模糊底」——源片与画布横竖不一致时,对入选 clip **缺省做**。
184
190
  - **封面**:走 `/gtrk-cover`(另出图,不改片)。
185
191
 
192
+ ### 字幕上轨(缺省做,只对入选 clip)
193
+
194
+ 选题清单敲定之后,对**每条入选 clip** 跑一次(用户明确说不要字幕才跳过;没入选的不做):
195
+
196
+ ```bash
197
+ gtrk subtitle lay --gtrk "<产物根>/clip{i}/gtrk/<该 clip 的 .gtrk>" --transcript "<产物根>/json/transcript.json" --language <该段提交时的源语种>
198
+ ```
199
+
200
+ - `json/transcript.json` 是该段任务落下的**整片**转写,一份服务该段全部 clip;分了几段就各用各段产物根里的那份。
201
+ - `--language` 跟该段 `gtrk long2short` 的 `--language` 一致(英文直播就 `en-US`),否则云端会按中文断句。
202
+ - 交付时说清三件事:① 字幕在**客户端字幕轨**上,可换样式、可整轨删,不烧进画面;② 云端产出的剪映 / PR 工程是在上字幕**之前**生成的,**不含**这条字幕轨,要带字幕的剪映草稿请从客户端导出;③ 用了 `--subtitle-file` 的段,字幕按行出现、词级时间是近似值(`clips.md` 会提示)。
203
+ 打开 PR 工程时的重链提醒照 `gtrk-oralcut`「回给用户(三端打开方式)」PR/FCP 条,引用不复制。
204
+ - 该段产物根里**没有** `json/transcript.json`(老服务端或下载失败,CLI 日志会说):如实告诉用户这一段没法自动上字幕,其余段照常。**MUST NOT** 拿弹幕或别的文本凑一份当字幕来源(见 §六 红线)。
205
+
206
+ ### 模糊底(横竖互转时缺省做,只对入选 clip)
207
+
208
+ 横屏直播切成竖屏(缺省 9:16)时,粗剪工程上下是黑边。选题清单敲定之后,对每条**入选** clip 判断源片朝向与该段画布朝向:
209
+
210
+ - 源片几何:该段 `gtrk long2short` 日志里的源分辨率,或 `ffprobe -v error -select_streams v:0 -show_entries stream=width,height -of csv=p=0 "<源片>"`;
211
+ - 画布:该段提交时的 `--output-size`(没传就是 9:16 竖屏)。
212
+
213
+ **朝向不一致**(横屏源进竖屏画布,或反之)⇒ 缺省跑(用户说要保持黑边才跳过):
214
+
215
+ ```bash
216
+ gtrk project background --gtrk "<产物根>/clip{i}/gtrk/<该 clip 的 .gtrk>" --blur
217
+ ```
218
+
219
+ **朝向一致**(竖屏直播进竖屏画布)⇒ **不跑**。
220
+
221
+ 交付时说清:模糊底写在**主轨每个片段**上(片段自己画面的模糊副本铺满垫底),客户端里可逐片段或多选批量改成黑底 / 纯色;从客户端导出的剪映草稿**带**模糊底,Pr 工程降级为纯黑,本地 `gtrk render` 带;云端随 `gtrk long2short` 产出的剪映 / PR 工程生成在它之前、**不带**。强度缺省 200,用户嫌太虚或不够虚可加 `--intensity <0–1000 整数>` 重跑(幂等覆盖)。零计费、不访问云端。(只想要旧的整片画布设置:`--scope canvas`。)
222
+
223
+ ### 运镜(仅当开工⑤用户要了才做)
224
+
225
+ ⑤答「要」⇒ 逐段提交都带 `--camera-move`(细项如幅度、概率不另开旗标,确有需要走 `--params-json '{"camera_move":{"enable":true,"amplitude":0.1}}'`)。云端按与精剪同一套调度给主轨片段写推 / 拉镜头关键帧,零渲染、不加价。
226
+
227
+ 交付时说清:
228
+ - 运镜写在工程里:**客户端与剪映**打开可见、可在关键帧面板改或删;**本地 `gtrk render` 与 PR 工程看不到运镜**(按静态画面出片),要成片带运镜请从客户端或剪映导出;
229
+ - `clips.md` 每条的「运镜 N 处」是实际写入数,**0 处属正常**(按概率抽取);有「未能加运镜的切片」小节就点名告知;
230
+ - 之后用 `gtrk patch` 裁剪 / 切分带运镜的片段,关键帧会跟着调整,不用手改。
231
+
232
+ ### 调速(只在用户主动要求时)
233
+
234
+ 用户说「切片都加速到 1.2 倍」这类话时,逐段提交带 `--speed-factor 1.2`(范围 `0.5–2.0`,保音高)。倍率写进逐 clip 工程,客户端 / 剪映 / PR 打开都按倍率播放,可在客户端逐条改回;交付时把这句告诉用户,`clips.md` 里若有「未能变速的切片」小节就点名告知。用户没提就**全程不加、不追问**;要超出 `0.5–2.0` 的倍率,告诉他在客户端对具体片段拖边变速。
235
+
186
236
  ### MG 动画(仅当开工④用户要了才做)
187
237
 
188
238
  - **时机**:选题清单敲定**之后**、只对**入选** clip 做——没入选的切片不白做颗粒。
@@ -200,18 +250,18 @@ gtrk oralcut-result <task_id> --out <目录> # task_id 在产物根 task.json
200
250
  ## 八、计费与预算速查(跑前转述给用户)
201
251
 
202
252
  - 计费基 = **上传物音频流时长**(≈源片时长),**2 积分/分钟**。
203
- - **分段不改总量**:切段总时长≈原片,所以分不分段花的钱差不多,分段买的是「能跑通」和「粒度更细的选题清单」。费用以实时价格和音频时长为准。
253
+ - **分段不改总量**:切段总时长≈原片,所以分不分段花的钱差不多,分段买的是「能跑通」和「粒度更细的选题清单」。费用以实时价格和音频时长为准。
204
254
  - **建单期被拒是零计费的**(如超 2h 硬闸)——试探性提交不会烧钱,但会白传一个大文件。
205
- - **任务失败按服务端回执处理**;只有回执明确退款时才向用户说明可重跑。
255
+ - **任务失败按服务端回执处理**;只有回执明确退款时才向用户说明可重跑。
206
256
  - 运行时 CLI 自动查实时价格并打印,**把提示原样转述**;长片先向用户确认再跑。
207
257
 
208
258
  ## 九、排错
209
259
 
210
- - **`超过最大重试次数`** → 这句是**通用兜底文案**;优先检查外部 ASR 查询接口状态。
260
+ - **`超过最大重试次数`** → 这句是**通用兜底文案**;优先检查外部 ASR 查询接口状态。
211
261
  - **判据**:失败很快(1–2 分钟内就报,而正常 40 分钟段要跑 4–20 分钟)⇒ 卡在开头的转写阶段。
212
- - **处置:先原样重跑一次**。若仍失败,说明故障可能不是瞬时的。
262
+ - **处置:先原样重跑一次**。若仍失败,说明故障可能不是瞬时的。
213
263
  - **重试仍失败时,别死磕同一段**:换个切点重切该时段(边界挪几分钟)、或先跑其他段把能出的先出了,
214
- 把这一段单独挂起问客服/换时间再试。**MUST NOT 反复重跑**——每次都会重新等待,是否退款以回执为准。
264
+ 把这一段单独挂起问客服/换时间再试。**MUST NOT 反复重跑**——每次都会重新等待,是否退款以回执为准。
215
265
  - **别改参数、别一味切更短**——那会掩盖问题;先确认是不是 ASR 侧的事。
216
266
  - 分段跑的好处在这里体现:**只需处理失败的那一段**,其余段的成果不受影响。
217
267
  - **`6019 媒体时长无效或超过业务限制`** → 单次提交超服务端 2 小时硬闸。**分段**,别重试。
@@ -22,7 +22,7 @@ description: 长剪短闭环——把一条长视频(课程/直播/播客/访
22
22
  > **⚠️ 开工再问一句:素材是不是多人同框(对谈 / 访谈 / 多人直播)?** 与 `/gtrk-tools` 精剪同一问、同一措辞,
23
23
  > 和上一问**一起问、一次答完**,MUST NOT 代猜。
24
24
  > 答「是」⇒ 带 `--split-screen`,**并在同一句里告知**:本地会改传一份压过的 720p 代理(否则只传抽出的音频、
25
- > 毛片不出本地),处理时间明显变长;分屏素材落毛片旁 `split_screen/`。
25
+ > 毛片不出本地),处理时间明显变长;分屏素材落毛片旁 `split_screen/`。
26
26
  > 答「否 / 不确定」⇒ 不带(「不确定」按「否」)。分屏是点缀:单段最长 8 秒、每条最多 3 处,落在子轨、
27
27
  > 不合心意在客户端隐藏该段即回退原片。
28
28
 
@@ -58,6 +58,8 @@ gtrk long2short "D:/毛片/对谈.mp4" --language zh-CN --split-screen --split-o
58
58
  | `--subtitle-file <path>` | **现成单语字幕**(.srt/.ass)作转写来源,替代云端 ASR(用户手里有片源字幕/人工校对稿时用,省一次识别)。切点精度降为**字幕行边界**;双语/多层 .ass 会被拒;与 stt 类参数互斥 |
59
59
  | `--subtitle-out` | 逐 clip 另产**单语 .srt 字幕**(按目标画布档位智能拆行:横屏约 20 字/行、竖屏约 13 字/行),落 `clip{i}/srt/` |
60
60
  | `--keep-punctuation` | 字幕保留全部标点。缺省按统一口径去标点:逗号句号→空格、`?!` 等保留 |
61
+ | `--speed-factor <n>` | 整体调速 `0.5–2.0`(保音高)。倍率**写进逐 clip 工程**(每个片段带 `speed`),客户端 / 剪映 / PR 都按倍率播放、可在客户端改回;云端不渲染、不加价。**只在用户主动要求时加**;更高倍率请在客户端对具体片段拖边变速 |
62
+ | `--camera-move` | 运镜:云端按与精剪同一套调度给主轨片段写推 / 拉镜头关键帧(概率抽取、推拉交替、幅度克制),零渲染、不加价。客户端与剪映可见可改;本地 `gtrk render` 与 PR 工程不呈现。**缺省不加**,直播切片图纸开工会问;细项走 `--params-json` |
61
63
  | `--output-size <s>` | 画布 `9:16|16:9|1:1` 或 `WxH`(缺省 9:16 竖版) |
62
64
  | `-f, --formats <list>` | 三方格式,缺省 `gtrk,jianying,xml`(云端逐 clip 直产;gtrk 恒有) |
63
65
  | `--jianying-draft-dir <dir>` | 剪映草稿根(或 `auto`);各 clip 草稿落 `<草稿根>/<产物根名>_clip{i}` |
@@ -71,11 +73,18 @@ gtrk long2short "D:/毛片/对谈.mp4" --language zh-CN --split-screen --split-o
71
73
  切段用流拷贝、秒级完成、不重编码:`ffmpeg -ss 0 -t 2400 -i "<源片>" -c copy "<源片名>_seg01.mp4"`。
72
74
  各段产出的 clip 事后汇总成一张选题清单即可。**分段是常态动作,不是降级方案**。
73
75
  - 云端处理时长随片长涨(ASR+选段),CLI 轮询墙钟 60 分钟;超时不丢——产物根 `task.json` 里有 `task_id` 可恢复。
74
- 40 分钟/段是稳妥起步值;若分屏段仍接近墙钟上限,再继续缩短分段。
76
+ 40 分钟/段是稳妥起步值;若分屏段仍接近墙钟上限,再继续缩短分段。
75
77
 
76
78
  ## 产物(跑完把这些讲给用户)
77
79
 
78
80
  - 产物根 `<毛片名>-long2short/`:`report.json`(选段报告)+ `result.json` + 逐 clip 子目录 `clip0/ clip1/ …`(各含 `gtrk/` 客户端工程、`jianying/` 草稿、`xml/` PR 工程;开了 `--subtitle-out` 另有 `srt/clip{i}.srt` 单语字幕)。
81
+ 打开 PR 工程时的重链提醒照 `gtrk-oralcut`「回给用户(三端打开方式)」PR/FCP 条,引用不复制。
82
+ - 产物根 `json/transcript.json`:**整片**源时基转写(一份服务全部 clip)。要给某条 clip 上客户端字幕轨(可换样式、可整轨删、不烧进画面):
83
+ `gtrk subtitle lay --gtrk <产物根>/clip{i}/gtrk/clip{i}_project.gtrk --transcript <产物根>/json/transcript.json --language <源语种>`
84
+ (clip 工程文件名以 `clip{i}/gtrk/` 下实际文件为准)。上完字幕的是**客户端工程**;云端早先产出的剪映 / PR 工程不含这条字幕轨,要带字幕的剪映草稿请从客户端导出。老服务端没有这份文件时,CLI 会提示「无法自动上字幕」。
85
+ - 横屏源进竖屏画布(缺省 9:16)时工程上下是黑边;要模糊底:`gtrk project background --gtrk <产物根>/clip{i}/gtrk/clip{i}_project.gtrk --blur`——给该 clip **主轨每个片段**写模糊底(片段级底板),客户端里可逐片段或多选批量改成黑底 / 纯色;从客户端导出的剪映草稿带模糊底、Pr 工程降级为纯黑、本地 `gtrk render` 带模糊底;云端随长剪短产出的剪映 / PR 工程生成在它之前、不带。零计费。只想要旧的整片画布设置:加 `--scope canvas`。
86
+ - 用了 `--camera-move` 时:`clips.md` 每条时长后标「运镜 N 处」(0 处属正常);若有 clip 未能加运镜,`clips.md` 会单列「未能加运镜的切片」;告诉用户运镜在客户端 / 剪映里看,本地渲染与 PR 看不到。之后用 `gtrk patch` 裁剪 / 切分带运镜的片段,关键帧会跟着调整。
87
+ - 用了 `--speed-factor` 时:`clips.md` 的时长是**变速后**的时长并标注倍率;若有 clip 未能变速,`clips.md` 会单列「未能变速的切片」,如实告诉用户。
79
88
  - **先看 `clips.md`**(产物根,人读总览):一张表列全部切片的标题/时长/评分/一句话简介 —— 用它给用户复述「出了哪几条、各讲什么、建议先精修哪条」,别让用户自己开工程猜。逐条的入选理由、跳剪说明、高光词在 `clip{i}/clip.md`。
80
89
  - 开了 `--split-screen` 时:**分屏素材落在毛片旁的 `split_screen/` 子目录**(工程素材路径指向那里,别移动/删除,移动了工程会缺素材)——这点要提前告知用户。
81
90
  - 剪映草稿已拷入草稿根(给了 `--jianying-draft-dir` 时),剪映里直接可见 `<产物根名>_clip{i}`。**判据**:草稿目录里必须是 `draft_content.json` + `draft_meta_info.json` 两个精确文件名(云端产物侧的 `clip{i}_` 前缀在拷进草稿根这一跳被剥掉,产物目录 `clip{i}/jianying/` 里保留带前缀的归档原名)。CLI 日志按实际齐全条数报「N/M 条两件套齐全」,不齐的记进 `result.json` 的 `errors`、该 clip 的 `jianyingDraftPath` 为 `null`。