TL;DR — 用 Codex CLI 把 OpenAI Image-2 接进 Claude Code,不需要 OpenAI API key,说一句「生图」图片直接存到
./images/。Claude Code 终端版和 Claude App / Cowork 版各有一个 Skill,都可下载直接用。
我最近几乎整天待在 Claude Code 里。
写文章、拆任务、整理素材、改程序、生成 prompt,大部分工作都可以在同一个 Claude 窗口里完成。
但有一件事会让流程突然断掉:生图。
我也有 ChatGPT / OpenAI 账号,而 OpenAI 的图像生成能力很好用。问题是,每次我要生图时,通常得切到 ChatGPT 网页版、粘贴 prompt、等图片、下载,再把文件搬回项目文件夹。
这些动作都不难,但很烦。
所以我想做一件很懒的事:
能不能直接在 Claude Code 里说「帮我生一张图」,然后让它调用 Codex CLI,用我的 ChatGPT 账号去跑 OpenAI Image-2,最后把图片直接存进当前项目的 ./images/?
答案是:可以。
这篇就是完整做法。
如果你刚开始热衷使用 Claude Code,这篇会带你看懂一件事:AI 工具真正好用的地方,不是单点能力,而是你能不能把它们接成一条不会中断的工作流。
这篇特别适合你,如果你:
- 刚开始热衷使用 Claude Code
- 同时也有 ChatGPT 或 OpenAI 账号
- 常常需要把图片素材放进文章、演示文稿、产品 mockup 或项目文件夹
- 不想每次生图都切到 ChatGPT 网页版
- 想开始把 AI 工具串成自己的工作流,而不只是单点使用
如果你完全不碰命令行,或只是偶尔生一张图,直接用 ChatGPT 网页版就好。这篇的价值在于:把生图变成可以重复、可以批量、可以包成 Skill 的工作流。
先把几个名词翻成人话
| 名词 | 你可以先这样理解 |
|---|---|
| Claude Code | Claude 的开发者工作环境,可以在项目文件夹里协助你读文件、写文件、跑命令 |
| Codex CLI | OpenAI 的本机命令行工具,可以用 ChatGPT 账号登录,让 OpenAI 的能力进到你的终端 |
| Image-2 | OpenAI 的图像生成模型,本文用它来产生图片;API 文档里的模型名称是 gpt-image-2 |
| Skill | 给 Claude 的一组固定工作说明,让它知道遇到某种需求时该怎么做 |
| MCP | 让 Claude 桌面 App 可以调用本机能力的桥 |
| Cowork | Claude 桌面 App 里更接近「一起工作」的界面,可产出文件与 outputs |
最后你会得到的效果
在 Claude Code 里,你可以说:
帮我生一张戴墨镜的柴犬,存成
./images/shiba.png
Claude 会帮你整理 prompt,调用本机的 Codex CLI。Codex CLI 会用你的 ChatGPT 账号调用 OpenAI Image-2,最后把图片存到项目文件夹。
整个过程不用打开 ChatGPT 网页版,不用手动下载图片,也不用另外准备 OpenAI API key。
这条工作流怎么跑?
主线很简单:
你在 Claude 里说需求
→ Claude 整理 prompt
→ Codex CLI 执行
→ ChatGPT 账号授权
→ Image-2 生图
→ PNG 存到 ./images/
不管你习惯在哪个界面工作,最后都收敛到同一条 OpenAI 链路:

