Communitygithub.com

GPT Image 2 API キー分離スキル

Codex 上で、専用 API キーを使って gpt-image-2 による画像生成・編集を安全に行うスキル。

GPT Image 2 API キー分離スキル とは?

このスキルは、Codex のワークフローにおいて、画像生成・編集専用の API キーを分離して利用できるようにするものです。Codex の現在の認証情報とは別のプロバイダーキー、アカウント、割り当て、もしくは OpenAI 互換のプロキシを使用したい場合に有効です。`scripts/generate_image.py` という依存関係のない Python 3 スクリプトを介して、`/v1/images/generations` による生成と `/v1/images/edits` による編集、マスク画像を用いた部分編集、複数参照画像を使ったスタイル変更やロゴ加工、商品モックアップなどをサポートします。スキルは `OPENAI_API_KEY` や Codex の認証ファイルを意図的に読み込まず、`~/.config/gpt-image-2-apikey/config.json` などの分離された設定ファイルのみを参照することで、認証情報の混在や漏洩を防ぎます。出力はローカルパスに保存され、Codex が後続の処理に利用できます。

対応✓Claude Code✓Codex CLI~Cursor
npx skills add junxxxxiao/gpt-image-2-apikey-skill

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

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

ドキュメント

GPT Image 2 API キー

概要

scripts/generate_image.py を実行し、個別に設定した gpt-image-2 プロバイダーを使って画像を生成または編集します。このスキルは、画像生成の課金・認証・隔離を、Codex の現在の OpenAI/Codex 資格情報とは別の専用画像 API キーで行いたい場合に使用します。

このスキルは OPENAI_API_KEY、Codex 認証ファイル、ChatGPT/Codex セッション資格情報を読み込みません。--config で指定されたプライベート設定ファイル、または後述のデフォルト設定ファイルのみを読み取ります。

解決する問題

このスキルは、Codex ワークフローの一般的な問題を解決します。現在の Codex セッションはすでに 1 つの API キーで認証されている一方で、画像生成には別のキー、別のアカウント、別の割り当て、または OpenAI 互換プロキシを使用する必要がある場合があります。

このスキルは以下の目的で使用します。

  • 画像生成の資格情報を Codex 自身の資格情報から分離する。
  • Codex から gpt-image-2 または互換の画像エンドポイントを、キーをプロンプト、コマンド、リポジトリファイルに露出させずに呼び出す。
  • /v1/images/generations 経由で画像を生成する。
  • マルチパートアップロードによる /v1/images/edits 経由で既存の画像を編集する。
  • 編集、スタイル変更、ロゴ加工、商品モックアップ、画像間変換のために 1 つ以上の参照画像を使用する。
  • オプションで領域限定編集のためのマスク画像を提供する。
  • 生成された出力を明示的なローカルパスに保存し、Codex が表示、検査、または後続のステップに渡せるようにする。

ユースケース

このスキルは以下のようなリクエストに使用します。

  • 「JunXxxxi というテキストを正確に含むロゴを生成してください。」
  • 「この参照画像を使用して、ワードマークをイタリック体にしてください。」
  • 「このロゴのテキストをシルバーからブラックへのメタリックグラデーションに変更してください。」
  • 「gpt-image-2 を使用して製品画像を作成しますが、私の個別の画像 API キーを使用してください。」
  • 「元の構図を維持したままこの画像を編集してください。」
  • 「カスタムベース URL で OpenAI 互換の画像プロバイダーを使用してください。」

リクエストされた変更が、クロップ、リサイズ、アルファ変換、完全に決定論的な色の再マッピングなど、正確なジオメトリを保持する必要がある単純なピクセルレベルの変換である場合は、このスキルよりも決定論的なローカル画像処理を優先してください。ユーザーがモデルベースの視覚的解釈、スタイル変更、生成を望む場合は、このスキルを優先してください。

内容

gpt-image-2-apikey/
├── SKILL.md
├── agents/
│   └── openai.yaml
└── scripts/
    └── generate_image.py
  • SKILL.md: Codex 向けのワークフローと人間が読める使用法のドキュメント。
  • agents/openai.yaml: オプションの Codex UI メタデータ。
  • scripts/generate_image.py: 生成または編集エンドポイントを呼び出す、依存関係のない Python 3 スクリプト。

このスクリプトは b64_json と URL 形式の両方の画像レスポンスをサポートしています。URL レスポンスは即座にダウンロードされ、要求された出力パスに書き込まれます。

プライベート設定

デフォルトの設定パス:

~/.config/gpt-image-2-apikey/config.json

設定には、現在の Codex API キーではなく、画像プロバイダーのキーを含める必要があります:

{
  "api_key": "put-image-provider-key-here",
  "base_url": "https://api.openai.com/v1",
  "model": "gpt-image-2"
}

