AI 情景动画分镜稿生成器——把成片 SOP 第③步(B-roll 底轨阶段)分到 AI_DRAMA 车道的 beat,逐个产**四段朴素描述(故事背景 / 角色 / 分镜 / 原文文稿)+ 独立视觉基调段 + 时长预算**,中英双版;Markdown 外壳默认严格兼容 gitruck-ai-drama-desk 解析器,可直接导入工作台,也可拿去任意外部 AI 漫剧管线(可灵 / 即梦 / Vidu / Veo / Runway / LTX / 本地开源,或 LibTV / OiiOii / TapNow 这类成片 agent 平台)上手用。创作与出片仍在 skill / 外部工作台;工作台导出的 return-v1 包用 `gtrk ai-drama lay` 确定性回填独立 AI 轨。当用户想「上 AI 情景动画 / 做 AI 分镜 / AI 动画描述 / 把这段做成 AI 视频 / 给这段配 AI 情景动画 / 弗洛伊德这段怎么做视频」时使用本 skill。通用拆镜 craft(蒙太奇段分层 / 四段描述结构 / 中英双语 / 时长预算)由本 skill 自持;栏目视觉 DNA(Style Lock)从栏目配置 style.skills 里 produces==AI_DRAMA 的条目解析注入,绝不硬编某栏目风格。凡把口播派单里 AI_DRAMA 段落转成可出片的描述稿,优先用本 skill,别手搓。
npx skills add https://github.com/Gitruck/cli --skill gtrk-ai-drama
用户要求间隔取关键镜头、剩余由实况补齐时,先读 稀疏关键场景与角色参考。其短 beat 窗口、时基、逐镜参考和留空规则优先于下文针对连续 AI 段落的时长预算;不转入通篇 AI 图纸。
把口播派单里分到 AI_DRAMA 车道的 beat,逐个拆成分镜、为每个 beat 产 四段朴素描述 + 独立视觉基调 + 时长预算(中英双版),落到 <project>/ai-drama/<beat_id>.md,再交棒 AI Drama Desk 或任意外部平台出片;标准工作台导出包由 CLI 自动回填时间线。
> 脑手分工:本 skill 负责创作(拆镜 + 注入栏目风格 + 管用户交互),外部工作台负责生成;gtrk ai-drama lay 只消费 AI Drama Desk 的 return-v1 导出包,把已经生成好的片段复制进工程并铺到一条独立 AI 视频轨。该命令不生成内容、不调用模型、不计费,也不改既有 A-roll / BGM / 三条 B-roll 候选轨。
因为责权利要清:无论用户拿去哪个管线,一致性的可移植载体是角色/场景描述,不是某平台的提示词语法("assets model-agnostic, prompts model-specific")。而且下游 agent 成片平台(LibTV / OiiOii / TapNow 等)拿到分镜稿会自己重拆分镜、重写 prompt,角色圣经(三视图)也在那些产品里生成——所以本 skill 不产平台优化提示词、不产角色圣经、不产参考图、不产成片,只产四段可移植描述 + 视觉基调 + 时长,把「怎么出片、怎么保角色一致」交给下游平台。「拼回时间线」不再交给用户手工:AI Drama Desk 的
return-v1 标准包由 gtrk ai-drama lay 确定性回填;其他平台没有标准包时才降级为用户手动回铺。
成片是有序 SOP + 用户检查点,不是并行一把铺。次序:
> ① oralcut 剪口播 → ② split 视觉拆分派单 → ③ B-roll 底轨全铺齐(matrix 铺影视/本地素材 + 本 skill 产稿→外部出片→gtrk ai-drama lay 回填,两条腿同一阶段)→ ④ 全局抽帧检查画面构图(用户确认)→ ⑤ mg 铺 MG(含 ov,最后叠上) → gtrk subtitle lay 上字幕(快速成片模式必做)→ gtrk render 收口
你与 matrix 同属第 ③ 步,MUST 在 MG 之前落位。 理由:AI 情景片段属于底轨 B-roll 画面家族,不是叠加层——整条管线里唯一的叠加层是 MG(含 ov)。MG 的排版决策是「因势象形避主体」、依赖底轨的最终画面构图;若你的片段在 MG 之后才回铺,底轨构图就变了,先产的 MG 是对着「还没有 AI 画面的底轨」做的避让,你的片段落位后必然被避让错位、甚至被 MG 盖住画面主体。
> ⚠️ 工序顺序:AI 情景片段必须先落位;它属于底轨 B-roll,不是最后叠加的图层。之后再做全局构图检查与 MG。
异步等待的口子(你造成的那个):你产完描述后,用户要去外部平台出片、抽卡可能数天。严格串行会把 ④⑤ 无限期卡住,故约定:进 ⑤ 的硬门是「AI 片段已回铺 ∨ 用户明示先跳过」。走「明示跳过」时,下游 /gtrk-mg MUST 把与你的 beat 相邻/重叠区间的 MG 颗粒标记为「AI 回铺后待复查构图」并在收口时复述——你在交代进度时也要把这个代价说清,让用户知道跳过意味着将来可能返工那几颗。
你的下一步:产完描述 → 用户拿去外部平台出片 → 若拿到 AI Drama Desk return-v1 导出目录,立即用 gtrk ai-drama lay 回填;其他平台没有标准包时才降级为用户手动回铺 → 三源齐了进 ④ 全局抽帧检查画面构图(对最终底轨抽帧、用户确认)→ 过了才交棒 ⑤ /gtrk-mg。MUST NOT 直接从你这里跳到 render ——后面还有构图检查与 MG 两步。
gitruck-ai-drama-desk 的 Markdown 解析契约:标题必须含 (beat BXX);两大块必须叫 ## 一、中文稿… / ## 二、English Storyboard…;角色必须用 #### 角色名(备注) 标题;中文镜头必须用 #### 分镜 01 · …,英文镜头必须用 #### Shot 01 · …;元信息必须含 区间总时长:track_st … → track_ed … ≈ … 秒。镜头、粗体行、项目符号角色、## 中文 / ## English、工程时间位 都不是等价写法。人读友好不能牺牲机读契约。> 产物落点纪律(MUST · 全文见随包 AGENT.md 同名一节):
> 交付物 MUST NOT 先写 agent 自有目录再拷进工程;中转本身即违规,体积不是豁免理由。
> 分镜稿只落工程目录(<project>/ai-drama/<beat_id>.md)或用户显式指定处;
> MUST NOT 把用户媒体(毛片 / 成片 / 预览 / 外部平台出的片段)或任何大媒体文件复制到 agent 自有工作目录(如用户文档目录下 agent 产品自建的目录、agent 家目录缓存、会话工作区)——需要引用媒体时用原路径引用,不做副本;
> 临时文件一律放系统 temp 且用完即删。交付物直接写入工程目录或用户显式指定的路径;引用媒体用原路径。
视觉风格不是本 skill 预设的,是从栏目配置里解析出来的。 解析链路(与 gtrk-splitter 的车道→生产 skill 解析同源):
--column <id> 指定,或本地 config 的 defaultColumn;配置文件在 ~/.gitruck/columns/<id>.json。本 skill 无 gtrk 命令,直接读这个 JSON 文件(同 /gtrk-style-maker 的做法)。style.skills[],逐条把 produces 归一(历史别名如 RRV_MG→MG 等按归一规则处理),取 produces == "AI_DRAMA" 的条目。ref(指向一个 skill 目录/资源)→ 读该 skill 的 Style Lock / 风格资产(通常是它 references/ 下的 style-lock、theme-accent、影视参考锚点等),把其中的底色 / 单点强调色 / 影视参考 / 材质 / 栏目禁令当作本次生成的视觉 DNA,注入 ①视觉基调段与各描述。routing:"none" → 跳过(显式管线外)。> 举例(仅示意解析机制,非硬编):real-roam-guide 栏目配置里 style.skills 有一条 {produces:"AI_DRAMA", ref:"…/ai-drama-prompter"} → 解析到它 → 读它的 style-lock(黑白单红那套)注入。换个栏目、换个 ref,注入的就是另一套风格。本 skill 正文里不写死任何一套具体风格。
split/dispatch.json(gtrk split 产物)。没有 → 先回 /gtrk-splitter 拆分派单。dispatch.ai_drama[]:读 <project>/split/dispatch.json 的 ai_drama 数组。每条形如 {beat, narrative?, theme?, emotion_stage?, platform?, shot_count?, track_st, track_ed}:narrative / theme / emotion_stage / platform / shot_count 全可选,缺则按文稿内容与位置推断(推断出的值在元信息处标注「推断」)。track_st / track_ed = 该 beat 在时间线上的起止秒,给你时长预算(据此定区间总时长、蒙太奇段数、各镜建议秒数;本 skill 不改时码、只读)。<cwd>/ai-drama/<自拟标题>.md)。beat id,对应文稿去投影视图 / transcript 里按该 beat 的 span 读原文(读懂内容拆镜、并抄进 ⑤ 原文文稿区块)。用户直投时用他给的文本。track_st→track_ed),但不必把每一镜的秒数抠死——AI 平台交付本就不保证逐帧准,最终对齐由回填这一步兜:走 gtrk ai-drama lay 时它按窗口顺排、末镜尽量吸收到 track_ed;素材短于窗口就留空档(MUST NOT 拉伸/循环去填满),没有标准包才由用户手动拼。
视觉基调既独立成段(作权威源),又融入各描述(防漂):
中英分块、不逐段交错:产物分成两大块——先一整块中文稿(元信息 + ①②③④ 中文 + ⑤ 原文文稿),再一整块 English Storyboard(① Style Lock + ②③④ 英文)。这样用户按目标平台整块复制:中文平台(可灵 / 即梦 / Vidu / 通义)拷中文稿、英文平台(Veo / Runway / LTX / Luma)拷英文稿,不用逐行挑出中/英。别在每个小节里 【中文】…【EN】… 交错(那样复制粘贴要一句句抠)。
英文块不是直译,要做这些原生化:
Vienna, 1920,不是 1920 年维也纳。Sigmund Freud / Lacan,不是拼音。track_ed - track_st,据此定蒙太奇段数与建议分镜数。track_st/track_ed。Step 1 · 通读该 beat 文稿:判有无历史/时代锚点(年份 / 地点 / 人物 / 事件)、主体是谁、情感落点在哪、叙事功能与阶段。dispatch 缺的参数在此推断并标注「推断」。
Step 2 · 拆蒙太奇段与镜:按 craft A 判是否长文段需分蒙太奇段,段内按情感颗粒切镜,定各段镜数(文稿长度 × track 时长双校准)。
Step 3 · 锁风格:按「业务分离」节解析栏目 Style Lock(读配置 → 取 produces==AI_DRAMA 条目 → 读其风格资产);无则取中性默认。组装成 60–120 字/词的 CN + EN 双语 ①视觉基调段。
Step 4 · 写四段描述(中英分块):先出中文稿(② 故事背景末句锁调 → ③ 角色结构化 + 禁变项 + 质感落点,复现理论家 pin 复用同段文字 → ④ 分镜每镜前缀复述基调 + 建议秒数 + 对应原文句 + 蒙太奇级意图 → ⑤ 原文文稿中文逐句不翻译),再整块出 English Storyboard(① Style Lock + ②③④ 英文原生化,不含 ⑤)。中英分两大块、不逐段交错(craft C)。
Step 5 · 校验后落盘:先把每个 beat 的候选稿写到系统 temp,运行随 skill 分发的 scripts/validate-storyboard.mjs <候选稿.md>;退出码为 0 才写到 <project>/ai-drama/<beat_id>.md。失败就按输出逐项修正,MUST NOT 把未通过稿件落进工程。校验器不可用时,至少逐项执行下面「解析器硬契约」与交付前自检。用户直投单段时同样先校验,再落到用户指定的工程路径。临时稿无论成功失败都删掉。
顶部放一次责权利声明 + 元信息(不分语言);然后 ## 一、中文稿 一整块、## 二、English Storyboard 一整块,用户整块复制。
下列是 gitruck-ai-drama-desk 的机器接口,不是排版建议:
beat <beat_id>,例如 (beat B03)。- 区间总时长:track_st 37.685 → track_ed 65.665 ≈ 27.980 秒;不要拆成「工程时间位」和「目标时长」。## 一、中文稿、## 二、English Storyboard 开头;不要简写。否则英文 ①–④ 会被当成中文段并覆盖前面的中文段。#### <角色名>(<备注>) 开头,描述写在下一段;不要把角色写成 - 男性:…… 项目符号。#### 分镜 <数字> · <标题> |建议 ≈<秒数>s |段:… |场景:… |角色:… |对应原文:…;英文镜头头必须匹配 #### Shot <数字> · <title> |≈<seconds>s |segment: … |scene: … |cast: … |source lines: …。必须用 Markdown 四级标题,中文关键词是「分镜」而不是「镜头」。〔本镜视觉基调〕 开头,解析器据此填 stylePrefix;不要写成 - 视觉基调前缀:…… 普通项目符号。① 的负面词必须单独使用 > 禁忌:…,英文用 > Avoid: …,否则会被吞进 Style Lock 正文而不是负面字段。|段:… / |segment: … 字段;④ 内不要另插 #### 蒙太奇段… / #### Montage… 标题,解析器会把它吞进前一镜描述。校验命令(从本 SKILL.md 所在目录解析相对路径):
bun scripts/validate-storyboard.mjs <候选稿.md>
通过时输出单行 JSON 并退出 0;不通过时逐条列出违约项并退出非零。它校验的是生产端硬契约;工作台仍是最终权威,仓库可用时可再用其 server/lib/parse.ts 做回归。
# AI 情景动画分镜稿 · [自动标题](beat <beat_id>)
> [责权利声明:本稿只描述意图与时长;角色一致性依赖下游角色资产机制;出片/拼回在用户手里]
## 元信息
- 区间总时长:track_st→track_ed ≈ X 秒
- 建议分镜数:N 镜(含 M 个蒙太奇段)
- 复现角色:<角色名>(栏目级·pin 复用 / 本片新建)…
- 叙事功能 / 情感阶段:xxx(用户指定 / 推断)
- 目标平台:xxx(缺省 = 通用)
======================================================================
## 一、中文稿(喂可灵 / 即梦 / Vidu / 通义)
======================================================================
### ① 视觉基调(Style Lock)
> 权威源,供各分镜前缀复述。来源:<解析到的 ref skill> / 中性默认
[底色 / 中性调 / 单点强调色 / 材质 / 影视参考,60–120 字]
> 禁忌:[通用 AI slop 兜底 + 栏目专属禁令]
### ② 故事背景描述
[时代 / 地点 / 世界观 / 场景。末句锁调:整段以……色彩与质感呈现。]
### ③ 角色描述
#### <角色名>(栏目级·pin / 本片新建)
脸型 / 发型 / 瞳色 / 服装 / 标志物 + 禁变项(不留长发、不换西装…)+ 一句质感落点。
### ④ 分镜描述
#### 分镜 01 · [标题] |建议 ≈Xs |段:<蒙太奇段名> |场景:xxx |角色:xxx |对应原文:第 a–b 句
〔视觉基调前缀复述一句〕+ 主体在做什么具体动作 + 蒙太奇级镜头意图(不逐帧硬控)。
#### 分镜 02 · …
### ⑤ 原文文稿(本区间口播原文,不翻译)
1. [第一句中文原文]
2. [第二句中文原文]
…
======================================================================
## 二、English Storyboard (for Veo / Runway / LTX / Luma)
======================================================================
### ① Visual Tone (Style Lock)
> Authoritative source; restated as a prefix in every shot. Source: <resolved ref skill> / neutral default
[palette / neutrals / single accent / texture / film references]
> Avoid: [generic AI slop floor + column-specific bans]
### ② Background
[era / place / world / setting. Closing line locks palette & texture.]
### ③ Characters
#### <name> (column-pinned / new to this film)
face / hair / eyes / wardrobe / signature prop + do-not-change + one line on how they render in the tone.
### ④ Shots
#### Shot 01 · [title] |≈Xs |segment: <montage segment> |scene: xxx |cast: xxx |source lines: a–b
〔restate style prefix〕+ subject's concrete action + shot intent (montage-level, not frame-locked).
#### Shot 02 · …
> ⑤ 原文文稿只在中文稿里;English 块到 ④ Shots 为止。
栏目配置里没有 produces==AI_DRAMA 的条目时,别停、别硬套别的栏目,用这套克制、通用、不特化任何栏目的兜底写 ①视觉基调段:
> 中性 Style Lock:影视级自然主义画面,真实可信的光源(窗光 / 实用光 / 自然天光,不炫技),克制稳定的镜头语言(固定或缓慢推拉摇,无手持抖动 / 无广告级动态运镜 / 无无人机炫技),近单色到低饱和的克制调色(不追 HDR、不追霓虹),胶片颗粒质感。忌塑料 3D 渲染、忌动漫二次元、忌过度戏剧化打光。
> EN: Cinematic naturalism, believable practical light sources (window / practical / natural daylight, no showing off), restrained stable camera language (locked or slow dolly/pan/tilt, no handheld shake, no ad-grade dynamic moves, no drone stunts), near-monochrome to low-saturation restrained grade (no HDR, no neon), visible film grain. Avoid plastic 3D render, anime, and over-dramatic lighting.
中性默认下不设单点强调色 / 不指定影视导演锚点(那些是栏目资产)。用完顺带提醒用户:想要这条栏目有自己的 AI 情景动画视觉 DNA,去 /gtrk-style-maker 沉淀一套 AI_DRAMA 风格资产并登记进 style.skills,之后每次生成都会自动注入。分镜稿与提示词层也可查推荐目录(公约 §三‴):gtrk skills recommend --scene ai-drama,装完用 gtrk skills add <owner/repo> 登记;本 skill 正文不点名任何仓。
禁忌行(写进 ①)分两层:
产物要显式声明责权利,让用户拿去任何管线都心里有数:
> 本稿只描述意图与时长。 角色一致性依赖下游管线自带的角色资产 / 参考图机制(角色圣经 / 三视图在下游产品里生成)——把本稿的角色描述喂给有角色资产库的平台(可灵主体库 / OiiOii 角色设定表 / LTX Elements / LibTV 三视图 等),一致性由它保。若喂给没有角色资产机制的裸文生视频 API,角色会逐镜漂脸——那是该管线的短板,不是本稿的责任。出片、拼回时间线,都在你手里。
scripts/validate-storyboard.mjs 已对每个候选稿返回 ok:true,或在校验器不可用时完成了「解析器硬契约」逐项核对?描述稿落盘后别收工,把接力讲清(但这一步的「手」在外部平台和用户手里、必须停下等用户):
<project>/ai-drama/<beat_id>.md 里的描述,去任意外部平台出片——中文版喂可灵 / 即梦 / Vidu;英文版喂 Veo / Runway / LTX / Luma;本地开源(Wan / Hunyuan 等)或成片 agent 平台(LibTV / OiiOii / TapNow)皆可,按下游平台的角色资产机制上传角色描述保一致。 gtrk ai-drama lay --project "<工程目录>" --desk-project proj-xxxx --desk-project proj-yyyy --json
命令自己解析 id → 导出包目录,走两条确定性路径:① 工作台服务可达就问它;② 服务没起就读 ~/.gitruck/ai-drama-desk.json 的落脚点。两条都不通会报错并给出路。
> ⚠️ 拿到 id 之后 MUST NOT 去磁盘上找导出包(find / ls -R / 通配一律禁止)。解析不出来就如实报,请用户启动工作台或直接给路径。
> 零命中时命令会列出「已查过哪些数据根」:源码部署与打包部署的数据根不同,项目找不到多半是它在另一个部署里,不是丢了。
已经手上就有目录路径(或用的是非标准平台)时,仍可用 --package "<exports/aidrama>",两者可混用、按路径去重。
命令会先按当刻口播工程重投影 beat 窗口,再把所有镜头复制到 <gtrk目录>/assets/ai-drama/<slug>/,共用一条新的 video_track;每个 beat 从起点顺排,最后一镜吸收到 beat 终点。既有 A-roll、BGM 与 B-roll 轨零改动。若已铺 AI 轨被用户手调过,缺省拒绝覆盖;只有用户明确同意丢弃手调时才加 --replace-all。
track_st→track_ed。AI 出片仍是外部异步、用户驱动;未拿到完整片段前要停下等用户,别替他假装出片 / 回轨完成。/gtrk-mg 把 MG(含 ov)叠上 → 最后才 gtrk render 收口。⚠️ MUST NOT 从你这里直接跳到 render;先完成全局构图检查与 MG,再进入字幕和渲染。
> 原则:agent 替用户跑 CLI / 接力 skill,用户只对话。但 AI_DRAMA 车道天然有「用户去外部平台出片 + 手动拼回」的手工环节——那部分是外部的手,无法替跑;除此之外的解析、生成、落盘、交代,全由你(脑)一次做完,别让用户自己去拼描述。
gtrk patch,不要裸手改 JSON跑完之后要微调某个片段(挪位置 / 改时长 / 切开 / 改音量)时,一律用 gtrk patch:
gtrk patch move --project <dir> --clip <clip_id> --to 5.0
gtrk patch trim --project <dir> --clip <clip_id> --out -1s
MUST NOT 直接编辑 .gtrk 的 JSON。 片段时码是两套并存的(clip_st+clip_ed 与
clip_st+duration):改一份不改另一份,客户端优先读 clip_ed、后端又不强校验它 ⇒
没人报错,成片却用了陈旧出点。gtrk patch 替你做恒等式同步 + 帧对齐 + 写前全档校验。
> 参数手册在 AGENT.md 的「元素级编辑:gtrk patch」一节与 README 命令参考。
> 本节只指路不搬手册 —— 搬过来就会长出会漂移的副本。
Take gitruck/gtrk-ai-drama from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.