image-to-video について
RunComfyで画像から動画を生成する、意図に応じてモデルを選ぶスキルです。動きや音声、参照素材の要件に合わせてHappyHorse、Wan 2.7、Seedance 2.0 Proを使い分けます。
主な機能
- 01要件に応じて3モデルを選択
- 02人物や製品画像をアニメーション化
- 03カスタム音声とのリップシンク
- 04画像・動画・音声の参照素材を合成
- 05モデル別のプロンプトとCLI呼び出し
活用シーン
- 01人物の特徴を保ったポートレート動画
- 02音声に合わせたリップシンク動画
- 03画像・シーン・音声を参照した動画生成
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ gencraft-labs/ skills --skill image-to-videoインストール後、Claude Code で/image-to-videoを入力して読み込まれたか確認します。
詳細
画像から動画へ — RunComfy の Pro Pack
runcomfy.com · HappyHorse I2V · Wan 2.7 · Seedance 2.0 Pro · GitHub
画像から動画へ、意図に応じてルーティング。 このスキルでは、使用するモデルが1つに固定されません。ユーザーの実際の要望(ポートレートのアニメーション化、カスタム音声トラックとのリップシンク、またはマルチモーダル構成)に基づき、RunComfy のカタログから適切な i2v モデルを選択します。
npx skills add agentspace-so/runcomfy-skills --skill image-to-video -g
ユーザーの意図に合ったモデルを選ぶ
| ユーザーの意図 | モデル | 理由 |
|---|---|---|
| ポートレートをアニメーション化する — 人物の同一性を維持 | HappyHorse 1.0 I2V | Artificial Analysis Arena で1位(Elo 1392)。顔の忠実度に優れています |
| 商品のお披露目/360度回転/マクロ撮影の動き | HappyHorse 1.0 I2V | 形状を保ち、カメラを滑らかに動かします |
| 1回の処理で、同期した環境音をネイティブに生成 | HappyHorse 1.0 I2V | 処理中に音声を合成します |
| カスタム音声トラックに合わせてアニメーション化し、リップシンクする | Wan 2.7 + audio_url | 独自の MP3/WAV(3~30秒、≤15MB)を受け付け、それに合わせてリップシンクします |
| 多言語の吹き替えバリエーション(同じ画像に対し、呼び出しごとに異なる音声) | Wan 2.7 + audio_url | 同じショットで、言語ごとに audio_url を入れ替えます |
| マルチモーダル — 画像+参照動画+参照音声を組み合わせる | Seedance 2.0 Pro | 画像参照は最大9枚、動画参照は最大3本(各2~15秒)、音声参照は最大3件 |
| キャラクター参照+シーン参照+音声参照を使った、ブランドの一貫性があるストーリー | Seedance 2.0 Pro | 画像で人物の同一性を保ち、動画でシーンを保ち、音声で声を保ちます |
| 指定がない場合のデフォルト | HappyHorse 1.0 I2V | 全般的に高品質で、ネイティブ音声にも対応しています |
エージェントはこの表を読み、ユーザーの意図を分類して、以下の該当するサブセクションを選びます。
前提条件
- RunComfy CLI —
npm i -g @runcomfy/cli - RunComfy アカウント —
runcomfy loginを実行すると、ブラウザーでデバイスコード認証が始まります。 - CI/コンテナ —
RUNCOMFY_TOKEN=<token>を設定します。 - ソース画像の URL — JPEG/PNG/WebP、最小300px、≤10MB。アスペクト比は1:2.5~2.5:1(HappyHorse の場合)。他のモデルも同様の仕様です。
ルート1:HappyHorse 1.0 I2V — ポートレート/商品/一般的なアニメーションのデフォルト
モデル: happyhorse/happyhorse-1-0/image-to-video · Arena ランク: 1位(Elo 1392)
スキーマ
| フィールド | 型 | 必須 | デフォルト | 注記 |
|---|---|---|---|---|
image_url | string | はい | — | JPEG/JPG/PNG/WEBP。最小300px。アスペクト比1:2.5~2.5:1。≤10MB。 |
prompt | string | はい | — | CJK 以外は最大5000文字、CJK は最大2500文字。動き/カメラ/照明の説明。 |
resolution | enum | いいえ | 1080P | 720P または 1080P。 |
duration | int | いいえ | 5 | 3~15秒。 |
seed | int | いいえ | 0 | バリエーションの比較に使うシード値です。 |
watermark | bool | いいえ | true | プロバイダーのウォーターマークを切り替えます。 |
出力のアスペクト比は入力のアスペクト比と同じです。独立したリフレーミングには対応していません。
呼び出し
runcomfy run happyhorse/happyhorse-1-0/image-to-video \
--input '{
"image_url": "https://.../portrait.jpg",
"prompt": "Gentle camera drift around the subject'\''s face, subtle breathing motion, identity-stable features, soft natural light."
}' \
--output-dir <absolute/path>
プロンプトのヒント
- 動きを表す動詞から始める:「漂う」「ドリーイン」「旋回する」「上にチルトする」「明らかにする」「まばたきする」「呼吸する」など。何が動くかを最初に書きます。
- 画像の内容を言い換えない — モデルは画像を認識します。変化する要素にトークンを使います。
- 維持する要素を明示する:「人物の同一性を保つ」「パッケージは変更しない」「背景の形状を安定させる」など。
- 照明の変化:「リムライトが強まる」「カメラが上昇するにつれて影が短くなる」など。
- 1クリップにつき1つの動き — 主な動きは1つに絞ります(旋回またはドリー、チルト、キャラクターの動作)。
ルート 2:Wan 2.7 + audio_url — ユーザーがカスタムのナレーション音声を用意している場合
モデル:wan-ai/wan-2-7/text-to-video(/image-to-videoではありません。Wan 2.7 の t2v エンドポイントは、リップシンクを制御するaudio_urlを受け付けます)
Wan 2.7 での i2v に関する注意:Wan 2.7 の主要な i2v アニメーションは、ここでは専用のエンドポイントでは提供されていません。モーションプロンプトだけで画像をアニメーション化する純粋な i2v には、HappyHorse i2v を推奨します。Wan 2.7 は、生成したトーキングヘッド動画にリップシンクさせたいカスタム音声トラックがユーザーにある場合に使用します。
スキーマ(音声付き Wan 2.7 t2v)
| フィールド | 型 | 必須 | デフォルト | 備考 |
|---|---|---|---|---|
prompt | string | はい | — | 約 5000 文字まで。トーキングヘッドのショットについて、フレーミング、照明、動きを記述します。 |
audio_url | string | はい(リップシンクの場合) | — | WAV/MP3、3~30 秒、≤15MB。リップシンクを制御します。 |
aspect_ratio | enum | いいえ | 16:9 | 16:9、9:16、1:1、4:3、3:4。 |
resolution | enum | いいえ | 1080p | 720p または 1080p。 |
duration | enum | いいえ | 5 | 2~15(整数秒)。音声の長さに合わせます。 |
negative_prompt | string | いいえ | — | 避けるべき具体的な問題(例:「字幕なし、ちらつきなし」)。 |
seed | int | いいえ | — | 再現性。 |
呼び出し
runcomfy run wan-ai/wan-2-7/text-to-video \
--input '{
"prompt": "Medium close-up of a confident spokesperson in a softly-lit recording booth, leaning slightly toward the camera, locked tripod, shallow DOF, warm key light from camera-left.",
"audio_url": "https://.../voiceover-en.mp3",
"duration": 12,
"aspect_ratio": "9:16"
}' \
--output-dir <absolute/path>
プロンプトのヒント
- トーキングヘッドのショットを記述する — フレーミング、照明、レンズの雰囲気を指定します。音声がリップシンクを制御し、プロンプトがその周囲のビジュアルを構築します。
durationを音声の長さに合わせる — 長すぎると、音声の終了後はクリップが無音になります。- 問題の指定には
negative_promptを使う:"no subtitles, no flicker, no distorted hands"。 - 多言語吹き替えの場合 — 同じプロンプトを使い、呼び出しごとに
audio_urlを差し替えます。言語間でビジュアルの一貫性を保つには、seed を固定します。
ルート 3:Seedance 2.0 Pro — マルチモーダルアニメーション(画像 + 参照動画 + 参照音声)
モデル:bytedance/seedance-v2/pro
ユーザーが被写体の画像 + 参照動画のシーン + 参照音声の声のトーンを組み合わせた単一のクリップを求めている場合に使用します。
スキーマ(Seedance 2.0 Pro、i2v 関連フィールド)
| フィールド | 型 | 必須 | デフォルト | 備考 |
|---|---|---|---|---|
prompt | string | はい | — | 中国語は ≤500 文字、または英語は ≤1000 単語。 |
image_url | array | はい(i2v の場合) | [] | 画像 0~9 枚。最初の画像が主な被写体です。 |
video_url | array | いいえ | [] | 参照クリップ 0~3 本(MP4/MOV)、各 2~15 秒。 |
audio_url | array | いいえ | [] | 参照音声 0~3 本(WAV/MP3)、2~15 秒、各 < 15MB。 |
aspect_ratio | enum | いいえ | adaptive | adaptive、16:9、9:16、4:3、3:4、1:1、21:9。 |
duration | int | いいえ | 5 | 4~15(整数秒)。 |
resolution | enum | いいえ | 720p | 480p または 720p。 |
generate_audio | bool | いいえ | true | 生成時に同期する音声、効果音、音楽。 |
seed | int | いいえ | — | 再現性。 |
呼び出し
runcomfy run bytedance/seedance-v2/pro \
--input '{
"prompt": "Subject from image 1 walks through the café in video 1, voice tone matches audio 1. Medium close-up, slow push-in, warm light, gentle ambience.",
"image_url": ["https://.../subject.jpg"],
"video_url": ["https://.../cafe-locked-shot.mp4"],
"audio_url": ["https://.../voice-tone.mp3"],
"duration": 8
}' \
--output-dir <absolute/path>
プロンプトのヒント
- 画像とテキストの役割分担 — 安定させたい要素(顔、衣装、ブランド)には
image_urlを使い、変化させたい要素(動作、雰囲気、照明)にはpromptを使います。 - プロンプト内で参照素材に番号を付ける:「画像 1 の被写体、動画 1 の照明、音声 1 の声」のように指定します。Seedance は指示を正しく振り分けます。
- 参照メディアの仕様 — 動画と音声は 2~15 秒である必要があります。音声は < 15MB です。
- 大きく異なる美的スタイルを混在させない — 画像 1 が水彩画で動画 1 がフォトリアルの場合、出力のスタイルにブレが生じます。
制限事項
- 各ルートには、それぞれのモデルの制限が適用されます。 HappyHorse:上限 15 秒、出力のアスペクト比は入力と同じ。Wan 2.7:上限 15 秒、音声は 3~30 秒/15MB。Seedance:このテンプレートでは上限 720p、上限 15 秒。
- 複数ルートのブレンドには対応していません。 このスキルでは、呼び出しごとにモデルを 1 つ選択します。ユーザーが同じクリップ内で HappyHorse のアニメーションと Wan 風のリップシンクを求める場合は、2 回呼び出してから結合する必要があります(ここでは対象外です)。
- ブランド固有の上書き — ユーザーが一覧にない特定のモデルバリアント(例:Wan 2.6、Seedance 1.5)を指定した場合は、ここで無理に処理せず、該当するブランドスキル(
wan-2-7、seedance-v2)に振り分けます。
終了コード
| code | 意味 |
|---|---|
| 0 | 成功 |
| 64 | CLI 引数が不正です |
| 65 | 入力 JSON が不正です/スキーマが一致しません |
| 69 | 上流で 5xx が発生しました |
| 75 | 再試行可能です:タイムアウト/429 |
| 77 | サインインしていないか、トークンが拒否されました |
詳細なリファレンス:docs.runcomfy.com/cli/troubleshooting。
仕組み
このスキルはユーザーの意図に基づいて HappyHorse 1.0 I2V/Wan 2.7 t2v+audio/Seedance 2.0 Pro のいずれかを選び、一致する JSON 本文を指定して runcomfy run <model_id> を実行します。CLI は Model API に POST し、リクエストをポーリングして結果を取得した後、.runcomfy.net/.runcomfy.com の URL があれば --output-dir にダウンロードします。Ctrl-C を押すと、終了前にリモートリクエストをキャンセルします。
セキュリティとプライバシー
- トークンの保存:
runcomfy loginは API トークンをモード 0600(所有者のみ読み取り/書き込み可能)で~/.config/runcomfy/token.jsonに書き込みます。CI/コンテナでファイルを完全に回避するには、環境変数RUNCOMFY_TOKENを設定してください。 - 入力境界:ユーザーのプロンプトは
--inputを介して JSON 文字列として CLI に渡されます。CLI はプロンプトをシェル展開せず、JSON 本文を HTTPS 経由で Model API に直接送信します。プロンプトの内容によるシェルインジェクションのリスクはありません。 - サードパーティコンテンツ:指定した画像/マスク/動画の URL は、手元の CLI ではなく RunComfy モデルサーバーによって取得されます。外部 URL は信頼できないものとして扱ってください。画像ベースのプロンプトインジェクションは、あらゆる画像編集/動画編集モデルに既知のリスクです。
- 送信先エンドポイント:
model-api.runcomfy.net(リクエストの送信)および*.runcomfy.net/*.runcomfy.com(生成された出力のダウンロード許可リスト)のみです。テレメトリもコールバックもありません。 - 生成ファイルのサイズ上限:悪意のある出力や、モデルが予期せず生成した出力によるディスク容量の枯渇を防ぐため、CLI は 2 GiB を超える単一のダウンロードを中止します。