@gitruck/cli 1.3.11 → 1.3.13

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.
@@ -1,13 +1,15 @@
1
1
  ---
2
2
  name: gtrk-cover
3
- description: 封面工作台——把一期视频的封面从「设计诊断 + 文生图 Prompt」到「H5 排字工作台一键导出多尺寸 PNG」两阶段做完。阶段一产诊断与三尺寸中英双版 Prompt(用户拿去 Midjourney / Flux / SDXL / Nano Banana / 即梦 / 可灵 / 通义万相 等任意文生图平台抽图),阶段二收齐背景图后产可拖拽排字的单文件 H5 工作台、浏览器里导出原分辨率 PNG。这是**纯创作 skill、无 gtrk 命令**(抽图在外部平台、排字在用户浏览器,同 /gtrk-ai-drama)。当用户想「做封面 / 出封面 / 封面 prompt / 封面排版 / 封面工作台 / cover」时使用本 skill。通用封面工艺(两阶段交付 / T1 字数布局路由 / Prompt 槽位 / 工作台引擎)由本 skill 自持;栏目封面审美(色板 / 字体 / 意象体系 / T1 样本)从栏目配置 style.skills 里 produces=="cover" 的条目解析注入,绝不硬编某栏目风格。凡给成片配封面,优先用本 skill,别手搓 prompt、别让用户裸排版。
3
+ description: 封面工作台——两阶段做完一期视频的封面:阶段一出设计诊断与三尺寸中英双版文生图 Prompt(用户拿去任意文生图平台抽图),阶段二收齐背景图,产可拖拽排字的单文件 H5 工作台(`gtrk cover embed` 嵌图),在浏览器里导出多尺寸 PNG。栏目封面审美从栏目配置 style.skills 里 produces=="cover" 的条目注入,绝不硬编某栏目风格。当用户想「做封面 / 出封面 / 封面 prompt / 封面排版 / 封面工作台 / cover」时使用本 skill,别手搓 prompt、别让用户裸排版。
4
+ metadata:
5
+ in_app_agent: true
4
6
  ---
5
7
 
6
8
  # 封面工作台(gtrk-cover)
7
9
 
8
10
  把一期视频的封面走完两阶段:**阶段一**产设计诊断 + 三尺寸中英双版文生图 Prompt,交棒用户去外部平台抽图;**阶段二**收齐背景图后产**定制化 H5 排字工作台**(单文件 HTML、可拖拽 / 方向键 / 数值 / 滚轮微调、逐尺寸与一键导出原分辨率 PNG),用户在浏览器里排字导出。
9
11
 
10
- > **这是纯创作 skill、没有 gtrk 命令**——主链路「审美诊断 → Prompt → 外部平台抽图 → 用户浏览器拖字导出」里,抽图与排字两个环节的「手」在外部平台和用户手里;唯一的机械段(背景图压缩 + base64 注入模板)是一次模板文本替换,量级不足一条业务命令,且 `.gtrk` 工程没有封面槽位可写回(性质同 `/gtrk-ai-drama`)。别去找 `gtrk cover` 这条命令,它不存在也不该存在。
12
+ > **以创作为主的 skill**——主链路「审美诊断 → Prompt → 外部平台抽图 → 用户浏览器拖字导出」里,抽图与排字两个环节的「手」在外部平台和用户手里;**唯一的机械段**(背景图按尺寸压缩 + base64 嵌进工作台)走 `gtrk cover embed`(纯本地、零计费),不要自己写脚本。`.gtrk` 工程没有封面槽位可写回,封面产物不进工程。
11
13
 
12
14
  ## 定位:管线外的「第 0 阶段」
13
15
 
@@ -19,17 +21,20 @@ description: 封面工作台——把一期视频的封面从「设计诊断 +
19
21
  2. **两阶段不能合并。** 用户还没抽图就端出工作台 = 盲排(不看背景图排字,等于退回指令稿时代);工作台的价值就在「因势象形地就着背景图排字」。阶段一交付后**停下等图**。
20
22
  3. **审美决策由本 skill 做,工作台只暴露微调面。** 工作台暴露给用户的只有:图层位置 / 字号 / 文案 / 显隐、显式声明的装饰件开关、T1 全局样式滑杆(描边 / 发光 / 既定字色选项)、**T1 字体与字重档位(字体列表读用户本机已装字体,默认字仍由本 skill 定)**。色板体系、字体选型、布局拓扑、装饰件组合是审美决策——由你按注入的风格资产做出、交付时说明理由;用户想改审美层,**经对话增量改 HTML**(不推倒重来),别让他在工作台里找不存在的控件。
21
23
 
22
- > **产物落点纪律(MUST · 全文见随包 `AGENT.md` 同名一节)**:
23
- > 交付物 MUST NOT 先写 agent 自有目录再拷进工程;中转本身即违规,体积不是豁免理由。
24
+ > **产物落点纪律(MUST · 全文见随包 `AGENT.md` 同名一节)**:
25
+ > 交付物 MUST NOT 先写 agent 自有目录再拷进工程;中转本身即违规,体积不是豁免理由。
24
26
  > Prompt 文本与工作台 HTML 只落**用户显式指定目录**,或有工程上下文时落 `<project>/cover/`;
25
- > **MUST NOT** 把用户媒体(背景图 / 导出的封面 PNG / 任何大文件)复制到 agent 自有工作目录(如用户文档目录下 agent 产品自建的目录、agent 家目录缓存、会话工作区)——压缩背景图时**从原路径读取**,压缩产物直接以 base64 写进工作台 HTML,不留中间副本;
26
- > 压缩脚本等临时文件一律放系统 temp 且**用完即删**。交付物直接写入工程目录或用户显式指定的路径;引用媒体用原路径。
27
+ > **MUST NOT** 把用户媒体(背景图 / 导出的封面 PNG / 任何大文件)复制到 agent 自有工作目录(如用户文档目录下 agent 产品自建的目录、agent 家目录缓存、会话工作区)——`gtrk cover embed` **从原路径读取**背景图,压缩产物直接以 base64 写进工作台 HTML,不留中间副本。
28
+ > 交付物直接写入工程目录或用户显式指定的路径;引用媒体用原路径。
29
+ >
30
+ > **在即剪内置 AI 里**:只能写当前工程目录,Prompt 与工作台一律落 `<工程>/cover/`。用户抽好的背景图是**拖进对话框的附图**,宿主会在本轮注入里给出它们在工程目录 `agent-uploads/` 下的路径——直接把这些路径交给 `gtrk cover embed`,不要复制。交付时在回复里用 `[名字](相对工程目录的路径)` 给出 Prompt 文件与工作台(面板画成文件卡,工作台带「用浏览器打开」),用 `![说明](路径)` 展示采用的背景图。
27
31
 
28
32
  ## 业务分离:栏目封面风格从哪来(关键)
29
33
 