两条路径的差别只有一个:Claude 是怎么叫你本机的 codex 起来跑。
Claude Code 本来就能跑 Bash,所以直接调用。Claude App / Cowork 要碰本机命令,需要「Control your Mac」MCP 这座桥。再往后都一样——Codex 用 ChatGPT 账号验证、调用 Image-2 出图、图片落到指定路径。
flowchart LR
U([用户]) -->|"「生图一张柴犬」"| D{在哪个界面?}
D -->|Claude Code 终端| S1[gen-image-cli<br/>Skill]
D -->|Claude App / Cowork| S2[gen-image-app<br/>Skill]
S1 -->|Bash 直接调用| CX[Codex CLI 0.125+<br/>本机]
S2 -->|Control your Mac MCP<br/>osascript 请本机跑| CX
CX -->|ChatGPT 账号验证| TOOL[image_gen.imagegen]
TOOL --> GPT[(OpenAI Image-2<br/>gpt-image-2)]
GPT -->|PNG bytes| F[./images/foo.png]
F -->|"CLI:落到项目文件夹<br/>App:自动回传 Cowork outputs"| U
你需要先准备什么?
1. 安装 Codex CLI
两个安装方式任选一个:
# npm 版(跨平台都可)
npm i -g @openai/codex
# 或 Homebrew(macOS)
brew install --cask codex
2. 用 ChatGPT 账号登录 Codex
codex login # 会打开浏览器引导你用 ChatGPT 账号授权
codex login status # 应显示 Logged in using ChatGPT
3. 确认你的账号能使用图像生成
这条路线走的是 ChatGPT 账号授权,不是 OpenAI API key。
根据 OpenAI 官方公告,所有 ChatGPT 和 Codex 用户都能用图像生成:
| 账号 / 方案 | 能不能用 | 备注 |
|---|---|---|
| 免费 ChatGPT | ✅ 可以 | 基础图像生成能力 |
| ChatGPT Plus / Pro / Business | ✅ 可以 | 质量、可控性、复杂场景处理通常更好 |
| OpenAI API | ✅ 可以 | 但这是另一条路,走 API key 与 token 计费 |
重点:你不一定要付 Plus 才能跑这套整合。免费账号也能用,差别只在输出质量。
4. 如果要在 Claude App / Cowork 使用,再安装 Control your Mac MCP
纯 Claude Code 终端用户可以跳过这一步——Bash 直接就能跑 codex。
如果你想在 Claude 桌面 App 的 Cowork 模式直接喊「生图」,需要 Control your Mac MCP 让 Claude 能调用你本机的 codex。下载 .mcpb 文件,双击安装到 Claude 桌面 App。第一次调用会跳 macOS 自动化权限请求,点允许。
最小可行版本:先跑一次看看
如果你只想先确认这件事真的能跑,不用急着包 Skill。
最小流程只有三步:
- 安装 Codex CLI
- 执行
codex login - 在你的项目文件夹里执行:
mkdir -p ./images
codex exec -C "$(pwd)" -s workspace-write \
--skip-git-repo-check \
"请使用 image generation tool 生成一只戴墨镜的柴犬,存成 ./images/shiba.png"
成功的话,你会在当前项目底下看到:
./images/shiba.png
先跑通这一步,再来包 Skill。不要一开始就把 Codex CLI、Skill、MCP、Cowork 全部混在一起,不然会不知道问题出在哪一层。
实际输出长这样
跑了大约 1 分钟,得到一张 1254×1254、约 2 MB 的 PNG:

