9router-video について
9router-videoは、9Router経由でxAI Grok Imagineの動画生成、編集、延長ジョブを送信するスキルです。非同期の状態確認に対応し、CLIコマンドで完了した動画をダウンロードできます。
主な機能
- 01テキスト・画像から動画を生成
- 02既存動画の編集または延長
- 03非同期ジョブの状態確認
- 04CLIコマンドで結果をダウンロード
活用シーン
- 01テキストプロンプトから動画を生成
- 02画像から動画を作成
- 03既存動画を編集または延長
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ decolua/ 9router --skill 9router-videoインストール後、Claude Code で/9router-videoを入力して読み込まれたか確認します。
詳細
9Router — 動画生成(xAI Grok Imagine)
NINEROUTER_URL が必要です(認証が有効な場合は NINEROUTER_KEY も必要です)。セットアップについては、https://raw.githubusercontent.com/decolua/9router/refs/heads/master/skills/9router/SKILL.md を参照してください。
9Router ダッシュボードで xAI アカウントを接続する必要があります。接続方法は、Grok Build OAuth(SuperGrok / X Premium+ のサブスクリプションでサインイン)または console.x.ai で取得した直接の xAI API キーのいずれかです。この2つは認証方式が別々で、課金も個別です。ダッシュボードでは各接続で使用されている方式を確認できます。
エンドポイント(非同期ジョブのフロー)
動画生成は非同期です。POST はすぐに request_id を返し、ジョブの状態が done または failed になるまでポーリングします。
| エンドポイント | 用途 |
|---|---|
POST /v1/videos/generations | テキストから動画を生成 / 画像から動画を生成 |
POST /v1/videos/edits | 既存の動画を編集 |
POST /v1/videos/extensions | 既存の動画を延長 |
GET /v1/videos/{request_id} | ジョブの状態をポーリング |
リクエストフィールド(xAI に変更せずそのまま渡されます。https://docs.x.ai/developers/rest-api-reference/inference/videos を参照):
| フィールド | 必須 | 備考 |
|---|---|---|
model | いいえ | xai/grok-imagine-video(上流に渡す前にプレフィックスが除去されます) |
prompt | T2V の場合は必須 | 動画の説明 |
duration | いいえ | 秒数 |
aspect_ratio | いいえ | 16:9、9:16、1:1、4:3、3:4、3:2、2:3 |
resolution | いいえ | 480p、720p、1080p |
image | いいえ | 画像から動画を生成する場合は { "url": "https://… or data:image/…;base64,…" } |
video | 編集 / 延長の場合 | { "url": "…mp4" } または { "file_id": "…" } |
例
ジョブを送信します:
curl -X POST "$NINEROUTER_URL/v1/videos/generations" \
-H "Authorization: Bearer $NINEROUTER_KEY" \
-H "Content-Type: application/json" \
-d '{"model":"xai/grok-imagine-video","prompt":"A cinematic tracking shot through a neon city at night","duration":8,"aspect_ratio":"16:9","resolution":"720p"}'
# → {"request_id":"abc123"} (response header x-9router-connection-id: <id>)
完了するまでポーリングします(同じアカウントでジョブをポーリングできるよう、接続ヘッダーをそのまま返します):
curl "$NINEROUTER_URL/v1/videos/abc123" \
-H "Authorization: Bearer $NINEROUTER_KEY" \
-H "x-connection-id: <id from create response>"
# → {"status":"pending","progress":42}
# → {"status":"done","video":{"url":"https://…mp4","duration":8},"model":"grok-imagine-video"}
# → {"status":"failed","error":{"code":"…","message":"…"}}
ダウンロード:done レスポンスから video.url を取得します。
CLI で一度に実行
9router xai video \
--prompt "A cinematic tracking shot through a neon city at night" \
--output video.mp4
# options: --model --duration --aspect-ratio --resolution --image --timeout --port --api-key
ジョブを送信し、進行状況を表示しながらポーリングして、video.mp4.part にダウンロードします。成功すると、アトミックにファイル名を変更します。Ctrl+C で正常にキャンセルでき、失敗時はゼロ以外の終了コードを返します。
注意事項と制限
- 上流のジョブはアカウントに紐付けられます。ジョブを作成した接続と同じ接続でポーリングしてください(
x-connection-idヘッダーを使用します。値は作成レスポンスのx-9router-connection-idです)。 - 作成 POST は自動再試行されません(再試行すると、動画が2本作成され、課金される可能性があります)。401 の場合に限り、トークンを更新して1回だけ再試行します。この場合、ジョブが作成される前に上流がリクエストを拒否します。
- 動画モデルには
kind: "video"タグが付与され、チャットモデルの一覧とチャットのフォールバック構成から除外されます。 - Grok Build のサブスクリプション OAuth トークンは、API キーと同じ
api.x.ai/v1/videosエンドポイントに送信されます。サブスクリプションの各プランに動画生成の利用枠が含まれるかどうかは xAI が管理しており、9Router では確認されません。上流から403/permission_deniedが返された場合、接続中のアカウントには動画へのアクセス権がありません。