2026.05.19 · 16分で読める

Codex CLI /imagegen 完全ガイド|gpt-image-2でヒーロー画像を自動生成【2026年5月版】

ヒーロー画像の手作業から解放されました。これまで筆者は記事公開のたびに ChatGPT で画像生成→ダウンロード→Downloads 確認→publish スクリプトに拾わせる、という4工程をこなしていました。2026年5月18日、Codex CLI v0.115 で追加された /imagegen Skillpublish-article.sh に組み込んだ結果、この工程が 1コマンドで完結するようになりました。基盤モデルは OpenAI が2026年4月にリリースした gpt-image-2。ネイティブ2K(最大4Kベータ)、1:1〜21:9の5アスペクト比、1枚あたり $0.006〜$0.41 の段階課金で、Codex 経由なら ChatGPT plan の usage 枠を消費する形で追加料金なしに使えます。本記事では、365日稼働中の自社 oishi-ai プロジェクトに組み込んだ実コードと、運用上の落とし穴を、2026年5月最新情報で完全公開します。

目次

なぜ /imagegen がヒーロー画像運用を変えるのか

記事公開フローの中で、ヒーロー画像(アイキャッチ画像)の作成は地味に重い工程です。記事の中身は AI が書けても、ヒーロー画像は人間が ChatGPT を開いて、プロンプトを貼って、生成し、ダウンロードして、フォルダに置く必要がある。1記事につき5〜10分のロスが発生し、深夜の公開作業ではこれが一番のボトルネックになっていました。

たとえるなら 料理の盛り付けのようなもので、メイン料理(記事本文)は仕込みが終わっているのに、最後の皿盛り(ヒーロー画像)だけが手作業に残る状態です。/imagegen Skill はこの「最後の皿盛り」をロボットアームに渡せるようにする仕組みです。記事の hero-prompt フィールドを Codex に丸投げすれば、約2〜3分後に 16:9 の PNG ファイルが生成され、後続の WebP・OGP JPG 変換も含めて publish スクリプトが自動で続きを進めます。

従来フロー vs Codex /imagegen 統合フロー 従来フロー(4工程・5-10分) ① ChatGPT を開く ② プロンプトを貼って生成 ③ 画像をダウンロード ④ Downloads から拾わせる 所要時間 5-10分/人手必須 Codex統合フロー(1コマンド) ① publish-article.sh 実行 ② hero-prompt 自動抽出 ③ codex /imagegen 自動起動 ④ WebP・OGP JPG 自動変換 所要 2-3分/人手ゼロ

本記事では筆者が2026年5月18日に実装し、5月19日から本番運用を開始したこの統合フローを、コードレベルで公開します。5月18日公開の Claude Code Hooks ガイドと同じ思想で、AI の外側に仕組み化された自動化レイヤーを置くアプローチです。

/imagegen Skill の位置づけ

/imagegen は Codex CLI v0.115(2026年3月リリース)で導入された画像生成専用 Skillです。Codex CLI は基本的にコーディング特化の CLI ツールですが、v0.115〜v0.117 で「Image Capabilities」が段階的に追加され、テキスト指示から PNG/JPEG を生成・編集できるようになりました。OpenAI 公式 Codex CLI Features ドキュメントに仕様が記載されています。

位置づけとしては、Codex の「コード生成セッション」の中に画像生成タスクを差し込める拡張です。たとえるなら キッチンのメインオーブンに「画像生成専用の小型グリル」が追加されたようなもので、調理工程(コーディング)の途中で必要な盛り付け用素材(画像)も同じシステムで作れる、という統合感が利点です。

従来の OpenAI 画像生成は openai.images.generate() API を直接 Python から叩くか、ChatGPT Web UI で対話的に生成するのが主流でしたが、Codex CLI 版は 「コーディング途中の自然な分岐としての画像生成」に最適化されています。フロントエンド開発で「このボタンのモックアップを生成」「このセクション用のヒーロー画像を生成」といった指示を、別ツールに切り替えずに完結できる点が大きな価値です。

gpt-image-2 仕様|2K対応・アスペクト比・課金

/imagegen の基盤モデルは gpt-image-2です。2026年4月にリリースされ、OpenAI が公開するモデルとして初めてネイティブ2K(2048px)解像度に対応しました。Codex Desktop で使われていた gpt-image-1.5(4/19公開記事で解説)と比べると、解像度上限が大きく上がっています。

