本文へ移動
記事一覧

MCPによるアニメーション生成

MCPで透過キャラクターアニメーションを作る:画像のアップロードから保存まで

AnimGen MCPでモデルを確認し、キャラクターPNGの実データをアップロードし、見積もりを承認して生成します。スプライトシートとJSONを保存・検査するまでの実測記録です。

AnimGen更新日 11 分で読める
透過PNGから16フレームの透過スプライトシートを得たAnimGen MCPの実際の工程
目次

AIアシスタントが「ジョブをキューに入れた」と返したり、一時的なダウンロードURLを示したりしても、アニメーションの納品は完了していません。実際に使えるMCPの工程には、画像の実バイトの転送、生成前の費用承認、終端状態までの待機、必要な全ファイルの保存、ダウンロード後の画素とメタデータの確認が必要です。

この記事は2026年9月11日にCodexがAnimGenの本番MCPで実施した検証です。透過キャラクターPNGから元動画、Sprite Sheet、JSONを得ました。その後の目視確認で最初のシートに縦横比の誤りが見つかったため、公開サンプルは同じダウンロード済みMP4から再書き出しした修正版にしています。生成モデルを再度呼び出さず、追加の点数も使っていません。実測パッケージ全体をダウンロードして最終ファイルを確認できます。

今回の実測結果

項目 実際の結果
MCPクライアント Codexデスクトップ、OAuthでAnimGen本番リモートサービスへ接続
入力 1073 × 1466 RGBA PNG、875,625バイト
モデル まず list_models を呼び、Seedance 2.0 Fastを選択
動画要求 4秒、480p、adaptive比率、自動Alpha Keyフロー
書き出し要求 256 × 256の透過16フレーム、Sprite Sheet PNG+JSON
見積もり 36 AnimGen点数:動画生成36、この書き出し0
最終請求 36を消費、保留0、返金0
ジョブ 2分23秒後に succeeded、自動の有料再試行なし
本番ジョブの成果物 MP4元動画、1024 × 1024 RGBAシート、16フレームのJSON
目視確認後の公開サンプル 同じMP4とJSONを残し、MP4から縦横比を保って1024 × 1024シートを再書き出し

36点数はこの要求に対する当時の実際の見積もりで、恒久的な料金ではありません。モデルと費用は現在のアカウントから取得し、新しい生成ごとに問い合わせてください。

実際にAlphaを持つ画像から始める

入力は公開のピクセルアートの女剣士PNGです。RGBAで、Alphaは0~255、四隅は完全透明、画面のおよそ27%の画素にキャラクターが見えます。

MCP検証で実際にアップロードした透過女剣士PNG

リモートMCPサービスは自分のPCにある ./character.png を読めません。クライアントは prepare_image_upload を呼び、返されたHTTPメソッドとHeadersに従って正しいファイルバイトを送信し、最後に complete_image_upload を呼びます。完了後の file_id だけを生成要求に使えます。

今回、サーバー側の875,625バイトとSHA-256はローカルの元画像と一致しました。一時アップロードURLとアカウントに属するファイルIDは、記事にも配布物にも含めていません。

エージェントに境界を明示したタスクを渡す

動作の指示だけでなく、課金と納品の条件もプロンプトに書くと実用的です。

text
AnimGen MCPを使い、./character.pngから2Dゲーム用の透過した足踏み歩行アニメーションを作ってください。

まずlist_modelsでSeedance 2.0 Fastが最初のフレーム入力、4秒、480pに現在対応するか確認。
PNGの実バイトをアップロードし、ローカルパスをアップロード済みの画像と見なさないこと。

自動Alpha Keyで、256 × 256の16フレームの透過Sprite SheetとJSONを出力。

generate_animationの前に完全な要求と現在の点数の見積もりを示し、私の明示的な承認を待つこと。
承認額を超えないこと。1つの冪等キーを保存し、同じジョブだけを終端状態までポーリングすること。
全成果物をダウンロードして検査し、一時的な署名付きURLを公開しないこと。

