@gitruck/cli 0.2.7 → 0.2.9

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 CHANGED
@@ -239,3 +239,11 @@ gtrk oralcut "D:/素材/某条.mp4" --params-json '{"punctuation_breaks":{"。":
239
239
 
240
240
  新增命令 = 写 `src/commands/<name>.ts` 的 `register<Name>(program)` + 在 `src/index.ts` 注册一行。
241
241
  云端调用走 `src/lib/cloud.ts`(`{code,msg,data}` 包装、鉴权 Header `Authorization:<裸key>`;单发取结果 `getTaskResult`、`pollTask` 复用之);上传一律走 `src/lib/upload-cache.ts` 的 `uploadCached`(白嫖指纹缓存;≥256MiB 自动分片断点续传,见 `src/lib/chunk-upload.ts`)。本地预处理(探几何 / 抽音频 / 压 720p)在 `src/lib/media.ts`;本地渲染(gtrk EDL → ffmpeg filter_complex)在 `src/lib/render.ts`;三方产物落地 + `result.json` 两段写在 `src/lib/materialize.ts`(`oralcut` 与 `oralcut-result` 共用)。已上线:`oralcut`(云剪)、`oralcut-result`(按 task_id 取回)、`render`(本地渲染 gtrk)、`split`(视觉拆分派单器:`src/lib/projection.ts` 投影纯函数 + `src/lib/splitdoc.ts` 拆分稿校验/落地 + `src/lib/gtrk-writeback.ts` 原子写回 `struct_meta.split`,随包分发 `skills/gtrk-splitter/`)。`matrix`(B-roll 检索:`src/lib/matrix.ts` 双口路由/派单翻译/plan 构建 + `src/commands/matrix.ts`;`matrix search "<词>"` ad-hoc)。规划中:`struct`(已有 gtrk → 三方工程)。
242
+
243
+ ### 工具族:接单点云能力 = 加一个 descriptor(不写编排)
244
+
245
+ 单发单收的单点能力(图转运镜、图片/视频抠像…)不各开顶层命令,而入 `gtrk tool <name>` 工具族。骨架全归共享 runner `src/lib/tool-runner.ts`(校验 → 可选 preprocess → `uploadCached` → 提交前打印 `billingHint` → `submitTask`(6004 失效重传收编于此)→ 自循环轮询(复用 `getTaskResult`、墙钟 per-tool 可覆盖,**不改 `pollTask`**)→ `mapOutputs` **流式下载**落地(fetch body pipe 到 `createWriteStream`,大产物不过内存,**不用 `cloud.ts` 全内存 `download`**)→ `task.json`/`result.json` 面包屑)。差异全归一个薄 descriptor `src/lib/tool-descriptors.ts`(`name`/`kind`/`input`(含扩展名白名单、视频类 `maxDurationSec` 硬上限)/`taskType`/`buildPayload`/`mapOutputs`/`billingHint`/`options`/`enabled`+`disabledReason`/`pollTimeoutMs`)。
246
+
247
+ **接新工具 = 在 `TOOL_REGISTRY` 追加一个 descriptor 对象**(`tool list` 与分派自动生效),不新写命令编排。`--param`/`--params-json` 在 `buildPayload` 结果上逐字段合并覆盖。`cloud.ts`/`upload-cache.ts`/`chunk-upload.ts`/`media.ts` 只被复用、零改动。`list` 为保留字。工具长出多模式子命令 / SOP 检查点链 / 栏目风格注入时按 `mg`/`matrix` 先例毕业为独立命令。随包分发伞形 skill `skills/gtrk-tools/`(一个 skill 覆盖全族)。
248
+
249
+ **local 型(`kind:"local"`)首个实例 = `mad`(一键剪 MAD,add-tool-mad)**:无 Key 可跑、可选云端加料。cloud 型走共享 runner 全链,local 型(复杂度上限标尺)在 `tool.ts` 的 local 分支**分派到自己的 handler**(`src/lib/mad/mad.ts::runMad`),不套 runCloudTool。mad 的新逻辑全住 `src/lib/mad/`(数据获取层 `data.ts` = 云端 manifest `/task/mad/manifest` + `~/.gitruck/mad-cache` 版本感知缓存 + sha256 自愈;`selector.ts` 六维规则选窗 + 种子 PRNG;`beat.ts` downbeat 量化 + 三级降级;`pool.ts` IR 分片按需拉取;`scan.ts` 素材扫描;`cloud-beat.ts` audio_music_analyze 接线 + 6004 失效重传)与 `src/lib/convert/`(IR→JSX,含 `madJsx` 母合成拼接 + `bake_ops.ts` 时序算子烘焙)——`tool-descriptors.ts`/`tool-runner.ts`/`cloud.ts` 零改动(红线)。产物仅 `.jsx`/仅支持 AE。
package/README.md CHANGED
@@ -4,6 +4,8 @@
4
4
  >
