订阅生图
用 ChatGPT 订阅在命令行生成图片,无需 API Key,免费账号也能用
English | 中文
使用你的 ChatGPT 订阅生成图像 — 不需要 OPENAI_API_KEY。
一个极小的、零依赖的 Python 命令行工具(也是 AI 智能体技能)——仅一个文件,仅使用标准库——使用你的 ChatGPT 账户生成图像,可在命令行中使用,也适用于任何 AI 智能体。
✨ 也适用于免费的 ChatGPT 账户。 默认的
web后端仅驱动正常的 ChatGPT 网页聊天,其中即使是免费套餐用户也能生成图像——所以无需付费计划、无需 API 密钥,也无需 Codex(受免费套餐每日图像限制)。付费计划则享有更高的限制。
chatgpt-imagegen "a watercolor cat sitting on a windowsill" -o cat.png
# -> saved: cat.png (812,344 bytes) size=1024x1024 quality=medium
为什么存在这个工具
OpenAI 通过两种完全不同的方式提供图像生成:
| 方式 | 你需要支付 | 如何使用 |
|---|---|---|
Direct API (/v1/images/generations) | 按图像付费,基于 OPENAI_API_KEY | curl / OpenAI SDK / 等 |
| ChatGPT 订阅 (Plus / Pro / Team) | 固定的月费 | ChatGPT 网页/桌面应用,或 Codex CLI 内置的 image_gen |
对于不使用 Codex CLI 的人来说,订阅路径是不可见的。它作为 Responses-API 工具运行在 ChatGPT 的内部 backend-api/codex/responses 端点上,通过运行 codex login 时写入 ~/.codex/auth.json 的 OAuth 令牌进行身份验证。
chatgpt-imagegen 在命令行上以及为任何 AI 智能体暴露了这一能力——使用两个后端来消耗你订阅的不同部分。
后端
同一个订阅计量两个独立的配额,具体消耗哪个取决于图像生成的位置:
| 后端 | 如何生成 | 消耗的配额 | 需要 |
|---|---|---|---|
web | 驱动你已经登录的 ChatGPT 浏览器(通过 chrome-use,原名 agent-browser-stealth),并在普通对话中生成——与在应用中输入的效果相同。它通过真实的 Chrome 连接来绕过纯/无头客户端无法处理的 Cloudflare + 计算证明挑战。每次运行的对话会被归档到 ChatGPT Project(默认 imagegen,首次使用时创建),避免弄乱你的历史记录。 | ChatGPT 对话——不会触及你的计量Codex 使用限制。 | 任何已登录 chatgpt.com 的浏览器(免费套餐也可用)+ chrome-use。 |
codex | 无头 POST 到 backend-api/codex/responses,复用 ~/.codex/auth.json。 | Codex 使用(计量配额)。 | codex login。 |
默认 auto 会优先尝试 web(以节省 Codex 使用配额),当无法访问已登录浏览器时回退到 codex。可通过 --backend web / --backend codex(或 CHATGPT_IMAGEGEN_BACKEND)强制指定后端。
- 笔记本电脑/台式机(Chrome 打开并已登录)→
web—— 不消耗 Codex 使用配额。 - 服务器/无头智能体主机 →
codex—— 因为没有浏览器可用,auto会自动回退。
web 在该浏览器当前登录的账户下生成图像,该账户可能与 ~/.codex/auth.json 不同——请将浏览器登录到你想消耗配额的账户。
安装
你需要 Python 3.10+、一个 ChatGPT 订阅,以及至少一个后端(auto 会根据已配置的后端自动选择,优先使用 web):
codex 后端 — npm i -g @openai/codex 然后 codex login(会创建 ~/.codex/auth.json)。
web 后端 — chrome-use(原名 agent-browser-stealth;它通过扩展驱动你真实的、已登录的 Chrome,从而通过 Cloudflare 和 ChatGPT 的反机器人检查)连接到一个已登录 chatgpt.com 的 Chrome:
curl -fsSL https://raw.githubusercontent.com/leeguooooo/chrome-use/main/install.sh | sh
chrome-use extension install
# 然后:添加 Chrome 扩展 → 重启 Chrome → 登录 chatgpt.com
扩展:Chrome 网上应用店。旧安装将二进制暴露为 agent-browser / abs 的也能继续使用——CLI 两种名称都接受。
没有
chrome-use?不会有任何问题,也不会在后台安装任何东西:auto模式会回退到codex并打印一行提示,告知安装chrome-use可以使生成不消耗 Codex 使用配额。
方式 A —— 适用于 AI 智能体(推荐)
通过 skills.sh 安装——与 Claude Code、Codex Agent、Cursor、OpenClaw 等兼容:
npx skills add leeguooooo/chatgpt-imagegen -g
这会将智能体指令(SKILL.md)和 CLI 本身一起放入你的智能体技能目录。只需向任何兼容的智能体提出请求:“画一张 xxx” / “generate a hero banner for the README”。
方式 B —— 独立 CLI
git clone https://github.com/leeguooooo/chatgpt-imagegen
cd chatgpt-imagegen
chmod +x chatgpt-imagegen
./chatgpt-imagegen "a tiny pixel-art mushroom"
或者将其放在你的 $PATH 中:
sudo install chatgpt-imagegen /usr/local/bin/chatgpt-imagegen
这就是全部设置。无需 pip install,无需 virtualenv,无需守护进程。
用法
chatgpt-imagegen "<prompt>" [options]
| 选项 | 默认值 | 备注 |
|---|---|---|
--backend | auto | auto | web | codex。auto 优先使用 web(节省 Codex 使用配额),当无法访问已登录浏览器时回退到 codex。参见后端。也可使用环境变量 CHATGPT_IMAGEGEN_BACKEND。 |
--profile | auto | (web) 驱动哪个 Chrome 配置文件。auto:如果打开的 Chrome 已登录则使用它,否则自动切换到已登录的配置文件(离线检测)。relay:仅使用你打开的 Chrome。或者指定一个名称,如 "Profile 3"。 |
--session | imagegen-<pid> | (web) 跨次运行复用命名的 chrome-use Chrome 标签组。 |
--project | imagegen | (web) 将对话归档到哪个 ChatGPT Project——按精确名称匹配,首次使用时创建,之后复用。传入 --project "" 将使用普通的顶级对话。也可使用环境变量 CHATGPT_IMAGEGEN_PROJECT。如果失败,会降级为普通对话并给出警告,绝不会阻塞运行。 |
--keep-tab | 关闭 | (web) 生成后保持 ChatGPT 标签页打开(默认关闭)。 |
-o, --out PATH | assets/generated/<slug>.<ext> | 输出文件;父目录会自动创建。当后缀与 --format 不一致时会打印警告(例如 -o foo.jpg --format png)。 |
--size | auto | auto 或任意 WIDTHxHEIGHT。已验证可用的:1024x1024、1024x1536、1536x1024。更大尺寸会原样传递。 |
--format | png | png | jpeg | webp |
--model | gpt-5.5 | 托管 image_generation 工具的聊天模型 |
--timeout | 300 | 整个请求的总挂钟时间预算(秒)。大尺寸/细节丰富的图像可能需要 2-3 分钟。 |
--stall-timeout | 120 | 从后端接收数据的最长静默时间(秒),超过则判定为停滞——会在总预算之前触发。上限为 --timeout。 |
--quiet | 关闭 | 仅在标准输出打印保存的路径(完美适用于智能体管道)。进度信息仍会输出到 stderr——使用 --no-progress 可静音。 |
--no-progress | 关闭 | 抑制 stderr 的进度时间线(错误仍会打印)。 |
-V, --version | — | 打印 CLI 版本号(chatgpt-imagegen 0.7.0)并退出。 |
示例:
# 默认 → assets/generated/<slug化的提示>.png
chatgpt-imagegen "watercolor cat"
# 指定路径
chatgpt-imagegen "logo for a coffee shop, vector style" -o brand/logo.png --size 1024x1024
# 横向英雄横幅
chatgpt-imagegen "moody mountain sunset" -o web/hero.png --size 1536x1024
# 在 Shell 管道中使用
OUT=$(chatgpt-imagegen "icon" --quiet)
echo "saved to $OUT"
上述示例命令的实际输出——本 README 中的每一张图片均由该工具生成:
watercolor cat sitting on a windowsill | logo for a coffee shop, vector style | moody mountain sunset (1536×1024) |
|---|---|---|
![]() | ![]() | ![]() |