gpt-image-2 解像度マトリクス(5アスペクト比 × 3階層) 階層 代表サイズ 画質設定 価格/枚 1K 1024×1024 / 1792×1024 low / medium / high $0.006-$0.211 2K 2048×2048 / 2048×1152 low / medium / high $0.30+ 4K 3840×2160(ベータ) high のみ推奨 $0.41/枚 対応アスペクト比: 1:1 / 4:3 / 16:9 / 9:16 / 21:9 制約:最大辺3840px・両辺16px倍数・長辺/短辺比 ≤ 3:1・総ピクセル数 655K-8.3M 数千の有効解像度をサポート — ブログ用ヒーロー画像なら 1792×1024 が定番

制約は4つあります。①最大辺が3840pxまで、②両辺が16pxの倍数、③長辺/短辺の比率が3:1以下、④総ピクセル数が655,360〜8,294,400の範囲内。この条件さえ満たせば、公式が「数千の有効解像度」と表現するほど柔軟に指定できます。本記事のヒーロー画像も 1792×1024(16:9)で生成しました。

課金体系は 3段階の画質設定で大きく変わります。1024×1024 で low $0.006 / medium $0.053 / high $0.211、2K で $0.30以上、4K high で $0.41/枚。ブログのヒーロー画像なら 1K medium または 1K high で十分という判断が現実的です。Codex CLI 経由なら デフォルトで ChatGPT plan の usage 枠を消費するため、追加料金ゼロで運用できます(usage 速度は3-5倍速く減ります)。

コマンド構文|対話・codex exec・Skill 経由

/imagegen3つの呼び出しルートがあります。実運用ではこの使い分けが重要です。

/imagegen 起動ルート 3パターン ① 対話モード codex を起動 $imagegen を発動 用途: 試作・微調整 参照画像添付 プロンプト練り 人手調整向き ② codex exec(推奨) 非対話モード workspace-write 用途: CI/CD 統合 バッチ生成 スクリプト連動 本記事のメイン手法 ③ Skill 経由 他Skillから呼出 パイプライン 用途: 複合タスク ワークフロー UI生成連鎖 上級者向け

本記事で深掘りするのは ②codex exec ルートです。これが publish スクリプトに組み込みやすく、最も再現性の高い使い方です。具体的なコマンドはこうなります。

codex exec --skip-git-repo-check --sandbox workspace-write \
  '/imagegen prompt="A premium 3D cinematic hero image..." output="/path/to/hero.png"'

--sandbox workspace-write でファイル書き込みを許可するのが必須です。これがないと Codex が画像を保存できません。--skip-git-repo-check は git リポジトリ外でも実行できるようにするオプションで、CI 環境や一時ディレクトリでの実行に必要です。プロンプトは英語で書くと安定し、「16:9 horizontal landscape」「output dimensions 1792×1024 pixels」といった具体的指示を入れると、Codex が必要に応じて sips コマンドで自動リサイズします。これは筆者が5月18日の検証で確認した実挙動です。

自社実装|publish-article.sh 組み込み実コード

ここから実コード公開です。oishi-ai プロジェクトの publish-article.sh に組み込んだヒーロー画像自動生成スクリプトを、コピー&ペーストで動く形で全公開します。

新規スクリプト scripts/generate-hero-image-codex.sh

記事 HTML の hero-prompt フィールドを正規表現で抽出し、Codex に渡して PNG を生成、後段で WebP と OGP JPG に変換します。

#!/bin/bash
# Codex /imagegen Skill 経由で記事ヒーロー画像を自動生成
set -euo pipefail

ARTICLE_HTML="${1:-}"
BASENAME=$(basename "$ARTICLE_HTML" .html)
SLUG=$(echo "$BASENAME" | sed -E 's/^article-[0-9]{8}-//')
DATESTR=$(echo "$BASENAME" | sed -E 's/^article-([0-9]{8})-.*/\1/')

OUT_DIR="assets/blog/${DATESTR}-${SLUG}"
OUT_PNG="${OUT_DIR}/hero.png"
mkdir -p "$OUT_DIR"

