关于 scenario-kinetic-music-video
将歌曲制作成与节拍同步的 1080p60 音乐视频,面向动态设计师和导演。它结合 Scenario 生成的主体影像与 JavaScript 引擎,实现精确排字、计时和合成。
主要功能
- 01与节拍和歌词对齐的动态图形
- 02由 Scenario 生成主体影像
- 03可复用的风格圣经与分段简报
- 04横屏与竖屏画布
- 05音画校验工作流
适用场景
- 01制作歌词视频或动态图形视频
- 02制作表演者主导或混合影像的音乐视频
- 03从同一项目渲染竖屏和横屏版本
MCP 相关
通过 Scenario 技能和 MCP 调用生成风格帧与影像;JavaScript 引擎负责精确图形和合成。
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ scenario-labs/ skills --skill scenario-kinetic-music-video安装后在 Claude Code 中输入/scenario-kinetic-music-video确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
README.mdassets/scene.template.jstimeline.template.jsassets/engine/canvas.jscore.jsindex.htmlmain.jsplate.jsroto.jstypekit.jsassets/engine/scenes/hud.jsassets/npm/package-lock.jsonpackage.jsonreferences/agent_brief_template.mdaudio_editing.mdengine_api.mdlessons.mdmotion_library.mdpipeline.mdscripts/audio_analysis.pyaudio_paths.pyav_sync_check.pybeatwarp.pydance_sync_check.pyfixmatte.pylipsync_check.pylyrics_align.pymatte_fallback.pymatte_keyed.pymatte.swift详细介绍
动态音乐视频
输入一首歌,即可生成一支 1080p60 音乐视频,可制作成适合 YouTube 和 X 的横屏版本,也可制作成适合 TikTok、Reels 和 Shorts 的竖屏版本:一支随音乐剪辑的动态设计师作品集。动态字体、2D 和 3D 图形及转场会与节拍和演唱音节精准合拍。若创意需要表演者,还会穿插生成的主体影像。成片只使用获批的母带作为配乐。保留原始母带;经授权的音频剪辑会生成新的版本化母带。
各工具各司其职:
- Scenario 提供代码无法实现的内容:拥有真实物理效果、编舞、发型和口型同步的一致主体,并能采用各章节所需的不同艺术风格。
- JS 引擎 提供视频模型无法实现的内容:精准排版、与起音和节拍逐帧同步、信息图、围绕主体合成,以及零生成成本的无限次重渲染。
- 子 Agent 为每个章节配备专属设计师。共享的风格手册和验证循环能确保整体风格统一。
连接方式和核心生成循环:请参阅此仓库中的 scenario 技能。若要制作不使用引擎的歌曲转视频剪辑,请参阅 scenario-seedance-music-video。如果你的可用技能中缺少此处提到的同级技能,请让用户安装
(npx skills add scenario-labs/skills --skill <name>);若无人值守,则根据工具架构继续操作,并标明缺失项。
开始前请阅读 references/lessons.md。其中每一项都曾耗费真实的时间或金钱。
references/motion_library.md 是设计选项库。
开始之前(询问一次,然后执行)
- 工作区: Scenario 团队和项目(
teams_list;如果有多个,请询问)。 - 主体:
- 由谁或什么来表演:参考图片中的角色、吉祥物、产品、艺术家本人的形象(只能使用其本人的照片并取得同意),或者无人表演(纯动态图形或歌词视频)。
- 影像占比:以表演者为主、混合(通常约为 60/40),或仅动态图形。
- 视觉风格:
- 询问参考素材:用于确定氛围、动态效果和颜色的图片、视频或链接。没有参考素材时,模糊的颜色要求会偏向安全配色。
- 确定 2-4 种视觉风格,以及各部分采用哪种风格。
- 询问哪些内容绝不能出现。
- 默认设置:生成的影像保持原样展示(不加滤镜),在其上方和周围叠加图形,整体呈现快速、欢快的作品集视频氛围。
- 品牌: 是否需要徽标、文字标志或署名。仅在导演指定的位置使用官方文件及官方颜色。
- 预算: 精简(生成 6-10 个视频)、适中(12-20 个)或充足。花费前,用
dry_run为每个付费步骤估价(每种不同的载荷运行一次,然后求总价)。以 720p 为参考:一个 6 秒片段的费用约相当于 20 个风格帧,10 秒片段约相当于 35 个,全混合视频约相当于 500 个。1080p 片段的价格约为 720p 的 2.5 倍,因此报价前要确定影像分辨率。 - 画幅: 每个项目只询问一次画幅:TikTok、Reels 或 Shorts 使用竖屏 9:16,YouTube 或 X 使用横屏 16:9(无人操作且未指定发布平台时使用横屏)。画幅设置位于
engine/timeline.js的CANVAS中;风格帧和影像均按该比例生成,绝不从另一种画幅裁切而来。使用竖屏时,检查目标平台当前的时长上限;如果歌曲较长,或无法检查上限,就将预告片规划为平台剪辑版。仅在用户要求时才同时制作两种画幅:代码可通过--canvas免费重新渲染,大多数镜头也会采用窗口化处理,但必须填满第二种画幅的镜头(片头钩子、对口型特写、结尾)都要再次付费生成(references/pipeline.md§9)。X 的标准账户时长上限为 2:20,因此要规划预告片。 - 歌词: 如果用户提供了歌词,则使用提供的版本(优先于任何转录文本)。否则,转录歌词,并在最后标出不确定的词。
如果无人可以回答问题,就为创意选择合理的默认设置,并将其写入 TREATMENT.md。不要自行设定预算:如果用户未说明预算,或未明确指定团队和项目,就在第一个付费步骤之前停止,并说明缺少哪些信息。
工作流
1. 搭建项目并分析歌曲
在新的项目文件夹中运行 bash <skill>/scripts/scaffold.sh <song>,然后遵循
references/pipeline.md §2:
audio_analysis.py会生成分轨文件和engine/data/audio.json:包含节拍、重拍、底鼓/军鼓/人声起音,以及 60 fps 包络。测量节奏速度;标注可能不准确(一首标注为“130 BPM”的歌曲,实际速度为 98 BPM,只是鼓点采用了双倍速度)。- 运行
lyrics_align.py transcribe,然后手动校正analysis/lyrics.txt,再运行lyrics_align.py align,生成包含词语起音时间的engine/data/lyrics.json。 - 用
plot_lyrics.py目测检查时间点。可以播放时就试听;声谱图可以定位起音,但无法确认发音或音乐连贯性。
1a. 按需编辑配乐
如需修正发音、修改歌词、替换段落或进行结构性剪辑,请阅读
references/audio_editing.md。使用 scenario-ace-step 执行其 Cover/Repaint 契约。选定候选版本之前,保留当前剪辑版和母带;保留约定时间窗口之外的音频,并在应用修改后重建受影响的时间数据。仅修改画面的修订版沿用已批准的配乐。
2. 研究(并行、后台执行)
在处理其他事项的同时,启动两个可联网的子 Agent:
- **文化:**围绕歌曲主题,寻找易于辨认的事件、梗和视觉套路,并为每项整理 已核实的事实、标志性视觉形式、插入创意和简短的屏幕文案。
- **制作:**研究用户提供的动态参考(下载、制作联系表、阅读各帧),以及类型片的方向技巧。提取 时长数值、颜色十六进制值和可实现的 JS 动态效果。
将精简后的结果保存为 analysis/research_*.md。场景 Agent 会连同 references/motion_library.md 一起阅读这些文件。
3. 概念、风格圣经和处理方案
- **为视频确立主线。**最有力的概念会让剪辑本身承载歌曲的意义: 贯穿整支视频的推进装置,例如随着歌曲推进的计数器、时钟或倒计时,同时让剪辑速度或视觉效果随之升级。主线通常体现在 HUD 计数器中。
- STYLE.md(准则):
- 一句话概念和主线
- 画面规则(干净底片和后景/中景/前景图层,或其他方案)
- 各种视觉效果,每种都注明底色、墨色、强调色、渲染规则和匹配的画面风格
- 各色彩的用途
- 4–5 种字体角色,并注明具体字体
- 歌词显示规则
- 将节拍映射到效果的动态语法,以及各段落的剪辑密度
- 主体(身份、可用作图形主题的设计细节)
- 品牌规则、参考和禁用项
- TREATMENT.md:
- 歌曲信息和能量图
- 故事弧线
- 前 3 秒的钩子(视频中最有力的创意,且必须在静音自动播放时也能奏效)
- 每个段落一行:以下拍点对应的时间范围、歌词、视觉效果、必备创意
- 画面素材映射(随着片段确定逐步填写)
- **PLAN.md:**供导演在投入素材费用前审批的一页版方案 (若预算未明确,这也是无人监督时的止步点)。
4. Scenario 中的主体、风格帧和素材
纯图形视频可跳过本节,但静帧或 3D 道具除外。其他情况请遵循
references/pipeline.md §3-5:
- 主体设定表: 根据用户提供的参考图制作转身图、表情图和标注。先查看设定表, 再从中裁剪身份参考图。
- 风格帧: 每个镜头制作一张符合画布比例的静帧(使用支持参考图的图像模型),呈现该章节的视觉风格。构图时为文字留出负空间(竖屏画面中,面部和文字区域应位于安全区域内),并选择适合合成的场景(带轮廓光的黑色空间、纯色无缝背景或白色高调背景)。不要添加文字。唇形同步帧中不能有任何东西遮住嘴部(例如麦克风、手或道具):嘴部被遮挡会导致同步检查失败,而且需要再次付费生成。将风格帧制作成联系表,并以较低成本确认视觉风格(无人值守时,只能在明确的预算范围内继续)。
- 素材生成方式:
- 对动作镜头,从静帧生成视频。
- 对需要与歌曲节拍同步的舞蹈,使用支持参考图和参考音频的视频模型,并提供合成的节拍音轨,之后再进行节拍变速处理。
- 对唇形同步,从静帧和一段人声分轨音频生成音频转视频。另一种方式是使用参考音频生成视频,再通过唇形同步校正模型进行修正。
- 网络、图表、UI 和粒子效果采用代码实现,而非生成。
- 永远不要把歌曲发送给视频模型。若模型的 schema 提供关闭原生音频的选项,请将其关闭(无论如何,渲染结果都只从母带获取声音);并在团队并发上限内分批启动任务(使用
pending_job_ids重新调用jobs_wait,绝不调用job_get)。只有在启动请求因 429parallel-custom-jobs被拒绝时才重新启动:此类请求不会创建任务,跳过会导致剪辑中出现空缺。 - 使用
tools/prep_clip.sh预处理每段素材:提取帧、生成主体遮罩(使用 Apple Vision,失败时改用 Scenario 背景移除;见references/pipeline.md§5)并进行跟踪(MediaPipe 姿态加遮罩边界框)。检查遮罩。将每段素材的内容、关键时刻、时段位置和遮罩质量写入素材映射表。
5. 引擎与场景 Agent
- 先进行冒烟测试:
- 在
core.js中设置PAL,并在engine/timeline.js中设置CANVAS、落在强拍上的章节节点、HUD(标题、标记、章节代码、主线计数器)以及POST(默认中性)。 - 编写一个简短的
_smoke.js:底图 → 主体后方的文字 → 遮罩 → 跟踪标签。 - 渲染一张静帧和一段 5 s 视频,然后使用
av_sync_check.py确认音频和闪光效果同步。
- 在
- 向 Agent 提供简报。 根据模板填写
AGENTS_BRIEF.md,然后在一条消息中为每个章节启动一个后台 Agent。每个 Agent 都会收到自己的文件、时间范围、歌词、必需创意和素材,并先阅读 AGENTS_BRIEF、STYLE、TREATMENT、ENGINE_API 和研究资料。记录 Agent ID。对于预告片或约 30 s 以下的内容,主负责人可以自行编写场景,跳过研究 Agent、PLAN.md 和分章节 Agent;但仍须进行冒烟测试。 - 素材到位后立即交付。 告知需要该素材的 Agent(“素材已就绪:内容、关键时刻、时段位置”)。
- 审核每份报告。 将最佳静帧制作成联系表并仔细查看。引擎层面的问题由你自行修复(因为会影响所有人),并告知 Agent 修改内容。
6. 合成、检查并迭代
- 渲染完整剪辑(3 个 worker,在 M 系列 Mac 上,2:00 的视频约需 5 分钟)。在前台等待渲染完成(或轮询,直到显示
wrote),然后继续验证和交付:渲染或编码仍在进行时,绝不要结束运行,因为无头会话停止时会终止渲染。 - 验证:
av_sync_check.py:预期音频为 0.0 ms,画面为 0 到 +1 帧。相关性低于约 0.15 时,画面延迟没有意义(由E.LEAD提前的类型会显示最多 -3 帧):改为检查起始帧静帧。freezedetect:没有冻结画面。- 每隔 0.5 秒生成一张联系表,每张表覆盖 20 秒。
- 逐帧检查每个段落边界。
- 竖屏视频需检查
still.mjs --safe联系表,每张 20 秒:没有文字、Logo 或人脸超出标示的安全区域。
- **全局视觉检查:**为所有段落生成一张静帧表,然后调整
POST、调色板和 HUD 主题。 - **修改:**将导演的每条意见(以时间戳形式提供)对应到所属段落,然后通过 SendMessage 发回负责该段落的 Agent。恢复工作会保留其上下文。要修复效果较弱的镜头,可换成不同风格的新生成镜头,或用代码处理,绝不要通过添加特效来修复。将备选方案作为时间线
variant提供(用--variant b渲染),不要靠猜测。
7. 交付
- **视频:**提供母版、上传文件(横屏:用于 YouTube 的母版,以及适用于 X 的双遍编码 21 Mb/s 文件,大小低于 512 MB;竖屏:
references/pipeline.md§8 中的竖屏上传文件)、预告片(主歌加第一段副歌),每个变体各提供一个文件;如果需要两种画布,则每种画布各提供一套,并分别添加_16x9和_9x16后缀。使用不同的文件名,因为 macOS 不区分大小写。 - **静帧:**使用引擎渲染全分辨率 PNG,绝不要从压缩视频中截取。
- **风格表/制作花絮:**将其作为产物或文档发布,内容包括调色板、字体、主体表、源素材与最终素材对照、帧索引、流程和迭代次数。
- **报告:**告知用户验证了哪些内容、猜测了哪些歌词,以及本次运行消耗的 CU 总量。总量应根据本次运行中成功的
jobs_wait行计算(cuCost,记录在analysis/jobs.md中;失败的任务会退款,但其行仍保留cuCost);usage是项目级数据,也包含其他工作。
质量标准
- **每个词都要准时出现。**每个唱出的词都必须在其起唱时刻可见(作为重点文字或出现在字幕轨道中),重点文字必须在起唱帧达到峰值。
- **融合,而非装饰。**每个素材片段都要有与之互动的图形元素(通过蒙版置于其后、跟踪素材、配合其动作进行计时,或延续其形状)。素材像素不得改动。
- **没有静止帧。**素材始终实时播放,且画面中始终有元素在运动。
- **每帧一个焦点。**文字要衬托主体,绝不遮挡面部。位于主体后方的文字仍须清晰可读。竖屏视频中,每个词、Logo 和人脸都必须位于安全区域内。
- **段落变化。**混合不同视觉风格、2D 和 3D、海报式冲击效果和安静的字幕。连续两行不得使用相同的文字处理方式。剪辑密度要随着歌曲能量增强而提高,Logo、片尾卡等重点展示内容要留足时间。
- **光敏性。**每秒全画面亮度翻转不得超过 3 次。
- **完成前亲自观看,**然后再检查一遍开头 3 秒。
此技能中的文件
- 设置和分析:scaffold.sh、 audio_analysis.py、lyrics_align.py、 plot_lyrics.py
- 由 scaffold.sh 复制到新项目中的锁定版 JavaScript 依赖项: package.json、package-lock.json
- 用于转录、绘图和人声切片的已批准母带音轨查找: audio_paths.py
- 影像素材生成辅助工具:synth_beat.py、 beatwarp.py
- 影像素材准备:prep_clip.sh、prep_video.py、 matte.swift、fixmatte.py、 matte_keyed.py、matte_fallback.py、 track.py
- 同步检查:lipsync_check.py、 dance_sync_check.py、av_sync_check.py
- 渲染和审阅:render.mjs、still.mjs、 serve.mjs、sheet.py
- 引擎,由 scaffold.sh 复制到项目中:index.html、 main.js、canvas.js、 core.js、plate.js、 roto.js、typekit.js、 hud.js,以及 timeline.template.js 和 scene.template.js
- references/pipeline.md:逐步介绍每条命令和 Scenario 调用
- references/engine_api.md:场景契约和完整的
EAPI (画布和安全带、底板、遮罩、跟踪、后期处理、HUD、变体) - references/motion_library.md:视觉效果、字体系统、包含 40 种动作的 技巧库、集成构想、转场、时间安排、缓动和弹簧效果、同步和剪辑密度
- references/agent_brief_template.md:每个场景 Agent 阅读的简报
- references/lessons.md:制作注意事项和经过验证的默认导演方案