关于 image-gen-router
image-gen-router 是一项按文本提示生成栅格图像的技能,可在 GPT 与 Gemini 两种本地命令行后端间选择。它沿用已登录账户,不需要 API 密钥,并遵循指定的模型选择与输出路径。
主要功能
- 01通过 GPT 或 Gemini 生成栅格图像
- 02使用已登录账户,无需 API 密钥
- 03支持提示词文件与 PNG 输出路径
- 04报告生成文件的最终位置
- 05后端失败时不擅自切换
适用场景
- 01根据文本描述生成插画或图像
- 02将生成图像保存到指定路径
- 03使用较长提示词文件生成图像
- 04处理所选后端的认证或生成失败
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ andrewii23/ ii23-skills --skill image-gen-router安装后在 Claude Code 中输入/image-gen-router确认已加载。
附带文件scripts/gen_gemini.pyscripts/gen_gpt.py
详细介绍
图像生成路由器
使用以下两种本地、无头、无需 API 密钥的后端之一,根据文本提示词生成栅格图像。两者都使用现有的登录账号运行(无需 API 密钥,也不按图像单独计费),效果与用户亲自在相应工具中输入提示词完全一样:
- GPT — Codex CLI 的
imagegen工具,使用用户的 ChatGPT 登录账号。 - Gemini — Antigravity
agyCLI 无头模式,使用用户的 Google 登录账号。
此技能的核心是让用户选择模型。其他一切(主体、风格、宽高比、配色、氛围)都直接从提示词传递给所选后端。
唯一重要的决定:使用哪个后端
生成前,必须知道使用哪个后端。情况只有两种:
1. 用户已指定后端 → 使用它,不要询问。 尊重用户所说的内容,直接开始生成。按以下方式映射他们的说法:
- GPT、OpenAI、ChatGPT、codex、“the gpt one”、DALL·E(指模型系列,而非 API)→ gpt
- Gemini、Google、agy、Antigravity、“nano banana”、“the google one” → gemini
用户已经告诉你了还再次询问会让人恼火,也会浪费一次交互——用户明确说明自有原因。
2. 用户未指定后端 → 询问,不设默认选项。 使用 AskUserQuestion 工具提出一个问题,并提供恰好两个选项,两者地位相同(都不标为“推荐”——用户没有表达偏好,因此不要擅自设定偏好)。例如:
AskUserQuestion(questions=[{
"question": "Which model should generate this image?",
"header": "Image model",
"multiSelect": false,
"options": [
{"label": "GPT (codex)", "description": "OpenAI image model via Codex CLI, under your ChatGPT login."},
{"label": "Gemini (agy)", "description": "Google image model via Antigravity CLI, under your Google login."}
]
}])
阅读回答,将其映射为 gpt 或 gemini,然后继续。(如果用户选择“其他”并输入了内容,请据此判断——例如“哪个快就用哪个”→任选其一,并说明你用了哪个。)
一旦知道要用哪个后端,在同一请求中绝不要再次询问。
保存文件的位置
仅当请求涉及显然需要指定位置的交付物,且用户尚未说明位置时,才询问输出路径。其他情况不要因此阻塞请求:
- 如果用户给出了路径或明确的目标位置(例如“保存到我的桌面”),通过
--out传入。 - 如果用户不在意位置,则省略
--out——脚本会报告文件所在位置。
运行所选后端
每个后端都有自己的脚本。两者接受相同的参数,并且都在最后一行输出最终位置,格式为 IMAGE: <abs-path>。解析这一行以获取文件位置,然后向用户展示或描述该文件。
GPT 后端:
python3 ~/.claude/skills/image-gen-router/scripts/gen_gpt.py "<prompt>" [--out <path>] [--timeout <sec>]
Gemini 后端:
python3 ~/.claude/skills/image-gen-router/scripts/gen_gemini.py "<prompt>" [--out <path>] [--timeout <sec>]
通用选项:
- 位置参数 prompt — 主体 + 风格。请具体说明媒介、光照、配色、构图和宽高比。两个模型都会遵循详细描述。示例:
"isometric 3D illustration of a coffee shop, warm pastel palette, soft shadows, 16:9"。 --prompt-file <path>— 用于较长的提示词,避免处理 shell 引号的麻烦。--out <path>— PNG 目标路径。省略此选项可让后端保留文件,并仅报告路径。--timeout <sec>— 默认值为 600。图像生成通常不到一分钟即可完成,但冷启动时图像模型可能运行较慢,因此没有理由时不要调低此值。
运行后,解析 IMAGE: 行并告知用户绝对路径。如有帮助,可先读取图像,确认它符合请求后再报告成功。
示例
1 — 用户指定了模型和路径:
“用 gemini 制作一个极简线描山峰徽标,黑底白色,保存到 ~/Desktop/logo.png”
后端(gemini)和路径都已明确 → 不要提问,直接运行:
python3 ~/.claude/skills/image-gen-router/scripts/gen_gemini.py \
"minimalist line-art mountain logo, single weight stroke, black on white" \
--out ~/Desktop/logo.png
2 — 用户未指定模型:
“生成一张红熊猫宇航员在太空中漂浮的图像,电影级写实风格”
未指定后端 → 使用 AskUserQuestion(GPT 或 Gemini,不设默认选项)→ 用所选脚本和提示词运行。不要询问路径;用户没有提到路径,而且这只是一个随意的请求,因此省略 --out 并报告文件所在位置。
3 — 提示词较长,已指定模型,未指定路径:
“用 gpt 渲染这个场景:”(后接一段长文本)
将这段文本写入临时文件,并使用 --prompt-file:
python3 ~/.claude/skills/image-gen-router/scripts/gen_gpt.py \
--prompt-file /tmp/scene_prompt.txt
失败处理
两个脚本都会以非零状态码退出,并在标准错误输出中说明原因:
- 退出码 2 — 后端的 CLI 缺失或尚未通过身份验证。对于 GPT,请检查
codex login status;对于 Gemini,请检查agy --version,并确认用户 已登录 Antigravity。明确告知用户需要修复哪项登录。 - 退出码 3 — CLI 已运行,但未生成图像或运行超时。通常是后端暂时出现故障,或模型不支持图像生成。重试一次;如果问题仍然存在,请报告脚本输出的标准错误信息。
不要悄悄回退到另一个后端或需要付费的图像 API——用户选择了某个后端(或者是你询问后由用户选择),未经说明就切换会掩盖实际发生的情况。如果所选后端确实无法生成图像,请说明失败原因,让用户决定是否尝试另一个后端。