# 既存hero.png があればスキップ(手動配置を尊重)
[[ -f "$OUT_PNG" ]] && { echo "$OUT_PNG"; exit 0; }

# hero-prompt 抽出(HTMLコメントヘッダー内)
HERO_PROMPT=$(python3 -c "
import re
with open('$ARTICLE_HTML') as f: html = f.read()
m = re.search(r'hero-prompt:\s*(.+?)(?=\n  [a-z-]+:|-->)', html, re.DOTALL)
print(m.group(1).strip().replace('\n', ' '))
")

# Codex /imagegen 実行
codex exec --skip-git-repo-check --sandbox workspace-write \
  "/imagegen prompt=\"${HERO_PROMPT} 16:9 horizontal landscape, 1792x1024\" output=\"$(pwd)/$OUT_PNG\""

# WebP / OGP JPG 変換
python3 -c "
from PIL import Image
img = Image.open('$OUT_PNG')
img.save('${OUT_DIR}/hero.webp', 'WEBP', quality=88)
ogp = img.resize((1200, 630), Image.LANCZOS).convert('RGB')
ogp.save('${OUT_DIR}/hero-ogp.jpg', 'JPEG', quality=88, optimize=True)
"

echo "$OUT_PNG"

publish-article.sh への統合差分

既存の「Downloads から拾う」フォールバックの後に、Codex 自動生成を挟みます。既存 hero ファイル → Downloads 検索 → Codex 生成 → Nano Banana Proの3段フォールバック構造になります。

# Downloads にも無い場合、Codex /imagegen で自動生成(推奨)
if [[ -z "$WP_THUMBNAIL_PATH" ]]; then
  echo "🎨 hero画像が Downloads にも無い → Codex /imagegen で自動生成..."
  if bash "${REPO_ROOT}/scripts/generate-hero-image-codex.sh" "$ARTICLE_FILE"; then
    for ext in webp png jpg; do
      LOCAL_HERO="${HERO_DIR}/hero.${ext}"
      if [[ -f "$LOCAL_HERO" ]]; then
        WP_THUMBNAIL_PATH="/home/.../wp-content/themes/oishi-ai/${LOCAL_HERO}"
        LOCAL_HERO_FILE="$LOCAL_HERO"
        break
      fi
    done
  fi
fi

publish-article.sh の3段フォールバック構造 assets/blog/<slug>/hero.{webp,png,jpg} 既存チェック ↓ なければ ~/Downloads/ から直近1時間の画像を検索 ↓ なければ Codex /imagegen で自動生成(推奨ルート) ↓ Codex 失敗時 Nano Banana Pro API(最終フォールバック)

この設計の肝は 「既存ファイルを尊重する」ことです。Hooks ガイドで書いた「コード側ガードレール」と同じ哲学で、ユーザーが手動で配置した画像があれば自動生成は走らせない。手動の意思決定を最優先します。Codex 生成は「人間が何もしない時のデフォルト挙動」として機能します。

ヒーロー画像自動化の落とし穴と対策

実装してから本番運用までの間に、筆者が踏んだ落とし穴を整理します。これから組み込む読者の時間を節約するための実体験ベースの注意点です。

落とし穴1:プロンプト指定だけでは16:9にならない

「output dimensions 1792×1024」と書いても、gpt-image-2 は内部生成時に 1659×948 のような中途半端なサイズで出すケースがあります。幸い Codex 自身が「指定とズレてる」と気づき、sips -z 1024 1792 コマンドで自動リサイズしてくれます。このセルフ修正は仕様としてドキュメント化されていませんが、筆者の検証では再現性高く発生しています。心配なら publish 後のスクリプトで Pillow の resize を一段かますと確実です。

落とし穴2:トークン消費が長文プロンプトで急増

テストプロンプト「a single blue cube on white background」(30文字)で消費した token は 37,215。本番のヒーロー画像プロンプト(1518文字)では 89,327 と 2.4倍に膨れました。ChatGPT plan の usage 枠が厳しい場合は、プロンプトを冗長にしすぎないことが重要です。逆に OPENAI_API_KEY を設定すれば API 価格固定になるので、長文プロンプトで安心して品質を追求できます。

落とし穴3:Codex セッションの所要時間が読めない

1枚あたり約2〜3分かかります。publish スクリプト全体の所要に必ず加算してください。CI/CD で並列化したい場合は、Codex CLI を複数プロセス同時起動すると ChatGPT 側でレートリミットを食らうリスクがあるため、直列実行が安全です。1日に複数記事を出す場合は記事間で十分なインターバルを確保しましょう。

落とし穴4:sandbox 設定を忘れると書き込み失敗

--sandbox workspace-write を付け忘れると、Codex はファイル書き込み許可がなく、生成画像を output= 指定パスに保存できません。エラーメッセージは出ますが見落としやすいので、テストスクリプトを最初に書いて検証するのが定石です。実コマンドは本記事のセクション4を参照してください。

落とし穴5:プロンプトの長さと品質のトレードオフ

Codex CLI 経由の /imagegenプロンプト長が token 消費に直結します。詳細な指示を書けば書くほど画像品質は安定しますが、トークン消費が増えて ChatGPT plan の usage を圧迫します。筆者の経験則では「タイトル文字3層・構図3要素・カラーパレット・ライティング・NO HUMANS制約・解像度指定」の6カテゴリを 1200〜1500 文字でまとめると、品質と消費のバランスが取れます。これを超える長文は API キーに切り替えるか、複数の短いプロンプトに分割するのが現実的です。

落とし穴6:生成画像のキャッシュと再利用

Codex CLI は生成した画像を ~/.codex/generated_images/<session-id>/ 配下にキャッシュします。同じプロンプトで再生成しても結果は毎回変わりますが、過去の生成物は session ID 単位で残ります。気に入った画像を残しておきたい場合は、publish スクリプトでファイル名にタイムスタンプを付与してアーカイブすると安全です。キャッシュサイズが GB 単位に肥大化することもあるので、月次で古い session ディレクトリを削除する運用を推奨します。

落とし穴7:日本語タイトルレンダリングの精度

gpt-image-2 は英語テキストのレンダリング精度が高い一方、日本語は文字種が多いためまれに字形が崩れます。筆者の検証では、ヒラギノ角ゴシック相当のサンセリフ書体を明示し「Japanese text: 〇〇 in Hiragino Sans bold」とプロンプトに書くと精度が上がりました。それでも崩れる場合は、生成後に Photoshop / Figma で日本語タイトルを上書きするか、SVG オーバーレイで対応します。本記事のヒーロー画像も筆者が複数回生成して最良のものを採用しています。

運用パターン応用|YouTube サムネ・TikTok・note への横展開

同じ /imagegen Skill はブログ以外のコンテンツ運用にも横展開できます。プロンプト内のアスペクト比を変えるだけで、各プラットフォームに最適な画像を1コマンドで生成可能です。

用途 推奨サイズ プロンプト要点
ブログヒーロー 1792×1024 (16:9) タイトル文字3層・抽象オブジェクト中心
YouTubeサムネ 1280×720 (16:9) 2行Hook+感情フック・コントラスト強
TikTok縦動画 1024×1792 (9:16) 縦長構図・中央フォーカス
noteキービジュアル 1280×670 (≈19:10) 余白多め・タイトル右下に集約
X (Twitter) OGP 1200×630 (≈1.9:1) クロップ耐性・中央密度

筆者の oishi-ai プロジェクトでは、ブログ・YouTube AI ニュースナビ・TikTok 歴史チャンネル・note 研究シリーズの4チャンネルを並走しています。すべて同じ generate-hero-image-codex.sh をアスペクト比だけ変えて流用しており、1日あたり画像生成にかける人手の合計時間が30〜40分から実質ゼロになりました。年換算で180〜240時間の節約です。5月3日公開の自動化システム7本ガイドで扱った Cron + Claude Code パイプラインに、この画像生成レイヤーを足すと、コンテンツ運用がさらにフラットになります。

課金判断ガイド|ChatGPT plan vs API key

運用時の課金判断は 2つの選択肢に整理できます。

判断軸 ChatGPT plan(デフォルト) OPENAI_API_KEY(API price)
追加料金 ゼロ(usage 消費) $0.006〜$0.41/枚
usage 消費速度 3-5倍速い 影響なし(API側)
適した運用 1日1〜2枚の少量運用 大量生成・CI/CD・チーム共有
設定 codex login のみ 環境変数に API キー設定

筆者の運用ボリュームなら ChatGPT plan のデフォルト挙動で十分です。1日1記事ペースなら usage 枠を圧迫しません。ただし、複数チャンネル(YouTube・TikTok・note 等)でも画像生成を使い始めると枠が厳しくなる可能性があるため、その時点で API キーに切り替える判断になります。

たとえるなら携帯電話のプランのようなもので、固定料金(ChatGPT plan)で済むうちはそれが最安、超えそうなら従量課金(API price)にスイッチ、という普通の運用判断と同じ感覚です。

まとめ|Claude Code 運用4部作の完成

これで Subagents(5/15) + Components(5/16) + Hooks(5/18) + /imagegen(本記事)の運用4部作が完成しました。AI コーディングセッションの内側(Subagents/Components)と外側(Hooks)に加えて、マルチモーダル生成(画像)まで仕組み化できた状態です。

運用4部作|AIの内側・外側・マルチモーダル Subagents 独立コンテキスト 専用AI 用途: factcheck self-eval Components 配布パッケージ 能力共有 用途: Plugin/Skills MCP統合 Hooks 外側監視 29イベント 用途: 品質ゲート 安全運用 /imagegen マルチモーダル 画像生成 用途: ヒーロー画像 手作業ゼロ 内側(Subagents+Components)× 外側(Hooks)× マルチモーダル(/imagegen)

この4要素を組み合わせると、記事執筆フローは「人間がやることが減る一方」になります。5月18日まで残っていた「ヒーロー画像のための ChatGPT 手動操作」が消滅した今、深夜の公開作業は実質的に publish-article.sh を起動してコーヒーを淹れに行くだけになりました。本記事の scripts/generate-hero-image-codex.sh はそのまま使えます。あなたの publish パイプラインに組み込んで、明日から手作業を1つ減らしてください。

FAQ|よくある質問7問

Q1. Codex CLI は無料で使えますか?

ChatGPT plan(無料・Plus・Pro・Team等いずれか)への加入が必要です。codex login で ChatGPT アカウントと連携すれば、Codex CLI 自体は追加料金なしで利用できます。/imagegen Skill も同じ枠で動きます。

Q2. 生成画像の著作権はどうなりますか?

OpenAI の利用規約では、生成画像の所有権はユーザーに帰属します。ただし他者の知的財産(キャラクターやブランドロゴ等)を含むプロンプトで生成した画像の使用には別途の権利クリアランスが必要です。ヒーロー画像のような抽象オブジェクト中心の構図なら問題は出にくいです。

Q3. プロンプトに日本語を使えますか?

使えます。ただし、gpt-image-2 は英語プロンプトの方が解釈精度が高く、画像内の日本語テキスト描画も英語指示の方が安定します。筆者のヒーロー画像プロンプトは英語で記述し、画像内に表示したい日本語タイトルのみ「Japanese text: 〇〇」と明示しています。

Q4. 生成失敗時のリトライ機構は?

標準では再試行ロジックはなく、エラー終了します。generate-hero-image-codex.sh 内で codex exec の終了コードを確認し、失敗時はscripts/generate-hero-image.py(Nano Banana Pro 版)にフォールバックする実装が筆者の運用パターンです。

Q5. 1セッションで複数画像を生成できますか?

可能です。codex exec のプロンプト内で「Generate three images: hero-1.png, hero-2.png, hero-3.png」のように複数指示できます。ただし1セッションが長くなりタイムアウトリスクが上がるため、バッチ生成は別々の codex exec 起動を推奨します。

Q6. Codex Cloud(Web版)でも /imagegen が使えますか?

2026年5月時点では Codex CLI 限定機能です。Codex Cloud には別系統の画像生成インターフェイスがあり、Codex CLI とは互換性がありません。CLI 版の方が解像度上限が高く、コマンド統合が柔軟です。

Q7. publish-article.sh 以外の用途では?

YouTube サムネ生成、TikTok 縦動画のサムネ、note のキービジュアル、X 投稿用 SVG の代替など、すべて同じ仕組みで自動化できます。アスペクト比を 9:16 や 1:1 に変えるだけで、各プラットフォーム最適な画像を 1コマンドで生成できます。

参考リンク

← Blog一覧へ