EP-51 讓AI協助經營自媒體!使用 n8n 自動抓取 Notion 文章,發佈在 Threads
以 n8n 每日排程抓取 Notion 電子報草稿,整併 Blocks 成內文,交由 AI 改寫為 Threads 貼文;自動檢查 500 字元上限,超標最多重試兩次,合格後以 Threads Graph API 建立容器並正式發佈,流程穩定可持續運轉。
自從 n8n 與 AI 的熱度在 2025 年急速竄升之後,許多人都想依靠自動化來省下時間與精力。
例如我之前做了一個 Line bot 結合 n8n 抓取新聞,再發送到 Threads 的流程。
➡️
EP-40 我的 Line AI 助理才不會那麼可愛:用 Claude 和 n8n 構築新聞自動化流程(1)
EP-41 我的 Line AI 助理才不會那麼可愛:用 Claude 和 n8n 構築新聞自動化流程(2)不過測試之後,我沒實際使用此流程,因為我一直覺得抓到的新聞內容很乾,貼到 Threads 也很無聊。
所以這項自動化流程就先擱置了。
本週則是測試讓 n8n 自動抓取我存放在 Notion 的電子報草稿,讓 AI 改寫後,再發佈到 Threads ,效果還可以。
首先,電子報草稿都是人工寫的,所以我可以確保品質。
再者,讓 AI 仿造我的文筆再改寫摘要,效果不會太差。
之後我應該會持續讓此流程不斷地跑下去,頂多進行後續優化。
n8n 細節流程說明
1. Schedule Trigger 節點:每天九點啟動
每天固定時間喚醒流程。
2. Notion 節點:取得 Notion 資料庫所有文章
從 Notion 特定資料庫,擷取電子報草稿。
因為此資料庫還有其他類別的文章,所以我以「類別=Substack、狀態=Done」為篩選條件,確保找到已經發佈在 Substack 上面的內容。
3. Code 節點:取得某篇文章
原本的想法是,從上一個「取得 Notion 資料庫所有文章」節點接收清單之後,隨機選一篇文章。
不過在電腦上做不到真正的亂數。
所以就依「當天日期」決定性地挑出其中一篇,並輸出該頁的基礎欄位,供後續抓取區塊使用。
4. Notion 節點:將 Notion 文章取出
上一個節點是此取得頁面 id ,這個步驟要抓取該頁的所有區塊,準備進行文字整理。
Operation 要選擇 Get Child Blocks。
5. Code 節點:將文章段落組合成一篇
當你在 Notion 斷行時,預設就是新建一個 Block 。
所以當我們把 Notion 文章取出後,得把每個 Blocks 組裝在一起,並且處理清單符號、標題、引用、待辦與程式碼區塊等格式,再以換行組成乾淨的單一字串,輸出為「內文」。
6. AI 節點:讓 AI 摘要改寫
把「內文」交給 ChatGPT 語言模型產生 Threads 用貼文。
因為之後我們會讓程式計算 AI 回傳的摘要字數是否超過 500 字元,如果超過,就要讓 AI 重做一次。
所以在底下範例最前面,我使用了 JavaScript 的三元條件運算子,意思是如果 $json.retry_hint 有值,就會顯示裡面的文字,連同底下提示詞一起送出。
如果$json.retry_hint 是空的,就什麼都不會做,只送出底下提示詞。
{{ $json.retry_hint ? ($json.retry_hint + ‘\\n’) : ‘’ }}
你是繁體中文寫作編輯。請將 Raven AI 週報的內容,濃縮為一則適合發在 Threads 的貼文,遵守規則:
- 先篩選出本文重點,再開始撰寫。
- 全文不超過 450 個中文字(包含空白與標點)。
- 開頭一句直接點題,仿造原文寫作風格,可少量表情符號(避免過度使用)。
- 每段落都必須加上 \\n 斷行符號。段落與段落之間必須間隔一行。
- 這些文章都是過去發佈的電子報,已放在網站,所以不是本期內容。
- 結尾加入 1 個明確 CTA(例如:更完整資訊請閱讀 Raven AI 週報、文章連結在首頁資訊欄)。
- 不要輸出任何解釋、前置說明或格式標題;只輸出最終貼文文字。
以下為待摘要內容:
{{ $json.content }}
7. Code 節點:計算文字長度是否小於 500
Threads 只能接受 500 字元,所以這裡要寫個程式計算字元數量。
然後分支兩條線,
一條接到 Merge 合併節點
另一條到 if 分支節點
7.1 if 分支節點:有無小於 500 字
如果小於 500字 ,就去取 Threads 的鑰匙(access token),準備發文。
如果大於 500 字,就準備重做。
7.1.1 Google Sheets 節點:取得 Threads 權杖
在字數合格的情況下,讀取 Google 試算表取得 Threads API 所需的「存取權杖」,與後續的「摘要」會被合併。
7.1.2 if 分支節點:如果大於 500 字,確認嘗試次數是否少於 3 次
使用判斷式要小心是否會陷入無限迴圈。
因此摘要若大於 500 字,就讓 AI 重寫,但是最多重做兩次。
在這裡要檢查「重試次數」是否仍小於 3:
• 是:走「重做」路線,強化「重試提示」後,再回到 AI 摘要節點重跑。
• 否:已經做兩次了,「發送告警信」,並中止發佈。
7.1.2.1 Code 節點:重做
這裡準備進行重做,所以要把「重試次數」+1。
然後要在變數 retry_hint 加上文字,送回第 6 步驟的 AI 節點。
7.1.2.2 Gmail 節點:發送告警信
當重做兩次仍超標,寄出通知,信件包含「重試次數」、「字數」與「內文」前 300 字,方便人工處理。
8. Merge 合併節點:合併摘要與 Threads 權杖
把「摘要」與「權杖來源」兩邊的輸出合併。
9. Code 節點:合併資料
從上述合併結果中,產出最終需要的兩個欄位:「Threads 存取權杖」與「摘要」,提供後續 Threads API 使用。
10. Https Request 節點:取得Threads user id
以「存取權杖」呼叫 Threads Graph API 拿到使用者 id,為建立貼文容器做準備。
11. Http Request 節點:建立貼文容器
以使用者 id 建立一個貼文容器,帶入「摘要」,媒體型態為純文字。
12. Wait 節點:等30秒
建立容器後暫停一段時間,避免立即發佈造成非預期錯誤。
13. HTTP Request節點:正式發佈到 Threads
以容器的 id 正式發佈,完成整體流程。
整體設計思路總結
以固定時間觸發,從已完成的電子報文章中選出一篇文章 id。
將此文章 id 的 Notion Blocks 取出,合併成文章,交給大型語言模型生成「摘要」。
用「字數」作為標準,大於 500 字時,最多重試兩次。重做時附上更嚴格的「重試提示」,若仍超標則寄出告警。
如果字數少於 500 字,就去取得事先建立好的 Threads 權杖,然後取得使用者 id → 建立容器 → 等待 → 發佈。
範例JOSN請在這裡下載。
工商時間
斗內
如果這篇內容讓你少走彎路、思路更清晰,給我一點前進的動力吧!
訂閱與分享,是最直接的支持
也歡迎請我喝杯咖啡,讓我持續製作更多實戰案例與教學
付費社群
我成立了付費社群「一人公司 × AI 共學圈」,想把實戰方法與思路整理成系統,陪你用 AI 打造自己的事業與工作流。
你會獲得:
🎓 深度付費內容:AI 自動化、AI 知識管理與一人公司經營心法
🎥 不定期線上直播:工具實作、框架拆解、真實案例
🎟 會員專屬優惠:進階課程與工作坊優先報名與折扣
目前社群持續完善中,推出早鳥:
單次付費 10 美元,終身會員
基礎課程內容永久開放
基礎課程完整上架後,將改為每月 5 美元訂閱。若你想用 AI 提升生產力、建立個人化工作系統,歡迎加入,一起把點子變成產能。