它还能做到这件事——要求它画出自己的双后端架构,画成一张刻意粗劣的、鼠标绘制的 MS-Paint 涂鸦。
哪些参数可用 / 哪些不可用
| 参数 | 订阅路径 | 备注 |
|---|---|---|
--size | ✅ 生效 | auto 或任意 宽x高;后端会拒绝不支持的尺寸。已验证可用的尺寸:auto、1024x1024、1024x1536、1536x1024。更大尺寸(2048x*、3840x*)会原样转发——后端可能根据订阅等级接受或拒绝。 |
--format | ✅ 生效 | png / jpeg / webp |
| 质量 | ⚠️ 由模型自行选择 | 脚本未暴露 --quality 参数,因为订阅路径无法提供可靠的质量控制——后端曾被观察到自行选择 low 或 medium,并忽略或降低任何 high 请求。如果需要明确的质量控制,请使用带有 OPENAI_API_KEY 的官方 /v1/images/generations API。 |
background: transparent | ❌ 订阅路径不支持 | 需要 API 密钥路径配合 gpt-image-1.5 |
图像编辑(/v1/images/edits) | ❌ 尚未公开 | 如有需要,请提交 issue |
| 速度 | 通常 15–60 秒,大型/细节丰富的图像偶尔需要 2–3 分钟 | 端到端流式传输;每个阶段的耗时会打印到 stderr,供您观察进度 |
并发
每个后端都有各自的跨进程并发上限,因为它们触及不同的限制:
| 后端 | 默认上限 | 原因 | 覆盖 |
|---|---|---|---|
web | 1(串行) | 驱动一个共享的已登录 Chrome,且 chatgpt.com 页面界面会激进地限制速率(“请求过多……您的对话访问暂时受限”)。 | CHATGPT_IMAGEGEN_WEB_CONCURRENCY |
codex | 4 | 独立 HTTP POST;在 Plus 账户上实测 4 个并发没有问题(无 429 错误,墙钟时间 ≈ 最慢的单个请求时间)。设置上限是为了防止大型代理扇出时触发账户级限制器。 | CHATGPT_IMAGEGEN_CODEX_CONCURRENCY(0 = 无限制) |
超出上限运行多个进程是安全的——多余的运行会在一个 flock 槽位池中排队(等待者会打印一行”等待中……”,--timeout 预算只在获得槽位后开始计时,因此排队时间不计入)。
# 从 Shell 并行启动 4 个进程(注意:使用 --backend codex):
for p in apple sky tree sun; do
chatgpt-imagegen "a tiny $p icon, flat vector, white background" \
-o "icons/$p.png" --backend codex --quiet &
done
wait
为什么 web 后端保持 1 个并发:在共享的 Chrome 上并发运行曾经导致彼此的图像交叉污染(#7,在 v0.6.0 中修复),而且页面界面无论如何都会遏制快速爆发。如果 chatgpt.com 对账户进行速率限制,web 后端会检测到”请求过多”对话框并快速失败并给出明确信息——在提示词提交之前,auto 模式会回退到 codex;提交之后则会干净地停止,而不是重复消耗额度。
注意事项:订阅配额与 ChatGPT Web 应用和 Codex CLI 共享。不要运行持续的批量任务(>10 张图片/分钟),否则最终会触及每日速率限制。对于批量任务,请使用带有 OPENAI_API_KEY 的官方 /v1/images/generations API。
何时不应使用此工具——改用 API
如果以下任何情况适用,则该工具不合适:
- 您需要真正的
quality=high或原生透明背景——两者都需要使用带有OPENAI_API_KEY的官方/v1/images/generationsAPI。 - 您正在构建一个生产级服务,向最终用户提供图像——将您的个人 ChatGPT 订阅用于此目的违反了 OpenAI 的 ToS,并且会消耗您实际使用 ChatGPT 时应用的配额。
- 您需要每次调用的确定性计费,并可向客户转嫁——API 支持这一点,订阅不支持。
- 您需要每分钟持续超过 10 张图片——订阅速率限制比 API 更严格。
对于这些情况,只需调用 OpenAI 的官方端点:
curl https://api.openai.com/v1/images/generations \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-d '{"model":"gpt-image-2","prompt":"...","size":"1024x1024"}'
相关项目
- 需要一个 HTTP API? agent-cli-to-api 将同一工具暴露为兼容 OpenAI 的
/v1/chat/completions服务器——适用于网络可调用、多客户端或团队共享的场景。本仓库用于本地/代理驱动的使用。 - 深入解读(博客): 存在原因 + OAuth/SSE 解析 · 可视化指南(中文;英文/日文在
/en/和/ja/下)。
工作原理(技术细节)
web 后端(默认)
通过 chrome-use 驱动您已登录的浏览器,使生成在消费者 ChatGPT 界面上运行——而无头客户端无法访问该界面,因为它位于 Cloudflare 机器人检测以及一个哨兵验证工作(backend-api/sentinel/chat-requirements + 计算令牌的页面内 sentinel/sdk.js)之后。真实浏览器可以透明地通过两者。流程如下:
chatgpt-imagegen --backend web
│
├── chrome-use 打开 https://chatgpt.com/ (一个*普通*聊天——临时聊天会禁用图像工具)
├── 解析 ChatGPT Project(--project) (页面内 fetch:通过 gizmos/snorlax/sidebar 列出,
│ 如果不存在则通过 POST /backend-api/projects 创建并打开 chatgpt.com/g/<g-p-id>/project)
├── 使用真实按键输入提示词 (ProseMirror/React 编辑器忽略仅 DOM 的 `fill`)
├── 轮询页面:等待流式传输停止**并且**新的 <img> 资产稳定
└── 在页面内获取资产字节(credentials:'include') → base64 → 保存
(签名的 estuary/content URL 由浏览器自身的 cookie 授权)
没有令牌离开浏览器。每次运行的聊天内容会存放进自动创建的 imagegen 项目(Project),而非顶级历史记录;如果希望退出该行为,请传入 --project ""。
codex 后端
Codex CLI 内置的 image_gen 技能通过原生 Responses-API 工具实现:
// Codex CLI 向 chatgpt.com/backend-api/codex/responses 发出的请求:
{
"model": "gpt-5.5",
"tools": [{"type": "image_generation"}],
"input": [{"role": "user", "content": [{"type":"input_text","text":"draw a cat"}]}],
// ...
}
服务器会回复一条 SSE 流,其中的 response.output_item.done 事件携带一个 item.type === "image_generation_call" 的有效载荷,其中 item.result 是 base64 编码的 PNG 图片。chatgpt-imagegen 所做的正是这些:
chatgpt-imagegen
│
├── 读取 ~/.codex/auth.json (OAuth access_token, account_id, refresh_token)
├── 读取 ~/.codex/version.json (codex CLI 版本 → 与服务器预期匹配)
│
└── POST https://chatgpt.com/backend-api/codex/responses
请求头: Authorization, version, originator, session_id, …
请求体: tools: [image_generation]
│
└── SSE 流
├── response.image_generation_call.in_progress → "queued"
├── response.image_generation_call.generating → "generating"
├── response.image_generation_call.partial_image → "receiving image (partial N)"
├── response.output_item.done ← item.result = base64 PNG
└── response.completed
如果 OAuth 令牌已过期,脚本会通过 https://auth.openai.com/oauth/token 自动刷新(使用 codex login 已存储的 refresh_token),并将新令牌持久化回 ~/.codex/auth.json。
许可证
MIT — 参见 LICENSE。
免责声明
本工具调用的是 ChatGPT 内部的 backend-api/codex 端点,这也是官方 Codex CLI 所使用的端点。它并非公开文档化的 API。OpenAI 随时可能更改或限制该端点。使用者需自行承担风险,并遵守 OpenAI 使用条款 —— 特别地,请勿利用您的 ChatGPT 订阅来构建面向公众的图片生成服务。
关键词
ChatGPT subscription image generation, free ChatGPT account image generation, use ChatGPT Plus for image API, gpt-image-2 without OPENAI_API_KEY, gpt-image-2 ChatGPT subscription, image_generation tool Responses API, ChatGPT image CLI, Codex CLI image_gen as standalone tool, DALL-E via ChatGPT Plus, OAuth-backed OpenAI image generation, no-API-key image generation, AI agent image generation skill, Claude Code image skill, OpenAI image generation without billing.
中文: 用 ChatGPT 订阅生成图片、免费 ChatGPT 账号生图、ChatGPT Plus 生图工具、不用 API key 生图、gpt-image-2 用订阅、ChatGPT 订阅生图 CLI、Codex CLI 生图能力独立工具、给 AI agent 用的生图 skill、本地生图脚本、零依赖 Python 生图工具。


