@gitruck/cli 1.3.3 → 1.3.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (52) hide show
  1. package/AGENT.md +53 -28
  2. package/CHANGELOG.md +30 -0
  3. package/README.en.md +50 -50
  4. package/README.md +50 -50
  5. package/assets/composite-kit/kit.css +57 -0
  6. package/assets/composite-kit/kit.js +246 -0
  7. package/assets/composite-kit/stage.html +265 -0
  8. package/assets/readme/wordmark.svg +6 -6
  9. package/contracts/README.md +16 -16
  10. package/contracts/gsap-emit-v1-evidence.md +200 -196
  11. package/contracts/gsap-emit-v1.md +163 -163
  12. package/contracts/handoff-contracts.json +10 -10
  13. package/dist/index.js +445 -291
  14. package/docs/development.en.md +47 -47
  15. package/docs/development.md +47 -47
  16. package/docs/reference.en.md +77 -11
  17. package/docs/reference.md +88 -22
  18. package/docs/workflow.en.md +72 -72
  19. package/docs/workflow.md +72 -72
  20. package/package.json +2 -2
  21. package/skills/gtrk-ai-drama/SKILL.md +10 -10
  22. package/skills/gtrk-ai-drama/references/sparse-key-scenes.md +38 -38
  23. package/skills/gtrk-ai-drama/scripts/validate-storyboard.mjs +119 -119
  24. package/skills/gtrk-composite/SKILL.md +194 -0
  25. package/skills/gtrk-cover/SKILL.md +3 -3
  26. package/skills/gtrk-cover/references/layout-recipes.md +337 -337
  27. package/skills/gtrk-cover/references/prompt-templates.md +119 -119
  28. package/skills/gtrk-food-recap/SKILL.md +9 -9
  29. package/skills/gtrk-live-slicing/SKILL.md +75 -25
  30. package/skills/gtrk-long2short/SKILL.md +11 -2
  31. package/skills/gtrk-matrix/SKILL.md +20 -10
  32. package/skills/gtrk-mg/SKILL.md +391 -391
  33. package/skills/gtrk-music-visualizer/SKILL.md +3 -3
  34. package/skills/gtrk-narration/SKILL.md +23 -23
  35. package/skills/gtrk-oralcut/SKILL.md +5 -4
  36. package/skills/gtrk-splitter/SKILL.md +298 -298
  37. package/skills/gtrk-splitter/references/example-visual-split.json +645 -645
  38. package/skills/gtrk-splitter/references/example-visual-split.md +439 -439
  39. package/skills/gtrk-splitter/references/field-schema.md +171 -171
  40. package/skills/gtrk-style-maker/SKILL.md +1 -1
  41. package/skills/gtrk-style-maker/references/ammo.md +16 -16
  42. package/skills/gtrk-style-maker/references/contracts-ref.md +9 -9
  43. package/skills/gtrk-style-maker/references/seeds/README.md +4 -4
  44. package/skills/gtrk-style-maker/references/seeds/seed-ecom-home-goods.md +37 -37
  45. package/skills/gtrk-style-maker/references/seeds/seed-psych-humanities.md +35 -35
  46. package/skills/gtrk-talking-head/SKILL.md +15 -7
  47. package/skills/gtrk-tools/SKILL.md +3 -2
  48. package/skills/gtrk-transcript/SKILL.md +4 -4
  49. package/skills/gtrk-transcript/agents/openai.yaml +4 -4
  50. package/skills/gtrk-travel-recap/SKILL.md +52 -52
  51. package/skills/gtrk-vlog-docu/SKILL.md +6 -6
  52. package/skills/gtrk-voiceover/SKILL.md +2 -2
@@ -31,7 +31,7 @@ description: B-roll 检索铺轨编排手册——成片管线里第一个铺的
31
31
  1. **概览**:按素材时间顺序查看带时码的抽帧与照片;长场景也保留多个观察位置。结合 `gtrk transcript` 的原声转写整理事件、人物、环境和待核实之处,不从文件名猜内容。
32
32
  2. **细查**:脚本要求某个动作或情绪时,对相关素材用 `describe --materials <视频> --source-window <起秒,止秒> --prepare <工程目录/审阅目录>` 加密取帧;通过当前视觉工具检查过程。有音频依赖时回看/听对应原声,不以一张图证明完整动作。
33
33
  3. **回传**:查看任务中的实际图片后填写 `visual-review.json`,以相同输入参数加 `--review <回执路径>` 导入。全部本地完成时零豆包调用;不能看图或无法完成的单项标 `unavailable` 并说明原因,只有这些项由豆包补齐。不得把未查看项批量写成完成,也不得仅因省事直接调用豆包。