ファイル作成後、プライベートパーミッションを設定します:

chmod 600 ~/.config/gpt-image-2-apikey/config.json

ユーザーが明示的に別のプライベート設定ファイルを希望する場合にのみ、--config /path/to/config.json を使用します。

設定フィールド

  • api_key: 必須。画像プロバイダーのキー。明示的に意図されている場合を除き、Codex の現在の API キーは使用しないでください。
  • base_url: オプション。デフォルトは https://api.openai.com/v1。OpenAI 互換プロバイダーの場合、これを API ルート(例: https://example.com/v1)に保ちます。
  • model: オプション。デフォルトは gpt-image-2。
  • extra_body: オプションのオブジェクト。プロバイダー固有のフィールドのために、値がリクエストボディにマージされます。

base_url の適切な例:

{
  "base_url": "https://api.openai.com/v1"
}
{
  "base_url": "https://www.packyapi.com/v1"
}

意図的に 1 つのエンドポイントに固定する場合を除き、base_url に /images/generations や /images/edits を含めないでください。スクリプトは通常、正しいエンドポイントを自動的に追加します。

使用方法

スキルディレクトリから実行します:

python3 scripts/generate_image.py \
  --prompt "A clean product photo of a matte black mechanical keyboard on a walnut desk" \
  --out /absolute/path/to/output.png \
  --size 1024x1024 \
  --quality high

--edit-image を省略した場合、スクリプトは以下を呼び出します:

POST <base_url>/images/generations

--edit-image を追加して 1 つ以上の参照画像を編集します:

python3 scripts/generate_image.py \
  --prompt "Turn this logo into italic silver-to-black gradient text while preserving the exact spelling" \
  --edit-image /absolute/path/to/input.png \
  --out /absolute/path/to/edited.png \
  --size 1024x1024 \
  --quality high

--edit-image が存在する場合、スクリプトは以下を呼び出します:

POST <base_url>/images/edits

マスク編集の場合は、--mask /absolute/path/to/mask.png を追加します:

python3 scripts/generate_image.py \
  --prompt "Only change the background to a clean studio gray, preserving the subject" \
  --edit-image /absolute/path/to/source.png \
  --mask /absolute/path/to/mask.png \
  --out /absolute/path/to/edited.png \
  --quality high

複数画像編集のために --edit-image を繰り返します:

python3 scripts/generate_image.py \
  --prompt "Combine the product from image 1 with the background mood from image 2" \
  --edit-image /absolute/path/to/product.png \
  --edit-image /absolute/path/to/background-reference.png \
  --out /absolute/path/to/combined.png

ユーザーがファイルを特定の場所に必要とする場合は、常に絶対パスの --out を指定してください。省略された場合、スクリプトはカレントワーキングディレクトリにタイムスタンプ付きの PNG を書き込みます。

コマンドリファレンス

--prompt       必須。画像プロンプトまたは編集指示。
--out          出力画像パス。追加出力には拡張子の前に -2、-3 などが付きます。
--config       プライベート設定パス。デフォルトは ~/.config/gpt-image-2-apikey/config.json。
--model        設定の model を上書きします。
--size         プロバイダーがサポートする画像サイズ。デフォルト: 1024x1024。
--quality      low、medium、high、または auto。デフォルト: auto。
--n            画像の数。デフォルト: 1。
--format       png、jpeg、または webp。デフォルト: png。
--edit-image   /v1/images/edits のための入力画像パス。繰り返し指定可能。
--mask         編集用のオプションの PNG マスクパス。
--timeout      HTTP タイムアウト(秒)。デフォルト: 600。
--dry-run      実際の API を呼び出さずに、編集されたエンドポイント、ボディ、ファイルリストを表示します。

実際の呼び出しの前に、設定、エンドポイントルーティング、または編集が意図した入力ファイルを使用するかどうかを確認するために --dry-run を使用します:

python3 scripts/generate_image.py \
  --prompt "dry run only" \
  --edit-image /absolute/path/to/input.png \
  --out /absolute/path/to/output.png \
  --dry-run

ドライラン出力は認証情報を Bearer ***redacted*** として編集します。

プロンプトガイダンス

生成の場合:

  • アセットタイプ、被写体、スタイル、レイアウト、必要なテキストを明示的に指定します。
  • 表示される正確なテキストは引用符で囲みます。
  • ロゴ、ポスター、UI グラフィックスに取り組む場合は、「余分なテキストなし、ウォーターマークなし」を含めます。
  • 最終的なロゴ、タイポグラフィが多い画像、製品写真、洗練された成果物には quality high を使用します。
  • 安価な探索やクイックドラフトには quality low を使用します。

