Communitygithub.com

desi-lyric-film

任意の曲を16:9の手描き風インド風リリックミュージックビデオに変換します。ストップモーション風キャラクターアニメーション、装飾的なフレーム、デーヴァナーガリー文字+ローマ字の歌詞シンクロ、リフレイン毎の目の演出を生成。ユーザー自身の音声から歌詞を自動抽出し、Atlabs MCPを使用して一貫したキャラクター表現を実現します。

desi-lyric-film とは?

このスキルは、ユーザーが提供する任意の楽曲(mp3/wav/m4a)から、16:9の手描き風リリックミュージックビデオを生成するための包括的なツールです。特徴は、ストップモーション風のキャラクターアニメーション、デーヴァナーガリー文字とローマ字の両方で表示される歌詞のキネティックタイポグラフィ、そしてリフレインごとに異なる目のクローズアップ演出です。このスキルは、Claude Code、Claude Desktop、claude.aiなどのプラットフォームで動作し、Atlabs MCP(画像生成用)を必須とします。ワークフローは、音声からの歌詞自動抽出、Atlabs MCPを用いたキャラクターデザイン(表情、服装、カラーパレットの一貫性を保つ)、ショットプランニング(歌詞の意味に基づく)、そしてRemotionによるレンダリングまでを自動化します。特に「ボリウッド風」「手描きアニメーション」「歌詞ビデオ」を求めるユーザーに最適で、オリジナルキャラクターまたはユーザーの参照画像からキャラクターを生成し、感情表現や色彩を楽曲の雰囲気に合わせて調整します。

対応✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/Chinmaya123-cyber/desi-lyric-film/tree/main/skills/desi-lyric-film

お気に入りのAIに質問する

このエージェントスキルを事前に読み込んだ状態で新しいチャットを開きます。

ドキュメント

Desi lyric film

楽曲(ユーザー自身の音声ファイル)を、一貫した手描きスタイルの16:9リリックフィルムに変換します。 イラストのキャラクターが各行の感情を表現し、リフレインごとに目のクローズアップ演出が入り、歌詞はデーヴァナーガリー文字で単語ごとに表示され、その下にローマ字の行が配置されます。すべてのカットは歌われている音節に合わせ、全体はストップモーションのように動きます(2コマ描き、インクのゆらぎ、ペーパーカットアウト風)。

template/ は、データ駆動型エンジンを搭載した完全なテスト済みRemotionプロジェクトです。フィルムを手動でコーディングすることはありません。3つのJSONファイルを生成し、エンジンがそれらをレンダリングします。

ファイル内容作成方法
src/lyrics.json歌われるフレーズごとのエントリ: {t0, t1, dev[], rom[], times[]}tools/transcribe_lyrics.py → tools/build_lyrics.py
src/character.json表情セット+目のアンカー、目のクローズアッププレート、ルックカード、ツイールAtlabs MCP + tools/register_frames.py、eye_anchor.py、cu_plates.py、make_cards.py
src/film.jsonショットリスト(種類、開始、歌詞スロット、背景、トランジション、オプション)tools/plan_shots.py、その後意味に基づいて手動調整

各ステップに到達したら、以下のリファレンスを読んでください: references/atlabs-mcp.md · references/character.md · references/lyrics-and-timing.md · references/shot-design.md · references/style-guide.md(正確なパレット、タイポグラフィ、モーション仕様) · references/render-deliver.md。

0. 絶対ルール — Atlabs MCP を最初に接続する必要があります

すべてのキャラクターアート(ベースデザイン、表情、目クローズアップ、衣装/カラールック)は Atlabs MCP を通じて生成されます。 代替手段はありません。接続されていない場合は、接続されるまで 停止し、他に何もしないでください。

確認方法: atlabs generate_image get_result start_upload get_account をToolSearchで検索します(ツール名は mcp__atlabs__… または mcp__<id>__… で、多くの場合遅延して表示されます)。次に get_account を呼び出すと、クレジット残高が返ってきます。

ツールが見つからない場合、または get_account が失敗した場合は、以下の手順を正確に返信し、待機します:

このスキルはキャラクターアートを Atlabs MCP で作成するため、まず接続する必要があります(約1分かかります):

  1. Atlabsアカウントがまだない場合: https://app.atlabs.ai でサインアップしてください(画像生成にはAtlabsクレジットを使用します。フルフィルムで約25~40クレジット必要です)。
  2. 接続方法:
    • Claude Code(このプラグインとしてインストール済みの場合): Atlabsはバンドルされています — /mcp と入力し、atlabs を選択、サインインします。
    • Claude Code(ターミナル): claude mcp add --transport http atlabs https://mcp.atlabs.ai/mcp を実行し、/mcp → atlabs → サインインします。
    • Claude Desktop / claude.ai: 設定 → コネクター → カスタムコネクターを追加 → 名前 Atlabs、URL https://mcp.atlabs.ai/mcp → 追加 → 接続 → サインインし、このチャットで有効にします。
  3. 接続が完了したら教えてください。すぐに開始します。

