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エントリを追加してください(このスキルがより大きなリポジトリ内にある場合)。