mcpField
A
aliyun-wan-video

aliyun-wan-video

github.com/cinienceクリエイティブ・メディア39690 回インストール11 週間前に更新
リポジトリ

aliyun-wan-video について

DashScope Python SDKを通じてWanモデルの動画生成リクエストと出力を標準化するプロバイダースキルです。テキストまたは画像を条件とする生成や非同期処理を必要とする動画エージェントのワークフロー向けです。

主な機能

  1. 01テキストから動画・画像から動画のモデルに対応
  2. 02リクエストとレスポンス項目の標準化
  3. 03ポーリングによる非同期ジョブ処理
  4. 04タスクIDと生成動画URLの記録

活用シーン

  1. 01プロンプトと設定に基づく動画生成
  2. 02画像を条件とする動画の作成
  3. 03非同期生成タスクの追跡

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/cinience/alicloud-skills --skill aliyun-wan-video

インストール後、Claude Code で/aliyun-wan-videoを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

agents/
openai.yaml
references/
api_reference.md
sources.md
scripts/
generate_dancing_video.py
generate_video.py

詳細

カテゴリ:プロバイダー

Model Studio Wan Video

検証

mkdir -p output/aliyun-wan-video
python -m py_compile skills/ai/video/aliyun-wan-video/scripts/generate_video.py && echo "py_compile_ok" > output/aliyun-wan-video/validate.txt

合格基準:コマンドが 0 で終了し、output/aliyun-wan-video/validate.txt が生成されます。

出力と証拠

  • タスク ID、ポーリング応答、最終的な動画 URL を output/aliyun-wan-video/ に保存します。
  • トラブルシューティング用に、エンドツーエンドの実行ログを 1 つ保存します。

video.generate の入出力を標準化し、DashScope SDK(Python)で正確なモデル名を使用することで、動画エージェントのパイプラインに一貫した動画生成動作を提供します。

重要なモデル名

次のモデル文字列のいずれかを正確に使用してください。

  • wan2.6-t2v
  • wan2.6-t2v-us
  • wan2.2-t2v-plus
  • wan2.2-t2v-flash
  • wan2.6-i2v-flash
  • wan2.6-i2v
  • wan2.6-i2v-us
  • wanx2.1-t2v-turbo

前提条件

  • SDK をインストールします(PEP 668 の制限を回避するため、venv の使用を推奨します)。
python3 -m venv .venv
. .venv/bin/activate
python -m pip install dashscope
  • 環境に DASHSCOPE_API_KEY を設定するか、~/.alibabacloud/credentials に dashscope_api_key を追加します(環境変数が優先されます)。

正規化されたインターフェース(video.generate)

リクエスト
  • prompt(文字列、必須)
  • negative_prompt(文字列、任意)
  • duration(数値、必須)秒
  • fps(数値、必須)
  • size(文字列、必須)、例:1280*720
  • seed(整数、任意)
  • reference_image(文字列 | バイト列、t2v では任意、i2v ファミリーのモデルでは必須)
  • motion_strength(数値、任意)
レスポンス
  • video_url(文字列)
  • duration(数値)
  • fps(数値)
  • seed(整数)

クイックスタート(Python + DashScope SDK)

動画生成は通常、非同期で行われます。タスク ID が返され、完了までポーリングすることを想定してください。 注:Wan i2v モデルには入力画像が必要です。wan2.6-t2v などの t2v 専用モデルでは reference_image を省略できます。

import os
from dashscope import VideoSynthesis

# Prefer env var for auth: export DASHSCOPE_API_KEY=...
# Or use ~/.alibabacloud/credentials with dashscope_api_key under [default].

def generate_video(req: dict) -> dict:
    payload = {
        "model": req.get("model", "wan2.6-i2v-flash"),
        "prompt": req["prompt"],
        "negative_prompt": req.get("negative_prompt"),
        "duration": req.get("duration", 4),
        "fps": req.get("fps", 24),
        "size": req.get("size", "1280*720"),
        "seed": req.get("seed"),
        "motion_strength": req.get("motion_strength"),
        "api_key": os.getenv("DASHSCOPE_API_KEY"),
    }

    if req.get("reference_image"):
        # DashScope expects img_url for i2v models; local files are auto-uploaded.
        payload["img_url"] = req["reference_image"]

    response = VideoSynthesis.call(**payload)

    # Some SDK versions require polling for the final result.
    # If a task_id is returned, poll until status is SUCCEEDED.
    result = response.output.get("results", [None])[0]

    return {
        "video_url": None if not result else result.get("url"),
        "duration": response.output.get("duration"),
        "fps": response.output.get("fps"),
        "seed": response.output.get("seed"),
    }

非同期処理(ポーリング)

import os
from dashscope import VideoSynthesis

task = VideoSynthesis.async_call(
    model=req.get("model", "wan2.6-i2v-flash"),
    prompt=req["prompt"],
    img_url=req["reference_image"],
    duration=req.get("duration", 4),
    fps=req.get("fps", 24),
    size=req.get("size", "1280*720"),
    api_key=os.getenv("DASHSCOPE_API_KEY"),
)

final = VideoSynthesis.wait(task)
video_url = final.output.get("video_url")

運用ガイダンス

  • 動画生成には数分かかることがあります。進捗を表示し、キャンセルや再試行ができるようにしてください。
  • (prompt, negative_prompt, duration, fps, size, seed, reference_image hash, motion_strength) をキーにキャッシュします。
  • 動画アセットはオブジェクトストレージに保存し、メタデータには URL のみを保持します。
  • reference_image には URL またはローカルパスを指定できます。SDK がローカルファイルを自動でアップロードします。
  • Field required: input.img_url が表示された場合、参照画像がないか、正しく割り当てられていません。
  • 公式ドキュメントによると、wan2.6-t2v と wan2.6-t2v-us はマルチショットのナラティブに対応し、音声入力を任意で指定できます。

サイズに関する注意

  • WxH 形式を使用します(例:1280*720)。
  • 一般的なサイズを使用してください。サポートされていないサイズでは 400 が返されることがあります。

出力先

  • デフォルトの出力先:output/aliyun-wan-video/videos/
  • OUTPUT_DIR でベースディレクトリを上書きできます。

アンチパターン

  • モデル名やエイリアスを独自に作らず、公式の Wan i2v モデル ID のみを使用してください。
  • 進捗を更新せずに UI をブロックしないでください。
  • 4xx エラーを無条件に再試行せず、検証エラーを明示的に処理してください。

ワークフロー

  1. ユーザーの意図、リージョン、識別子、操作が読み取り専用か変更を伴うかを確認します。
  2. 接続と権限を確認するため、まず最小限の読み取り専用クエリを 1 つ実行します。
  3. 範囲を限定し、パラメーターを明示して対象の操作を実行します。
  4. 結果を検証し、出力ファイルと証拠ファイルを保存します。

参考資料

  • DashScope SDK のマッピングと非同期処理に関する注意事項は、references/api_reference.md を参照してください。

  • ソース一覧:references/sources.md

コメント