music-video
完成した1曲の楽曲を24fpsのミュージックビデオに変換します。楽曲はマスターオーディオとして扱われ、シーン間隔はそれを正確に1回カバーします。
トリガー
- music video / MV / lyric video / visualizer / storyboard
- 音乐视频 / MV合成 / 歌词动画 / 歌曲动画
- ミュージックビデオ / MV / リリックビデオ / ビジュアライザー / ストーリーボード
機能
code: 固定されたp5.jsおよびp5.brushプロジェクトを初期化し、JavaScriptで楽曲をアニメーション化します。hybrid: ローカルのキャラクター画像、シーンスチル、ビデオクリップを検査し、それらを組み立てます。画像生成や動画生成APIは呼び出しません。- カットポイントおよびアニメーションキュー用のローカルビート、オンセット、低周波数、ラウドネス分析。
- 元の楽曲のみをサウンドトラックとするフレーム正確なアセンブリ。
入力
必須:
song: ローカルオーディオ (.mp3,.wav,.m4a,.flac,.ogg,.aac)brief: ビジュアルのアイデア、対象視聴者、必要な参考資料mode:codeまたはhybrid
オプション:
lyrics: テキストまたは.srt。ボーカルのタイミングが重要な場合、ストーリーボーディングの前に必要です。assets:hybridモード用のスチルとクリップのディレクトリaspect:16:9(デフォルト),9:16,1:1, または4:3
ユーザーが先に楽曲を作成したい場合は、text-to-musicを使用し、その後選択したファイルをこのスキルに戻してください。
出力
<project>/output/final.mp4docs/CREATIVE_BRIEF.md,docs/STORYBOARD.md,docs/TASKS.md,docs/PROGRESS.mdaudio/analysis.json, およびアセットが存在する場合はdocs/inspect.json
ワークフロー
リポジトリルートから python3 skills/music-video/scripts/mv.py を実行します。このスキルが別の場所にインストールされている場合は、このファイルの隣にある scripts/mv.py を使用します。プロジェクトはスキルディレクトリの外に作成します。
- ビデオがJavaScriptで描画される場合は
codeを選択します。ユーザーがスチルやクリップを提供する場合はhybridを選択します。どちらか明確でない場合は一度だけ質問します。 - 隔離されたプロジェクトを初期化します:
python3 skills/music-video/scripts/mv.py init \
--project ./mv-project --song ./song.mp3 --lyrics ./lyrics.txt --mode code
python3 skills/music-video/scripts/mv.py init \
--project ./mv-project --song ./song.mp3 --lyrics ./lyrics.srt \
--assets ./clips --mode hybrid --aspect 16:9
- 楽曲を分析します。テンポ変化は近似値として扱い、セクション境界はオーディオから確認します:
python3 skills/music-video/scripts/mv.py analyze --project ./mv-project
- 歌詞のタイミングを取得します。ユーザーが提供しなかった場合、
NOIZ_API_KEYまたは~/.config/noiz/api_keyが既に存在する場合にのみ speech-to-text を使用します。キーを決して印刷しないでください。どちらも存在しない場合は、歌詞またはタイムスタンプを要求し、楽曲をアップロードしないでください。 - references/opus-5.5-prompt.md を読み、それに従います。シーンコードまたはアセンブリの前に、クリエイティブブリーフとストーリーボードを作成します。他の章を構築する前に、冒頭とメインピークをレビューします。
codeモードでは、描画前に<project>/animation/ANIMATION_GUIDE.mdを読みます。audio/analysis.jsonからPROJECT.bpmとPROJECT.offsetを設定します。固定されたテンプレートキャンバスは1920×1080です。別のアスペクトを使用する前に、studio.htmlとレンダラーウィンドウを変更します。テンプレートレンダラーでモーションを確認します:
node render.mjs --sheet=1,2,3 --out=../output/sheets/pilot.jpg
node render.mjs --strip=START:END --out=../output/sheets/pilot-motion.jpg
node render.mjs --clip --range=START:END --out=../output/pilots/opening.mp4
これらを <project>/animation 内で実行します。Chromeが標準の場所にない場合は --chrome を渡すか CHROME_PATH を設定します。コンタクトシートはレイアウトのみをスクリーニングします。--strip、または冒頭、ピーク、エンディングの再生がモーションレビューです。
7. hybrid モードでは、ローカルメディアを検査し、必要なクリップがない場合は停止します。代替は生成しません。
python3 skills/music-video/scripts/mv.py inspect --project ./mv-project
timeline.jsonを references/timeline.schema.json を使用して作成します。間隔はstart_frameで包括的、end_frameで排他的です。- アセンブルし、結果をプローブします:
python3 skills/music-video/scripts/mv.py assemble --project ./mv-project
タイムライン
{
"fps": 24,
"width": 1920,
"height": 1080,
"audio": "audio/source.mp3",
"scenes": [
{
"id": "opening",
"start_frame": 0,
"end_frame": 240,
"source": "output/pilots/opening.mp4",
"source_start": 0,
"fit": "cover",
"transition": "fade",
"fade_frames": 6
}
],
"overlays": []
}
fade は自身のシーン内に留まります。クロスフェードを作成するためにシーンを重ねないでください。
完了
以下のすべての項目が真になった場合のみ完了します:
[0, ceil(duration × 24))がちょうど1回カバーされ、ギャップや重複がない。final.mp4にビデオストリームと完全な元の楽曲が含まれている。- 冒頭、メインピーク、エンディングがモーションでレビューされた。
- 最後に読まれたストーリーが着地する時間がある。
docs/PROGRESS.mdに未解決のブロッカーがない。
セキュリティ
init --mode code は JohnHeibel/ClaudeAnimationBase をコミット 0ac8bf2b31942376cb6b8c4074715595d512acd2 でプロジェクトにクローンします。このテンプレートはMITライセンスです。分析、検査、レンダリング、アセンブリはすべてローカルで行われます。ハイブリッドモードはメディアをアップロードせず、画像、動画、音楽生成サービスを呼び出しません。
要件
ffmpegとffprobe- Python 3.9+
analyze:uv pip install 'numpy>=2,<3'codeモード:git, Node.js, Google Chromehybridモード: ローカルアセットのみ
制限事項
- このスキルは楽曲を作曲したり、効果音を生成したり、APIを通じて画像や動画を作成したりしません。
- ビートグリッドはほぼ一定のテンポを前提としています。
codeモードの水彩塗りつぶしは、ディスクリートGPUがない場合、フレームごとに数秒かかることがあります。統合グラフィックスではこれらの塗りつぶしを避けるようにレンダラーに指示してください。- アセンブリは、シーンよりも短いクリップをフリーズや再タイミングする代わりに拒否します。