图:用 Claude Code 调用 Codex CLI,再通过 OpenAI Image-2 产生的测试图。重点不是柴犬,而是图片直接落在 ./images/shiba.png——整个过程没有打开浏览器、没有粘贴 prompt 到网页版、没有手动下载。
我踩过的两个坑
坑 1:第一次跑 Codex 被 .codex 权限挡住
如果你看到:
Failed to create session: Operation not permitted
通常是 ~/.codex 权限不对。跑这条修正一下:
sudo chown -R $(whoami) ~/.codex
再重新执行一次。
坑 2:图片没有出现在你以为的文件夹
-C "$(pwd)" 的意思是:请 Codex 以「你执行命令当下所在的文件夹」作为工作目录。
所以你一定要先:
cd 你的项目文件夹
再执行 codex exec。
不然图片可能会被存到 home、Downloads,或其他你没预期的位置。
包成 Skill:之后只要说「生图」
前面的 codex exec 可以手动跑,但每次都打那一长串很累。
所以我把它包成两个 Claude Skill:
| 你在哪里使用 Claude | 该用哪个 Skill | 需要 MCP 吗? |
|---|---|---|
| Claude Code 终端 | gen-image-cli | 不需要 |
| Claude 桌面 App / Cowork | gen-image-app | 需要 Control your Mac MCP |
Claude Code 用户:先用 CLI 版
如果你主要在 Claude Code 里工作,事情最简单。Claude Code 本来就能跑 Bash,所以 gen-image-cli 可以直接调用本机的 codex,没有额外设置。
Claude App / Cowork 用户:再看 App 版
如果你想在 Claude 桌面 App 或 Cowork 窗口里直接说「生图」,那就需要多一层桥:Control your Mac MCP。
因为 Claude App 不能像 Claude Code 那样直接跑终端命令,所以要通过 MCP / osascript 请你的 Mac 帮忙执行 codex。
下载与安装
📦 下载:gen-image-skills.zip
mkdir -p ~/.claude/skills && unzip -o ~/Downloads/gen-image-skills.zip -d ~/.claude/skills/
装完后,在哪个界面都能说「生图一张戴帽子的水豚」,Claude 会根据当下可用工具自动挑对应的 Skill。
如果想自己手写 CLI 版的 ~/.claude/skills/gen-image-cli/SKILL.md,核心内容是这样:
---
name: gen-image-cli
description: 在 Claude Code(CLI)内通过 Bash 调用本机 Codex CLI 生图(背后是 OpenAI Image-2,API 模型 gpt-image-2),存到当前工作目录的 ./images/。触发词:生图、画一张、来张图、generate image。
allowed-tools: Bash(codex:*) Bash(mkdir:*) Bash(ls:*) Bash(pwd:*)
---
# 生图 Skill(Claude Code CLI 版)
当用户说「生图」、「画一张」时,按下列步骤执行:
1. 确认当前工作目录(pwd)
2. 创建输出文件夹:mkdir -p ./images
3. 从用户描述提取图像描述跟英文文件名
4. 调用:
codex exec -C "$(pwd)" -s workspace-write \
--skip-git-repo-check \
"请使用 image generation tool 生成:[描述],存成 ./images/[文件名].png"
5. ls 确认文件、回报绝对路径
App 版的差别在于 allowed-tools 改用 mcp__Control_your_Mac__osascript,通过 osascript 在你的 Mac 上跑 codex。完整内容在 zip 的 gen-image-app/SKILL.md。
几个共通重点:description 写清楚触发词,Claude 才知道用户在喊它;allowed-tools 限缩到必要工具,避免误触;步骤描述用人类语言写就行。
这套方法适合谁?不适合谁?
适合:
- 已经习惯在 Claude Code 里工作的用户
- 同时使用 Claude 与 ChatGPT / OpenAI 的人
- 常常需要产出文章封面图、演示文稿插图、产品 mockup、课程素材的人
- 想把 AI 工具变成可重复工作流,而不是每次手动操作的人
- 想开始理解 Claude Skill、MCP、本机 CLI 如何串起来的人
不太适合:
- 只偶尔生一两张图的人(直接用 ChatGPT 网页版就好)
- 完全不想碰终端的人
- 对图片落文件位置、批量生图、自动化没有需求的人
结论:不是多一个工具,而是少一次中断
这套做法真正有价值的地方,不是「我又多接了一个 AI 工具」。
而是它让工作流少了一次中断。
Claude 继续当我的大脑,负责理解需求、拆任务、整理 prompt。Codex CLI 当我的手,负责把 OpenAI Image-2 叫起来生图。最后图片直接落在项目文件夹,不用切窗口、不用下载、不用搬文件。
如果你跟我一样,同时使用 Claude 和 ChatGPT,这是目前我觉得最顺的一种整合方式。
订阅费没白付,工作流还变更短。
我会持续在 paulkuo.tw 记录这类 AI 工作流实践:不是只看 AI 新闻,而是把 Claude、Codex、Skill、MCP、知识管理与自动化真正塞进日常工作。如果你也正在把 AI 变成自己的第二工作台,欢迎常回来逛逛。
💬 留言讨论
加载中...