@gitruck/cli 1.3.7 → 1.3.8
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.
- package/AGENT.md +587 -564
- package/CHANGELOG.md +23 -0
- package/README.en.md +51 -50
- package/README.md +51 -50
- package/assets/composite-kit/kit.css +57 -57
- package/assets/composite-kit/kit.js +248 -246
- package/assets/composite-kit/stage.html +14 -2
- package/dist/index.js +359 -324
- package/docs/reference.en.md +40 -12
- package/docs/reference.md +43 -14
- package/package.json +79 -79
- package/skills/gtrk-composite/SKILL.md +217 -194
- package/skills/gtrk-food-recap/SKILL.md +10 -10
- package/skills/gtrk-live-slicing/SKILL.md +10 -4
- package/skills/gtrk-long2short/SKILL.md +3 -0
- package/skills/gtrk-matrix/SKILL.md +5 -0
- package/skills/gtrk-mg/SKILL.md +13 -6
- package/skills/gtrk-narration/SKILL.md +29 -25
- package/skills/gtrk-ref-reading/SKILL.md +145 -0
- package/skills/gtrk-ref-reading/references/close-reading-checklist.md +47 -0
- package/skills/gtrk-ref-reading/references/landing-templates.md +95 -0
- package/skills/gtrk-style-maker/SKILL.md +8 -1
- package/skills/gtrk-talking-head/SKILL.md +207 -205
- package/skills/gtrk-tools/SKILL.md +1 -1
- package/skills/gtrk-travel-recap/SKILL.md +59 -51
- package/skills/gtrk-vlog-docu/SKILL.md +8 -0
- package/skills/gtrk-voiceover/SKILL.md +9 -4
|
@@ -1,194 +1,217 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: gtrk-composite
|
|
3
|
-
description: 合成层包装(合成颗粒)——粗剪、B-roll、字幕都定了之后,把选定时间窗做成「合成」:一段时间内的整个画面由一颗代码颗粒接管(画中画拼贴、逐句换画面、对照并排、并列卡片、字幕排版),讲者与 B-roll 作为槽位画进去。三种入口:整片铺满 / 让 AI 判定哪里值得做 / 用户指定区间;候选窗口显示在客户端大纲的 CP 行。当用户想「做合成 / 合成层 / 整片做一下合成包装 / 哪里适合做合成 / 这段做成画中画拼贴 / 11 秒到 32 秒做个合成 / 逐句换画面 / 把字幕排进画面里」时使用本 skill,驱动 `gtrk composite`(plan → review → scaffold → build → lint → lay → bake),别手搓 HTML 铺进工程。
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
# 合成层包装(gtrk-composite)
|
|
7
|
-
|
|
8
|
-
把粗剪工程里选定的时间窗做成**合成颗粒**:在这段时间里,整个画面由一颗代码颗粒接管——它决定画面怎么排、何时换、字幕怎么出;讲者与 B-roll 作为**槽位**由客户端把视频画进去。**CLI 是手(定窗口、解析、校验、机检、铺轨),你是脑(判断这段该怎么排、选哪张画面、写场景)。**
|
|
9
|
-
|
|
10
|
-
> 本 skill 已含你需要的全部信息。命令参数以 `gtrk composite --help` 为准。规则正本:合成颗粒契约在 infra `composite-particle-profile`;`struct_meta.composite` 写方契约在本仓 `composite-command`。
|
|
11
|
-
|
|
12
|
-
## 你在成片 SOP 的哪一步
|
|
13
|
-
|
|
14
|
-
最后一层:**粗剪 → 拆分 → B-roll → MG → BGM → 字幕 → 合成 → 出片**。放在最后,是因为这时粗剪、B-roll、字幕都已定,合成颗粒的输入最稳定。但不写死:上游再改,对应颗粒在客户端变「需重渲」,重跑那几颗即可。
|
|
15
|
-
|
|
16
|
-
前置:
|
|
17
|
-
- 有粗剪工程(`<工程>/gtrk/project.gtrk`)和口播转写(`transcript/transcript.json`,新版 `gtrk oralcut` 恒出)。合成按**句**定窗口,没有转写就做不了。
|
|
18
|
-
- 字幕最好已上(`gtrk subtitle lay`):合成颗粒可以接管字幕、自己排。
|
|
19
|
-
- `gtrk composite --help` 能跑(CLI 版本含本命令族)。
|
|
20
|
-
|
|
21
|
-
⚠️ **出片口径要先说清**:合成颗粒出片靠本机烘焙(`gtrk composite bake`,见「出片:烘焙」一节)——首次要装烘焙浏览器(约 110 MB),某颗烘焙失败时那一段按粗剪出画。用户要交付成片的话,这件事 MUST 在开工时告诉他。
|
|
22
|
-
|
|
23
|
-
## 入口:三选一(用户已说明就不再问)
|
|
24
|
-
|
|
25
|
-
| 用户说 | 入口 | 命令 |
|
|
26
|
-
|---|---|---|
|
|
27
|
-
| 「整片做一下合成」 | 整片铺满 | `gtrk composite plan --project <工程> --mode full` |
|
|
28
|
-
| 「看看哪里适合做」「帮我挑」 | AI 判定 | `gtrk composite plan --project <工程> --mode auto [--density 0.25]` |
|
|
29
|
-
| 「11 秒到 32 秒做一个」「u0004 到 u0009 那段」 | 用户指定 | `gtrk composite plan --project <工程> --range 11,32 --range u0020-u0024` |
|
|
30
|
-
|
|
31
|
-
- **整片铺满**:窗口首尾相接覆盖全片,单窗 5–25 秒、在句界(有拆分派单时在 beat 边界)断开。
|
|
32
|
-
- **AI 判定**:按信号打分(几秒内多个 B-roll 短镜头、列举、对照 / 转折、具体数字、章节转折、开场 / 收尾),总时长不超过密度上限(缺省全片 25%)。超出的记「超出上限」,**列出来让用户挑,不静默丢**。信号只是起点——你要读审稿稿里每个窗口「这段在说什么」,判断它是否真值得做,不值得的建议用户不要。
|
|
33
|
-
- **用户指定**:区间吸附到句界、投影到帧格,回执里写明两端各挪了多少毫秒;直接记为已采纳。
|
|
34
|
-
|
|
35
|
-
`plan` 把候选写进工程的 `struct_meta.composite`(只动这一个键),另出审稿稿 `<工程>/composite/plan.md`。重跑时已做好的窗口原样保留、用户不要的区间不再提。
|
|
36
|
-
|
|
37
|
-
### 检查点①(必停):审窗口
|
|
38
|
-
|
|
39
|
-
请用户在客户端**重新载入工程**后看大纲的 **CP 行**:虚线框 = 待审,虚线框加浅底 = 已采纳,悬停能看理由与建议。同时把审稿稿的表格摘给他。他在对话里说哪些要、哪些不要、哪些调起止,你用 `review` 写回:
|
|
40
|
-
|
|
41
|
-
```bash
|
|
42
|
-
gtrk composite review --project <工程> --approve W01,W03 --reject W02 --adjust W04=80,90.9 --add 140,150
|
|
43
|
-
```
|
|
44
|
-
|
|
45
|
-
`--approve-all` 采纳全部待审。没有采纳的窗口,后面的步骤一概不做。
|
|
46
|
-
|
|
47
|
-
## 逐窗口:设计说明 → 选片 → 场景 → 构建 → 机检
|
|
48
|
-
|
|
49
|
-
```bash
|
|
50
|
-
gtrk composite scaffold --project <工程> # 为已采纳窗口落场景骨架 composite/scenes/cp-wNN.html
|
|
51
|
-
# 与上下文 cp-wNN.context.md(这段在说什么、窗口内片段、已登记素材)
|
|
52
|
-
```
|
|
53
|
-
|
|
54
|
-
对每个窗口:
|
|
55
|
-
|
|
56
|
-
1. **先读上下文、写设计说明**(写进对话给用户看,或写在场景文件开头的注释里):
|
|
57
|
-
- 这段话分几拍?每拍对应哪句、哪个关键词?
|
|
58
|
-
- 每拍画面是什么?为什么是一画 / 多画?(见下节规则 1)
|
|
59
|
-
- 字幕怎么处理(接管后自己排 / 屏上已写着同一句时隐藏)。
|
|
60
|
-
2. **选片**(需要 `own` 槽位时):
|
|
61
|
-
|
|
62
|
-
```bash
|
|
63
|
-
gtrk composite shots --project <工程> --material <素材 id 或文件> --around 246 --span 20
|
|
64
|
-
```
|
|
65
|
-
|
|
66
|
-
看联系表(每格左上是源时间码)、切点列表、黑边实测。入点与在场时长 MUST 落在一个镜头内(规则 5),`data-crop` 按黑边实测取(规则 3)。工程里还没登记的素材写进 `<工程>/composite/materials.json`(`[{ "id", "path", "duration" }]`),铺轨时一并登记。
|
|
67
|
-
3. **写场景**(格式见「场景写法速查」)。
|
|
68
|
-
4. **构建**:`gtrk composite build --project <工程> [--only cp-w03]`——按 infra 规则解析(帧格窗口、轨身份、锚点、字幕输入、`inputs_hash`)并校验,产 `<工程>/gtrk/assets/composite/<id>.html`。回执里每颗应为 `fresh`。
|
|
69
|
-
5. **机检**:`gtrk composite lint --project <工程> --stills 26,86.6`——静态校验 +
|
|
70
|
-
- 退出码 3 = 本机找不到 Chrome / Edge,**排版没机检**:照实告诉用户,用静帧(或客户端预览)人眼逐颗查穿模,MUST NOT 当成通过。
|
|
71
|
-
|
|
72
|
-
### 检查点②:看静帧
|
|
73
|
-
|
|
74
|
-
每颗至少给用户 2–3 张关键时刻的静帧(换画面前后、拆分并排时、结尾)。快速成片模式下全部窗口做完后一次给。用户点头再铺:
|
|
75
|
-
|
|
76
|
-
```bash
|
|
77
|
-
gtrk composite lay --project <工程> # 全量;--only cp-w03 只替换这颗
|
|
78
|
-
```
|
|
79
|
-
|
|
80
|
-
铺完请用户重新载入工程:CP 行上的提案块变成实色合成块,预览即合成效果。
|
|
81
|
-
|
|
82
|
-
## 出片:烘焙
|
|
83
|
-
|
|
84
|
-
铺完、用户确认后、出片前,先在本机把合成烤成视频(`gtrk render` / `gtrk project export` 也会自动先烤,单独跑便于先看结果):
|
|
85
|
-
|
|
86
|
-
```bash
|
|
87
|
-
gtrk deps install --browser # 首次:装钉定版本的烘焙浏览器(约 110 MB)。MUST 先告诉用户再装
|
|
88
|
-
gtrk composite bake --project <工程> # 全部合成;--only cp-w03 只烤这颗
|
|
89
|
-
```
|
|
90
|
-
|
|
91
|
-
- **缓存即复用**:没改过的颗粒二次运行全部命中;改了场景、素材文件、上游时间线或帧率才重烤。
|
|
92
|
-
- **没装钉定浏览器**也能烤(退回本机 Chrome / Edge,截图模式,更慢)——回执会提示,**MUST NOT 自作主张下载**;用户同意后再 `gtrk deps install --browser`,或本命令加 `--install-browser`。
|
|
93
|
-
- **某颗失败**(退出码 1):其余照常。回执给出原因(常见:素材丢失、窗口为零、未解析——重跑 `build`);修好再烤那一颗。不修的话出片时该段按粗剪出画,MUST 照实告诉用户。
|
|
94
|
-
- **出片时**:成功的那段以烘焙视频出画;**整段落在合成窗口内的 MG / OV 不再预渲、不计费**(被合成接管了)。
|
|
95
|
-
- 帧纯度(`lint` 的 `impure-frame`)不过的颗粒,烘焙段首帧会与连续播放不同——**lint 过了再烤**。
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
-
|
|
102
|
-
|
|
103
|
-
-
|
|
104
|
-
|
|
105
|
-
- ❌
|
|
106
|
-
|
|
107
|
-
- ❌
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
"
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
-
|
|
163
|
-
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
|
183
|
-
|
|
184
|
-
|
|
|
185
|
-
|
|
|
186
|
-
|
|
|
187
|
-
|
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
|
192
|
-
|
|
193
|
-
|
|
|
194
|
-
|
|
|
1
|
+
---
|
|
2
|
+
name: gtrk-composite
|
|
3
|
+
description: 合成层包装(合成颗粒)——粗剪、B-roll、字幕都定了之后,把选定时间窗做成「合成」:一段时间内的整个画面由一颗代码颗粒接管(画中画拼贴、逐句换画面、对照并排、并列卡片、字幕排版),讲者与 B-roll 作为槽位画进去。三种入口:整片铺满 / 让 AI 判定哪里值得做 / 用户指定区间;候选窗口显示在客户端大纲的 CP 行。当用户想「做合成 / 合成层 / 整片做一下合成包装 / 哪里适合做合成 / 这段做成画中画拼贴 / 11 秒到 32 秒做个合成 / 逐句换画面 / 把字幕排进画面里」时使用本 skill,驱动 `gtrk composite`(plan → review → scaffold → build → lint → lay → bake),别手搓 HTML 铺进工程。
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# 合成层包装(gtrk-composite)
|
|
7
|
+
|
|
8
|
+
把粗剪工程里选定的时间窗做成**合成颗粒**:在这段时间里,整个画面由一颗代码颗粒接管——它决定画面怎么排、何时换、字幕怎么出;讲者与 B-roll 作为**槽位**由客户端把视频画进去。**CLI 是手(定窗口、解析、校验、机检、铺轨),你是脑(判断这段该怎么排、选哪张画面、写场景)。**
|
|
9
|
+
|
|
10
|
+
> 本 skill 已含你需要的全部信息。命令参数以 `gtrk composite --help` 为准。规则正本:合成颗粒契约在 infra `composite-particle-profile`;`struct_meta.composite` 写方契约在本仓 `composite-command`。
|
|
11
|
+
|
|
12
|
+
## 你在成片 SOP 的哪一步
|
|
13
|
+
|
|
14
|
+
最后一层:**粗剪 → 拆分 → B-roll → MG → BGM → 字幕 → 合成 → 出片**。放在最后,是因为这时粗剪、B-roll、字幕都已定,合成颗粒的输入最稳定。但不写死:上游再改,对应颗粒在客户端变「需重渲」,重跑那几颗即可。
|
|
15
|
+
|
|
16
|
+
前置:
|
|
17
|
+
- 有粗剪工程(`<工程>/gtrk/project.gtrk`)和口播转写(`transcript/transcript.json`,新版 `gtrk oralcut` 恒出)。合成按**句**定窗口,没有转写就做不了。
|
|
18
|
+
- 字幕最好已上(`gtrk subtitle lay`):合成颗粒可以接管字幕、自己排。
|
|
19
|
+
- `gtrk composite --help` 能跑(CLI 版本含本命令族)。
|
|
20
|
+
|
|
21
|
+
⚠️ **出片口径要先说清**:合成颗粒出片靠本机烘焙(`gtrk composite bake`,见「出片:烘焙」一节)——首次要装烘焙浏览器(约 110 MB),某颗烘焙失败时那一段按粗剪出画。用户要交付成片的话,这件事 MUST 在开工时告诉他。
|
|
22
|
+
|
|
23
|
+
## 入口:三选一(用户已说明就不再问)
|
|
24
|
+
|
|
25
|
+
| 用户说 | 入口 | 命令 |
|
|
26
|
+
|---|---|---|
|
|
27
|
+
| 「整片做一下合成」 | 整片铺满 | `gtrk composite plan --project <工程> --mode full` |
|
|
28
|
+
| 「看看哪里适合做」「帮我挑」 | AI 判定 | `gtrk composite plan --project <工程> --mode auto [--density 0.25]` |
|
|
29
|
+
| 「11 秒到 32 秒做一个」「u0004 到 u0009 那段」 | 用户指定 | `gtrk composite plan --project <工程> --range 11,32 --range u0020-u0024` |
|
|
30
|
+
|
|
31
|
+
- **整片铺满**:窗口首尾相接覆盖全片,单窗 5–25 秒、在句界(有拆分派单时在 beat 边界)断开。
|
|
32
|
+
- **AI 判定**:按信号打分(几秒内多个 B-roll 短镜头、列举、对照 / 转折、具体数字、章节转折、开场 / 收尾),总时长不超过密度上限(缺省全片 25%)。超出的记「超出上限」,**列出来让用户挑,不静默丢**。信号只是起点——你要读审稿稿里每个窗口「这段在说什么」,判断它是否真值得做,不值得的建议用户不要。
|
|
33
|
+
- **用户指定**:区间吸附到句界、投影到帧格,回执里写明两端各挪了多少毫秒;直接记为已采纳。
|
|
34
|
+
|
|
35
|
+
`plan` 把候选写进工程的 `struct_meta.composite`(只动这一个键),另出审稿稿 `<工程>/composite/plan.md`。重跑时已做好的窗口原样保留、用户不要的区间不再提。
|
|
36
|
+
|
|
37
|
+
### 检查点①(必停):审窗口
|
|
38
|
+
|
|
39
|
+
请用户在客户端**重新载入工程**后看大纲的 **CP 行**:虚线框 = 待审,虚线框加浅底 = 已采纳,悬停能看理由与建议。同时把审稿稿的表格摘给他。他在对话里说哪些要、哪些不要、哪些调起止,你用 `review` 写回:
|
|
40
|
+
|
|
41
|
+
```bash
|
|
42
|
+
gtrk composite review --project <工程> --approve W01,W03 --reject W02 --adjust W04=80,90.9 --add 140,150
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
`--approve-all` 采纳全部待审。没有采纳的窗口,后面的步骤一概不做。
|
|
46
|
+
|
|
47
|
+
## 逐窗口:设计说明 → 选片 → 场景 → 构建 → 机检
|
|
48
|
+
|
|
49
|
+
```bash
|
|
50
|
+
gtrk composite scaffold --project <工程> # 为已采纳窗口落场景骨架 composite/scenes/cp-wNN.html
|
|
51
|
+
# 与上下文 cp-wNN.context.md(这段在说什么、窗口内片段、已登记素材)
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
对每个窗口:
|
|
55
|
+
|
|
56
|
+
1. **先读上下文、写设计说明**(写进对话给用户看,或写在场景文件开头的注释里):
|
|
57
|
+
- 这段话分几拍?每拍对应哪句、哪个关键词?
|
|
58
|
+
- 每拍画面是什么?为什么是一画 / 多画?(见下节规则 1)
|
|
59
|
+
- 字幕怎么处理(接管后自己排 / 屏上已写着同一句时隐藏)。
|
|
60
|
+
2. **选片**(需要 `own` 槽位时):
|
|
61
|
+
|
|
62
|
+
```bash
|
|
63
|
+
gtrk composite shots --project <工程> --material <素材 id 或文件> --around 246 --span 20
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
看联系表(每格左上是源时间码)、切点列表、黑边实测。入点与在场时长 MUST 落在一个镜头内(规则 5),`data-crop` 按黑边实测取(规则 3)。工程里还没登记的素材写进 `<工程>/composite/materials.json`(`[{ "id", "path", "duration" }]`),铺轨时一并登记。
|
|
67
|
+
3. **写场景**(格式见「场景写法速查」)。
|
|
68
|
+
4. **构建**:`gtrk composite build --project <工程> [--only cp-w03]`——按 infra 规则解析(帧格窗口、轨身份、锚点、字幕输入、`inputs_hash`)并校验,产 `<工程>/gtrk/assets/composite/<id>.html`。回执里每颗应为 `fresh`。
|
|
69
|
+
5. **机检**:`gtrk composite lint --project <工程> --stills 26,86.6`——静态校验 + 逐帧排版(下层画面的前景描边压上层画面、前景线条穿过画面、画面越出舞台、容器里的元素写了偏移却没定位),顺带出静帧。**不过就改场景重跑,过了才往下走。**
|
|
70
|
+
- 退出码 3 = 本机找不到 Chrome / Edge,**排版没机检**:照实告诉用户,用静帧(或客户端预览)人眼逐颗查穿模,MUST NOT 当成通过。
|
|
71
|
+
|
|
72
|
+
### 检查点②:看静帧
|
|
73
|
+
|
|
74
|
+
每颗至少给用户 2–3 张关键时刻的静帧(换画面前后、拆分并排时、结尾)。快速成片模式下全部窗口做完后一次给。用户点头再铺:
|
|
75
|
+
|
|
76
|
+
```bash
|
|
77
|
+
gtrk composite lay --project <工程> # 全量;--only cp-w03 只替换这颗
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
铺完请用户重新载入工程:CP 行上的提案块变成实色合成块,预览即合成效果。
|
|
81
|
+
|
|
82
|
+
## 出片:烘焙
|
|
83
|
+
|
|
84
|
+
铺完、用户确认后、出片前,先在本机把合成烤成视频(`gtrk render` / `gtrk project export` 也会自动先烤,单独跑便于先看结果):
|
|
85
|
+
|
|
86
|
+
```bash
|
|
87
|
+
gtrk deps install --browser # 首次:装钉定版本的烘焙浏览器(约 110 MB)。MUST 先告诉用户再装
|
|
88
|
+
gtrk composite bake --project <工程> # 全部合成;--only cp-w03 只烤这颗
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
- **缓存即复用**:没改过的颗粒二次运行全部命中;改了场景、素材文件、上游时间线或帧率才重烤。
|
|
92
|
+
- **没装钉定浏览器**也能烤(退回本机 Chrome / Edge,截图模式,更慢)——回执会提示,**MUST NOT 自作主张下载**;用户同意后再 `gtrk deps install --browser`,或本命令加 `--install-browser`。
|
|
93
|
+
- **某颗失败**(退出码 1):其余照常。回执给出原因(常见:素材丢失、窗口为零、未解析——重跑 `build`);修好再烤那一颗。不修的话出片时该段按粗剪出画,MUST 照实告诉用户。
|
|
94
|
+
- **出片时**:成功的那段以烘焙视频出画;**整段落在合成窗口内的 MG / OV 不再预渲、不计费**(被合成接管了)。
|
|
95
|
+
- 帧纯度(`lint` 的 `impure-frame`)不过的颗粒,烘焙段首帧会与连续播放不同——**lint 过了再烤**。
|
|
96
|
+
- **产物尺寸 = 舞台 = 工程画布**:竖屏 1080×1920 与横屏 1920×1080 像素数相同、耗时相同;4K 画布像素是 1080p 的 4 倍,烘焙明显更慢,开烤前照实告诉用户。
|
|
97
|
+
|
|
98
|
+
## 编排规则(每条都是测试工程走查时真犯过的)
|
|
99
|
+
|
|
100
|
+
1. **画面数由内容定,不照搬粗剪的轨结构。** 逐句看台词:一句话说到什么就换成什么;没有具体可看的,让讲者本人占画框或用纯排版;**只有内容本身是两个以上的东西才同时放多画**——关系(「你再指点妈妈」→ 女儿 / 妈妈并排)、对照(「她会化浓妆」VS「妈妈没化过妆」)、并列(「打耳钉 / 抽烟 / 喝酒」三张卡逐词亮起)。
|
|
101
|
+
- ❌ 反例:粗剪在这段有两条 B-roll 候选轨,就放一个大框 + 一个小框,两条轨各占一个——画面数由轨数决定,跟内容无关。
|
|
102
|
+
- 画面多用 `own` 槽位按内容另挑入点(粗剪轨上的片段只是候选之一);用 `ref-lane` 的前提是那条轨在这段的时序恰好就是你要的。
|
|
103
|
+
- **没有讲者的工程**(解说、配音、旅拍等主画面不是真人口播):只用 B-roll 画面与排版;没有具体可看的段交给纯排版或不做,MUST NOT 造讲者画框、MUST NOT 拿空白圆窗或占位图充当讲者。
|
|
104
|
+
2. **任一时刻画面互不重叠。** 客户端先画全部画面、再画前景层,**下层画面的前景描边一定压在上层画面上**。同一位置交替换画面时,**等前一张的框到位、两框重合后再换**(`seq` 已按此写);版式切换(一画 → 并排)时,先让旧画面缩到位,新画面再进来。讲者不在同一时刻出现两次(大框里是讲者时不放讲者圆窗)。
|
|
105
|
+
- ❌ 反例:讲者圆窗与小画面叠在大画框的边线上,边线横穿它们;分叉曲线从一张画中画中间穿过去。
|
|
106
|
+
3. **裁掉画面里的黑边与烧录字幕。** 电影源常带信箱黑边,综艺源常有烧录字幕与人名条;按 `shots` 的实测写 `data-crop="上,右,下,左"`(比例)。
|
|
107
|
+
- ❌ 反例:画框里留一道黑带。
|
|
108
|
+
4. **人脸构图:眼睛落在上三分线附近,头顶留约一成余量。** 讲者大框、圆窗、素材里的人脸都一样。
|
|
109
|
+
- ❌ 反例:裁切把眼睛放在画框正中,头顶上方空出一大片窗户。
|
|
110
|
+
5. **选片不跨切点。** `own` 的取用段 `[入点, 入点 + 在场时长)` MUST 落在一个镜头内;镜头不够长就接受最后一帧定格或换一个镜头,MUST NOT 拉伸或变速。
|
|
111
|
+
6. **字幕:接管就自己排。** 场景声明 `takeover: ["subtitles","overlay"]` 后,窗口内原字幕与 MG 叠层不再显示,字幕由场景用 `caption()` 或对话气泡排出;屏上排版已经写着同一句话时可以在那段隐藏字幕。
|
|
112
|
+
7. **先求准,再求满。** AI 判定模式的密度上限是对成片吵闹度的约束;整片铺满时也要让「没有具体可看的段」安静(讲者 + 少量排版),别为了铺满每段都堆画面。
|
|
113
|
+
8. **舞台随工程画布,竖屏 / 方形按自己的版式写。** `scaffold` 按工程画布写舞台(规格里的 `stage`),场景坐标一律是这块舞台的像素;横屏工程的版式不能拿到竖屏工程里用(`build` 会报「场景舞台 A,工程画布 B」)。竖屏与方形舞台:
|
|
114
|
+
- 多画并置优先**上下分区**(关系、对照都上下摆),MUST NOT 把横屏的左右并排硬塞进窄舞台;
|
|
115
|
+
- 字幕与关键信息避开上下边缘与右侧按钮区(平台界面会盖住),字幕放画面中下部;
|
|
116
|
+
- 人脸构图规则(规则 4)照旧;机检规则对任何舞台同样适用。
|
|
117
|
+
- ❌ 反例:竖屏里左右各放一张 540 宽的画面,人脸被挤成一条缝,右边那张还被点赞按钮压住。
|
|
118
|
+
|
|
119
|
+
## 场景写法速查
|
|
120
|
+
|
|
121
|
+
场景文件四段(下例舞台 1920×1080;竖屏工程 `stage` 是 `[1080, 1920]`,坐标按它写):
|
|
122
|
+
|
|
123
|
+
```html
|
|
124
|
+
<script type="application/x-cp-spec">
|
|
125
|
+
{
|
|
126
|
+
"id": "cp-w03",
|
|
127
|
+
"stage": [1920, 1080], // 舞台 = 工程画布(scaffold 写好,别手改)
|
|
128
|
+
"window": [77.483, 90.85], // 时间线秒;build 会吸附到帧格
|
|
129
|
+
"takeover": ["subtitles", "overlay"],
|
|
130
|
+
"slots": {
|
|
131
|
+
"teacher": { "bind": { "kind": "ref-lane", "role": "a-roll" }, "label": "讲者", "pin": { "track": 0 } },
|
|
132
|
+
"heavy": { "bind": { "kind": "own", "facet": "化浓妆的少女近景", "starts_at": "浓妆" }, "label": "浓妆",
|
|
133
|
+
"pin": { "material": "broll-local-xxx", "src_in_ms": 116250, "dur_t": 3.8, "starts_at_f": "浓妆" } },
|
|
134
|
+
"subs": { "bind": { "kind": "text", "source": "subtitles" }, "label": "字幕" }
|
|
135
|
+
},
|
|
136
|
+
"anchors": { "浓妆": ["u0026", "特别会化浓妆"], "因为妈妈": ["u0028", "因为妈妈"] }
|
|
137
|
+
}
|
|
138
|
+
</script>
|
|
139
|
+
<style> /* 这颗的版式 */ </style>
|
|
140
|
+
<div class="bed dark"></div>
|
|
141
|
+
<div class="shadow" data-for="heavy" style="border-radius:16px"></div>
|
|
142
|
+
<div data-slot="heavy" data-z="11" data-fit="cover" data-shape="roundrect" data-radius="16" data-crop="0,0,0.2,0"></div>
|
|
143
|
+
<div class="frame light thin" data-for="heavy" data-layer="front" style="border-radius:16px"></div>
|
|
144
|
+
<div id="tg1" class="ptag warm" data-layer="front">浓妆</div>
|
|
145
|
+
<div id="cap" class="cap dark" data-layer="front"></div>
|
|
146
|
+
<script>
|
|
147
|
+
const { A, prog, at, mix, seq, place, reveal, caption, ease } = CP;
|
|
148
|
+
const R = [96, 120, 1160, 652];
|
|
149
|
+
CP.render = (t) => {
|
|
150
|
+
at("heavy", R, seq(t, A("浓妆")));
|
|
151
|
+
place("tg1", R[0] + 20, R[1] + 20, seq(t, A("浓妆")));
|
|
152
|
+
caption("cap", "subs", t, ["浓妆"]);
|
|
153
|
+
};
|
|
154
|
+
</script>
|
|
155
|
+
```
|
|
156
|
+
|
|
157
|
+
- **槽位绑定**:`ref-lane {track}`(某条轨在该时刻的画面,讲者常用);`ref {clip_id}`(某个片段,窗口外定格首末帧);`own {material, src_in_ms, dur_t | dur_f, starts_at: 锚点名 | starts_at_t: 时间线秒}`(自选素材的一段;之前首帧、之后末帧定格);`text`(字幕文本输入,无几何)。
|
|
158
|
+
- **锚点**:`[句 id, 关键词, 第几处(0 起)]`,取关键词首字在时间线上的时刻;场景里 `A("名字")` 得局部秒。关键词所在的字被剪掉时取其后第一个保留的字。匹配时关键词与句子都忽略空格、标点与大小写,英文按整词(`["u0001", "cold brew"]` 直接写;`"tea"` 不会命中 `teas`)。
|
|
159
|
+
- **槽位元素**:`data-slot` 一槽一个;`data-z` 叠放次序;`data-fit` cover / contain;`data-shape` rect / roundrect / circle;`data-crop` 上右下左比例;`data-filter` 只收白名单滤镜。
|
|
160
|
+
- **装饰跟随**:`data-for="<槽位>"` 的元素与槽位同框(`data-pad` 外扩);`.shadow` 在下(背景层),`.frame` / `.ring` 加 `data-layer="front"` 在上——**只给最上层的画面加前景描边**(规则 2)。
|
|
161
|
+
- **分层**:缺省是背景层(画在视频之下);`data-layer="front"` 的子树在视频之上(文字、标签、描边、线条)。
|
|
162
|
+
- **定位**:工具箱只给**舞台的直接子元素**绝对定位(`#stage > *`)。放进容器里的子元素(如 `<div id="grid">` 下的一排徽章)不会自动定位,`left` / `top` 不生效、按文档流挤成一列(lint 报 `unpositioned-offset`)——容器内要摆位置的子元素自己写 `position:absolute`,或加工具箱的 `.abs` 类;坐标相对容器(容器自己要写宽高)。
|
|
163
|
+
- **工具箱 `CP`**:`prog(t, 起, 时长, ease)` 进度;`span` 进出;`at(id, [x,y,w,h], 透明度)` 定框;`mix(矩形A, 矩形B, p)` 版式插值;`seq(t, 到点, 下一张到点)` 同一位置逐句换画面的透明度;`place(el, x, y, o)`;`reveal / look / wipe / draw / typeOn`;`caption(el, "subs", t, 高亮词[], 隐藏区间[])`;`cues("subs")` 取字幕条目(局部帧);`fps()`。
|
|
164
|
+
- **常用样式**:`.bed`(底色)/ `.bed.dark`;`.kicker` `.h1` `.h2` `.h3` `.body` `.tag` `.num`;`.ptag` / `.ptag.warm`(画面标签);`.cap` / `.cap.dark`(字幕);`.bubble`(对话气泡);`.stamp`(印章);`.card` `.pill` `.rule`。配色与字体都是变量:`--bg --bg2 --ink --muted --line --accent --accent2 --accent3 --alert --font --font-serif`。
|
|
165
|
+
- **纯函数**:场景脚本 MUST NOT 用 `Date`、`Math.random`、`requestAnimationFrame`、`setInterval`、`setTimeout`(lint 会拦)——同一帧号永远画出同一画面,客户端是逐帧 seek 的。
|
|
166
|
+
|
|
167
|
+
## 风格
|
|
168
|
+
|
|
169
|
+
配色、字体、纹理不在工具箱里,写在 `<工程>/composite/theme.css`(构建时接在工具箱样式之后,覆盖上面那组变量):
|
|
170
|
+
|
|
171
|
+
- 当前栏目配置 `style.skills` 里有 `produces == "composite"` 的条目 → 触发它产 `theme.css`(与 `gtrk-mg`、`gtrk-ai-drama` 的栏目解析同一套);
|
|
172
|
+
- 没有 → 按这条片子的内容临场定一套(讲什么、什么调性 → 配色倾向、字体气质、动效克制度),**全片所有合成颗粒沿用同一套**。MUST NOT 每颗各自为政,也 MUST NOT 套一个与内容无关的固定模板。
|
|
173
|
+
|
|
174
|
+
## 与 `/gtrk-mg` 的分工
|
|
175
|
+
|
|
176
|
+
- 单一陈述的字卡、点题强调、透明叠层 → MG;
|
|
177
|
+
- 一段时间内的整个画面(画中画拼贴、逐句换画面、对照并排、字幕排版)→ 合成。
|
|
178
|
+
- 同一区间二者只取其一:合成声明 `takeover: overlay` 后,MG 叠层在窗口内不显示。已有满屏 MG 的段,AI 判定不会提。
|
|
179
|
+
|
|
180
|
+
## 排错
|
|
181
|
+
|
|
182
|
+
| 现象 | 处理 |
|
|
183
|
+
|---|---|
|
|
184
|
+
| build 报「素材 X 未登记」 | 写进 `composite/materials.json`(`id` + `path`),或换工程里已登记的素材 |
|
|
185
|
+
| build 报「锚点落在窗口外 / 找不到关键词」 | 关键词照句子原文抄(看 `context.md`;空格、标点、大小写不影响,英文按整词),或换一个落在窗口内的词 |
|
|
186
|
+
| build 报「轨 N 在窗口内没有片段」 | 那条轨这段是空的:换轨,或改用 `own` |
|
|
187
|
+
| lint 报 `border-over-slot` | 两张画面重叠且下层有前景描边:错开时序(等前一张到位再换)或去掉下层的前景描边 |
|
|
188
|
+
| lint 报 `stroke-through-slot` | 前景线条穿过画面:挪画面或改线条走向 |
|
|
189
|
+
| lint 报 `slot-out-of-stage` | 画面出了舞台:收回到舞台(= 工程画布,竖屏是 1080×1920)内(满屏底图除外) |
|
|
190
|
+
| lint 报 `unpositioned-offset`(容器里的徽章 / 卡片挤成一列、`left` / `top` 不生效) | 它们不是舞台的直接子元素:自己写 `position:absolute` 或加 `.abs`(见场景速查「定位」);本来就想按文档流 / flex 排的,删掉偏移 |
|
|
191
|
+
| build 报「场景舞台 A,工程画布 B」 | 工程画布改过(或拿了别的画幅的场景):按新画布重写场景,`gtrk composite scaffold --force` 重起骨架 |
|
|
192
|
+
| lint / lay 报「需重渲」 | 上游(粗剪 / 素材 / 字幕)改过:重跑 `build`(再 `lint`、`lay`) |
|
|
193
|
+
| lint 退出码 3 | 本机没 Chrome / Edge:排版未机检,用静帧人眼查,照实告诉用户 |
|
|
194
|
+
| lint 报 `impure-frame` | 同一帧号随渲染顺序画出不同画面:多半读了带变换元素的渲染后几何(如对正在缩放的元素用 `getBoundingClientRect` 量宽度)——改读 `offsetWidth` / `offsetLeft` 等不含变换的布局值 |
|
|
195
|
+
| bake 报「找不到可用的浏览器」(退出码 2) | 本机没有钉定浏览器也没有 Chrome / Edge:征得用户同意后 `gtrk deps install --browser` |
|
|
196
|
+
| bake 报「素材缺失:<路径>」 | 素材移动或删除了:恢复文件或重新登记路径后再烤这颗 |
|
|
197
|
+
| lay 报「没铺:时间线上已有同 id 的片段」 | 用户在客户端改过那颗:要重铺先请他在客户端删掉它 |
|
|
198
|
+
| 客户端 CP 行没出现提案块 | 请用户重新载入工程(外部写入要重载才读进来) |
|
|
199
|
+
|
|
200
|
+
## 被图纸快速成片接力调用
|
|
201
|
+
|
|
202
|
+
成片图纸(口播 / 解说 / 美食 / 配音 / 旅拍 / Vlog;直播切片与长剪短在用户答要时)的快速成片跑到「精剪包装」交棒本 skill 时,按《成片型图纸公约》§三⁵ 一杆到底,**不停**:
|
|
203
|
+
|
|
204
|
+
- **检查点①由你代审**:`plan --mode auto`(缺省密度 25%)之后,逐窗口读 `composite/plan.md`,判断这段是否真值得做,用 `review --approve / --reject` 写回;信号只是起点,不值得的不做。
|
|
205
|
+
- **逐窗口照常写设计说明、选片、场景、构建、机检**;机检不过改场景重跑,**至多三轮**,仍不过就 `review --reject` 该窗口,不阻塞其余窗口与交付。
|
|
206
|
+
- **检查点②并入图纸交付**:铺轨、烘焙之后,各窗口静帧随图纸交付时的那次检查一次给出。
|
|
207
|
+
- **回执**:交付时「精剪包装」一节列三项——做了的(时间、对应句、为什么做)、建议了没做的(超上限 / 不值得 / 机检三轮不过,各带原因)、烘焙结果(失败段按粗剪出画并点名)。
|
|
208
|
+
|
|
209
|
+
用户直接要合成(「看看哪里适合做合成」)或走逐步推进时,照下面「双模式」停。
|
|
210
|
+
|
|
211
|
+
## 双模式
|
|
212
|
+
|
|
213
|
+
| 模式 | 停点 |
|
|
214
|
+
|---|---|
|
|
215
|
+
| 快速成片 | 检查点①(审窗口)必停;全部窗口做完、lint 过后,检查点②一次给静帧,点头后一次铺完 |
|
|
216
|
+
| 逐步推进 | 检查点①;每个窗口的设计说明、静帧各停一次 |
|
|
217
|
+
| 图纸快速成片接力 | 不停:检查点①你代审、检查点②并入图纸交付(见上节) |
|
|
@@ -17,9 +17,9 @@ description: 美食解说垂类图纸(解说链示例)——把探店/密着
|
|
|
17
17
|
| 形态 | 输入 | 时序档位(正本 §三) |
|
|
18
18
|
|---|---|---|
|
|
19
19
|
| **探店 · 密着** | 一条纪实长片(二创;带字幕文件的直接当台词锚,无则转写)或自拍探店素材夹 | 软窗档缺省:进店→点单→出品→吃→人的故事,流程线单调、允许蒙太奇跳 |
|
|
20
|
-
| **做饭流程** | 一条做饭记录或素材夹 | 软窗档且**步骤线忠实**:工序 MUST NOT 乱序重排 |
|
|
20
|
+
| **做饭流程** | 一条做饭记录或素材夹 | 软窗档且**步骤线忠实**:工序 MUST NOT 乱序重排 |
|
|
21
21
|
|
|
22
|
-
稿源与声音基座随正本开工问询(AI 代写/自备稿;TTS
|
|
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
|
|
@@ -86,24 +86,24 @@ gtrk matrix describe --plan <工程>/split/broll-plan.json --highlight-rubric @<
|
|
|
86
86
|
## 四、快速成片编排
|
|
87
87
|
|
|
88
88
|
命令序照正本 §五(索引/字幕锚 → 写稿+出处 → 检查点① → 基座 → 建工程 → 拆分 → 铺排 →
|
|
89
|
-
字卡 → BGM →
|
|
89
|
+
字卡 → BGM → 字幕 → 精剪包装),配方口径(mark-weight 0.3 / BGM 0.10 / gap-fill fast)照旅拍 §五,引用不复制。
|
|
90
90
|
BGM 检索词照公约 §三′ 内容驱动(这家店的气质:地域/年代/客群/烟火感,禁通用词套路;
|
|
91
91
|
候选给用户挑不许默认 top1;跨片避让自动生效)。
|
|
92
92
|
看点加权:`--highlight-weight 0.2` 配 §二′ 的 rubric(**须先 `matrix describe --plan` 且那一次
|
|
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
|
## 六、个性化出路(垂类示例定位)
|
|
@@ -22,13 +22,13 @@ description: 直播切片图纸——把一场数小时的直播回放,拆成
|
|
|
22
22
|
|
|
23
23
|
> **用户只要能直接发的成片、不打算再剪?** 那不是本图纸的活,转 `gtrk tool video_long2short_pro`(精剪,整片上传、云端渲染、计费约两倍)。判断句同 `gtrk-long2short`:**「剪完还要不要再动?」要动 → 留这儿;不动 → 转精剪。**
|
|
24
24
|
|
|
25
|
-
##
|
|
25
|
+
## 一、输入契约与开工六问
|
|
26
26
|
|
|
27
27
|
**输入**:一条直播回放的**本地文件**(`.ts` / `.mp4` 等均可)。
|
|
28
28
|
|
|
29
29
|
**MUST NOT 执行录制或下载**——平台动作与版权责任归用户。用户给什么文件就用什么。
|
|
30
30
|
|
|
31
|
-
|
|
31
|
+
开工前先答六问,答案决定后面全部策略:
|
|
32
32
|
|
|
33
33
|
| # | 问 | 怎么取证 | 决定什么 |
|
|
34
34
|
|---|---|---|---|
|
|
@@ -37,8 +37,9 @@ description: 直播切片图纸——把一场数小时的直播回放,拆成
|
|
|
37
37
|
| ③ | 有无烧录贴片 | 抽 2–3 帧看(开头/中段/尾段各一) | **交付时要如实告知什么**(§五) |
|
|
38
38
|
| ④ | 入选切片要不要叠 MG 动画 | **问用户**——缺省不叠(粗剪定位) | **选题清单敲定后是否走 MG 车道**(§七) |
|
|
39
39
|
| ⑤ | 入选切片要不要加运镜(推拉镜头) | **问用户**——缺省不加 | **逐段提交是否带 `--camera-move`**(§七「运镜」) |
|
|
40
|
+
| ⑥ | 入选切片要不要做合成包装 | **问用户**——缺省不做(公约 §三⁵) | **选题清单敲定后是否对入选 clip 做精剪包装**(§七「合成包装」);答要时 `gtrk composite bake --abi` 报烘焙浏览器没装,同一张表里多问一句装不装 |
|
|
40
41
|
|
|
41
|
-
>
|
|
42
|
+
> **②④⑤⑥ MUST 问用户、MUST NOT 代猜。** ②猜错的代价是白跑一轮分屏(几十分钟 + 积分);
|
|
42
43
|
> ④缺省是**不叠**——用户没要就零 MG 动作,MUST NOT 硬塞;⑤缺省是**不加**——用户没要就全程不带 `--camera-move`、不再追问。
|
|
43
44
|
> ⑤ 必须在提交前问:运镜是云端任务参数,交上去之后改不了(没入选的 clip 带了运镜也无害,随 clip 一起丢弃)。
|
|
44
45
|
> **③ 的取证目的只是「告知」,不是「处置」**——看到贴片不要动手,见定位铁律。
|
|
@@ -99,7 +100,7 @@ gtrk oralcut-result <task_id> --out <目录> # task_id 在产物根 task.json
|
|
|
99
100
|
|
|
100
101
|
| 模式 | 停点 |
|
|
101
102
|
|---|---|
|
|
102
|
-
| **快速成片** |
|
|
103
|
+
| **快速成片** | 六问 + 分段方案确认 → 逐段跑 → **【必停】选题清单** → 确认后一路出工程(⑥ 答要时含逐条精剪包装,合成静帧随交付一次给) |
|
|
103
104
|
| **逐步推进模式** | 上述基础上每步都停(分段方案 / 逐段选段结果 / 逐条工程产物) |
|
|
104
105
|
|
|
105
106
|
两模式共用同一套分段规约与参数配方,**差别只在停几次,不在停不停**。
|
|
@@ -188,6 +189,11 @@ gtrk oralcut-result <task_id> --out <目录> # task_id 在产物根 task.json
|
|
|
188
189
|
- **字幕**:见下「字幕上轨」——选题确认后对入选 clip **缺省做**。
|
|
189
190
|
- **模糊底**:见下「模糊底」——源片与画布横竖不一致时,对入选 clip **缺省做**。
|
|
190
191
|
- **封面**:走 `/gtrk-cover`(另出图,不改片)。
|
|
192
|
+
- **合成包装**:见下「合成包装」——开工 ⑥ 答要才做,只对入选 clip。
|
|
193
|
+
|
|
194
|
+
### 合成包装(缺省不做,开工 ⑥ 答要才做,只对入选 clip)
|
|
195
|
+
|
|
196
|
+
选题清单敲定之后,对每条入选 clip 交棒 `/gtrk-composite` 做**精剪包装**(公约 §三⁵:快速成片 auto ≤ 25% → 逐窗口复核 → 构建机检 → 铺轨烘焙,不停;回执列「做了 / 建议了没做 / 烘焙结果」;逐步推进按合成 skill 两个检查点停;开工时用户说了不要就跳过)。clip 工程与整片转写的路径同「字幕上轨」:`--gtrk "<产物根>/clip{i}/gtrk/<该 clip 的 .gtrk>" --transcript "<产物根>/json/transcript.json"`。合成写在工程里、可在客户端撤销,不动源片像素。
|
|
191
197
|
|
|
192
198
|
### 字幕上轨(缺省做,只对入选 clip)
|
|
193
199
|
|
|
@@ -67,6 +67,8 @@ gtrk long2short "D:/毛片/对谈.mp4" --language zh-CN --split-screen --split-o
|
|
|
67
67
|
|
|
68
68
|
## 计费与跑前须知(每次都转述给用户)
|
|
69
69
|
|
|
70
|
+
- **合成包装问一次**(公约 §三⁵):「出来的切片要不要做合成包装?」**缺省不做**;答要则跑完后对每条 clip 做(见「产物」末条),并在这次一起问烘焙浏览器装不装(`gtrk composite bake --abi` 报没装时)。
|
|
71
|
+
|
|
70
72
|
- 运行时 CLI 自动查询实时价格并在跑前打印——**把计费提示原样转述**;按**上传物音频时长**计费(≈原片时长),**长片先向用户确认再跑**。
|
|
71
73
|
- **源片 > 2 小时跑不了**:CLI 在上传前就会拦下(零抽取、零上传、零扣费),不是跑到一半才失败。
|
|
72
74
|
遇到超长源片(直播回放常见)**先分段再逐段跑**,建议 **40 分钟/段**——
|
|
@@ -85,6 +87,7 @@ gtrk long2short "D:/毛片/对谈.mp4" --language zh-CN --split-screen --split-o
|
|
|
85
87
|
- 横屏源进竖屏画布(缺省 9:16)时工程上下是黑边;要模糊底:`gtrk project background --gtrk <产物根>/clip{i}/gtrk/clip{i}_project.gtrk --blur`——给该 clip **主轨每个片段**写模糊底(片段级底板),客户端里可逐片段或多选批量改成黑底 / 纯色;从客户端导出的剪映草稿带模糊底、Pr 工程降级为纯黑、本地 `gtrk render` 带模糊底;云端随长剪短产出的剪映 / PR 工程生成在它之前、不带。零计费。只想要旧的整片画布设置:加 `--scope canvas`。
|
|
86
88
|
- 用了 `--camera-move` 时:`clips.md` 每条时长后标「运镜 N 处」(0 处属正常);若有 clip 未能加运镜,`clips.md` 会单列「未能加运镜的切片」;告诉用户运镜在客户端 / 剪映里看,本地渲染与 PR 看不到。之后用 `gtrk patch` 裁剪 / 切分带运镜的片段,关键帧会跟着调整。
|
|
87
89
|
- 用了 `--speed-factor` 时:`clips.md` 的时长是**变速后**的时长并标注倍率;若有 clip 未能变速,`clips.md` 会单列「未能变速的切片」,如实告诉用户。
|
|
90
|
+
- **合成包装**(跑前答了要才做):对每条 clip 交棒 `/gtrk-composite` 做**精剪包装**(公约 §三⁵:快速成片 auto ≤ 25% → 逐窗口复核 → 构建机检 → 铺轨烘焙,不停;回执列「做了 / 建议了没做 / 烘焙结果」;逐步推进按合成 skill 两个检查点停;开工时用户说了不要就跳过);参数同上面字幕那条:`--gtrk <产物根>/clip{i}/gtrk/clip{i}_project.gtrk --transcript <产物根>/json/transcript.json`。
|
|
88
91
|
- **先看 `clips.md`**(产物根,人读总览):一张表列全部切片的标题/时长/评分/一句话简介 —— 用它给用户复述「出了哪几条、各讲什么、建议先精修哪条」,别让用户自己开工程猜。逐条的入选理由、跳剪说明、高光词在 `clip{i}/clip.md`。
|
|
89
92
|
- 开了 `--split-screen` 时:**分屏素材落在毛片旁的 `split_screen/` 子目录**(工程素材路径指向那里,别移动/删除,移动了工程会缺素材)——这点要提前告知用户。
|
|
90
93
|
- 剪映草稿已拷入草稿根(给了 `--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`。
|