今天要分享一個更進階的案例:使用者輸入一段文字 → Gemini 生成圖像 → 自動上傳到 Discord。這不僅能用於娛樂,還能成為社群小幫手、自動生成插圖的工具。
這個流程會用到 4 個主要節點:
下面我會逐一拆解節點設定。
這是 Workflow 的觸發器。
@n8n/n8n-nodes-langchain.chatTrigger
這個 node 的作用是讓我們可以在 n8n 的 chat UI(或 webhook)輸入一段 prompt,並將其存放在 {{$json.chatInput}}
變數中。
這個節點用來呼叫 Gemini Streaming Image Generation API。
Node Type:HTTP Request
Method:POST
URL:
https://aiplatform.googleapis.com/v1/publishers/google/models/gemini-2.0-flash-preview-image-generation:streamGenerateContent?key=YOUR_API_KEY
Headers:
Content-Type: application/json
Body(JSON 模式):
{
"contents": [
{
"role": "user",
"parts": [
{
"text": "{{ $json.chatInput }}"
}
]
}
]
}
⚠️ 注意:這裡要換成你自己的 Google API Key。
Gemini 的回應是 streaming,可能會包含文字(part.text
)和圖片(part.inlineData.data
)。這裡需要寫一段 JS 來解析。
程式碼如下:
// 遍歷所有輸入項,因為 Gemini 是 streaming response
let imageData = null;
let textContent = '';
let mimeType = 'image/png';
for (const item of $input.all()) {
const response = item.json;
if (!response.candidates || response.candidates.length === 0) continue;
const candidate = response.candidates[0];
if (!candidate.content || !candidate.content.parts) continue;
for (const part of candidate.content.parts) {
if (part.text) {
textContent += part.text;
}
if (part.inlineData && part.inlineData.data) {
imageData = part.inlineData.data;
mimeType = part.inlineData.mimeType || 'image/png';
}
}
}
if (!imageData) {
throw new Error('在所有回應中沒有找到 inlineData 圖片數據');
}
const buffer = Buffer.from(imageData, 'base64');
const extension = mimeType.includes('jpeg') ? 'jpg' : 'png';
const fileName = `gemini_generated.${extension}`;
return {
json: {
content: textContent || "Gemini 生成的圖片"
},
binary: {
data: { // 對應 Discord node 的檔案欄位
data: buffer,
mimeType,
fileName
}
}
};
這段程式做的事:
candidate
。inlineData
,取出圖像的 base64,轉成 Buffer。json.content
(要貼到 Discord 的文字)和 binary.data
(圖檔)。最後一個節點,把文字和圖像送到 Discord。
Node Type:Discord
Authentication:Webhook
Webhook URL:填入 Discord 提供的 Webhook
Content:
{{$json["content"]}}
Files:
data
這樣 Discord 就會收到一則訊息,包含一段文字與一張 AI 生成的圖像。
在 chat 輸入:
畫一隻在月球上彈吉他的貓
Workflow 執行,Gemini 生成一張圖片與簡短描述。
Discord 收到訊息:
Gemini 的文字敘述
Day14 完成了一個實用又酷炫的 workflow:輸入一句 prompt,AI 就能生成圖片並自動貼到 Discord。這個流程可以拿來做成 社群小幫手,或是 快速生成貼圖 / 靈感草稿 的工具。
Day15 會繼續探索 Gemini AI × 自動化客戶回饋分析與即時警報,學會如何用 AI 把文字資料整理成有用的結構!