Communitygithub.com

event4u-app/motion-choreographer

将已锁定的静态图像与12格场景蓝图转化为针对视频适配器(如Veo/Kling/Sora)的精细运动提示,涵盖摄像机运动、主次运动、物理约束和音频同步。

motion-choreographer 是什么?

motion-choreographer 是一款用于 AI 视频生成的智能体技能,其核心任务是将已锁定的静态图像(通过 operator-pick.sh 选定)和结构化的场景蓝图(blueprint.json)转化为目标视频生成适配器(如 Veo、Kling、Sora、Higgsfield 等)所需的精确运动提示。该技能自动从适配器合约(adapter-contract.md)读取各适配器的能力,包括支持的运动类型、音频模式(原生或无)和时长限制,并据此调整输出。工作流程包括:检查必备文件(蓝图、选择结果、角色锁定)、生成摄像机运动指令、主次运动描述(基于蓝图动作,带节拍计数和时间分段)、条件性音频方向(支持原生音频时输出对话、环境层和同步提示;不支持时回退到 ffmpeg 复用并警告对话丢失)、物理约束和负面锁定列表。最终输出三份文件:适配器合约标准 JSON(motion-prompt.json)、供人工审查的标记文本(motion-prompt.txt)以及包含适配器选择理由的适配器笔记(adapter-notes.md)。该技能严格遵守策略要求,拒绝任何可能掩盖 AI 生成信息披露、删除来源标记、克隆声音或冒充品牌的行为。它不与任何网络 API 交互,专注于纯文本生成和调节。

兼容平台✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/event4u-app/agent-config/tree/HEAD/dist/agent-src/skills/motion-choreographer

在你喜欢的 AI 中提问

打开一个已预加载此 Agent Skill 的新对话。

文档

motion-choreographer 是做什么的?

将已锁定的静态图像与12格场景蓝图转化为针对目标视频适配器的运动提示。包含摄像机编排、主体运动、环境二次运动、物理约束,以及当适配器声明 audio: native 时的同步音频方向块。 从 adapter-contract.md 读取适配器能力;绝不调用网络 API。

使用时机

  • 图像已锁定(操作者通过 operator-pick.sh 选定了一个候选帧),下一步是为视频适配器生成运动 + 音频方向。
  • 蓝图已存在于 scenes/<id>/blueprint.json,但尚未输出运动提示。
  • 提供商切换(Veo → Kling, Sora → Higgsfield)需要为同一场景针对新适配器的能力配置重新调整输出。

不要在以下情况使用:

  • 蓝图仍为纯文本——先运行 scene-expander → parse-blueprint.sh。
  • 尚未锁定静态图像——必须先完成操作者选择检查点。
  • 输出是静态图像——请使用 canvas-design。

流程