30
34
  **封面审美不是本 skill 预设的,是从栏目配置解析出来的。** 解析链路(与 `/gtrk-ai-drama` 的 Style Lock 解析同源):
31
35
 
32
- 1. **定位有效栏目**:用户 `--column <id>` 口头指定的栏目,或本地 config 的 `defaultColumn`;配置文件在 `~/.gitruck/columns/<id>.json`。本 skill 无 gtrk 命令,**直接读这个 JSON 文件**。
36
+ 1. **定位有效栏目**:用户 `--column <id>` 口头指定的栏目,或本地 config 的 `defaultColumn`;配置文件在 `~/.gitruck/columns/<id>.json`,**直接读这个 JSON 文件**。
37
+ - **在即剪内置 AI 里读不到 `~/.gitruck` 下的栏目配置**:本轮用户在输入区选了「视频风格」时,以那份风格的色板、字体、装饰为封面审美来源(读到什么维度用什么);没选就用下面「中性默认」,不要去猜。
33
38
  2. **取封面风格条目**:读 `style.skills[]`,取 `produces` **大小写不敏感归一后 `== "cover"`** 的条目。
34
39
  - 命中且未声明 `routing:"none"` → 拿它的 `ref`(指向一个 skill 目录/资源)→ **读该资产的封面风格维度**——色板与情绪轴、字体选型、概念→意象对照、T1 样本、材质与回避清单、平台安全区偏好……**读到什么维度用什么**;缺某维度就只对该维度回落中性默认,不整体放弃注入。
35
40
  - 条目声明 `routing:"none"` → 跳过(退役 / 显式停用标记)。
@@ -58,20 +63,20 @@ description: 封面工作台——把一期视频的封面从「设计诊断 +
58
63
 
59
64
  **Step 2 · 出三尺寸 Prompt**(`references/prompt-templates.md`):每尺寸一套**英文主版 + 中文辅版**,构图差异显式化(16:9 主体居中两侧留气 / 4:3 饱满可顶三边留对角气口 / 3:4 主体中段上下舒展)。铁律:**不让生图模型渲染中文字**——字全部由阶段二工作台贴,图里只留气息性软留白。
60
65
 
61
- **Step 3 · 阶段一自检**(`references/checklist.md` 阶段一 5 条)→ 结束语明确交棒:「每个尺寸抽到满意的图后传回来,我生成排字工作台」。**停,等图。**
66
+ **Step 3 · 阶段一自检**(`references/checklist.md` 阶段一 5 条)→ 把诊断与三尺寸 Prompt 写成一份 `cover/<T1>_封面Prompt.md`(有工程上下文时;否则落用户指定目录)→ 结束语明确交棒:「每个尺寸抽到满意的图后传回来,我生成排字工作台」(即剪内置 AI 里写「抽好的图直接拖进对话框发给我」)。**停,等图。**
62
67
 
63
68
  ### 🛠️ 阶段二:H5 排字工作台
64
69
 
65
70
  **Step 4 · 收齐背景图后实例化工作台**(`references/workbench-guide.md` + `assets/workbench-template.html`):
66
- 1. 按各图宽高比归位到尺寸档(归不上就问,别硬塞);
67
- 2. 压缩 + base64 注入模板占位符(压缩参数与体积红线见 guide;临时脚本落系统 temp、用完即删);
71
+ 1. 按各图宽高比归位到尺寸档(归不上就问,别硬塞;拿不准宽高就 `gtrk media probe <图>`);
72
+ 2. 先按下面 3–5 把模板实例化成**源稿** `<T1>_封面排版工作台.src.html`(占位符原样留着),**最后**跑 `gtrk cover embed <源稿> --bg-16x9 <图> --bg-4x3 <图> --bg-3x4 <图> -o <T1>_封面排版工作台.html` 出成品(压缩参数与体积红线见 guide §7;没给图的尺寸占位符保留,命令会提示)。源稿与成品分开:成品里是几百 KB 的 base64,**之后改审美只改源稿、再重跑 embed**,不要去读、去改成品;
68
73
  3. 按 **T1 实际字数**实例化 T1 图层(模板 `T1_KEYS` 常量驱动,5 字就 5 个逐字图层,不写死 4 字);
69
74
  4. 注入色板 CSS 变量、T1 字体与发光、装饰件、各图层默认坐标(按布局配方 + 实际画面气口微调)、T2/T5/品牌戳等附加图层初始文案;
70
- 5. 命名 `<T1>_封面排版工作台.html`,落用户指定目录或 `<project>/cover/`。
75
+ 5. 源稿与成品同目录:落用户指定目录或 `<project>/cover/`;交给用户的是成品 `<T1>_封面排版工作台.html`。
71
76
 
72
- **Step 5 · 合规检查 + 交付**:占位符零残留 / 三尺寸 DEFAULTS 齐 / T1 初值两处一致 / `T1_DEFAULT_FONT` 与 CSS `.t1` 一致 / 浏览器打开控制台零报错、三尺寸切换正常(能验就验)。交付时讲清:工作台能做什么(拖拽 / 方向键 / 滚轮微调 / 文案编辑 / 显隐 / 恢复默认 / 换背景 / **换字体与字重(读本机字体)** / 逐尺寸与一键导出)、默认布局按什么选的、审美决策为什么这么做(含默认字的选型理由);补一遍阶段二自检 4 条。
77
+ **Step 5 · 合规检查 + 交付**:占位符零残留(`gtrk cover embed` 回执的 `pending` 为空)/ 三尺寸 DEFAULTS 齐 / T1 初值两处一致 / `T1_DEFAULT_FONT` 与 CSS `.t1` 一致 / 浏览器打开控制台零报错、三尺寸切换正常(能验就验)。交付时讲清:工作台能做什么(拖拽 / 方向键 / 滚轮微调 / 文案编辑 / 显隐 / 恢复默认 / 换背景 / **换字体与字重(读本机字体)** / 逐尺寸与一键导出)、默认布局按什么选的、审美决策为什么这么做(含默认字的选型理由);补一遍阶段二自检 4 条。
73
78
 
74
- **Step 6 · 迭代三分支**:用户自己微调位置字号文案 → 工作台已支持,不用回来;**审美层要改**(换色板 / 换字体 / 去装饰件)→ 对话告诉你,增量改 HTML 重新交付;**图要重抽** → 回阶段一只改相关槽位,其余不动。
79
+ **Step 6 · 迭代三分支**:用户自己微调位置字号文案 → 工作台已支持,不用回来;**审美层要改**(换色板 / 换字体 / 去装饰件)→ 对话告诉你,增量改源稿 `.src.html`、重跑 `gtrk cover embed` 重新交付;**换背景图** → 源稿不动,换图重跑 embed;**图要重抽** → 回阶段一只改相关槽位,其余不动。
75
80
 
76
81
  ## 中性默认(未绑封面风格资产时)
