Skip to main content
このページでは、すぐに使える Agent Skill を提供しています。依存関係ゼロのスクリプト 1 つで、Wan2.7HappyHorse の両シリーズをカバーします。これらは 1 つのエンドポイント、1 つのリクエスト構造、そして Wan&HappyHorse token グループを共有しており、--model で切り替えます。このスクリプトは、渡したアセット(text / image / reference / video-edit)から適切なモデルを自動で選び、非同期の送信 → ポーリング → ダウンロードの一連の流れをまとめて処理します。全体はたった 2 ファイルです。

このスキルでできること

1つにまとめたスキルです。スクリプトは、どのアセットを渡すか から生成モードとモデル ID を導き出します:

Text to video

promptのみ → 新規の動画を作成します。prompt の自動拡張はデフォルトで有効なので、短いpromptでもうまく機能します。

Image to video

最初のフレーム画像を渡して静止画をアニメーション化します。ローカル画像は直接アップロードされるため、画像ホスティングは不要です。

Reference to video

参照画像を渡します(Wan では参照動画も受け付けます)→ キャラクター、オブジェクト、またはスタイルを維持した新しい映像を生成します。prompt 内では「image 1 / video 1」と指定してください。

Video editing

動画 + 参照画像を渡します → 動画内の要素を置き換えたり、スタイルを変更したりします。出力の長さは元のソースに従います。

どのシリーズを選ぶか

2つのシリーズはまったく同じ名前で呼ばれています。異なるのは価格、見た目の仕上がり、参照アセット機能です。スクリプトは--modelごとの違いを処理します。
目安としては、日常利用や大量利用ではデフォルトのwanを使い続ける見た目の品質が最優先なら--model happyhorse です。どちらもWan&HappyHorseグループ(0.14xのレート倍率=公式CNY価格の約98%、チャージボーナスでさらに安くなります)を共有しており、1つのtokenで両方に対応し、別個の割引グループはありません。課金は秒単位で行われ、失敗したタスクに課金されることはありません。詳細な料金は Wan 概要HappyHorse 概要 をご覧ください。

どのエージェントが使用できますか

Skill は実質的には フォルダ です: エージェントが読むためのメモ (SKILL.md) と、作業を行うスクリプトが入っています。したがって、ローカルファイルを読み取り、シェルコマンドを実行できるあらゆるコーディングエージェントなら使用できますCodex, OpenClaw, hermes-agent, Claude Code などです。必要条件は1つだけです: エージェントを実行するマシン(お使いのノートPCやサーバー)に Python 3インターネット接続 があり、(スクリプトが api.apiyi.com を直接呼び出します)。スクリプトは Python の標準ライブラリしか使用しません — pip install は不要です。

3ステップで設定する

① フォルダを作成して、ファイルを貼り付けます

スキルフォルダを作成し、下の2つのファイルを配置します(完全な内容は次の2つのセクションにあります):

② その隣にキーを書き込みます

wan/.envAPIYI APIキー を書き込みます(api.apiyi.com コンソールで1つ作成します。その token には Wan&HappyHorse グループが有効になっている必要があります。従量課金 billing を使用してください。呼び出しごとの課金 token はルーティングできません):
このスクリプトは、この .env からキーを自動的に読み込みます — 追加の設定や環境変数は不要です
.env には秘密 key が格納されています。スキルがプロジェクトリポジトリ内で共有される場合は、.env.gitignore に追加し、決してコミットしないでください

③ エージェントに渡します

  • スキルの自動検出に対応したエージェント(例: Claude Code)の場合: この wan/ フォルダ全体を、そのスキルディレクトリに入れてください — 個人用の ~/.claude/skills/、またはプロジェクトレベルの .claude/skills/(リポジトリと共有)。
  • その他のエージェント: それぞれのスキル/プラグインの規約に従ってください。最も簡単なのは — エージェントに「このフォルダの SKILL.md を読んで、それに従ってください」と伝えることです
これで完了です — 例については 使い方 をご覧ください。

SKILL.md

以下の完全な内容を含む wan/SKILL.md を作成してください(description には「何をするか + いつ使うか」が記載されており、エージェントが自動トリガーする際に使われます):
name は小文字の英字 + ハイフンである必要があります。スラッシュコマンド対応のエージェントでは、フォルダ名がコマンドです — wan/wan を取得できます。${CLAUDE_SKILL_DIR} は Claude Code の skill-directory 変数です。他のエージェントでは、スクリプトの実際のパスをそのまま使用してください。

