要点:ChatGPT Images 2.6でブランドマスコットをアニメーション化するには、固定の3×2グリッドで6コマのスプライトシートの生成を指示し、シートを各フレームに分割して位置を合わせ、ループGIFとして書き出します。本記事では、2026年11月5日にFreeプランのアカウントで検証を行いました。位置合わせを行うことで、足元のズレ(ドリフト)を11.5ピクセルからわずか1ピクセルに抑えることができました。
ブランドマスコットのアニメーション化に1つのプロンプトだけでは不十分な理由
ブランドマスコットは、すべてのフレームで一貫して「そのキャラクターらしさ」を保っていなければなりません。この点が通常の画像生成とは大きく異なります。単発のリアクション用GIFであれば多少のブレは気になりませんが、ブランドマスコットではそうはいきません。
OpenAIのImages 2.6発表記事でもこのユースケースが明確に言及されており、マーケターは「キャンペーン用にブランドマスコットをアニメーション化できる」と説明されています。この機能は、すべてのサブスクリプションプランのChatGPTおよびCodex、そしてAPIから利用可能です。
ChatGPTでは、1行の指示だけで生成する方法もあります。同じFreeアカウントで以前行ったテストでは、ループGIFを求めるプロンプトを入力したところ、完成した8コマのファイルが出力されました。手軽なリアクションGIFならこれで十分ですが、ブランドマスコットの場合はスプライトシート方式の方がはるかに細かくコントロールできます。フレーム数を自分で決められ、すべてのポーズを視覚的に確認でき、タイミングの調整も思い通りに行えるからです。
スプライトシートとは、アニメーションの全フレームをグリッド状に並べた1枚の画像です。コンタクトシート(密着焼き)のように全体を確認した上で、各フレームを順番に再生します。
複数のメンバーでブランドアセットを管理している場合、要件定義(ブリーフ)や承認プロセスの共有場所も必要になります。Sharklyならそのプロセスを円滑に進めることができます。これについては後ほど詳しく説明します。
プロンプトを入力する前に用意するもの
入力情報の準備に5分ほど時間をかけましょう。仕上がりがマスコットらしくなるかどうかは、この準備で決まります。
- 参考画像(リファレンス画像):無地の背景にマスコットの全身がはっきりと写っている画像1枚。
- 文章によるキャラクター設定:体の色、顔、プロポーション、線の太さ、身につけているアクセサリーなど。
- 単一のアクション:手を振る、うなずく、まばたきをするなど。6コマでは複雑なシーンを表現しきれません。
- ファイルの用途:チャット用スタンプとランディングページのメインビジュアルでは、必要なサイズや再生速度が異なります。
自身が権利を所有している、または利用許諾を得ているキャラクターのみをアニメーション化してください。
ステップ1:マスコットの参考画像を添付する
ChatGPT Imagesを開き、Add files and moreをクリックして参考画像を添付します。OpenAIによると、Images 2.6は「編集時にもキャラクター、製品、ブランドの詳細の一貫性を維持する」とされているため、デザインのブレを防ぐにはこの入力が鍵となります。
なお、今回の記事の検証では参考画像のアップロードを行っていないため、このステップは私たちの検証結果ではなくOpenAIによる説明としてお考えください。参考画像なしで実行したことで、以下の2つのことがわかりました。
- プロンプトで「添付画像」に言及しているのに何も添付されていない場合、ChatGPTは生成を一時停止してファイルを要求しました。勝手にキャラクターを捏造することはありませんでした。
- その後テキストのみでマスコットの特徴を説明したところ、6コマすべてで一貫したキャラクターが生成されましたが、元のデザインよりも丸みを帯びたサメになってしまいました。
テキストによる説明だけでも生成画像内での一貫性は保てますが、元のデザインを忠実に再現することはできません。実際のブランドアセットを制作する際は、必ず参考画像を使用してください。
ステップ2:マスコット向けのスプライトシート用プロンプトを使用する
今回のプロンプトは、3列×2行のグリッドで「正確に6枚の連続したフレーム(exactly 6 sequential frames)」を指定するOpenAI公式のサンプルパターンに従っています。キャラクターの説明部分を、ご自身のマスコットに合わせて変更してください。
Create a single animation sprite sheet for a seamless looping GIF.
Character: a friendly cartoon shark mascot standing upright on two short
legs, charcoal-navy body, pale cream belly and lower jaw, large round eyes,
open smile with small white teeth, three gill lines, thick dark outline,
a small bright green ID badge on a dark lanyard, flat vector style,
no gradients.
The sequence: mascot stands facing forward, raises one fin, waves twice,
lowers the fin back to the starting pose.
Exactly 6 sequential frames in a precise 3-column by 2-row grid, read
left-to-right then top-to-bottom. Every panel has identical dimensions.
Fixed camera, same character, feet in the same spot in every frame,
plain white background. Sixth frame transitions smoothly back to the first.
No captions, no words, no numbers, no logos, no panel labels, no borders,
no gutters.
各行にはそれぞれ明確な役割があります。
- 「Same character」と固定カメラの指定:デザインのブレや画角のズレを防ぎます。
- 「Feet in the same spot」:後から位置合わせを確認するための基準点(アンカー)になります。
- 6コマ目に関する指定:最初のコマへとスムーズにつながるループアニメーションにします。
- 「No」から始まる禁止事項のリスト:コマ内に不要なテキストや枠線が入るのを防ぎます。
こちらがChatGPTから出力された未編集のスプライトシート(1536×1024ピクセルのPNG)です。

