Files
MetaSkill/skills/le-gpt-image/README.md
T

3.0 KiB
Raw Blame History

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 标准库);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 成功,主体保持、背景按指令替换

限制

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

来源与许可

  • 协议实现参考 jdmnk/codex-imagegen-cli(Apache-2.0):auth 读取/刷新/锁、请求头与端点、尺寸约束、重试策略。本仓库为独立精简实现,未逐行复制;如后续大幅借用其代码需按 Apache-2.0 附带许可声明。
  • 提示词方法论参考 wuyoscar/GPT-Image2-Skill(MIT):prompt 结构公式、文字渲染、尺寸策略、反模式——只借机制,重新表述。