~/blog/n8n-wordpress-auto-post-automation-guide.md
API 串接與系統整合 · 2025 / 07 / 15

n8n 能讓 WordPress 全自動發文嗎?從憑證到排程的完整實作

Eric — 浪花科技創辦人 / AI 架構師
Eric
浪花科技創辦人 · AI 架構師
n8n 能讓 WordPress 全自動發文嗎?從憑證到排程的完整實作
目錄 table-of-contents.md

想讓 WordPress 自動發文、徹底告別手動複製貼上?答案是:用開源、可私有化部署的自動化工具 n8n,透過 WordPress 應用程式密碼(Application Passwords)呼叫 WordPress 內建的 REST API,把「資料來源 → 整理 → 建立文章」串成一條可排程、可監控、可容錯的流水線。本文會帶你從安全憑證設定,一路做到從 Google Sheets 讀資料自動發文,並補上分類標籤、自訂欄位與錯誤通知等實戰細節。

身為一個每天在程式碼和伺服器之間打滾的工程師,我最不能忍受的,就是「重複且沒有技術含量」的苦力活。其中最經典的,莫過於從 Google 文件、Notion 或其他地方手動複製內容,再到 WordPress 後台一篇一篇貼上、設定分類、上傳圖片、按下發佈。光是想到那個畫面,手指關節就開始隱隱作痛。

我們工程師之所以存在,不就是為了用技術解決這類問題,把時間花在更有價值的事情上嗎?今天就帶你徹底告別「內容農夫」的窘境,用 n8n 與 WordPress 打造一條 24 小時不間斷的全自動內容發佈流水線。

自動化內容發佈到底解決了什麼問題?

在深入技術細節前,先談談「為什麼」。自動化不只是為了酷,而是有非常實際的商業與技術價值:

  • 節省時間,解放生產力:假設你每週發 5 篇文章,每篇從複製、貼上、格式調整到設定平均花 15 分鐘,一週就是 75 分鐘,一個月就是 5 小時。這 5 小時拿去研究新技術、優化網站效能或陪陪家人,不香嗎?
  • 維持發文一致性:靠人為排程總有忘記或延遲的時候。自動化可以精準設定在流量高峰期發文,維持固定產出頻率,這對 SEO 與培養讀者黏著度至關重要。
  • 降低人為錯誤:手動操作總有貼錯內容、選錯分類、忘記設定精選圖片的時候。自動化流程一旦設定好,每次執行都是標準化作業,大幅降低低級錯誤。
  • 輕鬆實現規模化:當內容來源不只一個,或有多個網站需要同步發佈,手動操作的複雜度會呈指數成長。一個 n8n 工作流就能應對這種規模化需求。

簡單說,把內容發佈流程自動化,就像為內容團隊請來一個永不疲倦、分毫不差的數位助理。把重複的工作交給機器,把創意和策略留給人類,這才是聰明的工作方式。

為什麼選 n8n,而不是 Zapier 或 Make?

聊到自動化,很多人會想到 Zapier 或 Make(前 Integromat)。它們很棒,但 n8n 有一個殺手級優勢:開源且可私有化部署(Self-hosted)。這意味著:

  • 沒有執行次數限制:安裝在自己的伺服器上,跑多少次都行,高用量情境更划算。
  • 資料完全自主:所有工作流與傳輸的資料都在你自己的伺服器上,對注重資安與合規的企業是一大福音。
  • 視覺化又可寫程式:它採用節點(Node)編輯器,像玩樂高一樣把不同應用串起來;需要時也能用程式表達式做更細緻的資料轉換。

換句話說,n8n 兼具「低門檻的視覺化操作」與「高彈性的可控性」,這正是它適合企業導入的原因。

原理先講清楚:n8n 是怎麼「發文」的?

很多人以為自動發文有什麼黑魔法,其實核心非常單純:n8n 透過 WordPress 內建的 REST API,向你的網站發送一個建立文章的請求。WordPress 收到帶有正確身分驗證的請求後,就會像你在後台按下「發佈」一樣建立一篇文章。

理解這條鏈路,後面所有設定就都有跡可循了:

  1. 身分驗證:n8n 要先證明「我有權限操作這個網站」,這就是接下來要設定的應用程式密碼。
  2. 資料準備:把標題、內文、狀態、分類等資料整理成 WordPress 看得懂的格式。
  3. 送出請求:WordPress 節點把資料打包成 API 請求送出,建立文章並回傳結果。

n8n 內建的 WordPress 節點,本質上就是幫你把這些 API 呼叫包裝成圖形化介面,讓你不必手寫 HTTP 請求。

戰前準備:建立 n8n 與 WordPress 的安全通道

在打造工作流之前,我們得先建立一座讓 n8n 安全地跟 WordPress 溝通的橋樑。這一步非常重要,請務必跟著做,不要貪圖方便而留下安全隱患。

關鍵一步:設定 WordPress 應用程式密碼(Application Passwords)

我必須嚴肅地說:絕對、絕對、絕對不要在任何第三方服務中使用你的 WordPress 管理員主密碼!這等於把家裡的總鑰匙交給陌生人。

