mcpField
I
image-gen-router

image-gen-router

github.com/andrewii23创意与媒体1148 次安装4 周前更新
代码仓库

关于 image-gen-router

image-gen-router 是一项按文本提示生成栅格图像的技能,可在 GPT 与 Gemini 两种本地命令行后端间选择。它沿用已登录账户,不需要 API 密钥,并遵循指定的模型选择与输出路径。

主要功能

  1. 01通过 GPT 或 Gemini 生成栅格图像
  2. 02使用已登录账户,无需 API 密钥
  3. 03支持提示词文件与 PNG 输出路径
  4. 04报告生成文件的最终位置
  5. 05后端失败时不擅自切换

适用场景

  1. 01根据文本描述生成插画或图像
  2. 02将生成图像保存到指定路径
  3. 03使用较长提示词文件生成图像
  4. 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 agy CLI 无头模式,使用用户的 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——用户选择了某个后端(或者是你询问后由用户选择),未经说明就切换会掩盖实际发生的情况。如果所选后端确实无法生成图像,请说明失败原因,让用户决定是否尝试另一个后端。

评论

支持 Markdown