@gitruck/cli 1.2.15 → 1.3.1
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 +29 -26
- package/CHANGELOG.md +9 -5
- package/README.en.md +2 -0
- package/README.md +2 -0
- package/contracts/README.md +2 -0
- package/contracts/gsap-emit-v1-evidence.md +196 -0
- package/contracts/gsap-emit-v1.md +162 -408
- package/dist/index.js +245 -245
- package/docs/reference.en.md +45 -11
- package/docs/reference.md +46 -12
- package/package.json +1 -1
- package/skills/gtrk-ai-drama/SKILL.md +7 -7
- package/skills/gtrk-cover/SKILL.md +3 -3
- package/skills/gtrk-food-recap/SKILL.md +9 -11
- package/skills/gtrk-live-slicing/SKILL.md +17 -26
- package/skills/gtrk-long2short/SKILL.md +2 -2
- package/skills/gtrk-matrix/SKILL.md +11 -15
- package/skills/gtrk-mg/SKILL.md +21 -21
- package/skills/gtrk-music-visualizer/SKILL.md +3 -3
- package/skills/gtrk-narration/SKILL.md +23 -57
- package/skills/gtrk-oralcut/SKILL.md +4 -8
- package/skills/gtrk-splitter/SKILL.md +3 -3
- package/skills/gtrk-style-maker/SKILL.md +1 -1
- package/skills/gtrk-talking-head/SKILL.md +5 -6
- package/skills/gtrk-tools/SKILL.md +4 -4
- package/skills/gtrk-transcript/SKILL.md +4 -9
- package/skills/gtrk-travel-recap/SKILL.md +51 -76
- package/skills/gtrk-vlog-docu/SKILL.md +15 -15
- package/skills/gtrk-voiceover/SKILL.md +2 -2
|
@@ -37,37 +37,17 @@ description: 通用解说视频创作图纸(解说链正本)——把「一
|
|
|
37
37
|
| ⑦ | **源片语种 / 方言** | **问用户**:听一段 / 看片内有无内嵌字幕 / 看素材出处 | `gtrk transcript --lang`(`zh-CN` 普通话 / **`zh-HK` 粤语** / `en-US` / `ja-JP`…);素材通篇无对白答「无对白 / 不转写」即闭合,MUST NOT 因缺这个答案阻塞开工 |
|
|
38
38
|
|
|
39
39
|
> ②③④⑤⑦ MUST 问用户、MUST NOT 代猜;一张表一次问完,不碎问。
|
|
40
|
-
>
|
|
40
|
+
> **推荐面(公约 §三‴)**:问答收口时可问一句「要不要看看第三方 skill?」;题材命中场景触发词才定向推荐,读取 `gtrk skills recommend --scene <id> --json`;用户拒绝后不执行推荐动作。
|
|
41
41
|
>
|
|
42
|
-
>
|
|
43
|
-
> 静默转写跑完,整条链上无一处问过语种。⑦ MUST 早于 ① 的转写发起:转写是计费动作且在检查点①**之前**,
|
|
44
|
-
> **非中文素材**(`en-US` / `ja-JP`…)语种传错,用户在检查点①拿到的稿子就是坏的、重来要再付一次 ASR
|
|
45
|
-
> (真机 `--lang en-US` 出英文稿即实证);且豆包 14 项白名单外的语种码在 `word_level=true` 下会裸
|
|
46
|
-
> `KeyError` 炸任务。**MUST NOT 以缺省 `zh-CN` 静默开跑**,检查点①对语种只做过目复核。
|
|
42
|
+
> 语种必须在转写前确认。非中文素材传错语种会让检查点①拿到错误稿件并产生重复 ASR 成本;不要静默使用 `zh-CN`。粤语建议填写 `zh-HK` 作为元数据,当前 `--json` 路径按字级转写;无对白素材回答「无对白 / 不转写」即可。
|
|
47
43
|
>
|
|
48
|
-
> ⟲ **2026-09-02 同日订正(这一问的原粤语论证段已被求证推翻,问本身照旧成立)**:原文写
|
|
49
|
-
> 「`zh-CN` 与 `zh-HK` 在后端是两个不同的识别语种(Whisper `zh` vs `yue`)」——**该因果论断错**。
|
|
50
|
-
> `gtrk transcript` 写死 `word_level: true`(`src/commands/transcript.ts:178`)⇒ 链路钉在豆包、
|
|
51
|
-
> 到不了 Whisper(infra `utils/process/media/audio/asr.py:44-49` 在 `AsrFunc.Whisper` 分支里
|
|
52
|
-
> 仍把 `word_level_handler` 钉成豆包);而豆包字典里 `zh-CN` 与 `zh-HK` **都映射空串**
|
|
53
|
-
> (`utils/partner/volcengine/doubao_llm_asr.py:36-37`)⇒ 两种写法发出的请求**逐字段相同**。
|
|
54
|
-
> 粤语能识别对,靠的是豆包空串模式自己的方言自适应,与这个参数无关;`zh-HK→yue` 那条映射真实存在
|
|
55
|
-
> (`utils/partner/openai/__init__.py:18`)但只在 `word_level=false` 走 Whisper 时生效,CLI 今天走不到。
|
|
56
|
-
> ⇒ 粤语 **SHOULD** 如实填 `zh-HK`(元数据诚实 + 备将来链路切换),但 **MUST NOT 以「粤语语种传错」
|
|
57
|
-
> 为由重跑转写**:`la` 进 ASR 缓存键(`asr_result_cache.py:71-75`),换码必然 cache miss,
|
|
58
|
-
> 白扣一次时长换回同一份结果。
|
|
59
|
-
> ⟲ **2026-09-19 订正**:上段「写死 `word_level: true`」已过时。现口径按产物消费面分流
|
|
60
|
-
> (cli `adjust-transcript-json-word-level`):**无 `--json`** ⇒ 句级、走自部署引擎 + 服务端纠错(小工具用法);
|
|
61
|
-
> **`--json`**(本图纸的用法)⇒ 字级,transcript.json 带 `words[]`,字幕拆行后时间按语音贴。
|
|
62
|
-
> 粤语在 `--json` 路照旧落厂商字级腿;无 `--json` 路的粤语代价见 `switch-transcript-to-selfhosted-asr`。
|
|
63
|
-
|
|
64
44
|
## 三、时序铺排三档(本图纸的技术正本)
|
|
65
45
|
|
|
66
46
|
每段叙述配什么画面,按下面三档路由,**高档优先**:
|
|
67
47
|
|
|
68
|
-
> **⚠️
|
|
48
|
+
> **⚠️ 甲档的适用范围**:
|
|
69
49
|
> **整份手写 plan(免索引直排)降级为「引用段与硬出处段专用」**,叙述段缺省不再走它。
|
|
70
|
-
>
|
|
50
|
+
> 手写 plan 缺少检索结果携带的质量信号,因此:
|
|
71
51
|
>
|
|
72
52
|
> | 信号 | 断在哪 | 后果 |
|
|
73
53
|
> |---|---|---|
|
|
@@ -77,9 +57,6 @@ description: 通用解说视频创作图纸(解说链正本)——把「一
|
|
|
77
57
|
> | `motion` 高运动 | 手写 `segments` 不带该字段 | 抖/摇段不降权 |
|
|
78
58
|
> | `cuts` 切点 | 同上 | **端点残片收缩失效 = 闪帧的机制性根因** |
|
|
79
59
|
>
|
|
80
|
-
> 260828 三条美食片实测 `describes` 行数为 **0**——`--mark-weight 0.3` 明明传了,一分没参与。
|
|
81
|
-
> 这也解释了当时「低清 scdet 事后吸附零改善」:那是在成片上补救,根因在 plan 侧信号缺失,补不回来。
|
|
82
|
-
>
|
|
83
60
|
> ⇒ **叙述段缺省走「出处窗内检索」**(见下方「甲′」),既保出处准、又拿回五条信号。
|
|
84
61
|
> 用户坚持免索引时照办,但 **MUST 先把上表的代价说清**——它不是「快一点」,是质量档位下降,
|
|
85
62
|
> 且 MUST 在交付说明里如实登记本片走的是降档路径。
|
|
@@ -126,42 +103,36 @@ description: 通用解说视频创作图纸(解说链正本)——把「一
|
|
|
126
103
|
> 两条独立,回执分别以 `has_cuts` / `fps` 报,`cut_snap` 三态再把「按你的标注主动不吸」
|
|
127
104
|
> 与「素材没索引想吸也无从吸」分开。
|
|
128
105
|
|
|
129
|
-
> **直写 plan
|
|
106
|
+
> **直写 plan 操作注记**:整份 plan 可以手写——甚至**不依赖本地索引**
|
|
130
107
|
> (4K 长片索引很慢,甲档直排等不起也不必等)。逐 beat 一条 query、逐出处窗一条 result,
|
|
131
108
|
> `segments:[{start,end,best,score}]`(源片秒)。三条铁则:① `best` 是**窗内代表帧时刻**
|
|
132
109
|
> (秒),落窗外会被校验拒;lay 取段大致**以 best 为中心**——想 start 锚定就把 best 设为
|
|
133
|
-
> 「窗起点 + 意图时长/2」;② 预算三量齐足——`per_shot_sec` 按「beat 时长 / 窗数」给、**窗宽 ≥
|
|
110
|
+
> 「窗起点 + 意图时长/2」;② 预算三量齐足——`per_shot_sec` 按「beat 时长 / 窗数」给、**窗宽 ≥ 份额**,长出处区间拆成多个子窗;③ 引用段窗与配音时轴**逐秒对齐**(窗起点 = 引用音频对应的
|
|
134
111
|
> 源时刻),铺后按 `clip_st 与 track_st 的差恒等` 复核零漂移;④ **口播基座下 beat 预算按
|
|
135
112
|
> dispatch 的成片轴包络算**——`transcript.json` 的 st/ed 是源时码,且 beat 连续化会把句间
|
|
136
|
-
> 停顿带并入下一 beat
|
|
137
|
-
> ⑤ **beat
|
|
113
|
+
> 停顿带并入下一 beat,窗预算不足会产生空洞;
|
|
114
|
+
> ⑤ **beat 粒度以关键句为主,采用约七三的对齐与游离比例**。先认清机制:
|
|
138
115
|
> `matrix lay` 在 beat 内按候选分数贪心铺满、**槽序与句序无关**——一个 beat 跨多句时,
|
|
139
116
|
> 只有「领衔句」能拿到为它挑的画面,其余句是跟随。由此定编排法(**顺序不可颠倒**):
|
|
140
117
|
> **①关键词卡点先行**:先挑出有明确视觉指涉的句子(实体/动作/可拍之物),逐句独立成 beat、
|
|
141
118
|
> 一 beat 一窗,保证「稿说什么就给什么」。**划分判据是「素材里有没有」,不是「句子抽不抽象」**
|
|
142
|
-
>
|
|
119
|
+
> ——素材里有对应画面的句子 MUST 卡点
|
|
143
120
|
> (哪怕它夹在抽象段里,如「昨天的老汤兑进今天的新汤」有汤锅镜头就必须给汤锅);素材里
|
|
144
121
|
> 确实没有的才允许降为跟随(「卖过三十年汽车」片里无车、「多线程游戏」无从拍)。判据的
|
|
145
122
|
> 落地取证=渲后 `gtrk qc --alignment`:**卡点句 mismatch MUST 收敛到 0,且每一条 mismatch
|
|
146
|
-
>
|
|
147
|
-
> 素材有标牌镜头却被我把窗猜到别处 = 能卡没卡;u0016 老汤该卡却被我编成跟随 = 该严没严);②**其余填坑**:抽象句、数字句、修辞句、情绪句
|
|
123
|
+
> 都要先问「是我窗选错了,还是素材真没有」;②**其余填坑**:抽象句、数字句、修辞句、情绪句
|
|
148
124
|
> (日期/克数/"比太阳起得早"/"多线程游戏")**没有对应画面可给**,合并进相邻关键句的
|
|
149
125
|
> 长镜头当跟随,或用主题相近的群像长镜头覆盖;③**七三开收口**:约 70% 时长逐句对齐、
|
|
150
126
|
> 30% 游离创造自然感——**游离不是妥协是设计**。
|
|
151
|
-
> ⚠️
|
|
152
|
-
>
|
|
153
|
-
> 就是在毁观感**——对齐质检的靶子是「关键句零 mismatch」,不是「rate 冲 100」。
|
|
154
|
-
> 反向的错也实证过:beat 跨六句共用一窗(B02)会让四五句集体错位,对齐率压到 62%。
|
|
155
|
-
> 两头都是坑,七三开是那条中线。
|
|
156
|
-
> ⑥ **盲选窗跨源镜头切点**——这条曾是免索引直排的固有代价,**走 `direct_slots` 之后
|
|
157
|
-
> 大部分消掉**:直排槽照样过窗口精修,`provenance` 段的端点会被自动吸到切点。
|
|
127
|
+
> ⚠️ **不要追求 100% 逐句硬切**:对齐质检的靶子是「关键句零 mismatch」,其余句允许跟随;一个 beat 也不要跨太多关键句,以免集体错位。
|
|
128
|
+
> ⑥ **盲选窗跨源镜头切点**——`direct_slots` 的直排槽同样会过窗口精修,`provenance` 段的端点会自动吸到切点。
|
|
158
129
|
> 仍会剩下两种情形,都要如实报账而不是靠重铺硬碰:
|
|
159
130
|
> · **素材未索引**(无 `cuts`)⇒ 收缩无数据可用。先索引再铺是正解,等不起就照实说明。
|
|
160
131
|
> · **`quote` 引用段** ⇒ 它按设计**不吸**(吸走就是画音错开)。若那一口确实横跨切换,
|
|
161
132
|
> 那是内容本身如此,正确处置是改稿或改引用区间,不是让铺轨替你挪。
|
|
162
133
|
> 渲后 QC 的 flash/intra_cut 证据仍可反算源切点(clip_st + into_clip_sec)供人工复核。
|
|
163
134
|
|
|
164
|
-
### 甲′ ·
|
|
135
|
+
### 甲′ · 出处窗内检索(叙述段缺省路)
|
|
165
136
|
|
|
166
137
|
**出处准与检索对齐可以兼得**,不必二选一:把出处区间当**检索域**而不是当**答案**。
|
|
167
138
|
|
|
@@ -202,7 +173,7 @@ QC 反算重铺);② 段带 `cuts`,端点残片收缩生效;③ 段带 `
|
|
|
202
173
|
- **切取用流拷贝**(`ffmpeg -c copy`,零重编码);想让 AI 帮你海选可引用的高光,可先跑一遍 `gtrk long2short` 拿选段清单当候选(可选辅助,明示计费)。
|
|
203
174
|
- **装配**:逐段 TTS + 引用段原声按稿序拼成总音频 → 合成 transcript(各段句级时码换算到拼接轴)→ `gtrk project init --audio <总音频> --transcript <合成转写>` 建工程(自备配音兜底路);引用段画面 = 该源区间直排上轨。无引用段时装配退化为单条 TTS + `--tts-task` 主路(与旅拍同款)。
|
|
204
175
|
**产物文件名别硬拼(fix-tool-outdir-collision)**:多段 TTS 落**同一个 `--out`** 时,第二段起的产物会带 taskId 后 6 位后缀(`tts-narrator-a1b2c3.wav`),基名只有第一份是干净的。拼接清单 MUST 按每次回执的 `files` 取路径,MUST NOT 按 `tts-<speaker>.wav` 猜——猜出来的名字会一路指向第一段,拼出来的总音频会把某一段重复多遍而不报错。
|
|
205
|
-
|
|
176
|
+
**主轨无缝铁则**:合成 transcript 里引用段 utterance 的 st/ed **MUST 写物理拼接位**(拼接轴上的真实起止),MUST NOT 加字幕 pad;已有 pad 的工程按「改时刻→重导视图→重落拆分→重铺→字幕重出」修复。
|
|
206
177
|
- **克制丑话**:引用段是佐料——时长占比失衡会让片子变成搬运,平台判定风险归用户(§八 一并告知)。
|
|
207
178
|
|
|
208
179
|
## 五、快速成片编排
|
|
@@ -222,9 +193,8 @@ gtrk transcript "<长片>" --lang <开工⑦所答语种> --json # 影视/游
|
|
|
222
193
|
|
|
223
194
|
# ②③ 写稿(甲档出处共生 / 乙路对照表对齐)→ 检查点①拍板(§六)
|
|
224
195
|
gtrk matrix material "<情绪 题材 检索词>" --scope audio --top-k 5 --json # BGM 候选附试听
|
|
225
|
-
# ⚠️ is_copyright 的权威语义是 1/true=可商用、0/false
|
|
226
|
-
#
|
|
227
|
-
# ⟲ 260906 拍板 · 选材口径:矩阵成员档**缺省搜全库**,MUST NOT 默认加 --commercial-only、
|
|
196
|
+
# ⚠️ is_copyright 的权威语义是 1/true=可商用、0/false=**不可商用**,MUST NOT 把 false
|
|
197
|
+
# 读成「无版权、可随便用」。矩阵成员档**缺省搜全库**,MUST NOT 默认加 --commercial-only、
|
|
228
198
|
# 也 MUST NOT 以「保险起见」为由剔掉 is_copyright:false 的候选(全库正是成员身份买到的东西)。
|
|
229
199
|
# 对价是**如实标注**:推荐时 MUST 逐条带上 copyright_label(派生位,中文标签),不可商用的照直说,
|
|
230
200
|
# 但 MUST NOT 升级成追问或阻塞。用户**特意说明**只要可商用 / 要商用发布 / 客户商单时才加
|
|
@@ -247,7 +217,7 @@ gtrk matrix lay --project "<工程>" --mark-weight 0.3 --highlight-weight 0.2 --
|
|
|
247
217
|
|
|
248
218
|
# ⑧⑨⑩ 字卡(MG 临场泛化,公约 §三)→ BGM(0.10 垫底、短了自动循环铺满)→ 字幕直出
|
|
249
219
|
# BGM 是带人声歌曲(audio_type:"song")→ MUST 下载 accompaniment_url 伴奏版上轨,
|
|
250
|
-
# 不得用 download_url
|
|
220
|
+
# 不得用 download_url 原曲(人声与配音会打架)
|
|
251
221
|
gtrk mg --project "<工程>" --json
|
|
252
222
|
# --beat-align 的高潮点取自 split.beats 的 narrative / container_stage(升华段 → 容器转折 → 回扣段);
|
|
253
223
|
# 拆分稿没带这两个字段 ⇒ 落 0.75×全片兜底档,**CLI 会明示那是猜的**。不接受就用 --climax <轨秒> 指定。
|
|
@@ -259,25 +229,21 @@ gtrk subtitle lay --project "<工程>" --style <样式> --color <色> --json
|
|
|
259
229
|
> **停顿太长时**:自训音色加 `--fragment-interval 0.2`(合成时就对);云引擎音色**不支持**该参数(传了会报错,不会静默忽略),改在合成后跑 `gtrk audio tighten --project <工程>` 收紧句间停顿(纯本地零计费;只压跨句界的停顿,句内换气与原声引用段不动)。
|
|
260
230
|
|
|
261
231
|
配方口径(`--mark-weight 0.3`、BGM 0.10、`--gap-fill fast`、句界吸附缺省)与旅拍图纸 §五 同源,本图纸引用不复制。
|
|
262
|
-
`--highlight-weight 0.2
|
|
232
|
+
`--highlight-weight 0.2`:看点维度与 mark 正交——mark 判「好不好看」、highlight 判
|
|
263
233
|
「有没有看点」(信息量/戏剧性/情绪强度/稀缺性)。看点准则按垂类走 L1 rubric(美食/旅拍图纸各持一份
|
|
264
234
|
**画面投影版**)。两权之和 0.5,语义仍占一半——**MUST NOT 加到语义压不住的程度**,那会变成
|
|
265
235
|
「专挑好看的,不管说的是什么」。
|
|
266
236
|
⚠️ 三个权重(mark/highlight)与 blurry 降权**全都依赖 `matrix describe --plan` 跑过**;
|
|
267
237
|
没跑就是全部候选中性、排序与不开权重逐字节一致。
|
|
268
|
-
|
|
238
|
+
质检按公约「三级收敛」执行:**L1 恒开**;**L2 落轨前**可用 `gtrk matrix lay --arrange-qc` 检查卡点句画音对齐;**L3 渲后终检**随本来就要交付的本地渲附带,不为质检单独逼渲。跑过的质检结论随交付分层呈现。
|
|
269
239
|
|
|
270
240
|
## 六、检查点①(拍板停一次;铺画面前另有一次用量确认)
|
|
271
241
|
|
|
272
|
-
>
|
|
273
|
-
> 本地素材的编排自该日起默认走云端并按「编排量」计费,`matrix lay` **跑前会再停一次**报预估。
|
|
274
|
-
> 后半句仍成立(那次确认也在检查点①之后)。
|
|
275
|
-
> **agent 纪律**:无 TTY 时 CLI 问不到人会回落本机编排并打告警——MUST 先把预估用量告诉用户、
|
|
276
|
-
> 拿到同意再带 `--yes` 重跑;MUST NOT 未经同意就带 `--yes`,也 MUST NOT 看到回落告警当没事发生。
|
|
242
|
+
> 本地素材的编排缺省走云端并按编排量计费。`matrix lay` 跑前必须报告预估用量,取得同意后才能带 `--yes`;无 TTY 且未确认时整轮中止,工程不改动,plan 可重跑。
|
|
277
243
|
|
|
278
244
|
稿件(含引用窗口标注)+ **出处对照表**(乙路时;低置信段标出)+ 画幅 + 音色(附试听)+ BGM(附试听)+ 字幕样式(不挑走默认)——一屏给齐一次拍板。**未经确认 MUST NOT 发起 TTS/长剪短等计费动作。**
|
|
279
245
|
|
|
280
|
-
##
|
|
246
|
+
## 六′、稿句↔镜头对照表(铺轨前必给)
|
|
281
247
|
|
|
282
248
|
候选选定、**铺轨动作发起之前**,把「哪句配哪个镜头、为什么是它」摊开给用户过目。
|
|
283
249
|
出处对照表回答「这段稿从哪来」,本表回答「这段稿给什么画面」——两张表不互替。
|
|
@@ -295,7 +261,7 @@ gtrk subtitle lay --project "<工程>" --style <样式> --color <色> --json
|
|
|
295
261
|
用户在这里改判的成本最低:他说「u0012 我记得片尾还有个更好的标牌镜头」,此时换窗重检索
|
|
296
262
|
只花几秒;等铺完渲完再改,就是整轮返工。
|
|
297
263
|
|
|
298
|
-
##
|
|
264
|
+
## 六″、验收判据
|
|
299
265
|
|
|
300
266
|
含 B-roll 覆盖的成片,验收 MUST 同时满足两条:
|
|
301
267
|
|
|
@@ -303,7 +269,7 @@ gtrk subtitle lay --project "<工程>" --style <样式> --color <色> --json
|
|
|
303
269
|
2. **`gtrk qc --alignment` 的卡点句 mismatch = 0**。
|
|
304
270
|
|
|
305
271
|
> ⚠️ **判据是 lead_mismatch 归零,不是全句对齐率冲 100。**
|
|
306
|
-
> 全句率趋近 100%
|
|
272
|
+
> 全句率趋近 100% 往往意味着逐句硬切,可能让片子变碎。
|
|
307
273
|
> 全句 rate 只作参考量看趋势,**MUST NOT 当达标线**。
|
|
308
274
|
>
|
|
309
275
|
> 每一条 lead mismatch 都先问「**是我窗选错了,还是素材真没有**」:前者换窗重铺,
|
|
@@ -113,11 +113,8 @@ gtrk oralcut "<align 结果 JSON 的 output,即 *_extaudio.mp4>" [原有参数
|
|
|
113
113
|
|
|
114
114
|
## 执行(每次都带 `--json`)
|
|
115
115
|
|
|
116
|
-
> **产物落点纪律(MUST · 全文见随包 `AGENT.md`
|
|
117
|
-
>
|
|
118
|
-
> **MUST NOT** 把成片、预览或任何大媒体文件复制到 agent 自有工作目录(如用户文档目录下 agent 产品自建的目录、agent 家目录缓存、会话工作区)——需要引用媒体时**用原路径引用**,不做副本;
|
|
119
|
-
> 临时文件一律放系统 temp 且**用完即删**(含中断 / 失败路径)。违者后果 = 用户系统盘被静默吃满(真机事故,非假设)。
|
|
120
|
-
> 交付物(颗粒 HTML / 工程文件 / 派单稿 / 文稿等)SHALL **直接以工程目录内的最终路径为写入路径**,MUST NOT 先写 agent 自有工作目录再拷进工程——**中转本身即违规**,不以「最后拷进去了」免责,**体积不是豁免理由**(2026-09-07 事故里漂掉的是 2.7–6.2 KB 的 HTML)。与上一条的分界:抽帧图这类**不交付**的中间物走系统 temp;**要交付的东西没有暂存态**。
|
|
116
|
+
> **产物落点纪律(MUST · 全文见随包 `AGENT.md` 同名一节)**:交付物只写入工程目录或用户显式指定的输出路径;引用媒体用原路径,不复制到 agent 工作目录;临时文件放系统 temp,用完即删。
|
|
117
|
+
> 交付物 MUST NOT 先写 agent 自有目录再拷进工程;中转本身即违规,体积不是豁免理由。
|
|
121
118
|
|
|
122
119
|
```bash
|
|
123
120
|
gtrk oralcut "<毛片绝对路径>" [--script "<txt路径>"] [--preset steady|concise|compact] [其它参数…] --json
|
|
@@ -175,8 +172,7 @@ gtrk oralcut "<毛片绝对路径>" [--script "<txt路径>"] [--preset steady|co
|
|
|
175
172
|
|
|
176
173
|
⚠️ **上面的词只是举例、不是白名单**——判据是「**用户表达了节奏/范围保留**」,换个说法照样得听懂。
|
|
177
174
|
典型误判:「先智能剪口播 **然后我们逐步推进**」——用户说了「然后」,明确表示还要往下,
|
|
178
|
-
**范围**逃生门逐字不成立;但**节奏**逃生门成立 ⇒ **SHALL
|
|
179
|
-
当时只写了范围侧,agent 一口气连跑了三个 skill。)
|
|
175
|
+
**范围**逃生门逐字不成立;但**节奏**逃生门成立 ⇒ **SHALL 停**。不要因用户说「然后」就忽略明确的逐步推进要求。
|
|
180
176
|
|
|
181
177
|
停下时**必须交代下一步是什么、他说一声就继续**,别退化成事事请示。示范:
|
|
182
178
|
「口播工程已就绪。按你说的逐步来,我先停在这。下一步是拆成 beat 级分镜派单,你说一声我就接着做。」
|
|
@@ -198,7 +194,7 @@ gtrk patch trim --project <dir> --clip <clip_id> --out -1s
|
|
|
198
194
|
|
|
199
195
|
**MUST NOT 直接编辑 `.gtrk` 的 JSON。** 片段时码是两套并存的(`clip_st`+`clip_ed` 与
|
|
200
196
|
`clip_st`+`duration`):改一份不改另一份,客户端优先读 `clip_ed`、后端又不强校验它 ⇒
|
|
201
|
-
|
|
197
|
+
`gtrk patch` 替你做恒等式同步 + 帧对齐 + 写前全档校验。
|
|
202
198
|
|
|
203
199
|
> 参数手册在 `AGENT.md` 的「元素级编辑:`gtrk patch`」一节与 README 命令参考。
|
|
204
200
|
> 本节**只指路不搬手册** —— 搬过来就会长出会漂移的副本。
|
|
@@ -12,7 +12,7 @@ description: 视觉拆分派单器——把一条已剪好的口播工程(gtrk
|
|
|
12
12
|
## 三条铁律(先记死,再动手)
|
|
13
13
|
|
|
14
14
|
1. **只引用视图里存在的 utterance id**:beat 的文稿范围 = `span:{from:"u0007", to:"u0011"}`(utterance id 区间)。id 必须来自 `gtrk split --project` 导出的投影视图,**不许臆造**(`u9999` 一定被硬拒)。
|
|
15
|
-
2.
|
|
15
|
+
2. **绝不抄原句文字作定位**:原文片段会诱发幻觉、也会和实拍漂移。一律用 utterance id 区间。
|
|
16
16
|
3. **绝不自造/推算任何时码**:拆分稿里**不写任何秒级时码字段**。轨道时码由 `gtrk split` 落地时现场投影写入 `struct_meta.split` / `dispatch.json`。你只管语义(lane / 叙事功能 / handoff),时间线交给 CLI。
|
|
17
17
|
|
|
18
18
|
## ★ MG 槽位的视觉职能 `visual_job`(必填)
|
|
@@ -73,10 +73,10 @@ description: 视觉拆分派单器——把一条已剪好的口播工程(gtrk
|
|
|
73
73
|
## 完整流程(取视图 → 拆分 → 落地 → 修正循环 ≤3 轮)
|
|
74
74
|
|
|
75
75
|
> **产物落点纪律(MUST · 全文见随包 `AGENT.md` 同名一节)**:
|
|
76
|
+
> 交付物 MUST NOT 先写 agent 自有目录再拷进工程;中转本身即违规,体积不是豁免理由。
|
|
76
77
|
> 一切产物(拆分稿 / 派单 / 成片 / 预览 / 素材 / 工程文件)只落**工程目录**或**用户显式指定的输出路径**;
|
|
77
78
|
> **MUST NOT** 把成片、预览或任何大媒体文件复制到 agent 自有工作目录(如用户文档目录下 agent 产品自建的目录、agent 家目录缓存、会话工作区)——需要引用媒体时**用原路径引用**,不做副本;
|
|
78
|
-
> 临时文件(抽帧图等)一律放系统 temp
|
|
79
|
-
> 交付物(颗粒 HTML / 工程文件 / 派单稿 / 文稿等)SHALL **直接以工程目录内的最终路径为写入路径**,MUST NOT 先写 agent 自有工作目录再拷进工程——**中转本身即违规**,不以「最后拷进去了」免责,**体积不是豁免理由**(2026-09-07 事故里漂掉的是 2.7–6.2 KB 的 HTML)。与上一条的分界:抽帧图这类**不交付**的中间物走系统 temp;**要交付的东西没有暂存态**。
|
|
79
|
+
> 临时文件(抽帧图等)一律放系统 temp 且**用完即删**。交付物直接写入工程目录或用户显式指定的路径;引用媒体用原路径。
|
|
80
80
|
|
|
81
81
|
### 1. 取投影视图(你的唯一创作输入)
|
|
82
82
|
|
|
@@ -50,7 +50,7 @@ description: "能生产 skill 的 meta skill——通过启发式访谈引导视
|
|
|
50
50
|
### ⑤ 词表沉淀
|
|
51
51
|
|
|
52
52
|
访谈中**反复出现的自造词**(他给自己概念起的名字)逐个登记。这些词就是他栏目的语法词汇。
|
|
53
|
-
- 条件产出:家族 ≥2 个 skill **或** 沉淀出自造词时,单独产共享词表文件(家族各 skill
|
|
53
|
+
- 条件产出:家族 ≥2 个 skill **或** 沉淀出自造词时,单独产共享词表文件(家族各 skill 引用它,防多处定义漂移);单 skill 且无自造词时,词表并入 SKILL.md 一节即可。
|
|
54
54
|
|
|
55
55
|
### ⑥ 家族切分
|
|
56
56
|
|
|
@@ -29,11 +29,11 @@ description: 通用口播视频创作图纸(口播链)——把一条或一
|
|
|
29
29
|
| ② | 有无独立外录音轨? | 看目录配对(每条视频旁的音频文件)+ ffprobe 时长比对 | 走不走双轨换声(§二) |
|
|
30
30
|
| ③ | 有没有文稿? | 问用户。**⚠️ 即兴内容禁传事后整理稿**——oralcut 会把「终稿外内容」当废话剪掉,即兴场景必须走无稿智能重建 | `--script` 传不传 |
|
|
31
31
|
| ④ | 毛片几何 | ffprobe | 画幅随片(**非拍板项**,与旅拍不同——那边是无中生有须拍板画幅);非标帧率会被吸附到标准值,属预期 |
|
|
32
|
-
| ⑤ | **B-roll
|
|
32
|
+
| ⑤ | **B-roll 素材来源** | **问用户,MUST NOT 硬塞**:有没有本地素材文件夹(要路径)?要不要用云端素材填充? | §五 matrix 走法三选一:本地(`--local --dirs`)/ 云端 / **都不要 = 不铺 B-roll**(纯 A_ROLL + MG 字卡也是完整成片形态) |
|
|
33
33
|
|
|
34
34
|
| ⑥ | **有没有与人像同步录制的屏录 / 第二机位?** | **问用户,MUST NOT 代猜**(看目录里有没有同时段的屏录 / 另一机位文件只是提示,不是答案)。有则追问三样:画中画形状(圆 / 圆角方 / 爱心 / 菱形 / 星形,缺省圆)、位置(缺省右下)、大小(缺省约 28% 画幅高) | 走不走 §二′ 双源画中画(`gtrk pip lay`);屏录题材 **⑤ 默认答「不铺 B-roll」**(屏幕本身即画面) |
|
|
35
35
|
|
|
36
|
-
>
|
|
36
|
+
> **推荐面(公约 §三‴)**:问答收口时可问一句「要不要看看第三方 skill?」;题材命中场景触发词才定向推荐,读取 `gtrk skills recommend --scene <id> --json`;用户拒绝后不执行推荐动作。
|
|
37
37
|
|
|
38
38
|
## 二、双轨收音:对轨 → 换轨(本图纸最大的新东西)
|
|
39
39
|
|
|
@@ -47,8 +47,7 @@ description: 通用口播视频创作图纸(口播链)——把一条或一
|
|
|
47
47
|
gtrk audio align "<毛片>" "<外录>"
|
|
48
48
|
```
|
|
49
49
|
|
|
50
|
-
|
|
51
|
-
全测得 0、置信度 8.8–13.6)。**测出 0 比假设 0 更稳**:万一素材其实没对齐,假设 0 会静默错轨。
|
|
50
|
+
已对齐、未对齐**都直接跑自动分支**——已对齐素材会测出接近 0 的偏移与高置信。**测出 0 比假设 0 更稳**:万一素材其实没对齐,假设 0 会静默错轨。
|
|
52
51
|
`--offset 0` 只在你确知偏移时用(跳过检测省几秒)。
|
|
53
52
|
|
|
54
53
|
命令自动互相关测偏移并给**置信度**,按置信度分流:
|
|
@@ -158,11 +157,11 @@ gtrk split(投影 → 你写拆分稿 → 落地)→ gtrk matrix(按⑤走
|
|
|
158
157
|
拆分稿写完自查两条:
|
|
159
158
|
- **lane 里出现 AI_DRAMA 即改派**(机检 grep 即可);
|
|
160
159
|
- **字卡要产颗粒的,aux 必须用 `type:"overlay"` + handoff(含 duration_hint)**——`quote-card` 等
|
|
161
|
-
前七类 aux
|
|
160
|
+
前七类 aux 只是语义标注、**不产派单**;需要颗粒的字卡必须用 `type:"overlay"` + handoff。
|
|
162
161
|
|
|
163
162
|
## 六、MG 风格:内容驱动的临场泛化(成片型图纸通用条款)
|
|
164
163
|
|
|
165
|
-
>
|
|
164
|
+
> 横切原则正本见仓内《成片型图纸公约》§三(`docs/成片型图纸公约.md`);本节是口播链的执行文本,旅拍图纸 §六「因势象形」是它的旅拍实例。
|
|
166
165
|
|
|
167
166
|
- **有栏目风格 skill** → 走栏目(经栏目配置注入),本节不适用。
|
|
168
167
|
- **没有栏目风格 skill** → **按当下这片的内容,现场泛化一套自洽风格直接用**:
|
|
@@ -118,11 +118,11 @@ description: gtrk 单点工具与媒体转换能力的调用向导,覆盖 `gtr
|
|
|
118
118
|
|
|
119
119
|
## 调用纪律(每次都照做)
|
|
120
120
|
|
|
121
|
-
> **产物落点纪律(MUST · 全文见随包 `AGENT.md` 同名一节)**:
|
|
121
|
+
> **产物落点纪律(MUST · 全文见随包 `AGENT.md` 同名一节)**:
|
|
122
|
+
> 交付物 MUST NOT 先写 agent 自有目录再拷进工程;中转本身即违规,体积不是豁免理由。
|
|
122
123
|
> 一切产物只落 `outDir`(缺省 = 输入同目录)或**用户显式指定的 `--out`**;
|
|
123
124
|
> **MUST NOT** 把成片、预览或任何大媒体文件复制到 agent 自有工作目录(如用户文档目录下 agent 产品自建的目录、agent 家目录缓存、会话工作区)——需要引用媒体时**用原路径引用**,不做副本;
|
|
124
|
-
> 临时文件一律放系统 temp
|
|
125
|
-
> 交付物(颗粒 HTML / 工程文件 / 派单稿 / 文稿等)SHALL **直接以工程目录内的最终路径为写入路径**,MUST NOT 先写 agent 自有工作目录再拷进工程——**中转本身即违规**,不以「最后拷进去了」免责,**体积不是豁免理由**(2026-09-07 事故里漂掉的是 2.7–6.2 KB 的 HTML)。与上一条的分界:抽帧图这类**不交付**的中间物走系统 temp;**要交付的东西没有暂存态**。
|
|
125
|
+
> 临时文件一律放系统 temp 且**用完即删**。交付物直接写入工程目录或用户显式指定的路径;引用媒体用原路径。
|
|
126
126
|
|
|
127
127
|
1. **先看清单、再对号**:用户的意图对到某个工具名(拿不准就 `gtrk tool list --json` 核对触发语与输入要求)。
|
|
128
128
|
2. **执行前转述实时计费提示**:先读本次 `gtrk tool list --json` 的 `billingHint`/`pricing`,再把实时结果如实告诉用户;不得引用本文件或记忆中的旧价格。若显示价格暂不可用,就说明最终以服务端结算为准。
|
|
@@ -133,7 +133,7 @@ description: gtrk 单点工具与媒体转换能力的调用向导,覆盖 `gtr
|
|
|
133
133
|
7. **透传高级参数**:命令没为某个云端参数开 flag 时,用 `--param k=v`(可重复)或 `--params-json '<对象>'` 直接透传(如 `image_move` 想指定输出几何 `--param width=1080 --param height=1920`)。
|
|
134
134
|
8. **单发单收、批量靠循环**:一次一份输入;用户要批处理就你逐个循环调。例外是多文件图片工具(`image_classic_template` / `image_vertical_stitch`)——它们的一份输入天然是一组图片(一次任务一次计费),传参顺序即拼装顺序,别把它当批处理。
|
|
135
135
|
|
|
136
|
-
图片比例转换常用形态:`gtrk tool image_canvas_adapt ./photo.jpg --canvas-width 1080 --canvas-height 1920 --canvas-type rectangle --json`。`--canvas-type`
|
|
136
|
+
图片比例转换常用形态:`gtrk tool image_canvas_adapt ./photo.jpg --canvas-width 1080 --canvas-height 1920 --canvas-type rectangle --json`。`--canvas-type` 只接受 `normal`、`rectangle`、`square`;省略画布参数时不替服务端写死默认值。
|
|
137
137
|
|
|
138
138
|
图转运镜可指定运镜方式:`gtrk tool image_move ./photo.jpg --motion zoom_in_center --json`。`--motion` 未传时云端自动选择(构图 + 主体识别 + 随机,同图重跑结果会变);显式指定后同图同参重跑结果一致。合法值 26 个、分三组,用户说「往右推 / 拉远 / 从左往右扫」这类自然语言时按语义对号入座,对不上就问清,别瞎猜:
|
|
139
139
|
|
|
@@ -17,11 +17,8 @@ description: 将用户本地视频或音频(自备配音)转成一个飞书
|
|
|
17
17
|
|
|
18
18
|
## 硬边界
|
|
19
19
|
|
|
20
|
-
> **产物落点纪律(MUST · 全文见随包 `AGENT.md`
|
|
21
|
-
>
|
|
22
|
-
> **MUST NOT** 把原视频或任何大媒体文件复制到 agent 自有工作目录(如用户文档目录下 agent 产品自建的目录、agent 家目录缓存、会话工作区)——需要引用媒体时**用原路径引用**,不做副本;
|
|
23
|
-
> 临时文件一律放系统 temp 且**用完即删**(含中断 / 失败路径)。违者后果 = 用户系统盘被静默吃满(真机事故,非假设)。
|
|
24
|
-
> 交付物(颗粒 HTML / 工程文件 / 派单稿 / 文稿等)SHALL **直接以工程目录内的最终路径为写入路径**,MUST NOT 先写 agent 自有工作目录再拷进工程——**中转本身即违规**,不以「最后拷进去了」免责,**体积不是豁免理由**(2026-09-07 事故里漂掉的是 2.7–6.2 KB 的 HTML)。与上一条的分界:抽帧图这类**不交付**的中间物走系统 temp;**要交付的东西没有暂存态**。
|
|
20
|
+
> **产物落点纪律(MUST · 全文见随包 `AGENT.md` 同名一节)**:唯一 Markdown 产物写入 CLI 返回的 `output` 路径(缺省=源文件同目录)或用户指定的 `--out`;引用媒体用原路径,不复制到 agent 工作目录;临时文件放系统 temp,用完即删。
|
|
21
|
+
> 交付物 MUST NOT 先写 agent 自有目录再拷进工程;中转本身即违规,体积不是豁免理由。
|
|
25
22
|
|
|
26
23
|
- 只接收用户电脑上已存在的视频/音频文件;遇到 URL、平台视频 ID 或“帮我下载后转写”时,要求用户先提供本地文件,不代为抓取。
|
|
27
24
|
- CLI 在本地抽取/转码 16 kHz 单声道音频,只上传音频衍生物;原视频/原音频文件不得上传。
|
|
@@ -35,7 +32,7 @@ description: 将用户本地视频或音频(自备配音)转成一个飞书
|
|
|
35
32
|
|
|
36
33
|
2. **先判用途,再决定带不带 `--json`。这一步 MUST NOT 跳过,也 MUST NOT 无脑恒带。**
|
|
37
34
|
|
|
38
|
-
`--json`
|
|
35
|
+
`--json` 不是单纯的输出格式开关,**它决定服务端用哪个引擎**:
|
|
39
36
|
|
|
40
37
|
| 用途 | 命令 | 落腿 |
|
|
41
38
|
|---|---|---|
|
|
@@ -52,9 +49,7 @@ description: 将用户本地视频或音频(自备配音)转成一个飞书
|
|
|
52
49
|
|
|
53
50
|
可选参数:`--out <file>`、`--lang zh-CN`、`--ffmpeg-path <dir>`、`--reupload`。
|
|
54
51
|
|
|
55
|
-
> 🔴 **恒带 `--json`
|
|
56
|
-
> —— Markdown 只渲染句子,`words[]` 一个字都不被读。2026-09-19 一次 254 条的批量转写因此
|
|
57
|
-
> 有 122 条走错了腿,实测发现。**拿不准就不带**:真需要字级时,消费方(`split` / `subtitle`)
|
|
52
|
+
> 🔴 **恒带 `--json` 会把只想要文字稿的请求也送进厂商字级腿**,且 Markdown 不消费 `words[]`。**拿不准就不带**:真需要字级时,消费方(`split` / `subtitle`)
|
|
58
53
|
> 会明确报错要 `words[]`,那时补跑一次即可;反过来多付的钱收不回来。
|
|
59
54
|
> 用户明确说「要建工程 / 要拆分 / 要字幕」才算「喂工程」;只说「转个文字稿」不算。
|
|
60
55
|
|