video-composer について
画像、動画、音楽、ナレーションの各スキルを連携し、Remotion のタイムラインで MP4 を制作するスキルです。要件確認、承認制のシーン計画からレンダリング、映像レビューまでを案内します。
主な機能
- 014種類のメディア生成スキルを連携
- 02動画の要件確認と承認取得
- 03Remotion プロジェクトの作成
- 04データ駆動型シーンタイムラインの構築
- 05動画のレンダリングと静止画レビュー
活用シーン
- 01ナレーション付きプロモーション動画の制作
- 02生成した画像と動画クリップの組み立て
- 03シーンの長さ、字幕、トランジションの計画
- 04レンダリング済み MP4 の確認と修正
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ danishi/ claude-code-config --skill video-composerインストール後、Claude Code で/video-composerを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
.claude-plugin/plugin.jsonreferences/asset-pipeline.mdremotion-template.mdself-review.mdscripts/check_skills.pyrender_video.pyscaffold.py詳細
Video Composer — オーケストレーションによるリッチな動画制作
このスキルは、4 つのメディアスキルを Remotion(React)のタイムライン上で組み合わせ、リクエストを完成した .mp4 に仕上げます。
| レイヤー | スキル |
|---|---|
| 画像/背景 | nanobanana |
| 動画クリップ | veo |
| BGM | lyria |
| ナレーション/ボイスオーバー | gemini-tts |
これはオーケストレーターです。メディア自体は生成せず、上記のスキルに指示を出し、その出力を組み立てます。
ワークフロー(必ず順番どおりに実行)
Step 0 — 前提条件と関連スキルを確認
まず、利用可能かどうかを確認します。
python scripts/check_skills.py
- すべて利用可能 → 続行します。
- 不足しているものがある → 通常は、別のユーザーが video-composer を単独でインストールした(例:
npx skills add)ことを意味します。スクリプトが出力するコマンド(リポジトリの README に記載)を使って、不足しているスキルをインストールするよう案内するか、文書化された代替手段を提示してください(references/asset-pipeline.md→「Missing skills」を参照)。リクエストされたアセットの種類を黙って省略せず、選択肢を明示してください。
ツールも確認してください:Node.js ≥ 18(node -v)と npx。Remotion は ffmpeg を同梱しているため、ffmpeg は不要です。メディアスキルで API にアクセスするには、GEMINI_API_KEY(または Vertex AI)が必要です。references/asset-pipeline.md を参照してください。
Step 1 — 要件を確認
ユーザーに質問し(不明点があれば AskUserQuestion を使用)、次の点を明確にします。
- 目的/メッセージと対象視聴者
- 尺(例:15s/30s/60s)と向き(16:9/9:16/1:1)
- トーン/スタイル(企業向け、遊び心のある、シネマティック、ミニマルなど)
- 必須要素:ナレーション、画面上の字幕、BGM の雰囲気、ブランドカラー/ロゴなど
- 言語(ナレーションと字幕用)
- ユーザーがすでに持っているアセットと、生成するアセット
Step 2 — 構成プランを提示し、承認を得る(必須)
簡潔で構造化されたプランを作成し、ユーザーに提示します。ユーザーの承認を得るまでは、何も生成せず、レンダリングもしないでください。プランには次の内容を含めます。
- 全体仕様:解像度、fps、総尺、向き
- シーンごとの表:# · 尺 · 映像(画像/動画+プロンプトの概要) · ナレーション文 · 画面上の字幕 · トランジション
- BGM の雰囲気とロゴ/ブランディングの有無
- 生成するアセット(および使用するスキル)と、代替アセット/ユーザー提供アセットの区別
ユーザーが明示的に承認するまで、プランを調整します。承認を得てから作業を進めてください。
Step 3 — Remotion プロジェクトを作成
python scripts/scaffold.py <project-dir>
これにより、自己完結型のデータ駆動型 Remotion プロジェクトが作成されます(構成と props のスキーマについては references/remotion-template.md を参照)。動画ごとに新しいプロジェクトを作成します。
Step 4 — アセットを生成
承認済みのプランに従い、関連する各スキルを呼び出し、出力を <project-dir>/public/{images,video,audio}/ 以下に配置します。具体的なコマンドとタイミングのヒントは references/asset-pipeline.md に記載されています。画像全体で一貫したビジュアルスタイルを保ってください。
BGM は lyria レイヤーでのみ扱います。 Veo のクリップは元の音声(SE、環境音、会話)をタイムライン上で再生するため、veo クリップを生成する際は、必ず埋め込み音楽を抑制してください。
--negative-prompt "background music, soundtrack, musical score, BGM"を渡し、プロンプトで音楽を求めないでください。そうしないと、クリップ自体の BGM が全体の lyria BGM と衝突します。SE と環境音は残し、音楽だけを抑制します。詳細はreferences/asset-pipeline.md→「Never let veo clips carry their own BGM」を参照してください。
ステップ 5 — タイムラインを作成する(props.json)
props.sample.json を props.json にコピーし、各シーンの内容を設定します。素材は
public/ からの相対パスで指定し、各シーンの durationInFrames
(round(seconds * fps))、字幕、ナレーション、トランジション、BGMを設定してください。スキーマと
タイミングのルールについては、references/remotion-template.md を参照してください。
ステップ 6 — レンダリングとマルチモーダルな自己レビュー(自律的な反復ループ)
python scripts/render_video.py --project <project-dir> \
--props <project-dir>/props.json --install --review-frames 6
続いて、エクスポートされたレビュー用静止画をビジョン機能で確認し、references/self-review.md の
評価基準に照らして採点してください。自律的に反復し、まず最も手軽なレイヤー(props → 素材の再生成)を
修正して、すべての基準を満たすか、反復上限(デフォルト 3 回)に達するまで続けてください。
ステップ 7 — 納品
仕上がりが基準を満たしたら、最終版の .mp4 をユーザーに納品してください(成果物には
SendUserFile を使用してください)。既知の問題が残ったまま反復上限に達した場合は、最善のバージョンを納品し、
残っている問題と推奨する次のステップを列挙してください。
スクリプト
| スクリプト | 目的 |
|---|---|
scripts/check_skills.py | 関連するスキルを検出し、インストール方法や代替手段を提示します |
scripts/scaffold.py | データ駆動型の新しい Remotion プロジェクトを足場から構築します |
scripts/render_video.py | npm install を実行し、レンダリングしてレビュー用静止画をエクスポートします |
参照資料
| ファイル | 内容 |
|---|---|
references/asset-pipeline.md | 各メディアスキルを実行する正確なコマンド、タイミング、スキル不足時の対応 |
references/remotion-template.md | プロジェクト構成と props.json のタイムラインスキーマ |
references/self-review.md | マルチモーダルなレビュー基準と自律的な反復ループ |
Props スキーマ(クイックリファレンス)
{
"fps": 30, "width": 1920, "height": 1080,
"bgm": { "src": "audio/bgm.mp3", "volume": 0.22 },
"scenes": [
{
"durationInFrames": 150,
"media": { "type": "image" | "video", "src": "images/x.png", "fit": "cover" },
"kenBurns": true,
"captions": [ { "text": "…", "fromFrame": 0, "toFrame": 140, "position": "bottom" } ],
"voiceover": { "src": "audio/vo1.wav", "volume": 1.0, "delayInFrames": 6 },
"transitionToNext": { "type": "fade" | "slide" | "wipe" | "none",
"durationInFrames": 18, "direction": "from-right" }
}
]
}
- 素材の
srcパスはpublic/からの相対パスです(http(s) URL はそのまま使用できます)。 - 合計時間は自動的に計算されます(シーンの長さの合計からトランジションの重複時間を差し引きます)。
原則
- 承認ゲートは必須です — ユーザーが計画を承認する前に、生成やレンダリングを開始しないでください。
- レビューしていないレンダリング結果は絶対に納品しないでください — 必ず自己レビューの反復ループを実行してください。
- このリポジトリのスキルを優先してください。スキルがない場合は、インストールを促すか、文書化された代替手段を使用し、そのトレードオフを計画に明記してください。
- コストの低い修正を先に行ってください — 素材を再生成する前に props を編集してください。
- BGM は 1 つだけにしてください — 音楽は lyria レイヤーに配置します。クリップ内に埋め込まれた BGM が全体の BGM と競合しないよう、veo クリップは音楽を抑制するネガティブプロンプトを指定して必ず生成してください。クリップの SE や環境音は残してください。