34
- 4. **编排**:从已观察证据中按脚本意图选择片段。按脚本语义选材,本手册不调用视频高光算法;该增强仅由 Vlog 图纸按需编排。看片范围、未确认事实和原声覆盖均如实记录。
34
+ 4. **编排**:从已观察证据中按脚本意图选择片段。按脚本语义选材,本手册不调用视频高光算法;该增强仅由 Vlog 图纸按需编排。看片范围、未确认事实和原声覆盖均如实记录。
35
35
 
36
36
  ```bash
37
37
  gtrk matrix describe --materials <本地视频或图片> --prepare <工程目录/visual-overview> --json
@@ -154,7 +154,7 @@ gtrk matrix describe --materials <同一素材> --review <工程目录/visual-ov
154
154
  | 多铺几条候选对比 | `--lay <n>` | 非负整数 · `1`(`0`=只出 plan 不铺轨) | opencut 小眼睛切换对比挑选 |
155
155
  | 每段多给几个候选 | `--top-k <n>` | 整数 · 派单 `shots` 值(服务端上限 50) | 每 query 候选数上限 |
156
156
  | 指定素材类型 | `--material-class <c>` | `real_shot` \| `concept` · 栏目策略 | 仅 internal 矩阵成员口 |
157
- | 填充门槛 | `--score-floor <f>` | 浮点 0–1 · `0.2` | 低于不采纳、槽位留空露黑底;调完必看空洞告警 |
157
+ | 填充门槛 | `--score-floor <f>` | 浮点 0–1 · `0.2` | 低于不采纳、槽位留空——口播工程里留空处由候选轨补纯黑片;调完必看空洞告警 |
158
158
  | 切点对齐字幕句 | `--cut-align <r>` | 浮点 0–1 · `0.7`(`0`=关闭) | 三七开拍板:约七成字幕句起点恰逢镜头切点、三成有意错开;句级时码取 transcript 重投影(降级自动回旧节奏并告警);开启时结果 JSON `lay.cut_align` 报实测比例 |
159
159
  | 主轨空洞填充 | `--gap-fill <m>` | `fast` \| `solid`(默认)\| `none` | **仅音频驱动工程主轨**(口播工程不适用零回归):fast=放宽地板随便填候选→延长相邻颗粒→**跨 beat 借候选**→**次地板补真画面**→仍不够才黑片;借来的画面与本段稿子相关性弱、次地板槽是不到 1.2s 的快切,两者都会在日志里**指名报出**(`kind` 为 `borrowed` / `subfloor`)——那是如实告知,**不是缺陷,别当 bug 上报**;solid=黑片垫齐(精修一眼看出没匹配到);none=留 gap(客户端主轨磁吸会吸除 gap 致画面与配音错位,慎用);生效时结果 JSON `lay.gap_fill` 报明细 |
160
160
  | 编排交给云端跑 | `--arrange <m>` | **按素材来源自动定档,一般不用传** | 铺**自己电脑里的素材**→`cloud`(编排在服务端,按编排量计费);铺**素材矩阵的素材**→`local`(编排仍在本机、不计费,逐字不动)。`shadow`=本机照跑照铺轨、云端只对拍不采纳。⚠️ 本地素材路上 `--arrange local` **不受理**;云端拿不到产物时**直接报错**,不会换算法把活干完。⚠️ **它不是省钱开关**——矩阵素材要付检索费,两条路都花钱、只是花在不同环节,MUST NOT 对用户说「用本地就不花钱」 |
@@ -163,7 +163,7 @@ gtrk matrix describe --materials <同一素材> --review <工程目录/visual-ov
163
163
  | 先估价再决定跑不跑 | `--arrange-estimate-only` | 开关 · 缺省关 | 走到云端编排的计价确认那一步就停:报出编排量后**成功**返回(`ok:true` + `estimateOnly:true`,不是「被拒绝」),零云端调用、工程零改动。机读值在 `lay.arrange.units` 与 `lay.arrange.scale`。⚠️ 它省的是**云端那一次调用与其计费**(及其后的下载落轨),不是整条链——工程/plan/重投影照样要走。素材矩阵路会报 `applicable:false` 而**不是 0**。与 `--yes` 同给时以它为准 |
164
164
  | 云端编排请求体存证 | `--dump-request <file>` | 路径 · 缺省不写 | **排障专用,用户没提就别带。** 把**实际上行的**云端编排请求体逐字节落到该文件——服务端**不保存 plan 全文**,所以复现一次调用只能靠它。⚠️ **不能指向工程目录内**(工程会被打包拷走,而它含 beat 名与检索词),传了会报参数错;开 `--arrange-qc` 时每轮各一份(第 N 轮加 `.roundN`)。回执在 `lay.arrange_run.dump_request`。⚠️ 转交这份文件前 MUST 先告诉用户里面有什么,别替他做决定 |
165
165
  | 外发调参仪表 | `--explain` | 开关 · 缺省关 | 缺省 `lay.dedup` 只出 `emptySlots`(判素材池够不够用,upsell 判据就是它);本开关再补 `emptySlotsByRefine` / `adjacentWaived` / `hotSlotsPlaced` / `blurrySlotsPlaced` 四个**调参仪表**,人读日志同口径。**不改任何决策**,工程产物逐字节不变。⚠️ 用户问「为什么这颗抖/糊/空」时才带,别缺省开着刷噪音 |
166
- | 不要黑底垫轨 | `--no-black-bed` | 开关 · 默认铺 | 黑底按 beat 包络整条铺,B-roll 期间遮口播 |
166
+ | 用户的客户端太旧(不认片段底板) | `--black-bed` | 开关 · 默认关 | 旧形态:铺一条纯黑底垫轨、候选片段不带底板。缺省是**候选片段自带纯黑底**(`background_fill`)、空档在候选轨内补纯黑片,不铺黑底轨;`--no-black-bed` 已是缺省(无操作) |
167
167
  | 已编辑轨强铺逃生门 | `--force-relay` | 开关 · 关 | 用户明确点头才带;raw 登记删除不可恢复 |
168
168
  | 同素材彻底不二用 | `--dedup-scope material` | `scene`(默认)\| `material` | 收严会加剧空洞,先看 `lay.dedup.emptySlots` |
169
169
  | 机读(你必带) | `--json` | 开关 · 关 | 人读日志转 stderr,stdout 只出结果 JSON |
@@ -204,6 +204,14 @@ gtrk matrix describe --materials <同一素材> --review <工程目录/visual-ov
204
204
 
205
205
  出参逐条:`{id, note, duration, audio_type, tags, score, download_url, cover_url}`;`audio_type`(`pure` 纯音乐 / `song` 歌曲)与 `accompaniment_url`(song 类现成伴奏直链,零处理成本)**两档通用**;**只有 `is_copyright`(及 clip 的 `material_class`)是成员口独有**——公开口**没有**这个字段,零件如实缺省不伪造,你也别把「没有该字段」读成「不可商用」。`download_url` 带 24h 签名(过期重跑即重签)。
206
206
 
207
+ **Pexels 补充(仅 clip / image)**:`--scope clip|image` 时零件缺省另附 Pexels 补充结果,放在 `--json` 出参顶层的 **`pexels_results`** 数组(另有 `pexels_status`,`counts.pexels` 计条数),**不在 `results` 里,也不算候选数**;`--no-stock` 关闭,`audio` 恒不带。
208
+
209
+ - 补充条目 id 形如 `pexels:video:<n>` / `pexels:image:<n>`,带 `rank`(**没有 `score`**,别拿去和自有结果比分)、`author` / `author_url` / `page_url` / `download_url`;
210
+ - 用之前先用 `download_url` **下载落地**再引用(`.gtrk` 不收 url 态素材);**MUST NOT** 拿 `pexels:` id 跑 `matrix fetch`——补充素材不经同合云授予,CLI 会直接拒绝;
211
+ - 引用时 **MUST 保留摄影师署名与 Pexels 链接**(条目的 `author` / `author_url`,以及 https://www.pexels.com);
212
+ - **MUST NOT** 把 Pexels 素材上传到任何对外可检索的素材库或图库(Pexels License 禁止再分发);
213
+ - `pexels_status` 为 `unavailable` / `disabled`,或出参里根本没有 `pexels_status` = 这次补充源没用上,**自有结果不受影响**,照常往下走,不必追问用户。
214
+
207
215
  > ⚠️ **`is_copyright` = 能不能商用,不是「有没有被版权保护」**
208
216
  >
209
217
  > ```
