aliyun-wan-animate-move について
DashScope の非同期 API で、参照動画の動作や表情を人物画像に反映して動画を生成するスキルです。静止画の人物を動かすクリエイティブな制作に利用できます。
主な機能
- 01参照動画の動きを人物画像に転写
- 02wan-std と wan-pro のモードに対応
- 03非同期タスクの送信と状態確認
- 04生成動画の URL 取得
活用シーン
- 01人物画像から動きのあるアニメーションを作成
- 02参照動画の表情をキャラクターに反映
- 03標準またはプロモードで動画を生成
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ cinience/ alicloud-skills --skill aliyun-wan-animate-moveインストール後、Claude Code で/aliyun-wan-animate-moveを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
references/api_reference.mdsources.mdscripts/generate_animate_move.py詳細
Wan 2.2 Animate Move(画像からモーションへ)
検証
mkdir -p output/aliyun-wan-animate-move
python -m py_compile skills/ai/video/aliyun-wan-animate-move/scripts/generate_animate_move.py && echo "py_compile_ok" > output/aliyun-wan-animate-move/validate.txt
合格条件:コマンドが終了コード 0 で終了し、output/aliyun-wan-animate-move/validate.txt が生成されること。
出力とエビデンス
- タスク ID、ポーリング応答、最終的な動画 URL を
output/aliyun-wan-animate-move/に保存します。 - トラブルシューティング用に、エンドツーエンドの実行ログを少なくとも 1 つ保持します。
前提条件
- SDK をインストールします(venv の使用を推奨):
python3 -m venv .venv
. .venv/bin/activate
python -m pip install requests
- 環境変数に
DASHSCOPE_API_KEYを設定するか、~/.alibabacloud/credentialsにdashscope_api_keyを追加します。
重要なモデル名
wan2.2-animate-move-- 参照動画からキャラクター画像へのモーション転送に対応します
機能
| 機能 | 説明 | 必須の入力 |
|---|---|---|
| モーション転送 | 参照動画の動作や表情をキャラクター画像に転送します | image_url + video_url |
サービスモード
| モード | 説明 |
|---|---|
wan-std | 標準モード。生成が速く、コスト効率に優れており、プレビューや基本的なアニメーションに適しています |
wan-pro | プロフェッショナルモード。アニメーションがより滑らかで品質に優れていますが、処理時間が長くなります |
API エンドポイント(非同期のみ)
POST https://dashscope.aliyuncs.com/api/v1/services/aigc/image2video/video-synthesis
必須ヘッダー:
Authorization: Bearer $DASHSCOPE_API_KEYContent-Type: application/jsonX-DashScope-Async: enable
シンガポールのエンドポイント:dashscope.aliyuncs.com を dashscope-intl.aliyuncs.com に置き換えます。
正規化されたインターフェース
リクエスト
image_url(文字列、必須)-- キャラクター画像のパブリック HTTP/HTTPS URLvideo_url(文字列、必須)-- 参照モーション動画のパブリック HTTP/HTTPS URLwatermark(ブール値、任意)-- 透かしを追加するかどうか(デフォルト:false)mode(文字列、必須)--wan-stdまたはwan-procheck_image(ブール値、任意)-- 画像検出を実行するかどうか(デフォルト:true)
画像入力の制限
- 形式:JPG、JPEG、PNG、BMP、WEBP
- 解像度:1 辺あたり [200, 4096] ピクセル
- アスペクト比:1:3 ~ 3:1
- 最大サイズ:5MB
- 内容:人物 1 人、カメラ正面向き、顔全体が見えていること、フレーム内で適度な大きさであること
動画入力の制限
- 形式:MP4、AVI、MOV
- 長さ:2~30 秒
- 解像度:1 辺あたり [200, 2048] ピクセル
- アスペクト比:1:3 ~ 3:1
- 最大サイズ:200MB
- 内容:人物 1 人、カメラ正面向き、顔全体が見えていること、フレーム内で適度な大きさであること
応答(タスク作成)
output.task_id(文字列)-- ポーリングに使用します。有効期間は 24 時間ですoutput.task_status(文字列)-- PENDING | RUNNING | SUCCEEDED | FAILED | CANCELED | UNKNOWNrequest_id(文字列)
応答(タスク結果)
output.video_url(文字列)-- 生成された動画の URLusage.video_count(整数)usage.video_duration(整数)-- 秒単位の長さ
クイックスタート(Python + HTTP)
import os
import json
import time
import requests
API_KEY = os.getenv("DASHSCOPE_API_KEY")
BASE_URL = "https://dashscope.aliyuncs.com/api/v1"
def create_animate_move_task(image_url: str, video_url: str, mode: str = "wan-std") -> str:
"""Create an animate-move task and return task_id."""
payload = {
"model": "wan2.2-animate-move",
"input": {
"image_url": image_url,
"video_url": video_url,
"watermark": False,
},
"parameters": {
"mode": mode,
},
}
resp = requests.post(
f"{BASE_URL}/services/aigc/image2video/video-synthesis",
headers={
"Authorization": f"Bearer {API_KEY}",
"Content-Type": "application/json",
"X-DashScope-Async": "enable",
},
json=payload,
)
resp.raise_for_status()
data = resp.json()
return data["output"]["task_id"]
def poll_task(task_id: str, interval: int = 15) -> dict:
"""Poll until task completes. Returns final response."""
while True:
resp = requests.get(
f"{BASE_URL}/tasks/{task_id}",
headers={"Authorization": f"Bearer {API_KEY}"},
)
resp.raise_for_status()
data = resp.json()
status = data["output"]["task_status"]
if status in ("SUCCEEDED", "FAILED", "CANCELED"):
return data
time.sleep(interval)
エラー処理
| エラー | 考えられる原因 | 対処方法 |
|---|---|---|
| 401/403 | DASHSCOPE_API_KEY がないか、無効です | 環境変数または認証情報ファイルを確認します |
400 InvalidParameter | サポートされていない画像/動画形式、不正な寸法、必須フィールドの欠落 | パラメーターを検証します |
| "does not support synchronous calls" | X-DashScope-Async: enable ヘッダーがありません | 必須ヘッダーを追加します |
| 429 | レート制限またはクォータ | バックオフを入れて再試行します |
出力先
- デフォルトの出力先:
output/aliyun-wan-animate-move/videos/ OUTPUT_DIRでベースディレクトリを変更できます。
避けるべきパターン
wan2.2-animate-move以外のモデル名は使用しないでください。- この API を同期的に呼び出さないでください -- 非同期ヘッダーが必須です。
- 画像や動画に複数の人物を含めないでください -- 人物は 1 人のみです。
- 動画 URL は 24 時間後に期限切れになります。すぐにダウンロードして保存してください。
- 顔が隠れている画像や、極端な比率の画像は使用しないでください。
ワークフロー
- ユーザーの意図を確認します:参照動画からキャラクター画像へモーションを転送します。
- サービスモードを選択します:
wan-std(高速/低コスト)またはwan-pro(高品質)。 - 有効な形式と寸法の画像 URL と動画 URL を用意します。
- 非同期タスクを作成し、結果をポーリングします。
- URL の有効期限が切れる前に、生成された動画をダウンロードして保存します。
参考資料
- HTTP API の詳細については、
references/api_reference.mdを参照してください。 - ソースリンクについては、
references/sources.mdを参照してください。
コメント
Markdown 対応