1. 概要説明 — 質問し、推測しない

AskUserQuestion で質問します(1ラウンドのみ。その後は適切なデフォルトで進めます):

  1. 楽曲: ユーザーが持っている音声ファイル(mp3/wav/m4a)。自分で音楽をダウンロードしないでください。
  2. 使用部分: 「サビを選んで」(デフォルト、30~60秒)、またはユーザー指定のタイムスタンプ、または合わせたいリファレンスクリップ(tools/locate.py で楽曲内の該当クリップを見つけます)。
  3. キャラクター — 以下の選択肢を提示:
    • 「私の参照画像を使う」 — ユーザー自身または同意を得た人の写真、または権利のあるキャラクターアート。 複数枚(異なる服装、背景色、表情)を共有してもらえます。すべて役立ちます。有名人や実在の人物を同意なくスタイライズしないでください。代わりにオリジナルキャラクターを提案してください。
    • 「オリジナルキャラクターをデザインする」 — オプションでスタイル参照画像と短い説明(見た目、服装の雰囲気)から。
  4. 雰囲気ワード(オプション): 例「デジバディ Gen-Z」「ソフトロマンティック」「お祭り」「失恋」。デフォルト: モダンデジ、インド風のアクセント。

チャットで画像を共有されたが、それがディスク上のファイルでない場合は、refs/cards/ に保存する(またはパスを指定する)よう依頼してください — Atlabsにアップロードするにはファイルが必要です。

2. セットアップ

cp -R <スキルディレクトリ>/template <プロジェクト> && cd <プロジェクト>
npm install
uv venv -q --python 3.12 .venv && uv pip install --python .venv/bin/python numpy scipy pillow faster-whisper
mkdir -p refs && cp <楽曲> refs/song.mp3

(python3.12 -m venv .venv でも動作します。)すべてのPythonツールは、プロジェクトルートから .venv/bin/python -I tools/<ツール>.py … として実行します。 テンプレートにはデモキャラクター、小道具、デモデータが含まれているため、npx remotion studio src/index.ts がすぐに動作します。

3. 楽曲を読み込み、部分を選択し、音声をカット — references/lyrics-and-timing.md

.venv/bin/python -I tools/beatgrid.py refs/song.mp3 --bpm-min 60 --bpm-max 180      # テンポ、ビートフェーズ、ラウドネスバー
.venv/bin/python -I tools/structure.py refs/song.mp3                                 # 繰り返しセクション=フック
.venv/bin/python -I tools/vocal_onsets.py refs/song.mp3 --from 0 --to <dur> --json refs/onsets.json
tools/cut_audio.sh refs/song.mp3 <開始> <終了>                                        # → public/audio/song_cut.wav

最も繰り返され、最もエネルギッシュなボーカルセクション(リフレインがそこにあります)を選びます。最初のボーカルの2~4ビート前のダウンビートで開始し、次のセクションの前のブレスで終了します。start(開始時間)を記録します — ビデオ時間 = 楽曲時間 − 開始時間。

4. 歌詞 — ユーザー自身の音声から自動取得

.venv/bin/python -I tools/transcribe_lyrics.py refs/song.mp3 --from <開始> --to <終了> --lang hi --onsets refs/onsets.json
.venv/bin/python -I tools/build_lyrics.py --transcript refs/transcript.json --slice <開始> <終了> --onsets refs/onsets.json
  • --lang hi はデーヴァナーガリー文字を返し、--lang en はローマ字化されたヒングリッシュ(ヒンディー語と英語の混合)を返します。build_lyrics.py は両方の文字を書き出します。
  • トランスクライバーが 判読できない歌唱部分(非常に速い歌唱、重なったボーカル)を報告した場合、ユーザーに歌詞のテキストまたはタイムスタンプ付きテーブルを持っているかどうかを一度だけ尋ねます。はいの場合: build_lyrics.py --table lyrics.txt …(または --text)。そうでない場合は続行します。該当フレーズは歌詞なしのままとなり、プランナーはビジュアルのみのショットを割り当てます。
  • 歌詞は常に、トランスクライバーを介したユーザーの音声、またはユーザーが提供するテキストからのみ取得されます。 自分で歌詞をタイプしたり、記憶でギャップを埋めたり、チャットで歌詞テキストをエコーバックしたりしないでください。代わりに、カウントとタイミングを報告してください。