@@ -271,7 +279,7 @@ gtrk matrix describe --materials <同一素材> --review <工程目录/visual-ov
271
279
  | 消费(编辑后的)plan 铺轨 | `gtrk matrix lay --project <目录>` | 目录 · — | 读 `<目录>/split/broll-plan.json`,白名单校验后按 **plan 现值**铺轨(不重新检索、零检索开销) |
272
280
  | 显式指定 plan 文件 | `--plan <path>` | 路径 · 上述默认 | 配方 C 自己组的 plan 从这进。⚠️ 组的时候把检索返回的 `results` 条目**原样搬**——`cuts` / `motion` 住在 `segments[]` 里面,自己重写 segments 就把它们丢了(后果:端点残片收缩空转、高运动降权失效,见配方 C 要点) |
273
281
  | 美观度参与排序 | `--mark-weight <w>` | 浮点 0–1 · `0`(关闭) | 仅 `matrix lay`:候选融合分 = `sim×(1-w)+(mark/100)×w`,mark 取 describe 理解缓存(素材内**就近帧**命中);无缓存候选**中性**(融合分=sim,不惩罚不加分、绝不变相剔除);score 地板仍只看原始 sim。**零件不裁定:默认关(0 时排序与产物逐字节零回归),开不开、开多大由配方/你裁定**——先 describe 过一轮才有 mark 可用(配方 B ② 之后开才有意义),开启时结果 JSON `lay` 含 `mark_weight/mark_hit/mark_neutral` |
