Gemini3的上线引爆网络,而其内置的nanobanana2模型更是让AI绘图变得触手可及。今天我们就来学习如何在N8N中搭建一个完整的nanobanana自动绘图工作流。

工作流概述

这个工作流基于本地docker部署N8N环境,实现了从接收用户输入到生成AI图片的完整自动化流程。当用户发送聊天消息后,系统会自动调用nanobanana模型生成图片,并保存到本地文件夹。

运行效果:

核心节点详解

  1. 聊天消息触发器(When chat message received)

作用: 工作流的起点,等待用户输入

聊天触发器节点,当有新的聊天消息传入时,自动启动工作流。它会将用户输入的内容(如"画一只小猫")传递给下一个节点。

知识点: 在N8N中,触发器节点通常位于工作流开头,负责监听特定事件并启动流程执行。

  1. nanobanana生图节点(HTTP请求)

核心配置:

  • 方法: POST

  • URL: https://api.kie.ai/api/v1/jobs/createTask

  • 认证: HTTP头部认证

  • 请求体: JSON格式

这个节点是工作流的核心,负责向nanobanana API提交绘图任务。我使用了KIE这个API中转站里的nanobanana服务(https://kie.ai/nano-banana),价格便宜,一张图不到1毛钱,你也可以直接走官方API。

关键配置包括:

{ "model": "google/nano-banana", "callBackUrl": "", "input": { "prompt": "Help me generate exactly ttwo doodle-style “teaching cards” that explain the concept of “{{ $json.chatInput }}” to kindergarten students. Use a consistent, colorful, thick-pencil hand-drawn style. Each card must be information-rich, use a solid-color background, include a card-style outline, and have a uniform title—similar to a PowerPoint slide. All text must be in ENGLISH only. Keep titles, labels, and body text clear and readable.", "output_format": "png", "image_size": "21:9" } }

知识点: 注意{{ $json.chatInput }}是N8N的表达式语法,它会从上一个节点获取chatInput字段的值动态插入到提示词中。

  1. 等待节点(Wait)

参数: 等待30秒

由于AI绘图需要处理时间,这个节点让工作流暂停30秒,等待nanobanana完成图片生成。

设计逻辑: 轮询机制中常见的"等待-检查"模式,避免频繁请求API。

  1. 查询任务状态(HTTP请求)

URL: https://api.kie.ai/api/v1/jobs/recordInfo?taskId={{ $json.data.taskId }}

通过动态构建的URL查询任务状态,其中taskId来自生图节点的响应数据。

  1. 条件判断节点(If)

条件: $json.data.resultJson不为空

检查任务是否完成——如果resultJson字段有值,说明图片已生成成功。

  1. 获取图片链接(Code节点)

功能: 从API响应中提取图片URL

这个JavaScript代码节点解析返回的JSON数据,提取出生成的图片链接:

const response = $input.all()[0].json; // 解析resultJson字符串为JSON对象 const resultJson = JSON.parse(response.data.resultJson); // 提取第一个图片URL const imageUrl = resultJson.resultUrls[0]; // 返回结果 return { image_url: imageUrl, task_id: response.data.taskId, status: "completed" };
  1. 链接转文件(HTTP请求)

作用: 下载图片文件

{{ $json.image_url }}

根据获取的图片URL下载实际的图片文件,设置为文件格式响应。

  1. 文件保存(Read/Write Files from Disk)

文件名: /app/downloads/{{ $('When chat message received').item.json.chatInput }}.png

将下载的图片保存到本地,文件名基于用户最初的输入内容动态生成。

注意,本教程基于本地部署N8N的情形,此处/app/downloads/是容器内路径,通过Docker「卷 / 挂载」映射,非本地路径,实际下载后会保存在我的Mac电脑的Downloads文件夹下。

补充:Docker 的“卷”(volume 或 bind-mount)指的是:把宿主机的一个目录(或具名卷)映射到容器内的一个路径,使容器写文件时实际落在宿主机上,容器被删数据也不丢。

语法:宿主机路径:容器内路径[:选项] 选项常见 ro 只读、rw 读写(默认)。路径必须是绝对路径。

比如,我的docker对应的compose文件里写的:

volumes: - /Users/lavida/Downloads:/app/downloads

宿主机 /Users/lavida/Downloads ↔ 容器 /app/downloads

工作流执行流程

  1. 触发 → 用户发送消息

  2. 提交任务 → 调用nanobanana API

  3. 等待处理 → 暂停20秒

  4. 状态检查 → 查询任务进度

  5. 结果判断 → 检查是否完成

  6. 数据处理 → 提取图片链接

  7. 文件下载 → 获取图片文件

  8. 本地保存 → 存储到指定目录

技术要点总结

  • 认证方式: 使用HTTP头部认证,凭证名为"KIE的API"

  • 错误处理: 通过条件判断实现简单的重试机制

  • 文件命名: 采用动态文件名,便于后续查找和管理

  • 异步处理: 合理的等待时间设置,平衡响应速度和成功率

这个工作流展示了N8N在AI自动化方面的强大能力,即使是技术小白也能通过拖拽节点的方式构建复杂的AI应用流程。学会了这个基础框架后,你可以进一步扩展功能,比如添加图片预览、格式转换或批量处理等高级特性。

赶紧动手试试吧,让你的第一个nanobanana绘图工作流转起来!

 

【关于我】

我拥有10年互联网运营经验,曾经也是技术小白,现专注研究AI自动化。这里没有难懂的技术黑话,只有一步步的可视化操作。跟我学,让你每天轻松“少干1小时”,用AI自动化效率甩开同龄人!感兴趣请扫码添加我的个人公众号,持续更新更多新手友好的实用案例~比飞书更早更新!

公众号id同名,搜索即可。

 

 

 

 

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