mcpField
A
aliyun-video-style-repaint

aliyun-video-style-repaint

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

aliyun-video-style-repaint について

Alibaba Cloud DashScope の非同期動画生成 API で、入力動画をプリセットのアートスタイルに変換するスキルです。8 種類のスタイルを選べ、フレームレート、解像度、超解像を設定できます。

主な機能

  1. 018 種類のプリセットスタイル
  2. 02出力フレームレートと解像度の設定
  3. 03表情最適化と超解像のオプション
  4. 04非同期ジョブの送信と結果のポーリング

活用シーン

  1. 01動画を漫画風やイラスト風に変換
  2. 02短い動画に中国水墨画風を適用
  3. 03フレームレートと出力解像度を調整

インストール

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

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

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

同梱ファイル

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

references/
api_reference.md
sources.md
scripts/
repaint_video.py

詳細

動画スタイルのリペイント

検証

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

合格基準:コマンドが終了コード 0 で終了し、output/aliyun-video-style-repaint/validate.txt が生成されること。

出力とエビデンス

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

前提条件

  • SDK をインストールします(venv の使用を推奨します)。
python3 -m venv .venv
. .venv/bin/activate
python -m pip install requests
  • 環境に DASHSCOPE_API_KEY を設定するか、~/.alibabacloud/credentials に dashscope_api_key を追加します。
  • この API は北京リージョンでのみ利用できます。北京リージョンの API Key を使用する必要があります。

重要なモデル名

  • video-style-transform -- 8 種類のプリセットされたアートスタイルに対応します

対応スタイル

スタイル ID名前(英語)名前(中国語)
0日本の漫画日式漫画
1アメリカンコミック美式漫画
2爽やかな漫画清新漫画
33D カートゥーン3D 卡通
4中国風カートゥーン国风卡通
5ペーパーアート纸艺风格
6シンプルなイラスト简易插画
7中国風水墨画国风水墨

API エンドポイント(非同期のみ)

POST https://dashscope.aliyuncs.com/api/v1/services/aigc/video-generation/video-synthesis

必須ヘッダー:

  • Authorization: Bearer $DASHSCOPE_API_KEY
  • Content-Type: application/json
  • X-DashScope-Async: enable

正規化インターフェース

リクエスト
  • video_url(string、必須)-- 入力動画の公開 HTTP/HTTPS URL
  • style(integer、任意)-- スタイル ID 0~7(デフォルト:0、日本の漫画)
  • video_fps(integer、任意)-- 出力フレームレート、範囲 [15, 25](デフォルト:15)
  • animate_emotion(boolean、任意)-- 顔の表情の最適化(デフォルト:true)
  • min_len(integer、任意)-- 出力の短辺のピクセル数。720 または 540(デフォルト:720)
  • use_SR(boolean、任意)-- 超解像度補正(デフォルト:false)
動画入力の制限
  • 形式:MP4、AVI、MKV、MOV、FLV、TS、MPG、MXF
  • 解像度:各辺 [256, 4096] ピクセル、アスペクト比は最大 1.8:1
  • 長さ:最大 30 秒
  • 最大サイズ:100MB
  • URL:非 ASCII 文字を含む場合は URL エンコードが必要です
レスポンス(タスク作成)
  • output.task_id(string)-- ポーリングに使用します。有効期間は 24 時間です
  • output.task_status(string)-- PENDING | RUNNING | SUSPENDED | SUCCEEDED | FAILED
  • request_id(string)
レスポンス(タスク結果)
  • output.output_video_url(string)-- 結果動画の URL
  • output.task_status(string)-- 最終ステータス
  • output.submit_time(string)-- タスクの送信時刻
  • output.scheduled_time(string)-- タスクの実行開始時刻
  • output.end_time(string)-- タスクの完了時刻
  • usage.duration(integer)-- 動画の長さ(秒)
  • usage.SR(integer)-- 使用した解像度

クイックスタート(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_style_repaint_task(video_url: str, style: int = 0) -> str:
    """Create a video style repaint task and return task_id."""
    payload = {
        "model": "video-style-transform",
        "input": {
            "video_url": video_url,
        },
        "parameters": {
            "style": style,
            "video_fps": 15,
        },
    }
    resp = requests.post(
        f"{BASE_URL}/services/aigc/video-generation/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", "SUSPENDED"):
            return data
        time.sleep(interval)

エラー処理

エラー考えられる原因対処方法
401/403DASHSCOPE_API_KEY が未設定、または無効環境変数または認証情報ファイルを確認します
400 InvalidParameter対応していない動画形式、不適切な寸法、無効なスタイルパラメーターを検証します
"does not support synchronous calls"X-DashScope-Async: enable ヘッダーが不足必須ヘッダーを追加します
429レート制限またはクォータバックオフして再試行します

出力先

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

避けるべきパターン

  • video-style-transform 以外のモデル名は使用しないでください。
  • この API を同期的に呼び出さないでください。非同期ヘッダーが必須です。
  • 範囲 0~7 以外のスタイル ID は使用しないでください。
  • 動画 URL は 24 時間後に有効期限が切れます。すぐにダウンロードして保存してください。
  • シンガポールのエンドポイントは使用しないでください。この API は北京リージョンでのみ利用できます。

ワークフロー

  1. ユーザーの意図を確認し、8 種類のプリセットから希望するアートスタイルを選択します。
  2. 有効な形式と寸法の動画 URL を用意します。
  3. パラメーター(スタイル、fps、解像度、超解像度)を設定します。
  4. 非同期タスクを作成し、結果をポーリングします。
  5. URL の有効期限が切れる前に、変換後の動画をダウンロードして保存します。

参考資料

  • HTTP API の詳細については、references/api_reference.md を参照してください。
  • ソースリンクについては、references/sources.md を参照してください。

コメント