@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.
@@ -400,6 +400,7 @@ gtrk matrix --project "<split 产物目录>" [--lay N] [--score-floor F] [--top-
400
400
  - `memberType`:internal=矩阵成员口(栏目偏好/concept 生效);external=通用口(固定 real_shot + 可商用)。
401
401
  - `lay.laidTracks` / `lay.laidClips`:铺了几条候选轨、几个颗粒(不含空档补片 / 黑底轨)。
402
402
  - `lay.bed`:底板形态——`fill`(缺省:候选片段自带纯黑底、空档在候选轨内补黑)/ `track`(`--black-bed` 旧形态);`lay.bed_fill` = 补了几段、几秒。
403
+ - `lay.flash_gaps`(fill 形态口播工程才有):短于 1.2s 的空档(片段间 1–2 帧缝、锚点前的空档)会在源窗余量内并进相邻片段,`absorbed` 是并掉的;`kept` 是余量不够、照旧补黑的——**成片里会闪**,非空就逐段报给用户(beat / 轨 / 区间 / 差多少余量)。
403
404
  - `lay.blackTrack`:黑底垫轨轨号(只有 `--black-bed` 才有,缺省 null)。
404
405
  - `lay.blackBedHoleSec` / `lay.blackBedHoles`:**纯黑时段**(没有任何 B-roll、靠黑片压住口播的段落;两种形态数值相同),恒全量不按阈值过滤——非零就主动报(哪个 beat、几秒、在哪),这是粗剪期既定取舍不是故障。
405
406
  - `lay.removedTracks` / `lay.keptEditedTracks`:剥了哪些旧自产轨 / 因「你编辑过」保留未剥的轨。删了什么必须跟用户说。
@@ -447,6 +448,7 @@ gtrk matrix --project "<split 产物目录>" [--lay N] [--score-floor F] [--top-
447
448
  | 「像但不能用」(水印/字幕/黑边混进候选) | 配方 B 的标准场景:`describe --plan` → 你删掉命中的 result → `matrix lay`。**CLI 不会自动剔**(零件不裁定),删不删你判断 |
448
449
  | 某候选非用不可 / 顺序想钦定 | 编辑 plan:该 result 标 `pinned:true` → `matrix lay`。钉选是落位保证(免负词/地板/不二用抢占/紧邻避让),`lay.pinned.yielded` 非空说明确实钉多了在打架,名单逐段指名 |
449
450
  | **出现空档补黑 / 黑底空洞告警** | 不是故障:照 `lay.blackBedHoles` 逐段报给用户,出路=调低 `--score-floor` / opencut 手动补片 / 动线②云端垫底 |
451
+ | **`--online` 结果带 `plan_kept`** | 外网这轮零可铺候选,**既有 plan 没被覆盖**(`planPath` 仍是上一轮的,可直接 `matrix lay`);本轮逐条报错与待核候选在 `plan_kept.online_attempt_path`,照它说明失败原因 |
450
452
  | 每段候选太少不够挑 | `--top-k` 调大重跑 |
451
453
  | 某段有空槽 / 想补特定意象 | `gtrk matrix search "<英文长句场景描述>" --project <目录> --json` 单条补检;影视解说类补检记得带 `--source-window` 保时序 |
452
454
  | 只想先看清单不铺轨 | `--lay 0`(只产 plan);之后铺 = `matrix lay`(不重新检索、不重新烧配额) |
@@ -524,6 +526,9 @@ gtrk patch move --project <dir> --clip <clip_id> --to 5.0
524
526
  gtrk patch trim --project <dir> --clip <clip_id> --out -1s
525
527
  ```
526
528
 
529
+ `gtrk matrix` 铺的片段 `clip_id` 形如 `B05-local-broll-0-3`(beat-来源层-broll-轨内序-槽序;补黑片为 `-bedfill-`),
530
+ 各层互不撞名,`--clip` 可直接寻址。
531
+
527
532
  **MUST NOT 直接编辑 `.gtrk` 的 JSON。** 片段时码是两套并存的(`clip_st`+`clip_ed` 与
528
533
  `clip_st`+`duration`):改一份不改另一份,客户端优先读 `clip_ed`、后端又不强校验它 ⇒
529
534
  **没人报错,成片却用了陈旧出点**。`gtrk patch` 替你做恒等式同步 + 帧对齐 + 写前全档校验。
@@ -123,7 +123,8 @@ description: MG 动态图颗粒铺轨器——成片 SOP 第 ⑤ 步(**最后
123
123
  2. **取块**:`gtrk mg fetch --source text --pick <模板 id> --slot <beatId> --project <目录> --json`,或独立模式 `--as <composition_id> [--duration <坑位秒>] [--out <目录>]`。落盘即可铺,**不需要改写**。
124
124
  - **落点与时长由命令钉定,你不用管**(fix-mg-fetch-text-slot-identity):派单模式的 `composition_id` 取自 `dispatch.mg` 那条(`<工程slug>-<beatId>`,**不是** `--slot` 收的 beat id),产物落 `<产物目录>/mg/<composition_id>.html`;颗粒内嵌 IR 的 `id` 与 `canvas.duration` 被一并钉到「期望 id」与「坑位包络 + 0.3s 余量」(铁律⑦),贴模板末尾的层跟着钉,然后走 `mg compile` 同一条本地编译链重编。产物因此仍是 `ir` 态(云端还能改),且 `mg lint --dispatch` 的 `1-cid-expect` 天然对得上。
125
125
  - `--slot` 与 `--duration` **互斥**:派单模式的包络由 `track_st` / `track_ed` 定,显式给时长会与它打架;独立模式才用 `--duration`。
126
- - 出参里的 `pinned` 写明改了什么(`id` 的 from→to、`duration` 的 from→to、被钉的层);两者都没改时 `changed:false` 且**原字节落盘**(不重编)。
126
+ - 出参里的 `pinned` 写明改了什么(`id` 的 from→to、`duration` 的 from→to、被钉的层);两者都没改、且目标画幅就是模板的 1920×1080 时 `changed:false` 且**原字节落盘**(不重编)。
127
+ - **画幅也由命令定**(fix-text-template-canvas-not-compiled):派单模式按工程 `.gtrk` 的 `video_size` 编,出参 `canvas` / `canvas_from` 写明用了哪个画幅、从哪来;画幅不是 IR 改动,`pinned` 不记它。
127
128
  - **满屏槽位拿不出实心底 ⇒ 致命 `x-category-opaque`,拒落盘**(`gate-fullscreen-slot-needs-solid-bed`)。
128
129
  判据只看**产物**——「这颗有没有满屏实心底」,**不看它是不是模板颗粒**。
129
130
  ⚠️ 派单模式下**通常不用你操心**:`dispatch.mg[].bg` 写了底色的话,取块时会自动钉进
@@ -134,10 +135,14 @@ description: MG 动态图颗粒铺轨器——成片 SOP 第 ⑤ 步(**最后
134
135
  **静态判不出来**,`opaque` 登记不上(画出来了但成片按透明叠加处理)。
135
136
  - 反方向(槽位派 `overlay`、颗粒却是实心)仍是**非致命**告警:那只是多盖了底轨,看得见、改得动,
136
137
  不是「以为有其实没有」的静默落空。两个方向后果不对称,判据也就不对称。
137
- 3. **改字(L0,0 积分)**:把内嵌的 IR 存成 `<id>.ir.json`,改 `slots` 里的文字(也可改 `colors` / `font` / `stroke` / `shadow` / `canvas.duration`),然后 `gtrk mg compile <id>.ir.json --out <目录>`。
138
+ 3. **改字(L0,0 积分)**:把内嵌的 IR 存成 `<id>.ir.json`,改 `slots` 里的文字(也可改 `colors` / `font` / `stroke` / `shadow` / `canvas.duration`),然后 `gtrk mg compile <id>.ir.json --out <目录>`。竖屏 / 方形工程加 `--canvas <工程画幅>`(如 `--canvas 1080x1920`)——`.ir.json` 里不记画幅,不给就按 1920×1080 编;给颗粒 HTML 重置时缺省沿用那颗自己的画幅。
138
139
  4. **改效果(2 积分/候选)**:`gtrk mg edit <particle.html> --say "打字机快一倍,副标改成青色" [--n 1|3]`。`--n` 只收 1 或 3,**它就是计费单位数**。返回的候选带 `scope`:`L1` = 在模板可调范围内,`L2` = 越界了、等于新生成(**不是失败**)。服务端说做不到时会给一句 `refusal`,**如实转述给用户**——他要的是「为什么不能」,不是一个没有解释的错误。
139
140
  5. **lint → 铺**:同中性块,`gtrk mg lint` 过致命项 → `gtrk mg --project <目录>`。
140
- 6. **竖屏工程**:同中性块,契约当前只收 1920×1080。
141
+ 6. **竖屏 / 方形工程**:文字模板按工程画幅现编(IR 住在 1920 参考系、画幅是编译入参),**不用另做**。
142
+ - 派单模式缺省就取工程 `.gtrk` 的 `video_size`,不用给 `--canvas`;给了却与工程不符命令会拒(跨比例挂载是非等比缩放,铺进去就是拉伸)。
143
+ - 找不到 `.gtrk`(只给了 `--dispatch`、或工程文件不在 `gtrk/project.gtrk` / `project.gtrk`)时会按 1920×1080 编并提示——竖屏工程看到这句提示就补 `--canvas 1080x1920` 重取。
144
+ - 独立模式没有工程可取:竖屏要显式 `--canvas 1080x1920`。
145
+ - 取完核一眼出参 `canvas` 等于工程画幅再铺;1.3.7 及更早的 CLI 无论给什么都出 1920×1080,见到竖屏工程里取来横屏颗粒先 `gtrk upgrade`。
141
146
 
142
147
  ## 中性块工作流(registry 骨架 → 改内容审美 → lint → 铺)
143
148
 
@@ -149,7 +154,7 @@ description: MG 动态图颗粒铺轨器——成片 SOP 第 ⑤ 步(**最后
149
154
  2. **取块改写**:`gtrk mg fetch --pick <块名> --slot <beatId> --project <目录> --json`——从派单取 composition_id / 坑位包络 / category,产物直接落 `<产物目录>/mg/<composition_id>.html`。返回里的 `editable`(文案 / 数值数组 / 色值)就是你下一步要改的地方。
150
155
  3. **改内容与审美(你的活,MUST 做)**:按 beat 语义改文案与数据;色板与字体——有栏目 skill 按栏目的,没有按公约 §三「内容驱动的临场泛化」全片自洽一套;**MUST NOT 把块的示例文案 / 示例数据 / 默认色板原样铺进成片**。字体缺省已换成运行时镜像可证的 CJK 字体,要换用 `--font`。
151
156
  4. **lint → 铺**:`gtrk mg lint` 过致命项 → `gtrk mg --project <目录>`(与栏目产颗粒同门槛)。
152
- 5. **竖屏工程**:契约当前只收 1920×1080 颗粒(lint 铁律 1),中性块不适用;提示用户走栏目 skill,MUST NOT 拉伸。
157
+ 5. **竖屏 / 方形工程**:registry 中性块只有 1920×1080 一种几何(块是手写 HTML、尺寸写死在块里,`--canvas` 给别的画幅会被拒),不适用。派单模式下工程 `video_size` 比例不是 16:9(容差 7%:4K 横屏与 DCI 17:9 照取)命令会**在下载前拒**、不落盘;改走 `--source text`(文字模板按工程画幅编,见上节)或栏目 skill 按工程画幅产颗粒,MUST NOT 拉伸。
153
158
 
154
159
  独立模式(脱离派单补一颗):`gtrk mg fetch --pick <块名> --as <composition_id> --duration <坑位秒> [--category overlay|fullscreen] [--out <目录>]`,随后同 `gtrk mg render` 的独立颗粒路。
155
160
 
@@ -178,6 +183,7 @@ gtrk mg status --project "<split产物目录>" --json
178
183
  - **产前先抽帧看底轨(`overlay` 槽位必做,别只凭派单盲产)**:颗粒最终要叠在真实画面上,构图必须因势象形。对该槽位挂点用本地 ffmpeg 抽 1-2 帧(`ffmpeg -ss <track_st秒> -i <底轨视频> -frames:v 1 "<系统temp>/<beat>.jpg"`,成本≈0;抽帧图是临时文件——落系统 temp、用完即删,**别落 cwd / agent 自有目录**)看清三件事——①真人主体/人脸的位置(颗粒 bbox 避开,呼应栏目「不盖说话人」铁律);②该处是否已有烧入包装或 AI 画面(有 → 别铺这颗,报用户裁决——二次过毛片高发);③画面明暗基调(深底/浅底影响衬底与配色取舍)。把这些**连同抽帧图一起附进产片订单**交给栏目生产 skill;`fullscreen` 槽位可免(满屏不透明无避让问题)。
179
184
  - **产片订单必须附带坑位硬约束(gsap-emit v1 铁律⑦)**:颗粒 GSAP 时间线总长 ≥ **坑位时长**(该槽位 `track_ed − track_st` 包络,**不是** `duration_hint`)+ 0.3s 余量;`duration_hint` 只是动画主叙事节奏参考。主叙事播完后颗粒必须定格保持或有限循环驻留到坑位末尾;禁止全局渐隐、整体退场或清空画面。
180
185
  - **`-aux<n>` 叠层颗粒同样处理**:`gtrk split` 若在某 beat 的 `aux_layers` 派了 `overlay`,会派生 `<beat>-aux<n>` 进 `dispatch.mg`(多为 B-roll 底轨之上叠透明概念图解)——照样产、照样存到对应 `composition_id.html`。
186
+ - **画幅 = 工程画布(竖屏 / 方形工程同样适用)**:颗粒根 `data-width` / `data-height` MUST 等于 `.gtrk` 的 `video_size`(竖屏 1080×1920、方形 1080×1080……),写进产片订单。`gtrk mg lint --dispatch` 与铺轨会按工程 `video_size` 比对颗粒声明的**比例**,跨比例判 `1-canvas-match` 致命、不铺(挂载是非等比缩放,铺进去就是拉伸);同比例不同尺寸(4K 工程里的 1920×1080 颗粒)放行。裸 `gtrk mg lint <file>` 不知道目标工程、只核正整数,所以仍要在订单里钉死。`gtrk render` / `gtrk project export` 的颗粒预渲按颗粒声明比例捕获(竖屏 720×1280,横屏照旧 1280×720);1.3.7 及更早的 CLI 一律按 1280×720 烤,竖屏颗粒会横胖竖扁,见到这种症状先 `gtrk upgrade`。客户端导出剪映 / PR 走客户端自己的颗粒预渲,客户端跟进前竖屏颗粒仍可能压扁,以 `gtrk project export` 的产物为准。
181
187
  - **category 决定叠法**:`overlay` 颗粒背景透明、盖在 B-roll 上不挡主体;`fullscreen` 不透明满屏。最终透明度由颗粒 HTML 的 `background` 声明反推的 `opaque` 定,生产 skill 要让二者自洽(lint 会查)。**「实心底该写在哪个元素上」的正本条款是 `contracts/gsap-emit-v1.md` 铁律 4——本 skill 不复述元素位置,改了要以契约为准**;`fullscreen` 颗粒把实心底写错地方会吃非致命 `4-bg-on-root`(见下节)。
182
188
 
183
189
  ### 3. lint 门:铺之前先单测每颗(不过就退回生产 skill,别硬铺)
@@ -186,8 +192,9 @@ gtrk mg status --project "<split产物目录>" --json
186
192
  gtrk mg lint "<产物目录>/mg/<composition_id>.html" --dispatch "<产物目录>/split/dispatch.json"
187
193
  ```
188
194
 
189
- - 纯本地静态校验颗粒 HTML 的**铁律机器可判定子集**:`<template>` 包裹、`data-composition-id` + 1920×1080、`gsap.timeline({ paused: true })`、`window.__timelines` 注册、无 `Math.random` / `Date.now`(可逐帧 seek 的确定性)、自包含无相对外链、`background` 声明与 `opaque` 自洽…;给 `--dispatch` 会额外校验 `composition_id` 命中派单。
195
+ - 纯本地静态校验颗粒 HTML 的**铁律机器可判定子集**:`<template>` 包裹、`data-composition-id` + 根 `data-width` / `data-height`(正整数)、`gsap.timeline({ paused: true })`、`window.__timelines` 注册、无 `Math.random` / `Date.now`(可逐帧 seek 的确定性)、自包含无相对外链、`background` 声明与 `opaque` 自洽…;给 `--dispatch` 会额外校验 `composition_id` 命中派单。
190
196
  - **`1-cid-expect`(致命)——复制改名必查**:颗粒内部的 `data-composition-id` 必须等于期望 id(`--dispatch` 命中时 = 该条派单的 `composition_id`,否则 = 文件名)。**你从别的颗粒复制模板时最容易漏改内部 id**:那样铺出来的 clip 指向 A、文件注册的却是 `__timelines["B"]`,渲染必错,且两颗粒抢同一个 `[data-composition-id]` 样式作用域。改名的临时副本(`./tmp.html`)不比对,不会误伤。
197
+ - **`1-canvas-match`(致命)——画幅比例对不上**:给了 `--dispatch` / `--project` 时按工程 `.gtrk` 的 `video_size` 比对颗粒根声明的比例(容差 7%:DCI 4K 这类 17:9 工程里的 16:9 颗粒放行,接受 6.7% 横向拉伸),铺轨同一口径。横屏颗粒进竖屏工程就是这条。**回步骤 2 让生产 skill 按工程画幅重做**;文字模板在派单模式下重取即可(缺省就按工程画幅编)。工程缺 `.gtrk` 或 `video_size` 不合法时这条不跑,命令会明说「本次颗粒画幅未与工程比对」。
191
198
  - **铁律④⑤「体积上限」两项**(正本条款 = `contracts/gsap-emit-v1.md` 铁律 4⑤;上限**同源自客户端颗粒运行时**,不是 CLI 的取舍):
192
199
  - `4-html-size`(**致命,命中即短路、其余项不跑**):颗粒 HTML 超过 **2,000,000 字符**,客户端无法加载。文案会点名最大的一段 `data:` URI。处置:按实际显示尺寸裁剪缩放,不透明图改 JPEG/WebP;仍超就把大图放图片素材轨,颗粒只留透明叠加层。云渲成功不代表客户端可加载。
193
200
  - `4-html-size-heavy`(非致命):500,000~2,000,000 字符——客户端每次 seek 都把颗粒根节点的 outerHTML 整份快照回传,体积直接决定预览帧率。能缩就缩;**不拦铺轨**。
@@ -370,7 +377,7 @@ SHALL NOT 自动上字幕出片**(`gtrk render` 还是计费/耗时动作,
370
377
  - **体积预期**:qtrle 是无损 RLE,MOV 比 mp4 大不少——秒级颗粒没事,别拿它渲长片。
371
378
  - **工程分叉明示**:用户在剪映里补的这颗料**不会回流 `.gtrk`**(导出本就单向)——`.gtrk` 与剪映草稿从此各改各的,回头再从工程重导剪映会**没有**这颗补的料。用户要长期用这颗,提醒他自存产物文件。
372
379
 
373
- 射程边界(命令会明确拒绝,不是故障):首发只出 qtrle(webm 剪映不吃)、只收 1920×1080 颗粒(gsap-emit v1 契约未开竖屏/异形口)、`--duration` 必填。产物落普通目录,**绝不写剪映草稿目录**——拖入剪映由用户做,素材归属才清晰。
380
+ 射程边界(命令会明确拒绝,不是故障):首发只出 qtrle(webm 剪映不吃)、颗粒几何须为正整数、`--duration` 必填。MOV 按颗粒声明的 `data-width` / `data-height` 原尺寸出(竖屏 1080×1920 颗粒出 1080×1920 MOV)。产物落普通目录,**绝不写剪映草稿目录**——拖入剪映由用户做,素材归属才清晰。
374
381
 
375
382
  ---
376
383
 
@@ -37,17 +37,18 @@ description: 通用解说视频创作图纸(解说链正本)——把「一
37
37
  | ⑦ | **源片语种 / 方言** | **问用户**:听一段 / 看片内有无内嵌字幕 / 看素材出处 | `gtrk transcript --lang`(`zh-CN` 普通话 / **`zh-HK` 粤语** / `en-US` / `ja-JP`…);素材通篇无对白答「无对白 / 不转写」即闭合,MUST NOT 因缺这个答案阻塞开工 |
38
38
 
39
39
  > ②③④⑤⑦ MUST 问用户、MUST NOT 代猜;一张表一次问完,不碎问。
40
- > **推荐面(公约 §三‴)**:问答收口时可问一句「要不要看看第三方 skill?」;题材命中场景触发词才定向推荐,读取 `gtrk skills recommend --scene <id> --json`;用户拒绝后不执行推荐动作。
40
+ > **精剪包装(公约 §三⁵)**:开工时告知一句「快速成片会在适合的段落做合成包装,最多全片四分之一,不要就说一声」——不是问题,用户说不要即零动作;`gtrk composite bake --abi` 报烘焙浏览器没装时,在这张问询表里多问一句装不装(不装用本机 Chrome / Edge)。
41
+ > **推荐面(公约 §三‴)**:问答收口时可问一句「要不要看看第三方 skill?」;题材命中场景触发词才定向推荐,读取 `gtrk skills recommend --scene <id> --json`;用户拒绝后不执行推荐动作。
41
42
  >
42
- > 语种必须在转写前确认。非中文素材传错语种会让检查点①拿到错误稿件并产生重复 ASR 成本;不要静默使用 `zh-CN`。粤语建议填写 `zh-HK` 作为元数据,当前 `--json` 路径按字级转写;无对白素材回答「无对白 / 不转写」即可。
43
+ > 语种必须在转写前确认。非中文素材传错语种会让检查点①拿到错误稿件并产生重复 ASR 成本;不要静默使用 `zh-CN`。粤语建议填写 `zh-HK` 作为元数据,当前 `--json` 路径按字级转写;无对白素材回答「无对白 / 不转写」即可。
43
44
  >
44
45
  ## 三、时序铺排三档(本图纸的技术正本)
45
46
 
46
47
  每段叙述配什么画面,按下面三档路由,**高档优先**:
47
48
 
48
- > **⚠️ 甲档的适用范围**:
49
+ > **⚠️ 甲档的适用范围**:
49
50
  > **整份手写 plan(免索引直排)降级为「引用段与硬出处段专用」**,叙述段缺省不再走它。
50
- > 手写 plan 缺少检索结果携带的质量信号,因此:
51
+ > 手写 plan 缺少检索结果携带的质量信号,因此:
51
52
  >
52
53
  > | 信号 | 断在哪 | 后果 |
53
54
  > |---|---|---|
@@ -103,36 +104,36 @@ description: 通用解说视频创作图纸(解说链正本)——把「一
103
104
  > 两条独立,回执分别以 `has_cuts` / `fps` 报,`cut_snap` 三态再把「按你的标注主动不吸」
104
105
  > 与「素材没索引想吸也无从吸」分开。
105
106
 
106
- > **直写 plan 操作注记**:整份 plan 可以手写——甚至**不依赖本地索引**
107
+ > **直写 plan 操作注记**:整份 plan 可以手写——甚至**不依赖本地索引**
107
108
  > (4K 长片索引很慢,甲档直排等不起也不必等)。逐 beat 一条 query、逐出处窗一条 result,
108
109
  > `segments:[{start,end,best,score}]`(源片秒)。三条铁则:① `best` 是**窗内代表帧时刻**
109
110
  > (秒),落窗外会被校验拒;lay 取段大致**以 best 为中心**——想 start 锚定就把 best 设为
110
- > 「窗起点 + 意图时长/2」;② 预算三量齐足——`per_shot_sec` 按「beat 时长 / 窗数」给、**窗宽 ≥ 份额**,长出处区间拆成多个子窗;③ 引用段窗与配音时轴**逐秒对齐**(窗起点 = 引用音频对应的
111
+ > 「窗起点 + 意图时长/2」;② 预算三量齐足——`per_shot_sec` 按「beat 时长 / 窗数」给、**窗宽 ≥ 份额**,长出处区间拆成多个子窗;③ 引用段窗与配音时轴**逐秒对齐**(窗起点 = 引用音频对应的
111
112
  > 源时刻),铺后按 `clip_st 与 track_st 的差恒等` 复核零漂移;④ **口播基座下 beat 预算按
112
113
  > dispatch 的成片轴包络算**——`transcript.json` 的 st/ed 是源时码,且 beat 连续化会把句间
113
- > 停顿带并入下一 beat,窗预算不足会产生空洞;
114
- > ⑤ **beat 粒度以关键句为主,采用约七三的对齐与游离比例**。先认清机制:
114
+ > 停顿带并入下一 beat,窗预算不足会产生空洞;
115
+ > ⑤ **beat 粒度以关键句为主,采用约七三的对齐与游离比例**。先认清机制:
115
116
  > `matrix lay` 在 beat 内按候选分数贪心铺满、**槽序与句序无关**——一个 beat 跨多句时,
116
117
  > 只有「领衔句」能拿到为它挑的画面,其余句是跟随。由此定编排法(**顺序不可颠倒**):
117
118
  > **①关键词卡点先行**:先挑出有明确视觉指涉的句子(实体/动作/可拍之物),逐句独立成 beat、
118
119
  > 一 beat 一窗,保证「稿说什么就给什么」。**划分判据是「素材里有没有」,不是「句子抽不抽象」**
119
- > ——素材里有对应画面的句子 MUST 卡点
120
+ > ——素材里有对应画面的句子 MUST 卡点
120
121
  > (哪怕它夹在抽象段里,如「昨天的老汤兑进今天的新汤」有汤锅镜头就必须给汤锅);素材里
121
122
  > 确实没有的才允许降为跟随(「卖过三十年汽车」片里无车、「多线程游戏」无从拍)。判据的
122
123
  > 落地取证=渲后 `gtrk qc --alignment`:**卡点句 mismatch MUST 收敛到 0,且每一条 mismatch
123
- > 都要先问「是我窗选错了,还是素材真没有」;②**其余填坑**:抽象句、数字句、修辞句、情绪句
124
+ > 都要先问「是我窗选错了,还是素材真没有」;②**其余填坑**:抽象句、数字句、修辞句、情绪句
124
125
  > (日期/克数/"比太阳起得早"/"多线程游戏")**没有对应画面可给**,合并进相邻关键句的
125
126
  > 长镜头当跟随,或用主题相近的群像长镜头覆盖;③**七三开收口**:约 70% 时长逐句对齐、
126
127
  > 30% 游离创造自然感——**游离不是妥协是设计**。
127
- > ⚠️ **不要追求 100% 逐句硬切**:对齐质检的靶子是「关键句零 mismatch」,其余句允许跟随;一个 beat 也不要跨太多关键句,以免集体错位。
128
- > ⑥ **盲选窗跨源镜头切点**——`direct_slots` 的直排槽同样会过窗口精修,`provenance` 段的端点会自动吸到切点。
128
+ > ⚠️ **不要追求 100% 逐句硬切**:对齐质检的靶子是「关键句零 mismatch」,其余句允许跟随;一个 beat 也不要跨太多关键句,以免集体错位。
129
+ > ⑥ **盲选窗跨源镜头切点**——`direct_slots` 的直排槽同样会过窗口精修,`provenance` 段的端点会自动吸到切点。
129
130
  > 仍会剩下两种情形,都要如实报账而不是靠重铺硬碰:
130
131
  > · **素材未索引**(无 `cuts`)⇒ 收缩无数据可用。先索引再铺是正解,等不起就照实说明。
131
132
  > · **`quote` 引用段** ⇒ 它按设计**不吸**(吸走就是画音错开)。若那一口确实横跨切换,
132
133
  > 那是内容本身如此,正确处置是改稿或改引用区间,不是让铺轨替你挪。
133
134
  > 渲后 QC 的 flash/intra_cut 证据仍可反算源切点(clip_st + into_clip_sec)供人工复核。
134
135
 
135
- ### 甲′ · 出处窗内检索(叙述段缺省路)
136
+ ### 甲′ · 出处窗内检索(叙述段缺省路)
136
137
 
137
138
  **出处准与检索对齐可以兼得**,不必二选一:把出处区间当**检索域**而不是当**答案**。
138
139
 
@@ -173,7 +174,7 @@ QC 反算重铺);② 段带 `cuts`,端点残片收缩生效;③ 段带 `
173
174
  - **切取用流拷贝**(`ffmpeg -c copy`,零重编码);想让 AI 帮你海选可引用的高光,可先跑一遍 `gtrk long2short` 拿选段清单当候选(可选辅助,明示计费)。
174
175
  - **装配**:逐段 TTS + 引用段原声按稿序拼成总音频 → 合成 transcript(各段句级时码换算到拼接轴)→ `gtrk project init --audio <总音频> --transcript <合成转写>` 建工程(自备配音兜底路);引用段画面 = 该源区间直排上轨。无引用段时装配退化为单条 TTS + `--tts-task` 主路(与旅拍同款)。
175
176
  **产物文件名别硬拼(fix-tool-outdir-collision)**:多段 TTS 落**同一个 `--out`** 时,第二段起的产物会带 taskId 后 6 位后缀(`tts-narrator-a1b2c3.wav`),基名只有第一份是干净的。拼接清单 MUST 按每次回执的 `files` 取路径,MUST NOT 按 `tts-<speaker>.wav` 猜——猜出来的名字会一路指向第一段,拼出来的总音频会把某一段重复多遍而不报错。
176
- **主轨无缝铁则**:合成 transcript 里引用段 utterance 的 st/ed **MUST 写物理拼接位**(拼接轴上的真实起止),MUST NOT 加字幕 pad;已有 pad 的工程按「改时刻→重导视图→重落拆分→重铺→字幕重出」修复。
177
+ **主轨无缝铁则**:合成 transcript 里引用段 utterance 的 st/ed **MUST 写物理拼接位**(拼接轴上的真实起止),MUST NOT 加字幕 pad;已有 pad 的工程按「改时刻→重导视图→重落拆分→重铺→字幕重出」修复。
177
178
  - **克制丑话**:引用段是佐料——时长占比失衡会让片子变成搬运,平台判定风险归用户(§八 一并告知)。
178
179
 
179
180
  ## 五、快速成片编排
@@ -193,8 +194,8 @@ gtrk transcript "<长片>" --lang <开工⑦所答语种> --json # 影视/游
193
194
 
194
195
  # ②③ 写稿(甲档出处共生 / 乙路对照表对齐)→ 检查点①拍板(§六)
195
196
  gtrk matrix material "<情绪 题材 检索词>" --scope audio --top-k 5 --json # BGM 候选附试听
196
- # ⚠️ is_copyright 的权威语义是 1/true=可商用、0/false=**不可商用**,MUST NOT 把 false
197
- # 读成「无版权、可随便用」。矩阵成员档**缺省搜全库**,MUST NOT 默认加 --commercial-only、
197
+ # ⚠️ is_copyright 的权威语义是 1/true=可商用、0/false=**不可商用**,MUST NOT 把 false
198
+ # 读成「无版权、可随便用」。矩阵成员档**缺省搜全库**,MUST NOT 默认加 --commercial-only、
198
199
  # 也 MUST NOT 以「保险起见」为由剔掉 is_copyright:false 的候选(全库正是成员身份买到的东西)。
199
200
  # 对价是**如实标注**:推荐时 MUST 逐条带上 copyright_label(派生位,中文标签),不可商用的照直说,
200
201
  # 但 MUST NOT 升级成追问或阻塞。用户**特意说明**只要可商用 / 要商用发布 / 客户商单时才加
@@ -217,33 +218,36 @@ gtrk matrix lay --project "<工程>" --mark-weight 0.3 --highlight-weight 0.2 --
217
218
 
218
219
  # ⑧⑨⑩ 字卡(MG 临场泛化,公约 §三)→ BGM(0.10 垫底、短了自动循环铺满)→ 字幕直出
219
220
  # BGM 是带人声歌曲(audio_type:"song")→ MUST 下载 accompaniment_url 伴奏版上轨,
220
- # 不得用 download_url 原曲(人声与配音会打架)
221
+ # 不得用 download_url 原曲(人声与配音会打架)
221
222
  gtrk mg --project "<工程>" --json
222
223
  # --beat-align 的高潮点取自 split.beats 的 narrative / container_stage(升华段 → 容器转折 → 回扣段);
223
224
  # 拆分稿没带这两个字段 ⇒ 落 0.75×全片兜底档,**CLI 会明示那是猜的**。不接受就用 --climax <轨秒> 指定。
224
225
  # 两侧都够长时零平铺(恰好 1 个 clip);不够长才按小节线平铺补齐、接缝吸附 downbeat。
225
226
  gtrk audio lay --project "<工程>" --file "<bgm>" --volume 0.1 --beat-align --json
226
227
  gtrk subtitle lay --project "<工程>" --style <样式> --color <色> --json
228
+ # 精剪包装:见下方引注
227
229
  ```
228
230
 
231
+ > **精剪包装(字幕之后、出片之前)**:交棒 `/gtrk-composite` 做**精剪包装**(公约 §三⁵:快速成片 auto ≤ 25% → 逐窗口复核 → 构建机检 → 铺轨烘焙,不停;回执列「做了 / 建议了没做 / 烘焙结果」;逐步推进按合成 skill 两个检查点停;开工时用户说了不要就跳过)。没有讲者的工程只用 B-roll 与排版。
232
+
229
233
  > **停顿太长时**:自训音色加 `--fragment-interval 0.2`(合成时就对);云引擎音色**不支持**该参数(传了会报错,不会静默忽略),改在合成后跑 `gtrk audio tighten --project <工程>` 收紧句间停顿(纯本地零计费;只压跨句界的停顿,句内换气与原声引用段不动)。
230
234
 
231
235
  配方口径(`--mark-weight 0.3`、BGM 0.10、`--gap-fill fast`、句界吸附缺省)与旅拍图纸 §五 同源,本图纸引用不复制。
232
- `--highlight-weight 0.2`:看点维度与 mark 正交——mark 判「好不好看」、highlight 判
236
+ `--highlight-weight 0.2`:看点维度与 mark 正交——mark 判「好不好看」、highlight 判
233
237
  「有没有看点」(信息量/戏剧性/情绪强度/稀缺性)。看点准则按垂类走 L1 rubric(美食/旅拍图纸各持一份
234
238
  **画面投影版**)。两权之和 0.5,语义仍占一半——**MUST NOT 加到语义压不住的程度**,那会变成
235
239
  「专挑好看的,不管说的是什么」。
236
240
  ⚠️ 三个权重(mark/highlight)与 blurry 降权**全都依赖 `matrix describe --plan` 跑过**;
237
241
  没跑就是全部候选中性、排序与不开权重逐字节一致。
238
- 质检按公约「三级收敛」执行:**L1 恒开**;**L2 落轨前**可用 `gtrk matrix lay --arrange-qc` 检查卡点句画音对齐;**L3 渲后终检**随本来就要交付的本地渲附带,不为质检单独逼渲。跑过的质检结论随交付分层呈现。
242
+ 质检按公约「三级收敛」执行:**L1 恒开**;**L2 落轨前**可用 `gtrk matrix lay --arrange-qc` 检查卡点句画音对齐;**L3 渲后终检**随本来就要交付的本地渲附带,不为质检单独逼渲。跑过的质检结论随交付分层呈现。
239
243
 
240
244
  ## 六、检查点①(拍板停一次;铺画面前另有一次用量确认)
241
245
 
242
- > 本地素材的编排缺省走云端并按编排量计费。`matrix lay` 跑前必须报告预估用量,取得同意后才能带 `--yes`;无 TTY 且未确认时整轮中止,工程不改动,plan 可重跑。
246
+ > 本地素材的编排缺省走云端并按编排量计费。`matrix lay` 跑前必须报告预估用量,取得同意后才能带 `--yes`;无 TTY 且未确认时整轮中止,工程不改动,plan 可重跑。
243
247
 
244
248
  稿件(含引用窗口标注)+ **出处对照表**(乙路时;低置信段标出)+ 画幅 + 音色(附试听)+ BGM(附试听)+ 字幕样式(不挑走默认)——一屏给齐一次拍板。**未经确认 MUST NOT 发起 TTS/长剪短等计费动作。**
245
249
 
246
- ## 六′、稿句↔镜头对照表(铺轨前必给)
250
+ ## 六′、稿句↔镜头对照表(铺轨前必给)
247
251
 
248
252
  候选选定、**铺轨动作发起之前**,把「哪句配哪个镜头、为什么是它」摊开给用户过目。
249
253
  出处对照表回答「这段稿从哪来」,本表回答「这段稿给什么画面」——两张表不互替。
@@ -261,7 +265,7 @@ gtrk subtitle lay --project "<工程>" --style <样式> --color <色> --json
261
265
  用户在这里改判的成本最低:他说「u0012 我记得片尾还有个更好的标牌镜头」,此时换窗重检索
262
266
  只花几秒;等铺完渲完再改,就是整轮返工。
263
267
 
264
- ## 六″、验收判据
268
+ ## 六″、验收判据
265
269
 
266
270
  含 B-roll 覆盖的成片,验收 MUST 同时满足两条:
267
271
 
@@ -269,7 +273,7 @@ gtrk subtitle lay --project "<工程>" --style <样式> --color <色> --json
269
273
  2. **`gtrk qc --alignment` 的卡点句 mismatch = 0**。
270
274
 
271
275
  > ⚠️ **判据是 lead_mismatch 归零,不是全句对齐率冲 100。**
272
- > 全句率趋近 100% 往往意味着逐句硬切,可能让片子变碎。
276
+ > 全句率趋近 100% 往往意味着逐句硬切,可能让片子变碎。
273
277
  > 全句 rate 只作参考量看趋势,**MUST NOT 当达标线**。
274
278
  >
275
279
  > 每一条 lead mismatch 都先问「**是我窗选错了,还是素材真没有**」:前者换窗重铺,
@@ -279,8 +283,8 @@ gtrk subtitle lay --project "<工程>" --style <样式> --color <色> --json
279
283
 
280
284
  | 模式 | 停点 |
281
285
  |---|---|
282
- | **快速成片**(默认) | 开工七问 → 检查点①(必停一次)→ 一杆到底 |
283
- | **逐步推进** | 每步停等确认(索引结论 / 稿件 / 对照表 / 铺排结果 / 字卡 / BGM / 字幕逐项) |
286
+ | **快速成片**(默认) | 开工七问 → 检查点①(必停一次)→ 一杆到底(含精剪包装,合成静帧随交付一次给) |
287
+ | **逐步推进** | 每步停等确认(索引结论 / 稿件 / 对照表 / 铺排结果 / 字卡 / BGM / 字幕逐项 / 精剪包装按合成 skill 两个检查点) |
284
288
 
285
289
  差别只在停几次;三条腿自检见《成片型图纸公约》§四。
286
290
 
@@ -0,0 +1,145 @@
1
+ ---
2
+ name: gtrk-ref-reading
3
+ description: 参考片精读——把一条别人的视频读成「可复刻」的整片模型与时码细节:逐字时码转写 + 带台词标签的抽帧网格 + 关键动效逐帧看 + 按「系统」记录每个设计事件对着哪句话,落成 ANALYSIS.md / TIMELINE.md / PROGRESS.md,读完可交给 /gtrk-style-maker 产栏目 skill,或直接指导把这套包装迁移到用户自己的片子上。驱动 `gtrk transcript --json`(取字级时码)与纯本地零计费的 `gtrk media` 看片命令族。当用户想「拆解这条视频 / 精读参考片 / 学一下这个博主的包装 / 分析这条视频的风格 / 这条视频的动画是怎么做的 / 照着这条参考片的风格做 / 把 XX 的风格蒸馏出来 / 参考片逆向」时使用本 skill。凡要从一条参考视频里学包装与节奏,先用本 skill 读透再动手,别看几张截图就开始仿。
4
+ ---
5
+
6
+ # gtrk-ref-reading · 参考片精读
7
+
8
+ 你是读片的人。目标不是「描述这条片子」,而是产出一份**能指导复刻**的理解:
9
+ 这片想让观众得到什么、靠哪些视觉 / 声音系统做到、每个系统在**哪句话**上做了什么、
10
+ 换成用户的人 / 产品 / 画幅 / 语言时,哪些作用要保留、哪些形式要重做。
11
+
12
+ ## 这个 skill 不做什么 → 找谁
13
+
14
+ - **不产栏目 skill、不写栏目配置** → 读完交 `/gtrk-style-maker`(精读结论作为「作品逆向」的证据,见文末)。
15
+ - **不剪片、不铺轨、不出 MG 颗粒** → 成片管线(`/gtrk-talking-head`、`/gtrk-splitter`、`/gtrk-mg` 与栏目 MG skill)。
16
+ - **不下载链接**:只读用户本地的视频文件。给的是链接 / 平台 ID 时,请用户先自行合法取得、放到本地。
17
+
18
+ ## 硬边界
19
+
20
+ > **产物落点纪律(MUST · 全文见随包 `AGENT.md` 同名一节)**:精读产物(ANALYSIS / TIMELINE / PROGRESS / 转写稿 / evidence 下的网格与片段)
21
+ > 只落**精读目录**(缺省 `<参考片同目录>/<参考片名>-精读/`,用户指定优先)。
22
+ > 交付物 MUST NOT 先写 agent 自有目录再拷进工程;中转本身即违规,体积不是豁免理由。
23
+ > 引用参考片用原路径,**不复制原片**;`gtrk media` 的中间物由命令自己放系统 temp、用完即删。
24
+
25
+ - **计费只有转写一处**:`gtrk transcript --json` 走云端字级 ASR,按官网实时价格计费——跑之前告诉用户这一步要花钱、大约多少(以 CLI 打出的实时提示为准)。`gtrk media` 全部纯本地、零计费、不联网。
26
+ - **用户须有权使用这条参考片**做学习分析。证据图只在精读目录里供判读,**原片的帧与片段 MUST NOT 进栏目 skill 的 assets、MUST NOT 混进成片**。
27
+ - **转写稿 MUST 是这条参考片自己的**:标签和 `--around` 都假设转写稿与视频同一条时钟。`gtrk media` 发现时长 / 文件名对不上会告警——见到告警先查,别带着错时钟读下去。
28
+
29
+ ## 铁律(读片方法,贯穿全程)
30
+
31
+ 1. **整片与细节来回修正。** 先通读形成暂定解释,再逐系统精读;细节推翻整片理解时,回去改 ANALYSIS。只做其中一头都读不准。
32
+ 2. **让时间可见,不靠代表帧。** 口播类参考片先取字级时码;网格一律带 `--transcript`;关键动效逐帧看。几张截图说不清一个东西何时进、怎么变、驻多久、何时走。
33
+ 3. **按「系统」记,不按镜头记。** 跨镜头存在的物件(一块板、一个圆窗、一套字幕)在 ANALYSIS 里**记一次**,再在 TIMELINE 里按时间记它的**状态变化**(出现 / 高亮 / 灰化 / 合并 / 换形态 / 退场)。镜头边界只用来导航。
34
+ 4. **每个设计事件都写「对着哪句话」。** 原句引文 + 源片秒,再写它为观众做了什么(落一个数、答一个问题、给判断盖章、让位给下一个论点)。迁移时按这句话的**作用**重绑到目标稿,**MUST NOT 照抄秒数**。
35
+ 5. **迁移时保留作用、重做形式。** 换人 / 换产品 / 换画幅 / 换语言时,问「这个系统在这里干什么」,再为目标设计能干同一件事的形式。目标上不成立的作用(没有真实数据却要画数据图)就明确不做,**MUST NOT 编内容去填形式**。
36
+ 6. **文件是记忆。** 发现一条写一条:整片模型进 ANALYSIS,时码细节进 TIMELINE,当前问题 / 未看的段落 / 下一步进 PROGRESS。换会话的人只读这三份文件就能接着读。
37
+ 7. **事实与解读分开写。** 「看到的」是画面 / 网格 / 转写稿上能指出的东西;「它在做什么」是你的解读。没看清的标「待查」并记下时码,回到源片换个尺度再看,**MUST NOT 凭印象补写**。
38
+ 8. **采样之间有空隙。** 概览网格会漏掉短事件,相邻两格看着没变不等于中间没发生事。追一个系统时把密度加到能看清它的进 / 变 / 驻 / 出为止。
39
+ 9. **动效的名字只是起点。** 「弹出」「推近」不够复刻:要看路径、缩放 / 透明度变化、几帧到位、有没有过冲和回落、到位后是静止还是慢漂、和邻近事件谁先谁后。一个物件的「淡出副本」可能就是它自己在退场——逐帧看清再下结论。
40
+ 10. **边读边说。** 每读完一段,用一两句话 + 一张代表网格告诉用户你发现了什么、它对迁移意味着什么;细节留在文件里。用户的口味与背景信息能改变读法,别闷头读完才开口。
41
+
42
+ ## 工序
43
+
44
+ ### 0 · 立案
45
+
46
+ 确认四件事并写进 `PROGRESS.md` 第一版:参考片路径(可多条,定一条主读、其余交叉印证);用户要学什么(整体包装 / 某个系统 / 节奏);目标是什么(套到谁的什么片上:换人?换产品?换画幅?换语言?);精读目录在哪。
47
+
48
+ ### 1 · 取证底座
49
+
50
+ ```bash
51
+ gtrk media probe "<参考片>" # 时长 / 尺寸 / 帧率 / 有无音轨
52
+ gtrk transcript "<参考片>" --json --out "<精读目录>/transcript.md" # 计费:先告知用户
53
+ gtrk media lines "<精读目录>/transcript.json" # 逐句:u<id> 起–止 文本
54
+ gtrk media boundaries "<参考片>" --rate 4 --threshold 0.12 \
55
+ --transcript "<精读目录>/transcript.json" -o "<精读目录>/evidence/boundaries.json"
56
+ ```
57
+
58
+ - `--out` 指到精读目录里的 `transcript.md`,字级时码稿就落在同目录的 `transcript.json`(`gtrk media --transcript` 吃它)。Markdown 里待补的「总结」可以不补——ANALYSIS 就是这条片子的总结。
59
+ - 无口播的参考片(纯音乐 / 纯画面)跳过转写,用画面变化与动作定位。
60
+ - `boundaries` 给的是**视觉变化候选**(机械证据,不是镜头判定);它的平均间隔就是「多久一变」,候选附的句号告诉你换板发生在哪句话上。
61
+
62
+ ### 2 · 通读整片
63
+
64
+ 读完整的转写全文,再看整片概览网格:
65
+
66
+ ```bash
67
+ gtrk media tiles "<参考片>" --frames 48 --cols 6 --rows 4 --cell 320 \
68
+ --transcript "<精读目录>/transcript.json" -o "<精读目录>/evidence/overview"
69
+ ```
70
+
71
+ 写 ANALYSIS 的「这片想让观众得到什么」「整片结构与节奏」(分段表:段 / 时码 / 看到的 / 它在做什么)。长片分段读,但始终保持对整片走向的把握。
72
+
73
+ ### 3 · 认出系统
74
+
75
+ 从概览与变化点里找**反复出现、跨镜头存在**的东西:讲者机位、画中画、实体图标 / 徽章、数字、标题牌、字幕、章节标识、B-roll、梗图、转场、声音标点……
76
+ 每个系统在 ANALYSIS 记一次:**看到的**(形态、位置、配色、字体气质)/ **它在做什么** / **状态集合** / 首次出现时码。用参考片自己的样子命名(S1 书柜机位、S4 逐字落板……),别套别人的分类表。
77
+
78
+ ### 4 · 逐系统精读
79
+
80
+ 对每个系统挑 2–3 处最典型的出现,按尺度切换:
81
+
82
+ | 要回答的问题 | 命令 |
83
+ |---|---|
84
+ | 这段话和画面怎么一一对上 | `gtrk media tiles "<参考片>" --around "<台词>" --padding 1 --every 0.5 --cols 4 --rows 3 --transcript <稿> -o evidence/<名>` |
85
+ | 一个元素几帧到位、之后怎么动 | `gtrk media tiles "<参考片>" --around "<台词>" --padding 0.3 --every-frame --cols 6 --rows 4 --cell 360 --transcript <稿> -o evidence/motion/<名>` |
86
+ | 字体、配色、间距、层级 | `gtrk media frames "<参考片>" --at <秒,秒> -o evidence/<名>`(缺省源分辨率,看清再写色值与字重) |
87
+ | 一次看好几段 | `gtrk media tiles "<参考片>" --ranges <ranges.json> --transcript <稿> -o evidence/<名>`(`[{id, around}` 或 `{id, start, end}]`) |
88
+ | 台词出现在哪 / 重复几次 | `gtrk media lines <稿> --find "<台词>"`,再用 `--occurrence <n>` 选 |
89
+ | 留一段动态证据 | `gtrk media cut "<参考片>" --around "<台词>" --occurrence <n> -o evidence/<名>.mp4` |
90
+
91
+ 每读清一处,就在 TIMELINE 写一节(格式见 `references/landing-templates.md`)。逐帧看动效时照 `references/close-reading-checklist.md` 过一遍。
92
+
93
+ **读网格**:每格画面下方三行——①源片秒 · 时码(逐帧模式加帧号)· 句号;②此刻正在读的字与字级起止;③所在整句(当前字高亮)。
94
+ 「此刻无字在读」「句间空隙」只说明这一刻没有字级时码覆盖,**不等于静音**。网格是证据,结论由你写,并在 TIMELINE 里写上证据路径。
95
+
96
+ ### 5 · 回头修正整片模型
97
+
98
+ 细节改变了理解(发现两个「不同物件」其实是同一物件的两个状态、某个转场其实是章节标点),就回去改 ANALYSIS。
99
+ 补齐「色彩与字体」(从大图取近似色值,写清用途)与「动效性格」(快进慢驻?状态变化多于出场?切走不清板?)。
100
+
101
+ ### 6 · 给每个系统判归属:叠层还是版式
102
+
103
+ 逐个系统问一句:**「它改不改变讲者在画面里的位置、大小或可见区域?」**
104
+
105
+ - **不改变** → **叠层**:叠在既有画面上、讲者原样不动(字卡、角标、大数字、印章、标签……)。迁移时归 MG 生产 skill(`produces: "MG"`)。
106
+ - **改变** → **版式**:讲者被缩放、裁切、挪位或让位(人像圆窗、图版与讲者同屏、对照并排、整幅标题版式、逐句换画面……)。迁移时归合成风格 skill(`produces: "composite"`,由 `/gtrk-composite` 消费)。
107
+
108
+ 判据看**讲者**,不看元素大小:整幅替换掉讲者的标题版属版式(讲者的可见区域变成零);一枚很小的人像圆窗也属版式(讲者被缩放、裁切);压在讲者画面上的大号字卡仍属叠层(讲者原样在场)。
109
+ 在 ANALYSIS 每个系统下加一行「归属:叠层 / 版式」并写一句理由(看了哪张网格判的)。拿不准的系统去逐帧网格里看讲者那一格的变化,别凭印象定。
110
+ 两类**不能混进同一个栏目 skill**——把「图版 + 讲者圆窗」做成 MG 的结果,是整幅底板挖洞露脸,讲者其实没被缩放,形式对不上作用。怎么登记进栏目配置以 `/gtrk-style-maker` 第⑥招「家族切分」为准,本 skill 只负责判归属、给证据。
111
+
112
+ ### 7 · 迁移表
113
+
114
+ ANALYSIS 末节按系统写一张表:**归属(叠层 / 版式)/ 保留什么作用 / 在目标上形式怎么重做 / 不做什么及理由**。
115
+ 目标的变化逐项过:换人(这个角色在所有出现处都要换,不只是脸)、换产品(产品的真实卖点、道具、界面、证据、CTA)、
116
+ 换语言(字幕分组与节奏跟着新语言走)、换画幅(横转竖时哪些系统要重新构图、哪些要拆)、增删系统(删掉的系统原来干的活交给谁)、多参考片(每个作用来自哪条,冲突怎么取舍)。
117
+
118
+ ### 8 · 交付与交棒
119
+
120
+ 跟用户讲清:整片模型一句话、最关键的 3–5 个系统(各附一张证据网格路径)、迁移要点、仍待查的问题。然后按用户的去向交棒:
121
+
122
+ - **要沉淀成自己栏目的风格体系 / 栏目 skill** → `/gtrk-style-maker`(见下节)。
123
+ - **栏目 skill 已就绪、要直接做片** → 回成片管线,按 TIMELINE 里「对着哪句话」的关系在目标稿上重新落点。
124
+ - **只是学习 / 评估** → 精读目录本身就是交付物。
125
+
126
+ ## 交给 /gtrk-style-maker 时
127
+
128
+ 精读结论是**证据**,不是用户的维度。`/gtrk-style-maker` 的「作品逆向」会拿 ANALYSIS 里的系统**逐个出示证据网格**问用户:
129
+ 「这个像你吗?哪里不像?你会怎么叫它?」——用户认领的才进栏目 skill,命名用用户的话;用户否掉的记成禁令候选。
130
+ 所以交棒时给它:精读目录路径、系统清单(每条附一张最能说明问题的网格**和归属:叠层 / 版式**)、迁移表。**不要替用户把系统清单直接写成栏目 skill。**
131
+ 归属决定用户认领的系统最后进 MG 生产 skill 还是合成风格 skill;两类分开登记的做法见 `/gtrk-style-maker` 第⑥招。
132
+
133
+ TIMELINE 里的典型段落可以成为栏目 skill 的判例(「这句话该落一个大数字,因为……」),但判例里放的是**我们按其作用重做的成品**,不是原片截图。
134
+
135
+ ## 交付前自检
136
+
137
+ - [ ] 口播参考片有字级转写;所有引用的网格都带了 `--transcript`?
138
+ - [ ] ANALYSIS 每个系统都写了「看到的 / 它在做什么 / 状态集合」,且是**一次**记录、不按镜头重复?
139
+ - [ ] 每个系统都按「改不改变讲者的位置、大小或可见区域」判了归属(叠层 / 版式)并写了依据;没有把版式类系统归成叠层?
140
+ - [ ] TIMELINE 每节都有:源片秒区间 + 段落意义、原句引文、发生了什么、为观众做了什么、证据路径(文件真实存在)?
141
+ - [ ] 至少一个关键动效做过逐帧(写得出几帧到位、之后怎么动)?
142
+ - [ ] 事实与解读分开;没看清的标了「待查」与时码?
143
+ - [ ] 迁移表逐系统写了保留作用 / 重做形式 / 不做及理由;没有为填形式编造内容?
144
+ - [ ] PROGRESS 写清当前问题、未看的段落 / 系统、下一步?
145
+ - [ ] 产物全在精读目录;没复制原片;原片帧没有流进栏目 skill 或成片?
@@ -0,0 +1,47 @@
1
+ # 精读清单(按系统类型)
2
+
3
+ > 清单是**提问的方向**,不是要填满的表:只问这条参考片里真实存在的系统。
4
+ > 每一问都要能落到 TIMELINE 的某一节(源片秒 + 对着哪句话 + 证据路径)。
5
+
6
+ ## 动效(逐帧网格上看)
7
+
8
+ - **前一刻是什么、变了什么、之后留下什么。** 一个入场再漂亮,落定后的状态说不清论点也白搭——落定状态是重点。
9
+ - **几帧到位**:从第一帧可见到落定数帧号(网格标签带 `帧#n`),换算成秒;**到位之后**是静止、慢推、慢漂还是呼吸。
10
+ - **怎么动**:路径(直线 / 弧线 / 从哪个物件来)、缩放与透明度、有无过冲和回落、模糊或拖影。
11
+ - **和谁同步**:落在哪个字上(字头前已落定?字尾才到?);和邻近事件谁先谁后;是否跟声音标点同拍。
12
+ - **物件身份**:同一个物件跨状态是否保持形状 / 颜色 / 轨迹(徽章变饼图、卡片变附件);「淡出的副本」是不是它自己在退场。
13
+ - **硬切还是连续变化**:硬切适合「下一个想法一眼就懂」,连续变化适合「要看清怎么变的」。
14
+
15
+ ## 构图与图形(大图上看)
16
+
17
+ - 眼睛**第一眼**落在哪、然后看哪;靠尺寸、间距、分组、对比、颜色还是运动建立层级。
18
+ - 讲者的位置给图形留了多大地方;讲者、图形、字幕谁在这一刻领衔。
19
+ - 配色:几种主色、各干什么(正向 / 负向 / 强调 / 底);字体:标题 / 正文 / 数字 / 外文各是什么气质、字重、字距。
20
+ - 哪些是可编辑的结构(随话改变的数字、标签、状态),哪些只是素材(照片、截图、纹理)。
21
+
22
+ ## 字幕与画面文字
23
+
24
+ - 字幕显示的是说出来的话;独立的标题、标签、意译属于排版 / 图形,不是字幕——分开记。
25
+ - 字幕的分组(一屏几字、按意群还是按句)、位置、强调方式、是否随讲者 / 画面让位。
26
+ - 每种**不同的配置**(讲者不同、位置不同、强调不同)各记一次,也记它们之间怎么切换。
27
+
28
+ ## 讲者(A-roll)与画中画
29
+
30
+ - 讲者在画面里是什么角色:全屏聊天、缩成小窗继续在场、被图形临时替换。
31
+ - 观点句 / 吐槽句 / 转折句是否总回到讲者全画面,信息句交给图形——这是节奏语法,记清楚。
32
+
33
+ ## 素材(B-roll)
34
+
35
+ - 素材在这一刻是**精确对应**(这句话必须看见这张图)还是**一组画面传达一个意思**(习惯、历史、过程、态度)。
36
+ - 素材被怎么处理:压暗做底、裁切、加框、局部高亮。
37
+
38
+ ## 声音
39
+
40
+ - 音乐的起落是否标出段落;有没有声音标点(转场音、印章音、计数音)和画面同拍。
41
+ - 讲者声音在全屏素材下是否连续;换段时声音先走还是画面先走。
42
+
43
+ ## 迁移时逐项问
44
+
45
+ - 这个系统在这里**干什么**?目标片里有没有同样的活要干?
46
+ - 目标换了人 / 产品 / 画幅 / 语言后,这个形式还成立吗?不成立就换一个能干同样活的形式。
47
+ - 删掉一个系统时,它原来干的活交给谁?
@@ -0,0 +1,95 @@
1
+ # 精读目录落盘模板
2
+
3
+ > 骨架是起点,不是表单:章节随这条参考片长,没有的系统不硬写,多出来的就加。
4
+ > 时码一律写**源片秒**(如 `121.9`),需要时括注 `02:01.9`;证据路径写相对精读目录的路径。
5
+
6
+ ```
7
+ <精读目录>/
8
+ ├── ANALYSIS.md 整片模型
9
+ ├── TIMELINE.md 时码细节
10
+ ├── PROGRESS.md 接力
11
+ ├── transcript.md gtrk transcript 的可读稿
12
+ ├── transcript.json 字级时码稿(gtrk media --transcript 吃它)
13
+ └── evidence/
14
+ ├── overview/ 整片概览网格(tiles 产物目录,含 index.json)
15
+ ├── boundaries.json 视觉变化候选
16
+ ├── <段落名>/ 段落带台词网格
17
+ ├── motion/<动效名>/ 逐帧网格
18
+ ├── <名>-frames/ 大图(字体 / 配色)
19
+ └── <名>.mp4 证据片段
20
+ ```
21
+
22
+ ---
23
+
24
+ ## ANALYSIS.md
25
+
26
+ ```md
27
+ # <栏目 / 参考片名> · 整片解读(ANALYSIS)
28
+
29
+ > 证据:<参考片路径>(<时长>,逐字转写 `transcript.json`);交叉印证:<其它参考片>。时码细节见 `TIMELINE.md`,抽帧证据在 `evidence/`。
30
+ > 下文「看到的」是画面事实,「它在做什么」是解读。
31
+
32
+ ## 一、这片想让观众得到什么
33
+ <观众看完能复述什么;它让人坐得住 / 看下去的办法是什么>
34
+
35
+ ## 二、整片结构与节奏
36
+ | 段 | 时码 | 看到的 | 它在做什么 |
37
+ |---|---|---|---|
38
+ | 冷开场 | 0–6 | … | … |
39
+
40
+ 切点密度:`boundaries` <参数> 测得 <N> 处视觉变化,平均约 <x>s 一变;<各系统单次停留时长>。
41
+
42
+ ## 三、视觉 / 声音系统(每个系统写一次,状态变化见 TIMELINE)
43
+
44
+ ### S1 <用这条片自己的样子命名>
45
+ - 看到的:<形态 / 位置 / 配色 / 字体气质>
46
+ - 状态:<出现 / 高亮 / 灰化 / 合并 / 换形态 / 退场……>
47
+ - 它在做什么:<对观众的作用>
48
+ - 首次出现:<秒>(`evidence/…`)
49
+ - 归属:<叠层 / 版式>——<讲者的位置、大小或可见区域变没变;依据哪张网格>
50
+
51
+ ## 四、色彩与字体(从大图取的近似值)
52
+ - <角色>:<色值>,用在 <哪里>
53
+ - 字体气质:<标题 / 正文 / 数字 / 英文各是什么气质>
54
+
55
+ ## 五、动效性格
56
+ - <如:快进慢驻——元素 4–6 帧到位,之后整幅慢推,见 `evidence/motion/…`>
57
+ - <如:状态变化多于出场;切走不清板>
58
+
59
+ ## 六、迁移:哪些保留作用、哪些重做形式
60
+ | 系统 | 归属 | 目标上怎么落 |
61
+ |---|---|---|
62
+ | S1 … | 叠层 / 版式 | 保留:<作用>;重做:<目标上的形式>;不做:<什么及理由> |
63
+ ```
64
+
65
+ ## TIMELINE.md
66
+
67
+ 每节一个「源片秒区间 · 段落意义」标题,节内写**对着哪句话、发生了什么、为观众做了什么、证据在哪**。
68
+ 密集段落可以逐句列。同一个系统跨多节时,用 ANALYSIS 里的系统名指代它,只写这次的状态变化。
69
+
70
+ ```md
71
+ # <参考片名> · 时码精读(TIMELINE)
72
+
73
+ > 源:<参考片>(<时长>)。时码 = 源片秒;字级时码见 `transcript.json`。
74
+
75
+ ## 121.5–146.0 · 持续板:逐个排除(核心范例)
76
+ 证据:`evidence/排除/`、`evidence/motion/stamp/`。
77
+ - 121.9「这个行业有 5 家大公司」→ S4 徽章板回来,左上小灰条标题,S2 讲者圆窗在左下。
78
+ - 123.9「第一家」→ 该徽章放大变亮;「买不动」→ S5 红色印章约 124.9s 落在徽章上(逐帧:4 帧到位、轻微过冲后回落)。
79
+ - 131.9「剩下的两家还可以」→ 两枚徽章变金黄(选中态)。
80
+ → 观众每听到一个名字,眼睛就落到那枚徽章上;判断落章。插一句讲者全画面后板回来,状态保留。
81
+ ```
82
+
83
+ ## PROGRESS.md
84
+
85
+ ```md
86
+ # 精读进度
87
+
88
+ - 目标:<学什么;套到谁的什么片上>
89
+ - 主读:<参考片>;交叉印证:<…>
90
+ - 当前问题:<正在弄清的一件事>
91
+ - 已读:<段落 / 系统清单>
92
+ - 未读:<段落 / 系统清单,带时码>
93
+ - 待查:<没看清的事 + 时码 + 打算用什么尺度看>
94
+ - 下一步:<一句话>
95
+ ```
@@ -26,6 +26,12 @@ description: "能生产 skill 的 meta skill——通过启发式访谈引导视
26
26
  - ✅ 正例:用户说「我喜欢它信息密但颜色狠少」→ 你记下候选维度「信息密度」「色彩纪律」(用他的词)。
27
27
  - ❌ 反例:你问「你的视觉 token 是什么?你有几个主题变体?」——这是拿别人的维度套他。
28
28
  - **不适用分支**:从零新栏目没有自己的作品 → 全用他人作品:「找 3 条你看了会嫉妒的视频」。
29
+ - **视频参考分支(参考片精读)**:用户给的是**本地视频文件**(「我想要这条视频的感觉」)而不是口述时,先走 `/gtrk-ref-reading` 把它读成精读目录(`ANALYSIS.md` 整片模型 + `TIMELINE.md` 时码细节 + `evidence/` 带台词网格),再回来**逐个系统出示证据**(一张网格 + 一句话作用)问:「这个像你吗?哪里不像?你会怎么叫它?」
30
+ - 精读出的系统名(S1 讲者圆窗、S4 逐字落板……)是**参考片的**语法,不是用户的维度——**未经用户认领 MUST NOT 直接成为栏目维度**;进栏目 skill 的维度用用户认领时的原话命名,并在访谈记录里留下认领语。
31
+ - 用户否掉的系统(「这个太闹,不要」)记进 ② 禁令区候选,用他的原话。
32
+ - 精读的迁移表(保留作用 / 重做形式 / 不做)直接喂 ③:「这句话该落什么」的判断顺序往往就藏在 TIMELINE 里。
33
+ - ✅ 正例:出示「印章判决」网格,用户说「对,就是这种一锤定音的感觉,我叫它『盖章』」→ 维度「盖章」。
34
+ - ❌ 反例:把 ANALYSIS 的十二个系统原样抄成栏目 skill 的章节——那是在复制别人的栏目,不是接生用户的。
29
35
 
30
36
  ### ② 禁令先行(最硬的护栏都是负面的)
31
37
 
@@ -50,7 +56,7 @@ description: "能生产 skill 的 meta skill——通过启发式访谈引导视
50
56
  ### ⑤ 词表沉淀
51
57
 
52
58
  访谈中**反复出现的自造词**(他给自己概念起的名字)逐个登记。这些词就是他栏目的语法词汇。
53
- - 条件产出:家族 ≥2 个 skill **或** 沉淀出自造词时,单独产共享词表文件(家族各 skill 引用它,防多处定义漂移);单 skill 且无自造词时,词表并入 SKILL.md 一节即可。
59
+ - 条件产出:家族 ≥2 个 skill **或** 沉淀出自造词时,单独产共享词表文件(家族各 skill 引用它,防多处定义漂移);单 skill 且无自造词时,词表并入 SKILL.md 一节即可。
54
60
 
55
61
  ### ⑥ 家族切分
56
62
 
@@ -63,6 +69,7 @@ description: "能生产 skill 的 meta skill——通过启发式访谈引导视
63
69
 
64
70
  每个 skill 至少规划 N 个**验证过的成品案例**(exemplar)收进 assets/。原则写给 skill:「案例是原则的具象化,不是填空答案」。
65
71
  - **不适用分支**:产物不是可留存文件的产线(如实拍混剪的选片手感)→ 用「判例」代替:记录 3 个真实决策(这条为什么选/为什么毙)。
72
+ - **来自参考片精读时**:TIMELINE 的典型段落可以写成判例(「这句话该落一个大数字,因为……」),但 exemplar 必须是**按其作用重做的成品**——参考片的帧与片段 MUST NOT 收进 assets/(版权归原作者,也会把别人的栏目原样搬进来)。
66
73
 
67
74
  ## 卡壳弹药(受铁律 2 约束)
68
75