iT邦幫忙

2025 iThome 鐵人賽

DAY 10
0
IT 管理

《把瑣事交給 n8n:零基礎自動化工作流實戰》系列 第 10

Day 10: 【n8n x FB - 2】整合 Google Drive 與 AI ,實現 FB 進階圖文發文

  • 分享至 

  • xImage
  •  

昨天,我們成功攻克了 Facebook API 的憑證設定,並讓 n8n 助理學會了如何在粉絲專頁上發布第一則「純文字」貼文。這是一次巨大的突破,證明了我們已經打通了對外廣播的渠道。

綜合前幾天的學習內容,我們可以將前幾天所提及的「新聞摘要」以及「高溫提醒訊息」串連到Facebook 節點,進行發文,以 Day 8 的Discord 天氣高溫提醒工作流為例,結合 FB 後的工作流如下:
https://ithelp.ithome.com.tw/upload/images/20250924/20178017baTi7HUE7f.png

執行完的結果如下:
https://ithelp.ithome.com.tw/upload/images/20250924/20178017oOZ3QMucmF.png

你可能會發現時段有點多,如果想要合併連續的時段該怎麼做?我的話我會去調整 Code 節點去修改設定。

但在視覺內容當道的今天,一則沒有圖片的貼文,就像一道沒有擺盤的菜餚,總是少了點吸引力。如果我們的助理不只會寫字,還能看懂圖片,並根據圖片內容自動生成引人入勝的文案,那該有多酷?今天,我們就要來打造一座完整的「AI 視覺內容廚房」!
我們將從 Google Drive 的圖片庫中自動挑選素材,交給 AI 進行視覺分析與文案撰寫,最後將圖文並茂的貼文自動發布到 Facebook,並將處理過的檔案歸檔。這是一條從原料、加工、發布到倉儲的完整自動化生產線。
今天的文章你會學到:

  • 新增 Google Drive Credential
  • 利用 n8n 內建的 Google Drive 節點才搜尋/移動/下載你在 Google Drive 中儲存的資料夾/檔案
  • 利用 Gemini Analyze Image 節點分析圖片、撰寫文案
  • 利用 Merge 節點將文案、圖片 combine 成一個 item,並發到臉書粉專上

準備好將你的「行銷小編」,升級為能獨立產出高品質圖文內容的「AI 內容總監」了嗎?讓我們開始吧!


一、前置作業 — 建立你的「素材倉庫」與「產品線」

  1. 啟用 Google Drive API 發布應用

    • 進入 GCP 專案首頁 → 快速存取「API 和服務」→ 「啟用 API 和服務」→「Google Drive API」→ 啟用

    若尚未設定 GCP 專案,可參考 Day3 中Gmail API 設定的方式。

    • 如果有記錄之前啟用 Gmail 用戶端時所提供的 Client id 以及 secret 的話,不需要再重新設定OAuth 2.0 用戶端 ID,只需要在 GCP 專案中啟用 Google Cloud Console 內的 Google Drive API 後,回到 n8n 建立 Google Drive Credentials → 貼上Client ID, secret → 登入即可

    • 如果沒有記錄到Client id 以及 secret,可點選「API 和服務」→ 左側導航欄「OAuth 同意畫面」→ 左側導航欄「用戶端」→選取之前創過的 OAuth 2.0 用戶端 ID → 右下角「Add Secret」複製(Client ID 在Secret上面,會有完整的可以複製,但Client secret 有時效性,一段時間後就無法複製,只能新增)→ 回到 n8n → 新增 Credentials,貼上id, secret → 登入Google 帳號
      https://ithelp.ithome.com.tw/upload/images/20250924/201780173UTYrdIxcv.png

    • 也可以在 OAuth 2.0 用戶端 ID 那邊直接新增,設定方式與 Day3 相同。

    目前,我們在 GCP 專案上的應用程式還是在測試狀態。測試狀態有一個缺點,他提供的憑證效期只有 7 天。為了讓自動化能長期穩定運作,不用每 7 天就重新登入一次更新憑證,因此這次可以嘗試將 Google Cloud Console 中的應用程式 『發布』,步驟如下:

    • 進入「API 和服務」→ 「OAuth 同意畫面」→ 左側導航欄「目標對象」→ 對象記得切成「外部」→「發布應用程式」
      https://ithelp.ithome.com.tw/upload/images/20250924/20178017RS4U3MpnGp.png

    應用程式使用對象的內外部分類,是以 Google Workspace 去做判斷,使用的 Google 帳號也是在同一個 Workspace, 那內部就可以,但一般的 google 帳號都是會被歸納在外不使用者。

    正常來說,發布應用程式會需要 Google 去認證,需要填寫隱私權政策、服務條款、應用程式首頁…等資料,但因為我們只是要自己使用,所以這部分沒填不會影響,但是登入的時候會出現 Google 的警吿,警告畫面如下,不想出現的話按照 Google 的要求填寫相關資料送審即可:

    https://ithelp.ithome.com.tw/upload/images/20250924/20178017oGb2g2dcv9.png

    https://ithelp.ithome.com.tw/upload/images/20250924/20178017FjO0KZmgk9.png

    https://ithelp.ithome.com.tw/upload/images/20250924/20178017IQb2HR98r2.png

  2. 建立 Google Drive 資料夾結構

    我們要發一個圖問並茂的貼文的話,需要有圖片來源。今天的範例中,我們選擇使用Google Drive 作為素材的來源,而且為了方便判斷哪些素材已經發過文,我們這邊創立兩個資料夾,一個是待發文、另一個是已發文。

    • 在自己的Google Drive 上建立兩個資料夾(一個待發文、一個已發文),並在待發文資料夾中放入幾張測試圖片。
      https://ithelp.ithome.com.tw/upload/images/20250924/20178017bNI7NHY6gj.png

