codex CLI による画像生成
codex exec には「画像をこのパスに書き出す」オプションはありません。生成された画像は
$CODEX_HOME/generated_images/<session id>/ 以下に保存されます。scripts/codex_image.py は非対話型の一回のターンを実行し、そのセッションの画像のみを収集して指定された場所に書き出します。画像が返ってこなかった場合は何も書き出しません。
常にスクリプトを使用してください。 手動で codex exec "catを描いて" を実行すると、多くの場合、散文や ImageMagick の描画結果が返ってきて、出力を探すはめになります。
従量課金 API に決してフォールバックしないでください。 codex が失敗したり割り当て超過になった場合でも、OpenAI SDK や OPENAI_API_KEY を使用しないでください。その失敗を報告して停止してください。Google の従量課金 API については、ユーザーが明示的に要求した場合にのみ、google-image-gen を使用してください。
使用方法
スキルディレクトリから実行するか、スクリプトの絶対パスを指定してください。実行には約 30~60 秒かかります。
python3 scripts/codex_image.py -p "夕暮れの濡れた石壁に寄りかかる一台の赤い自転車、シネマティックな写真" -o bike.png
| 目的 | コマンド |
|---|---|
| アスペクト比(モデルへのヒント) | -p "..." -o out.png --aspect 9:16 |
| 参照画像 | -p "..." -o out.png -r ref.png [-r ref2.png] |
| 画像の編集 | --edit v1.png -p "空を紫色にして" -o v2.png |
| 複数バージョン | -p "..." -o opt.png -n 3(opt.png, opt-2.png, opt-3.png を保存) |
| 正確なピクセルサイズ | -p "..." -o cover.png --aspect 9:16 --fit 1080x1920 |
| 長いプロンプト | --prompt-file prompt.md -o out.png |
| プロンプトの確認、消費なし | --print-prompt を追加 |
- 出力ファイルの拡張子は実際のフォーマットに従います。
bike.jpgとして PNG バイトを要求した場合、bike.pngとして保存されます。スクリプトは書き込んだ各パスを表示します。 --aspectは結果の形状を決めるだけです。--fit WxHはその後のサイズを保証します。黒帯でパディングするか(--fit-mode pad、デフォルト)、中央でクロップします(--fit-mode crop)。常に PNG で保存します。--aspectをターゲットに合わせておけば、パディングやクロップは最小限で済みます。--fitには Pillow が必要で、codex 実行前にチェックされます。-nは一度の実行で N バージョンを要求します。モデルがそれより少ない数を返す可能性があり、スクリプトは取得できた画像のみを保存します。--editはその画像をターゲットとして添付し、プロンプトで指示された部分だけを変更するようモデルに指示します。
プロンプトの書き方
スクリプトは実際の画像ツール呼び出しを強制する文言を追加するため、--prompt には画像の内容だけを記述します。ラベル付きの簡潔な指定が効果的です。
被写体: 一台の赤い自転車、端の塗装が剥がれて金属が露出している
シーン: 濡れた石造りの港の壁に寄りかかり、向こうに街灯
スタイル: シネマティックな写真、浅い被写界深度
照明: 夕暮れ、低い暖かい太陽、濡れた石に反射
テキスト(そのまま): "NO SPARE"
避けるもの: 人物、透かし、余計な自転車
- 必ず表示したいテキストは引用符で囲み、短くしてください。長い文字列は誤って綴られることがあります。
- 表示してはいけないものを明示してください。透過切り抜きの場合は、透明な背景を要求し、
.pngで保存してください。 --editでは、変更内容(「街灯を削除」)と、維持すべきもの(「自転車、フレーミング、照明はそのまま」)を両方指定してください。1 回のパスで 1 つの変更だけ行ってください。- 編集はピクセル単位の修正ではなく再生成です。フレーミングやディテールがずれ、パスを重ねるごとにその影響が蓄積されます。チェーンは短く保ち、変更してはいけない部分は合成で戻すことを検討してください。
生成後
画像を確認できる手段を使って、結果を引き渡す前に必ずチェックしてください。モデルはテキスト、数、要求した詳細を誤ることがあります。不正確な場合は、より明確なプロンプトで再実行するか、--edit で修正してください。
障害
スクリプトは明確なメッセージと共に非ゼロで終了し、何も書き込みません。
- codex CLI が見つからない / ログインしていない: codex をインストールして
codex loginを実行してください。CODEX_BINで別のバイナリを指定できます。 - 割り当て超過: codex が報告するリセットを待つか、別のアカウントを使用してください。ループで再試行しないでください。
- 画像が生成されなかった: モデルがテキストで応答しました。応答内容が表示されるので、より単純な画像要求で再実行してください。
- タイムアウト: 実行が単に遅かった場合にのみ、
--timeout(デフォルト 900 秒)を増やしてください。 --fit使用時に Pillow がない:pip install Pillowを実行するか、--fitを外してください。