关于 ai-image-generator
为 Claude Code 提供使用 Google Gemini 和 OpenAI API 生成图像的提示词方法与 API 操作指导。适合需要制作写实场景、含文字图像、透明图标或多版本构图的创作者。
主要功能
- 01按图像需求选择模型
- 02使用五部分框架编写提示词
- 03生成文字图像和多版本图像
- 04使用参考图进行合成
- 05通过 Gemini 多轮编辑图像
- 06提供图像检查与优化流程
适用场景
- 01制作带标题的海报或信息图
- 02为产品图组合生活场景
- 03探索同一构想的多种视觉样式
- 04生成透明背景的图标或标志
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ jezweb/ claude-skills --skill ai-image-generator安装后在 Claude Code 中输入/ai-image-generator确认已加载。
附带文件references/prompting-guide.md
详细介绍
AI 图像生成器
使用 AI API(Google Gemini 和 OpenAI GPT)生成图像。本技能将介绍提示词模式和 API 机制,帮助你直接通过 Claude Code 生成专业图像。
托管式替代方案:如果你不想管理 API 密钥,ImageBot 提供托管式图像生成服务,并支持相册模板和品牌套件。
模型选择
根据需求选择合适的模型:
| 需求 | 模型 | 原因 |
|---|---|---|
| 写实场景/图库照片 | Gemini 3.1 Flash Image | 景深、复杂度和环境背景表现最佳 |
| 最终客户场景(细节更丰富) | Gemini 3 Pro Image | 细节更丰富,风格一致性更好 |
| 图像中的文字(海报、带文案的 OG 图像、信息图) | GPT Image 2 | 文字渲染确实有效,包括多种文字体系 |
| 探索 10 种风格变体 | GPT Image 2 | 原生批量生成——一个提示词生成 10 种变体,共享构图和配色 |
| 多参考图合成(产品+生活方式) | GPT Image 2 | 能在多张参考图之间处理光照、比例和透视 |
| 透明图标/徽标 | GPT Image 1.5 | 原生 RGBA 透明通道——GPT Image 2 不支持透明背景 |
| 快速草稿/迭代 | Gemini 2.5 Flash Image | 免费额度(约 500 次/天) |
经验法则:任何包含可读文字的图像 → GPT Image 2(除非需要透明背景,此时用 GPT 1.5)。其他情况 → Gemini。
模型 ID
| 模型 | API ID | 提供方 |
|---|---|---|
| Gemini 3.1 Flash Image | gemini-3.1-flash-image-preview | Google AI |
| Gemini 3 Pro Image | gemini-3-pro-image-preview | Google AI |
| Gemini 2.5 Flash Image | gemini-2.5-flash-image | Google AI |
| GPT Image 2(默认) | gpt-image-2 | OpenAI |
| GPT Image 2(ChatGPT 同等输出) | chatgpt-image-latest | OpenAI |
| GPT Image 1.5(仅用于透明背景) | gpt-image-1.5 | OpenAI |
使用前请确认模型 ID——它们经常变更:
curl -s "https://generativelanguage.googleapis.com/v1beta/models?key=$GEMINI_API_KEY" | python3 -c "import sys,json; [print(m['name']) for m in json.load(sys.stdin)['models'] if 'image' in m['name'].lower()]"
GPT Image 2 详细说明
于 2026-04-22 发布。有三项能力会改变你选择它的时机。
1. 文字渲染确实有效
海报、带标题的 OG 图像、带标签的信息图、UI 模拟图、价格卡片。文字渲染可靠,包括非拉丁文字体系(日语、韩语、印地语、孟加拉语)。这是从 Gemini 切换过来的主要原因——Gemini 完全无法渲染可读文字。
2. 多变体批量生成
一次提示词调用即可生成最多 10 张图像。各变体共享构图和配色,但细节有所不同。适用于确定风格前的探索、为客户提供 A/B 选项以及快速构思。
3. 多参考图合成
在提示词中附带参考图——产品照片、生活场景、徽标。模型会以正确的光照、比例和透视将产品放入场景中。无需多轮编辑即可实现“产品融入场景”的工作流。
模式
- 即时模式(默认,适用于所有套餐)——不经过规划步骤,直接生成。速度快,足以满足大多数需求。
- 思考模式(Plus/Pro/Business 套餐)——绘制前先规划布局。需要元素数量准确(“一排 3 个图标”“5 条功能要点”)或文字必须出现在特定区域时使用。处理复杂构图时可减少重试次数。
宽高比
从 3:1 超宽到 1:3 超高,还包括 1:1、3:2、2:3、16:9、9:16。范围比其他模型更广——适用于网站横幅(超宽主视觉)或移动端故事格式(超高图像)。
分辨率
标准模式下长边最高可达 2K。4K 目前处于 Beta 阶段。
生成时间
**复杂提示词最多需要 2 分钟。**请构建异步 UX——不要阻塞等待响应。显示进度,或在后台启动任务并轮询状态。
限制
- **不支持透明背景。**需要 PNG 透明背景时,请改用
gpt-image-1.5。 - 首次调用时,端点可能要求进行 API 组织验证——如果遇到身份验证错误,请在 OpenAI 账户设置中启用该选项。
定价(每张 1024×1024 图像)
| 质量 | 成本 |
|---|---|
| 低 | $0.006 |
| 中 | $0.053 |
| 高 | $0.211 |
Token 定价:输入文本 $5/M,输出文本 $10/M,输入图像 $8/M,输出图像 $30/M。
5 部分提示词框架
按以下顺序构建提示词,以获得一致的结果:
1. 图像类型
设定体裁:“一张逼真的照片”“一幅等距插画”“一个扁平矢量图标”
2. 主体
说明人物或事物,并提供具体细节:“一位亲切随和、30 岁出头的澳大利亚女性,自然地微笑着”
3. 环境
说明场景和空间关系:“在明亮的现代住宅中,身后的木架上摆放着陶土色装饰”
4. 技术规格
说明相机和光线:“使用 85mm f/2.0 拍摄,自然窗光,头肩构图”
5. 限制条件
说明要排除的内容:“照片级写实,不要文字、不要水印、不要徽标”
示例(好与差)
BAD — keyword soup:
"professional woman, spa, warm lighting, high quality, 4K"
GOOD — narrative direction:
"A professional skin treatment scene in a warm clinical setting.
A practitioner wearing blue medical gloves uses a microneedling pen
on the client's forehead. The client lies on a white treatment bed,
eyes closed, relaxed. Warm golden-hour light from a window to the
left. Terracotta-toned wall visible in the background. Shot at
85mm f/2.0, shallow depth of field. No text, no watermarks."
工作流
1. 确定图像需求
| 用途 | 宽高比 | 模型 |
|---|---|---|
| 主视觉横幅(无文字) | 16:9 或 21:9 | Gemini |
| 带标题文案的主视觉横幅 | 16:9 或 3:1 超宽幅 | GPT Image 2 |
| 服务卡片 | 4:3 或 3:4 | Gemini |
| 个人资料 / 头像 | 1:1 | Gemini |
| 图标 / 徽章(透明背景) | 1:1 | GPT Image 1.5 |
| OG / 社交分享图(无文字) | 1.91:1 | Gemini |
| 带文案的 OG / 社交分享图 | 1.91:1 | GPT Image 2 |
| 海报 / 信息图 / 价格卡片 / 任何文字密集型内容 | 不定 | GPT Image 2 |
| 风格探索(同一概念的 10 个变体) | 任意 | GPT Image 2(批量) |
| Instagram 帖子 | 1:1 或 4:5 | Gemini |
| 移动端主视觉 | 9:16 | Gemini |
2. 编写提示词
使用 5 部分框架。详细的摄影参数请参阅 references/prompting-guide.md。
3. 通过 API 生成
Gemini(Python — 可正确处理 shell 转义)
python3 << 'PYEOF'
import json, base64, urllib.request, os, sys
GEMINI_API_KEY = os.environ.get("GEMINI_API_KEY")
if not GEMINI_API_KEY:
print("Set GEMINI_API_KEY environment variable"); sys.exit(1)
model = "gemini-3.1-flash-image-preview"
url = f"https://generativelanguage.googleapis.com/v1beta/models/{model}:generateContent?key={GEMINI_API_KEY}"
prompt = """A professional photograph of a modern co-working space in
Newcastle, Australia. Natural light floods through floor-to-ceiling
windows. Three people collaborate at a standing desk — one pointing
at a laptop screen. Exposed brick wall, potted fiddle-leaf fig,
coffee cups on the desk. Shot at 35mm f/4.0, environmental portrait
style. No text, no watermarks, no logos."""
payload = json.dumps({
"contents": [{"parts": [{"text": prompt}]}],
"generationConfig": {
"responseModalities": ["TEXT", "IMAGE"],
"temperature": 0.8
}
}).encode()
req = urllib.request.Request(url, data=payload, headers={
"Content-Type": "application/json",
"User-Agent": "ImageGen/1.0"
})
resp = urllib.request.urlopen(req, timeout=120)
result = json.loads(resp.read())
# Extract image from response
for part in result["candidates"][0]["content"]["parts"]:
if "inlineData" in part:
img_data = base64.b64decode(part["inlineData"]["data"])
output_path = "hero-image.png"
with open(output_path, "wb") as f:
f.write(img_data)
print(f"Saved: {output_path} ({len(img_data):,} bytes)")
break
PYEOF
GPT Image 1.5 — 透明图标
仅在需要透明 PNG 时使用 gpt-image-1.5。GPT Image 2 不支持透明效果。
python3 << 'PYEOF'
import json, base64, urllib.request, os, sys
OPENAI_API_KEY = os.environ.get("OPENAI_API_KEY")
if not OPENAI_API_KEY:
print("Set OPENAI_API_KEY environment variable"); sys.exit(1)
url = "https://api.openai.com/v1/images/generations"
payload = json.dumps({
"model": "gpt-image-1.5",
"prompt": "A minimal, clean plumbing wrench icon. Flat design, single consistent stroke weight, modern style. On a transparent background.",
"n": 1,
"size": "1024x1024",
"background": "transparent",
"output_format": "png"
}).encode()
req = urllib.request.Request(url, data=payload, headers={
"Content-Type": "application/json",
"Authorization": f"Bearer {OPENAI_API_KEY}"
})
resp = urllib.request.urlopen(req, timeout=120)
result = json.loads(resp.read())
img_data = base64.b64decode(result["data"][0]["b64_json"])
with open("icon-wrench.png", "wb") as f:
f.write(img_data)
print(f"Saved: icon-wrench.png ({len(img_data):,} bytes)")
PYEOF
GPT Image 2 — 文字密集型内容或批量变体
需要清晰呈现文字,或想在一次调用中生成 10 个变体时,请使用 gpt-image-2。不支持透明效果——如果需要透明背景,请使用上面的 1.5。
python3 << 'PYEOF'
import json, base64, urllib.request, os, sys, pathlib
OPENAI_API_KEY = os.environ.get("OPENAI_API_KEY")
if not OPENAI_API_KEY:
print("Set OPENAI_API_KEY environment variable"); sys.exit(1)
url = "https://api.openai.com/v1/images/generations"
# 10-variation batch of a pricing card with rendered text
payload = json.dumps({
"model": "gpt-image-2",
"prompt": (
"A modern pricing card for a web hosting plan. "
"Headline 'Starter' in bold sans-serif. "
"Price '$29/month' directly below in large type. "
"Three feature lines: 'Unlimited bandwidth', 'SSD storage', 'Free SSL'. "
"Clean flat design, soft drop shadow, deep blue accent colour. "
"White card on light grey background."
),
"n": 10,
"size": "1024x1024",
"quality": "medium",
"output_format": "png"
}).encode()
req = urllib.request.Request(url, data=payload, headers={
"Content-Type": "application/json",
"Authorization": f"Bearer {OPENAI_API_KEY}"
})
# Timeout: up to 2 min for complex prompts
resp = urllib.request.urlopen(req, timeout=180)
result = json.loads(resp.read())
pathlib.Path("variations").mkdir(exist_ok=True)
for i, item in enumerate(result["data"], 1):
img_data = base64.b64decode(item["b64_json"])
path = f"variations/pricing-card-{i:02d}.png"
with open(path, "wb") as f:
f.write(img_data)
print(f"Saved: {path} ({len(img_data):,} bytes)")
print(f"\nGenerated {len(result['data'])} variants. Pick the best; delete the rest.")
PYEOF
批量工作流:生成 10 个 → 并排审阅 → 选出 1–2 个 → 可选:针对胜出方向使用更严格的提示词重新生成。比单次生成后再迭代更快。
4. 保存并优化
将生成的图像保存到 .jez/artifacts/ 或用户指定的路径。
后期处理(可选):
# Convert to WebP for web use
python3 -c "
from PIL import Image
img = Image.open('hero-image.png')
img.save('hero-image.webp', 'WEBP', quality=85)
print(f'WebP: {img.size[0]}x{img.size[1]}')
"
# Trim whitespace from transparent icons
python3 -c "
from PIL import Image
img = Image.open('icon.png')
trimmed = img.crop(img.getbbox())
trimmed.save('icon-trimmed.png')
"
5. 质量检查(可选)
将生成的图像发送给视觉模型进行 QA:
# Send to Gemini Flash for critique
critique_prompt = """Review this image for:
1. AI artifacts (extra fingers, floating objects, text errors)
2. Technical accuracy (wrong equipment, unsafe positioning)
3. Composition issues (awkward cropping, cluttered background)
4. Style consistency with a professional stock photo
List any issues found, or say 'PASS' if the image is production-ready."""
如果发现问题,请将其作为反向指导补充到原始提示词中,然后重新生成。
多轮编辑
Gemini 支持在多轮对话中编辑已生成的图像。关键要求:保留模型响应中的 thought signatures。
# Turn 1: Generate base image
contents = [{"role": "user", "parts": [{"text": "Scene prompt..."}]}]
# The response includes thoughtSignature on parts — preserve them ALL
# Turn 2: Edit the image
contents = [
{"role": "user", "parts": [{"text": "Original prompt"}]},
{"role": "model", "parts": response_parts_with_signatures}, # Keep intact
{"role": "user", "parts": [{"text": "Edit: change the wall colour to blue. Keep everything else exactly the same."}]}
]
编辑提示词模式:始终明确说明要保持不变的内容,而不只是说明要修改什么。未列出的元素都可以由模型自由修改。
GOOD: "Edit this image: keep the people, desk, and window unchanged.
Only change: wall colour from terracotta to ocean blue."
BAD: "Now make the wall blue."
(Model may change everything else too)
API 密钥设置
| 提供商 | 获取密钥 | 环境变量 |
|---|---|---|
| Google Gemini | aistudio.google.com | GEMINI_API_KEY |
| OpenAI | platform.openai.com | OPENAI_API_KEY |
export GEMINI_API_KEY="your-key-here"
export OPENAI_API_KEY="your-key-here"
常见错误
| 错误 | 修正方法 |
|---|---|
| 用 curl 编写 Gemini 提示词 | 使用 Python — shell 转义会在撇号处出错 |
| 使用“美观、专业、高质量”之类的描述 | 使用具体规格:“85mm f/1.8,黄金时段光线” |
| 未说明要排除的内容 | 始终以“No text, no watermarks, no logos”结尾 |
| 要求 Gemini 生成透明 PNG | Gemini 不支持透明背景 — 使用 GPT Image 1.5,并设置 background: "transparent" |
| 要求 GPT Image 2 生成透明 PNG | GPT Image 2 不支持透明背景 — 仅在此情况下改用 gpt-image-1.5 |
| 使用 GPT Image 1.5 在图像中生成文字 | GPT Image 1.5 的文字渲染不可靠 — 任何需要清晰可读文字的场景都使用 gpt-image-2 |
| 阻塞等待 GPT Image 2 的请求 | 复杂提示词的生成最多可能需要 2 min — 使用 180s 超时,并构建异步 UX |
| 为澳大利亚企业使用美国默认设置 | 明确指定“Australian”以及当地的建筑和植被 |
| 使用通用数据填写模型 ID | 核实当前模型 ID — 它们经常变化 |