第0步:检查

  1. 读取 scenes/<id>/blueprint.json —— 如果缺失则报错。
  2. 读取 scenes/<id>/selection.json —— 如果缺失则报错;锁定图像路径是运动锚点的必需项。
  3. 通过 scripts/ai-video/adapters/<id>.sh capability 读取目标适配器的能力。缓存 audio=* 以用于第3步。
  4. 如果存在 character.json 锁定,则逐字加载——身份令牌不可更改。
  5. 询问了连续拍摄或连接器?首先读取模型的 start_frame / end_frame —— scripts/ai-video/adapters/<id>.sh capability --model <m>。null 表示未知,从不设为 true。无法锁定帧的模型将被一行理由拒绝,绝不替换(参见 adapter-contract.md#end_image)。

第1步:摄像机编排

输出一个 CAMERA MOTION 块,包含移动类型、距离、速度(秒)和起始-结束取景。

  • 移动类型:lock-off, pan, tilt, dolly-in, dolly-out, truck, pedestal, push, pull, handheld, gimbal-glide, crane, whip。
  • 速度:每秒节拍(0.4s push, hold 1.6s, 0.4s pull)。
  • 起始和结束取景命名(MS → CU, WS → MS)。

蓝图意图类解码——蓝图的 CAMERA 块命名了六个提供商无关的意图类之一;在编码前将其映射到上述移动类型:

意图类移动类型映射
static holdlock-off
push-inpush / dolly-in
pull-backpull / dolly-out
lateral tracktruck / pan
handheld drifthandheld / gimbal-glide
orbitcrane / arc via truck+pan

适配器特性(每个适配器对映射移动的编码)。这些未注明日期且未经提供商文档验证——在信任前请检查模型能力条目(verified, recheck_by):

  • Veo —— 接受命名移动;偏好 ≤ 8s 的片段。
  • Kling —— 运动强度 0–1 token;将我们的速度映射到该值。
  • Sora —— 自然语言描述移动 + 时长;无 token。
  • Higgsfield —— 预设驱动;选择匹配移动的预设;在运动提示中记录预设 ID。
  • LENS 处理 —— 蓝图中的 mm + 光圈转换为提供商最近的镜头 / FOV 表达方式;切勿将原始 mm 转发给缺乏镜头语法的提供商。
  • 时长处理 —— 蓝图值为自由值;在此处限制到提供商上限,并在 review.md 中记录限制(静默限制是漂移缺陷)。

第2步:主要 + 次要运动

两个块:

  1. PRIMARY MOTION —— 主体的动作,按节拍计数,带有物理锚点(质量、接触点、动量)。复用蓝图的 ACTION;根据适配器偏好的动词密度进行调整。
  2. SECONDARY MOTION —— 环境的动态(头发、织物、树叶、水、灰尘、粒子、呼吸)。每行一层。
  3. TIMED SEGMENTS(可选,当片段有多个节拍时) —— 0–3 s: …, 3–7 s: …,覆盖整个时长且无间隙;每个段命名变化的内容,从不描述情绪。

第3步:音频方向(条件性)

如果适配器能力为 audio: native 且蓝图的 audio.enable_native_audio 为 true:

输出一个 AUDIO DIRECTION 块,包含:

  • DIALOGUE TIMING —— speaker @ 0.4s: "line" 每个对话条目。提示本身为英语;每句口语保留其原始语言和文字,并加标签([de] "…")。绝不翻译用户写的台词。
  • AMBIENT LAYERS —— 从蓝图复制;每行一层。
  • SYNC CUES —— 哪个动作节拍对应哪个音频提示(footstep @ 1.2s, door close @ 2.1s)。

如果适配器能力为 audio: none:

  • 输出一个 # AUDIO: ffmpeg-mux fallback 注释,包含蓝图中的音频路径,队列用于拼接时复用。
  • 在运动提示 JSON 中设置 enable_native_audio: false。
  • 蓝图包含 DIALOGUE → 复用回退无法播放文本台词。在 motion-prompt.txt 和 adapter-notes.md 中输出强制的 AUDIO DOWNGRADE 警告块,列出所有无法渲染的对话台词。该决定是否可接受属于编排器关卡(adapter-contract § 音频所有权)——此技能负责翻译,决不验证,也绝不静默删除对话。

第4步:物理约束

输出 PHYSICS —— 模型必须遵守的简短列表:重力方向、接触摩擦力、流体行为、头发/布料惯性、镜头视差。每行一个约束。

然后输出 NEGATIVE LOCKS —— 必须避免的事,每行一个:身份漂移、蓝图未要求的可读文字、多余肢体或手指、镜头列表中不存在的切、不是用户所有的标志。仅锁定蓝图提供理由的内容。

第5步:输出运动提示 JSON

写入 scenes/<id>/motion-prompt.json,格式为适配器合约的标准输入形状。编排器将其管道传递到视频适配器的 submit 子命令。

第6步:验证

  1. JSON 可解析(jq .)。
  2. requires.audio_native 与所选适配器的能力一致。
  3. 运动提示中的时长与蓝图时长完全一致(±0)。
  4. 身份令牌(如果 character.json 存在)逐字保留。

输出格式

  1. scenes/<id>/motion-prompt.json —— 适配器合约标准输入。
  2. scenes/<id>/motion-prompt.txt —— 带标签的散文块(CAMERA MOTION · PRIMARY MOTION · SECONDARY MOTION · AUDIO DIRECTION · PHYSICS),供操作者审查。
  3. scenes/<id>/adapter-notes.md —— 使用的适配器、其能力、所选预设/模型及理由。

注意事项

  • 模型倾向于“改进”蓝图的 SUBJECT 块——身份令牌不可更改;抵制诱惑。
  • 在返回 audio: none 的适配器上选择 audio: native 会产生静默视频——始终先读取能力,切勿根据适配器名称猜测。
  • Higgsfield 预设 ID 必须记录;否则重新运行时会漂移到模型下次选择的任意预设。
  • Sora 时长超过 8s 通常会退化——在适配器表限制处截断;将截断情况告知操作者。

禁止事项

  • 不要为未在当前轮次查询过能力的适配器输出运动提示。
  • 不要跳过静态图像锁定检查——没有锚定图像的运动方向每次调用都会发散。
  • 不要改述 character.json 中的身份令牌。
  • 不要调用任何网络 API——此技能仅进行提供商调节的文本生成。

策略

路径、执行模型及完整集合:请参阅媒体策略前言。

运动提示继承上游蓝图携带的所有约束。在输出提供商调节的散文之前:

  • disclosure —— 每个分发的片段都带有不可移除的 AI 生成披露;拒绝可能抑制该披露的适配器标志。
  • transparency —— 保留提供商来源(C2PA / SynthID);拒绝其效果是去除来源的重新编码标志。
  • voice-cloning —— 当运动提示请求在命名声音中使用 audio: native 旁白时。
  • brand-impersonation —— 当运动提示复制了已知品牌的字幕/吉祥物/标志性转场时。

拒绝并告知;运动提示不能洗白上游技能本应捕获的策略漏洞。

Individual skills in this repo

This repo contains 1 individual skill — each has its own dedicated page.

相关技能