AI 罐頭文有救嗎?用 n8n + Gemini 打造有靈魂的 WordPress 內容流水線
☰ 目錄 table-of-contents.md
AI 自動產文,怎麼做才不會被 Google 降權
想用 AI 量產不被 Google 降權的 WordPress 文章,核心從來不是「一鍵生成」,而是把編輯流程程式化:用 n8n 串接工作流、用 Google Gemini 做結構化生成、再透過 WordPress REST API 發布為草稿,最後保留人工審核(Human-in-the-loop)這道關卡。
關鍵設計有三點:第一,要求 AI 輸出乾淨的 JSON(含 title、content、excerpt、tags),讓後續程式好處理;第二,採「先大綱、再內文」的結構化生成,而非一句話生成全文;第三,發布時 status 一律設為 draft,由人補上事實查核與觀點。下面是可以照著做的完整架構與實作步驟。
嗨,我是 Eric,浪花科技的資深工程師。如果你跟我一樣,每天要面對客戶那無底洞般的「內容行銷」需求,或者你自己經營部落格卻發現「寫作」這件事佔用了你 80% 開發新功能的時間,那你來對地方了。
這幾年 AI 寫作工具滿天飛,但身為工程師,我對那些一眼就能看出是 AI 寫的「罐頭文」感到生理不適:沒有結構、缺乏觀點、充滿「總而言之」的廢話。如果把這種東西大量灌進 WordPress 網站,Google 的演算法遲早會把你的 SEO 權重打入冷宮。這篇文章不教你「一鍵生成 100 篇垃圾文」,而是教你做「架構工程」。
為什麼是 n8n + Gemini,而不是別的工具?
市面上自動化工具很多,像 Zapier 或 Make 都能用。身為工程師我首推 n8n,原因可以濃縮成兩個字:可控與成本。
- n8n:節點式(Node-based)自動化工具,最大優勢是可以 Self-hosted(自託管)。這代表敏感資料不必流經第三方伺服器;而在複雜的 JSON 處理、迴圈(Loop)、條件分支(Switch)上,它的彈性遠勝純設定式的工具。
- Google Gemini:為什麼不用 OpenAI?其實兩者都很強,但在「長文本理解」與「複雜指令跟隨」這兩件事上,Gemini 1.5 Pro 展現了不錯的性價比,且 Google 生態系的整合對內容生產場景很順手。
n8n、Zapier、Make 差在哪?
用一句話分辨:如果你的流程只是「A 觸發 B」的線性串接,三者都行;但只要牽涉到「迴圈處理多筆資料、依條件走不同分支、對 API 回傳做深度資料清洗」,可程式化、可自託管的 n8n 會明顯省力,也讓你完全掌握資料落在哪裡。
整體架構:從靈感到發布的三段式流水線
這條流水線刻意不做成「給一個關鍵字就吐一篇文章」那麼粗糙。為了確保品質,我把它拆成三段,每一段都有明確職責:
- 觸發與資料豐富化(Trigger & Enrichment):從 Google Sheets 或 Trello 讀取選定的「主題關鍵字」,必要時透過搜尋類 API 抓取當前網路上的觀點與素材,讓 AI 有依據、少瞎掰。
- 結構化生成(Structured Generation):把蒐集到的資料餵給 Gemini,要求它先產出大綱、再依大綱撰寫 HTML 內文。這一段的 Prompt Engineering 是整條流水線的靈魂。
- 發布(Publishing):透過 WordPress REST API 把標題、內文、摘要、分類、標籤,以及精選圖片(Featured Image)送進 WordPress。
為什麼要「先大綱、再內文」?因為大綱先決定了 H2/H3 的骨架,AI 寫內文時就有了結構約束,比較不會發散成流水帳;這也讓你能在生成內文前先檢查骨架,省下重跑整篇的成本。
實戰:n8n 工作流怎麼搭?
步驟一:設置觸發器
在 n8n 建立新的 Workflow。測試階段用 Manual Trigger 最方便;正式生產環境我通常改用 Google Sheets Trigger 或 Webhook。
假設我們從 Google Sheets 讀取一列資料,至少包含兩個欄位:Keyword(關鍵字)與 Target_Audience(目標受眾)。把受眾也帶進來,是為了讓後面的 Prompt 能調整語氣與深度。
步驟二:串接 Google Gemini API
這是最核心的一段。在 n8n 中用 HTTP Request 節點呼叫 Gemini API。n8n 雖然有內建的 Google AI 節點,但我個人偏好直接用 HTTP Request——這樣我能完全掌控送出去的 JSON Body,包括微調 temperature 與 top_k 等參數。
資安基本功:API Key 請到 Google AI Studio 申請,並且千萬不要寫死在節點裡,務必用 n8n 的 Credentials 管理功能來存放。寫死的 Key 一旦被匯出或誤分享 Workflow,就等於把鑰匙交出去。
Prompt 的設計上,絕對不要只寫「幫我寫一篇關於……的文章」。把 AI 當成一位剛入職的實習生,給它明確的 SOP:
{
"contents": [{
"parts": [{
"text": "你是一位資深的 WordPress 技術部落客。請根據關鍵字 '{{ $json.Keyword }}' 為受眾 '{{ $json.Target_Audience }}' 撰寫一篇文章。\n\n要求:\n1. 使用 HTML 格式 (h2, h3, p, ul, li)。\n2. 語氣專業但帶有個人觀點。\n3. 必須包含 SEO 友善的結構。\n4. 輸出格式必須是純 JSON,包含 'title', 'content', 'excerpt', 'tags' 四個欄位。"
}]
}]
}
看到重點了嗎?要求 AI 輸出 JSON 格式。這對後續程式自動化至關重要:如果 AI 吐回一堆 Markdown 或純文字,你就得在 n8n 裡用 Regex 拆字串,那是惡夢一場。
讓 temperature 與 top_k 為內容品質服務
這兩個是控制生成「隨機性」的常見參數。原則上:temperature 越高、輸出越有創意但也越不穩定;越低則越保守、越可預測。對於需要結構穩定、事實正確的技術文章,採用偏低到中等的設定通常比較安全;想增加文字變化時再小幅調高。top_k 則限制每一步從機率最高的若干候選詞中取樣,數值越小、用詞越收斂。重點是:固定一組設定、觀察輸出、再微調,不要一次動太多變數。
步驟三:解析並清洗 JSON
Gemini 回傳的內容通常是一段字串(String),你得用 n8n 的 Code 節點或 JSON 解析功能把它轉回真正的 JSON Object。如果 Gemini 很聽話,你就會拿到乾淨的標題與內文。
但有時候 Gemini 會「起乩」,在 JSON 前後加上多餘文字(例如「好的,這是您的 JSON……」)或把它包進 Markdown 的 code block。這時需要先清洗再解析:
// n8n Code Node Example
const rawContent = items[0].json.content;
// 移除可能存在的 Markdown code block 標記
const cleanJson = rawContent.replace(/```json/g, "").replace(/```/g, "");
return JSON.parse(cleanJson);
實務上建議再多一層防呆:把 JSON.parse 放進 try/catch,解析失敗時不要讓整條流水線崩潰,而是把這筆標記成「需人工處理」並繼續跑下一筆。自動化最怕的不是出錯,而是「一筆出錯、整批停擺」。
步驟四:透過 WordPress REST API 發布
最後一步,把內容推送到 WordPress。會用到的核心端點是 /wp-json/wp/v2/posts。在 n8n 新增一個 HTTP Request 節點:
- Method:POST
- URL:https://your-domain.com/wp-json/wp/v2/posts
- Authentication:使用 WordPress Application Password(不要用管理員登入密碼,請到後台使用者設定申請一組專用的應用程式密碼)。
JSON Body 設定如下:
{
"title": "{{ $json.title }}",
"content": "{{ $json.content }}",
"status": "draft",
"excerpt": "{{ $json.excerpt }}"
}
務必注意:強烈建議把 status 設為 draft(草稿)。原因是即使 AI 再強,最後一關仍需人類審核——檢查事實有沒有錯、排版有沒有跑掉。自動化幫你省下 90% 的力氣,剩下 10% 的「靈魂注入」還是得靠你。
為什麼一定要用 Application Password?
Application Password 是 WordPress 內建、專供程式化存取的憑證機制。它的好處是可以獨立於你的登入密碼存在、能單獨撤銷,萬一外洩也不會連帶影響你的後台登入。把它用在自動化流程,等於替每一條整合各自配一把可隨時換掉的鑰匙,符合最小權限與可稽核的原則。
進階技巧:讓文章更像「人」寫的
上面的流程能讓你做出「及格」的文章;要做到「優秀」,再加上這幾層邏輯:
1. 自動化精選圖片(Featured Image)
一篇沒有圖片的文章是沒有靈魂的。你可以在 n8n 串接 Unsplash API 或 OpenAI 的 DALL-E 3。流程是:生成/搜尋圖片 → 下載圖片二進位檔 → 上傳到 WordPress 媒體庫(/wp-json/wp/v2/media)→ 取得回傳的 Image ID → 更新文章的 featured_media 欄位。順序不能顛倒:一定要先有 Media 的 ID,文章才知道要關聯哪張圖。
2. 內部連結(Internal Linking)注入
SEO 的關鍵之一在於網站結構。你可以維護一份自己網站的「文章清單」JSON,在 Prompt 中要求 Gemini:「撰寫時若提到相關概念,請從以下清單挑選適合的文章加入超連結。」這能讓網站形成緊密的內容網絡。
這裡有個容易被忽略的鐵則:內部連結只能連到清單裡真實存在的網址。如果放任 AI 自由產生連結,它很可能編出看似合理、實則 404 的路徑,反而傷害使用者體驗與 SEO。把「可用連結清單」當成白名單交給 AI,是最穩妥的做法。
3. 用 Few-Shot 降低「AI 幻覺」
寫技術文章時,AI 很容易捏造不存在的函式庫或 API 參數。解法是在 Prompt 中運用 Few-Shot Prompting(少樣本提示):給它幾個正確的程式碼範例作為參考,或明確指示「如果不確定,請不要撰寫該段落」。提供範例等於替模型畫好邊界,讓它照著既有事實走,而不是憑空想像。
把人留在迴圈裡:為什麼草稿審核不可省
整條流水線最值錢的設計,其實是最後那道「Human-in-the-loop」。AI 負責把初稿從 0 推到 80 分,但決定一篇文章能否代表品牌、有沒有事實錯誤、觀點對不對,仍是人的責任。把產出停在草稿、由編輯核可後再發布,既保住效率,也守住底線——這正是 Google 一再強調的「內容品質高於內容來源」的實際落地方式。
結語:工具是死的,思維是活的
搭起這套系統大概花了我一個週末,但它現在每週為我省下至少 10 小時的初稿撰寫時間。n8n + Gemini + WordPress 的組合,本質上是把你的「編輯思維」程式化。
不要害怕 AI 取代你的創作,它只是把你從繁瑣的打字裡解放出來,讓你更有時間去思考策略、跟讀者互動,去喝那杯還沒涼掉的咖啡。如果你在實作中卡關(相信我,CORS 與 API 驗證總會搞瘋工程師),歡迎參考下方資源或直接聯繫我們。
想為你的企業打造專屬的自動化內容引擎?別讓重複的文書工作消耗團隊戰力。浪花科技專注於 WordPress 高階開發與企業數位化轉型,立即填寫表單聯繫我們。
延伸閱讀
常見問題
用 AI 自動產生 WordPress 文章,怎麼避免被 Google 降權?
為什麼建議要求 AI 輸出 JSON 格式而不是純文字或 Markdown?
Gemini 回傳的 JSON 夾帶多餘文字導致解析失敗該怎麼辦?
透過 WordPress REST API 發布文章時,為什麼要用 Application Password 而非登入密碼?
temperature 與 top_k 參數對 AI 內容生成有什麼影響?
訂閱免費電子報
把 AI 自動化、企業系統設計與 WordPress / Laravel 開發的真實案例和可直接照做的技巧,整理成電子報寄給你。只寄精選內容、不灌垃圾信,一鍵就能退訂。