在 Agent 工具中呼叫 Token Plan 影片生成模型,提交非同步任務並在生成完成後下載影片。
支援的模型
| 模型 | 輸入 | 說明 |
|---|---|---|
happyhorse-1.1-t2v | 文字 | 文字生成影片 |
happyhorse-1.1-i2v | 首幀圖片、文字 | 圖片生成影片 |
happyhorse-1.1-r2v | 參考圖片、文字 | 參考生成影片 |
wan3.0-video | 文字、圖片或參考素材 | 全能影片生成 |
更多模型以 Token Plan 支援的模型 為準。
前提
- 已訂閱 Token Plan,並取得以
sk-sp-開頭的 API Key。取得方式請參閱整合概覽。 - 本機已安裝 Python 3.9 及以上版本。
- 使用的 AI 程式設計工具支援 Slash Command。其他工具的設定路徑請參閱其他工具。
介面
提交任務: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。
步驟一:建立 Slash Command
將套餐 API Key 設定為環境變數 $ANTHROPIC_AUTH_TOKEN。
在專案根目錄建立 .claude/commands/text-to-video.md,寫入以下內容:
呼叫 Token Plan 影片產生 API,提交文字產生影片任務,等待完成後下載影片。
影片描述:$ARGUMENTS
## 步驟
1. 從描述中提取 prompt(影片描述)、model(預設 happyhorse-1.1-t2v)、resolution(預設 720P)、ratio(預設 16:9)、duration(預設 5)。如果描述中明確指定了模型,使用指定的模型名稱。
2. 安裝相依套件:pip install requests
3. 使用 Bash 工具執行以下 Python 指令碼提交任務、輪詢狀態並下載影片。指令碼優先讀取 TOKEN_PLAN_API_KEY,其次讀取 ANTHROPIC_AUTH_TOKEN;不要顯示 Key,也不要寫入檔案或日誌。
```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_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"任務狀態:{status}")
```
4. 輸出下載後的影片檔案路徑。
步驟二:產生影片
在 Claude Code 中輸入 /text-to-video 一只白色的猫在阳台上晒太阳。如需調整時長、解析度或寬高比,在指令中寫明即可,例如 /text-to-video 生成 10 秒、1080P、9:16 的城市夜景。
請求參數
| 參數 | 必選 | 說明 |
|---|---|---|
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 文生影片 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 小時。 - 不同模型支援的輸入類型、解析度、時長和長寬比不同,以對應模型文件為準。
- 影片生成消耗高於圖片和語音合成,以主控台用量統計為準。
其他工具
其他工具的擴充機制與設定路徑請參閱整合概覽。將上方的 Slash Command 內容儲存至對應路徑即可。