これは、パスだけを挙げてファイルを送らない、OAuthログインを支出の承認と取り違える、署名付きURLを得てもファイルを保存しない、という3種類の「見かけだけの完了」を防ぎます。

接続後、まず読み取り専用で確認する

AnimGenの本番MCPエンドポイントは https://api.animgen.com/mcp で、Streamable HTTPとOAuthを使います。ここにAnimGen API Keyを入力してはいけません。Codex CLIでは次のように接続できます。

bash
codex mcp add animgen --url https://api.animgen.com/mcp
codex mcp login animgen

Codexの公式MCPドキュメントはリモートHTTPとOAuthログインを説明しています。AnimGenのクライアント接続ガイドには現在のエンドポイントと他の対応クライアントもあります。

OAuthの後は引数なしで list_models を呼びます。構造化されたモデル一覧が返れば、読み取り専用接続を確認でき、生成点数も消費しません。今回のリアルタイムの結果ではSeedance 2.0 Fastが最初のフレーム、最短4秒、480p、adaptive 比率に対応していました。

意図せず変わらない要求を組み立てる

アップロード後の file_id はアカウント固有なので伏せます。その他は成功したジョブと同じです。

json
{
  "input": {
    "first_frame": {
      "type": "file",
      "file_id": "YOUR_COMPLETED_UPLOAD_FILE_ID"
    }
  },
  "prompt": "Static camera. The pixel-art swordswoman faces right and walks in place. Alternate the legs clearly, swing the arms naturally, and let the hair and scarf move slightly. Keep the original character design, pixel-art style, full-body framing, scale, and screen position. Do not move the camera or let the character leave the frame.",
  "video": {
    "model": "volcengine_seedance:doubao-seedance-2-0-fast-260128",
    "duration_seconds": 4,
    "resolution": "480p",
    "ratio": "adaptive",
    "transparency": {
      "mode": "alpha_key",
      "key_selection": "auto"
    }
  },
  "selection": {"mode": "full"},
  "export": {
    "frame_count": 16,
    "output_width": 256,
    "output_height": 256,
    "output_formats": ["spritesheet", "spritesheet_json"],
    "transparent": {"enabled": true}
  }
}

透過の設定は両方必要です。video.transparency.mode は動画段階にAlpha Keyフローを要求し、export.transparent.enabled は書き出し段階にRGBA素材を要求します。片方が欠けると同じタスクではありません。

モデルIDは実測記録を正確に残すために記載しています。新しいジョブでは、現在の list_models に実際に返されたIDを使い、モデル一覧が変わらないとは仮定しないでください。

見積もりの後に有料生成を承認する

上の要求を quote_animation に渡すと、実際の見積もりは36点数でした。4秒の動画生成が36、今回の透過16フレーム書き出しは追加0です。

完全な要求と金額をユーザーへ示し、36点数を上限とする明示的な承認を得てから、クライアントは再度見積もり、値上がりがないか確認した上で generate_animation を呼びました。

json
{
  "idempotency_key": "ONE_PERSISTED_LOGICAL_OPERATION_KEY",
  "quote_id": "FRESH_QUOTE_ID",
  "max_credits": 36,
  "request": {"...": "上記と完全に同じ要求"}
}

この記事の 36 を別ジョブの予算にコピーしないでください。その時点でユーザーが実際に確認・承認した見積もりを使います。作成前に要求と冪等キーを保存し、応答が曖昧なら同じ論理ジョブを再開します。キーを変えて黙って別の有料ジョブを作りません。MCPの支出保護に詳しい境界があります。

終端状態まで待ち、実際のバイトを保存する

generate_animation が返すのは非同期ジョブで、完成ファイルではありません。同じジョブを問い合わせ続け、video_generation、animation_export を経て succeeded になりました。2つの書き出しファイルより先に中間MP4が現れています。

続いて各成果物に download_asset を使い、一時URLからファイルを保存しました。ダウンロード要求へOAuthやAPIの資格情報を転送していません。署名付きURLも記事やZIPに入れていません。

