关于 scenario-video
scenario-video 是一项 Scenario 技能,介绍视频生成与编辑模型的发现、调用和迭代流程。适合制作或修改视频的创作者,涵盖文本与图像生成、配音、唇形同步、放大及剪辑工具。
主要功能
- 01搜索并选择视频模型
- 02按架构配置生成参数
- 03文本或图像生成视频
- 04编辑、配音与唇形同步
- 05裁剪、拼接及视频放大
适用场景
- 01将静帧制作成短视频
- 02为视频翻译对白并同步唇形
- 03延长片段或调整画面比例
MCP 相关
该技能通过 Scenario MCP 工具推荐或搜索模型、检查输入架构、上传素材、运行生成与编辑任务,并查看或下载结果。
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ scenario-labs/ skills --skill scenario-video安装后在 Claude Code 中输入/scenario-video确认已加载。
详细介绍
场景视频生成与编辑
概述
Scenario 通过一个 MCP 工作流提供丰富的视频目录:包括文本生成视频和图像生成视频,以及视频生成视频编辑器、口型同步、升频和确定性的剪切/拆分/拼接工具。各系列的接口约定:scenario-kling、scenario-veo、scenario-seedance、scenario-gemini-omni、scenario-luma-video、scenario-runway、scenario-grok-imagine-video、scenario-wan、scenario-minimax-video、scenario-vidu。
连接和核心生成工作流:请参阅 scenario 技能。如果此处提到的某项相关技能不在可用技能中,请让用户安装它
(npx skills add scenario-labs/skills --skill <name>);若无人值守,则根据工具架构继续操作,并指出这一缺口。
快速参考
| 步骤 | 工具 | 说明 |
|---|---|---|
| 查找模型 | recommend 或 search | 使用 recommend 时,以用户自己的措辞描述需求,并从其枚举值中选择一个 capability(歌曲对应 img2video、video2video、audio2video;升频视频素材和将其与音轨同步都属于 video2video);按名称查找时使用 search |
| 检查输入 | model_schema_get | 始终在 model_run 之前调用;视频架构差异很大(时长、宽高比、帧锚点) |
| 上传源素材 | upload_asset | 本地静态图像或视频片段会变为一个 asset_id |
| 生成 | model_run | 生成视频时使用 wait=false;先用 dry_run=true 估算费用 |
| 等待 | jobs_wait | 使用返回的 pending_job_ids 重复调用,直到完成;其约 180 秒的超时不代表错误 |
| 查看 | asset_display / asset_download | 内联显示;asset_download 会返回文件 URL,使用 curl -L 保存 |
示例:将主视觉静帧制作成短广告片
- 用用户自己的措辞作为
prompt调用recommend(需求是一种能力,即img2video);按照scenario技能的指引处理next_step。 - 对选中的模型调用
model_schema_get。留意图像字段、时长选项,以及任何末帧锚点。 - 对静帧调用
upload_asset;它会返回asset_id="asset_abc"。 - 调用
model_run,使用parameters={"image": "asset_abc", "prompt": "Close-up on the mug; slow dolly-in as steam curls through window light, shallow focus on the rim. Room tone and a soft kettle hiss, no subtitles."}并设置wait=false。返回一个job_id。 - 使用
job_ids=["job_xyz"]调用jobs_wait;只要还有待处理任务,就使用pending_job_ids再次调用。 - 对输出调用
asset_display(asset_id),然后调用asset_download(不指定format)。
源图像已经确定了画面风格,因此提示词只需描述动作、镜头和时序(“向左环绕”“停留在最终姿势”),每次重试只改一个分句。首帧字段会固定片段的开场方式(如果提供了末帧字段,则会固定片段的收尾方式;且末帧字段只能与首帧字段同时使用:单独使用会报 400 错误 A first frame must be provided if a last frame is set);参考图像字段则用于传递角色身份和画面风格,但不固定任何时刻。因此,精确的开场构图应通过渲染后的静帧提供,反复出现的角色或产品则应作为参考图像提供;一次运行能否同时使用两者取决于模型架构,而有些模型禁止同时使用这两项。参考音频字段是提示词必须明确说明用途的引导:它的作用(在某一类模型中控制时序和能量,在另一类模型中提供人声)以及它能否单独使用,还是必须同时提供图像或视频参考,都由该系列技能的约定规定。但对于每个模型成员,如果在角色参考旁静默地传入一段音轨,很容易被忽略,因此提示词要说明音轨的用途(语音场景写“参考音频是她本人的声音,与口型同步”;音乐场景则说明剪辑应落在哪个节拍上)。训练好的 LoRA 不会随之传入:在编写本文时,没有视频模型成员接受 loras,因此自定义风格需通过使用 LoRA 生成的静帧传递,并将其作为首帧或参考图像。先用成本最低的分辨率档位和最短的实用 duration 进行迭代,再将选中的成片放大:在更高档位重新运行属于一次新的生成,因为许多视频模型架构没有 seed,也没有任何架构保证跨档位复现同一镜头。
镜头提示词
将提示词写成镜头指导句,而不是标签:镜头景别、场景、主体和一个动作、一个明确命名的缓慢运镜、光源、风格,以及一条音频说明,并按该系列技能规定的顺序排列。明确命名的运镜和具体的光源在生成后仍能保留;情绪词则不能。
许多生成器会随画面一起返回声音(对白、音效、环境声,有时还包括配乐),由 generateAudio 或 audio 控制(若模型架构包含其中一项),且各自都有默认值;如果两者都没有,搜索结果会说明是否会返回声音,而提示词是控制返回内容的唯一手段。音效和环境声用普通文字描述,对白则放在引号中,并只说明应当听到的内容:“不要音乐”可能像指定流派或乐器一样触发配乐自身的审核(配乐会在后期合成中一次性添加;如果后期合成会提供完整配乐,就关闭音频)。如果仍然混入音乐,请关闭音频后重新运行,并使用音效或视频转音频模型添加声音;没有音频开关的模型成员无法这样重跑,因此请改用带有该开关的模型成员。对于画面,仍然要注明排除项,例如“不要字幕,不要屏幕文字”,因为字幕工具只会添加字幕,不会移除字幕。除非模型架构包含 negativePrompt,否则排除项应写在提示词中。观众必须阅读的文字应在后期合成中添加(scenario-video-assembly):生成的文字会出现偏移。
编辑现有素材
所有编辑都通过视频输入模型上的 model_run 完成,模型由 recommend 查找:
- 提示词驱动的编辑(重新设计风格、替换物体、角色或背景,或重新构图为其他宽高比)。重新构图会在画面外进行扩绘,不同于确定性调整尺寸。如果提示词驱动的编辑器未能完成指定更改(如重新着色、替换道具),请编辑静帧:
asset_get会将片段的firstFrame作为免费资源 ID 返回;使用图像模型编辑该静帧,再以其作为首帧重新渲染,并在架构要求传入这对素材的地方同时传入源片段(只有少数模型如此)。 - 口型同步和配音:见下一节。
- 升级至最高 4K。
- 确定性工具(修剪、拆分、调整尺寸、特效、调色、提取帧、移除背景):见
scenario-video-editing。组装完成的剪辑:见scenario-video-assembly。 - 从片段最后一帧延长片段,可使用专用的延长接口,或通过首帧运行串联,突破任一接口的时长上限:对渲染出的片段调用
asset_get,并将其lastFrame资源 ID 作为下一次运行的首帧;编写提示词时应根据画面内容(位置、朝向、镜头所在一侧,确保屏幕方向在衔接处保持一致),而非原计划,因为渲染结果可能会偏离计划;使用model_scenario-video-concat将各次运行拼接起来(这是固定 ID,原因与剪切和拆分工具相同;默认硬切,详见scenario-video-assembly)。
配音不等于口型同步
配音会翻译语音,并保留每位说话者自己的声音、语气和时间节奏。它不会移动嘴部,因此配音后的对话头像仍会做出说原语言时的口型。以下是三个步骤,如下方限制要求,先进行必要的修剪:
- 配音。 将片段作为
file传入,并从架构允许的值中选择必填的targetLang。省略sourceLang以自动检测,因为不同模型表示自动检测的值各不相同。如果翻译必须保留品牌或名称,请选择架构包含keyterms的模型,因为并非所有模型都支持;若该字段为array: true,即使只有一个术语,也要传入["Scenario"]。 - 提取。 配音会返回配音后的视频,而不是单独的音轨;口型同步需要音频资源。使用
model_scenario-audio-extract提取语音。这是固定的第一方 ID:Scenario 在此操作中只有这一个确定性工具,因此发现工具也只是重新推导它。 - 口型同步。 同时传入配音后的视频及其提取出的音轨。没有任何架构说明输入自身的音频是否会保留,因此交付前请试听输出。大多数模型将片段和音轨分别放在
video/audio字段中,其他模型则使用videoUrl/audioFile。并非所有模型都支持时长不匹配控制:支持时,字段为syncMode或lipsyncMode(cut_off、loop、bounce、silence、remap),默认值因模型而异;其中loop和bounce会延长较短的流,而cut_off会在较短的流结束时停止。其他模型则通过loop布尔值来循环音频。
先在风格化角色上评估本地化对话头像的效果,再决定是否承诺在照片级真实角色上实现。
时长限制
如果模型设有输入时长上限,超限时会拒绝请求,而不是截短:30.08 秒的参考素材遇到 30.0 秒的上限,会导致整个运行失败,错误会列出这两个数字。成功的 dry_run 只会为载荷估价,并不能证明它符合上限:通过 asset_get 读取输入素材的时长,再自行与上限比较。上限可能是文件字段上的 max_duration 类型参数、该字段描述中的文字,也可能根本没有,因此两处都要检查;音频输入也和视频输入一样需要检查。如果有上限,在执行受限的运行之前,以及执行任何输出必须与截短后素材匹配的步骤之前(例如配音),使用确定性剪切或拆分工具(出于与上文提取器相同的原因,使用固定 ID):model_scenario-video-cut、model_scenario-video-split。确保时长落在规定范围内,不要刚好卡在边界上。
时长下限和上限同样严格。成员可渲染的最短片段时长会写在其架构中,可能是数值 duration 的 min、duration 枚举 allowed_values 中的最小值,或者字段缺失时的固定时长(一个参考条件成员在创作时为 5 秒,其他成员为 1 或 2 秒)。因此,对第一个选项来说,1 到 2 秒的 VFX 元素不能通过设置 duration: 1 来请求:在用户描述中注明片段长度后调用 recommend,从架构中读取时长下限;如果没有合适的成员,就渲染最短片段,再用 model_scenario-video-cut 截短;或者要求在一个片段中生成多个事件(“连续发生三次爆炸”),再用 model_scenario-video-split 将它们拆分。反过来,若要延长超过 max,请参阅“编辑现有素材”中的末帧链。
唇形同步:视频素材或静帧
有两种路径,取决于手头的输入。视频素材加新音轨时,使用 recommend 和
capability="video2video",并用用户自己的话描述需求:这些成员会重绘嘴部区域,
并保留画面其余部分(video 和 audio,或 videoUrl 和 audioFile;有些成员接受带语音的
text,而不是音频,但两者不可同时使用)。静帧加音轨时,使用 capability="img2video":
会说话的虚拟形象成员会为整个肖像添加动画并生成动作,因此适用于没有视频素材的肖像,
或动作可以舍弃的视频素材;但绝不能用来挽救唇形同步失败的片段,因为结果会是另一个镜头
中的另一段表演。将唇形同步作为能力名称时,系统会重新将其归入这两种路径之一,因此要说明输入。
预检免费,并决定是否运行。同步成员会重绘其检测到的嘴部周围像素;如果人脸在画面中太小、
朝向别处、被遮挡或因运动而模糊,它们就无从重绘,而运行仍会完成并计费,但嘴部依然没有
跟上新音轨,这正是用户报告的“完全没有唇形同步”。对片段使用 asset_display 查看
firstFrame(通过 asset_get 免费获取):嘴唇在显示尺寸下应清晰可辨。若不清晰,先裁剪
画面聚焦人脸(使用 model_scenario-compose-video,可学习合成器 scenario-video-assembly,
以及上述剪辑工具中的固定第一方 ID;或者使用提示词要求收紧画面、聚焦说话者的生成式重新取景;
外扩式重新取景会扩大画面并缩小人脸),不要重试其他成员。裁剪会降低分辨率,因此在为同步运行
定价前,从 asset_get 读取裁剪后片段的宽度和高度,并与成员要求的最低值比较;低于要求时,
先升频,或选择没有最低分辨率要求的成员。如果画面中有多张人脸,请选择支持说话者选择的成员
(在创作时为其中一位设置 activeSpeaker),或裁剪到只剩一位说话者。每位成员的限制都在架构中,
而非描述里:一位成员接受时长为 2 至 10 秒、分辨率为 720p 至 1080p 的片段,其他成员没有这些限制;
video 字段带有 cost_impact: true,因此运行前应先裁剪到规定范围内(见上文“时长限制”)。
这里常见计划门槛:recommend 会在此类成员的排名条目上标记
requires_plan_upgrade: true,并在 required_plan 中注明所需计划(除非其响应表明计划门槛为
_degraded);即便仍然运行,也会返回 403,指出模型及其所需计划,重试无法解决这一问题;
请根据 scenario 技能中的计划表,选择可用成员或提示用户升级。
任务完成只能证明模型运行了,并不能证明嘴部动了。交付前,请下载输出和源文件,并比较相同时间戳的帧
(在本地将两者扫描为联系表,使用 ffmpeg -vf "fps=2",并查看嘴部区域):如果整个扫描中嘴部像素
都未变化,说明模型没有找到人脸;用相同输入仍会重现这一结果,因此应调整取景或更换路径,而不是
更换随机种子。也要试听:输入自身的音轨是否会保留尚无文档说明(见上文“配音”)。
一次生成整首歌曲的视频
使用 capability="audio2video" 和用户的文字调用 recommend,即可找到能一次调用将完整歌曲转换为音乐视频的成员。编写本文时,整首歌曲类成员可处理 10 秒到 6 分钟的 audio,并返回与曲目等长的视频(同一排名中也会列出时长上限约为 20 秒的片段类成员),因此:
- 先剪辑。
audio和resolution一样,会影响成本:先用model_scenario-audio-cut剪出最终要用的片段,再对实际载荷执行dry_run。 - 仅在自定义风格下使用风格参考图。 预设
style会忽略styleImage;设置为自定义值才能使用它。角色image是单独的可选字段。它不接受提示词:方向由style、musicStyle和参考图提供。 - 歌词会烧录为字幕。 如果在组装阶段添加字幕(
scenario-video-assembly),请将lyrics留空,否则两组字幕会相互冲突。
整首曲目一次生成时选用此方案;如果要按节拍切分镜头并逐镜头指定方向,请使用 scenario-seedance-music-video。启动时设置 wait=false 并使用 jobs_wait,因为任务耗时会随歌曲时长增加。
常见错误
- 仅凭任务已完成的状态,就提交口型同步结果:常见故障是新曲目下嘴部静止不动,因此请先将画面与源素材进行比较。
- 未调用
model_schema_get就调用model_run:适用于 Kling 的载荷不一定适用于 Veo。 - 将搜索结果视为固定不变:目录会持续更新,因此请重新运行
search并优先选择未弃用的结果(deprecated:<replacement_id>标签会标明后继项)。系列可能会提前通知后整体淘汰某一代,且已退役成员的专属控制项(例如关键帧强度、fps 枚举)不会沿用:请重新读取后继项的架构,而不要照搬旧载荷;如果保存的 ID 返回 404Model not found,请按系列名称执行search,不要重试该 ID。 - 在启用音频的提示词中排除音乐:配乐会单独接受审核,即使在排除项中写“无音乐”或指定某种曲风、乐器,也会触发审核。请正向描述场景内声音(“室内环境音、脚步声、一个人的声音”),或关闭音频字段。