Skip to content
Video & Audio
Skill

/gtrk-splitter

视觉拆分派单器——把一条已剪好的口播工程(gtrk + transcript)拆成 beat 级「视觉拆分稿」,为每个连续文稿段指定唯一主层(A_ROLL 真人出镜 / MG 动态图 / AI_DRAMA 再现 / FILM_BROLL 影视素材)+ 辅助层,产机器可消费的派单清单(MG 槽位 / B-roll 检索队列 / AI 动画队列),要成片时再交棒后续铺轨。当用户想「文稿视觉化拆分 / 视觉拆分稿 / beat 时间线 / 派分镜 / A-roll B-roll 分配 / 哪些段做动态图·哪些做 AI 情景动画·哪些用影视素材 /

From plugin
gtrk
96924 skills4 commands

Claude Code

$ npx -y skills add Gitruck/cli --skill gtrk-splitter --agent claude-code

SKILL.md

gtrk-splitter.SKILL.md
name: gtrk-splitter
description: 视觉拆分派单器——把一条已剪好的口播工程(gtrk + transcript)拆成 beat 级「视觉拆分稿」,为每个连续文稿段指定唯一主层(A_ROLL 真人出镜 / MG 动态图 / AI_DRAMA 再现 / FILM_BROLL 影视素材)+ 辅助层,产机器可消费的派单清单(MG 槽位 / B-roll 检索队列 / AI 动画队列),要成片时再交棒后续铺轨。当用户想「文稿视觉化拆分 / 视觉拆分稿 / beat 时间线 / 派分镜 / A-roll B-roll 分配 / 哪些段做动态图·哪些做 AI 情景动画·哪些用影视素材 / 给这条口播派单」时使用本 skill。凡涉及把口播成片拆成分镜派工,优先用本 skill 驱动 gtrk CLI 的 `split` 命令,绝不手写时码、绝不抄原文定位。

视觉拆分派单器(gtrk-splitter)

把一条**已经剪好的口播工程**(`gtrk` 工程文件 + `transcript.json` 句级词表),拆成一份可直接派工的 **beat 级视觉拆分稿**,再交给 `gtrk split` 校验落地,产出机器可消费的派单清单。**CLI 是手(投影/校验/落地/写时码),你是脑(切 beat、选 lane、写 handoff)。**

> **本 skill 已含你需要的全部信息**(流程、字段契约、枚举、拆分方法论、铁律)。字段细节与升级规则读 `references/field-schema.md`;模仿文档形态读 `references/example-visual-split.json`(《过拟合》20-beat 金样,机器 JSON)与 `references/example-visual-split.md`(同一金样的人读版式参照)。

三条铁律(先记死,再动手)

1. **只引用视图里存在的 utterance id**:beat 的文稿范围 = `span:{from:"u0007", to:"u0011"}`(utterance id 区间)。id 必须来自 `gtrk split --project` 导出的投影视图,**不许臆造**(`u9999` 一定被硬拒)。 2. **绝不抄原句文字作定位**:原文片段会诱发幻觉、也会和实拍漂移。一律用 utterance id 区间。 3. **绝不自造/推算任何时码**:拆分稿里**不写任何秒级时码字段**。轨道时码由 `gtrk split` 落地时现场投影写入 `struct_meta.split` / `dispatch.json`。你只管语义(lane / 叙事功能 / handoff),时间线交给 CLI。

★ MG 槽位的视觉职能 `visual_job`(必填)

每个 MG 槽位(含 overlay aux)都要回答一个问题:**这段为什么要动画。** 四档:

| 取值 | 判据 | 还要填什么 | |---|---|---| | `statement` | 就一句话 / 一个词 / 一个标题 | — | | `relation` | 出现**对比 / 并置 / 因果 / 包含 / 递进 / 聚合 / 循环** | `visual_brief` 必填 | | `data` | 具体的量、步骤或拓扑 | — | | `decor` | 不承载信息(转场 / 角标) | — |

