Generate videos in CATIMATION(唯一视频入口 · 分级调度)
When the user wants a video, pick the output surface first: generate_video
(single shot, delivered straight into the chat) or the video_workbench_*
tools(「生成视频」工作台页:多卡批量、逐卡改参数、用户看着卡片渲染)。两者都在
catimation MCP server 上,共用本 skill 的分级与提示词纪律。走 generate_video 时:
It submits the render and blocks for roughly 75s to catch
fast completions and early failures. It may return DONE/FAILED, or
STILL RUNNING + taskId; only in the latter case continue with check_video_task
long-polls until terminal. Never sleep and never resubmit the same render. The user
watches a live progress bubble; the finished MP4 plays inline in the chat, is saved
to a local file, and lands in the app history page.
本 skill 是视频生成的唯一顶层编排者。 其它 skill(导演/分镜/工艺/QA)都由这里
按任务分级选择性加载;任何下游 skill 不得反过来重跑路由或重新编排本流程。
STEP 0 — 任务分级(先定级,再加载;技法勿滥载)
STEP -1:这是纯文本任务吗? 写剧本、拆脚本、拆批次、整理文件、列镜头清单、
把已有分镜换个格式、改一段文字 —— 这些一个 skill 都不要加载,也不进分级,
直接做完交付。它们本来是三分钟的事,套上分级和确认闸门会拖成几小时。
用户说「快点」「简单弄一下」「先给我看看」时同理。
只有真要提交生成任务时,才继续往下看分级表。
默认进入快速模式;只有命中升级条件才升级。定级后把执行状态记成一份 routing receipt
(task_level / direction_confirmed / spec_confirmed / prompt_engineered / qa_completed / generation_attempts):有专属素材夹(见「角色片 / 多镜」第 5 条)时写进
该夹的 receipt.json,每完成一步就更新;没有素材夹的一次性任务至少在回复里用一行复述它。
每读完一份大 skill(提示词底座 / 结构叶子 / 镜头设计编排器)先回读 receipt 再动手 ——
两万字进上下文最容易把它冲掉,读完只剩模板、忘了锚点和已确认的规格就是这么来的。
已完成的步骤不再重复执行:规格确认过就不再问、提示词写好就不再重写、QA 做过就不再重抽。
提示词底座:要真写 Seedance 提示词时才载。 出片、改写视频提示词、Seedance
语法问答 —— 这些确实需要底座,不必等用户点名。但纯文本任务不载(见上面 STEP -1),
只问参数价格报错的也不载。
底座三个同级,但按 model 只载一个。 sd2-pe、sd25-pe 与 wan3-cinematic-30s
在路由表里平起平坐,「同级」说的是地位,不是要同时塞进上下文 —— 每个视频任务都
全量读一遍是纯浪费,而且套模板本来就只能套一套。
- model 是
2.5(默认,模型未知时也按它)→ 载 sd25-pe
- model 明确是 2.0 家族(
2.0 / 2.0-fast / 2.0-mini)→ 载 sd2-pe
- model 是
wan3(万相 3.0)→ 载 wan3-cinematic-30s
之所以默认 2.5:它是唯一支持 taskMode 编辑 / 延长、30 秒时长和 50 份素材的档位。
只在真要写 2.0 的八大要素公式时才去读那一份。三个都不占技法名额。
万相那条底座另带两个按题材的专项叶子(产品 TVC、情绪对白戏),由底座自己按需
引出 —— 别从这里直接跳过去载。
下文凡写 sd2-pe 的纪律(素材绑定语法、多镜拆卡、资产门、一镜一运镜)在另外
两个底座上一字不改地成立,换底座不换纪律。八大要素、12 项内容、五大必备块讲的是
提示词该覆盖哪些内容,同样与模型无关 —— 底座之间不同的是语法与排版,不是
要不要写清主体、镜头、光线、音效。
路径 A 仅限简单、单镜的轻量连续任务,可由底座独立完成;复杂、多镜、混合媒介或
需要展开导演/作品参考任一命中即进入路径 B,并加载结构叶子
cinematic-prompt-format。路径 B 条件优先于生成/编辑/延长/组合等任务类型。
下文「对症加载 / 别自行放大」同样适用于该结构叶子。
这个结构叶子三个底座通用。 它名字带 seedance 是历史命名 —— 正文里没有一个
模型参数,只有 12 项内容清单、真人/2D/3D 媒介 profile 与语言纪律,换哪个上游都成立。
⚠️ 真正不通用的是写死了模型数字的那些:seedance-video-craft 里的
「4–15s」「9 图/3 视频/3 音频」「1080p 仅满血 2.0」「21:9」对万相全是错的
(万相是 2–30s、10/5/5、没有 21:9)。判据是有没有写死模型数字,不是名字带不带
seedance。与模型无关的技法(表演、光位、连续性、物理、负向控制)两边通用,
照常按症状挑。
分镜底座:真要开拍多镜时才载。 任务确定要产出一条多镜片子(不止一个镜头、
一板要跑的卡片、一个系列)时,再加载 shotlist-builder —— 它管镜头行怎么切、哪几行
合成一条 4–15s 提示词、要不要落成一张可搜索的 HTML 总表。它只做规划与交付物,
生成仍回本入口。
这几种不载(它们是纯文本或单次交付,套上四阶段对表闸门只会把三分钟拖成几小时):
拆脚本、拆批次、整理文件、列个镜头清单、把已有分镜换个格式、单镜「让这张图动起来」、
用户说「快点 / 简单弄一下」。拿不准就先不载,用户觉得不够正式再升级 ——
反过来先走完闸门才发现他只要张表,那些等待要不回来。
| 模式 |
典型请求 |
自选技法预算 |
默认动作 |
| 快速 |
「让这张图动起来」「生成5秒海浪」单镜简单请求 |
0 个 —— 入口 + 提示词底座就够 |
路径 A,合理默认,直接生成,快速 QA |
| 标准 |
单人物表演、简单电影感、带参考图的单镜 |
1 个对症技法 |
按一个主要风险挑技法,视觉 QA |
| 专业 |
武打/多人/参考复刻/复杂运镜/跨镜一致性 |
2 个对症技法,另必载 director-orchestrator |
13 维按需展开,视觉+内容 QA |
| 制片 |
要一条能直接发出去的成片:拼接、配乐、字幕、交付规格齐全 |
按阶段加载,禁止一次全量 |
移交 film-studio 门控流水线 |
两个底座不占技法名额。 提示词底座(有视频提示词就载,按模型选 sd2-pe 或
sd25-pe)与 shotlist-builder
(有跨镜/跨图连续性就载)是自动触发的底座,不是「对症技法」;上表限的是自选技法
数量。连续任务里两个底座同时在场是正常的,不算超预算。
升级条件(仅此四类,别自行放大): ① 明确的人物演技/复杂动作/武打;
② 参考图·视频·电影的风格复刻;③ 跨镜/系列的角色·风格一致性;④ 多镜、成片、
正式交付,或用户明确要求专业制作。
专业 vs 制片看交付物,不看镜头数。 十个镜头交十段片子仍是专业;两个镜头但要
拼好配好字幕直接发布就是制片。判据只有一条:用户要拿走的是素材,还是成品?
素材(他自己后期、或先看看效果)→ 专业,留在本入口;成品(要拼接/配乐/字幕/
平台规格)→ 制片,移交 film-studio。用户在哪个页面不是判据 —— 在工作台上
贴剧本的人同样可能要成片。拿不准就问,这本身值一张 ask_user 卡,而且比事后
返工便宜得多。
上表数的是「你自己挑的对症技法」,不是全部加载数。 条件强制项不占这个额度:
入口自身、sd2-pe 底座、路径 B 的结构叶子、用户所在界面的叶子(工作台)、方向开放
时的 catimation-brainstorm、以及出图/QA/后期各自的入口与工具 —— 它们命中条件才载入、
不由你自由取舍,数它们没有意义。额度只约束「按风险挑几个技法」,那才是容易失控的
地方:三个风险都真实存在时也只能挑两个,取舍要说得出理由,「可能有帮助」不算理由。
方向开放时先共创,别自己猜。 用户说「更电影感/更高级/给我选项/共创」或方向
不明的高成本任务 → 先载入 catimation-brainstorm 用 ask_user 弹一张可点击选项
卡(一次一个聚焦问题、3–6 个具体方向、标注推荐项),选定即 direction_confirmed,
后续不再反复追问。明确的简单请求跳过弹卡,直接快速模式。
模式与素材规则(所有等级通用)
Default mode = 全能参考 (omni-reference) — use it unless told otherwise.
Caps 按 model:2.5 = 图 30 / 视频 10 / 音频 10(合计 50),视频、音频各自合计 ≤30s;
2.0 家族 = 图 9 / 视频 3 / 音频 3,视频、音频各自合计 ≤15s;wan3 = 10 / 5 / 5。
超了会在提交前被拦下并报出该模型的上限,不用自己数。Only switch to strict
firstFrame/lastFrame when the user explicitly asks. Always name the mode you used
(如「我用全能参考模式生成」)。
All modes work on both surfaces(generate_video 与 video_workbench_*)
— pick by inputs + prompt:
- 文生视频:
prompt only. 图生视频: still into referenceImages(或用户
指明才用 firstFrame)。
- 视频编辑: source clip into
referenceVideos(+新元素图入 referenceImages),
增加元素=「特征+时机+位置」;删除=点名要删的、强调保留的;修改=直接描述换后的样子。
- 视频延长: 1–3 段源片入
referenceVideos,描述连接/向前向后延长。
素材引用铁律:提示词里用 @图片1 / @视频1 / @音频1 指代素材(火山 OpenAPI 的写法),
严禁裸写 assetId。提示词原样发给上游:运行时不改写、不删 @,唯一例外是工作台 chip 的
【@图片1】 外壳会解成 @图片1。@Image1 / <图片1> / 裸 图片1 不会被替你改,别写。
音频参考只收 mp3 / wav;视频容器(.mov/.mp4,哪怕黑屏占位)会被拒收——先用
ffmpeg-win 抽音轨(ffmpeg -y -i in.mov -vn -acodec libmp3lame -q:a 2 out.mp3)。
黑屏 MP4 只用于 understand_video,绝不能当音频参考上传。
真人脸:Seedance 不收真人脸参考,用人像库虚拟形象 asset://assetId 或
Seedance 自产片段二创。别把未处理的 Seedance 视频整段回喂(二次编码打折)——
优先用 ffmpeg-win 抽尾帧/关键帧成静图(下一镜 firstFrame 最稳)或抽音轨续节奏;
整段回喂只作规避真人脸审核的兜底。
两条出片面怎么选
generate_video:单镜、一次性、用户没点名工作台。成片直接进聊天并落历史页。
video_workbench_*:多镜批量、用户已经在「生成视频」工作台、需要逐卡改参数或反复
重跑。先 video_workbench_add_tasks 建卡(默认只填不跑,autoStart:true 才立即渲染);
一次最多 5 张,多了分几次调 —— 一整板挤在一次调用里就是几分钟静默生成,期间
用户插不进话、页面也不出卡;分批则每批一落地就看得见。
批次跑完会主动推「[视频工作台] 批次渲染完成」,别轮询 video_workbench_status
(它也分页了,hasMore 为真时翻页,别去要一个巨大的 pageSize)。
改已有卡片挑单卡工具,别走整板往返:改几个词用 video_workbench_patch_prompt,
一张卡多个字段用 video_workbench_update_task,一批卡同一个规格用
video_workbench_set_spec,挪位置用 video_workbench_move_task(不要并发)。
video_workbench_apply 已收窄为纯结构工具 —— 给已有卡带不同的提示词会被整份拒绝。
- 两条面共用同一套 STEP 0 分级、上面那组素材 caps 与素材引用铁律 —— 工作台不是例外。
有参考图时同样先
view_image 看图再写 prompt。
工作台上的多镜纪律(踩过的坑,逐条都是实测):
- 一张卡 = 一次生成 = 一个连续节拍。 一张卡出 4–15s,里面可以是单镜,也可以是
路径 B 的一小段镜头流程 —— 写「镜头1 / 镜头2」进同一段是
sd2-pe 支持的用法。
判据是「这几镜是不是一个连续节拍、总时长塞不塞得下」,不是数镜头号:要独立重跑、
各镜素材不同、时长超了或跨场景就拆卡,同场景连着演完的就合成一段。拆开时卡的顺序
就是镜头顺序。详见 catimation-video-workbench。
- 下面那道「角色片/多镜」硬门在工作台上一字不改地适用。 建卡 ≠ 已经备齐资产:
video_workbench_add_tasks 默认只填不跑,正好是补锚点、排故事板、清点资产、
把提示词过 sd2-pe 的窗口;video_workbench_start 之前这四样必须已经完成。
工作台天生就是多镜场景,它是这道门最该生效的地方,不是例外。
- 跨卡共用同一套人物锚点。 每张卡的 prompt 都要把
identity-hard 主锚逐字带上,
别指望模型跨卡记住 —— 每次生成都是独立的一次调用。
- 规格确认同样适用。 卡片会自动补默认值(720p / 5s / 16:9),但「有默认值」不等于
「用户确认过」。没确认过就先按 Steps 第 2 条发
ask_user 卡,别让默认值替用户做决定。
- 工作台上的具体操作(建卡、整板落地、字段映射、跨卡锚点、开跑前清点)交
catimation-video-workbench。它是叶子:只管这块界面上的纪律与字段,
不做分级、不替代本入口 —— 分级仍然先在这里发生,再把落板交给它。
用户手里已有分镜表 / 制片包要一次铺满整板时,同样走它;只有剧本或文字大纲、
还没切成镜头的,也走它 —— 它有「剧本 → 镜头表」的拆分口径与镜头数选项卡纪律。
规格确认(spec_confirmed)与四级 QA 在两条出片面上口径一致。 工作台的批次摘要只报
成败与落盘路径,不代表 QA 已做 —— 人脸/复杂动作的卡照样要抽九宫格,多镜剧情照样要
understand_video。做过的级别记进 qa_completed,别重复抽。
角色片 / 多镜(标准及以上):先备齐资产,再开生成
只要有反复出现的角色或不止一个镜头,先锁资产再生成(绑定语法与镜头规划
以 sd2-pe 为准):
- 人物卡先锁人:每个复用角色先确定一套
identity-hard 主锚。可用大头照+
全身照、三视图/四视图/多视图角色板,或用户确认的其它干净角色资产。用户已
提供/指定就服从;有多套候选且拿不准时,用 ask_user 请用户选主锚;仅未指定的
低风险任务默认大头照+全身照。缺图用 generate_image 补,随后
add_to_portrait_library 存成 asset://assetId 并在 prompt 明确绑定职责。
- 多镜先排故事板:拆成 镜头1/镜头2/…,每镜按 运镜→主体动作/表情→位置/空间→音频
写清,给用户过一遍。一镜一运镜、用镜头序号。有剧本/分场要逐镜拆解,或镜头多到
需要用户过目时,载入 shotlist-builder 做这一步——它管镜头行怎么切、哪几行合成
一条 4–15s 提示词,并可落成一张可搜索筛选的单文件 HTML 分镜表;它只做规划与交付物,
生成仍回本入口。可用图像模型生成 3×3/4×4
故事板/多宫格/电影美术设定板作为氛围图;这不取代用户选定的身份锚,
干净关键帧锁当前片段构图/画质。只要这些板被加入视频参考,提示词必须先写
“提示词主导 / 氛围板低约束”前缀,整板只负责色彩/光线/材质/时代感/空间气质/
视觉母题,不要求构图、动作或顺序一致。
- 资产齐备 GATE(硬门):逐镜清点人物卡/场景图/道具/氛围参考/参考视频/音频,
任一该有未备的先补齐再生成。推荐每镜 4–5 个核心素材。缺口处理三选一:
① 项目/人像库里找现成(
list_portrait_library);② 非身份关键的自己
generate_image 补;③ 身份/IP/品牌关键的用 ask_user 请用户提供。
- 生成用上全部可用资产:图/视频/音频逐一传入并在 prompt 里绑定,
有素材却只发纯文字 = 错;有故事板/多宫格却漏掉 mandatory 氛围职责前缀 = 错。
- 一次生成一个专属素材夹(如
<workspace>/assets/jobs/S01_<slug>/),
复用、检查、定位问题都只看一个夹;STEP 0 的 routing receipt 也写在这里
(receipt.json),每完成一步就更新。
轻量例外:单图「让它动起来」这类一次性请求(快速模式)不必强排人物卡/故事板。
写 prompt:底座按 model 选(相关即载),技法按症状加载
生成前必须把提示词用 skill 写到位,不许凭记忆硬写。有视频相关任务就先载入
对应 model 的那个底座,再写 prompt;不要等用户说「优化提示词」才加载。
快速模式可以走路径 A 并跳过结构叶子,但八大要素、12 项覆盖与五大必备内容块仍不得
缺失 —— 那讲的是内容覆盖,与用哪个底座无关。
底座(必经,按 model 三选一) + cinematic-prompt-format(复杂任务条件加载):
路径 A 仅处理简单单镜连续正文;复杂、多镜、混合媒介或展开导演/作品参考任一
命中即走路径 B 并加载结构叶子,且 B 条件优先于任务类型。两条路径都覆盖八大
要素、12 项内容和五大必备块,标题、分段与散文形式自由;并主动出 2–3 个已
核实影视参考候选供用户挑选。真人、2D 动画、
3D 动画作为可组合
的媒介 profile;“电影/电影感”作为检索创作技法的意图词,不是互斥类别。
结构化文本 never JSON;物理/可复现参数(焦段 mm、光圈、色温 K)优先于情绪
形容词。
写运镜/景别前先调 search_cinematography_kb 工具(本地运镜与结构化描述库)
拿真实术语再落笔;工具不可用再退回联网检索。
排版(三个底座通用):最终提示词连续成段,不空行分块。 动作接动作、情节接情节、外貌 →
性格 → 心理 → 环境这些连着发生的描写不用换行或空行切开,用 , ; 。 —— : 衔接;
底座模板里的空行和「一句一行」是给人看的排版示意,不是提交格式,方括号标签后直接接正文;
只在镜头之间(镜头1: / 镜头2:)和模板块之间换行。中文字、标点前后不留空格。
提示词是什么,发过去就是什么:运行时不改排版,空行、碎行、多余空格都会原样进上游,
填 prompt 字段前自己看一眼。
标准模式:按最主要症状挑 1 个技法 skill(浏览 ~/.agents/skills/,plain-text
名称按需加载,不是全量)。多风险协同时升级专业模式,而不是突破标准级预算:
| 症状 / 任务信号 |
对症技法(按需挑,非必载) |
| 太假/塑料/空洞/站桩/NPC |
storyboard-live-character-realism · storyboard-character-acting · storyboard-character-motivation |
| 像壁纸/没纵深/没电影感 |
storyboard-foreground-occlusion · storyboard-pseudo-perspective · director-cinematic-composition |
| 动作怪/武打飘/打击感差 |
storyboard-physics · storyboard-kinematic-reverse-engineering |
| 光平/糖水/塑料高光 |
storyboard-light-reconstruction · director-lighting-continuity |
| 风格不像/调色跑偏 |
storyboard-color-grading-control · storyboard-style-extraction-logic · director-style-consistency |
| 多角色混脸 |
storyboard-multi-character-control · director-character-consistency |
| 九宫格/多宫格故事板、电影美术设定板、整板低约束参考或拆格执行 |
storyboard-grid-to-seedance |
| 有剧本/分场/多镜要逐镜拆解,或要一张能搜索筛选的分镜表交付给人看 |
shotlist-builder(规划与交付物,不出片) |
| 提示词太长/权重稀释 |
storyboard-video-prompt-optimization |
| 提到真实电影/导演/品牌/时代,或「像·复刻·高级」 |
codex-research-grounded-prompting(先查证再落笔) |
| 日式动画质感/作画 |
animation-craft · director-anime-quality-boost |
专业模式:载入 director-orchestrator 做复杂镜头设计(13 维按需展开、
多技法协同),再按具体风险最多补 2 个技法;它只做镜头设计与提示词结构,
不重跑本入口的分级与路由。
制片模式:移交 film-studio,由其 G0–G8 门控按阶段编排(剧本/分镜/资产/
出图/出片/后期),本 skill 只负责其中每一镜的 generate_video 执行。
Steps
- 有参考图就先看一眼(look before you write):手上有用户给的图 / 人像库
asset / 故事板时,先
view_image 一张有代表性的,再据你看到的东西
(主体、景别、配色、服装、光线)写提示词。照文件名或用户一句话臆想出来的提示词
会和画面打架,而模型跟的是画面。这与「不要批量打开自己刚生成的产物」不冲突:
那些用户已经在聊天里看着了,这是你的输入,看一张是让提示词对得上它的前提。
多图只看代表性的 1 张(最多 2 张),别整批灌进上下文。
- Turn the request into one clear video prompt(subject, action, camera 运镜/景别,
scene, lighting, mood;dialogue 与
--style 可后置)。
- 规格确认(spec_confirmed):用户没说规格时,发一张
ask_user 卡确认
分辨率(480p 草稿 / 720p 默认 / 1080p)、时长(2.5 为 4–30s,2.0 家族 4–15s,
默认 5)、比例(16:9 / 9:16 / 4:3 / 3:4 / 1:1 / 21:9),推荐默认项。
不要静默升 1080p;1080p 仅 2.0(与 wan3),2.5 只到 720p —— 用户要 1080p 就意味着
model 改 2.0、底座改 sd2-pe;用户已给规格或本会话已确认过就跳过。
- Call
generate_video:prompt(必填)、model(显式传,且与你载的底座一致:
STEP 0 默认 2.5 → 传 "2.5";要 1080p / 4k 或用户点名满血画质 → "2.0" 并改载 sd2-pe;
用户明确要快/便宜才 "2.0-fast"。别省略 —— 工具不传 model 时落到 2.0,一条按 2.5
模板写的提示词就会被送去 2.0 渲染)、resolution / ratio / duration、
referenceImages(用户给过的图必须传;支持 asset://assetId)、
referenceVideos / referenceAudios(上限按 model,见「模式与素材规则」)、或显式要求时的
firstFrame / lastFrame;2.5 的编辑 / 延长走 taskMode(edit / extend),不靠提示词措辞。
- Wait for the tool to return — it blocks until done. Do NOT resubmit or
"check progress" in between.
- Read the result banner:
✅ DONE + 📁 SAVED FILE: <path> → task COMPLETE. 第一步永远是交付:
先用一句话向用户确认(成片已在聊天里播放 + 保存路径,name the mode),
然后才做任何 QA。Do NOT re-check or re-generate.
✅ DONE with background save pending → generation complete; mention briefly.
⏳ STILL RUNNING → 先向用户说一句「正在生成中」(如果还没说过),再 call
check_video_task with the taskId repeatedly (long-polls ~25s) until
DONE/FAILED. Never resubmit. 多轮轮询之间不要让用户干等无声。
❌ FAILED → report the upstream error; retry ONCE only if it suggests a
content/parameter fix.
QA:按风险分级,不是每条视频全套跑
交付优先铁律:任何级别的 QA 都发生在向用户交付之后——先一句话交付成片,
决定跑 QA 时再说一句「正在做视觉质检(抽帧九宫格)…」之类出声再动手。用户看
不到工具调用,先闷头抽帧/审片再回话,在用户眼里就是「卡死」(2026-07-14 实录教训)。
QA 发现问题需要重生成时,同样先告诉用户哪里不达标、准备怎么改。
| QA 级别 |
触发条件 |
动作 |
| 快速 QA(快速模式默认) |
普通单镜、无人脸特写、无复杂动作 |
确认 DONE banner + 时长/文件正常即可;不自动抽帧、不自动上传理解模型 |
| 视觉 QA |
人脸/手部是重点、多人物、武打/复杂动作、用户要求查画质、疑似穿帮 |
九宫格 contact sheet + view_image(见下) |
| 内容 QA |
多镜剧情、台词/字幕/口型、连续性检查、视频编辑核对、用户明确要求审片 |
catimation-understand 的 understand_video 看整段 |
| 发布 QA(制片交付) |
正式交付/成片 |
ffprobe 编码/分辨率/帧率/响度 + 九宫格 + 内容审查 + 平台规格(走 ffmpeg-win 的 inspect→process→verify 循环) |
九宫格做法(视觉 QA):用 ffmpeg-win 抽 9 帧拼图,
ffmpeg -i "<clip>.mp4" -vf "fps=9/<DURATION>,scale=320:-1,tile=3x3:padding=6:color=black" -frames:v 1 -y "<clip>_grid.png",
然后 view_image 那张 _grid.png。画布上的视频用 get_canvas_video 拿
videoPath,别搜盘。判定标尺(源自 VisionReward/WorldReasonBench 核心项):
视觉美观 s_a、时间一致性 s_c(主体稳定/运动平滑/不闪烁)、物理合理 s_r、
prompt 对齐,逐项判通过/不通过;单帧崩坏一票否决(最差帧原则),首帧从严。
需要总分时 S(v) = 0.4·s_r + 0.3·s_c + 0.3·s_a。
多镜/整板不要挨张 view_image。 主 agent 直接看图的上限是 5 张(宫格图算一张,
它本来就是为「一张看完整段」拼的)。超过 5 张 —— 多镜、多张宫格、一板卡片的产物 ——
走 catimation-subagents:
并发调 understand_document 看图 / understand_video 看整段,回来的是文本;每镜的
结论落成 <文件名>.vision.json / .md 旁挂在素材旁边,下次(或下个人)直接读文本。
需要「看完顺手改提示词重生成」时才升级到子代理。
触发了视觉+内容两级时,两面是同一次自检,别二选一。任一不达标 → 带针对性
改进点重生成(补哪个技法的哪个字段,不是泛泛「优化一下」)。自动修正
最多 2 次;generation_attempts 到 2 后仍不通过,先向用户说明成本/问题并请求
确认,不得继续付费重试。
Never inject the full MP4 or raw bytes into the chat;用户已在聊天里看着它播。
做过的级别记入 qa_completed(如 ["visual","content"]),下游不重复抽帧。
宫格图/故事板/美术设定板 = 辅助素材,不只是检查工具:整板可回喂
referenceImages 传色彩/光线/材质/时代感/空间气质/视觉母题,但不承担故事、
构图、动作、顺序、时长、身份或 firstFrame;有板即带提示词主导前缀。要精确
跟随某格就先拆格、去边框文字、重绘成干净关键帧。跨镜续接优先抽关键帧/尾帧作
下一镜 firstFrame,不整段回喂 —— 这条默认针对逐镜串行推进。工作台批量并行
时用不了(下一镜的首帧要等上一镜渲完),取舍规则见 catimation-video-workbench。
Organize finished clips into the user's workspace (when in a project)
COPY, don't move the finalized MP4(和它的 _grid.png)into a tidy assets
subfolder with zero-padded shot ordinals — e.g.
<workspace>/assets/video/S01_station_wide.mp4、
<workspace>/assets/contact-sheets/S01_station_wide_grid.png — so clips
assemble in order for a later ffmpeg concat. Skip for one-off casual clips.
Portrait library(人像库)— push materials in, then reference
The catimation MCP server exposes portrait-library tools
(add_to_portrait_library / list_portrait_library / edit_portrait_library /
download_portrait_asset,详见 catimation-portrait-library skill),围绕视频
生成主动使用:传给 generate_video 的输入图会自动入库并 dedupe 成同一
asset://assetId;用户给的要记住/复用的素材先 add_to_portrait_library 再引用;
「还是上次那个人」用 list_portrait_library 找回同一 asset 保持身份一致;用户在
人像库页给的 asset://assetId 直接传入。
Notes
- One
generate_video call = ONE video. 多条就多次调用、复用同一 asset://
保持一致性;可并行,但一次要发 20+ 个任务先向用户确认(每条都花钱且渲染
1–3 分钟)。
- Local input files are handled for you(video/audio 每段 4–15s,合计上限按 model 见
「模式与素材规则」);pass plain local paths
and do NOT pre-compress or reject anything for size — there is no client-side size
cap, large files are streamed to a relay bucket automatically. If a file really is
too big for upstream, upstream returns the exact limit.
- Background saving never blocks you: banner DONE = 视频已在播,本地保存可能
还在后台(
persistencePending),当作 COMPLETE 立即回复,不要等待或轮询保存。
1---2name: catimation-video3description: FIRST-CHOICE video generator and the ONLY top-level video orchestrator in CATIMATION. Trigger whenever the user asks to generate / render a video or animation, animate a still, or says 生成视频 / 图生视频 / 让它动起来 / 视频编辑 / 视频延长 / 视频工作台 / 批量出片 / 多镜. Covers text/still-to-video, omni-reference (全能参考, default), editing and extension on both output surfaces (generate_video one-shot + video_workbench_* batch), and grades every request 快速/标准/专业/制片 before loading other skills.4---56<!-- skill-budget: pro -->78# Generate videos in CATIMATION(唯一视频入口 · 分级调度)910When the user wants a video, pick the output surface first: **`generate_video`**11(single shot, delivered straight into the chat) or the **`video_workbench_*`**12tools(「生成视频」工作台页:多卡批量、逐卡改参数、用户看着卡片渲染)。两者都在13`catimation` MCP server 上,共用本 skill 的分级与提示词纪律。走 `generate_video` 时:14It submits the render and blocks for roughly 75s to catch15fast completions and early failures. It may return DONE/FAILED, or16`STILL RUNNING + taskId`; only in the latter case continue with `check_video_task`17long-polls until terminal. Never sleep and never resubmit the same render. The user18watches a live progress bubble; the finished MP4 plays inline in the chat, is saved19to a local file, and lands in the app history page.2021**本 skill 是视频生成的唯一顶层编排者。** 其它 skill(导演/分镜/工艺/QA)都由这里22按任务分级选择性加载;任何下游 skill 不得反过来重跑路由或重新编排本流程。2324## STEP 0 — 任务分级(先定级,再加载;技法勿滥载)2526**STEP -1:这是纯文本任务吗?** 写剧本、拆脚本、拆批次、整理文件、列镜头清单、27把已有分镜换个格式、改一段文字 —— 这些**一个 skill 都不要加载,也不进分级**,28直接做完交付。它们本来是三分钟的事,套上分级和确认闸门会拖成几小时。29用户说「快点」「简单弄一下」「先给我看看」时同理。30**只有真要提交生成任务时**,才继续往下看分级表。3132默认进入**快速**模式;只有命中升级条件才升级。定级后把执行状态记成一份 routing receipt33(`task_level / direction_confirmed / spec_confirmed / prompt_engineered /34qa_completed / generation_attempts`):有专属素材夹(见「角色片 / 多镜」第 5 条)时写进35该夹的 `receipt.json`,每完成一步就更新;没有素材夹的一次性任务至少在回复里用一行复述它。36**每读完一份大 skill(提示词底座 / 结构叶子 / 镜头设计编排器)先回读 receipt 再动手** ——37两万字进上下文最容易把它冲掉,读完只剩模板、忘了锚点和已确认的规格就是这么来的。38已完成的步骤**不再重复执行**:规格确认过就不再问、提示词写好就不再重写、QA 做过就不再重抽。3940**提示词底座:要真写 Seedance 提示词时才载。** 出片、改写视频提示词、Seedance41语法问答 —— 这些确实需要底座,不必等用户点名。但**纯文本任务不载**(见上面 STEP -1),42只问参数价格报错的也不载。4344> **底座三个同级,但按 model 只载一个。** `sd2-pe`、`sd25-pe` 与 `wan3-cinematic-30s`45> 在路由表里平起平坐,「同级」说的是地位,不是要同时塞进上下文 —— 每个视频任务都46> 全量读一遍是纯浪费,而且套模板本来就只能套一套。47>48> - model 是 `2.5`(**默认**,模型未知时也按它)→ 载 `sd25-pe`49> - model 明确是 2.0 家族(`2.0` / `2.0-fast` / `2.0-mini`)→ 载 `sd2-pe`50> - model 是 `wan3`(万相 3.0)→ 载 `wan3-cinematic-30s`51>52> 之所以默认 2.5:它是唯一支持 `taskMode` 编辑 / 延长、30 秒时长和 50 份素材的档位。53> 只在真要写 2.0 的八大要素公式时才去读那一份。三个都不占技法名额。54>55> 万相那条底座另带两个**按题材**的专项叶子(产品 TVC、情绪对白戏),由底座自己按需56> 引出 —— 别从这里直接跳过去载。57>58> 下文凡写 `sd2-pe` 的**纪律**(素材绑定语法、多镜拆卡、资产门、一镜一运镜)在另外59> 两个底座上一字不改地成立,换底座不换纪律。八大要素、12 项内容、五大必备块讲的是60> **提示词该覆盖哪些内容**,同样与模型无关 —— 底座之间不同的是语法与排版,不是61> 要不要写清主体、镜头、光线、音效。6263路径 A 仅限简单、单镜的轻量连续任务,可由底座独立完成;复杂、多镜、混合媒介或64需要展开导演/作品参考任一命中即进入路径 B,并加载结构叶子65cinematic-prompt-format。路径 B 条件优先于生成/编辑/延长/组合等任务类型。66下文「对症加载 / 别自行放大」同样适用于该结构叶子。6768> **这个结构叶子三个底座通用。** 它名字带 seedance 是历史命名 —— 正文里没有一个69> 模型参数,只有 12 项内容清单、真人/2D/3D 媒介 profile 与语言纪律,换哪个上游都成立。70>71> ⚠️ 真正**不通用**的是写死了模型数字的那些:`seedance-video-craft` 里的72> 「4–15s」「9 图/3 视频/3 音频」「1080p 仅满血 2.0」「21:9」对万相全是错的73> (万相是 2–30s、10/5/5、没有 21:9)。判据是**有没有写死模型数字**,不是名字带不带74> seedance。与模型无关的技法(表演、光位、连续性、物理、负向控制)两边通用,75> 照常按症状挑。7677**分镜底座:真要开拍多镜时才载。** 任务确定要**产出一条多镜片子**(不止一个镜头、78一板要跑的卡片、一个系列)时,再加载 `shotlist-builder` —— 它管镜头行怎么切、哪几行79合成一条 4–15s 提示词、要不要落成一张可搜索的 HTML 总表。它只做规划与交付物,80生成仍回本入口。8182**这几种不载**(它们是纯文本或单次交付,套上四阶段对表闸门只会把三分钟拖成几小时):83拆脚本、拆批次、整理文件、列个镜头清单、把已有分镜换个格式、单镜「让这张图动起来」、84用户说「快点 / 简单弄一下」。**拿不准就先不载**,用户觉得不够正式再升级 ——85反过来先走完闸门才发现他只要张表,那些等待要不回来。8687| 模式 | 典型请求 | 自选技法预算 | 默认动作 |88|---|---|---|---|89| **快速** | 「让这张图动起来」「生成5秒海浪」单镜简单请求 | **0 个** —— 入口 + 提示词底座就够 | 路径 A,合理默认,直接生成,快速 QA |90| **标准** | 单人物表演、简单电影感、带参考图的单镜 | **1 个对症技法** | 按一个主要风险挑技法,视觉 QA |91| **专业** | 武打/多人/参考复刻/复杂运镜/跨镜一致性 | **2 个对症技法**,另必载 `director-orchestrator` | 13 维按需展开,视觉+内容 QA |92| **制片** | 要一条能直接发出去的成片:拼接、配乐、字幕、交付规格齐全 | 按阶段加载,禁止一次全量 | 移交 `film-studio` 门控流水线 |9394> **两个底座不占技法名额。** 提示词底座(有视频提示词就载,按模型选 `sd2-pe` 或95> `sd25-pe`)与 `shotlist-builder`96> (有跨镜/跨图连续性就载)是自动触发的底座,不是「对症技法」;上表限的是自选技法97> 数量。连续任务里两个底座同时在场是正常的,不算超预算。9899**升级条件(仅此四类,别自行放大):** ① 明确的人物演技/复杂动作/武打;100② 参考图·视频·电影的风格复刻;③ 跨镜/系列的角色·风格一致性;④ 多镜、成片、101正式交付,或用户明确要求专业制作。102103**专业 vs 制片看交付物,不看镜头数。** 十个镜头交十段片子仍是专业;两个镜头但要104拼好配好字幕直接发布就是制片。判据只有一条:**用户要拿走的是素材,还是成品?**105素材(他自己后期、或先看看效果)→ 专业,留在本入口;成品(要拼接/配乐/字幕/106平台规格)→ 制片,移交 `film-studio`。**用户在哪个页面不是判据** —— 在工作台上107贴剧本的人同样可能要成片。拿不准就问,这本身值一张 `ask_user` 卡,而且比事后108返工便宜得多。109110**上表数的是「你自己挑的对症技法」,不是全部加载数。** 条件强制项不占这个额度:111入口自身、`sd2-pe` 底座、路径 B 的结构叶子、用户所在界面的叶子(工作台)、方向开放112时的 catimation-brainstorm、以及出图/QA/后期各自的入口与工具 —— 它们命中条件才载入、113不由你自由取舍,数它们没有意义。额度只约束「按风险挑几个技法」,那才是容易失控的114地方:三个风险都真实存在时也只能挑两个,取舍要说得出理由,「可能有帮助」不算理由。115116**方向开放时先共创,别自己猜。** 用户说「更电影感/更高级/给我选项/共创」或方向117不明的高成本任务 → 先载入 catimation-brainstorm 用 `ask_user` 弹一张可点击选项118卡(一次一个聚焦问题、3–6 个具体方向、标注推荐项),选定即 `direction_confirmed`,119后续不再反复追问。明确的简单请求跳过弹卡,直接快速模式。120121## 模式与素材规则(所有等级通用)122123**Default mode = 全能参考 (omni-reference)** — use it unless told otherwise.124Caps 按 model:**2.5** = 图 30 / 视频 10 / 音频 10(合计 50),视频、音频各自合计 ≤30s;125**2.0 家族** = 图 9 / 视频 3 / 音频 3,视频、音频各自合计 ≤15s;**wan3** = 10 / 5 / 5。126超了会在提交前被拦下并报出该模型的上限,不用自己数。Only switch to strict127`firstFrame`/`lastFrame` when the user explicitly asks. **Always name the mode you used**128(如「我用**全能参考**模式生成」)。129130All modes work on **both** surfaces(`generate_video` 与 `video_workbench_*`)131— pick by inputs + prompt:132133- **文生视频**: `prompt` only. **图生视频**: still into `referenceImages`(或用户134 指明才用 `firstFrame`)。135- **视频编辑**: source clip into `referenceVideos`(+新元素图入 `referenceImages`),136 增加元素=「特征+时机+位置」;删除=点名要删的、强调保留的;修改=直接描述换后的样子。137- **视频延长**: 1–3 段源片入 `referenceVideos`,描述连接/向前向后延长。138139**素材引用铁律**:提示词里用 `@图片1 / @视频1 / @音频1` 指代素材(火山 OpenAPI 的写法),140严禁裸写 assetId。**提示词原样发给上游**:运行时不改写、不删 `@`,唯一例外是工作台 chip 的141`【@图片1】` 外壳会解成 `@图片1`。`@Image1` / `<图片1>` / 裸 `图片1` 不会被替你改,别写。142**音频参考只收 mp3 / wav**;视频容器(.mov/.mp4,哪怕黑屏占位)会被拒收——先用143`ffmpeg-win` 抽音轨(`ffmpeg -y -i in.mov -vn -acodec libmp3lame -q:a 2 out.mp3`)。144黑屏 MP4 只用于 understand_video,绝不能当音频参考上传。145**真人脸**:Seedance 不收真人脸参考,用人像库虚拟形象 `asset://assetId` 或146Seedance 自产片段二创。**别把未处理的 Seedance 视频整段回喂**(二次编码打折)——147优先用 `ffmpeg-win` 抽尾帧/关键帧成静图(下一镜 `firstFrame` 最稳)或抽音轨续节奏;148整段回喂只作规避真人脸审核的兜底。149150### 两条出片面怎么选151152- **`generate_video`**:单镜、一次性、用户没点名工作台。成片直接进聊天并落历史页。153- **`video_workbench_*`**:多镜批量、用户已经在「生成视频」工作台、需要逐卡改参数或反复154 重跑。先 `video_workbench_add_tasks` 建卡(默认只填不跑,`autoStart:true` 才立即渲染);155 **一次最多 5 张,多了分几次调** —— 一整板挤在一次调用里就是几分钟静默生成,期间156 用户插不进话、页面也不出卡;分批则每批一落地就看得见。157 批次跑完会主动推「[视频工作台] 批次渲染完成」,**别轮询** `video_workbench_status`158 (它也分页了,`hasMore` 为真时翻页,别去要一个巨大的 pageSize)。159 改已有卡片挑单卡工具,别走整板往返:改几个词用 `video_workbench_patch_prompt`,160 一张卡多个字段用 `video_workbench_update_task`,一批卡同一个规格用161 `video_workbench_set_spec`,挪位置用 `video_workbench_move_task`(不要并发)。162 `video_workbench_apply` 已收窄为纯结构工具 —— 给已有卡带不同的提示词会被整份拒绝。163- 两条面共用**同一套** STEP 0 分级、上面那组素材 caps 与素材引用铁律 —— 工作台不是例外。164 有参考图时同样先 `view_image` 看图再写 prompt。165166**工作台上的多镜纪律(踩过的坑,逐条都是实测):**167168- **一张卡 = 一次生成 = 一个连续节拍。** 一张卡出 4–15s,里面可以是单镜,也可以是169 路径 B 的一小段镜头流程 —— 写「镜头1 / 镜头2」进同一段是 `sd2-pe` 支持的用法。170 判据是「这几镜是不是一个连续节拍、总时长塞不塞得下」,不是数镜头号:要独立重跑、171 各镜素材不同、时长超了或跨场景就拆卡,同场景连着演完的就合成一段。拆开时卡的顺序172 就是镜头顺序。详见 `catimation-video-workbench`。173- **下面那道「角色片/多镜」硬门在工作台上一字不改地适用。** 建卡 ≠ 已经备齐资产:174 `video_workbench_add_tasks` 默认只填不跑,正好是补锚点、排故事板、清点资产、175 把提示词过 `sd2-pe` 的窗口;`video_workbench_start` 之前这四样必须已经完成。176 工作台天生就是多镜场景,它是这道门最该生效的地方,不是例外。177- **跨卡共用同一套人物锚点。** 每张卡的 prompt 都要把 `identity-hard` 主锚逐字带上,178 别指望模型跨卡记住 —— 每次生成都是独立的一次调用。179- **规格确认同样适用。** 卡片会自动补默认值(720p / 5s / 16:9),但「有默认值」不等于180 「用户确认过」。没确认过就先按 Steps 第 2 条发 `ask_user` 卡,别让默认值替用户做决定。181- **工作台上的具体操作**(建卡、整板落地、字段映射、跨卡锚点、开跑前清点)交182 `catimation-video-workbench`。它是叶子:只管这块界面上的纪律与字段,183 **不做分级、不替代本入口** —— 分级仍然先在这里发生,再把落板交给它。184 用户手里已有分镜表 / 制片包要一次铺满整板时,同样走它;只有剧本或文字大纲、185 还没切成镜头的,也走它 —— 它有「剧本 → 镜头表」的拆分口径与镜头数选项卡纪律。186187**规格确认(spec_confirmed)与四级 QA 在两条出片面上口径一致。** 工作台的批次摘要只报188成败与落盘路径,不代表 QA 已做 —— 人脸/复杂动作的卡照样要抽九宫格,多镜剧情照样要189`understand_video`。做过的级别记进 `qa_completed`,别重复抽。190191## 角色片 / 多镜(标准及以上):先备齐资产,再开生成192193只要有**反复出现的角色**或**不止一个镜头**,先锁资产再生成(绑定语法与镜头规划194以 `sd2-pe` 为准):1951961. **人物卡先锁人**:每个复用角色先确定一套 `identity-hard` 主锚。可用大头照+197 全身照、三视图/四视图/多视图角色板,或用户确认的其它干净角色资产。用户已198 提供/指定就服从;有多套候选且拿不准时,用 `ask_user` 请用户选主锚;仅未指定的199 低风险任务默认大头照+全身照。缺图用 `generate_image` 补,随后200 `add_to_portrait_library` 存成 `asset://assetId` 并在 prompt 明确绑定职责。2012. **多镜先排故事板**:拆成 镜头1/镜头2/…,每镜按 运镜→主体动作/表情→位置/空间→音频202 写清,给用户过一遍。一镜一运镜、用镜头序号。**有剧本/分场要逐镜拆解,或镜头多到203 需要用户过目时,载入 shotlist-builder** 做这一步——它管镜头行怎么切、哪几行合成204 一条 4–15s 提示词,并可落成一张可搜索筛选的单文件 HTML 分镜表;它只做规划与交付物,205 生成仍回本入口。可用图像模型生成 3×3/4×4206 故事板/多宫格/电影美术设定板作为氛围图;这不取代用户选定的身份锚,207 干净关键帧锁当前片段构图/画质。**只要这些板被加入视频参考,提示词必须先写208 “提示词主导 / 氛围板低约束”前缀**,整板只负责色彩/光线/材质/时代感/空间气质/209 视觉母题,不要求构图、动作或顺序一致。2103. **资产齐备 GATE(硬门)**:逐镜清点人物卡/场景图/道具/氛围参考/参考视频/音频,211 任一该有未备的先补齐再生成。推荐每镜 4–5 个核心素材。缺口处理三选一:212 ① 项目/人像库里找现成(`list_portrait_library`);② 非身份关键的自己213 `generate_image` 补;③ 身份/IP/品牌关键的用 `ask_user` 请用户提供。2144. **生成用上全部可用资产**:图/视频/音频逐一传入并在 prompt 里绑定,215 有素材却只发纯文字 = 错;有故事板/多宫格却漏掉 mandatory 氛围职责前缀 = 错。2165. **一次生成一个专属素材夹**(如 `<workspace>/assets/jobs/S01_<slug>/`),217 复用、检查、定位问题都只看一个夹;STEP 0 的 routing receipt 也写在这里218 (`receipt.json`),每完成一步就更新。219220> 轻量例外:单图「让它动起来」这类一次性请求(快速模式)不必强排人物卡/故事板。221222## 写 prompt:底座按 model 选(相关即载),技法按症状加载223224**生成前必须把提示词用 skill 写到位,不许凭记忆硬写**。有视频相关任务就先载入225**对应 model 的那个底座**,再写 prompt;不要等用户说「优化提示词」才加载。226227快速模式可以走路径 A 并跳过结构叶子,但八大要素、12 项覆盖与五大必备内容块仍不得228缺失 —— 那讲的是内容覆盖,与用哪个底座无关。2292301. **底座(必经,按 model 三选一) + cinematic-prompt-format(复杂任务条件加载)**:231 路径 A 仅处理简单单镜连续正文;复杂、多镜、混合媒介或展开导演/作品参考任一232 命中即走路径 B 并加载结构叶子,且 B 条件优先于任务类型。两条路径都覆盖八大233 要素、12 项内容和五大必备块,标题、分段与散文形式自由;并主动出 2–3 个已234 核实影视参考候选供用户挑选。真人、2D 动画、235 3D 动画作为可组合236 的媒介 profile;“电影/电影感”作为检索创作技法的意图词,不是互斥类别。237 结构化文本 never JSON;物理/可复现参数(焦段 mm、光圈、色温 K)优先于情绪238 形容词。2392. **写运镜/景别前先调 `search_cinematography_kb` 工具**(本地运镜与结构化描述库)240 拿真实术语再落笔;工具不可用再退回联网检索。241 **排版(三个底座通用):最终提示词连续成段,不空行分块。** 动作接动作、情节接情节、外貌 →242 性格 → 心理 → 环境这些连着发生的描写不用换行或空行切开,用 `,` `;` `。` `——` `:` 衔接;243 底座模板里的空行和「一句一行」是给人看的排版示意,不是提交格式,方括号标签后直接接正文;244 只在镜头之间(`镜头1:` / `镜头2:`)和模板块之间换行。中文字、标点前后不留空格。245 **提示词是什么,发过去就是什么**:运行时不改排版,空行、碎行、多余空格都会原样进上游,246 填 `prompt` 字段前自己看一眼。2473. **标准模式:按最主要症状挑 1 个技法 skill**(浏览 `~/.agents/skills/`,plain-text248 名称按需加载,不是全量)。多风险协同时升级专业模式,而不是突破标准级预算:249250 | 症状 / 任务信号 | 对症技法(按需挑,非必载) |251 |---|---|252 | 太假/塑料/空洞/站桩/NPC | storyboard-live-character-realism · storyboard-character-acting · storyboard-character-motivation |253 | 像壁纸/没纵深/没电影感 | storyboard-foreground-occlusion · storyboard-pseudo-perspective · director-cinematic-composition |254 | 动作怪/武打飘/打击感差 | storyboard-physics · storyboard-kinematic-reverse-engineering |255 | 光平/糖水/塑料高光 | storyboard-light-reconstruction · director-lighting-continuity |256 | 风格不像/调色跑偏 | storyboard-color-grading-control · storyboard-style-extraction-logic · director-style-consistency |257 | 多角色混脸 | storyboard-multi-character-control · director-character-consistency |258 | 九宫格/多宫格故事板、电影美术设定板、整板低约束参考或拆格执行 | storyboard-grid-to-seedance |259 | 有剧本/分场/多镜要逐镜拆解,或要一张能搜索筛选的分镜表交付给人看 | shotlist-builder(规划与交付物,不出片) |260 | 提示词太长/权重稀释 | storyboard-video-prompt-optimization |261 | 提到真实电影/导演/品牌/时代,或「像·复刻·高级」 | codex-research-grounded-prompting(先查证再落笔) |262 | 日式动画质感/作画 | animation-craft · director-anime-quality-boost |2632644. **专业模式:载入 `director-orchestrator`** 做复杂镜头设计(13 维按需展开、265 多技法协同),再按具体风险最多补 2 个技法;它只做镜头设计与提示词结构,266 不重跑本入口的分级与路由。2675. **制片模式:移交 `film-studio`**,由其 G0–G8 门控按阶段编排(剧本/分镜/资产/268 出图/出片/后期),本 skill 只负责其中每一镜的 `generate_video` 执行。269270## Steps2712720. **有参考图就先看一眼(look before you write)**:手上有用户给的图 / 人像库273 asset / 故事板时,先 `view_image` **一张有代表性的**,再据你**看到的**东西274 (主体、景别、配色、服装、光线)写提示词。照文件名或用户一句话臆想出来的提示词275 会和画面打架,而模型跟的是画面。这与「不要批量打开自己刚生成的产物」不冲突:276 那些用户已经在聊天里看着了,这是你的**输入**,看一张是让提示词对得上它的前提。277 多图只看代表性的 1 张(最多 2 张),别整批灌进上下文。2781. Turn the request into one clear video prompt(subject, action, camera 运镜/景别,279 scene, lighting, mood;dialogue 与 `--style` 可后置)。2802. **规格确认(spec_confirmed)**:用户没说规格时,发一张 `ask_user` 卡确认281 分辨率(`480p` 草稿 / **`720p` 默认** / `1080p`)、时长(**2.5 为 4–30s,2.0 家族 4–15s**,282 默认 5)、比例(`16:9` / `9:16` / `4:3` / `3:4` / `1:1` / `21:9`),推荐默认项。283 **不要静默升 1080p**;1080p 仅 `2.0`(与 wan3),`2.5` 只到 720p —— 用户要 1080p 就意味着284 model 改 `2.0`、底座改 `sd2-pe`;用户已给规格或本会话已确认过就跳过。2853. Call `generate_video`:`prompt`(必填)、`model`(**显式传,且与你载的底座一致**:286 STEP 0 默认 `2.5` → 传 `"2.5"`;要 1080p / 4k 或用户点名满血画质 → `"2.0"` 并改载 `sd2-pe`;287 用户明确要快/便宜才 `"2.0-fast"`。**别省略** —— 工具不传 model 时落到 `2.0`,一条按 2.5288 模板写的提示词就会被送去 2.0 渲染)、`resolution` / `ratio` / `duration`、289 `referenceImages`(**用户给过的图必须传**;支持 `asset://assetId`)、290 `referenceVideos` / `referenceAudios`(上限按 model,见「模式与素材规则」)、或显式要求时的291 `firstFrame` / `lastFrame`;2.5 的编辑 / 延长走 `taskMode`(`edit` / `extend`),不靠提示词措辞。2924. Wait for the tool to return — it blocks until done. Do NOT resubmit or293 "check progress" in between.2945. Read the result banner:295 - `✅ DONE` + `📁 SAVED FILE: <path>` → task COMPLETE. **第一步永远是交付**:296 先用一句话向用户确认(成片已在聊天里播放 + 保存路径,**name the mode**),297 **然后**才做任何 QA。Do NOT re-check or re-generate.298 - `✅ DONE` with background save pending → generation complete; mention briefly.299 - `⏳ STILL RUNNING` → 先向用户说一句「正在生成中」(如果还没说过),再 call300 `check_video_task` with the taskId repeatedly (long-polls ~25s) until301 DONE/FAILED. Never resubmit. 多轮轮询之间不要让用户干等无声。302 - `❌ FAILED` → report the upstream error; retry ONCE only if it suggests a303 content/parameter fix.304305## QA:按风险分级,不是每条视频全套跑306307**交付优先铁律**:任何级别的 QA 都发生在**向用户交付之后**——先一句话交付成片,308决定跑 QA 时再说一句「正在做视觉质检(抽帧九宫格)…」之类**出声**再动手。用户看309不到工具调用,先闷头抽帧/审片再回话,在用户眼里就是「卡死」(2026-07-14 实录教训)。310QA 发现问题需要重生成时,同样先告诉用户哪里不达标、准备怎么改。311312| QA 级别 | 触发条件 | 动作 |313|---|---|---|314| **快速 QA**(快速模式默认) | 普通单镜、无人脸特写、无复杂动作 | 确认 DONE banner + 时长/文件正常即可;不自动抽帧、不自动上传理解模型 |315| **视觉 QA** | 人脸/手部是重点、多人物、武打/复杂动作、用户要求查画质、疑似穿帮 | 九宫格 contact sheet + `view_image`(见下) |316| **内容 QA** | 多镜剧情、台词/字幕/口型、连续性检查、视频编辑核对、用户明确要求审片 | `catimation-understand` 的 understand_video 看整段 |317| **发布 QA**(制片交付) | 正式交付/成片 | ffprobe 编码/分辨率/帧率/响度 + 九宫格 + 内容审查 + 平台规格(走 `ffmpeg-win` 的 inspect→process→verify 循环) |318319**九宫格做法**(视觉 QA):用 `ffmpeg-win` 抽 9 帧拼图,320`ffmpeg -i "<clip>.mp4" -vf "fps=9/<DURATION>,scale=320:-1,tile=3x3:padding=6:color=black" -frames:v 1 -y "<clip>_grid.png"`,321然后 `view_image` 那张 `_grid.png`。画布上的视频用 `get_canvas_video` 拿322`videoPath`,别搜盘。判定标尺(源自 VisionReward/WorldReasonBench 核心项):323视觉美观 s_a、时间一致性 s_c(主体稳定/运动平滑/不闪烁)、物理合理 s_r、324prompt 对齐,逐项判通过/不通过;**单帧崩坏一票否决**(最差帧原则),首帧从严。325需要总分时 `S(v) = 0.4·s_r + 0.3·s_c + 0.3·s_a`。326327**多镜/整板不要挨张 `view_image`。** 主 agent 直接看图的上限是 5 张(宫格图算一张,328它本来就是为「一张看完整段」拼的)。超过 5 张 —— 多镜、多张宫格、一板卡片的产物 ——329走 catimation-subagents:330并发调 `understand_document` 看图 / `understand_video` 看整段,回来的是文本;每镜的331结论落成 `<文件名>.vision.json` / `.md` 旁挂在素材旁边,下次(或下个人)直接读文本。332需要「看完顺手改提示词重生成」时才升级到子代理。333334触发了视觉+内容两级时,两面是同一次自检,别二选一。任一不达标 → 带**针对性**335改进点重生成(补哪个技法的哪个字段,不是泛泛「优化一下」)。自动修正336**最多 2 次**;`generation_attempts` 到 2 后仍不通过,先向用户说明成本/问题并请求337确认,不得继续付费重试。338**Never** inject the full MP4 or raw bytes into the chat;用户已在聊天里看着它播。339做过的级别记入 `qa_completed`(如 `["visual","content"]`),下游不重复抽帧。340341> 宫格图/故事板/美术设定板 = 辅助素材,不只是检查工具:整板可回喂342> `referenceImages` 传色彩/光线/材质/时代感/空间气质/视觉母题,但不承担故事、343> 构图、动作、顺序、时长、身份或 `firstFrame`;有板即带提示词主导前缀。要精确344> 跟随某格就先拆格、去边框文字、重绘成干净关键帧。跨镜续接优先抽关键帧/尾帧作345> 下一镜 `firstFrame`,不整段回喂 —— 这条默认针对逐镜串行推进。**工作台批量并行346> 时用不了**(下一镜的首帧要等上一镜渲完),取舍规则见 `catimation-video-workbench`。347348## Organize finished clips into the user's workspace (when in a project)349350**COPY, don't move** the finalized MP4(和它的 `_grid.png`)into a tidy assets351subfolder with zero-padded shot ordinals — e.g.352`<workspace>/assets/video/S01_station_wide.mp4`、353`<workspace>/assets/contact-sheets/S01_station_wide_grid.png` — so clips354assemble in order for a later ffmpeg concat. Skip for one-off casual clips.355356## Portrait library(人像库)— push materials in, then reference357358The `catimation` MCP server exposes portrait-library tools359(`add_to_portrait_library` / `list_portrait_library` / `edit_portrait_library` /360`download_portrait_asset`,详见 catimation-portrait-library skill),围绕视频361生成主动使用:传给 `generate_video` 的输入图会自动入库并 dedupe 成同一362`asset://assetId`;用户给的要记住/复用的素材先 `add_to_portrait_library` 再引用;363「还是上次那个人」用 `list_portrait_library` 找回同一 asset 保持身份一致;用户在364人像库页给的 `asset://assetId` 直接传入。365366## Notes367368- One `generate_video` call = ONE video. 多条就多次调用、复用同一 asset://369 保持一致性;可并行,但**一次要发 20+ 个任务先向用户确认**(每条都花钱且渲染370 1–3 分钟)。371- Local input files are handled for you(video/audio 每段 4–15s,合计上限按 model 见372 「模式与素材规则」);pass plain local paths373 and do NOT pre-compress or reject anything for size — there is no client-side size374 cap, large files are streamed to a relay bucket automatically. If a file really is375 too big for upstream, upstream returns the exact limit.376- **Background saving never blocks you**: banner DONE = 视频已在播,本地保存可能377 还在后台(`persistencePending`),当作 COMPLETE 立即回复,不要等待或轮询保存。