iT邦幫忙

2025 iThome 鐵人賽

DAY 23
0
生成式 AI

「解放自動化新利器!深入了解 n8n 如何助你輕鬆打造專屬工作流程」系列 第 23

Day 23:你的個人情報中心!n8n 打造 RSS 多重監控與 Discord Webhook 推播

  • 分享至 

  • xImage
  •  

前言:從被動到主動,讓資訊自動流向你

在前幾天的文章中,我們已經掌握了 n8n 的排程、互動與監控基礎。今天,我們要將這些技能整合,打造一個 IT 技術人不可或缺的「個人資訊情報中心」。

我們每天需要追蹤的資訊源太多了:ITHOME 的最新文章、特定 GitHub repo 的發布、公司產品的更新日誌、甚至是 PTT 的特定版面。如果靠人工巡檢,不僅效率低下,更容易錯過黃金時機。

這篇文章將教你如何讓 n8n 成為你的 7x24 小時情報員,自動監控多個 RSS 來源,並在發現新內容時,透過 Discord Webhook,將精美排版的卡片訊息即時推播給你。

本日實戰目標:

  1. 監控多個 RSS 來源:同時追蹤 ITHOME 鐵人賽與 PTT 八卦版。
  2. 關鍵字過濾:只推播標題含有特定關鍵字的內容。
  3. 精美排版:使用 Discord Webhook 與 Embeds 功能,發送易讀的卡片訊息。

一、核心工作流架構:多源輸入,智慧過濾

這次的流程會比之前稍微複雜,但邏輯非常清晰:

"資訊來源"
A[RSS Read: ITHOME]
B[RSS Read: PTT Gossiping]
end
"處理與過濾"
A --> C(Merge: 彙整所有文章);
B --> C;
C --> D{IF: 標題是否包含關鍵字?};
end
"發送通知"
D -- 是 --> E[HTTP Request: 發送到 Discord];
D -- 否 --> F(結束);
end

二、實作步驟詳解

步驟 1:取得 Discord Webhook URL (你的專屬信箱)

在開始 n8n 設定前,我們先要拿到通往 Discord 頻道的「鑰匙」。這次我們不用笨重的 Bot,改用輕便的 Webhook。

  1. 在你的 Discord 伺服器中,選擇一個頻道(例如 #tech-feed)。
  2. 點擊頻道名稱旁的 齒輪圖示 (編輯頻道)
  3. 選擇左側的 整合 (Integrations)
  4. 點擊 Webhooks新增 Webhook
  5. 你可以自訂這個 Webhook 的名稱(例如「n8n情報員」)和頭像。
  6. 點擊 複製 Webhook URL。這條 URL 就是我們在 n8n 中發送訊息的目標地址。

步驟 2:設定 RSS Read 節點 (建立你的監控雷達)

我們需要為每一個想監控的資訊來源,建立一個 RSS Read 節點。

節點一:監控 ITHOME 鐵人賽

  • 節點類型: RSS Read
  • URL: https://ithelp.ithome.com.tw/rss/group/ironman/all
  • Update Every: 15 Minutes

節點二:監控 PTT 八卦版

  • 節點類型: RSS Read
  • URL: https://www.ptt.cc/atom/gossiping.xml
  • Update Every: 5 Minutes

小提示:RSS Read 節點會自動記錄已經處理過的項目,所以你不用擔心會收到重複的通知。

步驟 3:Merge 節點 (彙整所有情報)

當我們有多個資訊來源時,需要一個 Merge 節點將它們的輸出合併成單一的資料流,以便後續統一處理。

  • 操作方法:新增 Merge 節點,然後將上面兩個 RSS Read 節點的輸出端,都連接到這個 Merge 節點的輸入端。
  • Mode: 保持預設的 Append 即可。

步驟 4:IF 節點 (你的智慧過濾器)

資訊貴在精準。如果我們只對特定主題感興趣,就可以用 IF 節點來過濾。

  • 操作方法:新增 IF 節點,連接在 Merge 節點之後。
  • 設定條件:假設我們只關心標題中含有「n8n」或「八卦」的文章。
    • 點擊 Add ConditionOr,建立一個複合條件。
    • 條件一:
      • Value 1: {{$json.title}}
      • Operation: Contains
      • Value 2: n8n
    • 條件二:
      • Value 1: {{$json.title}}
      • Operation: Contains
      • Value 2: 八卦

只有符合這兩個條件之一的文章,才會從 true 的出口流出。

步驟 5:HTTP Request 節點 (發送精美卡片訊息)

這是本日的重頭戲!我們將使用這個節點,向第一步取得的 Webhook URL 發送一個精心設計的 JSON 訊息。

  • 操作方法:新增 HTTP Request 節點,並將它連接到 IF 節點的 true 輸出端

  • 主要參數

    • Method: POST

    • URL: 貼上你的 Discord Webhook URL。

    • Body Content Type: JSON

    • Body: 貼上以下這段 JSON 程式碼。這就是 Discord Embed 卡片的結構。

      {
        "username": "n8n 情報員",
        "avatar_url": "https://avatars.githubusercontent.com/u/10403693?s=200&v=4",
        "embeds": [
          {
            "author": {
              "name": "{{$json.feed.title}}"
            },
            "title": "{{$json.title}}",
            "url": "{{$json.link}}",
            "description": "{{$json.contentSnippet.slice(0, 200)}}...",
            "color": 15258703,
            "footer": {
              "text": "發布時間:{{$moment($json.isoDate).format('YYYY-MM-DD HH:mm')}}"
            }
          }
        ]
      }
      
  • JSON 結構解說:

    • username & avatar_url: 自訂機器人的名稱與頭像。
    • embeds: 這是卡片訊息的主體,它是一個陣列,代表可以發送多張卡片。
    • author.name: 使用 {{$json.feed.title}} 來顯示文章來源 (例如 "ITHOME 鐵人賽" 或 "Ptt Gossiping")。
    • title & url: 文章的標題和連結。
    • description: 使用 {{$json.contentSnippet.slice(0, 200)}}... 來顯示文章前 200 字的摘要。
    • color: 卡片左側的顏色條,使用十進位顏色碼 (15258703 對應紫色)。
    • footer.text: 在卡片底部顯示文章的發布時間,並使用 n8n 內建的 $moment 物件來格式化日期。

四、總結與成果

啟動這個工作流後,你的 n8n 就會變成一個聰明且勤奮的情報員。它會:

  1. 每隔幾分鐘就自動掃描 ITHOME 和 PTT。
  2. 只挑出標題含有「n8n」或「八卦」的新文章。
  3. 將這些精選情報,以美觀的卡片格式,即時發送到你的 Discord 指定頻道。

你不再需要手動刷新網頁,也不會被無關的資訊淹沒。這就是自動化帶來的力量:讓你從資訊的海洋中,精準地捕獲你需要的每一條魚

Day 23 的實作,不僅讓我們掌握了多源資訊的處理、過濾技巧,更深入地探索了如何利用 Webhook 實現更靈活、更美觀的客製化通知。這個強大的資訊流引擎,將成為你日常工作與學習的得力助手。


上一篇
Day 22:網站掛點了嗎?從被動報告到主動監控
系列文
「解放自動化新利器!深入了解 n8n 如何助你輕鬆打造專屬工作流程」23
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言