⚠️ **判据是「这段的意思里有没有第二个东西与它并置」,不是「用不用文字」。**

一块「温柔—坚定 / 和善—有立场」的并置面板**是纯文字画的**,但它表达的是对照关系 ⇒ `relation`,**不是** `statement`。第一档刻意叫 `statement` 而不叫 `text`—— 叫 `text` 会让「它是文字做的」直接滑成「它是 text 档」,把结构化排版拍平成一张字卡。

`visual_brief`(`relation` 档必填)

一句话说清**这个关系靠什么视觉手段成立**。

⚠️ **它 MUST NOT 被要求是非文字的**:「两列并置、中间破折号连起来、右列更重」 与「三个齿轮咬合」是**同一类合格答案**。要求「必须非文字」会把用排版画关系这条路堵死, 而那恰恰是要保住的东西。brief 回答的是「这个关系怎么看得出来」,不是「用不用字」。

想不出具体视觉的,**诚实地退回 `statement`**——那本身就是正确结果。

全片一个 `relation` / `data` 都没有时

顶层要具名 `mg_visual_job_note`,一句话说明为什么这条片子通篇只有单一陈述。 纯字卡包装的口播片是**合法**形态,本条只要求它是个有意识的选择。

⚠️ 这里**没有比例阈值**,也 MUST NOT 有:「不超过 N%」给不出依据、会误伤合法极端形态、 还能被「宣告一个例外槽位」绕过。「一个都不需要」是可以要求交代的**判断**。

⚠️ 派单这一步 MUST NOT 引用具体模板

派单产物里出现 `tfx-*` 形状的模板 id ⇒ **判红**。

理由是**锚定**:判「这段要什么」的那一步若看得见模板库,会**从「库里有什么」倒推 「这段需要什么」**。正确的形态不是早点判,是**判的时候那个选项根本不存在**。

写「大字标题从左侧滑入」这类描述是合格的;写 `tfx-title-typeline` 不是。

⚠️ **如实说射程**:本条能做到的只有**工具面不提供 + 产物留痕判红**两件。 它**拦不住**「同一会话里更早读过 MG 图纸、脑子里已经装着那批模板」——那种锚定不留痕,也判不出来。 别把它当成杜绝;它降低的是「顺手去库里找」的概率,不是消灭锚定。

前置:确认工程 + CLI

  • 需要一个 **oralcut 产物目录**(跑过 `gtrk oralcut` 得到的目录),里面有 `gtrk/project.gtrk` 与 `transcript/transcript.json`。没有 transcript(旧任务)→ 让用户用新版本重跑 `gtrk oralcut`(恒出 transcript)。
  • `gtrk` 命令找不到 → 让用户装 `npm i -g @gitruck/cli@latest`。
  • 用户可以先在客户端手调切点再保存——**每次拆分都基于「发起那一刻」的时间线投影**,所见即所得。
  • **下游后果**:落地写进 `dispatch.json` 的 `track_st/track_ed` 因此是**那一刻的快照**。不用担心它变旧——下游消费方(`gtrk mg` / `gtrk matrix`)每次消费都**自己现场重投影**(`transcript × 当刻 .gtrk`,与本命令同一段代码),**用户之后再微调口播轨无需回来重跑 split**。只有**拆分稿本身**要改(beat 划分 / lane / handoff 变了)才重跑。

完整流程(取视图 → 拆分 → 落地 → 修正循环 ≤3 轮)

> **产物落点纪律(MUST · 全文见随包 `AGENT.md` 同名一节)**: > 交付物 MUST NOT 先写 agent 自有目录再拷进工程;中转本身即违规,体积不是豁免理由。 > 一切产物(拆分稿 / 派单 / 成片 / 预览 / 素材 / 工程文件)只落**工程目录**或**用户显式指定的输出路径**; > **MUST NOT** 把成片、预览或任何大媒体文件复制到 agent 自有工作目录(如用户文档目录下 agent 产品自建的目录、agent 家目录缓存、会话工作区)——需要引用媒体时**用原路径引用**,不做副本; > 临时文件(抽帧图等)一律放系统 temp 且**用完即删**。交付物直接写入工程目录或用户显式指定的路径;引用媒体用原路径。