scripts/wan_video.py

wan/scripts/wan_video.py を作成します — 純粋な Python 標準ライブラリで、このサイトの API リファレンスページと同じリクエストコード、動作確認済み:

シリーズの切り替え方法

シリーズの切り替えは --modelだけ です。スクリプトが「シリーズ × アセットタイプ」からモデル ID を算出します:
モデル ID 生成表(覚える必要はありません — スクリプトが自動で選びます):

アセット入力: ローカル画像はそのまま使えます(確認済み)

公式ドキュメントでは、メディアは公開アクセス可能な https の URL である必要があるとされていますが、当社のテストでは両方のシリーズが base64 の data URI を受け付ける ことが確認できました。そのため、スクリプトはローカル画像を自動変換し、-i photo.jpg または --ref-image role.png にローカルパスを指定してもそのまま使えます。画像ホストは不要です。動画アセット(--ref-video / --video)については、引き続き公開 URL が推奨されます。base64 エンコードでは大きなファイルのサイズが約 3 分の 1 増加し、リクエスト制限を超える可能性があるためです。

2〜5分の待機を想定してください(重要)

動画生成は 非同期タスク です。
  • スクリプトは全体の流れをまとめて処理します。送信(X-DashScope-Async ヘッダー付き)→ 8秒ごとにポーリング → 成功時に mp4 を自動ダウンロード。720P/5秒のクリップは、端から端までで約45〜155秒かかります(実測)。1080P 以上、またはより長い場合は 5分を超えることがあります。
  • progress の値が 長時間30%のままでも正常です(上流は 0/10/30/100 しか報告しません)— 停止しているわけではありません。
  • コマンドのタイムアウトは長めに設定する(600秒以上)か、バックグラウンドで実行してください — 多くのエージェントはデフォルトの2分後にコマンドを終了してしまい、動画の準備が整う前に切断されます。SKILL.md にもその旨が記載されています。
  • もしポーリングがタイムアウトしても(20分)、タスクはサーバー側に残っています。スクリプトは task_id とクエリ用コマンドを出力します。失敗したタスクは課金されません。ただし、重複送信すると二重課金になるため、スクリプトは自動再試行しません。

なぜ1文だけで動画が生成されるのか

よくある質問です。私はコマンドを入力していないのに、どうして「動画を作成する」でクリップが生成されたのでしょうか? 仕組みはこうです。起動時に、エージェントは各スキルのdescriptionをそのSKILL.md内で読み取ります(そのスキルが何をするか、いつ使うかを示す短いメタデータです)。リクエストがその説明に一致すると(たとえば「動画を生成する/作成する」、「この画像をアニメーション化する」、「このクリップを編集する」)、エージェントは自分でそのスキルを呼び出すと判断し、完全なSKILL.mdを読み、スクリプトを実行します。コマンドを覚えておく必要はありません。 エージェントの推測に頼りたくない場合は、下の明示的な呼び出しを使うと、完全な制御が可能です。

使い方

自然言語(暗黙のトリガー)

インストール後は、エージェントに話しかけるだけです。

明示的な呼び出し(より細かく制御)

  • スラッシュコマンド対応のエージェント(例: Claude Code):
  • 任意のエージェント / スクリプトを直接実行するよう指示(最も汎用的):

生成された動画の保存先

  • -oファイル名だけ(たとえば -o cat.mp4)を指定すると、動画は プロジェクトルート内のwan-output/フォルダ(自動作成)に保存されます。シリーズはどちらもこのフォルダを共有します。
  • 「project root」とは、スクリプトから親方向へたどったときに見つかる .git または .claude を含む最初のディレクトリです。エージェントがどこで実行されても、動画はプロジェクト内に残り、一時フォルダに紛れて失われることはありません。
  • 完了時には、スクリプトが フルの絶対パスを1行で出力し、あわせてファイルサイズと経過時間も表示します。たとえば Video saved to /Users/you/project/wan-output/tokyo.mp4 (4.9 MB, 153s elapsed, model wan2.7-t2v) のようになります。
  • 計測された出力には 音声トラック付き(ステレオ AAC)で含まれます。
  • 結果 URL の有効期限は 24 時間です。そのため、スクリプトは常に最初にダウンロードします。ローカルの mp4 が納品物です。URL を結果として保持しないでください。
  • ディレクトリを含むパス(たとえば -o videos/cat.mp4 または絶対パス)を指定すると、wan-output/ をスキップして、その場所に正確に保存されます。

関連ドキュメント