mcpField
S
scenario-kinetic-music-video

scenario-kinetic-music-video

github.com/scenario-labs创意与媒体1.2k205 次安装1 天前更新
代码仓库

关于 scenario-kinetic-music-video

将歌曲制作成与节拍同步的 1080p60 音乐视频,面向动态设计师和导演。它结合 Scenario 生成的主体影像与 JavaScript 引擎,实现精确排字、计时和合成。

主要功能

  1. 01与节拍和歌词对齐的动态图形
  2. 02由 Scenario 生成主体影像
  3. 03可复用的风格圣经与分段简报
  4. 04横屏与竖屏画布
  5. 05音画校验工作流

适用场景

  1. 01制作歌词视频或动态图形视频
  2. 02制作表演者主导或混合影像的音乐视频
  3. 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.md
assets/
scene.template.js
timeline.template.js
assets/engine/
canvas.js
core.js
index.html
main.js
plate.js
roto.js
typekit.js
assets/engine/scenes/
hud.js
assets/npm/
package-lock.json
package.json
references/
agent_brief_template.md
audio_editing.md
engine_api.md
lessons.md
motion_library.md
pipeline.md
scripts/
audio_analysis.py
audio_paths.py
av_sync_check.py
beatwarp.py
dance_sync_check.py
fixmatte.py
lipsync_check.py
lyrics_align.py
matte_fallback.py
matte_keyed.py
matte.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)。只有在启动请求因 429 parallel-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 秒。

此技能中的文件

评论

支持 Markdown