video-generation について
Google Veo と OpenAI Sora で AI 動画を生成するスキルです。プロンプト作成に加え、静止画の動画化、音声、動画延長、並列バッチ生成に対応します。
主な機能
- 01テキストからの動画生成と画像の動画化
- 02Veo による音声生成
- 03Veo 3.1 の参照画像指定
- 04連続性を保つ動画延長
- 05並列バッチ生成
活用シーン
- 01シーンの説明から動画を作成
- 02静止画像を動画にする
- 03Veo で台詞や環境音を生成
- 04複数のシーン動画を並列生成
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ michaelboeding/ skills --skill video-generationインストール後、Claude Code で/video-generationを入力して読み込まれたか確認します。
同梱ファイルscripts/sora.pyscripts/veo.py
詳細
動画生成スキル
AI(Google Veo 3.1、OpenAI Sora)を使用して動画を生成します。
機能:
- 🎬 テキストから動画: テキストの説明から動画を作成します
- 🖼️ 画像から動画: 画像を最初のフレームとしてアニメーション化します
- 🔊 音声生成: セリフ、効果音、環境音(Veo 3+)
- 🎭 参照画像: 最大3枚の参照画像で動画の内容を誘導します(Veo 3.1)
前提条件
デフォルト: Vertex AI(1分あたり10リクエスト) ⭐
Vertex AI はデフォルトのバックエンドで、1400倍高いレート制限があります:
# 1. Set your project
export GOOGLE_CLOUD_PROJECT=your-project-id
# 2. Authenticate (opens browser)
gcloud auth application-default login
# 3. Enable the API (one-time)
gcloud services enable aiplatform.googleapis.com
.env ファイルに追加します:
GOOGLE_CLOUD_PROJECT=your-project-id
GOOGLE_CLOUD_LOCATION=us-central1
フォールバック: AI Studio(1日あたり10リクエスト)
GCP プロジェクトがない場合にのみ使用してください:
GOOGLE_API_KEY- https://aistudio.google.com/apikey から取得します
Sora(OpenAI)の場合
OPENAI_API_KEY- OpenAI Sora 用
利用可能なモデル
Google Veo モデル
| モデル | 説明 | 最適な用途 |
|---|---|---|
veo-3.1 | 最高品質(デフォルト) | プロフェッショナルな動画、セリフ、参照画像 |
veo-3.1-fast | より高速な処理 | 素早いイテレーション、バッチ生成 |
両モデルに含まれるもの:
- 720p/1080p 解像度
- 4、6、8秒の長さ
- ネイティブ音声(セリフ、SFX、環境音)
- 画像から動画(画像をアニメーション化)
- 参照画像(最大3枚)
- 動画の延長
- バッチ/並列生成
OpenAI Sora
- 最適な用途: クリエイティブな動画、映画的な品質、複雑な動き
- 解像度: 480p、720p、1080p
- 長さ: 5秒、10秒、15秒、20秒
- 機能: テキストから動画、画像から動画
ワークフロー
ステップ 1: 要件の収集(必須)
⚠️ インタラクティブな質問を使用してください — 一度に1つだけ質問します。
質問フロー
⚠️ 以下の各質問には AskUserQuestion ツールを使用してください。 回答に質問を印刷するだけではいけません — ツールを使用して、示されている選択肢を含むインタラクティブなプロンプトを作成してください。
Q1: 画像
"その動画を生成します!まず — アニメーション化する画像はありますか?
- はい(パスを指定してください — 最初のフレームとして使用します)
- いいえ、ゼロから生成します"
回答を待ちます。
Q2: 音声
"音声の設定はどうしますか?
- 音声あり(デフォルト) — Veo 3.1 がセリフ、SFX、環境音を生成します
- 無音動画 — 音声なし"
回答を待ちます。
Q3: モデル
"どのモデルにしますか?
veo-3.1— 最新、音声付きの最高品質(デフォルト)veo-3.1-fast— 音声付きのより高速な処理veo-3/veo-3-fast— 音声付きの前世代sora— OpenAI、最大20秒、音声なし"
回答を待ちます。
Q4: 長さ
"長さはどうしますか?
- 4秒
- 6秒
- 8秒(デフォルト)"
回答を待ちます。
Q5: フォーマット
"アスペクト比と解像度はどうしますか?
- 16:9 横長、720p
- 16:9 横長、1080p
- 9:16 縦長、720p
- 9:16 縦長、1080p
- または指定する"
回答を待ちます。
クイックリファレンス
| 質問 | 決定する内容 |
|---|---|
| 画像 | 画像から動画かテキストから動画か |
| 音声 | 音声生成の有無 |
| モデル | 品質と速度のトレードオフ |
| 長さ | クリップの長さ |
| フォーマット | アスペクト比と解像度 |
ステップ 2: プロンプトを作成する
ユーザーのリクエストを効果的な動画プロンプトに変換します。
- シーンを描写する: 視覚的なコンテキストを設定します
- アクションを指定する: 何が動き、変化し、起こるのか
- カメラワークを含める: 「スローパン」、「トラッキングショット」、「ドリーショット」
- 音声キューを追加する (Veo 3+): セリフには引用符を使い、音を描写します
- ムードを設定する: 照明、雰囲気、時間帯
セリフありの例 (Veo 3.1):
- ユーザー: 「宝物を発見する人物」
- 強化版: 「松明の光が揺れる中、トレジャーハンターの顔のクローズアップ。彼は『これに違いない…』とつぶやきながら、古びた宝箱の埃を払う。箱を開けるときしむ蝶番の音、そして驚きに満ちた彼の顔に金色の光が降り注ぐ。シネマティック、ドラマチックな影。」
セリフなしの例:
- ユーザー: 「ビーチを走る犬」
- 強化版: 「夕暮れのビーチを楽しそうに走るゴールデンレトリバーのシネマティックなスローモーションショット、波が打ち寄せ、暖かなゴールデンアワーの照明、浅い被写界深度」
ステップ 3: モデルを選択する
デフォルト: veo-3.1 (最高品質、音声付き)
| ユースケース | 推奨モデル | 理由 |
|---|---|---|
| 最高品質 | veo-3.1 (デフォルト) | 最高品質、音声付き |
| クイックイテレーション | veo-3.1-fast | 処理が高速 |
| バッチ生成 | veo-3.1-fast | 複数クリップでは速度が重要 |
| 長尺動画 (>8秒) | sora | 最大 20 秒をサポート |
ステップ 4: 動画を生成する
${CLAUDE_PLUGIN_ROOT}/skills/video-generation/scripts/ から適切なスクリプトを実行します。
Google Veo 3.1 の場合 (デフォルト、音声付き):
python3 ${CLAUDE_PLUGIN_ROOT}/skills/video-generation/scripts/veo.py \
--prompt "your enhanced prompt with 'dialogue in quotes'" \
--model "veo-3.1" \
--duration 8 \
--aspect-ratio "16:9" \
--resolution "720p"
画像入力を使用する Google Veo 3.1 の場合:
python3 ${CLAUDE_PLUGIN_ROOT}/skills/video-generation/scripts/veo.py \
--prompt "The cat slowly opens its eyes and yawns" \
--image "/path/to/cat.jpg" \
--model "veo-3.1" \
--duration 8
より高速な生成の場合:
python3 ${CLAUDE_PLUGIN_ROOT}/skills/video-generation/scripts/veo.py \
--prompt "your prompt" \
--model "veo-3.1-fast"
OpenAI Sora の場合 (長尺動画):
python3 ${CLAUDE_PLUGIN_ROOT}/skills/video-generation/scripts/sora.py \
--prompt "your enhanced prompt" \
--duration 20 \
--resolution "1080p"
利用可能なモデルを一覧表示:
python3 ${CLAUDE_PLUGIN_ROOT}/skills/video-generation/scripts/veo.py --list-models
動画の延長 (長尺の連続性のために)
--extend フラグは、以前の Veo 動画が終了した地点から継続することで、真の視覚的連続性を作り出します。 これは長尺動画に最適なアプローチです。
基本的な延長:
# First, generate initial clip
python3 ${CLAUDE_PLUGIN_ROOT}/skills/video-generation/scripts/veo.py \
--prompt "A person walks through a forest at sunrise" \
--duration 8
# Extend it with new content (adds ~7 seconds)
python3 ${CLAUDE_PLUGIN_ROOT}/skills/video-generation/scripts/veo.py \
--extend veo_veo-3.1_20260104_120000.mp4 \
--prompt "Continue walking, discover a hidden stream"
複数回の延長 (より長い動画の場合):
# Extend 5 times (adds ~35 seconds of continuation)
python3 ${CLAUDE_PLUGIN_ROOT}/skills/video-generation/scripts/veo.py \
--extend initial_clip.mp4 \
--prompt "Keep exploring the forest, encounter wildlife" \
--extend-times 5
延長 vs スティッチング:
| アプローチ | 結果 | ユースケース |
|---|---|---|
| 延長 | 真の連続性、同じキャラクター/シーン | 長い連続ショット |
| スティッチング | トランジション付きの別々のクリップ | シーン変更、モンタージュ |
延長の制限:
- 入力動画は Veo で生成されたものである必要があります (最大 141 秒)
- 各延長で約 7 秒が追加されます
- 合計で最大 20 回の延長 (約 2.5 分)
- 出力解像度は 720p です
バッチ生成 (並列)
複数の動画を同時に生成して、マルチシーンのワークフローを高速化します。5 本の動画を順番に生成して 15 分以上待つのではなく、すべてを並列で生成します (合計約 3 分)。
scenes.json ファイルを作成する:
[
{"prompt": "Scene 1: Cinematic hero shot of wireless earbuds on dark surface", "duration": 6, "output": "scene1_hero.mp4"},
{"prompt": "Scene 2: Sound waves visualization, person enjoying music", "duration": 8, "output": "scene2_sound.mp4"},
{"prompt": "Scene 3: Close-up of earbud in ear, person exercising", "duration": 8, "output": "scene3_comfort.mp4"},
{"prompt": "Scene 4: Lifestyle montage, various settings", "duration": 8, "output": "scene4_lifestyle.mp4"},
{"prompt": "Scene 5: Product with logo on clean background", "duration": 4, "output": "scene5_cta.mp4"}
]
すべてのシーンを並列で生成する:
python3 ${CLAUDE_PLUGIN_ROOT}/skills/video-generation/scripts/veo.py \
--batch scenes.json
カスタムワーカー数を指定する場合:
python3 ${CLAUDE_PLUGIN_ROOT}/skills/video-generation/scripts/veo.py \
--batch scenes.json \
--max-workers 3
動画ごとのバッチ設定オプション:
| オプション | 説明 | デフォルト |
|---|---|---|
prompt | 動画の説明 (必須) | - |
model | veo-3.1、veo-3.1-fast など | veo-3.1 |
duration | 4、6、または 8 秒 | 8 |
aspect_ratio | "16:9" または "9:16" | "16:9" |
resolution | "720p" または "1080p" | "720p" |
image | 画像から動画への変換用の画像パス | - |
negative_prompt | 避けたいもの | - |
output | カスタム出力ファイル名 | 自動生成 |
速度の比較:
| シーン数 | 順次 | 並列 (5 ワーカー) | 高速化 |
|---|---|---|---|
| 3 | 約 9 分 | 約 3 分 | 3 倍 |
| 5 | 約 15 分 | 約 3 分 | 5 倍 |
| 10 | 約 30 分 | 約 6 分 | 5 倍 |
ステップ 5: 結果を届ける
- 生成された動画ファイル/URL を提供します
- 使用した強化プロンプトを共有します
- 生成設定 (長さ、解像度) に言及します
- 以下を提案します:
- バリエーションを生成する
- 別のスタイル/長さを試す
- 別の API を使用する
- 動画を延長する
エラー処理
API キーが見つからない場合: 必要なキーをユーザーに伝えます:
コンテンツポリシー違反: プロンプトを適切に言い換えます。
生成に失敗した場合: 簡略化したプロンプトまたは別の API で再試行します。
クォータを超過した場合: 待機するか、もう一方のプロバイダーを試すことを提案します。
プロンプトエンジニアリングのヒント
音声向け (Veo 3.1)
- セリフ: 発話には引用符を使用します:
"Hello!" she said excitedly - 効果音: 明示的に記述します:
tires screeching, engine roaring - 環境音: サウンドスケープを記述します:
birds chirping, distant traffic - 例:
A man whispers "Did you hear that?" as footsteps echo in the dark hallway
シネマティックな品質のために
- カメラの指示を含めます: 「slow dolly」「tracking shot」「crane shot」
- ライティングを指定します: 「golden hour」「dramatic shadows」「soft diffused light」
- 映画のリファレンスを加えます: 「Blade Runner style」「Wes Anderson aesthetic」
リアルな動きのために
- 物理挙動を記述します: 「natural movement」「realistic physics」
- 環境のディテールを含めます: 「wind in hair」「leaves rustling」
- 速度を指定します: 「slow motion」「real-time」「time-lapse」
画像から動画へ
- 開始画像から何を変更・移動させるかを記述します
- アクションを具体的にします: 「the cat slowly opens its eyes」
- 環境の動きを含めます: 「leaves blow past」
ネガティブプロンプト
- 含めたくないものを記述します:
--negative-prompt "cartoon, low quality, blurry" - 「no」や「don't」は使わず、不要な要素をそのまま記述します
API 比較
| 機能 | Veo 3.1 (デフォルト) | Veo 3.1 Fast | Sora |
|---|---|---|---|
| プロバイダー | OpenAI | ||
| API キー | GOOGLE_API_KEY | GOOGLE_API_KEY | OPENAI_API_KEY |
| 最大長 | 8 秒 | 8 秒 | 20 秒 |
| 解像度 | 720p、1080p | 720p、1080p | 最大 1080p |
| アスペクト比 | 16:9、9:16 | 16:9、9:16 | 16:9、9:16、1:1 |
| 音声 (セリフ、SFX) | ✅ あり | ✅ あり | ❌ なし |
| 画像から動画 | ✅ あり | ✅ あり | ✅ あり |
| 参照画像 | ✅ 最大 3 枚 | ✅ 最大 3 枚 | ❌ なし |
| 動画の延長 | ✅ あり | ✅ あり | ❌ なし |
| バッチ生成 | ✅ あり | ✅ あり | ❌ なし |
| 速度 | 最高品質 | 約 2 倍高速 | より低速 |
| 最適な用途 | プロフェッショナル | バッチワークフロー | より長い動画 |