9router-image 精选
Generate images via 9Router /v1/images/generations using OpenAI / Gemini Imagen / DALL-E / FLUX / MiniMax / SDWebUI / ComfyUI / Codex models. Use when the user wants to create, generate, draw, or render an image, picture, or text-to-image (txt2img).
安装方式
cp -r skills/9router-image ~/.claude/skills/9router-image把该 skill 目录放进客户端 skills 目录。不同客户端的目录可能不同,Claude Code 默认是 ~/.claude/skills/
https://raw.githubusercontent.com/decolua/9router/ce4460ef79382bfddb4aa5fc0ff9f3cb0d5f95a8/skills/9router-image/SKILL.md下载后另存为 ~/.claude/skills/9router-image/SKILL.md。链接锁定采集时的 commit,内容与本站展示一致。
整仓一次性获取:git clone --depth 1 https://github.com/decolua/9router.git
依赖与权限
- 无需 API Key
- 需要联网访问外部服务
- 依赖外部命令:
curljq - 以上为按正文与 frontmatter 自动推断的信号,仅供参考;安装前建议先阅读原文。
SKILL.md 正文
9Router — Image Generation
Requires NINEROUTER_URL (and NINEROUTER_KEY if auth enabled). See https://raw.githubusercontent.com/decolua/9router/refs/heads/master/skills/9router/SKILL.md for setup.
Discover
curl $NINEROUTER_URL/v1/models/image | jq '.data[].id'
# Per-model params/options (size enum, quality enum, capabilities like edit)
curl "$NINEROUTER_URL/v1/models/info?id=openai/dall-e-3"
Endpoint
POST $NINEROUTER_URL/v1/images/generations
| Field | Required | Notes |
|---|---|---|
model | yes | from /v1/models/image |
prompt | yes | image description |
n | no | count (provider-dependent) |
size | no | 1024x1024, 1792x1024, ... |
quality | no | standard / hd (OpenAI) |
response_format | no | url (default) or b64_json |
Add query ?response_format=binary to receive raw image bytes (handy for saving file).
Examples
Save to file (binary):
curl -X POST "$NINEROUTER_URL/v1/images/generations?response_format=binary" \
-H "Authorization: Bearer $NINEROUTER_KEY" \
-H "Content-Type: application/json" \
-d '{"model":"gemini/gemini-3-pro-image-preview","prompt":"watercolor mountains at sunrise","size":"1024x1024"}' \
--output out.png
JS (URL response):
const r = await fetch(`${process.env.NINEROUTER_URL}/v1/images/generations`, {
method: "POST",
headers: { "Authorization": `Bearer ${process.env.NINEROUTER_KEY}`, "Content-Type": "application/json" },
body: JSON.stringify({ model: "gemini/gemini-3-pro-image-preview", prompt: "neon city", size: "1024x1024" }),
});
const { data } = await r.json();
console.log(data[0].url || data[0].b64_json.slice(0, 40));
Response shape
JSON (default response_format=url):
{ "created": 1735000000, "data": [{ "url": "https://..." }] }
response_format=b64_json:
{ "created": 1735000000, "data": [{ "b64_json": "iVBORw0KGgo..." }] }
Query ?response_format=binary returns raw image bytes (Content-Type image/png or image/jpeg).
Provider quirks
Common fields above work everywhere. These add/override:
| Provider | Extra/changed fields | Notes |
|---|---|---|
openai, minimax, openrouter, recraft | quality, style, response_format | Standard OpenAI shape |
gemini (nano-banana) | — | Only prompt; ignores size/n |
codex (gpt-5.4-image) | image, images[], image_detail, output_format, background | SSE stream; ChatGPT Plus/Pro required |
huggingface | — | Only prompt; returns single image |
nanobanana | image, images[] (edit mode) | size → aspect ratio; async polling |
fal-ai | image (img2img) | n → num_images; size → ratio; async |
stability-ai | style (preset), output_format | size → aspect_ratio |
black-forest-labs (FLUX) | image (ref) | size → exact width/height; async |
runwayml | image (ref) | size → ratio; async; video models exist |
sdwebui, comfyui | — | Localhost noAuth (:7860 / :8188) |
质量与来源
- 所属仓库
- decolua/9router
- 仓库星标
- 3.1 万
- 最近更新
- 5 天前
- 采集时间
- 今天
- commit
- ce4460ef7938
- 内容指纹
- sha256:5660e477888718b
- 文件路径
- skills/9router-image/SKILL.md