Files
..

le-gpt-image —— 无 Key 的 GPT Image 生图工坊

用 GPT Image 生成与编辑图片,不需要 OpenAI API Key:凭证复用本机 Codex CLI 的 ChatGPT 登录,消耗 ChatGPT 订阅额度。ZCode / Claude Code / Codex 通用。

原理

~/.codex/auth.json(codex login 的 ChatGPT 凭证)
   │  access_token 临过期 → refresh_token 到 auth.openai.com 换新(原子写回 + 文件锁)
   ▼
POST https://chatgpt.com/backend-api/codex/images/generations|edits
   │  请求头带 Codex 客户端身份(originator: codex_cli_rs 等)
   ▼
data[0].b64_json → 校验 PNG → 原子落盘

这就是 Codex CLI 自己生图走的内部通道。model 字段固定为 gpt-image-2(请求格式匹配值,实际图像模型由服务端决定);备用 --backend responses 走推理模型强制 image_generation 工具。

脚本零第三方依赖(python3 标准库);curl_cffi 为可选增强(强烈建议安装)——chatgpt.com 的 Cloudflare 会按 TLS 指纹放行:浏览器/Codex App 的指纹直接过,python-urllib/curl 的会被质询。装了 curl_cffi 后 CLI 自动改用 Chrome 指纹传输(且不覆盖 Chrome UA——「Chrome TLS + codex UA」的矛盾组合同样会被掐)。Pillow 可选:改图输入自动压成最长边 1536 的 WebP。

使用

# 1. 确认凭证(应显示 chatgpt / plus / token 余量)
python3 scripts/gpt_image.py check

# 2. 生图
python3 scripts/gpt_image.py generate \
  --prompt 'A minimalist poster, the text "好茶慢慢喝" centered' \
  --size portrait --quality high --out poster.png

# 3. 改图 / 风格迁移
python3 scripts/gpt_image.py edit --image photo.png \
  --prompt "Change the background to snowy mountains, keep the person unchanged" --out new.png
python3 scripts/gpt_image.py edit --image content.png --style-image ink.png --out styled.png

前置条件:本机已 codex login(选 ChatGPT 登录)且 Codex 使用文件凭证存储(~/.codex/config.toml 中 cli_auth_credentials_store = "file",CLI 登录默认即文件存储)。

实测记录(2026-10-06,本机 plus 账号)

操作 结果
check chatgpt / plus / token 剩 82.7h / refresh_token 在位
generate low 1024x1024 38.8s 成功;请求 1024x1024 实际返回 1374x1145(通道不严格遵循请求尺寸)
edit 单图 low 45.4s 成功,主体保持、背景按指令替换
海报实测(约 1 小时后) urllib 传输被 Cloudflare 质询(403 cf-mitigated: challenge / 连接被掐)——同网络下浏览器与 Codex App 正常,锁定 TLS 指纹风控
装 curl_cffi 后重测 Chrome 指纹 + 真 token 完整生图 200;「功夫女足」海报 61.5s 成功(1024x1536,书法标题渲染准确)
「九鱼聚财」水墨画 generate 72.2s 成功但只画了 8 条鱼(模型数数弱项,视觉复核抓出);edit 走 native 被 RST(过认证+大图上传触发深层风控),切 --backend responses + 显式 --model gpt-5.5(config 里的 gpt-6.1-sol 带 image 工具会 500)后 194.9s 成功补齐第 9 条
稳定性压测(v1.2,8 张串行) 8/8 首试成功(100%),0 重试 0 传输错误;耗时均值 48s(33.7–65.6s);尺寸精确率 5/8(其余服务端自行微调,如 portrait→852x1846);文字海报中文渲染正确。记录见 fig/stability-20261006/

限制

  • 内部接口,无稳定性契约;native 失效可试 --backend responses。
  • 不支持透明背景;质量只有 auto/low/medium/high(xhigh/max 是 API 通道档位)。
  • gpt-image-2.5-flare/sunburst 为 API 通道专属,本通道不可选。
  • 单次响应一张图,--n 为逐张请求;每张消耗订阅额度。

来源与许可

  • 提示词引擎(v1.3 起完整引入):wuyoscar/GPT-Image2-Skill(MIT)的 Reference Gallery(163 条精调 prompt / 31 类)、craft.md 与官方提示词指南,存放于 references/gallery/ 并适用其原协议(边界与修改声明见该目录 NOTICE.md,原版 LICENSE 随附;相对原版仅删除指向其 docs/ 的预览图外链)。
  • 协议实现参考 jdmnk/codex-imagegen-cli(Apache-2.0):auth 读取/刷新/锁、请求头与端点、尺寸约束、重试策略。本仓库为独立精简实现,未逐行复制;如后续大幅借用其代码需按 Apache-2.0 附带许可声明。