English | 中文
Generate images with the subscriptions you already have — no OPENAI_API_KEY.
A tiny zero-dependency Python CLI (and AI-agent skill): one file, stdlib only. It uses your ChatGPT subscription by default, falls back to Codex, and can use a Gemini subscription instead. Works on a free ChatGPT account too — the default backend just drives the normal ChatGPT web chat, where even free-tier users get image generation.
Formerly
chatgpt-imagegen. It was renamed once it grew non-ChatGPT backends. Thechatgpt-imagegencommand still works as an alias, and everyCHATGPT_IMAGEGEN_*environment variable is still honoured (the newIMAGE_USE_*name wins if both are set). Your saved styles are untouched.
image-use "a watercolor cat sitting on a windowsill" -o cat.png
# -> saved: cat.png (812,344 bytes) size=1024x1024 quality=medium
Needs Python 3.10+ and a ChatGPT subscription (free tier works).
For AI agents (recommended) — drops the skill into Claude Code, Codex, Cursor, etc.:
npx skills add leeguooooo/image-use -gThen just ask: "画一张 …" / "generate a hero banner for the README".
Standalone CLI — no pip, no virtualenv:
git clone https://github.com/leeguooooo/image-use
sudo install image-use/image-use /usr/local/bin/image-use
sudo ln -sf image-use /usr/local/bin/chatgpt-imagegen # optional: keep the old command nameYou also need one backend — web (default, drives your logged-in Chrome, spends no Codex-usage) or codex (headless fallback). image-use doctor shows what's ready. → Backends & troubleshooting
Got a Gemini subscription too? Two more backends use it instead of OpenAI: --backend gemini (drives a logged-in gemini.google.com Chrome) and --backend agy (the Antigravity CLI, headless). They bill separate quotas from each other, so either can cover for the other. Neither is ever chosen automatically — ask by name. Pin the subscribed Chrome profile with --gemini-profile, since most profiles are signed in to some Google account. Note that Gemini text-to-image output carries a visible watermark in the bottom-right corner (image-to-image does not), and --size steers the aspect ratio there rather than the exact pixel count.
image-use updateIt runs the skills manager for you — directly when skills is on PATH, through npx when it isn't (it usually isn't). Interactive runs check for a newer version at most once a day and upgrade automatically for the next run; failures fall back to a notice listing what changed. IMAGE_USE_NO_AUTO_UPDATE=1 disables installation but keeps the check and notice, while IMAGE_USE_NO_UPDATE_CHECK=1 disables both. --quiet/--no-progress never upgrades in the background.
On 0.23.1 or earlier? That self-update only looked for a global skills and gave up when it was missing, so it cannot deliver its own fix. Bootstrap once with (installs from before the rename are registered as chatgpt-imagegen):
npx -y skills update chatgpt-imagegenAfter that image-use update works on its own.
image-use "moody mountain sunset" -o web/hero.png --size 1536x1024
image-use "make it a warm golden-hour photo, cinematic 35mm" -i photo.jpg # reference the subject
image-use "a different fictional person" --composition-ref photo.jpg # borrow the framing, not the face
image-use "a robot mascot" --style doodle # apply a gallery style (auto-pulled + saved)
image-use animate "a dog happily wagging its tail" --style-online snoopy --also-gif
OUT=$(image-use "icon" --quiet) # capture the path
image-use "product hero" --backend codex --image-model gpt-image-2.5-sunburst --quality xhighThe last line opts into the GPT Image 2.5 knobs — --image-model
(sunburst for precise editing, flare for fast high quality), --quality
(low→max), --background transparent, --compression, --action,
--partial-images. They are codex-only (the web/gemini surfaces have no
such controls), all optional, and are requests — the saved line prints the
model=/quality=/size= the backend actually used. Note: the codex
backend rewrites these server-side (observed gpt-image-2-codex / auto), so
they rarely survive there; what does matter on codex is --model, the driver
model that calls the tool (default gpt-5.6-luna, a fast/affordable Codex model
— a frontier coding model just burns the metered Codex bucket). Every run prints
the tokens= it cost.
All three below came straight out of the commands above — no retouching:
![]() |
![]() |
![]() |
"a watercolor cat sitting on a windowsill" |
"moody mountain sunset" --size 1536x1024 |
"a coffee shop logo, circular emblem" |
animate asks the image model for a strict 4×2 sprite sheet, crops eight equal
frames, rejects obvious subject drift, and writes a smooth ping-pong loop. It
defaults to animated WebP; pass --animation-format gif or --also-gif when
GIF compatibility matters. The source sprite PNG is always kept beside the
animation. Animation post-processing needs
ImageMagick (magick); WebP output additionally
needs libwebp (img2webp).
image-use doctor reports whether both are installed.
Full options: image-use --help. → Generate images · Styles
The ChatGPT browser backend pastes multiline prompts, checks the exact editor text, and waits for every reference upload to finish before clicking Send once. Incomplete uploads or altered text stop the run. If a send cannot be confirmed, it reports the uncertainty without sending again. Start with an empty composer; an existing draft is preserved. A run that stops before sending clears the text it pasted; if a run still reports a non-empty composer, clear the box at chatgpt.com — ChatGPT restores unsent drafts in new chats.
Browse and reuse art styles other people tuned — a public gallery at drawstyle.leeguoo.com. No script update needed:
image-use "a fox barista" --style-online doodle # generate with a gallery style, nothing saved
image-use style search "watercolor mascot" # search the gallery
image-use style publish mystyle --category cute --from-last # share yours (one-time login)
image-use upload out.png --style doodle # share a result to the style's player gallery (no login, on request)A style can pin a character, not just a look. Style assets carry reference images, so the same character comes back in a brand-new scene:
image-use style add pip --kind character --ref pip-ref.png
image-use "a fox barista" --style pip![]() |
![]() |
| the pinned reference | generated from "a fox barista" |
Gallery packages can be characters too — xiaohei is one.
→ Using gallery styles · Submitting a style
- 📖 Full documentation — install, generating, styles, backends, the platform.
- 🎨 Style gallery — browse and contribute community art styles.
- 📝 Deep dive (blog) — the design and principles behind it.
- ⚙️ How it works · HTTP API wrapper
MIT — see LICENSE.
This tool calls ChatGPT's internal backend-api/codex endpoint — the same one the official Codex CLI uses. It is not a documented public API; OpenAI could change or restrict it at any time. Use at your own risk and within the OpenAI Terms of Use — in particular, do not use your ChatGPT subscription to power a public-facing image generation service.
Keywords
ChatGPT subscription image generation, free ChatGPT account image generation, use ChatGPT Plus for image API, gpt-image-2.5 without OPENAI_API_KEY, gpt-image-2.5 ChatGPT subscription, 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 生图工具。




