关于 layer-video-continuity
layer-video-continuity 是保持 AI 生成视频镜头间视觉一致性的技能,指导参考素材选择、分镜规划、模型筛选和草稿审阅,适用于多段视频组成的序列。
主要功能
- 01以前一镜头末帧衔接下一镜头
- 02重复使用角色参考文件
- 03按支持的引导素材类型选模型
- 04逐镜规划动作与屏幕方向
- 05先用草稿审阅镜头序列
适用场景
- 01让连续镜头中的动作自然衔接
- 02保持过场动画角色外观一致
- 03统一场景的光线与屏幕方向
- 04在完成制作前预览多镜头序列
MCP 相关
该技能介绍了使用 Layer 的 `list_base_models` 和 `execute_forge` 等工具;未说明 MCP 连接方式。
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ layerai/ skills --skill layer-video-continuity安装后在 Claude Code 中输入/layer-video-continuity确认已加载。
详细介绍
Layer 视频连续性
概述
单个镜头能够保持自身的连续性。但一组镜头不行:除非有东西能跨越剪辑衔接,否则每次生成都会重新创造人物的脸、服装、光线和场景。本技能讲的就是如何保持这些元素的一致性。单镜头的运动和摄影机控制由 layer-video 和 layer-video-direction 负责;将完成的镜头剪辑到一起由 layer-video-timeline 负责;分镜则由 layer-art-direction 提供。
保持连续性的三种方式,按重要性从高到低排列:
- 前一个镜头的最后一帧,作为下一个镜头的第一帧。
- 角色元素:参考图像或角色片段,附加到每个镜头。
- 一张已批准的静帧,所有镜头都以此为基础绘制。
如果此处提到的同类技能不在你可用的技能中,请让用户安装(npx skills add layerai/skills --skill <name>);若无人值守,请根据工具架构继续操作,并标明这一缺失。
快速参考
| 需求 | 方式 |
|---|---|
| 镜头 N+1 从镜头 N 结束的位置开始 | 将镜头 N 的视频 file_id 放入 first_frame 槽位,并设置 video_frame: "last" |
| 精确时间点的帧 | 在同一引导条目中设置 video_frame_seconds;它会覆盖 video_frame |
| 每个镜头中的角色保持一致 | 使用 element_frontal_image、element_reference_image 或 element_video 引导文件 |
| 匹配现有片段的运动 | reference_video |
| 接受上述所有类型的模型 | 使用 list_base_models,并在 filter.guidance_file_types 中列出序列将使用的每种类型 |
| 槽位接受的内容及其限制 | 对选定的模型调用 get_base_model |
| 以较低成本探索整个序列 | 每个镜头都设置 draft: true,只完整生成要保留的镜头 |
引导条目由 {file_id, type} 组成,还可选填 video_frame、video_frame_seconds 和
weight。放入图像槽位(first_frame、last_frame、reference_image、
init_image)的视频会提供一帧:默认使用第一帧,放入 last_frame 时则使用最后一帧。因此,若要让镜头从前一个镜头的结束画面开始,必须明确指定:video_frame: "last"。
根据模型接受的输入选择模型
在考虑提示词之前,先确认模型是否具备所需能力。调用 list_base_models,设置
filter.use_case: "image_to_video",并在 filter.guidance_file_types 中列出序列所需的每个槽位,例如 ["first_frame", "element_frontal_image"]。模型必须接受列出的所有类型,因此如果结果为空,就说明组合要求过高:应删去最不重要的槽位,而不是凭空编造一个模型。Seedance、Kling 或 Veo 等系列接受的输入各不相同,因此应由筛选条件而非系列名称来决定。
然后对第一个结果调用 get_base_model。它会提供每个槽位的文件和长度限制,以及该系列自己的提示词指南;这才是适合该模型的措辞方式。整个序列使用同一个模型:不同系列会以不同方式渲染同一个元素,剪辑后就会显露差异。
用元素保持角色一致
将相同的元素文件原样附加到每个出现该角色的镜头中。面部使用正面图像,服装使用其他角度的参考图像;如果模型支持,还可以使用元素视频。请根据已批准的设计一次性制作这些内容(角色设定表可使用 layer-game-assets),并重复使用其 file_id 值:绝不要在序列中途重新生成元素。
元素用于保持身份一致,而非确定位置。提示词仍需说明角色所在的位置、正在做什么以及面朝哪个方向。
将序列写成镜头清单
根据分镜,在生成任何内容之前,每个镜头写一行:
- 每个镜头只包含一个动作。 一个镜头如果既要展示开门、角色反应,又要拔剑,就很难把任何一个动作拍好。请拆分。
- 屏幕方向。 如果主角从画面右侧离开,就让他们从画面左侧进入下一个镜头。在两个提示词中都注明。
- 视线和光线。 每场戏只指定一次光线方向,并在该场戏的每个镜头中逐字重复。
- 剪辑类型。 连续动作会接在上一镜头的最后一帧上。切换到新角度时不会衔接:从已批准的静帧或元素开始,否则新角度会继承旧构图。
先起草整个序列
如果 get_base_model 报告了 capabilities.draft,请为每个镜头使用 draft: true 进行渲染,将整个序列作为剪辑来审看,然后只完成你决定保留的镜头。完成镜头时,需再次调用 execute_forge,将 base_model_id 设为草稿的 draft.completion_base_model_id,将 batch_size: 1,并将草稿的 file_id 作为类型为 draft.completion_guidance_type 的指导文件,且不提供提示词:这样会保留草稿的提示词、动作和时长。使用完成模型和草稿的 duration_seconds 估算完成成本。草稿可能会过期(draft.status、expires_at),因此请尽快完成。
串接草稿可以低成本预览剪辑,但完成操作会重新渲染整个镜头,因此其最后一帧可能与草稿不同,导致衔接位置偏移。如果衔接必须精确,请先完成第 N 个镜头,再根据已完成的镜头生成第 N+1 个镜头;请说明这意味着每个串接镜头都要额外运行一次。使用 duration_seconds 设置时长。
示例
“一个 4 镜头的过场动画:我们的骑士走向大门,推开大门,一条龙抬起头,骑士拔出她的剑。”
- 已批准的骑士设计和正面视图已有
file_id值。无需上传。 - 使用
filter.use_case: "image_to_video"和filter.guidance_file_types: ["first_frame", "element_frontal_image", "element_reference_image"]调用list_base_models。选择第一个结果;调用get_base_model获取槽位限制、时长、capabilities.draft和提示词指南。 - 镜头清单:(1) 远景,骑士从左向右走向大门;(2) 连续镜头,她推开大门,与上一镜头衔接;(3) 新角度,龙抬起头,从已批准的龙静帧开始,不添加骑士元素;(4) 中景,骑士面朝右侧拔剑,并附上元素。
- 估算任务费用:每种类型各估算一次(带元素的镜头、衔接镜头、龙的镜头),再按草稿的时长估算四个完成镜头。报出总价;超过 20 CUs 时,等待明确同意。
- 起草全部四个镜头,每个镜头都将骑士元素设为
{file_id, type: "element_frontal_image"}和{file_id, type: "element_reference_image"}。镜头 2 添加{file_id: <shot 1 video>, type: "first_frame", video_frame: "last"}。 - 按
poll_interval_seconds轮询每个镜头。将四个镜头作为序列审看;如果有镜头破坏屏幕方向,就重新起草,然后完成保留的镜头,并从已完成的镜头 1 重新串接镜头 2。 - 将已完成镜头的
file_id值交给layer-video-timeline,用于剪辑。
常见错误
- 将上一个片段放入
first_frame,却不设置video_frame: "last",导致镜头从上一个片段的开头重新开始。 - 根据模型系列名称选择模型,而不是根据
guidance_file_types选择。 - 在序列中途更换模型。
- 在不同镜头之间重新生成角色的元素图像。
- 跨越切换到新角度的剪辑进行串接,导致新镜头继承旧构图。
- 在一个镜头中塞入多个动作。
- 在以草稿审看整个序列之前,就为完整质量的镜头付费。
- 在衔接必须精确时,仍从草稿进行串接。