ここで率直な注意点が2つあります。まず、このプロンプトで出力されるのは静止画のPNGファイルでありGIFではないため、結合・アニメーション化の作業は自身で行う必要があります。また、プロンプトでは「2回手を振る」と指定したものの、実際には1回程度しか振っていませんでした。ChatGPT自身もこの点に触れ、動作が「6つのフレームすべてで完全に明確に分かれているわけではない(is not perfectly distinct across all six frames)」と注記していました。6コマでは1回手を振るのが限界なので、指示を1回にするか、フレーム数を増やす必要があります。
ステップ3:シートを切り出し、ズレを補正する
「各コマの寸法を同一にする(identical dimensions)」という指示は、厳密には反映されませんでした。各パネル内でキャラクターが中央に配置されているように見えても、シートを均等な512ピクセルの正方形に切り出すと、左右に横滑りしてしまいました。列間で足の位置が11.5ピクセルも動いており、ループ再生すると不自然に跳ねるようなブレ(ジッター)になってしまいます。
解決策は、列ごとに固有のオフセット(切り出し開始位置)を指定してクロップすることです。各フレームで足の外側の端など、固定できる基準点を1箇所測定します。そして、その差分の分だけ切り出し位置をずらします。今回のケースでは、0、517、1035ピクセルのオフセットが必要でした。以下のコマンドではFFmpegを使用しており、記載の通りに実行しました。
i=0
for x in 0 517 1035 0 517 1035; do
y=$(( (i / 3) * 512 ))
ffmpeg -y -i sheet.png -vf "crop=500:512:$x:$y" frame$i.png
i=$((i + 1))
done
ffmpeg -y -framerate 1000/150 -i frame%d.png \
-vf "scale=384:-2:flags=lanczos,split[a][b];[a]palettegen=max_colors=64[p];[b][p]paletteuse=dither=none" \
-loop 0 mascot.gif
必要なオフセット値はシートごとに異なるため、ご自身の画像に合わせて測定してください。2つ目のコマンドでは、1フレームあたり150ミリ秒に設定し、フラットなベクターアートに適した64色のカラーパレットを指定しています。
完成したループアニメーションがこちらです。

