
字节笔记本
2026年6月11日
chatgpt-imagegen: 用 ChatGPT 订阅在命令行生成图片
chatgpt-imagegen 是一个只有 300 行 Python 的命令行工具,能直接调用 ChatGPT 订阅的图片生成能力,不需要 OPENAI_API_KEY,也不需要启动任何服务。
项目简介
chatgpt-imagegen 由开发者 leeguooooo(郭立)开源,是一个零依赖的 Python CLI 工具。它复用了 Codex CLI 内部使用的 image_generation 工具通道,让已订阅 ChatGPT Plus / Pro / Team 的用户可以直接在命令行和 AI agent 中生成图片。
项目在 GitHub 上已获得 27 stars,纯 Python 实现,不依赖任何第三方库。
核心特性
- 零 API Key: 利用 ChatGPT 订阅自带的生图能力,不需要单独申请 API Key
- 零依赖: 纯 Python 标准库实现,不需要 pip install
- 支持多种尺寸: auto、1024x1024、1024x1536、1536x1024,甚至可以尝试更大尺寸
- 多格式输出: 支持 png、jpeg、webp 三种格式
- SSE 流式进度: 实时显示生成进度(排队中、生成中、接收图片),不会干等
- OAuth 自动刷新: token 过期时自动续期,存回
~/.codex/auth.json - AI Agent Skill: 可作为 Claude Code、Codex Agent、Cursor 等 agent 的技能安装使用
工作原理
OpenAI 的图片生成有两条路径:一条是付费 API(/v1/images/generations),需要 API Key 按次计费;另一条是 ChatGPT 订阅自带的生图功能,通过 chatgpt.com/backend-api/codex/responses 端点作为 Responses API 工具调用。
Codex CLI 内置的 image_gen 能力走的就是订阅路径。chatgpt-imagegen 做的事情很简单:读取 ~codex/auth.json 里的 OAuth token,调用同一个后端端点,把返回的 SSE 流中的 base64 图片数据解码保存。
# 核心流程简化
# 1. 读取 OAuth token
token = read_auth_json()["access_token"]
# 2. POST 到 codex/responses 端点
response = requests.post(
"https://chatgpt.com/backend-api/codex/responses",
headers={"Authorization": f"Bearer {token}"},
json={
"model": "gpt-5.5",
"tools": [{"type": "image_generation"}],
"input": [{"role": "user", "content": [{"type": "input_text", "text": prompt}]}]
}
)
# 3. 解析 SSE 流,提取 base64 图片数据
for event in response.iter_sse():
if event.type == "response.output_item.done":
image_data = base64.b64decode(event.item["result"])
save_image(image_data)安装方式
方式一:作为 AI Agent 技能安装(推荐)
npx skills add leeguooooo/chatgpt-imagegen -g安装后,任何兼容的 AI agent 都可以直接执行"画一张 xxx"之类的指令。
方式二:独立 CLI 使用
git clone https://github.com/leeguooooo/chatgpt-imagegen
cd chatgpt-imagegen
chmod +x chatgpt-imagegen
./chatgpt-imagegen "a watercolor cat sitting on a windowsill"也可以安装到系统路径:
sudo install chatgpt-imagegen /usr/local/bin/chatgpt-imagegen前置条件:Python 3.10+、OpenAI Codex CLI(npm i -g @openai/codex)、ChatGPT 订阅,以及一次性的 codex login。
使用示例
基础用法
# 默认输出到 assets/generated/<slug>.png
chatgpt-imagegen "watercolor cat"
# 指定输出路径和尺寸
chatgpt-imagegen "logo for a coffee shop" -o brand/logo.png --size 1024x1024
# 横版 banner
chatgpt-imagegen "moody mountain sunset" -o web/hero.png --size 1536x1024Agent 管道模式
# --quiet 模式只输出文件路径,适合脚本管道
OUT=$(chatgpt-imagegen "icon" --quiet)
echo "saved to $OUT"并发生成
实测 Plus 账号支持 4 个并发请求,总耗时约等于最慢的那个,没有 429 限流:
for p in apple sky tree sun; do
chatgpt-imagegen "a tiny $p icon, flat vector" -o "icons/$p.png" --quiet &
done
wait命令行参数一览
| 参数 | 默认值 | 说明 |
|---|---|---|
-o, --out | assets/generated/<slug>.<ext> | 输出路径,自动创建父目录 |
--size | auto | 图片尺寸,支持 auto 或 WIDTHxHEIGHT |
--format | png | 输出格式:png / jpeg / webp |
--model | gpt-5.5 | 托管 image_generation 工具的聊天模型 |
--timeout | 300 | 总超时时间(秒),大图可能需要 2-3 分钟 |
--stall-timeout | 120 | 无数据超时(秒),在总超时前捕获卡死 |
--quiet | 关 | 只在 stdout 打印保存路径 |
--no-progress | 关 | 不显示 stderr 进度时间线 |
-V, --version | - | 打印版本号并退出 |
限制与注意事项
这个工具的定位很明确:适合个人偶尔在命令行或 agent 中生成图片的场景。有些能力是它做不到的:
- 无法控制画质等级: 订阅路径的画质由后端自行决定,无法通过参数强制指定 high quality
- 不支持透明背景: 这需要走 API Key 路径,配合 gpt-image-1.5 模型
- 不支持图片编辑:
/v1/images/edits端点尚未暴露 - 不适合生产服务: 用个人订阅为公众提供生图服务违反 OpenAI ToS
- 不适合大批量: 持续超过 10 张/分钟会触发日限额
如果需要上述能力,官方的 /v1/images/generations API 才是正确选择。项目作者还有个姐妹项目 agent-cli-to-api,把同样的订阅生图能力包装成 OpenAI 兼容的 HTTP API 服务,适合需要网络调用的多客户端场景。
项目链接
- GitHub 仓库:https://github.com/leeguooooo/chatgpt-imagegen
- 许可证:MIT
- 姐妹项目(HTTP API 网关):https://github.com/leeguooooo/agent-cli-to-api