保存したファイル 実測
source-video.mp4 1,950,417バイト、H.264、560 × 752、24 FPS、97フレーム、4.041667秒
最初の spritesheet.png 1,005,811バイト、1024 × 1024 RGBA PNG。目視で縦横比の誤りを発見し、不採用
最終 spritesheet.png 809,336バイト、1024 × 1024 RGBA PNG。同じMP4から縦横比を保って透明な余白付きで再書き出し
spritesheet.json 6,790バイト、16フレーム、各256 × 256、各253 ms

元MP4の単色キー背景は生成の中間素材であり、最終の透過納品形式ではありません。

透過書き出し前の単色キー背景が付いた元動画の1フレーム

実際の透明度は最終的なPNGフレームにあります。

修正版シートから8つの代表フレームを取り出し、市松模様の上で確認

動く市松模様のプレビューでは、最終16フレームを連続して見られます。

シートとJSONをセットで受け入れ確認する

最終シートは4 × 4のグリッドです。JSONにはセルごとの矩形、元サイズ、再生時間があるため、ゲームやビルドツールが画像だけから切り分けを推測する必要はありません。

同じ本番ジョブのMP4から縦横比を保って再書き出した1024角の透過シート

  • 元の3ダウンロードファイルのバイト数は、MCPアセット情報と一致しました。
  • 修正後の最終シートは809,336バイトで、元動画の人物の比率を保っています。
  • PNGはRGBAで、全フレームのAlphaに0と255の両方があります。
  • 16枚のフレーム画像は互いに異なります。
  • 各フレームの四隅をサンプリングするとAlphaは0です。
  • JSONの16矩形は1024 × 1024のシート内の256 × 256セルと正確に対応します。
  • JSONの再生総時間は4.048秒で、元動画との差は0.01秒未満です。
  • 承認済み36点数が1回だけ課金され、保留も有料再試行もありません。

これらは転送、パッキング、明らかな透明度の問題を見つけます。最終的な動作の使いやすさは、対象シーンに置いて見る必要があります。

目視確認で見つけた縦横比の誤りと修正

最初のシートはファイル、Alpha、フレーム数、JSON配置のチェックを通りましたが、人物が横に太く縦に短く見えました。元動画は560 × 752なのに、書き出し経路が各フレームを直接256 × 256へ押し込んだため、横方向が約34%拡大されていました。この「技術的には合格でも見た目が誤り」のシートを完成品として公開しませんでした。

最終サンプルでは透過書き出し経路を修正し、同じダウンロード済みMP4だけから決定的なフレーム抽出・パッキングをやり直しました。各フレームを縦横比を保って191 × 256にし、256 × 256の透明キャンバスの中央へ置き、左に32画素、右に33画素の余白を足しました。修正後の縦横比誤差は0.2%未満で、人物の右側にも少なくとも33画素の安全な空間があります。

修正版4 × 4シートも異なるRGBAフレームが16枚、サンプルした四隅は透明、JSONのセル配置と4.048秒の総時間は不変です。生成モデルは再呼び出ししていないため、費用は承認済みの36点数だけです。

AnimGenの入力キャンバスは生成時の動きの余白に役立ちますが、構図の制御であって、書き出し段階の正しい縦横比処理の代わりにはなりません。

サンプルを調べるか、公開APIを使う

MCP実測パッケージには公開入力画像、本番ジョブが返した元MP4とJSON、修正した最終シート、動くプレビュー、フレーム検査画像、README、機密IDを除いた要求テンプレートが入っています。OAuthトークン、署名付きURL、アカウントのファイルID、アセットID、見積もりID、ジョブID、冪等キーは含めていません。

製品の構成にAIアシスタントが不要なら、画像からアセットまでの公開APIクイックスタートから同様のフローを組めます。MCPはOAuthのツールと承認済み quote_id または max_credits による支出保護を使います。APIはAPI Keyとそのドキュメントの事前確認フローを使うため、認証と費用管理のモデルを混同しないでください。

エージェントの工程に組み込むならMCPの標準生成フローも参照できます。まず画面で自分のキャラクターを作って確認したい場合は、AnimGen Studioを開いてください。

画像の詳細