nano-banana-pro 是一个图像生成与编辑技能,调用 Google 的 Nano Banana Pro API(Gemini 3 Pro Image),用于生成新图像或编辑现有图像。
用途
该技能面向图像创建与修改请求,支持文本生成图像(text-to-image)和图像到图像(image-to-image)。可执行的编辑任务包括:添加或删除元素、改变风格、调整颜色、虚化背景等。
主要能力
- 分辨率支持:Gemini 3 Pro Image API 支持三种分辨率,且必须使用大写 K:1K(默认,约 1024px)、2K(约 2048px)、4K(约 4096px)。
- 分辨率映射规则:用户未提及分辨率时用 1K;提到“low resolution”“1080”“1080p”“1K”时用 1K;提到“2K”“2048”“normal”“medium resolution”时用 2K;提到“high resolution”“high-res”“hi-res”“4K”“ultra”时用 4K。
- API Key 读取顺序:优先使用 --api-key 参数(适用于用户在对话中提供了密钥),其次使用 GEMINI_API_KEY 环境变量;两者都不可用时脚本会报错退出。
使用方式
脚本需使用绝对路径运行,不要先切换到技能目录:
生成新图像: uv run ~/.codex/skills/nano-banana-pro/scripts/generate_image.py --prompt "your image description" --filename "output-name.png" [--resolution 1K|2K|4K] [--api-key KEY]
编辑现有图像: uv run ~/.codex/skills/nano-banana-pro/scripts/generate_image.py --prompt "editing instructions" --filename "output-name.png" --input-image "path/to/input.png" [--resolution 1K|2K|4K] [--api-key KEY]
重要提示:应始终在用户当前工作目录下运行,使图像保存在用户的工作目录中,而不是技能目录里。
推荐工作流(草稿 → 迭代 → 成品)
目标是在提示词确定前避免在 4K 上浪费时间。
- 草稿(1K):快速反馈循环。示例:uv run ~/.codex/skills/nano-banana-pro/scripts/generate_image.py --prompt "<draft prompt>" --filename "yyyy-mm-dd-hh-mm-ss-draft.png" --resolution 1K
- 迭代:以小幅差异调整提示词;每次运行使用新文件名。若为编辑模式,在满意之前保持使用同一个 --input-image。
- 成品(4K):仅在提示词锁定后使用。示例:uv run ~/.codex/skills/nano-banana-pro/scripts/generate_image.py --prompt "<final prompt>" --filename "yyyy-mm-dd-hh-mm-ss-final.png" --resolution 4K
预检与常见失败
预检:
- command -v uv(必须存在)
- test -n "$GEMINI_API_KEY"(或传入 --api-key)
- 若为编辑,test -f "path/to/input.png"
常见失败与处理:
- Error: No API key provided. → 设置 GEMINI_API_KEY 或传入 --api-key
- Error loading input image: → 路径错误或文件不可读;确认 --input-image 指向真实图像
- “quota/permission/403”类 API 错误 → 密钥错误、无访问权限或配额超限;可尝试其他密钥或账户
文件命名
命名模式:yyyy-mm-dd-hh-mm-ss-name.png,即 {timestamp}-{descriptive-name}.png。
- Timestamp:当前日期时间,格式为 yyyy-mm-dd-hh-mm-ss(24 小时制)
- Name:描述性小写文本,用连字符分隔,通常保持 1-5 个词,简洁明了
- 可从用户提示词或对话中获取上下文;若不清晰,使用随机标识(如 x9k2、a7b3)
示例:
- 提示词“A serene Japanese garden” → 2025-11-23-14-23-05-japanese-garden.png
- 提示词“sunset over mountains” → 2025-11-23-15-30-12-sunset-mountains.png
- 提示词“create an image of a robot” → 2025-11-23-16-45-33-robot.png
- 上下文不清晰 → 2025-11-23-17-12-48-x9k2.png
图像编辑
当用户想修改现有图像时:
- 检查是否提供了图像路径,或引用当前目录中的图像
- 使用 --input-image 参数并传入图像路径
- 提示词应包含编辑指令(如“make the sky more dramatic”“remove the person”“change to cartoon style”)
- 常见编辑任务:添加/删除元素、改变风格、调整颜色、虚化背景等
提示词处理
- 生成时:将用户的图像描述原样传给 --prompt,仅在明显不足时才改写。
- 编辑时:将编辑指令传入 --prompt(如“add a rainbow in the sky”“make it look like a watercolor painting”)。
- 两种情况都应保留用户的创作意图。
提示词模板(高命中率)
当用户表述模糊或编辑需要精确时使用模板。
生成模板:“Create an image of: . Style: . Composition: <camera/shot>. Lighting: . Background: . Color palette: . Avoid: .”
编辑模板(保留其余一切):“Change ONLY: . Keep identical: subject, composition/crop, pose, lighting, color palette, background, text, and overall style. Do not add new objects. If text exists, keep it unchanged.”
输出
- 将 PNG 保存到当前目录(若文件名含目录则保存到指定路径)
- 脚本输出生成图像的完整路径
- 不要回读图像,只需告知用户保存路径
示例
生成新图像: uv run ~/.codex/skills/nano-banana-pro/scripts/generate_image.py --prompt "A serene Japanese garden with cherry blossoms" --filename "2025-11-23-14-23-05-japanese-garden.png" --resolution 4K
编辑现有图像: uv run ~/.codex/skills/nano-banana-pro/scripts/generate_image.py --prompt "make the sky more dramatic with storm clouds" --filename "2025-11-23-14-25-30-dramatic-sky.png" --input-image "original-photo.jpg" --resolution 2K
限制
资料中未提供关于价格、免费额度、调用频率上限、支持平台、底层模型具体细节或效果保证的信息,这些内容暂未提供。API 使用可能受配额、权限或密钥有效性限制。