1. 取投影视图(你的唯一创作输入)

gtrk split --project "<oralcut产物目录>" --json
  • 产 `<目录>/split/view.json` 并在 stdout 回一行结果 JSON。**读 `view.json` 文件**(大稿更稳),不要只解析终端。
  • 视图结构:`{transcript_hash, projected_at, utterances:[{id, text, track_st, track_ed, dropped, kept_words, total_words}]}`。
  • `id` = 你要引用的 utterance id(如 `u0007`)。
  • `text` = 该句文字(**只用来读懂内容、判断在哪切 beat**,绝不复制进拆分稿)。
  • `dropped:true` = 这句在当前时间线上已被剪掉——**别把它划进任何 beat 的 span**(划了落地会跳过/收缩)。
  • `track_st/track_ed` = 轨道时码(**只读,帮你感知节奏/时长**,不要抄进拆分稿)。
  • **透传 `transcript_hash`**:拆分稿的 `transcript_hash` 必须原样等于视图里的 `transcript_hash`(hash 链,错版硬拒)。

2. 通读全片,按视觉职责切 beat

按下面「拆分方法论」把连续的 utterance 分成若干 beat。一个 beat 覆盖**连续的 id 区间**(可跨多句),但**不能跨前后两处拼接**。beat 之间允许留空隙(未覆盖段默认 A_ROLL 底轨直出),**不许重叠**。

**抽帧确认底轨画面(凡毛片可能已含视觉包装时必做,勿只凭文稿派单)**:view.json 只给你文字,看不见画面——但毛片未必是素的。**二次过 / 补 ov 场景**(毛片本身是已烧入 MG、AI 情景动画或其他包装的成片再加工)尤其危险:只凭时码派 overlay 会撞上已有包装叠罗汉。姿势:对候选挂点(尤其打算派 `overlay` 的句区间)用本地 ffmpeg 按 `track_st` 抽 1 帧看一眼(`ffmpeg -ss <秒> -i <毛片> -frames:v 1 "<系统temp>/<句id>.jpg"`,成本≈0;抽帧图是临时文件——落系统 temp、用完即删,**别落 cwd / agent 自有目录**),确认该处画面性质——**裸口播 → 正常派;已有包装 → 避开该区间或另选挂点;拿不准 → 列给用户裁决**。首次过全素毛片可免;一旦毛片来历含「粗剪成片 / 待 ov 补充 / 二次过」字样,此步为硬门。抽帧顺带看清真人主体位置与画面明暗,写进 beat 的语义上下文,供下游产颗粒时构图避让。

> 📌 **这一步与 SOP ④ 的全局抽帧检查不是同一件事,两者都要**:这里抽的是**毛片原始画面**(派单前,判该处是裸口播还是已有包装);④ 抽的是**B-roll 三源全铺齐后的最终底轨**(产 MG 前,供排版避让)。前者防「派单派到包装上」,后者防「MG 对着不完整底轨做避让」。

3. 写拆分稿 JSON

按 `references/field-schema.md` 的契约写。骨架:

{
  "contract_version": "v1",
  "transcript_hash": "<原样透传视图里的 transcript_hash>",
  "beats": [
    {
      "id": "B01",
      "span": { "from": "u0001", "to": "u0003" },
      "base_track": "真人出镜",
      "lane": "A_ROLL",
      "narrative": "mirror-hook",
      "container_stage": "none",
      "rhythm": "平稳 -> 停顿",
      "visual_task": "主持人直视镜头带观众做实验",
      "irreplaceability": "必须真人出镜",
      "aux_layers": [
        { "type": "quote-card", "mount": { "from": "u0001", "to": "u0002" }, "role": "金句提炼", "necessity": "强建议" }
      ]
    }
  ],
  "queues": { "a_roll": [], "mg": [], "ai_drama": [], "film_broll": [] }
}