ステップ4:ループが滑らかにつながっているか確認する
美しいループアニメーションは、最後のフレームから最初のフレームに戻るときに目に見える「飛び」がありません。目視だけで判断するのではなく、数値でも確認しましょう。位置合わせの前と後でフレームを比較した結果がこちらです。
| 測定項目 | 均等グリッド切り出し | 位置合わせ切り出し |
|---|---|---|
| フレーム間の足のズレ | 11.5 px | 1 px |
| ループの継ぎ目で変化したピクセル割合 | 13.8% | 3.6% |
| ファイルサイズ | 332 KB | 284 KB |
完成したGIFは384×394ピクセル、6コマ、1ループあたり0.9秒です。位置合わせによってファイルサイズも小さくなりました。体の位置が静止していると、GIF圧縮時に再描画する領域が減るためです。
共有する前に、以下のチェックリストを確認してください。
- 最初と最後のフレームを比較する:差分はごくわずかである必要があります。
- すべてのフレームでマスコットの色、バッジ、線の太さを確認する。
- フレームの端に不要なテキストや枠線が入り込んでいないか確認する。
- 原寸大で10回ほど連続再生して確認する:繰り返し見ることでブレに気づきやすくなります。
崩れているフレームがある場合は、シートを再生成するか、画像ビューアのDescribe edits入力欄を使用してください。なお、今回のシートでは編集機能のテストは行っていません。
API経由でマスコットをアニメーション化する方法
APIを使用する場合、アプローチが少し異なります。OpenAIの画像生成ガイドによると、output_formatにgifを指定すると完成したアニメーションが出力されますが、これはgenerationエンドポイントでのみ有効です。参考画像を送信するeditエンドポイントは、GIF出力に対応していません。
そのため、マスコットを扱う場合は2つのAPIルートが存在します。
- ネイティブGIF方式:プロンプトのみを使用し、
frame_count(2〜64)とframe_duration_ms(20〜2000)を指定します。デザインの再現性はテキストによる説明に依存します。 - 参考画像+スプライトシート方式:editエンドポイントに参考画像を送信してスプライトシートを取得し、ステップ3の手順でGIFに結合します。
curl https://api.openai.com/v1/images/edits \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-F "model=gpt-image-2.6-sunburst" \
-F "image[][email protected]" \
-F "size=1536x1024" \
-F "quality=high" \
-F "prompt=<your sprite sheet prompt>"
上記のcurlリクエストは公式ドキュメントに基づいて記載したものであり、実際の実行テストは行っていません。OpenAIによると、Sunburstモデルはmediumまたはhigh品質において「編集全体を通じてさらに高い画像の一貫性」を発揮するとされています。料金ページによると、2.6の画像トークン料金は入力が100万トークンあたり8ドル、出力が100万トークンあたり30ドルとなっています。
チームワークフローとしてマスコットアニメーションを運用する
ここまでの作業は1人でも完結できます。しかしマーケティングチームで運用する場合、どれが最新の参考画像か、誰がこのループアニメーションを依頼し、誰が承認したのかを把握する必要があります。そうしなければ、完成したGIFがチャットのスレッドの中に埋もれてしまいます。
人とAIエージェントのためのワークシステムSharklyでは、このプロセスを次のように管理できます。
- タスクでブリーフを一元管理:マスコットの参考画像、プロンプト、ブランドルールを1つのタスクに添付します。
- エージェントが作業を実行:タスクをエージェントに割り当てます。エージェントはRuntimeを介して接続されたComputer上で実行されます。セットアップ手順については、AIエージェントに最初のタスクを割り当てる方法のガイドをご覧ください。
- 人間がレビューして承認:エージェントはタスクを人間のレビュー待ち状態にすることができ、レビュー担当者の受信トレイ(Inbox)に表示されます。この連携パターンについては、人間とエージェントのハンドオフに関する記事で解説しています。
Images 2.6はCodexでも利用可能であり、CodexはSharklyが実行可能なRuntimeの1つです。Codex経由でのマスコット出力はまだテストしていないため、まずはご自身の環境でお試しください。
Sharklyは無料で始めることができます。Freeプランは最大5人の組織まで対応しており、エージェントはシート数を消費しません。モデルの利用料金は、連携したプランまたはAPIキーに準拠します。
まとめ
マスコットのループアニメーションを成功させるポイントは、次の3つの原則に集約されます。参考画像でデザインのブレを防ぐこと、6コマで表現できる単一の動きに絞ること、そして書き出し前にフレームの位置を合わせることです。最後のステップにより、足元のズレを11.5ピクセルからわずか1ピクセルに抑えることができました。
チームでの実践を始めてみませんか?まずはSharklyの無料ワークスペースを作成し、次のマスコット要件をタスクに登録して、成果物の承認プロセスを組み込んでみましょう。初期設定についてはSharkly公式ドキュメントをご覧ください。
よくある質問(FAQ)
ChatGPTで既存のマスコットをアニメーション化できますか?
はい、OpenAIも公式にこのユースケースを挙げており、既存のマスコットを参考画像として添付して利用します。今回の検証ではテキストによる説明のみで行いましたが、キャラクターの一貫性は保たれたものの、元のデザインと完全に一致させることはできませんでした。
マスコットのGIFは何コマ(フレーム)にするべきですか?
今回の検証では、6コマで手を1回振る動作を表現できました。より長い動作をさせたい場合はフレーム数を増やしてください。APIでは2〜64フレームまで指定可能です。
スプライトシートのプロンプトを入力するとGIFが出力されますか?
いいえ、今回のプロンプトではPNG形式のスプライトシートが出力されたため、GIFへの結合は自分たちで行いました。なお、以前のテストでは、単純なループGIFの生成プロンプトを指定した場合に完成したGIFが出力されました。
生成したGIFがガタついてブレるのはなぜですか?
各パネルの配置が完全には均等になっていないことが原因と考えられます。今回の検証でも列間で11.5ピクセルのズレが生じていました。列ごとに固有のオフセットを指定してクロップしてください。
APIを使って参考画像から直接GIFを作成できますか?
直接作成することはできません。GIF出力はgenerationエンドポイントでのみ機能し、参考画像を扱うeditエンドポイントではGIFを出力できないためです。
マスコットGIFがAI生成されたものだと分かってしまいますか?
OpenAIは生成画像にC2PAメタデータとSynthID電子透かしを付与していると公表しているため、完全に手作業で作られたファイルとして偽装することはできません。