二、工作流建構 — 從原料到成品

下圖為今天建構的工作流完成圖
https://ithelp.ithome.com.tw/upload/images/20250924/20178017nuSrsKJT8Q.png

讓我們直接開始吧!

Step 0:排程

  1. Schedule Trigger:設定每天發文的時間。
    • 設定成自己想要自動的發文時間即可

Step 1:先知道倉庫有哪些素材 ( Google Drive 節點)

  1. Search Files in Folder 節點
    • 功能:搜尋待發布素材庫資料夾中,所有待處理的圖片。

    • 設定

      • 在Schedule Trigger 後面,新增一個 Google Drive 的 Search File/Folders 節點
      • 選擇剛剛新增的 Google Drive Credential
      • Operation:Search
      • Search Method: Advance Search
      • Query String:輸入下方字串
        '你的資料夾ID' in parents and mimeType != 'application/vnd.google-apps.folder' and trashed = false (這串文字的目的是找出資料夾中的所有檔案)

      資料夾ID 可從 瀏覽器網址中,folders後面那串(有出現問號的話,就是Folder後、問號前的那串)

      https://ithelp.ithome.com.tw/upload/images/20250924/20178017RiTJxT0fy0.png

      • 開啟「return all」
      • 執行後,裡面有幾張照片,就會回傳幾個 item,每個 item 包含 id、name 這兩個參數
        https://ithelp.ithome.com.tw/upload/images/20250924/20178017h75uydHE1O.png

Step 2:挑選素材(Code 節點、Google Drive 節點)

因為 Search File 節點會回傳所有資料夾中的檔案,因此我們需要去篩選出一個檔案,其實有很多種方法,但這邊我們利用我們以前提過的 Code 節點

  1. Get 1 Item (Code) 節點

    • 功能:從上一步找到的多個檔案(即輸出的 item)中,隨機挑選一個來發文。

    • 設定 (Code 節點):JavaScript

      const items = $input.all(); if (items.length === 0) { return []; } const randomIndex = Math.floor(Math.random() * items.length); return [items[randomIndex]];

    • 執行後會發現只篩選出一個了
      https://ithelp.ithome.com.tw/upload/images/20250924/20178017Tlfbbei4AX.png

  2. Download file 節點

    • 功能:將選中的圖片檔案,從 Google Drive 下載到 n8n 的工作流中,變成二進位資料 (Binary Data),這樣才能交給 AI 和 Facebook 處理。
    • 設定File ID 直接從上一步的 Get 1 Item 節點中拖曳過來。
      https://ithelp.ithome.com.tw/upload/images/20250924/20178017ZxA5hVFW6N.png

當我們使用「Download」這類節點時,它輸出的數據格式比較特別。除了我們熟悉的 JSON 數據外,還多了一種稱為「二進位數據 (Binary Data)」。

