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分かかります):
- Atlabsアカウントがまだない場合: https://app.atlabs.ai でサインアップしてください(画像生成にはAtlabsクレジットを使用します。フルフィルムで約25~40クレジット必要です)。
- 接続方法:
- 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、URLhttps://mcp.atlabs.ai/mcp→ 追加 → 接続 → サインインし、このチャットで有効にします。- 接続が完了したら教えてください。すぐに開始します。
1. 概要説明 — 質問し、推測しない
AskUserQuestion で質問します(1ラウンドのみ。その後は適切なデフォルトで進めます):
- 楽曲: ユーザーが持っている音声ファイル(mp3/wav/m4a)。自分で音楽をダウンロードしないでください。
- 使用部分: 「サビを選んで」(デフォルト、30~60秒)、またはユーザー指定のタイムスタンプ、または合わせたいリファレンスクリップ(
tools/locate.pyで楽曲内の該当クリップを見つけます)。 - キャラクター — 以下の選択肢を提示:
- 「私の参照画像を使う」 — ユーザー自身または同意を得た人の写真、または権利のあるキャラクターアート。 複数枚(異なる服装、背景色、表情)を共有してもらえます。すべて役立ちます。有名人や実在の人物を同意なくスタイライズしないでください。代わりにオリジナルキャラクターを提案してください。
- 「オリジナルキャラクターをデザインする」 — オプションでスタイル参照画像と短い説明(見た目、服装の雰囲気)から。
- 雰囲気ワード(オプション): 例「デジバディ 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) — 新しい小道具やフルシーンプレート用。
- ベース: クリーン、上半身、無地のクリーム背景、指定されたスタイル(参照またはオリジナル)。
- 表情(ベースの編集):
front, half, closed, pain, relief, shy, dream, moved(+ベースをneutral/横目として)。register_frames.pyがそれらを1つのキャンバスに配置します。eye_anchor.py --set main …が目の位置を見つけます。 - オプションのセカンドルック(例: より暗い服装)で
front, half, closed, pain, relief, dreamを使用 → 重いムードに使用。 - 目のクローズアップ帯 + 編集
half, closed, tears, glance, smoulder→cu_plates.py、次にeye_anchor.py --closeup。 - 4~6枚の ルックカード: 同じ人物、異なるモダンな服装+パレットからのフラットカラー背景+落書き、
それぞれに目を閉じた編集バージョン →
make_cards.py。 - 全身ツイール →
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に保ちます。 - 登録された編集は同じベース画像から生成される必要があります。編集がずれた場合(異なるポーズ/クロップ)、無理に使わずに再生成します。
- 暗い背景のテキストは自動的にクリーム/ピーチカラーの文字に切り替わります。ショットの背景は、テキストではなくムードで選んでください。