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. 02Scenario による被写体映像の生成
  3. 03再利用可能なスタイルガイドとセクション指示
  4. 04横長・縦長キャンバス
  5. 05音声と映像の検証ワークフロー

活用シーン

  1. 01リリックビデオやモーショングラフィックス映像の制作
  2. 02出演者中心または映像を組み合わせたMVの制作
  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エンジン が担うのは、動画モデルでは実現できない要素です。正確なタイポグラフィ、音の立ち上がりやビートにフレーム単位で合わせたタイミング、インフォグラフィックス、被写体の周囲への合成、生成コストゼロでの無制限の再レンダリングです。
  • サブエージェント が各セクション専属のデザイナーとして機能します。共通のスタイルガイドと検証ループにより、各セクションの一貫性を保ちます。

接続方法と基本的な生成ループについては、このリポジトリの 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 で料金を確認してください(異なるペイロードごとに1回実行してから合計します)。720pでの目安として、6秒のクリップはスタイルフレーム約20枚分、10秒のクリップは約35枚分、映像とグラフィックスを組み合わせた動画全体は約500枚分の料金です。1080pのクリップは720pの約2.5倍の料金だったため、見積もりの前に映像素材の解像度を決めてください。
  • 形式: プロジェクトごとに一度だけ、キャンバスを1つ指定します。TikTok、Reels、Shorts向けは縦9:16、YouTubeまたはX向けは横16:9(投稿先の指定がなく、自動処理の場合は横)。キャンバスはengine/timeline.jsのCANVASで指定し、スタイルフレームと映像素材はその比率で生成します。もう一方の比率からのクロップは行いません。縦の場合は投稿先の現在の動画長上限を確認し、曲がその長さを超える場合、または確認できない場合は、ティーザーをプラットフォーム向けの短縮版として計画します。両方の比率が必要な場合は依頼してください。--canvasを使えばコードによる再レンダリングは無料で、多くのショットはウィンドウ化されますが、2つ目のフレーム全体を埋める必要があるショット(フック、リップシンクのクローズアップ、フィナーレ)は再度料金が発生します(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. リサーチ(並行してバックグラウンドで実施)

ほかの作業を進めながら、ウェブアクセスが可能なサブエージェントを2つ起動します。

  • カルチャー: 曲の題材について調べ、認知度の高い出来事、ミーム、ビジュアル上の定番表現を見つけます。それぞれについて、確認済みの事実、象徴的なビジュアル表現、挿入アイデア、画面に表示する短い文字列をまとめます。
  • クラフト: ユーザーのモーションリファレンス(ダウンロードしてコンタクトシートを作成し、フレームを確認)と、ジャンルに応じた演出テクニックを調べます。タイミングの数値、カラーの16進値、実装可能なJSの動きを抽出します。

要点をまとめた結果を analysis/research_*.md として保存します。シーンエージェントは、それらを references/motion_library.md と併せて読み込みます。

3. コンセプト、スタイルガイド、トリートメント
  • 動画の背骨を作る。 最も強いコンセプトでは、編集そのものが曲の意味を担います。たとえば、動画全体を通じて進むカウンター、時計、カウントダウンなどの仕掛けを使い、曲に合わせてカットの頻度やルックをエスカレートさせます。背骨は通常、HUDのカウンターに表れます。
  • STYLE.md(ルール):
    • コンセプトと背骨を1行で記載
    • 映像のルール(クリーンプレートと背面/中間/前景のレイヤー、または別の方針)
    • 各ルックの地、インク、アクセント、レンダリングルール、対応する映像スタイル
    • 役割を明記したパレット
    • フォント名を指定した4~5種類のタイポグラフィの役割
    • 歌詞の表示ルール
    • ビートとエフェクトを対応づけたモーション文法と、セクションごとのカット密度
    • 題材(アイデンティティ、グラフィックモチーフとして使えるデザインの細部)
    • ブランドのルール、リファレンス、禁止事項
  • TREATMENT.md:
    • 曲の情報とエネルギーマップ
    • 展開
    • 最初の3秒のフック(動画の中で最も強いアイデアで、ミュート再生でも成立すること)
    • セクションごとに1行:ダウンビートを基準にした時間範囲、歌詞、ルック、必須アイデア
    • 映像マップ(クリップが揃い次第、記入)
  • PLAN.md: 映像素材に費用をかける前に監督が承認するための1ページ版(無人で進める場合、予算が明示されていなければここで停止します)。
4. Scenario での被写体、スタイルフレーム、映像素材

グラフィックスのみの動画の場合は、静止画や 3D の小道具を除いて、この手順を省略します。それ以外の場合は、 references/pipeline.md §3-5 に従います。

  • 被写体シート: ユーザーの参考資料をもとにしたターンアラウンド、表情、注釈です。まず確認してから、そこから顔の一貫性を保つための参照画像を切り出します。
  • スタイルフレーム: キャンバスのアスペクト比に合わせて、各ショットにつき静止画を 1 枚作成します(参照画像に対応する画像モデルを使用)。各セクションのルックに合わせてください。文字用のネガティブスペースを確保して構図を作ります(縦長の場合、顔と文字用のスペースをセーフバンド内に配置します)。合成しやすいセット(リムライトを当てた黒い空間、単色のサイク、または白を基調としたハイキー)を使います。文字は入れません。リップシンク用のフレームでは、口を覆うもの(マイク、手、小道具など)を配置しません。口が覆われていると同期チェックに失敗し、再度費用が発生します。コンタクトシートにまとめ、低コストでルックの承認を得ます(無人で進める場合は、明示された予算内でのみ続行します)。
  • 映像素材の取得方法:
    • アクションには、フレームからの画像から動画への生成を使います。
    • 曲に同期するダンスには、合成したビートトラックを与え、参照画像と参照音声に対応する動画モデルを使ってから、ビートに合わせてワープします。
    • リップシンクには、フレームとボーカルステムの一部からの音声から動画への生成を使います。代替手段は、参照音声を使った動画生成とリップシンク補正モデルの組み合わせです。
    • ネットワーク、チャート、UI、パーティクルは生成ではなくコードで作成します。
  • 曲を動画モデルに送ってはいけません。スキーマで指定できる場合はモデル本来の音声をオフにします(いずれにしても、レンダリングではマスターからのみ音声を取得します)。チームの並列実行上限の範囲内で複数回に分けて起動します(pending_job_ids を指定して jobs_wait を再呼び出しし、job_get は使いません)。429 parallel-custom-jobs で起動を拒否された場合のみ再起動します。拒否された場合はジョブが作成されておらず、それを除外するとカットに欠落が生じます。
  • すべてのクリップを tools/prep_clip.sh で準備します。フレーム、被写体マット(Apple Vision を使用し、利用できない場合は Scenario の背景除去を使用します。references/pipeline.md §5 を参照)、トラッキング(MediaPipe のポーズ推定とマットのバウンディングボックス)を用意します。マットを確認します。各クリップの内容、重要な場面、割り当てスロット、マットの品質を映像素材マップに記録します。
5. エンジンとシーンのエージェント
  • まずスモークテストを行います:
    • core.js で PAL を設定し、engine/timeline.js で CANVAS、ビートに合わせたセクション、HUD(タイトル、マーク、セクションコード、背骨カウンター)、POST(デフォルトはニュートラル)を設定します。
    • 小さな _smoke.js を作成します:プレート → 被写体の背後に文字 → マット → トラッキングされたラベル。
    • 静止画 1 枚と 5 秒のクリップをレンダリングしてから、av_sync_check.py で音声とフラッシュのタイミングが合っていることを確認します。
  • エージェントにブリーフを共有します。 テンプレートを使って AGENTS_BRIEF.md を記入し、1 回のメッセージでセクションごとにバックグラウンドエージェントを 1 つ起動します。各エージェントには、担当ファイル、時間範囲、歌詞、必須のアイデアとクリップを渡し、AGENTS_BRIEF、STYLE、TREATMENT、ENGINE_API、調査資料を最初に読んでもらいます。エージェント ID を記録します。ティーザーや約 30 秒未満の作品では、リードが自分でシーンを作成して、調査エージェント、PLAN.md、セクションごとのエージェントを省略してもかまいません。スモークテストは必ず行います。
  • クリップが届いたら共有します。 必要とするエージェントに、「クリップ準備完了:内容、重要な場面、割り当てスロット」とメッセージを送ります。
  • すべてのレポートを確認します。 最適な静止画をコンタクトシートにまとめて読み込みます。エンジンレベルの問題は(全員に影響するため)自分で修正し、変更内容をエージェントに伝えます。
6. 組み立て、確認、反復
  • 全編をレンダリングします(3 ワーカー、M シリーズ Mac で 2:00 の動画なら約 5 分)。フォアグラウンドで完了を待つか、wrote と表示されるまでポーリングし、確認と納品に進みます。レンダリングまたはエンコード中に実行を終了しないでください。ヘッドレスセッションを停止すると、処理も終了します。
  • 確認項目:
    • av_sync_check.py:音声は 0.0 ms、映像は 0~+1 フレームが目安です。相関が約 0.15 を下回る場合、映像の遅れは意味をなしません(E.LEAD によるタイプ入力の先行は最大 -3 フレームとして読み取られます)。代わりに、オンセットの静止画を確認してください。
    • freezedetect:映像がフリーズしていないこと。
    • 0.5 秒刻みのコンタクトシート。1 枚あたり 20 秒分。
    • すべてのセクション境界をフレーム単位で確認します。
    • 縦長の場合は、still.mjs --safe のシートを 20 秒分ずつ確認し、単語、ロゴ、顔が輪郭で示された帯の外に出ていないことを確認します。
  • 全体のルックを確認: 全セクションを通した静止画シートを確認してから、POST、パレット、HUD テーマを調整します。
  • 修正: タイムスタンプで届くディレクターの各指示を該当セクションに割り当て、SendMessage で担当エージェントに返します。再開するとコンテキストは維持されます。弱いショットは別のルックで新たに生成した映像、またはコードに置き換えて修正し、エフェクトを追加して補わないでください。推測で決めるのではなく、タイムラインの variant として代替案を提示し(--variant b でレンダリング)、比較できるようにします。
7. 納品
  • 動画: マスター、アップロード用ファイル(横長の場合:YouTube 用のマスター、X 用の 2 パス 21 Mb/s、512 MB 未満のファイル。縦長の場合:references/pipeline.md §8 にある縦長アップロード用ファイル)、ティーザー(ヴァースと最初のコーラス)、およびバリアントごとに 1 ファイルを用意します。両方を求められた場合は、各キャンバスにつき 1 セットを用意し、ファイル名に _16x9 と _9x16 を付けます。macOS では大文字と小文字が区別されないため、ファイル名はそれぞれ異なるものにしてください。
  • 静止画: エンジンでレンダリングしたフル解像度の PNG を使用し、圧縮動画から切り出したものは使わないでください。
  • スタイルシート/メイキング: アーティファクトまたはドキュメントとして公開します。パレット、書体、被写体シート、素材映像と完成映像のペア、フレームインデックス、パイプライン、反復回数を含めてください。
  • レポート: 確認した内容、推測した歌詞、使用した CU をユーザーに伝えます。CU は今回の実行で成功した jobs_wait の行(analysis/jobs.md に記録された cuCost)を合計します。失敗したジョブの費用は払い戻されますが、行には cuCost が残ります。usage はプロジェクト全体の値で、ほかの作業も含まれます。

品質基準

  • すべての単語がタイミングどおりに表示されます。 歌われる単語はそれぞれオンセットで(主役の文字、または字幕トラックで)見えるようにし、主役の文字はオンセットのフレームでピークを迎えます。
  • 装飾ではなく、映像との統合。 映像のすべての瞬間に反応するグラフィックを配置します(マットで背後に重ねる、映像にトラッキングする、動きにタイミングを合わせる、形状を引き継ぐなど)。映像のピクセルには手を加えません。
  • 静止フレームなし。 映像は常に動き続け、画面上では常に何かが動いています。
  • フレームごとに焦点は 1 つ。 文字は被写体を引き立て、顔を覆わないようにします。被写体の背後に置いた文字も読み取れるようにします。縦長では、すべての単語、ロゴ、顔をセーフバンド内に収めます。
  • セクションごとに変化をつけます。 さまざまなルック、2D と 3D、ポスター風の強い演出、控えめな字幕を組み合わせます。連続する 2 行で同じ文字表現を使わないでください。曲のエネルギーが高まるにつれてカット密度を上げ、ロゴやエンドカードなどの見せ場には時間を取ります。
  • 光過敏への配慮。 全画面の輝度反転は 1 秒あたり最大 3 回までです。
  • 完成と判断する前に 自分で通して視聴し、その後、最初の 3 秒をもう一度確認します。

このスキル内のファイル

コメント