77
82
 
@@ -78,9 +78,10 @@
78
78
  ## 7. 背景图归位与压缩
79
79
 
80
80
  - **归位按宽高比**:`w/h ≥ 1.55 → 16:9`;`≥ 1.15 → 4:3`;否则 `3:4`。同档有多张时显式选择并告知备选(用户可用左栏「上传当前尺寸的背景图」随时换)。归不上任何档就问,别硬塞。
81
- - **压缩参数**(JPEG、渐进式):16:9 长边 ≤1280 / q82;4:3 ≤1600 / q78;3:4 ≤1400 / q78。纹理极密的图压不动属正常,别为体积牺牲画质到 q70 以下。
82
- - **体积红线**:整份 HTML **>1MB 必须回头降参**(浏览器打开明显变慢);>600KB 提示一句即可。
83
- - **纪律**:从**原路径**读用户图,压缩产物直接 base64 进 HTML;压缩脚本落**系统 temp、用完即删**;不留任何中间图片副本。
81
+ - **嵌图走命令**:`gtrk cover embed <源稿.src.html> --bg-16x9 <图> --bg-4x3 <图> --bg-3x4 <图> -o <成品.html>`——从**原路径**读用户图,按尺寸压成 JPEG、base64 换进三个占位符,压缩结果经管道回内存、不留任何中间图片。不要再写临时压缩脚本。
82
+ - **压缩参数**(正本在 CLI `src/lib/cover-embed.ts`,以代码为准):16:9 长边 ≤1280 / q82;4:3 ≤1600 / q78;3:4 ≤1400 / q78;只缩不放。纹理极密的图压不动属正常,别为体积牺牲画质。
83
+ - **体积红线**:整份 HTML **>1MB 必须回头处理**(浏览器打开明显变慢:换纹理少一点的图,或先把图缩小再嵌);>600KB 提示一句即可。命令回执的 `warnings` 会直接报。
84
+ - **源稿与成品分开**:占位符留在源稿 `.src.html`,成品带 base64;改排字 / 审美只改源稿再重嵌,不要读、改成品(几百 KB 的 base64 会把上下文撑满)。
84
85
 
85
86
  ## 8. 工程注意(踩过的坑)
86
87
 
@@ -1,6 +1,8 @@
1
1
  ---
2
2
  name: gtrk-matrix
3
- description: B-roll 检索铺轨编排手册——成片管线里第一个铺的车道(SOP ③ B-roll 底轨阶段)。消费拆分派单的 FILM_BROLL 队列(`dispatch.film_broll`),检索素材并在工程里平铺 N 条候选 B-roll 轨,供用户在 opencut 里用轨道小眼睛切换对比、挑选/调整;确认后交棒同阶段的 AI 情景片段腿(`/gtrk-ai-drama`,车道非空时)。命令族还含:**本地素材模式**(`matrix index` 建索引、`--local` 用自己的素材铺轨,**视频本体不上云**,只送抽帧图;选中上轨的图片会上云转运镜,`--no-image-broll` 可排除)、**按需理解**(`matrix describe`,为排序提供画质与看点信号)、**源时间窗检索**(`--source-window`,电影解说式逐段推进)、**通用三态素材检索**(`matrix material`:clip/image/audio 整条素材下载向,BGM/配图主场)、**plan 可编辑通路**(agent 改 plan 后 `matrix lay` 消费)。当用户想「铺 B-roll / 检索素材 / 找空镜 / 给空镜配画面 / 填 B-roll 候选 / 单独搜个词补个空槽 / 出片 QC 报了画面问题要换段 / 找 BGM / 搜配乐 / 搜张配图 / 用我自己的素材铺 B-roll / 给素材文件夹建索引 / 理解一下这些素材能不能用 / 把这堆素材剪成片 / 影视解说配画面」时使用本 skill。凡涉及把素材检索并铺进工程,优先用本 skill 驱动 gtrk CLI 的 `matrix` 命令族,别让用户自己去终端敲、也别手搓检索。
3
+ description: B-roll 检索铺轨——消费拆分派单的 FILM_BROLL 队列,在工程里铺候选 B-roll 轨供用户挑;也管本地素材(`matrix index` 建索引、`--local` 铺轨,视频不上云)、按需理解(`matrix describe`)与整条素材检索(`matrix material`:BGM / 配图)。当用户想「铺 B-roll / 找空镜 / 给空镜配画面 / 单独搜个词补空槽 / 出片 QC 报了画面问题要换段 / 找 BGM / 搜配乐 / 搜张配图 / 用我自己的素材铺 B-roll / 给素材文件夹建索引 / 这些素材能不能用 / 影视解说配画面」时使用,驱动 `gtrk matrix`,别手搓检索。
4
+ metadata:
5
+ in_app_agent: true
4
6
  ---
5
7
 
6
8
  # B-roll 检索铺轨编排手册(gtrk-matrix)
@@ -122,7 +124,7 @@ gtrk matrix describe --materials <同一素材> --review <工程目录/visual-ov
122
124
  gtrk matrix --project <目录> --json # 通用层垫底填空洞