WordPress 從 5.6 版開始內建「應用程式密碼」功能,這是一種專門為 API 串接設計的授權機制。你可以為每個應用程式(例如 n8n)產生一組專屬密碼,並隨時撤銷它的權限,而完全不影響主帳號登入。這才是專業做法。

  1. 登入你的 WordPress 後台。
  2. 前往「使用者」>「個人資料」。
  3. 向下捲動到「應用程式密碼」區塊。
  4. 在「新應用程式密碼名稱」欄位中,輸入一個好記的名字,例如 n8n_autobot
  5. 點擊「新增應用程式密碼」。
  6. 系統會產生一組 16 位元的密碼,格式為 xxxx xxxx xxxx xxxx請立刻複製並妥善保存,因為這個畫面關閉後就再也看不到它了。
工程師的小提醒:為了落實權限最小化原則(Principle of Least Privilege),我強烈建議專門為 API 串接建立一個新使用者帳號,角色設為「編輯」或「作者」,而不是直接用 Admin 帳號產生應用程式密碼。這樣即使密碼不幸外洩,駭客能造成的破壞也相當有限。同理,正式環境務必全程走 HTTPS,避免憑證在傳輸途中被攔截。

實戰演練:從零打造你的第一個自動發文工作流

萬事俱備,只欠東風。我們的目標流程是:從 Google Sheets 讀取文章資料 → 逐筆處理 → 自動發佈到 WordPress。現在打開 n8n,一步步做。

步驟一:在 n8n 中設定 WordPress 憑證

首先讓 n8n 知道如何登入你的 WordPress 網站。

  1. 在 n8n 左側選單點擊「Credentials」,再點「Add credential」。
  2. 搜尋「WordPress」並選擇它。
  3. 填寫設定表單:
    • Credential Name:給它一個名字,例如 My WP Site
    • Base URL:填入你網站的首頁網址,例如 https://roamer-tech.com
    • Username:填入剛剛用來產生應用程式密碼的那個 WordPress 使用者帳號名稱。
    • Application Password:貼上剛剛複製的那組 16 位元應用程式密碼(記得移除空格)。
  4. 點擊「Save」,憑證就設定完成了。

步驟二:選擇一個觸發點(Trigger)

任何工作流都需要起點。對排程發文而言,最常見的觸發器是 Cron 節點,可以設定每天、每週或特定時間執行。為了方便測試,我們先用最簡單的 Manual(手動觸發)節點,也就是 n8n 畫布上預設的「Start」節點,確認流程跑得通之後,再換成 Cron 自動排程。

步驟三:準備你的文章資料(以 Google Sheets 為例)

這是內容來源。實務上,內容團隊很常用 Google Sheets 管理待辦文章清單。我們建立一個包含以下欄位的試算表:

  • title(文章標題)
  • content(文章內文,可以是 HTML 格式)
  • status(狀態,例如 draft 或 publish)
  • is_published(用來標記是否已發佈的欄位,例如 YES / NO)

這裡有個容易被忽略的關鍵:is_published 這個欄位是用來避免重複發文的。如果沒有它,工作流每次執行都會把整張表的文章重發一次。設計自動化流程時,「如何標記哪些資料已經處理過」永遠是要優先想清楚的事。

接下來在 n8n 加入「Google Sheets」節點:

  1. 點擊畫布上的 + 號,搜尋並加入「Google Sheets」節點。
  2. 在節點設定中,Resource 選 Sheet,Operation 選 Get Rows
  3. 選擇或新增你的 Google 帳號憑證。
  4. 選擇你的試算表與工作表名稱。
  5. 在 Options 中加入篩選條件,只抓取 is_publishedNO 的文章,避免重複發佈。

步驟四:見證奇蹟的時刻——用 WordPress 節點發佈文章

現在要把從 Google Sheets 取得的資料傳給 WordPress。由於 Google Sheets 節點可能一次傳回多筆資料,而我們希望每篇文章都被獨立、可控地處理,所以中間串接一個「Split In Batches」節點,並把 Batch Size 設為 1,確保每一篇文章都被單獨處理。這也讓「某一篇失敗時不會拖垮整批」這件事更容易做到。

接著加入「WordPress」節點:

  1. 在「Split In Batches」節點後方加入「WordPress」節點。
  2. Credential:選擇步驟一建立的憑證。
  3. Resource:選擇 Post
  4. Operation:選擇 Create
  5. 接下來是關鍵的欄位對應,用 n8n 的表達式(Expressions)動態填入資料:
    • Title:點擊欄位右邊的方塊圖示,從「Current Node > Input Data > JSON > columns > title」拖曳 {{ $json.columns.title }} 過來。
    • Content:同理,對應到 {{ $json.columns.content }}
    • Status:對應到 {{ $json.columns.status }}

完成後,你的欄位對應在概念上會像這樣(以 JSON 表示):

{
  "title": "{{ $json.columns.title }}",
  "content": "{{ $json.columns.content }}",
  "status": "{{ $json.columns.status }}"
}

步驟五:測試、啟動,然後去泡杯咖啡

