promo-video
映像は6つのステージで制作されます。各ステージの終わりには人間が確認するものがあります。 先走ってはいけません。高コストなステージ(構築)は、それ以前のステージが確定していて初めて安上がりになります。なぜなら、すべての映像イベントは音楽とナレーションに合わせて配置されるからです。
最初に一度、計画を人間に伝えてください(README.mdに人間向けのバージョンがあります)。その後、ステージを順番に実行します。人間の言語で話しかけてください。すべてのプロジェクトファイルは1つのディレクトリに保存します(<project>/: audio/、vo/、PLAN.md、elevenlabs.md、Remotionプロジェクトはvideo/)。
| # | ステージ | あなたが行うこと | 人間が行うこと | 参照先 |
|---|---|---|---|---|
| 1 | 音楽 | トラックを分析し、正確なテンポとハードマークを見つける | Epidemic Soundでトラックを選び、Create a cutで長さを調整し、ファイルを渡す | references/01-music.md |
| 2 | ストーリーボード | ガイド質問をし、PLAN.md(音楽に合わせたショットテーブル)を書く | 回答し、承認する | references/02-storyboard.md |
| 3 | ナレーション原稿 | セリフ+タグ付きElevenLabsテイクを書く | ElevenLabsで生成し、ファイルを送る | references/03-voiceover.md |
| 4 | ナレーションカット | テイクに対してcut_ui.pyを開き、分割、レベル調整、各行を配置する | ブラウザページで行の間をクリックし、Doneを押す;配置テーブルを確認する | references/03-voiceover.md |
| 5 | 構築 | template/からRemotionプロジェクトを、シーンごとに、スチル確認しながら作成する | スチル / ドラフトレンダリングをレビューする | references/04-build.md |
| 6 | レビュー+仕上げ | レンダリング、ラウドネスチェック、レンダリングに対してreview_ui.pyを開き、人間のノートとフレームを読み、修正し、再レンダリングする | レビューページで視聴し、映像にノートを残し、承認 / 変更必要を選択する | references/05-review.md |
ブラウザ自動化:提案はするが、決して前提としない
ステージ1と3はウェブサイト(Epidemic Sound、ElevenLabs)上で行われます。ブラウザ自動化スキルやツール(例:ego-browser、Playwright環境、browser MCP)が利用可能な場合は、それらの部分を自分で行うことを提案し、その内容を明確に説明した上で承諾を求めます。
- アカウント:両方のサイトにアカウントが必要です(Epidemic Soundはトライアルありの有料サブスクリプション、ElevenLabsは月間文字数制限付きの無料枠あり)。人間がアカウントを持っていない場合は、自分たちで登録します。あなたはアカウントを作成しません。
- 費用:ElevenLabsは文字数単位で課金されます。40~60秒の映像で約600~1000文字、再生成のたびに再度課金されます。Epidemicのダウンロードはプランにカウントされます。予想される支出を伝え、最初に確認を取ってください。
- ログインと支払いは人間の担当:サインイン、2FA、キャプチャ、および支払い画面では、ブラウザを人間に委譲します(ego-browserの
task.handOff())。人間が完了したと言うまで再開しません。パスワードを入力したり、カード情報を入力・保存したり、APIキーをページやファイルに貼り付けたりしてはいけません。 - 承諾後にあなたが行ってもよいこと:同意されたムードとBPMに基づいてトラックを検索・フィルタリングし、候補を人間が聴けるように開く(人間が選択する)、目標の長さでCreate a cutをクリックし、結果をダウンロードする;
elevenlabs.mdテイクを貼り付け、人間が選んだ音声と設定を適用し、一度生成し、mp3をダウンロードする。 - そのようなツールがない場合、または人間が辞退した場合:正確な手順(ステージ1と3のドキュメント)を伝え、ファイルを待ちます。
選択肢は常に人間のものです。トラックと音声は決してあなたが選びません。
基本ルール(苦い経験から学んだこと)
- 表示されるものはすべて本物です。 実際のサンプルメッシュ(実際のCAD/STEPをテッセレーションしたもの)、コードパネル内の実際のコードとAPI、製品自身のフロントエンドコンポーネントから再構築されたUI。偽物に見えるコンテンツは、視聴者が最初に気づくものです。本物を入手できない場合は、その旨を伝えて尋ねてください。決して偽造してはいけません。
- 音楽が時計です。 正確なテンポを測定します(
scripts/music_analyze.pyがフィッティングします。1.2%ずれたBPMを推測すると、スプライスが3分の1拍ずれ、人間に聞き取れる違和感が生じます)。すべての時間はsrc/marks.tsに格納されます。シーンはこれをインポートし、秒数をハードコードしてはいけません。 - 外部に公開される手順や高コストな手順は確認を取る: 音楽ファイルとナレーションは人間が選択するものであり、あなたが代わりに選ぶことは決してありません。撮影する製品に表示されるAPIキーやログイントークンを決して印刷してはいけません。
- スチルで画像を確認し、暗黙のうちに信頼しない: マーク(ビートヒット、カット、ロゴ)のフレームをレンダリングし、フルレンダリングの前に確認します。フルレンダリングには数分かかりますが、スチルは数秒です。
- 古いバージョンを保持する。 人間が短縮版やバリアントを依頼した場合、プロジェクトディレクトリをコピーし、コピーを編集します(
cp -R video video_short、node_modulesをシンボリックリンク)。 - 編集者のように報告する: 何が変わったか、ファイルパス、何を聴く/見るべきか、その秒数は何秒かを伝えます。
このスキルのツール
すべてのPythonスクリプトはuv runで実行します(依存関係は各ファイルで宣言されています。インストールは不要です)。
| スクリプト | 目的 |
|---|---|
scripts/music_analyze.py track.wav --out beats.json | 正確なBPM(フィッティング済み)、ビート/小節グリッド、セクション、ドロップ、無音ギャップ |
scripts/music_splice.py track.wav out.wav --beats beats.json --keep a:b --keep c:d | 小節単位のクロスフェードジャンプでトラックを短縮;結合を検証 |
scripts/cut_ui.py take.mp3 --mode cuts --script elevenlabs.md --out vo/cuts.json | ブラウザカッティングページ(波形、スクリプトを行ごとに表示、音声とポーズ、ズーム、元に戻す/やり直し):人間が再生し、行の終わりでクリックし、Doneを押すとタブが閉じ、cuts.jsonが生成されます。--mode marks --beats beats.json はビートグリッド上に音楽のドロップ/スタブ/ブレイクダウンをマーク |
scripts/vo_cut.py take.mp3 --regions vo/cuts.json --out vo/ | ElevenLabsテイクをレベル調整されたクリップ+clips.jsonに分割(人間が時間を入力する場合は --lines N --ends t1,... も可) |
scripts/review_ui.py out/promo.mp4 --out review/review.json [--overlay overlay.json] | ブラウザレビューページ:上にモニター、下にタイムラインストリップ(フィルムストリップ+完成ミックスの波形+オプションのビート/マーク/ナレーション行)。人間は特定の瞬間や範囲にノートを残し、各ノートは正確なフレームを持ちます。最後に承認 / 変更必要を選択すると、review.jsonが生成されます |
scripts/new_project.sh <dir> [--link-modules path] | template/からRemotionプロジェクトを作成(メタルステージ、ビートクロック、VOミックス、仮想カメラ) |
template/tools/mesh.py | STEP/OCC形状 -> three.js用のコンパクトメッシュ+B-repエッジ |
template/tools/refold.py | OCCが読み取れない巨大なSTEPメタデータ文字列をブランク化 |
template/tools/variants.py、stages.py | メッシュパラメータバリアント / CADノートブックのすべての中間ソリッド(「スライダーを動かすとモデルが追従する」シーンや「セルごと」シーン用) |
必要環境:ffmpeg、node 20+、uv。ヘッドレスChromeでthree.jsを使用する場合:playwrightのchrome-headless-shell(new_project.shがインストールします)。