Community画像github.com

weber87na/openai-image

OpenAI 公式 Images API を使用して静止画像とネイティブアニメーションGIFを生成します。ユーザーが描画、画像生成、アニメーション、GIFなどを要求した際に、Codex/GitHub CopilotからOpenAIの画像生成モデルを呼び出すために使用します。依存関係のないPython CLIをuvで実行し、GIFはモデルが直接出力します。

openai-image とは?

このスキルは、OpenAI 公式の Images API を利用して静止画像 (PNG, JPEG, WebP) と、モデルが直接生成するネイティブアニメーションGIFを作成するためのエージェントスキルです。主に Codex、GitHub Copilot CLI、および Cursor などの AI エージェント環境で動作し、ユーザーからの「絵を描いて」「画像生成」「アニメーションGIF」といった指示に応答します。 スキルは、サードパーティ依存関係のない Python CLI スクリプト (`openai_image.py`) を `uv` パッケージランナー経由で実行します。これにより、環境のセットアップが最小限で済み、pip や仮想環境の管理が不要です。GIF 生成は、フレーム数 (`--frames`) とフレーム間隔 (`--frame-duration-ms`) を指定して一度の API 呼び出しで行われ、従来のように静止画フレームを合成するのではなく、モデルがアニメーションを直接出力する点が特徴です。デフォルトのモデルは `gpt-image-2.6-sunburst` で、より高速な `gpt-image-2.6-flare` も選択可能ですが、GIF 機能を使用するには追加のアクセス権限が必要な場合があります。 このスキルは、画像の編集やローカルでの動画合成などは行わず、テキストからの画像生成に特化しています。使用前に必ず `OPENAI_API_KEY` 環境変数が設定されていることを確認し、API の使用量が発生することをユーザーに明示した上で、一度 dry-run でパラメータを検証してから本番の生成リクエストを送信する安全なワークフローを備えています。エラー処理も堅牢で、認証エラー、レート制限、無効なパラメータなど、様々なケースに対応します。

対応~Claude Code✓Codex CLI~Cursor
npx skills add https://github.com/weber87na/openai-image-skill/tree/HEAD/.agents/skills/openai-image

Installed? Explore more 画像 skills: steipete/songsee, affaan-m/frontend-design, mattpocock/improve-codebase-architecture · View all 6 →

お気に入りのAIに質問する

このエージェントスキルを事前に読み込んだ状態で新しいチャットを開きます。

ドキュメント

OpenAI 画像生成とネイティブ GIF

このスキルは、スタンドアロンでコピー可能な Agent Skills パッケージであり、プロジェクト単位および個人でのインストールをサポートします。このファイルが配置されているフォルダーを スキルルートディレクトリ として扱います。固定のインストールパスやカレントディレクトリを想定しないでください。すべての Python コマンドは uv を使用して実行し、裸の python、pip、または手動で作成した venv を使用しないでください。

機能と制限

  • 静止画像:PNG、JPEG、WebP。
  • ネイティブアニメーション GIF:output_format=gif、frame_count、frame_duration_ms を使用し、/v1/images/generations を1回呼び出します。
  • デフォルトモデル:gpt-image-2.6-sunburst;高速なイテレーションには gpt-image-2.6-flare を選択できます。gpt-image2.6 のような口語的な名前をモデル ID として直接使用しないでください。
  • GIF は現在、選択したモデルの GIF preview アクセス権限 が必要です。ChatGPT / Codex / Copilot のサブスクリプションだけでは利用できない場合があります。
  • GIF は 2~16 フレームに対応し、デフォルトは 9 フレームです。各フレームのデフォルト継続時間は 200 ms、最小 20 ms で、API は 10 ms 単位に丸められ、最大エンコード時間は 655350 ms です。デフォルトのアニメーションは約 1.8 秒ですが、実際の時間は出力データに依存します。
  • 同じ画像を複数フレームにコピーしたり、PNG ファイルの拡張子を GIF に変更したり、失敗した際にこっそりと複数回の画像生成や他の有料サービスに切り替えたりすることはありません。
  • この CLI はテキストからの画像生成に特化しており、画像編集、ストリーミング、動画生成、またはローカルでのアニメーション合成は提供しません。Pillow、FFmpeg、OpenAI SDK への依存はありません。