在啟用工作流前務必先測試。點擊畫面右下角的「Execute Workflow」,n8n 會真的跑一次流程。如果一切順利,你會在 WordPress 後台看到一篇新文章被建立。建議第一次測試時把 status 設為 draft,確認內容、格式、分類都正確後再改成 publish,避免半成品直接公開。

確認無誤後,把左上角的開關從「Inactive」切換為「Active」,並別忘了回頭把已處理文章的 is_published 標記為 YES(可在流程末端再加一個 Google Sheets 的 Update 節點來自動回寫)。恭喜,你的自動化內容工廠正式上線!

進階戰術:讓你的自動化流程更上一層樓

基本發文只是開始。n8n 與 WordPress REST API 的組合還有更多強大玩法。

怎麼自動設定分類、標籤與自訂欄位(ACF)?

想自動設定文章的分類或標籤?沒問題,在 WordPress 節點加入 CategoriesTags 欄位即可。這裡要特別注意:你要傳入的是分類或標籤的 ID,而不是名稱。實務做法是先在工作流中加入一個 WordPress 節點來「搜尋」分類名稱並取得其 ID,再把這個 ID 傳給建立文章的節點。

對於 ACF 這類自訂欄位,可以在 WordPress 節點的「Additional Fields」中填入欄位的 key(例如 field_65f1a2b3c4d5e)與 value

如何讓工作流「滴水不漏」地處理錯誤?

一個專業的工作流不只要考慮成功路徑,更要處理失敗狀況。萬一 WordPress 網站當機,或文章資料格式錯誤導致發佈失敗怎麼辦?你可以從 WordPress 節點的失敗出口(紅點)拉出一條新流程,例如連接「Slack」或「Email」節點,在出錯時立即通知管理者。這就是所謂的「容錯機制」,也是系統是否穩健的關鍵。

更進一步,搭配前面把 Batch Size 設為 1 的做法,就能做到「逐篇成功才回寫已發佈、失敗的單篇另行通知並保留待重試」,避免一顆老鼠屎壞了一鍋粥。

避免重複發文:冪等性思維

自動化系統最怕的就是「同一篇文章被發了兩次」。除了用 is_published 欄位把關,更穩健的設計是讓流程具備「冪等性」:同樣的輸入重跑多次,結果都一致。實務上常見的做法是以「來源資料的唯一識別」(例如試算表的列或某個固定 ID)作為判斷依據,先確認「這筆是否已處理過」再決定要不要建立文章。這個觀念在所有 API 串接情境都通用,值得內化成習慣。

總結來說,透過 n8n 與 WordPress 的結合,你不只省下時間,更建立了一套可擴展、可維護、高效率的內容管理系統。從 RSS Feed 自動轉載、監控特定網頁更新並發佈摘要,到串接 AI 自動生成內容,可能性無窮無盡。現在,輪到你動手,打造專屬於你的自動化帝國了!

延伸閱讀

// FAQ

常見問題

n8n 是怎麼自動發文到 WordPress 的?
n8n 透過 WordPress 內建的 REST API,向網站發送建立文章的請求。WordPress 收到帶有正確身分驗證的請求後,就會像在後台按下「發佈」一樣建立文章。n8n 內建的 WordPress 節點會把這些 API 呼叫包裝成圖形化介面,讓使用者不必手寫 HTTP 請求。
為什麼自動發文要選 n8n 而不是 Zapier 或 Make?
n8n 的關鍵優勢是開源且可私有化部署(Self-hosted)。安裝在自己的伺服器上沒有執行次數限制、高用量更划算,所有工作流與資料都留在自己的環境,對資安與合規要求高的企業特別有利。它同時兼具視覺化節點操作與可寫程式表達式的高彈性。
n8n 串接 WordPress 該用什麼方式驗證身分?
應使用 WordPress 從 5.6 版起內建的「應用程式密碼(Application Passwords)」,而非管理員主密碼。可在「使用者 > 個人資料 > 應用程式密碼」為 n8n 產生一組專屬密碼,並可隨時撤銷而不影響主帳號登入。基於權限最小化原則,建議專為 API 串接建立角色為編輯或作者的新帳號,並全程使用 HTTPS。
用 n8n 從 Google Sheets 自動發文時,要怎麼避免重複發布?
在來源試算表中加入一個標記欄位(例如 is_published,值為 YES/NO),並在 n8n 的 Google Sheets 節點中設定篩選條件,只抓取尚未發布的資料列。設計自動化流程時,先想清楚「如何標記哪些資料已處理過」是避免重複發文的關鍵。
n8n 一次讀到多篇文章時要怎麼逐篇處理?
在 Google Sheets 節點與 WordPress 節點之間串接一個 Split In Batches 節點,並將 Batch Size 設為 1,確保每篇文章都被獨立處理。這樣不僅可控,也能讓某一篇失敗時不會拖垮整批的處理。
~/roamer-tech/newsletter // FREE
// newsletter

訂閱免費電子報

把 AI 自動化、企業系統設計與 WordPress / Laravel 開發的真實案例和可直接照做的技巧,整理成電子報寄給你。只寄精選內容、不灌垃圾信,一鍵就能退訂。

$
// final.exec()

準備好讓你的網站開始為你工作了嗎?