Xで「Claude CodeからCodexを操作して、画像生成ができる」という投稿を見かけて、試しました。
頼んだのは、動画用の猫のキャラクターの、別ポーズです。
自分がClaude Codeに頼み、Claude Codeがcodex execでCodexを呼び、Codexが画像を作りました。
🎥 この記事の内容は動画でも解説しています。
先に結論です。
codex execで、Claude Codeから画像生成はできました。
ただ、今回は、参照画像を渡すだけでは同じ猫にならず、守る特徴を言葉で列挙したら、同じ猫になりました。
Codexには、画像生成の機能が入っている
Codexの公式ドキュメントによると、Codexの組み込みの画像生成は、gpt-image-2というモデルを使います。
画像の内容を文章で書くか、プロンプトに$imagegenを入れて呼び出します。
CLIでは、-iか--imageで既存の画像を渡して、仕上がりの参考にできます。
使用量についても書かれています。
画像生成は、Codexの通常の使用量に含まれていて、通常のターンより3〜5倍速く使用量を消費するそうです。
大量に作る場合は、OPENAI_API_KEYを設定して、APIの料金にする方法も案内されています。
Claude Codeからcodex execで画像生成する方法
OpenAIのcodex-plugin-ccは、Claude Codeの中からCodexを使うためのプラグインです。
READMEに載っているのは、コードのレビュー、タスクの委任、ジョブの管理で、画像生成の記述はありませんでした。
なので入れず、代わりにcodex execを使いました。
codex execは、対話画面を開かずにCodexを実行するコマンドで、プロンプトを引数として渡せます。--skip-git-repo-checkも付けています。Gitリポジトリの外でも実行するための指定です。
Claude Codeが実行したコマンドは、こうです。
codex exec --skip-git-repo-check "画像生成ツールで、白い背景に肉球のアイコンを作って。保存先のパスだけ報告して" < /dev/null
末尾の< /dev/nullは、標準入力を空にするためのもので、付けたら入力待ちで止まりませんでした。
肉球のような単純な図形は、1回で生成できました。
かかったのは約2分で、Codex側の使用は約1.6万トークンです。
猫の別ポーズは、1回目で別の猫になった
本題は、猫の別ポーズです。
頼んだのは挨拶のポーズで、参照画像には、キャラクターの設定資料と、猫を正面から描いた背景透過の素材の2枚を渡しました。
1回目のプロンプトは、「同じ猫で、挨拶のポーズ」とだけです。
出てきたのは、長毛で顔の細い、別の猫でした。
参照画像を渡しても、「同じ猫」という指示だけでは足りなかったようです。
2回目は、プロンプトに次の3点を加えました。
- 「素材を編集する意識で」と、作業の性質を伝える
- 守る特徴を、5つ列挙する:短毛、太い濃茶の輪郭線、丸顔、半目、尻尾は前に丸める
- 変えるのはポーズだけ、と書く
この3点を入れた指示の要点は、たとえばこうです。
素材を編集する意識で、同じ猫のまま、ポーズだけ挨拶に変えて。
守る特徴:短毛、太い濃茶の輪郭線、丸顔、半目、尻尾は前に丸める。
背景は透過。
2回目は、Claude Codeに再実行を頼んで、自分には同じ猫に見える仕上がりになりました。
透過PNG(1143×1376)で、かかったのは約2分、Codex側の使用は約3万トークンです。
ただ、腕のつなぎ目が少し離れて見えたので、動画に使う前に直す必要があります。
実行時に詰まった2点
保存先のファイルが空になった
指定した保存先のファイルが、0バイトの空でした。
画像そのものは~/.codex/generated_images/の下に残っていたので、生成時刻と画像の内容を確かめてから、そのファイルをコピーして使いました。
-iがあとの引数を、画像として飲み込む
参照画像を-iで渡すとき、-iのあとに書いたものが画像として扱われて、プロンプトが空になりました。
プロンプトを先に書いて、-iを後ろに置くと動きました。
codex exec --skip-git-repo-check "素材を編集する意識で、…" -i 設定資料.png -i 正面.png < /dev/null
試すときの確認ポイント
- キャラクターは、参照画像に加えて、守る特徴を列挙し、変えるのはポーズだけと書く
- 参照画像を
-iで渡すときは、プロンプトを先に書く - 保存先のファイルが空になっていないか、画像を開いて確認する
- 猫のようなキャラクターは、腕などのつなぎ目まで見て、動画に使う前に直す