274
- | 其余铺轨参数 | `--lay/--score-floor/--cut-align/--gap-fill/--arrange/--arrange-cost-cap/--arrange-estimate-only/--arrange-qc/--dump-request/--explain/--no-black-bed/--force-relay/--dedup-scope/--yes/--no-image-broll` | 同主命令 | 语义一致 |
282
+ | 其余铺轨参数 | `--lay/--score-floor/--cut-align/--gap-fill/--arrange/--arrange-cost-cap/--arrange-estimate-only/--arrange-qc/--dump-request/--explain/--black-bed/--force-relay/--dedup-scope/--yes/--no-image-broll` | 同主命令 | 语义一致 |
275
283
 
276
284
  ## plan 编辑口径(法定通道的边界)
277
285
 
@@ -390,9 +398,10 @@ gtrk matrix --project "<split 产物目录>" [--lay N] [--score-floor F] [--top-
390
398
 
391
399
  - `counts`:几个 beat、几条检索(几条失败)、几条候选——一句话概括盘子大小。
392
400
  - `memberType`:internal=矩阵成员口(栏目偏好/concept 生效);external=通用口(固定 real_shot + 可商用)。
393
- - `lay.laidTracks` / `lay.laidClips`:铺了几条候选轨、几个颗粒(不含黑底轨)。
394
- - `lay.blackTrack`:黑底垫轨轨号(未铺时 null)。
395
- - `lay.blackBedHoleSec` / `lay.blackBedHoles`:**黑底空洞**(纯黑压口播时段),恒全量不按阈值过滤——非零就主动报(哪个 beat、几秒、在哪),这是粗剪期既定取舍不是故障。
401
+ - `lay.laidTracks` / `lay.laidClips`:铺了几条候选轨、几个颗粒(不含空档补片 / 黑底轨)。
402
+ - `lay.bed`:底板形态——`fill`(缺省:候选片段自带纯黑底、空档在候选轨内补黑)/ `track`(`--black-bed` 旧形态);`lay.bed_fill` = 补了几段、几秒。
403
+ - `lay.blackTrack`:黑底垫轨轨号(只有 `--black-bed` 才有,缺省 null)。
404
+ - `lay.blackBedHoleSec` / `lay.blackBedHoles`:**纯黑时段**(没有任何 B-roll、靠黑片压住口播的段落;两种形态数值相同),恒全量不按阈值过滤——非零就主动报(哪个 beat、几秒、在哪),这是粗剪期既定取舍不是故障。
396
405
  - `lay.removedTracks` / `lay.keptEditedTracks`:剥了哪些旧自产轨 / 因「你编辑过」保留未剥的轨。删了什么必须跟用户说。
397
406
  - `lay.dedup`:`emptySlots`(宁空不重复的空槽数——多了是该补料或走动线②的信号)、`adjacentWaived`。
398
407
  - `lay.pinned`(有钉选才出现):`requested/placed/yielded`——三个数**按段计**(键 `<clip_id>@<段内锚点毫秒>`)且同分母,`placed + yielded === requested` 恒成立。整片单素材的工程(二创:一条长视频钉多处引用)全靠这个粒度才看得出「钉了 5 段只落了 1 段」。`yielded` 非空要**逐段指名**哪些没落上(stderr 也有告警)。
@@ -423,7 +432,8 @@ gtrk matrix --project "<split 产物目录>" [--lay N] [--score-floor F] [--top-
423
432
  - 在同合云桌面客户端(opencut / OpenCut Gitruck Edition)里打开工程,候选轨已铺好。
424
433
  - 用轨道头「小眼睛」逐条切换对比,留满意的、关不要的。
425
434
  - 候选默认是 preview 代理;下载原片属挑选后的动作(客户端挑选 UI)。
426
- - 候选轨下方垫了纯黑底轨(`lay.blackTrack`)——删多余候选轨时**别误删它**;换片拖到**候选轨颗粒**上、别拖到黑底条上(0.2.10 起客户端会拒绝并提示;旧版会静默建轨——用户说「拖了没反应」先让他重启客户端吃强更,再查轨道数,`Ctrl+Z` 整条撤销)。**MUST NOT 对旧版客户端用户承诺「客户端会拒绝并提示」**。
435
+ - 候选片段**自带纯黑底**(片段级背景填充,客户端属性面板「基础 › 背景填充」可逐片段改),空档在每条候选轨上各补了纯黑片——所以**关掉某条候选轨的小眼睛会露口播**,那是用户主动切换。纯黑补片也是候选轨上的片段,换片拖到**候选轨颗粒**上替换即可。
436
+ - **旧工程**(之前按黑底垫轨铺的)可能还有一条纯黑底轨(`struct_meta.broll.black_track`)——别误删;重铺时它会被换成新形态。用户的客户端太旧、打开后 B-roll 黑边处露口播 ⇒ 让他升级客户端,或本次加 `--black-bed`。
427
437
  - 觉得填充有问题(太杂/太空/漏段)→ 回来找我调参重铺(配方 B 的理解裁定也在这时上场)。
428
438
 
429
439
  **用户明确说「B-roll 就这样」之后**,才往下走——先看 AI 情景片段腿(同属 ③),三源齐了再进 ④ 全局抽帧检查,过了才交棒 ⑤ 铺 MG。详见末节「下一步」。
@@ -433,10 +443,10 @@ gtrk matrix --project "<split 产物目录>" [--lay N] [--score-floor F] [--top-
433
443
  | 情况 | 怎么做 |
434
444
  |---|---|
435
445
  | 想在多个候选里挑 | `--lay N` 多铺几条候选轨。**只增加可选方案数,不扩大覆盖**——别把它当空洞的解药 |
436
- | 填充太差 / 命中太杂 | 先看排序前几条质量再调 `--score-floor`(调高留空处露黑底,必看空洞告警);杂得可疑 → 走配方 B:describe top 候选,按 `usable_flags`+`desc` 剔除后 `matrix lay` |
446
+ | 填充太差 / 命中太杂 | 先看排序前几条质量再调 `--score-floor`(调高留空处补纯黑,必看空洞告警);杂得可疑 → 走配方 B:describe top 候选,按 `usable_flags`+`desc` 剔除后 `matrix lay` |
437
447
  | 「像但不能用」(水印/字幕/黑边混进候选) | 配方 B 的标准场景:`describe --plan` → 你删掉命中的 result → `matrix lay`。**CLI 不会自动剔**(零件不裁定),删不删你判断 |
438
448
  | 某候选非用不可 / 顺序想钦定 | 编辑 plan:该 result 标 `pinned:true` → `matrix lay`。钉选是落位保证(免负词/地板/不二用抢占/紧邻避让),`lay.pinned.yielded` 非空说明确实钉多了在打架,名单逐段指名 |
439
- | **出现黑底空洞告警** | 不是故障:照 `lay.blackBedHoles` 逐段报给用户,出路=调低 `--score-floor` / `--no-black-bed` 露主轨 / opencut 手动补片 / 动线②云端垫底 |
449
+ | **出现空档补黑 / 黑底空洞告警** | 不是故障:照 `lay.blackBedHoles` 逐段报给用户,出路=调低 `--score-floor` / opencut 手动补片 / 动线②云端垫底 |
440
450
  | 每段候选太少不够挑 | `--top-k` 调大重跑 |
441
451
  | 某段有空槽 / 想补特定意象 | `gtrk matrix search "<英文长句场景描述>" --project <目录> --json` 单条补检;影视解说类补检记得带 `--source-window` 保时序 |
442
452
  | 只想先看清单不铺轨 | `--lay 0`(只产 plan);之后铺 = `matrix lay`(不重新检索、不重新烧配额) |