編集の場合:

  • 画像全体を再解釈する必要がある場合を除き、画像全体ではなく、変更内容を記述します。
  • 保存する必要があるものを明示的に指定します: テキストのスペル、レイアウト、構図、顔のアイデンティティ、製品形状、色、背景。
  • テキストが多いグラフィックスの場合は、プロンプトで正確なスペルと大文字小文字を繰り返します。
  • プロバイダーがサポートする場合は、外科的編集にマスクを使用します。

編集プロンプトの例:

提供されたロゴ画像を編集してください。「JunXxxxi」という正確なテキストと同じワードマークレイアウトを保持してください。文字を右斜めのイタリック/スラント体にしてください。文字の塗りつぶしを、左上が明るいシルバー、右下が漆黒のメタリックグラデーションに変更してください。きれいな白い背景を維持してください。余分な単語、アイコン、ウォーターマーク、境界線、装飾要素を追加しないでください。

分離ルール

  • Codex の現在の API キーをこのスキルに渡したりコピーしたりしないでください。
  • OPENAI_API_KEY を読み取らないでください。スクリプトは意図的にこれを無視します。
  • api_key や設定内容を出力しないでください。スクリプトは --dry-run でのみ、編集された設定要約を報告します。
  • 設定がない場合は、ユーザーにプライベート設定ファイルを作成するよう伝えてください。明示的に依頼された場合を除き、実際の秘密情報を含むファイルをユーザーの代わりに作成しないでください。
  • プロバイダーが OpenAI 互換のエンドポイントを使用する場合は、プライベート設定に base_url を設定してください。スクリプトは生成時に /images/generations を、編集時に /images/edits を自動的に追加します。

設定に関する注意

  • config.json を Git 管理下に置かないでください。実際の API キーをコミットしないでください。
  • プライベート設定にはファイルモード 600 を使用してください。
  • プロバイダーが特に指定しない限り、base_url は API ルート (.../v1) に保ちます。
  • プロバイダーがカスタムリクエストフィールドを必要とする場合は、それらを extra_body に配置します。
  • プロバイダーが gpt-image-2 をサポートしていない場合は、model をプロバイダーの互換モデル名に設定します。
  • プロバイダーが URL レスポンスのみをサポートする場合、スクリプトは返された URL をダウンロードします。
  • プロバイダーが b64_json で base64 画像を返す場合、スクリプトはそれらを直接デコードします。
  • ネットワーク呼び出しは、設定されたプロバイダーアカウントに課金される場合があります。

プロバイダー固有のフィールドを含む例:

{
  "api_key": "put-image-provider-key-here",
  "base_url": "https://example.com/v1",
  "model": "gpt-image-2",
  "extra_body": {
    "moderation": "auto"
  }
}

障害処理

  • 設定がない、または api_key がない場合: 設定パスと必須フィールドを報告します。
  • HTTP エラー: ステータスコードとプロバイダーのエラーボディを表示しますが、キーは絶対に含めません。
  • サポートされていないプロバイダーレスポンス: トップレベルのレスポンスキーを報告し、ファイルを保存しません。
  • 複数の画像: 最初の画像は --out を使用し、追加の画像は拡張子の前に -2、-3 などを取得します。

制限事項

  • このスキルは API ラッパーであり、完全なグラフィックスエディターではありません。正確なクロップ、リサイズ、ベクターエクスポート、または保証されたピクセルパーフェクトなタイポグラフィ変更には、決定論的なローカルツールを使用してください。
  • モデルベースの画像編集は、正確なテキスト、カーニング、またはジオメトリを変更する可能性があります。ロゴやワードマークの場合は、納品前に結果を検査してください。
  • マルチパート編集の互換性は、OpenAI 互換プロバイダー間で異なる場合があります。編集が失敗し生成が機能する場合は、プロバイダーがマルチパート image アップロードによる /v1/images/edits をサポートしているかどうかを確認してください。
  • スクリプトは現在、複数画像互換性のためにマルチパートフィールド名 image[] で編集画像を送信します。プロバイダーが異なるフィールド名を必要とする場合は、そのプロバイダー用に scripts/generate_image.py を調整してください。
  • 真の透明背景動作は、プロバイダー/モデルのサポートに依存します。透明な PNG が必要な場合は、生成後にアルファチャンネルを確認してください。

公開に関する注意

このスキルを GitHub に公開する場合:

  • SKILL.md、agents/openai.yaml、scripts/generate_image.py を含めます。
  • ~/.config/gpt-image-2-apikey/config.json は含めないでください。
  • 意図的な例でない限り、生成された画像は含めないでください。
  • ローカル設定、出力、一時画像用の .gitignore エントリを追加してください(このスキルがより大きなリポジトリ内にある場合)。

関連スキル