這兩者有什麼不同?我們可以用包裹來比喻:

  • JSON 資料:就像是貼在包裹外面的運送標籤
    • 它用人類可讀的文字,記錄了檔案的「描述資訊」,例如:{ "fileName": "rice.JPG", "fileSize": 1234567 }
  • 二進位數據 (Binary Data) :這就是包裹裡真正的物品——也就是那張照片、那份 PDF 文件本身。
    • 它不是文字,而是檔案的原始、未經處理的內容,可供下一個節點讀取和處理。
      當有這類資料出現時,在 n8n 節點的輸入/輸出畫面,你會看到 JSONBinary 兩個分頁,它們分別對應著「標籤」和「物品」。

Step 3:AI 看圖說故事,撰寫文案 (Gemini Analyze image 節點)

  1. Analyze image (Gemini) 節點
    • 功能:將圖片的二進位資料交給 AI (例如 Gemini),讓 AI「看懂」圖片內容並生成對應的文案。
    • 設定
      • 在 Google Drive Download 後面,新增一個Gemini Image Analyze 節點
      • Text Input :輸入你要給模型生成文案的提示詞。
      • Input Type : Binary File(s)
      • Input Data Field Name: data (指向 Download file 節點輸出的二進位資料欄位)。
    • 這與之前在 Day 5 中 AI 節點設計的用法不同,今天我們是利用已經存在的 Gemini Image Analyze 節點來進行圖片的分析。
    • AI 節點不僅能處理文字,也能處理圖片,可見其多模態 (Multi-modal) 能力。
      https://ithelp.ithome.com.tw/upload/images/20250924/20178017Tp5Boff7HR.png

Step 4:合併圖文資料(Merge 節點)

  1. Merge 節點
    • 功能:將「圖片的二進位資料」和「AI 生成的文案」這兩份來自不同節點的資料,合併到同一個 Item 中,方便一起交給 Facebook 節點。

    • 設定

      • Input 1: 連接到 Download file 節點。
      • Input 2: 連接到 Analyze image 節點。
      • Mode: Combine
        https://ithelp.ithome.com.tw/upload/images/20250924/20178017vJ2fDyoZ6K.png

      https://ithelp.ithome.com.tw/upload/images/20250924/20178017bvZOjc03AB.png

    • 這是 Merge 節點的經典應用——合併來自不同處理分支的資料。

為什麼要用 Merge 節點?
在 n8n 裡,兩條資料流並不會「同時」完成 —— 系統是先跑完其中一條,再跑另一條。如果我們希望同一個時間點把兩個來源的結果(例如:AI 生成的文案 + Google Drive 抓到的圖片)組合在一起,就必須透過Merge 節點
Merge 就像是一個「集合點」,它會等兩條支線都送出結果,再把它們合併成一個完整的輸出,這樣我們才能確保發文時同時擁有圖片與文字。

Step 5:發布到 Facebook (圖文貼文)

  1. Facebook Graph API 節點
    • 功能:將合併好的圖文資料,發布到你的粉絲專頁。
    • 設定
      • Node粉專ID(與昨天相同)
      • Edge:輸入 photos (代表要發布圖片,與昨天不同)。
      • HTTP Request Method: 仍然是 POST
      • 啟用 Send Binary Data
        • Input Binary Field:輸入source:data (讓他可以獲得指向節點的 Download file 分支的二進位資料名稱欄位 source 則是FB Graph API 圖片來源的參數名稱)。
      • Body Parameters:
        • Name: caption
        • Value: 從 Merge 節點結果拖曳 AI 生成的文案text進來。
          https://ithelp.ithome.com.tw/upload/images/20250924/20178017Nb9WlPZ4wW.png
    • 執行與慶祝:執行節點,成功的話會輸出 id 以及post_id,同時檢查一下 Facebook 粉專上是否有出現由 AI 自動生成文案的精美圖文貼文!
      https://ithelp.ithome.com.tw/upload/images/20250924/20178017GrsAgtThur.png