5. キャラクター — Atlabs MCP — references/character.md

ベースの描画1つ、他のすべてはそのベースの 編集 です。そのため、キャラクターの一貫性が保たれます。デフォルトモデル: Nano Banana 2.1 (nano_banana_2_1) — 参照からのベース生成とすべての編集に最適(最も一貫性が高い); GPT Image 2.5 Sunburst (gpt_image_2_5_sunburst) — 写真により強いスタイライズ処理が必要な場合; Seedream 5 Pro (seedream_5_pro) — 新しい小道具やフルシーンプレート用。

  1. ベース: クリーン、上半身、無地のクリーム背景、指定されたスタイル(参照またはオリジナル)。
  2. 表情(ベースの編集): front, half, closed, pain, relief, shy, dream, moved(+ベースを neutral/横目として)。 register_frames.py がそれらを1つのキャンバスに配置します。eye_anchor.py --set main … が目の位置を見つけます。
  3. オプションのセカンドルック(例: より暗い服装)で front, half, closed, pain, relief, dream を使用 → 重いムードに使用。
  4. 目のクローズアップ帯 + 編集 half, closed, tears, glance, smoulder → cu_plates.py、次に eye_anchor.py --closeup。
  5. 4~6枚の ルックカード: 同じ人物、異なるモダンな服装+パレットからのフラットカラー背景+落書き、 それぞれに目を閉じた編集バージョン → make_cards.py。
  6. 全身ツイール → keyout.py。 独立した生成は並行して送信します。sheet.py でコンタクトシートを作成し、次に進む前に確認します。使用したモデルと消費クレジットをユーザーに伝えます。

6. フィルムを計画 — references/shot-design.md

.venv/bin/python -I tools/plan_shots.py --bpm <bpm> --beat0 <最初のビート、ビデオ秒> --duration <秒> --audio audio/song_cut.wav

次に、すべての行の意味を読み(ファイルから。歌詞をチャットに貼り付けずに)、src/film.json を調整します:

  • すべてのリフレインは目の演出(毎回異なる視線のクローズアップ、または目の小道具)。2回連続で同じものは使用しません。
  • pain(痛み)は彼女の顔に表現(ひび割れ、暗くなった地面)。relief(安堵)は癒しの言葉と共に訪れます。文字通りの傷は描きません。
  • touch(触れる)/ feeling(感情)は「感動」(花、波紋)で表現。文字通りの手を胸に当てる仕草は避けます。速いラインはルックカードのフリップで表現。
  • 背景はショットごとに変わります(ルックの色)。フレームは決して変わりません。トランジションはバリエーションをつけます。 一貫したストーリーを保ちます: 彼女が主人公であり、彼女の目がモチーフです。

7. レビュー、そしてレンダリング — references/render-deliver.md

node tools/stills.mjs out/st 0.5 <フレーム…> && .venv/bin/python -I tools/sheet.py out/st.jpg out/st/*.jpg
./tools/make_film.sh <名前>                     # → out/<名前>.mp4 (1920×1080, 24 fps)

各フレーズの最初の単語でスチルを確認: 歌詞が読みやすくフレーム内に収まっているか、リフレインで目が開いているか、表情が行に合っているか、空のショットがないか。修正し、変更されたフレームを再レンダリングし、フィルムをレンダリングします(約4~6分)。結果をユーザーのダウンロードフォルダにコピーして送信します。一度だけ注意を促します: 商用楽曲は一部のプラットフォームでミュートされる可能性があり、公開権利はユーザーの責任であること。

実際の実行で発生した問題点(Gotchas)

  • feTurbulence はシード0と1を同じパターンとして扱います — ボイル/グレインのシードは1から始めます(kit.tsxで既に修正済み)。そうしないと、オープニングが4フレーム静止した後、ジャンプします。
  • Whisperは非常に速い歌唱を聞き逃します。しかし、onset(発音開始)はそれらのフレーズのタイミングを提供します — 単語を推測しないでください。
  • RemotionのバンドルされたヘッドレスシェルはmacOSでクラッシュする可能性があります。remotion.config.ts はインストール済みのChromeを使用します。同時実行数は6に保ちます。
  • 登録された編集は同じベース画像から生成される必要があります。編集がずれた場合(異なるポーズ/クロップ)、無理に使わずに再生成します。
  • 暗い背景のテキストは自動的にクリーム/ピーチカラーの文字に切り替わります。ショットの背景は、テキストではなくムードで選んでください。

関連スキル