123
125
  ```
124
126
  - **变奏点**:每层可独立换配方(本地层走 B 先理解再铺);每层铺完停下让用户看(见「三条业务动线」节);重铺某层不碰他层。
125
- - **注意**:概念层重铺请走上面的检索命令(`matrix lay` 从 plan 推导层归属:local→local、云端→common,概念层信息不在 plan 里)。
127
+ - **注意**:每轮检索除主 plan `split/broll-plan.json` 外另存本层快照 `split/broll-plan.<层>.json`(local / online / concept / common)——换层检索会覆盖主 plan,要重铺 / 编辑别的层就用它的快照:`gtrk matrix lay --plan split/broll-plan.concept.json`。概念层 plan 带 `source_layer: "concept"`,`matrix lay` 据此铺进概念层(其余层由 `member_type` 推出);`gtrk patch --candidate` 与 `matrix status` 也连同快照一起找候选。
126
128
 
127
129
  ### 配方 F · 图文混排
128
130
 
@@ -166,7 +168,7 @@ gtrk matrix describe --materials <同一素材> --review <工程目录/visual-ov
166
168
  | 每段多给几个候选 | `--top-k <n>` | 整数 · 派单 `shots` 值(服务端上限 50) | 每 query 候选数上限 |
167
169
  | 指定素材类型 | `--material-class <c>` | `real_shot` \| `concept` · 栏目策略 | 仅 internal 矩阵成员口 |
168
170
  | 命中镜头带上原片前后镜头 | `--neighbors <n>` | 0–5 整数 · `matrix search` 为 0、派单检索为 2 | 仅 internal 矩阵成员口的概念素材;每侧 n 条,**不参与自动铺轨**(见配方 G);非法值发请求前就报错 |
169
- | 填充门槛 | `--score-floor <f>` | 浮点 0–1 · `0.2` | 低于不采纳、槽位留空——口播工程里留空处由候选轨补纯黑片;调完必看空洞告警 |
171
+ | 填充门槛 | `--score-floor <f>` | 浮点 0–1 · `0.2` | 卡的是**片段分**(plan 里 `segments[].score`),**不是**每条候选的 `score`——检索结果的整条分与片段分出自不同模型、差得远(整条 0.35、片段 0.19 很常见)。低于不采纳、槽位留空——口播工程里留空处由候选轨补纯黑片;调完必看空洞告警。铺轨告警「整条分过了地板、片段分全低于它」(`lay.floor_hidden`)= 被地板藏起来的候选:按报出的片段分调低地板,或钉选那条 |
170
172
  | 切点对齐字幕句 | `--cut-align <r>` | 浮点 0–1 · `0.7`(`0`=关闭) | 三七开拍板:约七成字幕句起点恰逢镜头切点、三成有意错开;句级时码取 transcript 重投影(降级自动回旧节奏并告警);开启时结果 JSON `lay.cut_align` 报实测比例 |
171
173
  | 主轨空洞填充 | `--gap-fill <m>` | `fast` \| `solid`(默认)\| `none` | **仅音频驱动工程主轨**(口播工程不适用零回归):fast=放宽地板随便填候选→延长相邻颗粒→**跨 beat 借候选**→**次地板补真画面**→仍不够才黑片;借来的画面与本段稿子相关性弱、次地板槽是不到 1.2s 的快切,两者都会在日志里**指名报出**(`kind` 为 `borrowed` / `subfloor`)——那是如实告知,**不是缺陷,别当 bug 上报**;solid=黑片垫齐(精修一眼看出没匹配到);none=留 gap(客户端主轨磁吸会吸除 gap 致画面与配音错位,慎用);生效时结果 JSON `lay.gap_fill` 报明细 |
172
174
  | 编排交给云端跑 | `--arrange <m>` | **按素材来源自动定档,一般不用传** | 铺**自己电脑里的素材**→`cloud`(编排在服务端,按编排量计费);铺**素材矩阵的素材**→`local`(编排仍在本机、不计费,逐字不动)。`shadow`=本机照跑照铺轨、云端只对拍不采纳。⚠️ 本地素材路上 `--arrange local` **不受理**;云端拿不到产物时**直接报错**,不会换算法把活干完。⚠️ **它不是省钱开关**——矩阵素材要付检索费,两条路都花钱、只是花在不同环节,MUST NOT 对用户说「用本地就不花钱」 |
@@ -340,7 +342,7 @@ gtrk matrix describe --materials <同一素材> --review <工程目录/visual-ov
340
342
 
341
343
  铺完**必须停下等用户在 opencut 里挑选/调整**(关键检查点),不要一口气往下冲。
342
344
 
343
- **前置**:需要跑过 `gtrk split` 的产物目录(`split/dispatch.json`)。`film_broll` 空 = 本片没有影视/本地素材腿 → 跳过本步,看 AI 情景片段腿(`dispatch.ai_drama` 非空则交棒 `/gtrk-ai-drama`),两腿都空才直接进 ⑤。`gtrk` 找不到 → `npm i -g @gitruck/cli@latest`。用户先在 opencut 手调过切点也不怕——命令每次都现场重投影 beat 窗口,微调口播轨不用重跑 `gtrk split`,只有拆分稿本身变了才要。
345
+ **前置**:需要跑过 `gtrk split` 的产物目录(`split/dispatch.json`)。`film_broll` 空 = 本片没有影视/本地素材腿 → 跳过本步,看 AI 情景片段腿(`dispatch.ai_drama` 非空则交棒 `/gtrk-ai-drama`),两腿都空才直接进 ⑤。`gtrk` 找不到 → `npm i -g @gitruck/cli@latest`(外部 agent 的前置;内置 agent 已具备,跳过)。用户先在 opencut 手调过切点也不怕——命令每次都现场重投影 beat 窗口,微调口播轨不用重跑 `gtrk split`,只有拆分稿本身变了才要。
344
346
 
345
347
  **业务分离**:本框架 skill 不硬编任何栏目审美。B-roll 的 `queries` 在 ② 拆分时已写进派单(不触发生产 skill);栏目只供检索偏好(`--column`,internal 口生效)。档位由命令自己探(结果 JSON `memberType`),external 口固定 real_shot + 可商用素材。
346
348
 
@@ -394,6 +396,8 @@ gtrk matrix describe --materials <同一素材> --review <工程目录/visual-ov
394
396
 
395
397
  > **产物落点纪律(MUST · 全文见随包 `AGENT.md` 同名一节)**:交付物只写入工程目录或用户显式指定的输出路径;引用媒体用原路径,不复制到 agent 工作目录;不交付的临时文件放系统 temp,用完即删。
396
398
  > 交付物 MUST NOT 先写 agent 自有目录再拷进工程;中转本身即违规,体积不是豁免理由。
399
+ >
400
+ > **在即剪内置 AI 里**:只能写当前工程目录——`matrix search` / `matrix material` 要落盘时 `--out` 指向工程目录里的文件,`matrix fetch` 缺省的 `./matrix-fetch/` 已在工程目录(工作目录就是工程目录);`--out` 指到工程外会被宿主拒绝。搜到的配图要给用户看时,在回复里用 `![说明](相对工程目录的路径)`。
397
401
 
398
402
  ```bash
399
403
  gtrk matrix --project "<split 产物目录>" [--lay N] [--score-floor F] [--top-k K] [--column <id>] --json
