Skip to main content

動画生成モデルの統合

エージェントツールから Token Plan の動画生成モデルを呼び出し、非同期タスクを送信して、生成が完了したら動画をダウンロードします。

サポートされているモデル

モデル入力説明
happyhorse-1.1-t2vテキストテキストから動画生成
happyhorse-1.1-i2v先頭フレーム画像、テキスト画像から動画生成
happyhorse-1.1-r2v参照画像、テキスト参照から動画生成
wan3.0-videoテキスト、画像、または参照資料オールインワン動画生成
その他のモデルについては、Token Planでサポートされているモデルをご参照ください。

前提条件

  • Token Plan サブスクリプションと、sk-sp- で始まる API キー。詳細については、統合の概要 をご覧ください。
  • Python 3.9 以降。
  • お使いの AI コーディングツールが Slash Commands をサポートしていること。他のツールの設定パスについては、その他のツール をご覧ください。

インターフェース

タスクの送信: POST https://token-plan.ap-southeast-1.maas.aliyuncs.com/api/v1/services/aigc/video-generation/video-synthesis タスクの照会: GET https://token-plan.ap-southeast-1.maas.aliyuncs.com/api/v1/tasks/{task_id} リクエストヘッダーで Authorization: Bearer $ANTHROPIC_AUTH_TOKEN を使用します。タスクの送信時に X-DashScope-Async: enable を追加します。

ステップ1:スラッシュコマンドの作成

Token Plan APIキーを環境変数 $ANTHROPIC_AUTH_TOKEN に設定します。 プロジェクトルートに .claude/commands/text-to-video.md を作成し、以下の内容を追加します:
Token Planの動画生成APIを呼び出し、text-to-videoタスクを送信して、完了を待機し、動画をダウンロードします。

動画の説明: $ARGUMENTS

## 手順

1. 説明からプロンプト(動画の説明)、モデル(デフォルト: happyhorse-1.1-t2v)、解像度(デフォルト: 720P)、アスペクト比(デフォルト: 16:9)、再生時間(デフォルト: 5)を抽出します。説明にモデルが指定されている場合は、そのモデルを使用します。
2. 依存関係をインストールします: pip install requests
3. Bashツールを使用して、以下のPythonスクリプトを実行します。このスクリプトは、最初にTOKEN_PLAN_API_KEYを、次にANTHROPIC_AUTH_TOKENを読み取ります。キーを表示したり、ファイルやログに書き込んだりしないでください。

```python
import json
import os
import sys
import time
from pathlib import Path

import requests

prompt = " ".join(sys.argv[1:])
key = os.environ.get("TOKEN_PLAN_API_KEY") or os.environ.get("ANTHROPIC_AUTH_TOKEN")
if not key:
    raise SystemExit("Token Plan API Key not found.")

base_url = "https://token-plan.ap-southeast-1.maas.aliyuncs.com"
headers = {"Authorization": f"Bearer {key}", "Content-Type": "application/json"}

response = requests.post(
    f"{base_url}/api/v1/services/aigc/video-generation/video-synthesis",
    headers={**headers, "X-DashScope-Async": "enable"},
    json={
        "model": "happyhorse-1.1-t2v",
        "input": {"prompt": prompt},
        "parameters": {"resolution": "720P", "ratio": "16:9", "duration": 5},
    },
    timeout=60,
)
if not response.ok:
    raise SystemExit(f"{response.status_code}: {response.text}")
task_id = response.json()["output"]["task_id"]
print(f"Task submitted: {task_id}")

while True:
    time.sleep(10)
    result = requests.get(f"{base_url}/api/v1/tasks/{task_id}", headers=headers, timeout=60)
    if not result.ok:
        raise SystemExit(f"{result.status_code}: {result.text}")
    data = result.json()
    status = data["output"]["task_status"]
    if status == "SUCCEEDED":
        video_url = data["output"]["video_url"]
        output = f"generated_{time.strftime('%Y%m%d_%H%M%S')}.mp4"
        video = requests.get(video_url, timeout=120)
        video.raise_for_status()
        Path(output).write_bytes(video.content)
        print(output)
        break
    if status in {"FAILED", "CANCELED", "UNKNOWN"}:
        raise SystemExit(json.dumps(data, ensure_ascii=False, indent=2))
    print(f"Task status: {status}")
```

4. ダウンロードした動画ファイルのパスを出力します。

ステップ2: 動画を生成する

Claude Code で、/text-to-video a white cat sitting on a balcony in the sun と入力します。再生時間、解像度、またはアスペクト比を調整するには、コマンドで指定します。例: /text-to-video generate a 10-second, 1080P, 9:16 city night scene。

リクエストパラメータ

パラメータ必須説明
modelはい動画生成モデルのID。
input.promptはい動画の説明。
parameters.resolutionいいえ解像度。480P、720P、1080P をサポートします。デフォルト:1080P。
parameters.ratioいいえアスペクト比。16:9、9:16、1:1 などをサポートします。デフォルト:16:9。
parameters.durationいいえ秒単位の動画の長さで、3 から 15 の範囲です。デフォルト:5。
その他のパラメータについては、HappyHorse text-to-video API をご参照ください。

レスポンス

  • タスクを送信すると、output.task_id と output.task_status が返されます。
  • GET /api/v1/tasks/{task_id} をポーリングします。ステータスが SUCCEEDED になると、レスポンスに output.video_url が含まれます。
  • タスクステータスには PENDING、RUNNING、SUCCEEDED、FAILED、CANCELED、UNKNOWN があります。
  • 動画の URL には有効期限があります。速やかに動画をダウンロードしてください。

制限事項

  • 動画生成は非同期です。タスクを送信し、結果をポーリングしてください。task_id は 24 時間有効です。
  • サポートされる入力タイプ、解像度、長さ、アスペクト比はモデルによって異なります。各モデルのドキュメントを参照してください。
  • 動画生成は、画像生成や音声合成よりも多く消費します。実際の Credits 消費量は、コンソールの Usage に表示されます。

その他のツール

その他のツールの拡張メカニズムおよび設定パスについては、Integration overview をご参照ください。上記の Slash Command を対応するパスに保存してください。