ワークフロー

  1. 静止画像かアニメーションかを判断します。ユーザーが指定した被写体、構図、テキスト、スタイル、出力パスを保持します。
  2. アニメーションの場合は、「動き、固定カメラアングル、背景の一貫性、ループのつなぎ目」などの説明を補完します。ユーザーの同意なく要求を変更しないでください。フレーム数と速度が指定されていない場合はデフォルト値を使用します。API の制限を超える場合は、その旨を説明し、ユーザーにトレードオフを尋ねてください。
  3. OpenAI API のクレジットが消費されることをユーザーに通知します。ユーザーが画像生成を明示的に許可した場合にのみ API を呼び出します。スキルの参照、ヘルプの表示、dry-run の実行は、有料テストの許可とはみなされません。ソースコード、認証情報、その他の機密データを送信しないでください。
  4. uv --version を確認します。uv がインストールされていない場合は、ユーザーに uv のインストールを依頼し、システムツールを勝手にインストールしないでください。
  5. OPENAI_API_KEY が存在することを確認するだけで十分です。.env ファイルやキーの内容を絶対に出力せず、チャットに貼り付けたり、ソースコードやリポジトリに書き込んだりするよう要求しないでください。既存のプロセス環境変数がある場合はそれを直接使用します。dotenv が必要な場合は、ユーザーの作業プロジェクトまたは明示的に指定された .env ファイルの絶対パスを確認し、uv run --env-file <パス> で読み込みます。スキルのインストールディレクトリにある他のプロジェクトの認証情報を探さないでください。このツールは https://api.openai.com にのみ接続し、OPENAI_BASE_URL は読み込みません。
  6. スキルルートディレクトリから CLI の絶対パスを解決し、まず dry-run でパラメータを確認してから、実際のリクエストを1回実行します。出力パスはユーザーの作業プロジェクトに基づき、スキルのインストールディレクトリには書き込みません。初期設定時には、同梱の空の設定テンプレートと使用ガイドを使用し、既存の設定を上書きしないでください。
  7. 終了コードと結果の JSON を確認します。ツールは応答形式を検証し、GIF の場合はチャンクを解析して少なくとも2フレームあることを確認し、実際の寸法、フレーム数、合計時間を報告してからファイルに書き込みます。これはコンテナと形式のチェックであり、完全なピクセルデコードや視覚的な品質検証ではありません。画像プレビュー機能がある場合は、その時点で画像を確認します。
  8. 出力ファイルへのリンクを提供します。GIF の場合、プレビューを確認していないのに視覚効果が検証されたと主張しないでください。フレーム数が期待と異なる場合は警告を表示し、隠蔽しないでください。

実行方法

まず、読み込み場所に基づいて $skillDir をスキルルートディレクトリの絶対パスに設定し、ユーザーの作業プロジェクトから実行します。完全な設定、静止画像/GIF の例、およびパラメータについては、使用ガイドを参照してください。

$script = Join-Path $skillDir 'scripts\openai_image.py'
uv run --no-env-file --script "$script" --prompt 'オリジナル水彩風の台湾の山林と朝霧、文字なし' --output outputs\mountains.png --dry-run
  • --dry-run は API キーを必要とせず、API を呼び出さず、ファイルも書き込みません。プロンプトを表示しますが、機密コンテンツには使用しないでください。uv が初めて Python を見つけられない場合、実行環境をダウンロードする可能性があります。
  • 画像生成の許可を得た後にのみ --dry-run を削除してください。dotenv が必要な場合は、--no-env-file を --env-file <ユーザー指定の .env 絶対パス> に置き換えてください。
  • GIF には .gif 拡張子を使用し、--frames 9 --frame-duration-ms 200 を指定できます。n=1 はフレーム数ではなく、完全なアニメーションを表します。
  • response_format、stream、partial_images、output_compression など、GIF に適用されないパラメータは送信しないでください。
  • デフォルトではサイズを指定しません。カスタムサイズは 16 の倍数で、アスペクト比は 1:3 から 3:1 の間である必要があります。GIF にはモデル固有のサイズ制限があるため、静止画像のサイズがそのまま適用できるとは想定しないでください。
  • ユーザーが既存ファイルの置き換えに明示的に同意しない限り、--overwrite は提供しません。

エラー処理

  • キーがない場合:停止し、ユーザーに自分の環境で設定するよう依頼します。キーをチャットに貼り付けないでください。
  • HTTP 401 / 403 / 404:認証情報、完全なモデル ID、組織検証、GIF preview 権限を確認してください。
  • HTTP 400:サイズ、形式、フレームパラメータ、モデルのサポート状況を確認してください。他の形式への自動ダウングレードや代替合成を行わないでください。
  • HTTP 429、5xx、タイムアウト、または接続中断:リクエストが処理され課金された可能性があります。まず報告し、ユーザーの同意を得てから再送信してください。
  • アニメーションではない GIF、不正な形式、無効な Base64、または不完全な GIF:成功として報告せず、ターゲットファイルに書き込まないでください。
  • 出力パスが存在しない場合は、親フォルダーを自動的に作成します。既存のファイルはデフォルトでは上書きされません。ファイルシステムは、上書きせずにアトミックに保存するためのハードリンクをサポートしている必要があります。サポートされていない場合はエラーを報告し、黙って上書きすることはありません。

検証

オフラインテストはローカルの HTTP モックサーバーのみを使用し、実際のキーを読み取らず、OpenAI に接続せず、課金も発生しません。

$tests = Join-Path $skillDir 'tests\test_openai_image.py'
uv run --no-env-file --script "$tests"

テストは、モデル/GIF preview 権限を取得したことや、有料のエンドツーエンド検証が完了したことを意味するものではありません。実際の生成には有効なキーとユーザーの許可が必要です。

エージェントでの呼び出し方

  • Copilot:/openai-image と入力するか、「OpenAI で画像を描いて / アニメーションGIF を作って」と直接指示します。
  • Codex:$openai-image を使用するか、自然言語でこのスキルの使用を要求します。Codex インターフェース設定は共通コマンドに影響しません。
  • 見つからない場合は、現在のハーネスがインストール場所をサポートしているか確認し、チャットを再開するかスキルリストをリロードしてください。Copilot CLI と Codex は .agents/skills を共有できます。一部の Copilot ハーネスは .github/skills を使用します。完全なフォルダーを移動し、同時にスキャンされる複数の場所に同じ名前のスキルをコピーしないでください。

公式リファレンス

実装パラメータは 2026-11-09 時点の公式ドキュメントに基づいています。モデルへのアクセス、制限、価格は変更される可能性があります。

関連スキル