AI 正在初次分析文章並整理建議,請稍候…
內容工廠再進化!n8n x WordPress 打造『智慧內容管道』:從 Google Sheets 到自動發布 (含 ACF + 精選圖片)
嗨,我是浪花科技的 Eric。身為一個每天在程式碼和伺服器之間打滾的工程師,我對「重複性」的工作有種近乎偏執的厭惡。特別是那種「複製、貼上、點擊、發布」的循環,簡直是對大腦和時間的雙重謀殺。你是不是也常常覺得,網站內容明明都準備好了,卻還要一篇一篇手動上架到 WordPress,設定分類、標籤、上傳精選圖片,更別提還有 ACF 客製化欄位要填?
今天,我們就要來終結這場惡夢。我要帶你用 n8n 這個強大的自動化工具,打造一條從 Google Sheets 直通 WordPress 的「智慧內容管道」。這不是一篇基礎的「Hello World」教學,我們要玩點進階的:自動設定分類標籤、自動上傳並設定精選圖片,甚至連 ACF (Advanced Custom Fields) 的客製化欄位都能一併搞定。準備好了嗎?讓我們一起把時間搶回來,去做更有價值的事!
為什麼你需要自動化 WordPress 內容發布?
在我們動手之前,先囉嗦幾句,聊聊「為什麼」。很多時候,我們看到一個酷炫的技術,就一頭熱地栽進去,卻忘了問自己,這到底解決了什麼問題。自動化內容發布,絕對不只是為了「懶」。
- 時間就是金錢(和頭髮):這是最直接的好處。假設你每天要發布 10 篇文章,每篇手動處理需要 5 分鐘,一天就是 50 分鐘,一個月下來就是超過 20 個小時!這些時間拿去優化網站效能、研究新的行銷策略,甚至好好睡一覺,不香嗎?
- 零失誤的一致性:人會累、會分心、會手滑。分類選錯、標籤打錯字、圖片忘記上傳…這些鳥事在自動化流程中幾乎不會發生。機器只會忠實地執行你設定好的規則,確保每一篇文章的發布都符合標準作業程序 (SOP)。
- 釋放內容生產力:當發布流程自動化後,你的團隊(或你自己)可以更專注在「內容創作」本身。行銷人員可以在 Google Sheets 上協作、規劃一整個月的內容排程,而不用去碰複雜的 WordPress 後台。內容生產和技術發布徹底解耦,效率自然提升。
- 規模化的可能性:當你的網站需要處理大量、即時的內容時,例如新聞聚合網站、活動發布平台、電商促銷更新,手動發布根本是天方夜譚。一條穩定的自動化管道,是你實現規模化營運的基礎建設。
架設我們的自動化內容管道:事前準備
工欲善其事,必先利其器。在進入 n8n 的世界前,請確保你的裝備都已備妥:
- 一個正常的 WordPress 網站:這聽起來像廢話,但確保你的網站是可公開存取且運作正常的。
- 啟用「應用程式密碼 (Application Passwords)」:這是讓 n8n 這類外部應用程式安全地與你 WordPress 溝通的鑰匙。請到 WordPress 後台的「使用者」>「個人資料」,拉到最下方找到「應用程式密碼」,新增一組密碼並立刻複製保存,因為這個畫面關掉後就再也看不到了。
- n8n 執行個體:無論是使用 n8n Cloud 還是自己架設,你需要一個可以運作的 n8n 環境。
- 我們的內容來源 – Google Sheets:建立一個新的 Google Sheet,並規劃好欄位。這就是我們內容的「資料庫」。一個基本的結構可能像這樣:
post_title: 文章標題post_content: 文章內容 (可以是 HTML)image_url: 精選圖片的公開網址category_name: 分類名稱 (例如:技術分享)tags: 標籤 (多個請用逗號分隔,例如:n8n,WordPress,自動化)acf_custom_field: 你的 ACF 欄位內容status: 用來標記處理狀態,例如「pending」或「posted」
- (強烈建議) 安裝 ACF 外掛:如果你想玩到客製化欄位,請先在 WordPress 安裝並啟用 Advanced Custom Fields 外掛,並建立好對應的欄位 (例如:
acf_custom_field)。
n8n 工作流實戰:一步步打造發文機器人
好了,理論講完了,讓我們來點硬派的實作。我會將整個工作流拆解成幾個關鍵節點,讓你清楚了解每一步的運作原理。
步驟一:啟動!設定排程觸發器 (Schedule Trigger)
我們的發文機器人需要一個鬧鐘。在 n8n 中,最簡單的方式就是使用「Schedule」節點。你可以設定它每小時、每天或在特定時間執行一次,去 Google Sheets 檢查有沒有新的內容需要發布。
步驟二:抓取資料來源 – 連接 Google Sheets
新增一個「Google Sheets」節點。第一次使用需要授權 n8n 存取你的 Google 帳號。設定如下:
- Operation:
Read - Spreadsheet ID: 填入你的 Google Sheet ID (網址列那一長串亂碼)。
- Sheet Name: 你的工作表名稱。
- Options > Unformatted Values: 建議勾選,避免格式問題。
執行後,你應該能看到 n8n 成功抓取了你試算表中的所有資料列。接下來,我會加上一個「IF」節點,只處理 status 欄位是「pending」的資料,避免重複發文。
步驟三:處理分類與標籤 ID(工程師的囉嗦時間)
這是最多人卡關的地方。WordPress 的 REST API 非常「嚴謹」,它在設定分類 (Categories) 和標籤 (Tags) 時,要的是它們的 ID (一串數字),而不是名稱 (例如「技術分享」)。直接把文字丟過去是行不通的。
那怎麼辦?我們的流程要這樣設計:
- 取得所有分類:新增一個「WordPress」節點,Resource 選
Category,Operation 選Get Many。這會回傳你網站上所有分類的名稱和對應的 ID。 - 進行匹配:新增一個「Code」節點 (以前叫 Function node)。我們要用一點點 JavaScript,來比對 Google Sheets 來的分類名稱 (
category_name) 和上一步取得的分類列表,找出正確的 ID。
這段程式碼大概會長這樣:
// 假設上一個節點(取得所有分類)的輸出在 $input.all() 中
const categories = $input.all();
const targetCategoryName = $json.category_name;
// 尋找對應的分類物件
const foundCategory = categories.find(cat => cat.json.name === targetCategoryName);
// 如果找到,就回傳它的 ID,否則回傳 null 或一個預設值
if (foundCategory) {
$json.categoryId = foundCategory.json.id;
} else {
// 這裡可以做錯誤處理,例如設定一個預設分類 ID
$json.categoryId = 1; // 假設 1 是「未分類」
}
return $json;
標籤的處理邏輯也完全一樣,只是 Resource 要改成 Tag。我知道這有點麻煩,但這就是跟 API 打交道的日常。精確,才能不出錯。
步驟四:視覺焦點 – 上傳並設定精選圖片
精選圖片也不是一步到位。你需要先將圖片上傳到 WordPress 的媒體庫,取得一個 Media ID,然後再把這個 ID 關聯到你的新文章上。
- 下載圖片:新增一個「HTTP Request」節點。URL 欄位對應到 Google Sheets 的
image_url。最重要的一步是,在下方的 Options 中,將 Response Format 設定為 File。這樣 n8n 才會把圖片當成二進位檔案下載下來。 - 上傳到媒體庫:新增一個「WordPress」節點。Resource 選
Media,Operation 選Upload。在 Binary Data? 這個開關要打開,然後在 Input Data Field Name 選擇上一步 HTTP Request 節點輸出的data。執行成功後,這個節點會回傳包含id的 JSON,這就是我們夢寐以求的 Media ID。
步驟五:終極整合 – 建立 WordPress 文章!
萬事俱備,只欠東風!現在新增最後一個「WordPress」節點,進行最終的組裝:
- Authentication: 選擇你設定好的應用程式密碼憑證。
- Resource:
Post - Operation:
Create - Title:
{{ $json.post_title }}(從 Google Sheets 節點來的資料) - Content:
{{ $json.post_content }} - Status:
Publish(或Draft) - Additional Fields:
- Categories:
{{ $('Code').item.json.categoryId }}(從我們剛剛處理分類ID的 Code 節點來的資料) - Tags: (同理,從處理標籤的節點來)
- Featured Media:
{{ $('WordPress1').item.json.id }}(假設上傳圖片的節點叫 WordPress1,從那裡取得 Media ID) - Fields to Set > Meta: 點擊 Add Meta Field,Key 填入你的 ACF 欄位名稱 (例如
acf_custom_field),Value 填入{{ $json.acf_custom_field }}。
- Categories:
步驟六:善後 – 更新 Google Sheets 狀態
文章發布成功後,我們要做最後一個重要的動作:回去更新 Google Sheets 上那一列的 status 為「posted」。這樣下次 n8n 執行時,就不會重複處理這一筆資料了。
新增一個「Google Sheets」節點,Operation 改為 Update。你需要指定 Row Number (可以從觸發器節點的資訊中獲得),然後將 status 欄位的值更新為「posted」。
結論:你不只省下時間,更打造了內容引擎
恭喜你!跟著這一系列複雜但邏輯清晰的步驟,你已經成功打造了一條全自動、可擴展、且高度客製化的內容發布管道。從現在開始,你或你的團隊只需要專注於在 Google Sheets 上產出高品質的內容,剩下的發布、排版、設定,就交給 n8n 這個 24 小時不打烊的忠實員工吧。
這就是自動化的魅力。它不是取代你,而是把你從重複的勞動中解放出來,讓你成為一個「系統的設計者」而非「流程的執行者」。今天我們用的是 Google Sheets,但這個模式可以輕易地擴展到任何資料來源,例如 RSS Feed、Airtable、甚至是其他網站的 API。你的 WordPress 網站不再是一個被動的內容容器,而是一個能主動拉取、處理、發布資訊的「內容引擎」。
延伸閱讀
- 用 n8n 為 WordPress 注入自動化靈魂:你該知道的五大應用場景
- 告別人肉複製貼上!n8n 聯手 Google Sheets,打造 WordPress 表單自動化印鈔機
- 資料還在手動同步?n8n Webhook + API 終極整合術,讓你的 WordPress 數據流自動奔跑!
對打造更複雜的企業級自動化流程有興趣嗎?或是覺得這些設定太過繁瑣,需要專業團隊為你量身打造?歡迎與浪花科技聯繫,讓我們幫助您將更多重複的工作交給自動化,專注於業務的核心成長!
常見問題 (FAQ)
Q1: n8n 和 Zapier/Make 有什麼不同?為什麼要選 n8n?
A1: 這三者都是優秀的自動化工具。主要的區別在於:n8n 是開源的,你可以選擇自架設 (Self-Host),這在數據隱私和成本控制上擁有巨大優勢。它的工作流是以節點 (Node) 為基礎的視覺化呈現,對於複雜、多分支的邏輯流程,n8n 的自由度和清晰度通常更高。Zapier 和 Make 則是純 SaaS 服務,優點是開箱即用,但價格通常與執行次數掛鉤,當用量大時成本會顯著增加。
Q2: WordPress 的「應用程式密碼」是什麼?在哪裡設定?
A2: 「應用程式密碼」是 WordPress 內建的一種授權機制,它允許外部應用程式(如 n8n)透過 REST API 與你的網站進行驗證和互動,而不需要暴露你的主要登入密碼,安全性更高。你可以在 WordPress 後台左側選單的「使用者」>「個人資料」頁面中,滑到最下方找到「應用程式密碼」區塊來新增。請注意,密碼只會顯示一次,務必在當下就複製儲存起來。
Q3: 如果我的 Google Sheet 裡的分類或標籤在 WordPress 中不存在,這個流程會失敗嗎?
A3: 是的,根據本篇文章的流程設計,如果找不到對應的分類/標籤 ID,文章建立時就會缺少該分類/標籤。一個更進階的作法是,在 Code 節點中加入判斷邏輯:如果 `foundCategory` 為空,就再串接一個 WordPress 節點 (Resource: `Category`, Operation: `Create`) 來動態新增這個分類,然後再用新增後回傳的 ID 去建立文章。這樣就能讓流程更加智慧和強健。
Q4: 除了 Google Sheets,還能用什麼當作內容來源?
A4: 任何可以透過 n8n 存取的資料來源都可以!n8n 支援數百種應用程式和協議。常見的例子包括:
- RSS Feed:使用「RSS Feed Read」節點,自動抓取特定網站的更新並轉發到你的部落格。
- Airtable:作為一個比 Google Sheets 更強大的視覺化資料庫來管理內容。
- Notion:在 Notion 寫稿,完成後自動發布到 WordPress。
- 外部 API:串接天氣、新聞、股市等第三方 API,將即時資訊自動生成文章。
- Email:設定特定信箱,收到信件後自動將內容轉為草稿文章。
可能性幾乎是無限的,端看你的創意和需求。






