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

61 lines
3.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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。
## 使用
```bash
# 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,书法标题渲染准确) |
## 限制
- 内部接口,无稳定性契约;native 失效可试 `--backend responses`。
- 不支持透明背景;质量只有 auto/low/medium/high(xhigh/max 是 API 通道档位)。
- `gpt-image-2.5-flare/sunburst` 为 API 通道专属,本通道不可选。
- 单次响应一张图,`--n` 为逐张请求;每张消耗订阅额度。
## 来源与许可
- 协议实现参考 [jdmnk/codex-imagegen-cli](https://github.com/jdmnk/codex-imagegen-cli)(Apache-2.0):auth 读取/刷新/锁、请求头与端点、尺寸约束、重试策略。本仓库为独立精简实现,未逐行复制;如后续大幅借用其代码需按 Apache-2.0 附带许可声明。
- 提示词方法论参考 [wuyoscar/GPT-Image2-Skill](https://github.com/wuyoscar/GPT-Image2-Skill)(MIT):prompt 结构公式、文字渲染、尺寸策略、反模式——只借机制,重新表述。