@gitruck/cli 1.3.15 → 1.3.17
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 +40 -10
- package/CHANGELOG.md +1262 -1231
- package/README.en.md +1 -1
- package/README.md +1 -1
- package/assets/composite-kit/kit.css +66 -57
- package/assets/composite-kit/stage.html +164 -18
- package/dist/index.js +653 -343
- package/docs/reference.en.md +866 -852
- package/docs/reference.md +909 -895
- package/docs/workflow.en.md +4 -3
- package/docs/workflow.md +4 -3
- package/package.json +1 -1
- package/skills/gtrk-ai-drama/SKILL.md +7 -7
- package/skills/gtrk-composite/SKILL.md +428 -222
- package/skills/gtrk-composite/references/fullscreen-card-migration.md +99 -0
- package/skills/gtrk-food-recap/SKILL.md +6 -3
- package/skills/gtrk-live-slicing/SKILL.md +9 -6
- package/skills/gtrk-long2short/SKILL.md +3 -2
- package/skills/gtrk-matrix/SKILL.md +9 -9
- package/skills/gtrk-mg/SKILL.md +62 -48
- package/skills/gtrk-music-visualizer/SKILL.md +1 -1
- package/skills/gtrk-narration/SKILL.md +15 -8
- package/skills/gtrk-oralcut/SKILL.md +1 -1
- package/skills/gtrk-splitter/SKILL.md +116 -24
- package/skills/gtrk-splitter/references/example-visual-split.json +34 -13
- package/skills/gtrk-splitter/references/example-visual-split.md +28 -5
- package/skills/gtrk-splitter/references/field-schema.md +88 -3
- package/skills/gtrk-style-maker/SKILL.md +8 -4
- package/skills/gtrk-style-maker/references/seeds/seed-ecom-home-goods.md +2 -2
- package/skills/gtrk-style-maker/references/seeds/seed-psych-humanities.md +1 -1
- package/skills/gtrk-talking-head/SKILL.md +26 -20
- package/skills/gtrk-tools/SKILL.md +1 -1
- package/skills/gtrk-transcript/SKILL.md +1 -1
- package/skills/gtrk-travel-recap/SKILL.md +36 -28
- package/skills/gtrk-vlog-docu/SKILL.md +41 -33
- package/skills/gtrk-voiceover/SKILL.md +19 -11
|
@@ -37,7 +37,7 @@ description: 通用解说视频创作图纸(解说链正本)——把「一
|
|
|
37
37
|
| ⑦ | **源片语种 / 方言** | **问用户**:听一段 / 看片内有无内嵌字幕 / 看素材出处 | `gtrk transcript --lang`(`zh-CN` 普通话 / **`zh-HK` 粤语** / `en-US` / `ja-JP`…);素材通篇无对白答「无对白 / 不转写」即闭合,MUST NOT 因缺这个答案阻塞开工 |
|
|
38
38
|
|
|
39
39
|
> ②③④⑤⑦ MUST 问用户、MUST NOT 代猜;一张表一次问完,不碎问。
|
|
40
|
-
> **精剪包装(公约
|
|
40
|
+
> **精剪包装(公约 §三⁵)**:开工时告知一句「快速成片会在适合的段落做合成包装,最多全片四分之一,这些段里的字幕会按版式重排;不要就说一声」——不是问题,用户说不要即零动作;`gtrk composite bake --abi` 报烘焙浏览器没装时,在这张问询表里多问一句装不装(不装用本机 Chrome / Edge)。
|
|
41
41
|
> **推荐面(公约 §三‴)**:问答收口时可问一句「要不要看看第三方 skill?」;题材命中场景触发词才定向推荐,读取 `gtrk skills recommend --scene <id> --json`;用户拒绝后不执行推荐动作。
|
|
42
42
|
>
|
|
43
43
|
> 语种必须在转写前确认。非中文素材传错语种会让检查点①拿到错误稿件并产生重复 ASR 成本;不要静默使用 `zh-CN`。粤语建议填写 `zh-HK` 作为元数据,当前 `--json` 路径按字级转写;无对白素材回答「无对白 / 不转写」即可。
|
|
@@ -180,6 +180,9 @@ QC 反算重铺);② 段带 `cuts`,端点残片收缩生效;③ 段带 `
|
|
|
180
180
|
|
|
181
181
|
## 五、快速成片编排
|
|
182
182
|
|
|
183
|
+
**主链**(位次照公约 §二⁗「画面三层」,正本 `production-order`,本图纸不另述):拆分(含版式窗口)→ 铺排底轨 → 全局抽帧检查 → 字幕 → 合成(精剪包装)→ `gtrk mg`(字卡等叠层)→ 交付;BGM 不受顺序约束。
|
|
184
|
+
解说片主画面就是素材本身:会改变整幅画面构成的段(多画并置、对照、引用页加圈注)在拆分稿开版式窗口交合成;字卡归叠,一颗点出一个对象(片名条、人名条、单个数),产法照 `/gtrk-mg` 的 `visual_job` 路由。
|
|
185
|
+
|
|
183
186
|
```bash
|
|
184
187
|
# ① 索引前置(第一步就起,不是可选项——它是质量信号的载体,见 §三 代价表)
|
|
185
188
|
# 4K 长片索引慢,未提速期**与写稿/TTS/检查点①并行跑**,别串行干等
|
|
@@ -209,7 +212,7 @@ gtrk tool audio_tts_clone --text-file <稿段.txt> --speaker <voice_id> --json
|
|
|
209
212
|
# ⑤ 建工程(有引用段=拼装总音频走 --audio+--transcript 兜底路;无引用段= --tts-task 主路)
|
|
210
213
|
gtrk project init --tts-task <id> --canvas <WxH> --no-open --json
|
|
211
214
|
|
|
212
|
-
# ⑥⑦
|
|
215
|
+
# ⑥⑦ 拆分派单(含版式窗口 layouts,判定不做写 layouts: [] + layout_note)→ 铺排(叙述段走甲′出处窗内检索;引用段/硬出处段才直写 plan)
|
|
213
216
|
gtrk split --project "<工程>" --json && gtrk split "<拆分稿>" --project "<工程>" --json
|
|
214
217
|
# ★ 同上铁则:--dirs 钉单片,MUST NOT 传素材夹
|
|
215
218
|
gtrk matrix --project "<工程>" --local --dirs "<这一部片的绝对路径>" --source-window "<出处起,出处止>" --lay 0 --json
|
|
@@ -217,19 +220,23 @@ gtrk matrix describe --plan "<工程>/split/broll-plan.json" --yes --json #
|
|
|
217
220
|
gtrk matrix lay --project "<工程>" --mark-weight 0.3 --highlight-weight 0.2 --gap-fill fast --json
|
|
218
221
|
# ↑ lay 会在「开了权重但本片零缓存覆盖」时告警——看到它就说明 describe 那步漏了或没生效
|
|
219
222
|
|
|
220
|
-
#
|
|
223
|
+
# ⑧ 全局抽帧检查(位次 ④):底轨铺完,对字卡挂点与版式窗口抽帧看主体位置、明暗与原片烧录字幕区
|
|
224
|
+
# (gtrk client frame --at <轨秒> --project "<工程>",图落系统 temp 用完即删);快速成片不另停,结论随订单交给字卡与合成
|
|
225
|
+
# ⑨ 字幕直出
|
|
226
|
+
gtrk subtitle lay --project "<工程>" --style <样式> --color <色> --json
|
|
227
|
+
# ⑩ 精剪包装:见下方引注
|
|
228
|
+
# ⑪ 字卡(叠层,MG 临场泛化,公约 §三)——先 gtrk mg status 看 todo,被合成接管的不产
|
|
229
|
+
gtrk mg --project "<工程>" --json
|
|
230
|
+
# ⑫ BGM(0.10 垫底、短了自动循环铺满;不受顺序约束,放这里只是习惯)
|
|
221
231
|
# BGM 是带人声歌曲(audio_type:"song")→ MUST 下载 accompaniment_url 伴奏版上轨,
|
|
222
232
|
# 不得用 download_url 原曲(人声与配音会打架)
|
|
223
|
-
gtrk mg --project "<工程>" --json
|
|
224
233
|
# --beat-align 的高潮点取自 split.beats 的 narrative / container_stage(升华段 → 容器转折 → 回扣段);
|
|
225
234
|
# 拆分稿没带这两个字段 ⇒ 落 0.75×全片兜底档,**CLI 会明示那是猜的**。不接受就用 --climax <轨秒> 指定。
|
|
226
235
|
# 两侧都够长时零平铺(恰好 1 个 clip);不够长才按小节线平铺补齐、接缝吸附 downbeat。
|
|
227
236
|
gtrk audio lay --project "<工程>" --file "<bgm>" --volume 0.1 --beat-align --json
|
|
228
|
-
gtrk subtitle lay --project "<工程>" --style <样式> --color <色> --json
|
|
229
|
-
# 精剪包装:见下方引注
|
|
230
237
|
```
|
|
231
238
|
|
|
232
|
-
>
|
|
239
|
+
> **⑩ 精剪包装(字幕之后、字卡之前)**:交棒 `/gtrk-composite` 做**精剪包装**(公约 §三⁵:快速成片取拆分稿的版式窗口 `--mode split`(拆分稿没有 `layouts` 键才 `auto` ≤ 25%)→ 逐窗口复核 → 构建机检 → 铺轨烘焙,不停;回执列「做了 / 建议了没做 / 烘焙结果」;逐步推进按合成 skill 两个检查点停;开工时用户说了不要就跳过)。没有讲者的工程只用 B-roll 与排版。
|
|
233
240
|
|
|
234
241
|
> **停顿太长时**:自训音色加 `--fragment-interval 0.2`(合成时就对);云引擎音色**不支持**该参数(传了会报错,不会静默忽略),改在合成后跑 `gtrk audio tighten --project <工程>` 收紧句间停顿(纯本地零计费;只压跨句界的停顿,句内换气与原声引用段不动)。
|
|
235
242
|
|
|
@@ -285,7 +292,7 @@ gtrk subtitle lay --project "<工程>" --style <样式> --color <色> --json
|
|
|
285
292
|
| 模式 | 停点 |
|
|
286
293
|
|---|---|
|
|
287
294
|
| **快速成片**(默认) | 开工七问 → 检查点①(必停一次)→ 一杆到底(含精剪包装,合成静帧随交付一次给) |
|
|
288
|
-
| **逐步推进** | 每步停等确认(索引结论 / 稿件 / 对照表 /
|
|
295
|
+
| **逐步推进** | 每步停等确认(索引结论 / 稿件 / 对照表 / 拆分稿含版式窗口 / 铺排结果 / 抽帧检查 / 字幕 / 精剪包装按合成 skill 两个检查点 / 字卡 / BGM 逐项) |
|
|
289
296
|
|
|
290
297
|
差别只在停几次;三条腿自检见《成片型图纸公约》§四。
|
|
291
298
|
|
|
@@ -19,7 +19,7 @@ metadata:
|
|
|
19
19
|
|
|
20
20
|
先跑 `gtrk doctor`(它顺带验证 `gtrk` 命令本身在不在):
|
|
21
21
|
- **`gtrk` 找不到 / command not found** → CLI 没装 → 让用户装 `npm i -g @gitruck/cli@latest`(需先有 Node.js;外部 agent 的前置;内置 agent 已具备,跳过),再重试。
|
|
22
|
-
- 报「缺 API Key」→ 让用户先跑一次 `gtrk init`(一次性配 Key +
|
|
22
|
+
- 报「缺 API Key」→ 让用户先跑一次 `gtrk init`(一次性配 Key + 剪映目录,**交互式、需真终端**,你别替他跑)(用户还没有 Key 就转告:打开 https://cloud.ai-mcn.tv/zh-CN ,点「注册 / 登录」,进入「仪表盘」复制 API Key;报错里也写着这句)。
|
|
23
23
|
- 报云端连不上 / 剪映目录没配 → 照提示让用户处理。
|
|
24
24
|
- 全绿就往下走。
|
|
25
25
|
|
|
@@ -1,13 +1,15 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: gtrk-splitter
|
|
3
|
-
description: 视觉拆分派单器——把一条已剪好的口播工程(gtrk + transcript)拆成 beat 级「视觉拆分稿」,为每个连续文稿段指定唯一主层(A_ROLL 真人出镜 / MG 动态图 / AI_DRAMA 再现 / FILM_BROLL 影视素材)+
|
|
3
|
+
description: 视觉拆分派单器——把一条已剪好的口播工程(gtrk + transcript)拆成 beat 级「视觉拆分稿」,为每个连续文稿段指定唯一主层(A_ROLL 真人出镜 / MG 动态图 / AI_DRAMA 再现 / FILM_BROLL 影视素材)+ 辅助层,并声明哪些时间窗交给合成(版式窗口),产机器可消费的派单清单(MG 槽位 / B-roll 检索队列 / AI 动画队列 / 合成窗口),要成片时再交棒后续铺轨。当用户想「文稿视觉化拆分 / 视觉拆分稿 / beat 时间线 / 派分镜 / A-roll B-roll 分配 / 哪些段做动态图·哪些做 AI 情景动画·哪些用影视素材·哪些段交合成 / 给这条口播派单」时使用本 skill。凡涉及把口播成片拆成分镜派工,优先用本 skill 驱动 gtrk CLI 的 `split` 命令,绝不手写时码、绝不抄原文定位。
|
|
4
4
|
metadata:
|
|
5
5
|
in_app_agent: true
|
|
6
6
|
---
|
|
7
7
|
|
|
8
8
|
# 视觉拆分派单器(gtrk-splitter)
|
|
9
9
|
|
|
10
|
-
把一条**已经剪好的口播工程**(`gtrk` 工程文件 + `transcript.json` 句级词表),拆成一份可直接派工的 **beat 级视觉拆分稿**,再交给 `gtrk split` 校验落地,产出机器可消费的派单清单。**CLI 是手(投影/校验/落地/写时码),你是脑(切 beat、选 lane、写 handoff
|
|
10
|
+
把一条**已经剪好的口播工程**(`gtrk` 工程文件 + `transcript.json` 句级词表),拆成一份可直接派工的 **beat 级视觉拆分稿**,再交给 `gtrk split` 校验落地,产出机器可消费的派单清单。**CLI 是手(投影/校验/落地/写时码),你是脑(切 beat、选 lane、写 handoff、判哪些段交合成)。**
|
|
11
|
+
|
|
12
|
+
> **你是唯一的视觉规划者**(《成片型图纸公约》§二⁗「画面三层」):底(拍到的、找到的画面)、版(合成:一段时间里整幅画面重排)、叠(叠层 OV:一颗点出一个对象)三层都在这一步定。哪些段交合成,在拆分稿顶层 `layouts[]` 里写成**版式窗口**;下游 `gtrk composite plan --mode split` 照它做,不再另挑。
|
|
11
13
|
|
|
12
14
|
> **本 skill 已含你需要的全部信息**(流程、字段契约、枚举、拆分方法论、铁律)。字段细节与升级规则读 `references/field-schema.md`;模仿文档形态读 `references/example-visual-split.json`(《过拟合》20-beat 金样,机器 JSON)与 `references/example-visual-split.md`(同一金样的人读版式参照)。
|
|
13
15
|
|
|
@@ -19,20 +21,22 @@ metadata:
|
|
|
19
21
|
|
|
20
22
|
## ★ MG 槽位的视觉职能 `visual_job`(必填)
|
|
21
23
|
|
|
22
|
-
每个 MG 槽位(含 overlay aux
|
|
24
|
+
每个 MG 槽位(含 overlay aux)与每个版式窗口都要回答一个问题:**这段为什么要动画。** 四档,档位同时决定它归哪层(公约 §二⁗「叠层一颗一件事」):
|
|
23
25
|
|
|
24
|
-
| 取值 | 判据 | 还要填什么 |
|
|
25
|
-
|
|
26
|
-
| `statement` | 就一句话 / 一个词 / 一个标题 | — |
|
|
27
|
-
| `relation` | 出现**对比 / 并置 / 因果 / 包含 / 递进 / 聚合 / 循环** | `visual_brief` 必填 |
|
|
28
|
-
| `data` | 具体的量、步骤或拓扑 | — |
|
|
29
|
-
| `decor` | 不承载信息(转场 / 角标) | — |
|
|
26
|
+
| 取值 | 判据 | 还要填什么 | 归哪层 |
|
|
27
|
+
|---|---|---|---|
|
|
28
|
+
| `statement` | 就一句话 / 一个词 / 一个标题 | — | 叠(点在讲者或 B-roll 上);要整幅标题牌 ⇒ 版(满屏卡) |
|
|
29
|
+
| `relation` | 出现**对比 / 并置 / 因果 / 包含 / 递进 / 聚合 / 循环** | `visual_brief` 必填 | 版:要素材画面或要动讲者 ⇒ 版式窗口(带槽位的合成);纯排版整幅 ⇒ 零槽位版式窗口(满屏卡,`zero_slot: true`) |
|
|
30
|
+
| `data` | 具体的量、步骤或拓扑 | — | 单个数 ⇒ 叠;图表、步骤、拓扑等多元素 ⇒ 版(纯排版 ⇒ 满屏卡) |
|
|
31
|
+
| `decor` | 不承载信息(转场 / 角标) | — | 叠(角标)或版(整幅转场卡 = 满屏卡) |
|
|
30
32
|
|
|
31
33
|
⚠️ **判据是「这段的意思里有没有第二个东西与它并置」,不是「用不用文字」。**
|
|
32
34
|
|
|
33
35
|
一块「温柔—坚定 / 和善—有立场」的并置面板**是纯文字画的**,但它表达的是对照关系
|
|
34
36
|
⇒ `relation`,**不是** `statement`。第一档刻意叫 `statement` 而不叫 `text`——
|
|
35
37
|
叫 `text` 会让「它是文字做的」直接滑成「它是 text 档」,把结构化排版拍平成一张字卡。
|
|
38
|
+
它归**版**:要么写成零槽位版式窗口(满屏卡,纯排版),要么讲者收进圆窗、面板占主画面——那就开带槽位的版式窗口交合成。
|
|
39
|
+
**MUST NOT 把两列并置这类结构派成浮在讲者身上的叠层。**
|
|
36
40
|
|
|
37
41
|
### `visual_brief`(`relation` 档必填)
|
|
38
42
|
|
|
@@ -65,6 +69,65 @@ metadata:
|
|
|
65
69
|
它**拦不住**「同一会话里更早读过 MG 图纸、脑子里已经装着那批模板」——那种锚定不留痕,也判不出来。
|
|
66
70
|
别把它当成杜绝;它降低的是「顺手去库里找」的概率,不是消灭锚定。
|
|
67
71
|
|
|
72
|
+
## ★ 判层一问与版式窗口(`layouts[]`)
|
|
73
|
+
|
|
74
|
+
**每段先问一句**(公约 §二⁗,正本不在这里):这段要不要改变整幅画面的构成——讲者挪位、缩小或裁成圆窗;多画面并置;换底;整幅盖住?
|
|
75
|
+
|
|
76
|
+
- **要** ⇒ **版**。要讲者同屏或要素材画面 ⇒ 开**版式窗口**交合成;纯排版、不要讲者也不要素材(标题牌、章节卡、数据卡、纯排版的并置面板)⇒ **满屏卡**:零槽位版式窗口(`zero_slot: true`,见下方「满屏卡」),窗口底下的 beat 派 `A_ROLL`。MUST NOT 再派 `lane: MG` + `category: fullscreen`。
|
|
77
|
+
- **只在现有画面上点出一个对象** ⇒ **叠**:overlay aux 或 `category: overlay` 的 MG。一颗一件事。
|
|
78
|
+
- **都不要** ⇒ 底直出(A_ROLL / FILM_BROLL / AI_DRAMA 本身)。
|
|
79
|
+
|
|
80
|
+
**版式窗口不占车道**:beat 的 `lane` 照旧描述「这段底下要什么画面」(B-roll 检索、AI 队列、客户端色带都靠它),窗口是盖在若干 beat 之上的一层声明。
|
|
81
|
+
讲者缩进圆窗加对照板 ⇒ beat 照派 `A_ROLL`,再挂一个窗口;要 B-roll 当槽位 ⇒ beat 照派 `FILM_BROLL`(检索照常),窗口里用它。
|
|
82
|
+
(旧绕法「派 `A_ROLL`、在 `visual_task` 里写『交合成层』」到此为止,改用正式写法。)
|
|
83
|
+
|
|
84
|
+
```jsonc
|
|
85
|
+
"layouts": [
|
|
86
|
+
{
|
|
87
|
+
"id": "L01", // L + 两位序号,全稿唯一
|
|
88
|
+
"span": { "from": "u0012", "to": "u0020" }, // utterance id 区间,规则同 beat
|
|
89
|
+
"visual_job": "relation", // 四档同上表;窗口多为 relation / data,标题牌加讲者圆窗是 statement
|
|
90
|
+
"visual_brief": "讲者收进右下圆窗,女儿 / 妈妈两画上下分区对照", // 必填:几画、谁在哪、何时换——合成的设计说明从这句起笔
|
|
91
|
+
"slot_hints": ["讲者:主轨", "女儿:B04 的 B-roll", "妈妈:B05 的 B-roll"] // 可选:打算放什么,参考不绑定
|
|
92
|
+
}
|
|
93
|
+
],
|
|
94
|
+
"layout_note": "(layouts 为空数组时必填:为什么全片不交合成)",
|
|
95
|
+
"layout_density_note": "(窗口总长超过全片 25% 时写:为什么要这么多)"
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
### 满屏卡:零槽位版式窗口
|
|
99
|
+
|
|
100
|
+
整幅纯排版、没有画面槽位的那种版(标题牌、章节卡、数据卡、纯排版的并置面板)写成**零槽位版式窗口**,由合成以零槽位场景承接(随合成在本机烘焙出片、不再云渲):
|
|
101
|
+
|
|
102
|
+
```jsonc
|
|
103
|
+
// B09 照派 A_ROLL(底下画面被整幅盖住,不另找),再挂一个零槽位窗口
|
|
104
|
+
{ "id": "L02", "span": { "from": "u0031", "to": "u0033" }, // 恰好盖住 B09
|
|
105
|
+
"zero_slot": true, // 满屏卡:没有画面槽位,MUST NOT 写 slot_hints
|
|
106
|
+
"visual_job": "statement", "visual_brief": "章节卡:第二部分 · 成本",
|
|
107
|
+
"theme": "chapter-card|第二部分", // 可选:主题,交给合成作参考
|
|
108
|
+
"bg": "#F4F1EA" } // 可选:底色 #RRGGBB / #RRGGBBAA,格式不对告警忽略
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
- 满屏卡常见 2–5 秒:**不告**「短于 5 秒」(仍告长于 25 秒),**不计** 25% 密度(它替代的是原来就不计密度的满屏 MG);
|
|
112
|
+
- 窗口底下的 beat 派 `A_ROLL`;零槽位窗口盖住 `FILM_BROLL` / `AI_DRAMA` beat ⇒ 告警(底下画面会被整幅盖住,检索 / 出片白做);
|
|
113
|
+
- 屏上文字由合成从口播原话取(字幕输入),`visual_brief` 写「排成什么」,不另编文案;
|
|
114
|
+
- **旧稿自动转换**:稿里还有 `lane: MG` + 满屏类品类(`fullscreen`、`title` 及遗留 `mg-fullscreen` / `op-ed-title`)的 beat,`gtrk split` 落地时一律转成满屏卡——窗口 id `L` + beat id(B07 ⇒ `LB07`),`visual_job` / `visual_brief` / `theme` / `bg` 取自它的 handoff,beat 按 `A_ROLL` 落地;挂在它上面的叠层 aux 记 `covered_by_layout`、要点进窗口的 `covered_overlays`。落地回执逐条列出「B07 → LB07」,**拆分稿文件不改**。看到这条回执照常推进(转换已生效),往后的稿子直接写零槽位窗口;
|
|
115
|
+
- 写了 `layouts` 键的稿子里,`lane: MG` 的主 beat 没写 `category` ⇒ 告警「按叠层理解」——叠层写 `category: overlay`,满屏卡写零槽位窗口,别让它含糊。
|
|
116
|
+
|
|
117
|
+
字段正本与校验细则见 `references/field-schema.md`。`gtrk split` 的规则(拒 = 非 0 退出、零写入、逐条报窗口 id):
|
|
118
|
+
|
|
119
|
+
1. 两端 id 存在、不倒序;窗口之间不重叠 —— 拒;
|
|
120
|
+
2. 窗口端点落在某个 beat 的 span 中间 —— 拒(窗口要么整盖一个 beat、要么不碰它;beat 之间的空隙可以当端点);
|
|
121
|
+
3. 满屏类 MG beat(落地会转成满屏卡)与窗口有交集 —— 拒(同一时刻两个版);`zero_slot: true` 又写了非空 `slot_hints` —— 拒;
|
|
122
|
+
4. 整段落在窗口里的叠层(overlay aux 的挂载区间、`category: overlay` 的 MG beat)—— **一律不派单**(出片时合成窗口里的颗粒不出画),记进 `beats.skipped[]`,原因 `covered_by_layout`;部分重叠 —— 告警、照派。这段要强调一个词,写进 `visual_brief`,由合成场景画;
|
|
123
|
+
(早先的窗口字段 `keep_overlay`「窗口里照派叠层」**已收回**:出片对窗口里的颗粒一律不出画,留着只会预览有、成片无。旧稿写了它只告警、忽略,新稿别写。)
|
|
124
|
+
5. 窗口投影时长在 5–25 秒以外 —— 告警(满屏卡只告长于 25 秒);
|
|
125
|
+
6. 带画面槽位的窗口总时长超过全片 25% 且没写 `layout_density_note` —— 告警(「用户要整片做合成」就是合法理由;满屏卡不计);
|
|
126
|
+
7. 写了 `layouts` 键而数组为空、没写 `layout_note` —— 拒。
|
|
127
|
+
|
|
128
|
+
**`layouts` 键要不要写**:图纸里拆分 MUST 写(有窗口列窗口;判定不做写 `layouts: []` + `layout_note`;用户开工说了不要合成包装,`layout_note` 就记这句)。
|
|
129
|
+
直接找你拆分时缺省也写上。**没写 `layouts` 键 = 旧稿口径**:下游合成回落 `--mode auto` 另挑窗口,只为兼容旧稿保留,新稿别省。
|
|
130
|
+
|
|
68
131
|
## 前置:确认工程 + CLI
|
|
69
132
|
|
|
70
133
|
- 需要一个 **oralcut 产物目录**(跑过 `gtrk oralcut` 得到的目录),里面有 `gtrk/project.gtrk` 与 `transcript/transcript.json`。没有 transcript(旧任务)→ 让用户用新版本重跑 `gtrk oralcut`(恒出 transcript)。
|
|
@@ -100,7 +163,7 @@ gtrk split --project "<oralcut产物目录>" --json
|
|
|
100
163
|
|
|
101
164
|
**抽帧确认底轨画面(凡毛片可能已含视觉包装时必做,勿只凭文稿派单)**:view.json 只给你文字,看不见画面——但毛片未必是素的。**二次过 / 补 ov 场景**(毛片本身是已烧入 MG、AI 情景动画或其他包装的成片再加工)尤其危险:只凭时码派 overlay 会撞上已有包装叠罗汉。姿势:对候选挂点(尤其打算派 `overlay` 的句区间)截时间线上那一刻的画面看一眼——`gtrk client frame --at <track_st> --project "<oralcut产物目录>"`(客户端开着该工程时就是编辑器所见;没开时本地渲出一帧,零计费;图缺省落 `$GTRK_FRAMES_DIR` 或系统临时目录,用完即删,**别落 cwd / agent 自有目录**。⚠️ 别拿 `track_st` 去 seek 毛片:那是剪后时间线上的时刻,粗剪过的工程在毛片里对应的是另一处画面),确认该处画面性质——**裸口播 → 正常派;已有包装 → 避开该区间或另选挂点;拿不准 → 列给用户裁决**。首次过全素毛片可免;一旦毛片来历含「粗剪成片 / 待 ov 补充 / 二次过」字样,此步为硬门。抽帧顺带看清真人主体位置与画面明暗,写进 beat 的语义上下文,供下游产颗粒时构图避让。
|
|
102
165
|
|
|
103
|
-
> 📌 **这一步与 SOP ④ 的全局抽帧检查不是同一件事,两者都要**:这里抽的是**毛片原始画面**(派单前,判该处是裸口播还是已有包装);④ 抽的是**B-roll
|
|
166
|
+
> 📌 **这一步与 SOP ④ 的全局抽帧检查不是同一件事,两者都要**:这里抽的是**毛片原始画面**(派单前,判该处是裸口播还是已有包装);④ 抽的是**B-roll 三源全铺齐后的最终底轨**(字幕、合成、MG 之前,供合成选片与叠层避让)。前者防「派单派到包装上」,后者防「合成与叠层对着不完整底轨做排版」。
|
|
104
167
|
|
|
105
168
|
### 3. 写拆分稿 JSON
|
|
106
169
|
|
|
@@ -126,15 +189,19 @@ gtrk split --project "<oralcut产物目录>" --json
|
|
|
126
189
|
]
|
|
127
190
|
}
|
|
128
191
|
],
|
|
129
|
-
"queues": { "a_roll": [], "mg": [], "ai_drama": [], "film_broll": [] }
|
|
192
|
+
"queues": { "a_roll": [], "mg": [], "ai_drama": [], "film_broll": [] },
|
|
193
|
+
"layouts": [
|
|
194
|
+
{ "id": "L01", "span": { "from": "u0012", "to": "u0020" }, "visual_job": "relation", "visual_brief": "讲者收进右下圆窗,两画上下分区对照" }
|
|
195
|
+
]
|
|
130
196
|
}
|
|
131
197
|
```
|
|
132
198
|
|
|
133
199
|
关键:
|
|
200
|
+
- `layouts` 写法见上节「判层一问与版式窗口」;判定全片不交合成就写 `"layouts": []` 加顶层 `layout_note`。
|
|
134
201
|
- `lane` 四选一 `A_ROLL | MG | AI_DRAMA | FILM_BROLL`;`base_track` 三选一 `真人出镜 | 口播继续 | 旁白主导`。
|
|
135
202
|
- `irreplaceability` 四选一 `必须真人出镜 | 优先 MG | 可被 B-roll 替代 | 可降级处理`。
|
|
136
203
|
- **handoff 按 lane 分型**(校验器会硬查):
|
|
137
|
-
- `MG` → `handoff:{visual_job, visual_brief?, slug_hint?, theme?, bg?, duration_hint}`,**`visual_job` 与 `duration_hint`(秒)必填**(`visual_job` 见上节;`relation` 档另需 `visual_brief
|
|
204
|
+
- `MG` → `handoff:{visual_job, visual_brief?, slug_hint?, theme?, bg?, duration_hint}`,**`visual_job` 与 `duration_hint`(秒)必填**(`visual_job` 见上节;`relation` 档另需 `visual_brief`);`category` 写 `overlay`(叠层,公约 §二⁗;写了 `layouts` 的稿里不写 `category` 会被告警「按叠层理解」)。整幅纯排版的满屏卡**不派 MG**,写零槽位版式窗口(上节「满屏卡」);这一段底下没有画面(配音、旁白段)时也一样——窗口底下的 beat 派 `A_ROLL`,底色写在窗口的 `bg`。`category: fullscreen` 只为旧稿兼容保留,落地会被自动转成满屏卡(详见 field-schema)。
|
|
138
205
|
- `FILM_BROLL` → `handoff:{queries:[...非空], shots?, per_shot_sec?, exclude?, anchors?}`,**`queries` 非空必填**;queries 写**英文长句场景描述**(一条一个意象,避多义动词),**exclude 保持中文**;`anchors` 为关键词锚(圈定指引见下节,细则见 field-schema)。
|
|
139
206
|
- `AI_DRAMA` → `handoff:{narrative?, theme?, emotion_stage?, platform?, shot_count?}`,全可选(下游框架 skill /gtrk-ai-drama 有推断默认)。
|
|
140
207
|
- `A_ROLL` → **无 handoff**(写了会被警告忽略)。
|
|
@@ -165,7 +232,7 @@ gtrk split --project "<oralcut产物目录>" --json
|
|
|
165
232
|
gtrk split "<拆分稿.json>" --project "<oralcut产物目录>" --md --json
|
|
166
233
|
```
|
|
167
234
|
|
|
168
|
-
- 成功:写回 `.gtrk` 的 `struct_meta.split
|
|
235
|
+
- 成功:写回 `.gtrk` 的 `struct_meta.split`(投影快照,含 `layouts`)+ 产 `split/dispatch.json`(派单清单,含合成窗口队列 `composite`)+ `--md` 的 `split/visual-split.md`(人读稿,含「版式窗口」一节)。stdout 回结果 JSON。
|
|
169
236
|
- 失败:**进程非 0 退出、stderr 打逐条错误、无任何写入**。
|
|
170
237
|
|
|
171
238
|
### 5. 修正循环(≤3 轮)
|
|
@@ -177,6 +244,7 @@ gtrk split "<拆分稿.json>" --project "<oralcut产物目录>" --md --json
|
|
|
177
244
|
- `transcript_hash 不匹配` → 转写已变更:**重新跑第 1 步导出视图**,用新 hash 重拆(别硬改 hash 蒙混)。
|
|
178
245
|
- `FILM_BROLL 缺检索 query` / `MG 缺 duration_hint` → 补齐对应 handoff 必填字段。
|
|
179
246
|
- `keyword「…」不是句 uNNNN 文本的子串` / `utterance 不在该 beat 的 span 区间内` / `anchors 至多 2 个` → 锚字段问题:keyword 照原句抄写、utterance 换成关键词真正所在句、锚删到 ≤2 个。
|
|
247
|
+
- 版式窗口:`L02 的起点落在 B10 中间` → 端点挪到 beat 边界(或 beat 之间的空隙);`L01 与 L02 重叠` → 收窄其一;`L03 与 B12:同一区间不能既是满屏卡又是另一个版式窗口` → 二选一:把满屏卡并进 L03(B12 去掉满屏品类,由 L03 一并排),或把 L03 挪开;`零槽位窗口不能写 slot_hints` → 要放素材画面就去掉 `zero_slot`,纯排版就删掉 `slot_hints`;`layouts 为空但缺 layout_note` → 补一句为什么不做。
|
|
180
248
|
|
|
181
249
|
**3 轮仍失败 → 把错误原样呈给用户**,不静默降级、不绕过校验。
|
|
182
250
|
|
|
@@ -184,9 +252,11 @@ gtrk split "<拆分稿.json>" --project "<oralcut产物目录>" --md --json
|
|
|
184
252
|
|
|
185
253
|
落地成功后,读 `split/dispatch.json` + 结果 JSON 的 `beats`,向用户交代:
|
|
186
254
|
- 各车道 beat 数(A_ROLL / MG / AI_DRAMA / FILM_BROLL)。
|
|
187
|
-
- **被跳过的 beat**(span 内 utterance 全被剪,`beats.skipped[]
|
|
255
|
+
- **被跳过的 beat**(span 内 utterance 全被剪,`beats.skipped[]`)及原因;原因是 `covered_by_layout` 的是**被版式窗口接管、不派单的叠层**,说清是哪个窗口接管了哪几颗。
|
|
188
256
|
- **被收缩的 beat**(部分被剪、按存活句包络收窄,`beats.shrunk[]`)——提示人工复核。
|
|
189
|
-
-
|
|
257
|
+
- **版式窗口**:几个窗口、各盖哪几个 beat、怎么排(`visual_brief`),哪几个是满屏卡(零槽位);有窗口长度或总覆盖率的告警照实说。`layouts: []` 时引述 `layout_note`。
|
|
258
|
+
- **满屏 MG 转来的满屏卡**(结果 JSON 的 `layouts.converted`,回执里「B07 → LB07」那行):照实说转了哪几段;派单 `layouts_declared: false` 时交代精剪包装会先 `--mode split` 做满屏卡、再 `--mode auto` 补其余窗口。
|
|
259
|
+
- 下游各拿各的:`dispatch.mg`(MG 槽位表,`composition_id` 已按 `<工程slug>-<beatId>` 命名)/ `dispatch.film_broll`(B-roll 检索队列)/ `dispatch.ai_drama`(AI 动画队列)/ `dispatch.composite`(合成窗口,`gtrk composite plan --mode split` 读它)。
|
|
190
260
|
|
|
191
261
|
### 7. 交棒下游 SOP(按请求范围决定交不交棒)
|
|
192
262
|
|
|
@@ -205,9 +275,10 @@ dispatch 落地、摘要报完之后,**看用户这次要多少**:
|
|
|
205
275
|
|
|
206
276
|
下游各车道是**有先后的 SOP、每步用户可介入**,**不是并行一次铺完**。次序:
|
|
207
277
|
|
|
208
|
-
> **③
|
|
278
|
+
> **③ 底轨三源铺齐(影视素材 / 本地素材 / AI 情景片段)→ ④ 全局抽帧检查画面构图 → ⑤ `gtrk subtitle lay` 上字幕 → ⑥ 合成(版,含满屏卡,`/gtrk-composite`,窗口取自你写的 `layouts`)→ ⑦ 叠层(`gtrk mg`)→ `gtrk render` 收口**(BGM 不受顺序约束;位次正本 `production-order`,公约 §二⁗)
|
|
209
279
|
|
|
210
|
-
**为什么是这个序**:**AI
|
|
280
|
+
**为什么是这个序**:**AI 情景片段属于底轨画面家族,不是叠层**,它和 B-roll 一起先落位。合成与叠层的排版都要「因势象形避主体」,**依赖底轨的最终画面构图**;若 AI 片段在它们之后才回铺,底轨构图就变了,先做的排版是对着「还没有 AI 画面的底轨」做的,AI 片段落位后必然错位、甚至盖住 AI 画面主体。
|
|
281
|
+
**版在叠前**:合成先落位,叠层只产在窗口以外——整段落在窗口里的叠层你在拆分时就没派(`covered_by_layout`),合成后加的窗口由 `gtrk mg status` 标出。**字幕在版前**:合成接管字幕时要读字幕输入,字幕后上场景就得重建。
|
|
211
282
|
|
|
212
283
|
> ⚠️ 旧序(MG 在 AI 情景动画之前)的理由写的是「越往后叠得越上层」——**那是把「工序次序」误当成了「图层次序」**。工序上 AI 片段必须先落位;图层上它本来就在底轨。
|
|
213
284
|
|
|
@@ -215,14 +286,16 @@ dispatch 落地、摘要报完之后,**看用户这次要多少**:
|
|
|
215
286
|
|
|
216
287
|
- **③ B-roll 底轨(两条腿,同一阶段)**
|
|
217
288
|
- **影视 / 本地素材腿**(`dispatch.film_broll` 非空):跑 `gtrk matrix --project <目录>`(检索 + 候选铺轨)→ **提示用户 opencut 里挑选/调整 B-roll**(小眼睛切换对比)。
|
|
218
|
-
- **AI 情景片段腿**(`dispatch.ai_drama` 非空):触发 `/gtrk-ai-drama` skill(持通用分镜 craft + 读栏目 style-lock)产分镜稿(四段描述 + 独立视觉基调 + 时长预算)→
|
|
219
|
-
- ⚠️ **异步等待的口子**:AI 出片是手动异步(外部平台抽卡可能数天),严格串行会把后续无限期卡住。故 `dispatch.ai_drama` 非空时,进
|
|
220
|
-
- **④ 全局抽帧检查画面构图**(关键检查点,无专属 skill、是 agent 纪律):对**三源合并后的最终底轨**抽帧,看主体位置 / 安全区 / 画面朝向 /
|
|
221
|
-
- **⑤
|
|
289
|
+
- **AI 情景片段腿**(`dispatch.ai_drama` 非空):触发 `/gtrk-ai-drama` skill(持通用分镜 craft + 读栏目 style-lock)产分镜稿(四段描述 + 独立视觉基调 + 时长预算)→ 用户去 AI Drama Desk 或可灵 / Vidu 等外部平台出片 → 标准导出包用 `gtrk ai-drama lay` 回填独立 AI 轨(非标准平台才由用户手动回铺)。
|
|
290
|
+
- ⚠️ **异步等待的口子**:AI 出片是手动异步(外部平台抽卡可能数天),严格串行会把后续无限期卡住。故 `dispatch.ai_drama` 非空时,进 ⑥ 合成与 ⑦ MG 的硬门是「**AI 片段已回铺 ∨ 用户明示先跳过**」。走「明示跳过」时你 MUST 把**与 AI beat 相邻或重叠区间的 MG 颗粒**(合成窗口同理)标记为「AI 回铺后待复查构图」,并在交棒 `render` 时把该清单复述给用户——**MUST NOT 静默跳过**。
|
|
291
|
+
- **④ 全局抽帧检查画面构图**(关键检查点,无专属 skill、是 agent 纪律):对**三源合并后的最终底轨**抽帧,看主体位置 / 安全区 / 画面朝向 / 明暗,供合成选片与叠层避让使用。**MUST 停下等用户确认构图无误**再往下走(这与 ③ 铺完那次确认是两次不同的确认)。
|
|
292
|
+
- **⑤ 字幕**:`gtrk subtitle lay --project <目录>`(样式取用户拍板值,没选用 default)。
|
|
293
|
+
- **⑥ 合成**(`dispatch.composite` 非空,含满屏卡):交棒 `/gtrk-composite`,入口 `gtrk composite plan --mode split`——窗口就是你写的版式窗口(满屏卡照「满屏卡」一节做),`visual_brief` 与 `slot_hints` 进各窗口的上下文;派单 `layouts_declared: false`(窗口全是满屏 MG 转来的满屏卡)时接着 `--mode auto` 补其余窗口。`layouts: []` 且没有满屏卡就跳过,交代 `layout_note`。
|
|
294
|
+
- **⑦ 叠层**(`dispatch.mg` 非空):先跑 `gtrk mg status` 看 `todo`(被合成接管的槽位不产),由**栏目 MG 生产 skill** 按各槽位 `handoff`(theme/duration_hint/category)产 html-particle 颗粒,再跑 `gtrk mg --project <目录>`(lint + 铺轨)。
|
|
222
295
|
|
|
223
296
|
**各车道的生产 skill 由栏目配置解析(业务分离)**:读 `style.skills[]`,取 `produces` 归一(旧 `RRV_MG`→`MG`)== 该车道 的条目 → 触发其 `ref` 指向的 skill;`routing:"none"` 跳过;无匹配 = 无生产 skill(B-roll 无需、A_ROLL 就是口播本身)。生产 skill 是栏目资产、留纯净、不知 gtrk 命令。
|
|
224
297
|
|
|
225
|
-
> 每车道有专属**驱动 skill**(懂 SOP 位置 + 管用户检查点):请求覆盖下游时,拆分派单后**交棒 ③ `/gtrk-matrix`**(B-roll 底轨的影视/本地素材腿),AI 车道非空时它再交棒同阶段的 `/gtrk-ai-drama`;三源落齐 + ④
|
|
298
|
+
> 每车道有专属**驱动 skill**(懂 SOP 位置 + 管用户检查点):请求覆盖下游时,拆分派单后**交棒 ③ `/gtrk-matrix`**(B-roll 底轨的影视/本地素材腿),AI 车道非空时它再交棒同阶段的 `/gtrk-ai-drama`;三源落齐 + ④ 抽帧检查过后,上字幕、交棒 ⑥ `/gtrk-composite`,最后 ⑦ `/gtrk-mg`。你(agent)触发 `/gtrk-matrix` 起步即可。**agent 替用户跑 CLI,用户只对话。**
|
|
226
299
|
|
|
227
300
|
#### 逃生门:两种信号都要认(范围 + 节奏)
|
|
228
301
|
|
|
@@ -252,7 +325,7 @@ SHALL 停在派单这一步、SHALL NOT 自动交棒**。两者语义正交,
|
|
|
252
325
|
### 四车道语义(lane 四选一)
|
|
253
326
|
|
|
254
327
|
- **`A_ROLL`(真人出镜)**:信任感来自「观众看见真人正在说」。优先给:体验式钩子、立场转换、关键悬念、情绪抱持、理论升华、结尾发问。
|
|
255
|
-
- **`MG`(动态图 / motion graphics
|
|
328
|
+
- **`MG`(动态图 / motion graphics)**:主要任务是「让观众看懂结构」。优先给:容器概念展开、抽象结构翻译、多概念映射、网络/流程/关系图、容器反转、回扣时的系统动态图。`MG` 车道只派**叠层**:只在现有画面上点一个对象(`category: overlay`,更常见的写法是底轨车道 + overlay aux)。盖住整幅的纯排版(网络 / 流程 / 关系图、数据图表、章节卡)属版——写零槽位版式窗口(满屏卡),底下的 beat 派 `A_ROLL`;要讲者同屏或素材画面一起排的,改派底轨车道 + 带槽位的版式窗口。
|
|
256
329
|
- **`AI_DRAMA`(AI 情景动画)**:靠「演绎一个具体历史瞬间」成立。优先给:历史事件再现、理论家/名人/时代场景的动作演绎、有明确年代·人物·地点暗示的桥段。
|
|
257
330
|
- **`FILM_BROLL`(影视素材)**:靠「沉浸感、情绪、现实质感」成立。优先给:日常痛感、都市情绪、社会事件氛围、关系案例沉浸——不适合 MG 讲解、也不需要历史 reenactment 的段落。
|
|
258
331
|
|
|
@@ -272,10 +345,24 @@ SHALL 停在派单这一步、SHALL NOT 自动交棒**。两者语义正交,
|
|
|
272
345
|
|
|
273
346
|
`quote-card`(金句卡)· `term-callout`(术语解释)· `network-diagram`(关系图)· `archive-caption`(档案标注)· `pause-card`(停顿卡)· `data-annotation`(数据标注)· `timeline-tag`(年份/时间标注)· `overlay`(叠层颗粒)。辅助层不是装饰,是补充理解职责。挂载范围三型:`"same_beat"`(同 beat)/ `{from,to}`(id 区间)/ `{trigger:"uNNNN"}`(触发点)。
|
|
274
347
|
|
|
275
|
-
**前七类纯建议性**(只进人读稿一行摘要,不承接派单);**第八类 `overlay`
|
|
348
|
+
**前七类纯建议性**(只进人读稿一行摘要,不承接派单);**第八类 `overlay` 承接颗粒派单**——底轨主视觉(讲者、`FILM_BROLL` B-roll)之上叠一颗透明颗粒、点出一个对象时用它,必带 `handoff:{visual_job(必填,见上节), visual_brief?, duration_hint(正数秒,必填), category?, slug_hint?, theme?, bg?}`。⚠️ overlay aux 是**叠**:一颗一件事,`visual_job` 只取 `statement`、`decor` 或单个数的 `data`;底轨之上要画「两样东西的关系」、概念图解、多元素图表 ⇒ 那不是叠层,开版式窗口(纯排版就写零槽位窗口 = 满屏卡),别把它塞进一颗透明颗粒。落在版式窗口里的 overlay aux 一律不派(`covered_by_layout`),那里要强调的东西写进窗口的 `visual_brief`。`gtrk split` 落地时投影成派生颗粒(`composition_id=<slug>-<beatId>-aux<n>`,进 `dispatch.mg`,后续 `gtrk mg` 铺透明颗粒)。脑手分工:**你(脑)判断该不该叠 overlay、写 handoff 语义;CLI(手)投影落轨写时码**。`overlay` mount 只用 `same_beat` / `{from,to}`(`{trigger}` 一期不支持,会被 skip 告警)。细则见 `references/field-schema.md`。
|
|
276
349
|
|
|
277
350
|
**何时叠 overlay(通用原则,别只想着「底轨之上叠概念图」)**:另一条高频触发是**重点词 / 点题强调**——文稿出现「**这就是 X**」「**这正是 X**」「**X,其实就是 Y**」「**说白了就是 X**」这类**点题、下定义、指认关键概念**的短语时,在该 beat 叠一层 `overlay` 透明颗粒,把**关键词/关键概念视觉「点」出来**(浮在主视觉之上、不挡主体),让重点被强调、而非随口播平铺过去。这是给透明叠层的一条**系统性来源**:每条口播里的点题/定义句,都是 overlay 候选——常能显著提升叠层密度。判断权仍在你(脑):**不是每个「这就是」都叠**,挑真正的点题、关键定义、概念指认、金句收束处;**overlay 稀缺才有力,滥用则失焦**。(叠层长什么样、用什么强调色/动效,归栏目的 MG 生产 skill,不在拆分层定。)
|
|
278
351
|
|
|
352
|
+
### 哪里该开版式窗口(判层一问的提示信号)
|
|
353
|
+
|
|
354
|
+
下面这些信号常意味着「这段要改变整幅画面的构成」——是提示不是判据,最终仍以判层一问为准(原先合成 `--mode auto` 自己按这张表挑窗口,现在由你在拆分时判):
|
|
355
|
+
|
|
356
|
+
| 信号 | 常见的版 |
|
|
357
|
+
|---|---|
|
|
358
|
+
| 几秒内要连着换好几个画面(多个 B-roll 短镜头) | 逐句换画面,讲者收进圆窗压角 |
|
|
359
|
+
| 列举(「第一……第二……」「打耳钉 / 抽烟 / 喝酒」) | 并列卡片逐项亮起 |
|
|
360
|
+
| 对照 / 转折(「她会……而妈妈……」) | 上下或左右分区对照 |
|
|
361
|
+
| 具体数字成组出现(多个量的比较) | 图表、数轴、对比柱(单个数用叠层就够) |
|
|
362
|
+
| 章节转折、开场 / 收尾 | 标题牌、章节过门(讲者缩窗或整幅卡) |
|
|
363
|
+
|
|
364
|
+
**密度**:窗口总长缺省不超过全片四分之一(超了写 `layout_density_note`);**先求准再求满**——没有具体可看、也不需要重排的段,让讲者或底轨直出。窗口端点落在 beat 边界,单窗 5–25 秒为宜。
|
|
365
|
+
|
|
279
366
|
### 升级规则(辅助层 → 主层)
|
|
280
367
|
|
|
281
368
|
辅助层满足任一条件时,**别再当辅助层**,切出下一个 beat 并把它升级为新 `lane` 主层:连续 2-3 秒成为主要理解入口 / 视觉上占据主体 / 观众看不到它就无法理解当前论证。前文意象在后文被重新调用时,**不要合并两段文稿**——在后文 beat 里写 `callback_of:"B07"`。
|
|
@@ -291,6 +378,11 @@ SHALL 停在派单这一步、SHALL NOT 自动交棒**。两者语义正交,
|
|
|
291
378
|
- 每个 MG 槽位(含 overlay aux)有没有 `visual_job`?`relation` 的有没有 `visual_brief`?
|
|
292
379
|
- ★ 有没有**因为「这段只有一句话」就一律填 `statement`**?逐条回看:这段的意思里**有没有第二个东西与它并置**(对比 / 因果 / 递进 / 聚合)——有就是 `relation`,哪怕你打算用纯文字画它。
|
|
293
380
|
- 拆分稿里有没有出现具体模板 id(`tfx-*`)?(判红;派单这一步不该看得见模板库)
|
|
381
|
+
- ★ **判层**:每段过了判层一问吗?会改变整幅画面构成的(讲者缩圆窗、多画并置、换底、整幅盖住)开了版式窗口(纯排版的是零槽位窗口 = 满屏卡),没有塞进叠层、也没派 `category: fullscreen` 的 MG?叠层(overlay aux、`category: overlay`)是不是一颗一件事?
|
|
382
|
+
- **满屏卡**:零槽位窗口没写 `slot_hints`?窗口底下的 beat 派的是 `A_ROLL`(不是 FILM_BROLL / AI_DRAMA)?`bg` 是 `#RRGGBB` 写法?
|
|
383
|
+
- **版式窗口端点**:每个窗口的 `from` / `to` 都落在 beat 边界(或 beat 之间的空隙),没切进某个 beat 中间?窗口之间不重叠、不盖住满屏类 MG beat?
|
|
384
|
+
- **窗口里的叠层**:有没有叠层整段落在窗口里?那几颗一律不派——要强调的词写进了窗口的 `visual_brief` 吗?还是这颗叠层其实该挪到窗口外?
|
|
385
|
+
- **`layouts` 键**:写了吗?是空数组的话,顶层 `layout_note` 写了为什么不做吗?窗口总长超过全片 25% 时写了 `layout_density_note` 吗?
|
|
294
386
|
- `transcript_hash` 是不是原样透传自视图?
|
|
295
387
|
- 拆分稿里有没有混进任何秒级时码字段?(必须零时码)
|
|
296
388
|
|
|
@@ -428,19 +428,12 @@
|
|
|
428
428
|
"to": "u0041"
|
|
429
429
|
},
|
|
430
430
|
"base_track": "旁白主导",
|
|
431
|
-
"lane": "
|
|
431
|
+
"lane": "A_ROLL",
|
|
432
432
|
"narrative": "reversal-elevation",
|
|
433
433
|
"container_stage": "flip",
|
|
434
434
|
"rhythm": "渐升",
|
|
435
435
|
"visual_task": "用偏差-方差权衡、插值阈值、双重下降曲线完成过拟合到泛化的结构反转",
|
|
436
|
-
"irreplaceability": "
|
|
437
|
-
"handoff": {
|
|
438
|
-
"visual_job": "data",
|
|
439
|
-
"slug_hint": "overfit-to-double-descent",
|
|
440
|
-
"theme": "overfitting",
|
|
441
|
-
"bg": "paper",
|
|
442
|
-
"duration_hint": 15
|
|
443
|
-
},
|
|
436
|
+
"irreplaceability": "可降级处理",
|
|
444
437
|
"aux_layers": [
|
|
445
438
|
{
|
|
446
439
|
"type": "data-annotation",
|
|
@@ -552,6 +545,34 @@
|
|
|
552
545
|
]
|
|
553
546
|
}
|
|
554
547
|
],
|
|
548
|
+
"layouts": [
|
|
549
|
+
{
|
|
550
|
+
"id": "L01",
|
|
551
|
+
"span": {
|
|
552
|
+
"from": "u0042",
|
|
553
|
+
"to": "u0045"
|
|
554
|
+
},
|
|
555
|
+
"visual_job": "relation",
|
|
556
|
+
"visual_brief": "讲者收进右下圆窗,主画面左右两画并置「死循环」与「螺旋上升」;说到「认同你的症状」时螺旋那一画放大占满主画面",
|
|
557
|
+
"slot_hints": [
|
|
558
|
+
"讲者:主轨,右下圆窗",
|
|
559
|
+
"死循环:纯排版的闭环线条(回扣 B14 的循环意象)",
|
|
560
|
+
"螺旋上升:纯排版的上升螺旋"
|
|
561
|
+
]
|
|
562
|
+
},
|
|
563
|
+
{
|
|
564
|
+
"id": "L02",
|
|
565
|
+
"span": {
|
|
566
|
+
"from": "u0039",
|
|
567
|
+
"to": "u0041"
|
|
568
|
+
},
|
|
569
|
+
"visual_job": "data",
|
|
570
|
+
"visual_brief": "满屏卡:一条双重下降曲线,误差先降后升、越过插值阈值再次下降;偏差-方差、插值阈值、双重下降三个术语随口播依次标在曲线上",
|
|
571
|
+
"zero_slot": true,
|
|
572
|
+
"theme": "overfitting|双重下降",
|
|
573
|
+
"bg": "#F4F1EA"
|
|
574
|
+
}
|
|
575
|
+
],
|
|
555
576
|
"queues": {
|
|
556
577
|
"a_roll": [
|
|
557
578
|
{
|
|
@@ -574,6 +595,10 @@
|
|
|
574
595
|
"beat": "B15",
|
|
575
596
|
"note": "主持人先接住观众的绝望,不急着讲希望,先让被理解成立"
|
|
576
597
|
},
|
|
598
|
+
{
|
|
599
|
+
"beat": "B16",
|
|
600
|
+
"note": "用偏差-方差权衡、插值阈值、双重下降曲线完成过拟合到泛化的结构反转"
|
|
601
|
+
},
|
|
577
602
|
{
|
|
578
603
|
"beat": "B17",
|
|
579
604
|
"note": "主持人把双重下降翻译回人的生命经验,让观众感到我不是死循环而是螺旋上升"
|
|
@@ -600,10 +625,6 @@
|
|
|
600
625
|
"beat": "B14",
|
|
601
626
|
"note": "把神经递质、创伤印痕、代际传递、大他者压成一张逐步收紧的因果网"
|
|
602
627
|
},
|
|
603
|
-
{
|
|
604
|
-
"beat": "B16",
|
|
605
|
-
"note": "用偏差-方差权衡、插值阈值、双重下降曲线完成过拟合到泛化的结构反转"
|
|
606
|
-
},
|
|
607
628
|
{
|
|
608
629
|
"beat": "B19",
|
|
609
630
|
"note": "把前文幽灵堵车回调出来,用自动驾驶车辆吸收刹车波浪的系统动画做出解法"
|
|
@@ -307,14 +307,13 @@ default_base_track: 真人口播打底
|
|
|
307
307
|
## B16
|
|
308
308
|
- 文稿范围:`在传统的机器学习理论中……展现出了不可思议的泛化能力和“涌现”出的智能`
|
|
309
309
|
- 底轨:`旁白主导`
|
|
310
|
-
- 主层:`
|
|
310
|
+
- 主层:`A_ROLL`(满屏卡:零槽位版式窗口 L02 盖住这段,见「版式窗口」)
|
|
311
311
|
- 叙事功能:`reversal-elevation`
|
|
312
312
|
- 容器阶段:`flip`
|
|
313
313
|
- 节奏标签:`渐升`
|
|
314
314
|
- 视觉任务:`用偏差-方差权衡、插值阈值、双重下降曲线完成“过拟合 -> 泛化”的结构反转`
|
|
315
|
-
-
|
|
316
|
-
-
|
|
317
|
-
- MG 提示:`reversal-elevation/overfit-to-double-descent`
|
|
315
|
+
- 拆分理由:`容器的希望面在这里正式出现,最适合由一张整幅数据卡完成说服——纯排版、不要讲者也不要素材,写成满屏卡`
|
|
316
|
+
- 不可替代性:`可降级处理`
|
|
318
317
|
|
|
319
318
|
### 辅助层 B16.A1
|
|
320
319
|
- 类型:`data-annotation`
|
|
@@ -404,6 +403,30 @@ default_base_track: 真人口播打底
|
|
|
404
403
|
- 说明:`保留一个极简的结尾文字层,让问题在黑场里继续回荡`
|
|
405
404
|
- 必要性:`建议`
|
|
406
405
|
|
|
406
|
+
# 版式窗口
|
|
407
|
+
|
|
408
|
+
## L01
|
|
409
|
+
- 文稿范围:`人类的历史,人类的心智,不也是如此吗?……认同你的症状,你才能获得一点点真正的自由`
|
|
410
|
+
- 职能:`relation`
|
|
411
|
+
- 覆盖 beat:`B17`、`B18`(两段照派 `A_ROLL`,窗口不占车道)
|
|
412
|
+
- 怎么排:`讲者收进右下圆窗,主画面左右两画并置「死循环」与「螺旋上升」;说到「认同你的症状」时螺旋那一画放大占满主画面`
|
|
413
|
+
- 槽位打算:`讲者:主轨,右下圆窗`
|
|
414
|
+
- 槽位打算:`死循环:纯排版的闭环线条(回扣 B14 的循环意象)`
|
|
415
|
+
- 槽位打算:`螺旋上升:纯排版的上升螺旋`
|
|
416
|
+
- 被接管而不派的叠层:`(无)`
|
|
417
|
+
- 拆分理由:`「死循环 vs 螺旋上升」是两个东西的对照,要把讲者挪进圆窗、主画面让给并置——改变整幅画面的构成,归版(合成),不做叠层`
|
|
418
|
+
|
|
419
|
+
## L02
|
|
420
|
+
- 文稿范围:`在传统的机器学习理论中……展现出了不可思议的泛化能力和“涌现”出的智能`
|
|
421
|
+
- 职能:`data`
|
|
422
|
+
- 零槽位:满屏卡(整幅纯排版,没有画面槽位)
|
|
423
|
+
- 覆盖 beat:`B16`(照派 `A_ROLL`,底下画面被整幅盖住,不另找)
|
|
424
|
+
- 怎么排:`满屏卡:一条双重下降曲线,误差先降后升、越过插值阈值再次下降;偏差-方差、插值阈值、双重下降三个术语随口播依次标在曲线上`
|
|
425
|
+
- 主题:`overfitting|双重下降`
|
|
426
|
+
- 底色:`#F4F1EA`
|
|
427
|
+
- 被接管而不派的叠层:`(无)`
|
|
428
|
+
- 拆分理由:`双重下降是多元素的数据图,整幅纯排版、不要讲者也不要素材画面——归版,写成零槽位窗口(满屏卡),不派 MG`
|
|
429
|
+
|
|
407
430
|
# Production Queues
|
|
408
431
|
|
|
409
432
|
## A_ROLL Queue
|
|
@@ -413,6 +436,7 @@ default_base_track: 真人口播打底
|
|
|
413
436
|
- `B10` 谷底前的关键发问
|
|
414
437
|
- `B13` 二幕谷底核心刺点
|
|
415
438
|
- `B15` 第三幕抱持入口
|
|
439
|
+
- `B16` 双重下降反转(满屏卡 L02 盖住,底下不另找画面)
|
|
416
440
|
- `B17` 双重下降重新翻译回人的生命经验
|
|
417
441
|
- `B18` “认同你的症状”的主体性重构
|
|
418
442
|
- `B20` 结尾回扣式发问
|
|
@@ -422,7 +446,6 @@ default_base_track: 真人口播打底
|
|
|
422
446
|
- `B05` 过拟合概念展开
|
|
423
447
|
- `B06` AI 结构映射到心理结构
|
|
424
448
|
- `B14` 神经递质/创伤/代际/大他者因果网
|
|
425
|
-
- `B16` 双重下降反转
|
|
426
449
|
- `B19` 幽灵堵车系统解法与回扣
|
|
427
450
|
|
|
428
451
|
## AI_DRAMA Queue
|