個人專案 · 自動化流水線

n8n × 大模型
產品圖批量生成

試算表填一行=下一個任務。讀表、組提示詞、分流給兩個生圖模型、存雲端、回寫狀態—— 整條跑完不用人看著

n8n(自架於 Zeabur) Google Sheets ChatGPT Image 1.5 Nano Banana 2 Google Drive 帶產品原圖生成

為什麼要做這個

跨境電商上一個新品,光圖就要一整組:白底主圖、情境圖、細節特寫、使用場景。

找攝影棚拍一組,幾千塊、等一週。改個背景或換個風格,整組重來。 自己用 AI 生圖成本近乎為零,但流程長這樣:

一個品四張圖,二十個品就是八十次這種循環。 真正花時間的從來不是「生成」那幾十秒,是生成前後的搬運。

打個比方

像請了一個很強的攝影師,但每次都要你親自把產品遞過去、站著等他拍完、再親手把照片收進檔案夾。 攝影師沒問題,問題是你當了一整天的傳送帶

目標很明確:把人從傳送帶上換下來——我只負責決定「這個品要什麼風格的圖」,剩下的搬運交給流程。

它長什麼樣

n8n — 一個「把各種服務串起來」的自動化工具。畫面上是一個個方塊(節點), 用線連起來就是一條流程:這個方塊讀表格、下一個方塊呼叫 AI、再下一個存檔案。 不用從頭寫程式,但能做到程式做的事。這套跑在自己租的伺服器上(Zeabur), 不受別人方案的額度限制,憑證也在自己手上。
n8n 工作流畫布:手動觸發、讀取 Google 表格、構建提示詞、按模型分流、兩條生成路線、合併去重、更新狀態
整條流水線的真實畫布——三個階段、兩條岔路、最後匯流回表格

操作介面完全沒有另外做——就是一張 Google 試算表,每一列是一個任務:

產品圖產品名稱場景風格比例 模型自訂提示詞張數狀態
縮圖Canvas Duffle Bag辦公商務Instagram 風1:1 ChatGPT1500scenic road trip…1已處理
縮圖Polish Base Coat家居生活高端品牌1:1 Nano Banana1500精緻的日雜風2已處理

注意第一欄——產品圖 URL。這不是純文字生圖,是拿著真實產品照去生: 模型看著這張圖,把它擺進指定的場景裡。所以出來的指甲油瓶身、帆布包五金,都是自家那一個,不是模型自己編的。

Google 試算表:產品圖 URL、產品名稱、場景選擇、風格選擇、尺寸比例、模型選擇、自訂提示詞、生成張數、處理狀態
任務表本體——場景、風格、模型都是下拉選單,填表就是下指令

填完最後一行,按一次執行。回來的時候:圖在 Drive 裡、檔名對得上、狀態欄變成「已處理」。

它是怎麼運作的

整條流程三個階段,中間分兩條岔路,最後匯流回同一張表:

階段 1 · 讀取與預處理 階段 2 · 按模型分流生成 階段 3 · 合併與回寫 Google 試算表 產品圖 URL · 名稱 · 場景 風格 · 比例 · 模型 · 張數 只讀「待處理」的列 =唯一的操作介面 構建提示詞 Code 節點按欄位拼 產品+場景+風格+比例 按模型分流 Switch · 讀「模型」欄 路線 A · ChatGPT Image 1.5 HTTP 請求打 OpenAI API 回傳 Base64 → 轉成圖檔 → 上傳 Drive 路線 B · Nano Banana 2 n8n 原生節點直接生成 直接拿到圖檔 → 上傳 Drive 合併結果 兩路匯流 Merge 去重行號 同一行只算一次 更新狀態 寫回「處理成功」 狀態寫回同一張表 → 沒寫回的,下次自動重跑

畫布上的節點依序是:

手動觸發 讀取 Google 表格read: sheet 構建提示詞Code 按模型分流Switch · Rules ChatGPT 生成 → Base64 轉圖 → 上傳 Drive Nano Banana 生成 → 上傳 Drive 合併上傳結果Merge 去重行號 更新狀態update: sheet
階段 1 · 讀取與預處理
讀出待辦列,把欄位拼成提示詞
從試算表撈出狀態不是「已處理」的列,一列一個任務。 再用一個 Code 節點,把產品名稱、場景、風格、尺寸比例、自訂提示詞按固定模板拼成完整的繪圖指令。
為什麼不在表格裡直接手寫整段提示詞:欄位分開填,每張圖的結構才會一致; 想讓所有情境圖都多加一句「自然光」,改模板一次就好,不用回頭改二十列。
階段 2 · 按模型分流
這一列走哪個模型,表格說了算
Switch 節點讀「模型選擇」那一欄決定走哪條路。兩條路的工序不一樣長: ChatGPT 這邊 n8n 沒有現成節點,得自己用 HTTP 請求打 OpenAI 的 API, 回來的是一長串 Base64 文字,還要先轉成圖檔才能上傳; Nano Banana 有原生節點,生成完直接就是圖檔。
為什麼要留兩條:白底主圖、商務情境交給 ChatGPT,構圖乾淨規整; 家居日雜這種要生活感的場景交給 Nano Banana,質感更真。一列一個選擇,比全局寫死靈活。
階段 3 · 合併與回寫
兩路匯流、去重,最後寫回表格
兩條路的上傳結果先合併成一份,接著按行號去重(同一列可能生成多張、也可能被重複處理到), 最後把該列的狀態更新成「處理成功」。
為什麼去重這步不能省:一列設定生成 2 張時,回寫階段會拿到 2 筆結果, 不去重就會對同一列寫兩次狀態——輕則多打幾次 API,重則把表格寫亂。
整條流程的重點:不是「AI 會生圖」,而是把生圖前後的搬運——找任務、拼指令、轉檔、命名、歸檔、記錄進度——全部交出去。