关键:

  • `lane` 四选一 `A_ROLL | MG | AI_DRAMA | FILM_BROLL`;`base_track` 三选一 `真人出镜 | 口播继续 | 旁白主导`。
  • `irreplaceability` 四选一 `必须真人出镜 | 优先 MG | 可被 B-roll 替代 | 可降级处理`。
  • **handoff 按 lane 分型**(校验器会硬查):
  • `MG` → `handoff:{visual_job, visual_brief?, slug_hint?, theme?, bg?, duration_hint}`,**`visual_job` 与 `duration_hint`(秒)必填**(`visual_job` 见上节;`relation` 档另需 `visual_brief`);可选 `category`(overlay 透明叠加/fullscreen 不透明满屏,裁决⑩,供色带分层,详见 field-schema)。
  • `FILM_BROLL` → `handoff:{queries:[...非空], shots?, per_shot_sec?, exclude?, anchors?}`,**`queries
Read more
@gitruck
Ships withgtrk

一条命令,把口播毛片变成可二次精修的剪辑工程。

Stars on GitHub

Momentum

stars in total
969
Star history of Gitruck/cli on GitHub, a chart by star-history.com

Other skills on gtrk.

openspec-apply-change

openspec-apply-change

Implement tasks from an OpenSpec change. Use when the user wants to start implementing, continue implementation, or work through…

@gitruck@gitruckInstall Skill
openspec-archive-change

openspec-archive-chang…

Archive a completed change in the experimental workflow. Use when the user wants to finalize and archive a change after…

@gitruck@gitruckInstall Skill
openspec-explore

openspec-explore

Enter explore mode - a thinking partner for exploring ideas, investigating problems, and clarifying requirements. Use when the…

@gitruck@gitruckInstall Skill
openspec-propose

openspec-propose

Propose a new change with all artifacts generated in one step. Use when the user wants to quickly describe what they want to…

@gitruck@gitruckInstall Skill
gtrk-ai-drama

gtrk-ai-drama

AI 情景动画分镜稿生成器——把成片 SOP 第③步(B-roll 底轨阶段)分到 AI_DRAMA 车道的 beat,逐个产**四段朴素描述(故事背景 / 角色 / 分镜 / 原文文稿)+ 独立视觉基调段 + 时长预算**,中英双版;Markdown…

@gitruck@gitruckInstall Skill
gtrk-composite

gtrk-composite

合成层包装(合成颗粒)——粗剪、B-roll、字幕都定了之后,把选定时间窗做成「合成」:一段时间内的整个画面由一颗代码颗粒接管(画中画拼贴、逐句换画面、对照并排、并列卡片、字幕排版),讲者与 B-roll 作为槽位画进去。三种入口:整片铺满 / 让 AI…

@gitruck@gitruckInstall Skill

More skills from other plugins.

captions-overlay

captions-overlay

Overlay doctrine for captions in HyperFrames videos — the caption MODEL (drop / rail / embed) and the rule that captions are an…

@heygen-com@heygen-comInstall Skill
acestep

acestep

AI music generation with ACE-Step 1.5 — background music, vocal tracks, covers, stem extraction for video production. Use when…

@calesthio@calesthioInstall Skill
seedance-antislop

seedance-antislop

This skill should be used when a Seedance 2.0 prompt contains generic AI filler, hollow superlatives, vague cinematic language,…

@emily2040@emily2040Install Skill

Questions about gtrk-splitter.

Which coding agents can use gtrk-splitter?
gtrk-splitter installs in Claude Code, Codex, Cursor, Gemini CLI, GitHub Copilot, OpenCode and Windsurf with the skills CLI, using each agent's flag shown on this page. Flowy's auto-invocation, which fires a skill when your prompt matches, runs in Claude Code only.