AI音乐MV短片制作
以一首歌的情绪、节奏和视觉概念为指引,制作一个短视觉短片。本 Skill 适用于 AI 音乐 MV 短片、歌曲转视频预告、新歌宣传、专辑宣传短片、封面图动画、氛围视觉、虚拟歌手场景和社交媒体音乐预告。
适用范围与相邻路由
歌曲是固定主轴:短片用来放大它的结构、艺人身份、歌词和发行目标。版权未清时只做策划或内部样片,不要把成品当成可公开发布的官方 MV。人像加唱歌音频的请求路由到照片唱歌工作流;从故事到歌词到歌曲的请求路由到定制歌曲工作流;参考歌曲重新演绎的请求路由到翻唱歌曲工作流;广泛的非音乐视频请求路由到通用视频工作室。本路线专注于成品音乐变成短视觉短片。缺歌时不要从主题同时生曲。
输入与默认值
硬性输入是:
- 一首已定稿的歌或可访问片段,其真实时长能切到一个支持的视频时长;
- 一条主路线:表演、叙事、歌词或可视化。
只询问缺失的硬性输入。复用已知的曲风、能量、开场图片和画幅。封面图或开场静帧不是硬性输入。当视觉方向已存在且没有可用封面或开场静帧时,用 beatra.images.generate 单独付费生成一张封面或关键帧。对于宿主 Agent 可访问的本地音频或图片文件,仅在查看之后使用随包上传助手:
python3 scripts/mcp_client.py upload ./song-excerpt.mp3 --mime-type audio/mpeg
python3 scripts/mcp_client.py upload ./cover-art.png --mime-type image/png
上传只是传输,不是创意审阅。保留返回的素材引用,绝不向远程工具传递本地路径。
默认先切高潮或副歌 20–30 秒再出画面,不要整首硬出。保持 model: "auto",画幅取自源文件。在任何付费调用之前构建一份紧凑的音频-视觉映射:副歌或能量、主氛围、节奏、视觉主题、主体、动态、配色、镜头、开场图片和落幅图片。把节拍、乐句或高潮切点写入确认卡。按视觉控制路由:
- 文本加兼容的驱动音频 →
beatra.videos.generate; - 严格的确认封面图或人物开场 → 带驱动音频的
beatra.videos.animate; - 严格确认的开场和结尾图 →
beatra.videos.interpolate; - 仅作松散氛围参考的音频 →
beatra.videos.generate_from_references。
赠送封面交付后,若该静帧就是开场画面,优先使用带驱动音频的 beatra.videos.animate。查看真实音频时长,并写入大于等于该时长、且当前信息卡允许的最小整数视频 duration。不要为了便宜而缩短音轨。如果没有任何当前信息卡允许完整容纳该片段的时长,停止并询问最小的兼容片段调整。
黄金路径
先锁歌与版权边界,再选主路线,把节拍、乐句或高潮切点写入确认卡,然后才出短视觉。
-
查看音乐片段和每一个可用的图片。记录音频的实际 MIME 类型、字节大小和真实时长。记录每张图片的实际 MIME 类型、宽度、高度、画幅和字节大小。识别副歌、能量、主氛围、节奏以及本短片应交付的视觉方向。
-
构建音频-视觉映射:副歌或能量、主氛围、节奏、视觉主题、主体、动态、配色、镜头、开场图片和落幅图片。然后写出一条正向提示词,编码本短片的视觉对音乐的回应。
-
如果没有可用封面或开场静帧,调用
beatra.models.list并传入{"capability":"text_to_image"},出示该图片阶段自己的确认卡,并提交一次beatra.images.generate封面或关键帧。在任何视频工作之前交付并查看该静帧。这个赠额级阶段并不授权beatra.videos.generate、beatra.videos.animate、beatra.videos.interpolate或beatra.videos.generate_from_references。例如:printf '%s' '{"prompt":"Album-cover keyframe of a neon-soaked night drive through rain, cinematic teal-and-magenta palette.","count":1,"client_request_id":"opaque-mv-cover-id"}' | python3 scripts/mcp_client.py call beatra.images.generate -
按视觉控制选择路线。调用
beatra.models.list并传入匹配的能力,确认某张当前模型卡接受每一个实际媒体事实、驱动音频组合以及所选的视频时长。除非用户已选定一个具体的可用模型,否则保持模型为auto。写入大于等于真实歌曲时长、且当前信息卡允许的最小整数duration。不要省略duration,即使模型是model=auto。任何数值估价都只是暂定值;终态任务的billing.net_charged_credits才是最终费用。 -
在创建任何视频
client_request_id或调用beatra.videos.generate/beatra.videos.animate/beatra.videos.interpolate/beatra.videos.generate_from_references之前出示入场卡:路线和 MCP 工具名、实时信息卡时长、若已设置的分辨率、若已设置的画幅、实时暂估价、注册赠额 600 分通常买不起这一单视频,以及余额不足时怎么办。规划、比较或「去做这条短片」不构成批准。在用户确认已充值或余额足够覆盖本次估价之前,不要提交。 -
冻结确切的路线、音频、源图片、使用参考媒体时的参考、提示词、所选时长、模型行为,以及一个不透明且稳定的
client_request_id;然后恰好提交一次视频调用。只调用随包scripts/mcp_client.py:MCP 工具名是 CLI 参数,其参数是标准输入上的 JSON。例如,文本加驱动音频:printf '%s' '{"prompt":"A neon-soaked night drive through a rain-streaked city, reflections shimmering on the windshield, the beat syncing with passing streetlights, cinematic teal-and-magenta palette.","audio":{"type":"artifact","artifact_id":"art_song"},"duration":10,"client_request_id":"opaque-mv-generate-id"}' | python3 scripts/mcp_client.py call beatra.videos.generate严格的封面图或人物加驱动音频:
printf '%s' '{"image":{"type":"artifact","artifact_id":"art_cover"},"prompt":"The cover art comes alive: light blooms across the frame, particles drift upward, the subject's eyes slowly open in time with the music.","driving_audio":{"type":"artifact","artifact_id":"art_song"},"duration":8,"client_request_id":"opaque-mv-animate-id"}' | python3 scripts/mcp_client.py call beatra.videos.animate严格的开场和结尾图:
printf '%s' '{"first_frame":{"type":"artifact","artifact_id":"art_open"},"last_frame":{"type":"artifact","artifact_id":"art_end"},"prompt":"A surreal transition from a desolate moonlit shore to a vibrant sunrise festival, the energy building with the music.","driving_audio":{"type":"artifact","artifact_id":"art_song"},"duration":10,"client_request_id":"opaque-mv-interpolate-id"}' | python3 scripts/mcp_client.py call beatra.videos.interpolate音频作为松散氛围参考:
printf '%s' '{"references":[{"kind":"audio","media":{"type":"artifact","artifact_id":"art_song"}},{"kind":"image","media":{"type":"artifact","artifact_id":"art_mood"}}],"prompt":"A dreamlike sequence of a dancer moving through shifting colored smoke, the visuals guided by the song's energy and the mood reference palette.","duration":10,"client_request_id":"opaque-mv-references-id"}' | python3 scripts/mcp_client.py call beatra.videos.generate_from_references不要配置、调用或使用宿主 Beatra Connector。不要使用 REST/OpenAPI 回退。恰好提交一次所选的视频工具。
-
立即记录返回的任务 ID,并用
beatra.tasks.get轮询同一任务直到终态。交付每一个返回的视频素材或链接。只报告实际返回的任务状态、解析后的模型、尺寸、时长、用量和billing.net_charged_credits。审阅可访问的结果,检查视觉对音乐的回应、动态、氛围、主体稳定性、音轨的存在和处理、比例和实际时长。说明宿主 Agent 能和不能查看的内容。
付费变更、恢复与取消
可选封面阶段和视频阶段是带有不同 ID 的独立付费请求。更换音乐片段、视觉方向、封面图、提示词、模型、所选时长、画幅或视频控制,都属于新的逻辑付费工作:创建新 ID,出示变更后的入场卡,并重新取得充值或余额确认。绝不要为参数不同的请求复用 ID。遇到 insufficient_balance 时,转述返回文案,充值 URL 保持原样,只有用户说已充值后才用同一冻结 ID 重试。
如果创建响应丢失,只用相同的阶段 ID 重放字节完全一致的冻结负载。如果任务 ID 丢失,调用 beatra.tasks.list 查找相关能力,用 beatra.tasks.get 检查可能的候选任务,并对照该阶段的私有账本确认后再考虑相同重试。排队和运行中是进度状态,不是失败。在规划变更工作之前先恢复原阶段;绝不重复付费提交,也不猜测其扣费或退款。
只有当用户要求取消时才调用 beatra.tasks.cancel。调用一次,并用 beatra.tasks.get 确认最终的终态。409 表示取消未确认,因此继续轮询同一任务,不要创建替代工作。
账户余额
用户问还剩多少积分,或某次实时估价够不够时,调用 beatra.wallet.get。问已经扣了多少
时,调用 beatra.wallet.ledger。两者都是只读的。不要臆造查余额或充值的工具。也不要把
wallet.get 变成每次付费提交前的必需步骤。
模型卡返回里带 top_up 块时,按卡片给出的档位和顺序原样转述。不要给档位排高低,不要
贬低其中任何一档,也不要替用户挑。选哪一档是用户自己的事,钱包页会把整份清单摆在他
面前。任何时候都不要凭记忆报档位。
按任务查阅参考
- 在构建音频-视觉映射、选择路线、核对实时模型事实、构造确切负载、轮询、恢复、取消或审阅视觉对音乐的回应时,阅读 音乐短片工作流(references/workflow.md)。
- 仅当授权或共享凭据需要处理时,阅读 安装与授权(references/installation-and-auth.md)。
- 关于非计费、尽力而为的安装登记步骤,阅读 安装登记(references/installation-registration.md)。
- 关于共享的终态任务和素材语义,阅读 任务与结果(references/tasks-and-results.md);关于返回的计费或错误详情,阅读 计费、错误与恢复(references/billing-errors-and-recovery.md)。
- 当随包客户端无法连接时,阅读 随包 MCP Client 连接诊断(references/mcp-connection.md)。不要配置宿主 Connector。
- 关于更新保证和控制方式,阅读 自动更新与安全(references/automatic-updates-and-safety.md)。
- 仅当用户要求移除本包或共享凭据时,阅读 卸载与断开连接(references/uninstall-and-disconnect.md)。
运行时与安全自动更新
每次 Beatra 操作都使用或调用随包 scripts/mcp_client.py。在每个安装中静默地每 24 小时最多检查一次更高版本。更高版本可用时,不另行确认而自动安装。它只从本包、渠道和语言对应的固定官方发现地址与不可变 CDN 路径下载,校验发现数据、压缩包、清单和每个打包文件,并且只替换本包文件。
更新检查、下载、校验、替换、回滚和恢复失败时,现有安装仍可使用,原本请求的命令继续执行。更新失败不会授权另一项付费请求。设置会在此安装中持续生效。
python3 scripts/mcp_client.py update --auto off
python3 scripts/mcp_client.py update --auto on
python3 scripts/mcp_client.py update --check
--auto off 禁用静默检查,--auto on 恢复静默检查,--check 报告官方可用版本而不替换文件。
微信扫一扫