gen-image
Nano Banana 图像生成 Skill
API 配置
环境变量:
NANO_BANANA_API_KEY: API Key(必填)NANO_BANANA_BASE_URL: Base URL(可选)
API Key 缺失处理:
执行任何图像命令前,先检查环境变量是否已设置:
echo $NANO_BANANA_API_KEY
若为空,停止操作,告知用户:
NANO_BANANA_API_KEY未配置。请在系统全局环境变量中添加:export NANO_BANANA_API_KEY="sk-your-api-key"写入
~/.zshrc或~/.bashrc后,重新启动终端(或重启 IDE/Agent),再重试。
核心参数
| 参数 | 值 | 说明 |
|---|---|---|
imageConfig.aspectRatio |
见下方 | 可选,默认 1:1 |
imageConfig.imageSize |
512 / 1K / 2K / 4K |
可选,默认 1K |
支持的宽高比(14种): 1:1 2:3 3:2 3:4 4:3 4:5 5:4 9:16 16:9 21:9 1:4 4:1 1:8 8:1
脚本: scripts/image.mjs
全局选项:
--key <key>: API Key(或NANO_BANANA_API_KEY)--base-url <url>: Base URL(或NANO_BANANA_BASE_URL)--model <model>: 模型名称(或NANO_BANANA_MODEL)
gen — 文生图
node scripts/image.mjs gen "prompt" [--aspect 16:9] [--size 1K] [-o output.png]
--aspect: 宽高比(默认 1:1)--size: 分辨率 512/1K/2K/4K(默认 1K)-o: 输出路径(默认 images/output.png)
edit — 编辑图片
# 单张
node scripts/image.mjs edit input.png "编辑指令" [-o output.png]
# 多张(最后一个位置参数为 prompt)
node scripts/image.mjs edit a.png b.png "融合两张图的风格" -o merged.png
# 多张(-p 指定 prompt,所有位置参数均为图片)
node scripts/image.mjs edit a.png b.png c.png -p "合并三张图的元素" -o result.png
input...: 输入图片(一或多个)prompt: 编辑指令(最后位置参数,或-p)--aspect: 宽高比(默认保持原图)--size: 输出分辨率(默认 2K)-o: 输出路径(默认 images/edited.png)
常见指令:
| 场景 | 示例 |
|---|---|
| 添加元素 | "Add a rose flower in the bottom right corner" |
| 背景替换 | "Replace the background with a neon-lit city street at night" |
| 风格迁移 | "Convert to watercolor style, preserve original composition" |
| 局部修改 | "Change the person's clothing color to red" |
| 删除元素 | "Remove the text watermark and fill in the background" |
提示词工程核心理念
核心原则:结构化描述 + 精确控制 + 风格一致
成功的图像生成依赖多层次、结构化的提示词写作,而非简单的一句话描述。通过清晰的层次结构、精确的参数、专业术语和具体约束,引导 AI 生成符合预期的高质量图像。
四层描述架构
- 核心意图层:一句话概括要做什么("生成一张……图像")
- 细节约束层:具体元素、布局、位置的详细描述
- 风格质感层:艺术风格、材质、光照、色彩方案
- 技术参数层:分辨率、宽高比、渲染质量等
提示词黄金法则
- ✅ 具体化而非抽象化:描述材质、颜色、尺寸,而非"漂亮"
- ✅ 位置化而非模糊化:指定"放在左上角……"而非"在背景中"
- ✅ 数值化而非估计化:使用精确坐标、百分比、尺寸
- ✅ 分层描述而非堆砌:用前景/中景/背景分层描述
- ✅ 专业术语:使用行业词汇("bokeh"、"isometric"、"material")
- ✅ 否定约束:明确说明不包含的内容("无文字"、"无阴影")
- ✅ 引用整合:明确说明参考输入图像的哪个部分
结构化提示词模板
按需填写,不必全填,留空的层级直接省略:
[核心意图] 一句话概括目标
[主体] 对象 + 位置 + 姿态/表情
[场景] 前景 / 中景 / 背景
[风格] 艺术风格 + 材质 + 光照 + 色彩
[技术] 比例 + 分辨率 + 渲染方式(如 C4D/照片写实)
[约束] 必须包含 / 禁止出现 / 必须保持
提示词优化技巧
- 具体化:❌ "一个漂亮的女孩" → ✅ "一个25岁的亚洲女性,黑色长发,穿着白色连衣裙,站在樱花树下"
- 位置化:❌ "有些人物在背景中" → ✅ "中景左侧站立2个人,前景右侧坐着1个人"
- 数值化:❌ "很多星星" → ✅ "大约5到10颗星星组成星座"
- 分层描述:❌ "房子、树、人、天空、云" → ✅ "前景:一个人站在房子前;中景:大树和房子;背景:蓝天和云朵"
- 专业术语:❌ "模糊的背景" → ✅ "浅景深,背景柔和模糊(bokeh)"
- 否定约束:❌ "不要太复杂" → ✅ "无多余装饰,无渐变,无文字"
常见错误与解决方案
| 错误类型 | 问题表现 | 解决方案 |
|---|---|---|
| 过于简单 | 一句话描述,缺少细节 | 使用四层架构,分层描述 |
| 模糊不清 | 使用"漂亮"、"好"等模糊词 | 使用具体的视觉描述和材质 |
| 信息冲突 | 前后矛盾的要求 | 检查逻辑一致性,统一要求 |
| 缺少约束 | 结果偏离预期 | 添加明确的约束条件 |
| 忽略风格 | 结果风格不统一 | 明确指定艺术风格和风格特征 |
生成工作流程
- 确定核心目标:一句话概括要做什么
- 分析参考图像:理解参考图像的特征和用途
- 分层构建描述:前景/中景/背景,主体/环境/风格
- 添加细节约束:位置、姿态、表情、材质
- 指定技术参数:分辨率、比例、风格
- 设置约束条件:必须包含、禁止出现、保持不变
- 审查和优化:检查逻辑一致性、信息完整性
场景分类与提示词模板
按需读取对应模板文件:
| 文件 | 场景类型 |
|---|---|
| 01-角色与人物类 | 角色克隆、表情变换、年龄估算等 |
| 02-风格转换与艺术创作 | 浮世绘、涂鸦、水晶材质等 |
| 03-产品与商业设计 | 产品包装、微缩场景、广告摄影等 |
| 04-信息可视化与图表 | 信息图表、教育连环画、关系图等 |
| 05-技术与结构可视化 | 爆炸分解图、材质球、全息投影等 |
| 06-场景与环境设计 | 时空生成、历史场景、主题公园等 |
| 07-图像修复与编辑 | 照片编辑、老照片修复、去除元素等 |
| 08-创意与趣味效果 | 卡通爆炸、鱼眼效果、电影海报等 |
| 09-实用功能型图像 | 证件照、地图生成、表情包等 |
| 10-多图像融合与参考 | 多图合成、跨视角、面部控制等 |
关键词速查表
风格类:照片写实、3D渲染、手绘、油画、水彩、浮世绘、涂鸦、漫画、像素艺术、扁平化设计、极简主义、赛博朋克、蒸汽朋克、奇幻、科幻、复古、抽象、印象派
质感类:光滑、粗糙、哑光、反光、透明、半透明、磨砂、绒面、金属、木材、大理石、水晶、玻璃、塑料、织物、皮革、陶瓷
光照类:自然光、日光、工作室光照、戏剧性光照、柔和光照、强对比、侧光、背光、轮廓光、体积光
视角类:平视、俯视、仰视、鸟瞰、广角、长焦、微距、等轴测(isometric)、鱼眼、全景
情绪类:愉快、悲伤、平静、紧张、兴奋、忧郁、温馨、恐怖、神秘、浪漫
构图类:居中、三分法、黄金比例、对称、不对称、对角线、引导线、框架、留白
按场景的句式模板
文生图(gen):
- 产品图:
"[产品名],[颜色/材质],白色背景,工作室灯光,产品摄影风格,无阴影" - 人物图:
"[年龄/性别/特征],[服装],[场景],[光照],[风格],无文字" - 场景图:
"[时间/天气],[主场景],前景[元素],中景[元素],背景[元素],[色彩风格]" - 概念图:
"[主题]的[视角]视图,等轴测/俯视/爆炸分解,[配色方案],[渲染风格]"
图片编辑(edit):
- 添加元素:
"Keep everything unchanged. Add [元素] at [位置], matching existing style and lighting" - 替换背景:
"Replace background with [新背景描述], preserve subject and lighting direction" - 风格迁移:
"Convert to [目标风格], preserve original composition and subject identity" - 去除元素:
"Remove [元素], fill with contextually appropriate background" - 多图融合:
"Merge style of image1 with content of image2, [融合比例或重点]"
工作流指导
批量试稿
需要让用户从多个候选中挑选时,循环多次调用 gen,使用低分辨率(--size 512)降低成本:
for i in 1 2 3 4; do
node scripts/image.mjs gen "prompt" --size 512 --aspect 1:1 -o images/roll_$i.png
done
生成完毕后展示给用户,由用户指定满意的版本再升清晰度。
图片放大
对已有图片提升分辨率,使用 edit + 放大指令:
node scripts/image.mjs edit input.png \
-p "Upscale and enhance clarity while preserving original style and composition" \
--size 4K -o output_4k.png
4K 分辨率请求耗时较长,建议提前告知用户。
环境变量配置
export NANO_BANANA_API_KEY="sk-your-api-key"
Prompt 示例
完整示例见 references/prompt-examples.md,包含 9 个场景示例(文生图 / 图片编辑),每个示例附有命令、宽高比、分辨率参数。