@gitruck/cli 0.2.20 → 0.2.22

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/package.json CHANGED
@@ -1,65 +1,65 @@
1
- {
2
- "name": "@gitruck/cli",
3
- "version": "0.2.20",
4
- "description": "同合云成片流水线 CLI —— agent 驱动云端任务、产物拉回本地、三方工程文件(客户端/剪映/PR)互通。",
5
- "license": "MIT",
6
- "author": "Gitruck (同合云)",
7
- "repository": {
8
- "type": "git",
9
- "url": "git+https://github.com/Gitruck/cli.git"
10
- },
11
- "homepage": "https://github.com/Gitruck/cli#readme",
12
- "bugs": {
13
- "url": "https://github.com/Gitruck/cli/issues"
14
- },
15
- "type": "module",
16
- "bin": {
17
- "gtrk": "dist/index.js"
18
- },
19
- "files": [
20
- "dist",
21
- "assets",
22
- "skills",
23
- "contracts",
24
- "AGENT.md",
25
- "README.md",
26
- "LICENSE"
27
- ],
28
- "engines": {
29
- "node": ">=20.6"
30
- },
31
- "publishConfig": {
32
- "access": "public",
33
- "registry": "https://registry.npmjs.org/"
34
- },
35
- "keywords": [
36
- "gitruck",
37
- "同合云",
38
- "video",
39
- "oral-cut",
40
- "口播剪辑",
41
- "cli",
42
- "jianying",
43
- "剪映",
44
- "agent"
45
- ],
46
- "scripts": {
47
- "gtrk": "bun run src/index.ts",
48
- "build": "bun build ./src/index.ts --target=node --outfile dist/index.js",
49
- "typecheck": "tsc --noEmit",
50
- "prepublishOnly": "npm run typecheck && npm test && bun run build",
51
- "test": "esbuild src/lib/chunk-upload.ts src/lib/upload-cache.ts src/lib/upload-submit.ts src/lib/render.ts src/lib/cloud.ts src/lib/materialize.ts src/lib/projection.ts src/lib/reproject.ts src/lib/splitdoc.ts src/lib/gtrk-writeback.ts src/lib/column-config.ts src/lib/matrix.ts src/lib/matrix-lay.ts src/lib/material-integrity.ts src/lib/solid-png.ts src/lib/mg-lint.ts src/lib/mg-lay.ts src/lib/tool-descriptors.ts src/lib/tool-runner.ts src/lib/tool-pricing.ts src/lib/transcript.ts --bundle --platform=node --format=esm --outdir=.test-build --out-extension:.js=.mjs && esbuild src/commands/split.ts --bundle --platform=node --format=esm --outdir=.test-build --out-extension:.js=.mjs && esbuild src/commands/matrix.ts --bundle --platform=node --format=esm --outfile=.test-build/matrix-cmd.mjs && esbuild src/commands/mg.ts --bundle --platform=node --format=esm --outfile=.test-build/mg-cmd.mjs && esbuild src/commands/tool.ts --bundle --platform=node --format=esm --outfile=.test-build/tool-cmd.mjs && esbuild src/commands/transcript.ts --bundle --platform=node --format=esm --outfile=.test-build/transcript-cmd.mjs && esbuild src/commands/music-visualizer.ts --bundle --platform=node --format=esm --external:commander --outfile=.test-build/music-visualizer-cmd.mjs && esbuild src/commands/long2short.ts --bundle --platform=node --format=esm --external:commander --outfile=.test-build/long2short-cmd.mjs && esbuild src/commands/skills.ts --bundle --platform=node --format=esm --outfile=.test-build/skills-cmd.mjs && esbuild src/lib/convert/ir_to_jsx.ts src/lib/convert/ir_to_am.ts src/lib/convert/ir_to_nv.ts src/lib/convert/am_parse.ts src/lib/convert/nv_parse.ts src/lib/convert/parse.ts src/lib/convert/download.ts src/lib/convert/bake_ops.ts --bundle --platform=node --format=esm --outdir=.test-build/convert --out-extension:.js=.mjs && esbuild src/lib/mad/selector.ts src/lib/mad/beat.ts src/lib/mad/scan.ts src/lib/mad/data.ts src/lib/mad/pool.ts src/lib/mad/cloud-beat.ts src/lib/mad/mad.ts --bundle --platform=node --format=esm --outdir=.test-build/mad --out-extension:.js=.mjs && node --test \"test/*.test.mjs\"",
52
- "openspec:gate": "node openspec/gate.mjs"
53
- },
54
- "devDependencies": {
55
- "@xmldom/xmldom": "^0.9.6",
56
- "bun-types": "^1.1.0",
57
- "commander": "^12.1.0",
58
- "esbuild": "^0.28.1",
59
- "typescript": "^5.6.0"
60
- },
61
- "dependencies": {
62
- "hash-wasm": "^4.12.0",
63
- "jszip": "^3.10.1"
64
- }
65
- }
1
+ {
2
+ "name": "@gitruck/cli",
3
+ "version": "0.2.22",
4
+ "description": "同合云成片流水线 CLI —— agent 驱动云端任务、产物拉回本地、三方工程文件(客户端/剪映/PR)互通。",
5
+ "license": "MIT",
6
+ "author": "Gitruck (同合云)",
7
+ "repository": {
8
+ "type": "git",
9
+ "url": "git+https://github.com/Gitruck/cli.git"
10
+ },
11
+ "homepage": "https://github.com/Gitruck/cli#readme",
12
+ "bugs": {
13
+ "url": "https://github.com/Gitruck/cli/issues"
14
+ },
15
+ "type": "module",
16
+ "bin": {
17
+ "gtrk": "dist/index.js"
18
+ },
19
+ "files": [
20
+ "dist",
21
+ "assets",
22
+ "skills",
23
+ "contracts",
24
+ "AGENT.md",
25
+ "README.md",
26
+ "LICENSE"
27
+ ],
28
+ "engines": {
29
+ "node": ">=20.6"
30
+ },
31
+ "publishConfig": {
32
+ "access": "public",
33
+ "registry": "https://registry.npmjs.org/"
34
+ },
35
+ "keywords": [
36
+ "gitruck",
37
+ "同合云",
38
+ "video",
39
+ "oral-cut",
40
+ "口播剪辑",
41
+ "cli",
42
+ "jianying",
43
+ "剪映",
44
+ "agent"
45
+ ],
46
+ "scripts": {
47
+ "gtrk": "bun run src/index.ts",
48
+ "build": "bun build ./src/index.ts --target=node --outfile dist/index.js",
49
+ "typecheck": "tsc --noEmit",
50
+ "prepublishOnly": "npm run typecheck && npm test && bun run build",
51
+ "test": "esbuild src/lib/chunk-upload.ts src/lib/upload-cache.ts src/lib/upload-submit.ts src/lib/render.ts src/lib/cloud.ts src/lib/materialize.ts src/lib/jianying.ts src/lib/clip-brief.ts src/lib/projection.ts src/lib/reproject.ts src/lib/splitdoc.ts src/lib/gtrk-writeback.ts src/lib/column-config.ts src/lib/matrix.ts src/lib/matrix-lay.ts src/lib/material-integrity.ts src/lib/solid-png.ts src/lib/mg-lint.ts src/lib/mg-lay.ts src/lib/tool-descriptors.ts src/lib/tool-runner.ts src/lib/tool-pricing.ts src/lib/transcript.ts --bundle --platform=node --format=esm --outdir=.test-build --out-extension:.js=.mjs && esbuild src/commands/split.ts --bundle --platform=node --format=esm --outdir=.test-build --out-extension:.js=.mjs && esbuild src/commands/matrix.ts --bundle --platform=node --format=esm --outfile=.test-build/matrix-cmd.mjs && esbuild src/commands/mg.ts --bundle --platform=node --format=esm --outfile=.test-build/mg-cmd.mjs && esbuild src/commands/tool.ts --bundle --platform=node --format=esm --outfile=.test-build/tool-cmd.mjs && esbuild src/commands/transcript.ts --bundle --platform=node --format=esm --outfile=.test-build/transcript-cmd.mjs && esbuild src/commands/music-visualizer.ts --bundle --platform=node --format=esm --external:commander --outfile=.test-build/music-visualizer-cmd.mjs && esbuild src/commands/long2short.ts --bundle --platform=node --format=esm --external:commander --outfile=.test-build/long2short-cmd.mjs && esbuild src/commands/skills.ts --bundle --platform=node --format=esm --outfile=.test-build/skills-cmd.mjs && esbuild src/lib/convert/ir_to_jsx.ts src/lib/convert/ir_to_am.ts src/lib/convert/ir_to_nv.ts src/lib/convert/am_parse.ts src/lib/convert/nv_parse.ts src/lib/convert/parse.ts src/lib/convert/download.ts src/lib/convert/bake_ops.ts --bundle --platform=node --format=esm --outdir=.test-build/convert --out-extension:.js=.mjs && esbuild src/lib/mad/selector.ts src/lib/mad/beat.ts src/lib/mad/scan.ts src/lib/mad/data.ts src/lib/mad/pool.ts src/lib/mad/cloud-beat.ts src/lib/mad/mad.ts --bundle --platform=node --format=esm --outdir=.test-build/mad --out-extension:.js=.mjs && node --test \"test/*.test.mjs\"",
52
+ "openspec:gate": "node openspec/gate.mjs"
53
+ },
54
+ "devDependencies": {
55
+ "@xmldom/xmldom": "^0.9.6",
56
+ "bun-types": "^1.1.0",
57
+ "commander": "^12.1.0",
58
+ "esbuild": "^0.28.1",
59
+ "typescript": "^5.6.0"
60
+ },
61
+ "dependencies": {
62
+ "hash-wasm": "^4.12.0",
63
+ "jszip": "^3.10.1"
64
+ }
65
+ }
@@ -1,61 +1,63 @@
1
- ---
2
- name: gtrk-long2short
3
- description: 长剪短闭环——把一条长视频(课程/直播/播客/访谈毛片)通过同合云选段跳剪成多条高光短片工程,一次产出逐 clip 的 gtrk+剪映+PR 三方工程(可选智能分屏)。当用户想「长剪短 / 长视频切高光 / 直播切片 / 课程切短视频 / 播客出短片 / 两小时的课切成几条精华」时使用本 skill。凡涉及把长视频拆成多条可精修的短片工程,优先用本 skill 驱动 gtrk CLI 的 `long2short` 命令,不要手搓 ffmpeg、不要人工挑时间码。
4
- ---
5
-
6
- # 长剪短(gtrk-long2short)
7
-
8
- 把用户的一条长视频,用 `gtrk` CLI 跑通「**本地抽音频/720p 代理(毛片永不上传)** → 云端语义选段+跳剪(可选分屏)→ 逐 clip 拉回 gtrk/剪映/PR 三方工程」,再把产物目录回给用户。**CLI 是手、你是脑。**
9
-
10
- > 与智能剪口播(gtrk-oralcut)同一心智模型;差异是**一次任务出 N 条短片**,各自一份工程组落 `clip{i}/` 子目录。
11
-
12
- ## 前置:CLI 装没装 + 体检
13
-
14
- 先跑 `gtrk doctor`:
15
- - **`gtrk` 找不到** → 让用户装 `npm i -g @gitruck/cli@latest`(需先有 Node.js),再重试。
16
- - 报「缺 API Key」→ 让用户先跑一次 `gtrk init`(交互式、需真终端,你别替他跑)。
17
- - 全绿就往下走。
18
-
19
- ## 一条命令
20
-
21
- ```bash
22
- gtrk long2short "D:/毛片/课程.mp4" --language zh-CN --json
23
- ```
24
-
25
- 对谈/多人同框想要分屏:
26
-
27
- ```bash
28
- gtrk long2short "D:/毛片/对谈.mp4" --language zh-CN --split-screen --split-orientation tb --json
29
- ```
30
-
31
- ## 参数表
32
-
33
- | 参数 | 说明 |
34
- |---|---|
35
- | `--language <code>` | **必填**,源语种(如 zh-CN;取值以服务端支持列表为准,传错服务端会报枚举) |
36
- | `--split-screen` | 开启智能分屏:本地改传 **720p 代理**(否则只抽音频);云端检测多人同框段并烤 720p 分屏素材 |
37
- | `--split-orientation <o>` | 分屏方向 `auto|lr|tb`(缺省 auto=按内容可复现随机) |
38
- | `--main-topic <text>` | 主题引导,影响选段偏好 |
39
- | `--duration-pref <p>` / `--max-clip-sec <n>` | 成片时长偏好 / 单条上限秒。**成片条数由内容语义决定,不能指定条数** |
40
- | `--no-jump-cut` | 关闭跳剪(默认开:片内去水词冗余,只删不重排) |
41
- | `--output-size <s>` | 画布 `9:16|16:9|1:1` 或 `WxH`(缺省 9:16 竖版) |
42
- | `-f, --formats <list>` | 三方格式,缺省 `gtrk,jianying,xml`(云端逐 clip 直产;gtrk 恒有) |
43
- | `--jianying-draft-dir <dir>` | 剪映草稿根(或 `auto`);各 clip 草稿落 `<草稿根>/<产物根名>_clip{i}` |
44
- | `-o/--out`、`--no-open`、`--json`、`--reupload`、`--param/--params-json` | 与 oralcut 同口径 |
45
-
46
- ## 计费与跑前须知(每次都转述给用户)
47
-
48
- - 运行时 CLI 自动查询实时价格并在跑前打印——**把计费提示原样转述**;按**上传物音频时长**计费(≈原片时长),**长片先向用户确认再跑**。
49
- - 云端处理时长随片长涨(ASR+选段),CLI 轮询墙钟 60 分钟;超时不丢——产物根 `task.json` 里有 `task_id` 可恢复。
50
-
51
- ## 产物(跑完把这些讲给用户)
52
-
53
- - 产物根 `<毛片名>-long2short/`:`report.json`(选段报告)+ `result.json` + 逐 clip 子目录 `clip0/ clip1/ …`(各含 `gtrk/` 客户端工程、`jianying/` 草稿、`xml/` PR 工程)。
54
- - 开了 `--split-screen` 时:**分屏素材落在毛片旁的 `split_screen/` 子目录**(工程素材路径指向那里,别移动/删除,移动了工程会缺素材)——这点要提前告知用户。
55
- - 剪映草稿已拷入草稿根(给了 `--jianying-draft-dir` 时),剪映里直接可见 `<产物根名>_clip{i}`。
56
-
57
- ## 排错
58
-
59
- - **部分 clip 失败 / 个别分屏素材 404**:单点失败不连坐,`result.json` 的 `errors` 有明细;把失败项如实告诉用户,其余产物照常可用。
60
- - **轮询超时/进程中断**:凭产物根 `task.json` 的 `task_id` 查询云端状态;任务在云端照常跑完,稍后可重取。
61
- - **clips 为空**:说明内容里没有可成片的高光段(纯语义选段),把 `report.json` 摘要给用户看原因。
1
+ ---
2
+ name: gtrk-long2short
3
+ description: 长剪短闭环——把一条长视频(课程/直播/播客/访谈毛片)通过同合云选段跳剪成多条高光短片工程,一次产出逐 clip 的 gtrk+剪映+PR 三方工程(可选智能分屏)。当用户想「长剪短 / 长视频切高光 / 直播切片 / 课程切短视频 / 播客出短片 / 两小时的课切成几条精华」时使用本 skill。凡涉及把长视频拆成多条可精修的短片工程,优先用本 skill 驱动 gtrk CLI 的 `long2short` 命令,不要手搓 ffmpeg、不要人工挑时间码。
4
+ ---
5
+
6
+ # 长剪短(gtrk-long2short)
7
+
8
+ 把用户的一条长视频,用 `gtrk` CLI 跑通「**本地抽音频/720p 代理(毛片永不上传)** → 云端语义选段+跳剪(可选分屏)→ 逐 clip 拉回 gtrk/剪映/PR 三方工程」,再把产物目录回给用户。**CLI 是手、你是脑。**
9
+
10
+ > 与智能剪口播(gtrk-oralcut)同一心智模型;差异是**一次任务出 N 条短片**,各自一份工程组落 `clip{i}/` 子目录。
11
+
12
+ ## 前置:CLI 装没装 + 体检
13
+
14
+ 先跑 `gtrk doctor`:
15
+ - **`gtrk` 找不到** → 让用户装 `npm i -g @gitruck/cli@latest`(需先有 Node.js),再重试。
16
+ - 报「缺 API Key」→ 让用户先跑一次 `gtrk init`(交互式、需真终端,你别替他跑)。
17
+ - 全绿就往下走。
18
+
19
+ ## 一条命令
20
+
21
+ ```bash
22
+ gtrk long2short "D:/毛片/课程.mp4" --language zh-CN --json
23
+ ```
24
+
25
+ 对谈/多人同框想要分屏:
26
+
27
+ ```bash
28
+ gtrk long2short "D:/毛片/对谈.mp4" --language zh-CN --split-screen --split-orientation tb --json
29
+ ```
30
+
31
+ ## 参数表
32
+
33
+ | 参数 | 说明 |
34
+ |---|---|
35
+ | `--language <code>` | **必填**,源语种(如 zh-CN;取值以服务端支持列表为准,传错服务端会报枚举) |
36
+ | `--split-screen` | 开启智能分屏:本地改传 **720p 代理**(否则只抽音频);云端检测多人同框段并烤 720p 分屏素材 |
37
+ | `--split-orientation <o>` | 分屏方向 `auto|lr|tb`(缺省 auto=按内容可复现随机) |
38
+ | `--main-topic <text>` | 主题引导,影响选段偏好 |
39
+ | `--duration-pref <p>` / `--max-clip-sec <n>` | 成片时长偏好 / 单条上限秒。**成片条数由内容语义决定,不能指定条数** |
40
+ | `--no-jump-cut` | 关闭跳剪(默认开:片内去水词冗余,只删不重排) |
41
+ | `--output-size <s>` | 画布 `9:16|16:9|1:1` 或 `WxH`(缺省 9:16 竖版) |
42
+ | `-f, --formats <list>` | 三方格式,缺省 `gtrk,jianying,xml`(云端逐 clip 直产;gtrk 恒有) |
43
+ | `--jianying-draft-dir <dir>` | 剪映草稿根(或 `auto`);各 clip 草稿落 `<草稿根>/<产物根名>_clip{i}` |
44
+ | `-o/--out`、`--no-open`、`--json`、`--reupload`、`--param/--params-json` | 与 oralcut 同口径 |
45
+
46
+ ## 计费与跑前须知(每次都转述给用户)
47
+
48
+ - 运行时 CLI 自动查询实时价格并在跑前打印——**把计费提示原样转述**;按**上传物音频时长**计费(≈原片时长),**长片先向用户确认再跑**。
49
+ - 云端处理时长随片长涨(ASR+选段),CLI 轮询墙钟 60 分钟;超时不丢——产物根 `task.json` 里有 `task_id` 可恢复。
50
+
51
+ ## 产物(跑完把这些讲给用户)
52
+
53
+ - 产物根 `<毛片名>-long2short/`:`report.json`(选段报告)+ `result.json` + 逐 clip 子目录 `clip0/ clip1/ …`(各含 `gtrk/` 客户端工程、`jianying/` 草稿、`xml/` PR 工程)。
54
+ - **先看 `clips.md`**(产物根,人读总览):一张表列全部切片的标题/时长/评分/一句话简介 —— 用它给用户复述「出了哪几条、各讲什么、建议先精修哪条」,别让用户自己开工程猜。逐条的入选理由、跳剪说明、高光词在 `clip{i}/clip.md`。
55
+ - 开了 `--split-screen` 时:**分屏素材落在毛片旁的 `split_screen/` 子目录**(工程素材路径指向那里,别移动/删除,移动了工程会缺素材)——这点要提前告知用户。
56
+ - 剪映草稿已拷入草稿根(给了 `--jianying-draft-dir` 时),剪映里直接可见 `<产物根名>_clip{i}`。**判据**:草稿目录里必须是 `draft_content.json` + `draft_meta_info.json` 两个精确文件名(云端产物侧的 `clip{i}_` 前缀在拷进草稿根这一跳被剥掉,产物目录 `clip{i}/jianying/` 里保留带前缀的归档原名)。CLI 日志按实际齐全条数报「N/M 条两件套齐全」,不齐的记进 `result.json` 的 `errors`、该 clip 的 `jianyingDraftPath` 为 `null`。
57
+
58
+ ## 排错
59
+
60
+ - **部分 clip 失败 / 个别分屏素材 404**:单点失败不连坐,`result.json` 的 `errors` 有明细;把失败项如实告诉用户,其余产物照常可用。
61
+ - **轮询超时/进程中断**:凭产物根 `task.json` 的 `task_id` 查询云端状态;任务在云端照常跑完,稍后可重取。
62
+ - **clips 为空**:说明内容里没有可成片的高光段(纯语义选段),把 `report.json` 摘要给用户看原因。
63
+ - **剪映里看不到草稿**:先看草稿目录里的**文件名**——必须是 `draft_content.json` + `draft_meta_info.json`,缺一件或带前缀剪映都不显示;`result.json` 里该 clip 的 `jianyingDraftPath` 为 `null` 即是此症。