5
5
  > 一条命令,把口播毛片变成可二次精修的剪辑工程。云端做重活,本地只装配,源视频不出本地。
6
6
 
7
+ **🔗 [官网](https://cloud.ai-mcn.tv/zh-CN/cli) · [使用教程](https://hocassian.feishu.cn/docx/A6v0dCKT8oWMdAxI1qQcKzmJnIf) · [快速开始](https://cloud.ai-mcn.tv/zh-CN/docs/quick-start) · [客户端下载](https://cloud.ai-mcn.tv/zh-CN/download) · [npm](https://www.npmjs.com/package/@gitruck/cli)**
8
+
7
9
  ---
8
10
 
9
11
  ## 为什么用 gtrk-cli
@@ -21,11 +23,12 @@
21
23
  | ✂️ | `gtrk split [拆分稿]` | 视觉拆分派单器:成片 × transcript 投影 → beat 分镜校验落地(`struct_meta.split` + `dispatch.json`),驱动四车道派单;`--column <id>` 按栏目词表校验 |
22
24
  | ⚙️ | `gtrk init` | 引导式一次性配置(API Key + 剪映草稿目录),之后免管 |
23
25
  | 🩺 | `gtrk doctor` | 体检:配置 / 云端连通 / 剪映目录 / 运行时一键自检 |
24
- | 🤖 | `gtrk skills install` | 把 6 个 CLI 自带 skill(`/gtrk-oralcut`·`/gtrk-splitter`·`/gtrk-matrix`·`/gtrk-mg`·`/gtrk-ai-drama`·`/gtrk-style-maker`)装进 Claude Code |
26
+ | 🤖 | `gtrk skills install` | 把 7 个 CLI 自带 skill(`/gtrk-oralcut`·`/gtrk-splitter`·`/gtrk-matrix`·`/gtrk-mg`·`/gtrk-ai-drama`·`/gtrk-style-maker`·`/gtrk-tools`)装进 Claude Code |
25
27
  | ⬆️ | `gtrk upgrade` | 升级 CLI 到最新版 + 刷新 skill(配置保留);`--check` 只查不装 |
26
28
  | 🎞️ | `gtrk render` | 本地渲染 gtrk 工程(EDL)→ 成片 mp4(需 ffmpeg) |
27
29
  | 🔎 | `gtrk matrix` | B-roll 检索+**候选铺轨**:消费 FILM_BROLL 派单 → 产候选清单 + 下载 preview 代理铺 N 条候选轨(`--lay N` 默认 1,opencut 打开即可用轨道小眼睛对比;`--lay 0` 只出清单);`matrix search "<词>"` 单条 ad-hoc |
28
30
  | 🎨 | `gtrk mg` | MG 动态图颗粒铺轨:消费 MG 派单 → 把 html-particle 颗粒(透明叠加 / 满屏底层,由你栏目的 MG 生产 skill 所产)铺进 `.gtrk` 的 beat_track;`mg lint <颗粒.html>` 六铁律静态校验、`mg status --project <dir>` 编排看板(缺 HTML / 已产未铺 / 已铺);aux 叠层颗粒同段多铺(一 beat 派生主 + `-aux<n>`)。旧名 `gtrk rrv` 保留为弃用别名 |
31
+ | 🧰 | `gtrk tool <name>` | 单点工具族:`gtrk tool image_move <图>`(图转运镜,2 积分/个)、`image_matting <图>` / `video_matting <视频>`(图片/视频抠像,**免费**)、`mad <素材文件夹>`(一键剪 MAD → AE 成片工程 `.jsx`,无 Key 可跑、`--bgm` 卡点计费);`gtrk tool list` 查全部(输入/产物/计费/状态)。单发单收、共享 runner,接新工具只加一个 descriptor |
29
32
  | 🚧 | `struct` | (规划中)已有 gtrk 转三方工程 |
30
33
 
31
34
  ---
@@ -79,9 +82,11 @@ gtrk oralcut "D:/素材/某选题-原始口播.mp4" --script "D:/素材/某选
79
82
  | ③ | 「**先铺 B-roll**」 | `/gtrk-matrix` → `gtrk matrix` → 候选轨铺入 | **opencut 里挑选/调整 B-roll**(小眼睛切换对比) |
80
83
  | ④ | 「B-roll 定了,**铺 MG**」 | `/gtrk-mg` → `gtrk mg` → MG 颗粒叠在 B-roll 之上 | 精修颗粒(opencut 手调) |
81
84
  | ⑤ | 「**上 AI 再现**」 | `/gtrk-ai-drama`(skill,无命令)→ 四段描述稿(中英分块) | 外部平台出片、片段手动回铺 |
82
- | ⑥ | 「**渲成片**」 | `gtrk render`(或 opencut 打开精修) | 成片 mp4 |
85
+ | ⑥ | 「**出成片**」 | 客户端出片链(多车道合成 + 颗粒云渲 / 导剪映);`gtrk render` 只出**主轨快照预览** | 客户端里精修定稿 |
83
86
 
84
87
  > 次序有理由:**MG 叠在 B-roll 之上**,要先把底层 B-roll 定下来、你满意了再铺 MG;AI 再现最后上。用不到的车道跳过(`dispatch` 里该队列为空就不铺)。
88
+ >
89
+ > ③④⑤⑥ 都要**回到客户端**挑选 / 精修 / 回铺 / 出片——CLI 把料铺进 `.gtrk`,客户端把 `.gtrk` 出成片。详见下文「**CLI × 客户端**」小节。
85
90
 
86
91
  **遇到情况怎么办**
87
92
 
@@ -95,6 +100,33 @@ gtrk oralcut "D:/素材/某选题-原始口播.mp4" --script "D:/素材/某选
95
100
  | 连不上 / 配置出问题 | 「体检一下」→ `gtrk doctor`(配置 / 云端 / 剪映目录 / 版本一键自检) |
96
101
  | 有新版 | 「升级」→ `gtrk upgrade`(升 CLI + 刷 skill,配置保留) |
97
102
 
103
+ ## CLI × 客户端:手脑分工、一份 `.gtrk` 贯穿全程
104
+
105
+ **标准工作流从来不是「只用 CLI」,而是 CLI + 桌面客户端相互配合——客户端是成片流程绕不过去的一环。** 二者分工:
106
+
107
+ - **CLI = 无头装配器(手/机械活)**:把云端剪辑产物、检索到的 B-roll、栏目产的颗粒,确定性地装进工程、原子写回 `.gtrk`(剪口播 / 拆分派单 / 铺 B-roll 候选轨 / 铺 MG 颗粒)。不做审美判断、不出最终成片。
108
+ - **桌面客户端 = 有头工作台(眼/精修活)**:打开**同一份 `.gtrk`**,让你看、挑、逐帧精修、回铺 AI 片段、出片。装法见上一节「升级 → 桌面客户端」的一键脚本(OpenCut Gitruck Edition)。
109
+
110
+ **`.gtrk` 是两者之间的交接介质**——它是同合云的统一工程契约(timeline 真超集 + HTML 颗粒 + `struct_meta`),**CLI 写、客户端读,双向**。所以一条片子是 CLI 与客户端**交替推进**的:
111
+
112
+ ```
113
+ CLI 写 .gtrk ─▶ 客户端打开(自动感知外部改动、先存脏改再刷新、不丢稿)
114
+ ─▶ 你在客户端挑/调/精修 ─▶ 需要就再喊 agent 让 CLI 写下一轮(铺 MG / 铺 AI…)
115
+ ─▶ … 反复 … ─▶ 客户端出片
116
+ ```
117
+
118
+ **这几件事只能在客户端做(CLI 给不了):**
119
+
120
+ | 环节 | 为什么必须在客户端 |
121
+ |---|---|
122
+ | **B-roll 候选挑选** | `gtrk matrix` 铺 N 条候选轨,用轨道**小眼睛**逐条切换对比、选定、删多余——审美取舍只能人在客户端做 |
123
+ | **MG / 颗粒精修** | 客户端里 html-particle **活颗粒透明预览** + Transform/Blending/Effects 参数逐帧微调 |
124
+ | **口播精剪** | 磁性主轨 ripple、手动微调切点 / 停顿 / 分屏 |
125
+ | **AI 再现回铺** | 外部平台出的 AI 片段**手动拖进 AI_DRAMA 车道**对齐区间(`/gtrk-ai-drama` 只吐描述稿,片在外部平台出,见 SOP ⑤) |
126
+ | **最终出片** | 多车道合成(overlay / MG / particle 云渲叠起来)+ 剪映草稿导出,都在客户端出片链 |
127
+
128
+ > **`gtrk render` ≠ 最终成片。** `gtrk render` 是本地 ffmpeg 出**主轨(口播粗剪)的快照预览**——只合主视频轨 + 音轨,**不合成 overlay(B-roll 候选)/ MG 颗粒 / AI 再现**。要出**真正的多车道成片**(各车道叠起来、颗粒云渲、导剪映草稿),走**客户端出片链**。一句话:**CLI 管「把料铺进工程」,客户端管「把工程出成片」。**
129
+
98
130
  ## 升级
99
131
 
100
132
  **CLI + skill**(配置原样保留):
@@ -114,7 +146,7 @@ irm https://api.ai-mcn.tv:9000/broadcast/exe/install.ps1 | iex
114
146
 
115
147
  ## 给 AI Agent 用
116
148
 
117
- `gtrk install` 已经把 6 个 CLI 自带 skill(`/gtrk-oralcut`·`/gtrk-splitter`·`/gtrk-matrix`·`/gtrk-mg`·`/gtrk-ai-drama`·`/gtrk-style-maker`)装进 `~/.claude/skills`(单独装用 `gtrk skills install`)。
149
+ `gtrk install` 已经把 7 个 CLI 自带 skill(`/gtrk-oralcut`·`/gtrk-splitter`·`/gtrk-matrix`·`/gtrk-mg`·`/gtrk-ai-drama`·`/gtrk-style-maker`·`/gtrk-tools`)装进 `~/.claude/skills`(单独装用 `gtrk skills install`)。
118
150
 
119
151
  然后在 Claude Code 里直接说「**帮我把这条口播剪一版**」或打 `/gtrk-oralcut`,agent 会问清毛片 / 文稿 / 节奏,调 `gtrk oralcut --json` 跑通闭环、验证产物、把三端打开方式回给你。完整可移植 playbook 见 [`AGENT.md`](./AGENT.md)。
120
152
 
@@ -133,9 +165,10 @@ irm https://api.ai-mcn.tv:9000/broadcast/exe/install.ps1 | iex
133
165
  | ⑤ | `/gtrk-ai-drama` | (无命令,纯创作) | **最后上 AI 再现**:产四段描述稿(故事背景/角色/分镜/原文,中英分块)→ 任意外部平台出片、手动回铺(产物即描述文本、无机械尾巴,同 `/gtrk-style-maker` 只 skill 无命令) |
134
166
  | — | `/gtrk-style-maker` | (无命令,建栏目) | 一次性访谈式建你栏目的风格体系(skill 家族 + 栏目配置,见下节) |
135
167
  | — | (收口) | `gtrk render` | 本地渲染 gtrk 工程 → 成片 mp4 |
168
+ | 🧰 | `/gtrk-tools` | `gtrk tool <name>` | 单点工具族(图转运镜 / 图片·视频抠像…)——单发单收,**不在成片 SOP 序列内**、随时可独立用 |
136
169
 
137
170
  > **skill 与命令的区别**:`/gtrk-mg` 是**脑**——懂它在 SOP 第 ④ 步(B-roll 定了才铺 MG)、带用户确认、按栏目配置解析该产哪种颗粒;`gtrk mg` 是**手**——纯确定性 lint + 铺轨。你对话触发 skill,skill 替你跑命令。
138
- > 上面 6 个 `/gtrk-X` 都是 **CLI 自带框架 skill**(`gtrk skills install` 装)——`/gtrk-matrix`·`/gtrk-mg` 各驱动一个 gtrk 命令,`/gtrk-ai-drama`·`/gtrk-style-maker` 是纯创作 skill(无命令)。栏目专属的**视觉风格/生产内容**另由你栏目的生产 skill(`/gtrk-style-maker` 产、经栏目配置 `style.skills` 绑定)供,不写死在这些框架 skill 里。
171
+ > 上面 7 个 `/gtrk-X` 都是 **CLI 自带框架 skill**(`gtrk skills install` 装)——`/gtrk-matrix`·`/gtrk-mg`·`/gtrk-tools` 各驱动 gtrk 命令,`/gtrk-ai-drama`·`/gtrk-style-maker` 是纯创作 skill(无命令)。`/gtrk-tools` 是单点工具族的向导,不属成片 SOP 序列。栏目专属的**视觉风格/生产内容**另由你栏目的生产 skill(`/gtrk-style-maker` 产、经栏目配置 `style.skills` 绑定)供,不写死在这些框架 skill 里。
139
172
 
140
173
  上面三个是 **CLI 自带的框架 skill**(`gtrk skills install` 装,业务无关)。
141
174
 
@@ -281,6 +314,29 @@ gtrk init --api-key <KEY> --jianying-draft-dir auto -y
281
314
  > **aux 叠层颗粒**:`gtrk split` 若在某 beat 的 `aux_layers` 派了 `overlay` 颗粒,会派生 `<beat>-aux<n>` 合成条目进 `dispatch.mg`——`gtrk mg` 一并铺,实现「同段既有底轨主视觉、又叠透明概念图解」。
282
315
  > **双读兼容**:`dispatch.mg`(读旧 `rrv_mg`)、源目录 `mg/`(读旧 `rrv/`)、素材前缀 `mg-`(读旧 `rrv-`)——去品牌化前的既有工程零迁移。
283
316
 
317
+ ### `gtrk tool <name> [input]` — 单点工具族
318
+
319
+ 单发单收的独立能力,与成片管线的车道命令(`oralcut`/`split`/`matrix`/`mg`)分家。**顶层命令 + 首个 positional 词分派**(不用父子命令):`gtrk tool <name> [input]` 跑工具,`gtrk tool list` 查全部。一个工具 = 一个薄 descriptor(输入类别 / payload 拼装 / 产物映射 / 计费 / 可用门),共享 runner 跑「校验 → 上传(指纹缓存、≥256MiB 自动分片)→ 提交 → 轮询 → 流式下载落地 → `task.json`/`result.json` 面包屑」——接新工具只加一个 descriptor、不写编排。
320
+
321
+ | 工具 | 输入 | 产物 | 计费 | 状态 |
322
+ |---|---|---|---|---|
323
+ | `image_move` | 单张图片 | 运镜视频(几何按原图朝向推导:横 1920×1080 / 竖 1080×1920) | 2 积分/个 | 已上线 |
324
+ | `image_matting` | 单张图片 | 透明背景 png(可 `--param` 请求背景底板) | **免费** | 已上线 |
325
+ | `video_matting` | 单条视频(**≤10 分钟**,原片直传不压代理) | 透明背景 webm | **免费** | 已上线 |
326
+ | `mad` | 一个素材文件夹(3~10 条视频)+ 可选 `--bgm` | AE 母合成成片工程 `.jsx`(仅支持 AE) | **免费**(`--bgm` 卡点计费一次) | 已上线 |
327
+
328
+ > 抠像面向用户**免费**(license 合规,白标售卖是红线)。`video_matting` 上传前 ffprobe 探时长,> 10 分钟直接拒绝(不上传不提交、请先裁剪)。
329
+ > `mad` 是族内首个 **local 型「纯本地工具、可选云端加料」**:无 Key 可跑零费用(技法数据经云端 manifest 下发 + `~/.gitruck/mad-cache` 缓存,**首拉联网、缓存后离线可跑**),`--bgm` 卡点才需 Key 并计费一次云端节拍分析;三级降级(有 Key 卡点 / 无 Key 或坏 BGM 固定节奏 / 云端失败降级)全程不崩。仅产 `.jsx`/仅支持 AE。
330
+
331
+ - `gtrk tool list [--json]` — 列全部工具(名称/说明/输入/产物/计费/状态);`--json` 出单行机读数组。**无 API Key 也能跑**(纯本地读注册表、零网络)。
332
+ - `gtrk tool image_move ./photo.jpg [--json]` — 图转运镜;产物落 `photo-image_move/`。`--param width=1080 --param height=1920` 覆盖推导几何。
333
+ - `gtrk tool image_matting ./portrait.jpg` / `gtrk tool video_matting ./clip.mp4` — 图片/视频抠像。
334
+ - `gtrk tool mad ./素材 [--bgm 歌.mp3] [--duration 20] [--seed 42] [--refresh] [--json]` — 一键剪 MAD:扫素材文件夹 → 自动选技法 → 单一 `.jsx`(AE 2020+ 跑一遍出母合成成片工程)。`--seed` 可复现;`result.json` 记 seed/数据版本/降级档位/选中技法。
335
+ - 通用:`--out <dir>` 覆盖产物目录、`--param k=v`(可重复)/`--params-json '<对象>'` 透传云端参数、`--reupload` 忽略上传缓存、`--json` 机读、`--ffmpeg-path <dir>` 指定 ffmpeg 目录。
336
+ - cloud 型工具缺 Key → 报错引导 `gtrk init`。产物下载失败(如链接过期 404)→ `result.json` 记 `errors`、`ok=false`、`task.json` 保留可凭 `taskId` 恢复。
337
+
338
+ 配套 skill `/gtrk-tools`(一个 skill 覆盖整个工具族)。
339
+
284
340
  ### 其它
285
341
 
286
342
  - `gtrk install [--api-key … -y --skills-dir …]` — 一条命令装全(skill + 配置 + 体检),对标飞书 `lark-cli install`。