Step 6:倉儲管理 — 自動歸檔已發布圖片

  1. Move file to processed Folder 節點

    • 功能:當貼文成功發布後,將 Google Drive 中的原始圖片,從「待發布」資料夾移動到「已處理」資料夾,避免重複發布。
    • 設定
      • 在 FB Graph API 節點後方,新增一個 Google Drive Move File 節點
      • File:設定By ID, 從 Download FileGet 1 Item 節點拖曳 id 進來。(只要是你發的那張圖片的 id 都可以)
      • Parent Folder : 設定By ID填入你「已處理」的資料夾 ID。
    • 這一步讓整個自動化流程形成了完美的閉環,體現了工作流的完整性,也方便從資料夾中查看已發文的圖片有哪些。
      https://ithelp.ithome.com.tw/upload/images/20250924/20178017S13kUqq7Nl.png

    Google Drive 在搜尋檔案、資料夾的時候,主要有提供三種方式:By URL 、By ID、From List。
    URL 的話,就是分享檔案/資料夾連結時所複製的那個連結(要記得開檢視權限)
    ID 的話,就是今天範例所使用的
    From List 的話,當你憑證設定正確的話,他會自動去掃你有哪些資料夾、檔案,並提供一個下拉式選單供你選擇(也可以搜尋再選取)。


三、工作流分析、變化

今天的工作流,其實可以拆解成三大流程:

  1. 取得素材(Google Drive API):過去我們是用 RSS read 、中央氣象署 API 來獲得素材,今天則是透過 Google 雲端硬碟取得素材。
  2. 內容生成(AI + Code 處理):之前我們是處理了「新聞」、「天氣」的內容,今天則是「圖片」、「文案」的內容。用 AI 幫圖片寫文案,但同樣的技巧也能應用在:幫商品圖片生成商品文案、幫研究數據生成摘要、幫課程或活動圖片生成宣傳文案…等情境
  3. 平台發布:過去我們是透過 Gmail 、Discord 發送,而今天我們是發到 Facebook。

更多可變化方向

  • 多來源、素材種類:不只是從 Google Drive,也可以改成 OneDrive、Dropbox,本地部署的話也可以利用Read File from Disk 節點來抓取素材;同時,素材也可以不只是圖片,也可以是影片、PDF…等等檔案。
  • 多平台發佈:今天是 FB,我們也可以同樣流程但改成 IG,甚至加上 LinkedIn、Twitter,一次自動同步發布。(之後會提到)
  • 更智慧的文案:文案生成可以再進一步,讓 AI 自動幫你生成「短版」、「長版」、「Hashtag 列表」,甚至依據時間不同自動套用不同語氣。
  • 歸檔方式:我們今天把用過的圖片移到「已處理」資料夾,但也可以同時存一份紀錄到 Google Sheet,建立一個「自動化發文日誌」。

四、常見錯誤、排查重點

  • Facebook 權限/Token 問題
    • 上傳圖片到 Page 需要 Access Token 與 pages_manage_posts 權限;確認 Token 是否有效、是否過期、權限是否開啟(不是短期 User Token)。
  • Binary Property 名稱不一致
    • Download node 的 Binary property(例如今天的範例名稱為: data)必須跟 Facebook node 裡設定的 Binary Property 名稱一致。
  • 圖片大小或格式
    • 超大檔案或奇怪 mimeType 可能會失敗,建議檔案小於 5–10MB,且為 JPG/PNG。
  • 權限問題:Google Drive
    • 確保 n8n 的 Drive Credential 有開啟Google Drive API(才能 download、move)。
  • API Rate / 延遲
    • 若大量發文,注意 Facebook API 的速率限制與審核政策。(一天發一次理論上不會出現這個問題)

節點若出現問題,可以善用回傳的錯誤訊息、錯誤代碼上官方文件或是 AI 來理解問題出現的原因並排除。


五、結語與明日預告

今天,你親手打造了一座全自動的 AI 視覺內容工廠。你的 n8n 助理,已經從一個只會轉發訊息的小編,進化成了一位能獨立看圖、思考、創作並發布高品質圖文內容的「AI 內容總監」!

我們學會了 Google Drive 節點的應用、利用 AI 撰寫相關文案,透過 Facebook Graph API 發文,並且在發文後自動將圖片歸檔。這是一個非常進階、同時極具商業價值的應用。

但 Facebook 只是開始。

如果,我們能把同一份內容,同步推送到 Instagram 這個以圖片為核心的平台呢?
如果,助理能一次管理多個社群平台,真正做到「一鍵多發」,是不是會更強大?
沒錯,這就是我們接下來的任務! 我們將進一步挑戰 Instagram,自動化生成並發布圖文貼文,正式踏入「跨平台社群經營」的新篇章。

準備好讓你的助理升級為「跨平台行銷專員」了嗎?我們明天見!


上一篇
Day 09: 【n8n x FB - 1 】從 Meta 憑證到 Facebook 貼文,打造對外廣播的第一步
系列文
《把瑣事交給 n8n:零基礎自動化工作流實戰》10
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言