关于 nano-banana
nano-banana 是通过 Google Gemini 图像生成 API 创建和编辑图像的命令行技能,面向需要按提示词生成视觉素材的人。它提供风格与平台预设、批量变体、参考图和项目历史管理。
主要功能
- 01文本生成与图像编辑
- 02风格和平台尺寸预设
- 03并行生成变体及联系表
- 04参考图引导风格
- 05项目输出与生成历史
适用场景
- 01为文章、演示文稿或社交媒体制作插图
- 02基于现有图像执行文本指令编辑
- 03用参考图统一多个图像的美术风格
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ glebis/ claude-skills --skill nano-banana安装后在 Claude Code 中输入/nano-banana确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
platforms.yamlpresets.yamlsecrets.enc.yaml.claude-plugin/plugin.jsonreferences/api_reference.mdscripts/generate_image.shnano_banana.py详细介绍
Nano Banana - Gemini 图像生成
通过 Google 的 Gemini 图像生成 API,根据文本提示词生成和编辑图像。
适用场景
- 用户要求根据文本描述生成、创建或制作图像
- 使用文本指令编辑现有图像
- 风格迁移:生成与参考图美学风格一致的新图像
- 为演示文稿、文章、缩略图和社交媒体帖子创建插图
- 为同一概念批量生成变体
首次设置
scripts/nano_banana.py init
向导会检查依赖项(sops、age、magick),验证 API 密钥,并将默认设置保存到 ~/.config/nano-banana/config.yaml。
快速开始
# Simple generation
scripts/nano_banana.py "a minimalist illustration of a rocket" ./rocket.png
# With style preset
scripts/nano_banana.py --preset editorial "interconnected nodes" ./nodes.png
# YouTube thumbnail (auto-cropped to 1280x720)
scripts/nano_banana.py --preset grain --platform youtube "coffee on desk" ./thumb.png
# Generate 4 variants + contact sheet
scripts/nano_banana.py --preset wireframe "a crystal" ./crystal.png --n 4
# Edit existing image
scripts/nano_banana.py --edit ./old.png "make the background deep teal" ./new.png
# Style reference (match aesthetic of existing image)
scripts/nano_banana.py --reference ./style.png "a new mountain landscape" ./mountain.png
# Re-roll last prompt
scripts/nano_banana.py again
# View history
scripts/nano_banana.py history -n 10
要求
GEMINI_API_KEY— 通过 SOPS + age 从secrets.enc.yaml自动解密。备用方式:export GEMINI_API_KEY=...sops、age— 用于解密密钥magick(ImageMagick) — 用于适配平台尺寸和制作联系表- 带有
pyyaml的python3
模型
| 模型 | 别名 | Nano Banana 名称 | 适用场景 |
|---|---|---|---|
gemini-3.1-flash-image-preview(默认) | flash | Nano Banana 2 | 指令遵循效果最佳,速度快 |
gemini-3-pro-image-preview | pro | Nano Banana Pro | 质量最高,可在图像中生成文本 |
gemini-2.5-flash-image | flash-2.5 | Nano Banana(原版) | 旧版 |
使用 --model flash|pro|flash-2.5 或完整 ID。
风格预设
scripts/nano_banana.py list-presets
scripts/nano_banana.py --preset editorial "your subject" out.png
| 预设 | 风格 |
|---|---|
editorial | 黑底细线、低饱和配色,带有技术图表的感觉 |
blueprint | 深海军蓝底上的白色/青色线条,工程制图风格 |
ink | 日本水墨画风格,有机笔触,单色 |
risograph | 平涂色彩、颗粒感、陶土色 + 鼠尾草绿,独立杂志美学 |
wireframe | 3D 线框网格,黑底发光边缘 |
constellation | 星图圆点由浅色线条相连,天体风格 |
brutalist | 大胆形状、粗边框、硬阴影、平涂色彩 |
grain | 胶片颗粒感照片、高 ISO、温暖的电影色调 |
在 presets.yaml 中定义 — 可编辑以添加自定义预设。
平台预设
scripts/nano_banana.py list-platforms
scripts/nano_banana.py --platform youtube "your subject" out.png
生成的图像会自动调整大小并居中裁剪,以适配目标尺寸。
| 平台 | 尺寸 |
|---|---|
youtube | 1280×720 |
youtube-short | 1080×1920 |
slides | 1920×1080 |
blog | 1200×630 |
x | 1600×900 |
square | 1080×1080 |
story | 1080×1920 |
pinterest | 1000×1500 |
功能
变体 + 联系表
--n N 会并行生成 N 个变体,并将它们拼成联系表:
scripts/nano_banana.py --preset ink "mountain" ./mt.png --n 6
# Creates mt-01.png ... mt-06.png + mt-contact.png
批量生成(宣传活动/多版本广告组)
当每个输出都需要不同的文本或提示词(例如,一组风格统一的广告)时,可遍历列表。--n 在这里帮不上忙 — 它会对同一个提示词重新生成。请使用共享的 $STYLE 字符串和逐项数组。
cd /abs/output/dir
REF="_reference.png" # optional style anchor
STYLE="<shared visual-style description, written once>"
# Each entry: pipe-delimited fields + output filename. NAME the array — see gotchas.
ADS=(
"CALL NOW|FOR TOTAL|CONFIDENTIALITY|ad-callnow.png"
"REDACT|BEFORE|YOU SEND|ad-redact.png"
)
for entry in "${ADS[@]}"; do
IFS='|' read -r L1 L2 L3 OUT <<< "$entry"
python3 scripts/nano_banana.py \
"$STYLE The exact text reads, on three centered lines: '$L1' / '$L2' / '$L3'. Spell every word correctly." \
"$OUT" --reference "$REF" --platform youtube --model pro --no-metadata --project NAME
done
Shell 注意事项(这是 macOS 上的 zsh——这些问题总会踩到):
- 切勿将循环数组命名为
LINES、COLUMNS、PATH、path、status、argv等。 — zsh 保留了这些名称。LINES=(...)会报错can't assign array value to non-array special。请使用ADS、ITEMS、JOBS。 - zsh 不会像 bash 一样对未加引号的变量进行分词。
CMD="magick montage"; $CMD ...会尝试查找一个字面名称为 "magick montage" 的命令。不要把多词命令塞进变量 — 直接调用命令,或使用数组(cmd=(magick montage); "${cmd[@]}")。 - 始终给展开内容加引号 —
"$OUT"、"${ADS[@]}"— 路径和提示词中可能包含空格。 - 在双引号提示词中,使用
'单引号'括起你希望准确呈现的文本,以便模型逐字复现。 - 若要并行处理批次,请在每次循环迭代后追加
&,并在末尾使用wait— 但要限制并发数(API 有速率限制);超过 6 个项目时,顺序处理最稳妥。
批量处理完成后,直接调用工具(不要通过变量间接调用)来制作审核联系表:magick montage ad-*.png -tile 2x3 -geometry 480x270+6+6 -background black _contact.png。
编辑模式
传入现有图像,提示词将变为编辑指令:
scripts/nano_banana.py --edit ./thumb.png "remove the watermark, warmer colors" ./clean.png
参考图像(风格锚点)
使用一张或多张参考图像引导美学风格,但不对其进行编辑:
scripts/nano_banana.py --reference ./episode1.png --reference ./episode2.png \
"episode 3: data drift" ./ep3.png
项目 + 元数据
按项目整理输出:
scripts/nano_banana.py --project lab-04/meeting-02 --preset editorial "MCP loops" ./overlay.png
# Saves to ~/nano-banana/outputs/lab-04/meeting-02/20260414-<subject>.png + .json sidecar
重新生成 + 历史记录
scripts/nano_banana.py again # rerun last prompt
scripts/nano_banana.py history -n 20 # show last 20 generations
scripts/nano_banana.py history --project lab-04
试运行
预览组合后的提示词,不调用 API:
scripts/nano_banana.py --preset editorial --platform youtube "subject" --dry-run
临时错误与重试
API 偶尔会返回 500/INTERNAL 或空候选结果。脚本最多重试 4 次,并采用指数退避(2s、4s、8s、16s)。永久性错误(4xx、安全违规)会立即失败,不进行重试。
提示词技巧
- 指定视觉风格:"photograph"(摄影)、"flat illustration"(扁平插画)、"watercolor"(水彩)、"3D render"(3D 渲染)
- 描述构图:"centered"(居中)、"white background"(白色背景)、"wide shot"(远景)
- 指定颜色:"blue and white color scheme"(蓝白配色)、"warm earth tones"(暖土色调)
- 要渲染文本时,使用
--model pro并引用确切文本:'with the text "Hello"'
完整的 API 文档请参阅 references/api_reference.md。
文件
scripts/nano_banana.py— 主 CLI(Python)scripts/generate_image.sh— 精简的 bash 包装脚本(向后兼容)presets.yaml— 风格预设platforms.yaml— 平台尺寸预设secrets.enc.yaml— 加密的 API 密钥(SOPS + age)~/.config/nano-banana/config.yaml— 用户默认设置(来自init)~/.config/nano-banana/history.jsonl— 生成日志~/.config/nano-banana/last.json— 上次运行记录(供again使用)