@@ -453,6 +457,15 @@ gtrk matrix --project "<split 产物目录>" [--lay N] [--score-floor F] [--top-
453
457
 
454
458
  **用户明确说「B-roll 就这样」之后**,才往下走——先看 AI 情景片段腿(同属 ③),三源齐了再进 ④ 全局抽帧检查,过了才交棒 ⑤ 铺 MG。详见末节「下一步」。
455
459
 
460
+ ## 工程交给别的账号前:补检索授权码(`gtrk matrix grant`)
461
+
462
+ 外网候选(`--online` 检索、`matrix source-import` 导入)只有**做检索的账号**能在客户端「加载更多外网候选」和「确认 B-roll」;工程换个账号打开,服务端会拒(6016)。检索授权码(候选的 `origin.search_grant`)把「这次检索交给你用」写进工程,拿到工程的账号凭它读候选、确认 B-roll。
463
+
464
+ - 新铺的外网候选:检索 / 导入完成后 CLI 自动取码,写进 plan 和工程,不用另跑。终端出现「当前服务端不支持检索授权码…」「服务端未启用检索授权码…」「检索授权码获取失败…」说明这次没带上码,铺轨与导入照常完成。
465
+ - **工程要交给别的账号(同事、客户)确认 B-roll 前**,用**做检索的那个账号**执行一次 `gtrk matrix grant --project <工程目录或 .gtrk> --json`。授权码上线前铺的老工程同样这样补。
466
+ - 读结果:`granted` 是这次补上的检索任务号,`existing` 是本来就有码的检索数,`failed` 是取不到的(`reason`:`not_owner` = 不是当前账号的检索或已删除,要换做检索的账号来跑;`unsupported` / `disabled` = 服务端还没上线或没启用;`network` = 稍后重跑;`error` = 回包无法识别)。有 `failed` 时退出码非 0,取不到的候选原样不动。
467
+ - 都已有码时不发请求、不改工程。会改工程时只动外网候选的 `origin`;客户端开着该工程的话,提醒用户保存前先确认已重载。
468
+
456
469
  ## 常见情况处置(据结果因势象形调整,同目录可反复重跑对比)
457
470
 
458
471
  | 情况 | 怎么做 |
@@ -463,9 +476,13 @@ gtrk matrix --project "<split 产物目录>" [--lay N] [--score-floor F] [--top-
463
476
  | 某候选非用不可 | 编辑 plan:该 result 标 `pinned:true` → `matrix lay`。钉选是落位保证(免负词/地板/不二用抢占/紧邻避让),`lay.pinned.yielded` 非空说明确实钉多了在打架,名单逐段指名 |
464
477
  | 想定先后顺序 / 想钉准轨上位置 | 钉选管不了第几槽(它只把整条 result 排到最前)。同分的段按数组顺序落槽,要调先后就调 `results` / `segments` 的数组顺序;要钉准轨上位置用 `arrange_mode:"direct"` + `direct_slots`(引用段、硬出处段的本职);出片 QC 换段照「出片 QC 交回来的换段」第 4 步 |
465
478
  | **出现空档补黑 / 黑底空洞告警** | 不是故障:照 `lay.blackBedHoles` 逐段报给用户,出路=调低 `--score-floor` / opencut 手动补片 / 动线②云端垫底 |
479
+ | **外网检索太慢** | 缺省已同时跑 3 单(`--online-concurrency <n>`,1–8;plan 与日志仍按派单顺序,进度日志带 beat 名);服务端排队明显时调低,`1` = 一单跑完再提交下一单 |
466
480
  | **`--online` 结果带 `plan_kept`** | 外网这轮零可铺候选,**既有 plan 没被覆盖**(`planPath` 仍是上一轮的,可直接 `matrix lay`);本轮逐条报错与待核候选在 `plan_kept.online_attempt_path`,照它说明失败原因 |
481
+ | **外网「0 条自动候选,另有 N 条待人工确认」**(`counts.review_only` > 0) | 不是失败、也**不要重跑**(同参重跑结果不变,换描述 = 新建计费任务):需求里写了地点 / 事件 / 年份 / 素材类型这类硬条件,服务端在画面上核实不了,整批进了 plan 的 `queries[].online.review_candidates`(铺轨后也进客户端候选池)。你按标题 / 片段裁定,把贴题的条目**原样搬**进同一 query 的 `results`(可加 `pinned:true`)后 `gtrk matrix lay --plan <plan>`。硬条件只写真正非满足不可的;只是偏好(「最好是日本的」)写进 `intent` / `visual_description` |
467
482
  | 每段候选太少不够挑 | `--top-k` 调大重跑 |
468
483
  | 某段有空槽 / 想补特定意象 | `gtrk matrix search "<英文长句场景描述>" --project <目录> --json` 单条补检;影视解说类补检记得带 `--source-window` 保时序 |
484
+ | **精修某个 beat / 用户指着某个空位** | 先 `gtrk matrix status --project . --beat <id> --json` 看现状(时间窗、候选池、轨上片段、空缺),再决定补候选还是直接放上轨;**不要**去翻 `split/broll-plan.json` 和 `.gtrk`(见「精修某个 beat 前」节) |
485
+ | **用户指着某个空位要换 / 补素材** | `matrix source-import`(用户给了链接)或 `matrix search`(要检索)拿到候选 → `gtrk patch add --project . --track video:<N> --to <空位起点> --candidate <clip_id> --json`(空位被黑底补片占着则 `gtrk patch replace --clip <补片 clip_id> --candidate <clip_id>`)。**不要** `--force-relay`,也不要手改 `.gtrk` |
469
486
  | 只想先看清单不铺轨 | `--lay 0`(只产 plan);之后铺 = `matrix lay`(不重新检索、不重新烧配额) |
470
487
  | **报「候选轨已被你编辑过」拒铺** | 保护不是故障:工程零改动,plan 照常产出。① opencut 处置那条轨后重跑;② 用户明确点头 → `--force-relay`(raw 登记删除不可恢复,先说后果) |
471
488
  | **`matrix lay` 报「plan 校验未通过」** | 你把不可编辑面改坏了(报错逐条指名字段):按 §plan 编辑口径改回来重跑;`local_path 路径无效` 多半是可移动盘没挂载或真把路径改了 |
@@ -560,15 +577,38 @@ gtrk matrix --project "<split 产物目录>" [--lay N] [--score-floor F] [--top-
560
577
 
561
578
  ---
562
579
 
580
+ ## 精修某个 beat 前:先 `gtrk matrix status` 看现状
581
+
582
+ ```bash
583
+ gtrk matrix status --project . --beat B20 --json # 一个或几个 beat(逗号分隔)
584
+ gtrk matrix status --project . --json # 全部 B-roll beat,一行一个概要
585
+ ```
586
+
587
+ 只读、不联网、不写盘,读的是**盘上工程**(客户端里没保存的改动看不到)。怎么读:
588
+
589
+ - `beats[].window`:这个 beat 现在在时间线上的哪一段(现场重投影)。`source:"dispatch_snapshot"` 带 `degraded_reason` = 退回了派单快照,原因同上表 `reprojection.degraded` 一行。
590
+ - `beats[].candidates`:候选池(客户端候选面板那份)。`preview_landed` = 预览已落地,放上轨不用再下;`used_by` = 已经用在哪些片段上;`review_only` = 待核。**不带下载地址**,上轨按 `clip_id`。
591
+ - `beats[].plan`:plan 里不在候选池的还有几条、得分最高的 5 条(`present:false` = 没有 plan)。
592
+ - `beats[].clips`:时间窗内各视频轨上的片段,`category` 取 `broll` / `raw`(用户确认过原片)/ `black_fill`(自补的黑底补片)/ `user`(用户素材)/ `a_roll`(口播主轨);`producer:true` = 本工具铺的那一颗。
593
+ - `beats[].gaps`:主轨之上没有画面的区间(短于一帧的缝不算);`black_only` 是其中只盖着黑底补片的部分。
594
+ - 顶层 `revision` 可直接喂下一条 `gtrk patch --expected-revision`;`lay.relay_refused:true` = 现在整轮重铺会被 `tracks_edited` 拒——**精修期不要整轮重铺,更不要 `--force-relay`**。
595
+ - 非 B-roll 车道的 beat(MG / AI 情景片段)只给时间窗、车道与轨上片段,候选段为空并注明车道。
596
+
563
597
  ## 改工程:走 `gtrk patch`,不要裸手改 JSON
564
598
 
565
- 跑完之后要**微调某个片段**(挪位置 / 改时长 / 切开 / 改音量)时,一律用 `gtrk patch`:
599
+ 跑完之后要**微调某个片段**(挪位置 / 改时长 / 切开 / 改音量)、**把一条候选放进空位**或**原地换一条素材**时,一律用 `gtrk patch`:
566
600
 
567
601
  ```bash
568
- gtrk patch move --project <dir> --clip <clip_id> --to 5.0
569
- gtrk patch trim --project <dir> --clip <clip_id> --out -1s
602
+ gtrk patch move --project <dir> --clip <clip_id> --to 5.0
603
+ gtrk patch trim --project <dir> --clip <clip_id> --out -1s
604
+ gtrk patch add --project <dir> --track video:2 --to 263.733 --candidate <clip_id> --json
605
+ gtrk patch replace --project <dir> --clip <clip_id> --candidate <clip_id> --json
570
606
  ```
571
607
 
608
+ - `add`:用 `--to` 指落点(不收 `--at`);时长缺省 = 这个空位的长度,出点贴右邻;候选还没落地会顺手下载预览、登记素材。落点被占就拒(列出挡路片段),被黑底补片占着就改用 `replace`。
609
+ - `replace`:起点、轨、`clip_id` 不动,只换素材与源窗;新素材不够长会**如实缩短**、不拉伸——回执出 `replace_shortened` 时把前后时长告诉用户。
610
+ - 精修期**不要**整轮 `matrix lay` 或 `--force-relay`:`add` / `replace` 放上去的片段带 patch 自己的产出方身份,所在候选轨判「已编辑」——**同一层**再铺会被拒(`tracks_edited`,工程零改动;不剥你的精修、也不另起一条),**别的层**照常铺、这条轨随层带保留。确要丢掉精修重铺本层才加 `--force-relay`,先问用户。
611
+
572
612
  `gtrk matrix` 铺的片段 `clip_id` 形如 `B05-local-broll-0-3`(beat-来源层-broll-轨内序-槽序;补黑片为 `-bedfill-`),
573
613
  各层互不撞名,`--clip` 可直接寻址。
574
614
 
@@ -1,6 +1,8 @@
1
1
  ---
2
2
  name: gtrk-music-visualizer
3
3
  description: 音乐可视化成片——把一首歌通过同合云出成一条频谱可视化视频(可选背景/封面 + 模板/配色样式)。当用户想「把这首歌做成可视化视频 / 音乐可视化 / 频谱视频 / 歌曲配画面出片 / music visualizer / 给歌配个动态封面视频」时使用本 skill。凡涉及把一段音频做成频谱可视化成片,优先用本 skill 驱动 gtrk CLI 的 `music-visualizer` 命令,不要手搓 ffmpeg。
4
+ metadata:
5
+ in_app_agent: true
4
6
  ---
5
7
 
6
8
  # 音乐可视化(gtrk-music-visualizer)
@@ -12,17 +14,19 @@ description: 音乐可视化成片——把一首歌通过同合云出成一条
12
14
  ## 前置:CLI 装没装 + 体检
13
15
 
14
16
  先跑 `gtrk doctor`:
15
- - **`gtrk` 找不到 / command not found** → 让用户装 `npm i -g @gitruck/cli@latest`(需先有 Node.js),再重试。
17
+ - **`gtrk` 找不到 / command not found** → 让用户装 `npm i -g @gitruck/cli@latest`(需先有 Node.js),再重试(外部 agent 的前置;内置 agent 已具备,跳过)。
16
18
  - 报「缺 API Key」→ 让用户先跑一次 `gtrk init`(一次性配 Key,交互式、需真终端,你别替他跑)。
17
19
  - 全绿就往下走。
18
20
 
19
21
  ## 一条命令
20
22
 
21
- > **产物落点纪律(MUST · 全文见随包 `AGENT.md` 同名一节)**:
22
- > 交付物 MUST NOT 先写 agent 自有目录再拷进工程;中转本身即违规,体积不是豁免理由。
23
+ > **产物落点纪律(MUST · 全文见随包 `AGENT.md` 同名一节)**:
24
+ > 交付物 MUST NOT 先写 agent 自有目录再拷进工程;中转本身即违规,体积不是豁免理由。
23
25
  > 成片等一切产物只落产物目录(缺省 = 音频同目录)或**用户显式指定的 `--out`**;
24
26
  > **MUST NOT** 把成片、预览或任何大媒体文件复制到 agent 自有工作目录(如用户文档目录下 agent 产品自建的目录、agent 家目录缓存、会话工作区)——需要引用媒体时**用原路径引用**,不做副本;
25
- > 临时文件一律放系统 temp 且**用完即删**。交付物直接写入工程目录或用户显式指定的路径;引用媒体用原路径。
27
+ > 临时文件一律放系统 temp 且**用完即删**。交付物直接写入工程目录或用户显式指定的路径;引用媒体用原路径。
28
+ >
29
+ > **在即剪内置 AI 里**:只能写当前工程目录,缺省产物目录却在音频同目录——每次都显式传 `--out <工程目录>/music-visualizer/<曲名>`(相对路径按工程目录解析),否则命令会被宿主拒绝。交付时在回复里用 `[成片](相对工程目录的路径)` 给出。
26
30
 
27
31
  ```
28
32
  gtrk music-visualizer <音频> --template <模板id> [可选样式/文件] [--json]
@@ -1,6 +1,8 @@
1
1
  ---
2
2
  name: gtrk-ref-reading
3
3
  description: 参考片精读——把一条别人的视频读成「可复刻」的整片模型与时码细节:逐字时码转写 + 带台词标签的抽帧网格 + 关键动效逐帧看 + 按「系统」记录每个设计事件对着哪句话,落成 ANALYSIS.md / TIMELINE.md / PROGRESS.md,读完可交给 /gtrk-style-maker 产栏目 skill,或直接指导把这套包装迁移到用户自己的片子上。驱动 `gtrk transcript --json`(取字级时码)与纯本地零计费的 `gtrk media` 看片命令族。当用户想「拆解这条视频 / 精读参考片 / 学一下这个博主的包装 / 分析这条视频的风格 / 这条视频的动画是怎么做的 / 照着这条参考片的风格做 / 把 XX 的风格蒸馏出来 / 参考片逆向」时使用本 skill。凡要从一条参考视频里学包装与节奏,先用本 skill 读透再动手,别看几张截图就开始仿。
4
+ metadata:
5
+ in_app_agent: true
4
6
  ---
5
7
 
6
8
  # gtrk-ref-reading · 参考片精读
@@ -21,6 +23,8 @@ description: 参考片精读——把一条别人的视频读成「可复刻」
21
23
  > 只落**精读目录**(缺省 `<参考片同目录>/<参考片名>-精读/`,用户指定优先)。
22
24
  > 交付物 MUST NOT 先写 agent 自有目录再拷进工程;中转本身即违规,体积不是豁免理由。
23
25
  > 引用参考片用原路径,**不复制原片**;`gtrk media` 的中间物由命令自己放系统 temp、用完即删。
26
+ >
27
+ > **在即剪内置 AI 里**:只能写当前工程目录——精读目录一律落 `<工程>/ref-reading/<参考片名>/`(用户另行指定且在工程目录内时从用户),转写的 `--out` 与 `gtrk media` 的 `-o` 都指到这里面;参考片本身在工程外没关系,按原路径读。交付时在回复里用 `[精读分析](ref-reading/<名>/ANALYSIS.md)` 给出文件,用 `![说明](ref-reading/<名>/evidence/…)` 展示最能说明问题的几张证据网格。
24
28
 
25
29
  - **计费只有转写一处**:`gtrk transcript --json` 走云端字级 ASR,按官网实时价格计费——跑之前告诉用户这一步要花钱、大约多少(以 CLI 打出的实时提示为准)。`gtrk media` 全部纯本地、零计费、不联网。
26
30
  - **用户须有权使用这条参考片**做学习分析。证据图只在精读目录里供判读,**原片的帧与片段 MUST NOT 进栏目 skill 的 assets、MUST NOT 混进成片**。
@@ -120,6 +124,7 @@ ANALYSIS 末节按系统写一张表:**归属(叠层 / 版式)/ 保留什
120
124
  跟用户讲清:整片模型一句话、最关键的 3–5 个系统(各附一张证据网格路径)、迁移要点、仍待查的问题。然后按用户的去向交棒:
121
125
 
122
126
  - **要沉淀成自己栏目的风格体系 / 栏目 skill** → `/gtrk-style-maker`(见下节)。
127
+ - **在即剪内置 AI 的「自建视频风格 / 技法模板」会话里**(本轮宿主注入里有自建说明)→ 不交 style-maker 的栏目产出:按下节同样的问法逐条出示证据、让用户认领,**只把认领的**写成宿主指定目录里的**一个** skill(视频风格写贯穿整条片子的调性,技法模板写单个场景画面的做法);原片的帧与片段不进 skill 目录。
123
128
  - **栏目 skill 已就绪、要直接做片** → 回成片管线,按 TIMELINE 里「对着哪句话」的关系在目标稿上重新落点。
124
129
  - **只是学习 / 评估** → 精读目录本身就是交付物。
125
130
 
@@ -91,6 +91,19 @@ description: "能生产 skill 的 meta skill——通过启发式访谈引导视
91
91
  `--highlight-rubric`;单次要临时换一套,flag 会整体覆盖它(OVERRIDE,不拼接——两段准则拼起来
92
92
  会产出自相矛盾的评分口径)。没问出来就别硬凑,缺省走服务端领域无关准则。
93
93
 
94
+ ## 在即剪内置 AI 里自建视频风格
95
+
96
+ **怎么认出这个场景**:本轮宿主注入里有「自建视频风格」的说明(让你把成品写到 `~/.gitruck/skills/styles/<名>/SKILL.md` 那段)。这时访谈工艺照旧,**产出口径换成下面这套**,上面「产出工序」的 1–5 不适用:
97
+
98
+ 1. **访谈七招照用**。用户给了参考片时,第①招「作品逆向」的证据先按 `/gtrk-ref-reading` 精读拿到(精读目录落工程目录 `ref-reading/<参考片名>/`),再逐条出示、让用户认领——认领的才进 skill,命名用用户的话。
99
+ 2. **只产一个 skill**:写到宿主说明给的目录 `<自建目录>/<英文短名>/SKILL.md`,frontmatter 照宿主说明(`name` 与目录名相同、`description`、`metadata.label` 中文显示名)。
100
+ 3. **家族切分收成正文分节**:需要区分 MG 字卡 / OV 叠层 / 合成画面时各写一节;共享词表并进正文的「词表」一节,不另写文件;契约绑定(第 2 步)照查、写进正文。
101
+ 4. **不做的事**:不写 README 与作坊正本、不运行任何安装命令、不登记栏目配置(不碰 `~/.gitruck/columns/`)、不写别的 Agent 的 skill 目录。参考片原片的帧与片段不进 skill 目录。
102
+ 5. **纯生产者照旧**(铁律 6):正文里没有 gtrk 命令、不碰 SOP 编排——它被选为「视频风格」时,由宿主告诉模型按它的调性做整条片子的 MG / OV / 合成颗粒。
103
+ 6. 写完告诉用户:在输入区「视频风格」列表的「我的」一组里就能选到它;以后想改就在对话里说,或在知识库里编辑。
104
+
105
+ 自检时,下面「栏目配置登记是追加语义」一条换成「没有写栏目配置、没有运行安装命令」。
106
+
94
107
  ## 交付前自检(你自己的 Quality Bar)
95
108
 
96
109
  - [ ] 访谈记录里,产出 skill 的**每一个组织维度,首次都是用户说出的**(或从他的作品评语里直接引出的),不是我提出的?
@@ -1,5 +1,7 @@
1
1
  # 产出物规范(craft-output-spec)
2
2
 
3
+ > **在即剪内置 AI 里自建视频风格时,本文的目录解剖、README、「正本→安装」与登记都不适用**——按 SKILL.md「在即剪内置 AI 里自建视频风格」一节只产一个 SKILL.md、写到宿主给的目录、不运行安装命令。
4
+
3
5
  ## 1. 用户 skill 目录解剖
4
6
 
5
7
  ```
@@ -1,6 +1,8 @@
1
1
  ---
2
2
  name: gtrk-tools
3
- description: gtrk 单点工具与媒体转换能力的调用向导,覆盖 `gtrk tool` 家族。当用户想“让图动起来 / 抠像去背景 / 图片或视频去黑边 / 图片或视频比例转换 / 视频防抖 / 添加蒸汽波滤镜 / 清理有权处理的图片或视频中的水印、字幕或叠加元素 / 视频超分变清晰 / 视频补帧变流畅 / 分离人声和伴奏 / 提取伴奏 / 按说话人分轨 / 音频变调变速 / 钢琴扒谱转 MIDI 或修复钢琴录音 / 给音频或视频降噪 / 去掉音频静音停顿 / 长图转方图 / 图片变 LivePhoto 微动 / 视频机械分镜或智能分镜切镜头 / 提取运镜高光片段 / 给视频加字幕或翻译字幕或烧录字幕 / 把视频翻译配音成另一种语言或译制 / 一键剪 MAD / 用某个 gtrk 单点工具 / gtrk 工具族里有什么”时使用本 Skill。凡涉及这些能力,优先驱动 CLI,不让用户自己去终端敲,也不手搓 ffmpeg。
3
+ description: gtrk 单点工具族(`gtrk tool`)的调用向导。当用户想“让图动起来 / 抠像去背景 / 去黑边 / 比例转换 / 视频防抖 / 蒸汽波滤镜 / 清理有权处理的水印、字幕或叠加元素 / 超分 / 补帧 / 分离人声伴奏 / 按说话人分轨 / 变调变速 / 钢琴扒谱或修复 / 降噪 / 去静音停顿 / 长图转方图 / LivePhoto 微动 / 机械或智能分镜 / 运镜高光 / 加字幕、翻译或烧录字幕 / 视频译制配音 / 一键剪 MAD / gtrk 工具族里有什么”时使用本 Skill。优先驱动 CLI,不让用户自己去终端敲,也不手搓 ffmpeg。
4
+ metadata:
5
+ in_app_agent: true
4
6
  ---
5
7
 
6
8
  # gtrk 工具族(gtrk-tools)
@@ -125,6 +127,8 @@ description: gtrk 单点工具与媒体转换能力的调用向导,覆盖 `gtr
125
127
  > 一切产物只落 `outDir`(缺省 = 输入同目录)或**用户显式指定的 `--out`**;
126
128
  > **MUST NOT** 把成片、预览或任何大媒体文件复制到 agent 自有工作目录(如用户文档目录下 agent 产品自建的目录、agent 家目录缓存、会话工作区)——需要引用媒体时**用原路径引用**,不做副本;
127
129
  > 临时文件一律放系统 temp 且**用完即删**。交付物直接写入工程目录或用户显式指定的路径;引用媒体用原路径。
130
+ >
131
+ > **在即剪内置 AI 里**:只能写当前工程目录,而缺省的 `outDir` 在输入同目录(无输入的工具在当前目录)——每次都显式传 `--out <工程目录>/<用途>/<名字>`(如 `--out tools/denoise-<素材名>`,相对路径按工程目录解析),否则命令会被宿主拒绝。交付时在回复里用 `[产物名](相对工程目录的路径)` 给出产物,图片产物用 `![说明](路径)`。
128
132
 
129
133
  1. **先看清单、再对号**:用户的意图对到某个工具名(拿不准就 `gtrk tool list --json` 核对触发语与输入要求)。
130
134
  2. **执行前转述实时计费提示**:先读本次 `gtrk tool list --json` 的 `billingHint`/`pricing`,再把实时结果如实告诉用户;不得引用本文件或记忆中的旧价格。若显示价格暂不可用,就说明最终以服务端结算为准。
@@ -1,6 +1,8 @@
1
1
  ---
2
2
  name: gtrk-transcript
3
3
  description: 将用户本地视频或音频(自备配音)转成一个飞书妙记式 Markdown 文字稿,并由 Agent 基于完整转写生成总结;音频配 --json 时另产句级时码 transcript.json(音频驱动工程兜底路输入)。用户说“视频转文字稿 / 视频转文字 / 提取视频文稿 / 把本地视频整理成文字稿或妙记 / 给我自己录的配音出时码稿”时使用。只处理本地文件,不接受 URL、平台链接或远端下载。
4
+ metadata:
5
+ in_app_agent: true
4
6
  ---
5
7
 
6
8
  # gtrk 视频/音频转文字稿
@@ -17,8 +19,10 @@ description: 将用户本地视频或音频(自备配音)转成一个飞书
17
19
 
18
20
  ## 硬边界
19
21
 
20
- > **产物落点纪律(MUST · 全文见随包 `AGENT.md` 同名一节)**:唯一 Markdown 产物写入 CLI 返回的 `output` 路径(缺省=源文件同目录)或用户指定的 `--out`;引用媒体用原路径,不复制到 agent 工作目录;临时文件放系统 temp,用完即删。
21
- > 交付物 MUST NOT 先写 agent 自有目录再拷进工程;中转本身即违规,体积不是豁免理由。
22
+ > **产物落点纪律(MUST · 全文见随包 `AGENT.md` 同名一节)**:唯一 Markdown 产物写入 CLI 返回的 `output` 路径(缺省=源文件同目录)或用户指定的 `--out`;引用媒体用原路径,不复制到 agent 工作目录;临时文件放系统 temp,用完即删。
23
+ > 交付物 MUST NOT 先写 agent 自有目录再拷进工程;中转本身即违规,体积不是豁免理由。
24
+ >
25
+ > **在即剪内置 AI 里**:只能写当前工程目录,源文件又常在工程外——每次都显式传 `--out <工程目录>/transcript/<源文件名>-transcript.md`(相对路径按工程目录解析),否则命令会被宿主拒绝。交付时在回复里用 `[文字稿](相对工程目录的路径)` 给出。
22
26
 
23
27
  - 只接收用户电脑上已存在的视频/音频文件;遇到 URL、平台视频 ID 或“帮我下载后转写”时,要求用户先提供本地文件,不代为抓取。
24
28
  - CLI 在本地抽取/转码 16 kHz 单声道音频,只上传音频衍生物;原视频/原音频文件不得上传。
@@ -32,7 +36,7 @@ description: 将用户本地视频或音频(自备配音)转成一个飞书
32
36
 
33
37
  2. **先判用途,再决定带不带 `--json`。这一步 MUST NOT 跳过,也 MUST NOT 无脑恒带。**
34
38
 
35
- `--json` 不是单纯的输出格式开关,**它决定服务端用哪个引擎**:
39
+ `--json` 不是单纯的输出格式开关,**它决定服务端用哪个引擎**:
36
40
 
37
41
  | 用途 | 命令 | 落腿 |
38
42
  |---|---|---|
@@ -49,7 +53,7 @@ description: 将用户本地视频或音频(自备配音)转成一个飞书
49
53
 
50
54
  可选参数:`--out <file>`、`--lang zh-CN`、`--ffmpeg-path <dir>`、`--reupload`。
51
55
 
52
- > 🔴 **恒带 `--json` 会把只想要文字稿的请求也送进厂商字级腿**,且 Markdown 不消费 `words[]`。**拿不准就不带**:真需要字级时,消费方(`split` / `subtitle`)
56
+ > 🔴 **恒带 `--json` 会把只想要文字稿的请求也送进厂商字级腿**,且 Markdown 不消费 `words[]`。**拿不准就不带**:真需要字级时,消费方(`split` / `subtitle`)
53
57
  > 会明确报错要 `words[]`,那时补跑一次即可;反过来多付的钱收不回来。
54
58
  > 用户明确说「要建工程 / 要拆分 / 要字幕」才算「喂工程」;只说「转个文字稿」不算。
55
59