設計上的取捨

一、不做介面,用試算表當操作台

本來可以做個網頁表單,但沒做。一個人自己用的工具,需要的不是好看的介面, 而是能一次貼二十列、能複製上一列改兩格——試算表天生就會這些, 場景和風格還能做成下拉選單,填錯的機會也少。

省下的不只是開發時間 — 沒有前端就沒有前端的 bug、沒有部署、沒有登入。要加一個參數?表格上多開一欄就好。

二、帶著產品原圖去生,而不是純文字描述

表格第一欄放的是產品圖 URL。少了這一欄,模型畫出來的會是「一個看起來像那樣的瓶子」; 有了這一欄,畫出來的是自家那一瓶——標籤、瓶蓋、五金細節都對得上。

打個比方

純文字生圖像請畫家憑口述畫你家的貓,畫得再好也不是那隻。 帶原圖等於把貓抱過去讓他照著畫,換的只是背景。

三、狀態回寫=失敗自癒

跑成功才回寫狀態,代表失敗的列狀態不會變——下次執行它還在待處理清單裡,會自動被重跑。

所謂「無人值守」不是保證不出錯,而是出錯了不用人收拾。 沒有這一步,每次執行完都得自己核對哪幾張沒生成——那還不如手動做。

四、模型選擇放在資料裡,不寫死在流程裡

做法結果
流程裡寫死用某個模型想換模型要改流程;同一批任務不能混用
表格欄位指定模型一列一個選擇,換模型=改一格;要加第三個模型,Switch 多接一條岔路就行

五、自己租伺服器跑 n8n

流程跑在 Zeabur 上自架的 n8n,不是雲端版。理由很簡單:跑量不受別人的方案限制, 憑證和資料都在自己手上,要接什麼服務都行。

一句話:自動化的門檻不在「會不會接 API」,在於有沒有想清楚失敗的時候誰來收拾

實際產出

兩個品、兩條路線、兩種味道——都是同一張表跑出來的:

Google Drive 資料夾裡 Nano Banana 生成的指甲油日雜風情境圖
Nano Banana 路線:指甲油底油 × 家居生活 × 日雜風——同一瓶產品換八個場景
Google Drive 資料夾裡 ChatGPT Image 1.5 生成的帆布包商務情境圖
ChatGPT 路線:帆布旅行袋 × 辦公商務 × Instagram 風
0
行前端程式碼
2
個生圖模型按列分流
1
次點擊跑完整張表

換算成人工

原本一張圖要「上傳原圖 → 貼提示詞 → 等 → 下載 → 改名 → 歸檔 → 標記完成」七個動作, 二十個品八十張圖就是五百多次操作。現在這些全部歸零, 只剩下填表驗收

踩過的坑

坑一:跑得好好的,某天全部失敗

流程接 Google 表格和雲端硬碟要先授權。一開始一切正常,一段時間後突然整條流程全掛, 每個 Google 相關節點都報錯。

真因:Google 的授權設定如果停在「測試中」狀態, 發出去的長期憑證七天就會自動失效——不是流程壞了,是門禁卡到期了。

怎麼確認是這個問題 — 症狀很好認:不是某一個節點壞掉,而是所有 Google 服務同時掛掉。 單一節點的錯不會這麼整齊。

坑二:以為改設定就會自己好

找到原因後,去 Google 後台把授權設定從「測試中」改成正式發布——然後發現還是掛的

原因:改設定只影響「以後發出去的憑證」, 已經死掉的那張不會復活。必須回到 n8n 的憑證設定裡,重新按一次「使用 Google 登入」, 換一張新的回來。

打個比方

像把公司的門禁政策從「臨時卡七天到期」改成「正式卡永久有效」—— 政策改了,但你手上那張已經過期的卡不會自己變新,還是得去櫃檯換一張。

坑三:同一列被處理兩次

一列如果設定生成 2 張圖,回寫階段就會拿到 2 筆結果, 流程會對同一列重複寫入狀態——白打 API、還可能把表格寫亂。

解法:合併之後、回寫之前加一個按行號去重的節點,同一列只結算一次。

坑四:兩條路線不能用同一套寫法

原生節點生成完直接給圖檔,HTTP 打 API 回來的卻是一長串 Base64 文字, 直接丟去上傳只會得到一個壞掉的檔案。

解法:路線 A 中間補一個「Base64 轉圖檔」的節點,讓兩條路最後交出來的東西格式一致。

四個坑的共同教訓

自動化真正的難點不在「怎麼串起來」,而在它壞掉的時候你能不能看懂。 判斷順序永遠是:先看是整批掛還是單點掛—— 整批掛通常是憑證或額度,單點掛才是流程邏輯。

目前狀態

可以帶走的一句話

很多人把「會用 AI」理解成會寫提示詞。但真正省下時間的, 是把提示詞前後那些沒有技術含量、卻佔掉整天的搬運交給流程—— 而且要讓它失敗了自己能重來