iT邦幫忙

2025 iThome 鐵人賽

DAY 26
0
生成式 AI

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

Day 26:告別資訊焦慮!n8n 打造你的跨平台 AI 資訊整合總線

  • 分享至 

  • xImage
  •  

前言:從單線任務到多源整合

在 Day 25,我們成功為 n8n 裝上了 AI 大腦,讓它學會了閱讀和總結。然而,我們很快會發現一個更棘手的問題:資訊來源本身是碎片化的。

我們的情報散落在各處:技術新聞來自 RSS Feed,社群討論在 Telegram 頻道,重要的產品更新公告可能只在官方網站上,而團隊的內部通知則來自 Google Sheets。難道我們要為每一個來源都建立一個獨立的工作流嗎?

今天,我們將挑戰一個更高階的架構,將 n8n 從一個「點對點」的工具,升級為一個「多對一」的資訊整合總線 (Information Bus)。我們將打造一個單一的工作流,能夠同時接收來自多個不同平台的資訊,將它們統一處理,最後彙整成一份每日簡報。

我們的目標: 建立一個 n8n 工作流,它能:

  1. 同時監聽:來自 ITHOME 的 RSS、一個指定的 Telegram 頻道,以及一個 Google Sheets 表格。
  2. 統一格式:無論資訊來源為何,都將其轉換為標準的 {source, title, content, url} 格式。
  3. 彙整與推播:將所有來源的資訊,統一發送到一個 Discord 頻道。
"資訊輸入端 (多個Triggers)"
A[RSS Feed Trigger: 監控ITHOME]
B[Telegram Trigger: 監控社群頻道]
C[Google Sheets Trigger: 監控團隊公告]
end
"資訊處理與輸出"
    A --> D(Merge: 彙整所有事件);
    B --> D;
    C --> D;
    D --> E[Code: 統一資料格式];
    E --> F[Discord: 發送到彙報頻道];
end

這個架構中的 Merge 和 Code 節點,就是我們資訊總線的「守門人」和「翻譯官」。


二、實作步驟詳解

步驟 1:建立多個觸發器 (多頭龍的頭)

在一個新的 n8n 工作流中,分別加入以下三個觸發器 (Trigger) 節點。

龍頭一:RSS Feed Trigger (監控 ITHOME)

  • URLhttps://www.ithome.com.tw/rss/all
  • Poll Times: Every 1 Hour

龍頭二:Telegram Trigger (監控 Telegram)

  • Credential: 建立並選擇你的 Telegram Bot 憑證。
  • UpdatesMessage
  • Chats: 輸入你要監控的頻道或群組的 Chat ID。
  • 注意:Telegram Trigger 是即時的,只要頻道有新訊息,就會立刻觸發。

龍頭三:Google Sheets Trigger (監控 Google Sheets)

  • Credential: 選擇你的 Google 帳號憑證。
  • Document: 選擇你要當作公告欄的那個試算表。
  • Sheet: 選擇工作表。
  • Poll Times: Every 30 Minutes
  • Key to Track Rows By: 選擇一個不會重複的欄位來追蹤新資料,例如「時間戳」或「ID」。

步驟 2:Merge 節點 (資訊的交匯點)

Merge 節點是這個流程的咽喉,它負責將來自不同觸發器的、各自獨立的事件,合併成一個統一的資料流。

  • 操作方法:新增 Merge 節點,然後將上面三個觸發器節點的輸出端,全部連接到這個 Merge 節點的輸入端。
  • ModeCombine。這個模式會確保無論哪個觸發器進來了資料,都會被向下傳遞。

步驟 3:Code 節點 (萬能的翻譯官)

這是整個流程的「大腦」。不同來源的資料結構千奇百怪,我們需要用一小段 JavaScript 來將它們「正規化 (Normalize)」成我們想要的統一格式。

  • 操作方法:新增 Code 節點,連接在 Merge 節點之後。
  • 貼上以下程式碼
// 取得上一個節點傳來的資料
const item = items[0].json;
const output = {};

// 判斷資料來源,並進行格式轉換
if (item.title && item.link) {
  // 來源是 RSS Feed
  output.source = item.feed.title || 'RSS';
  output.title = item.title;
  output.content = item.contentSnippet;
  output.url = item.link;
} else if (item.message && item.message.text) {
  // 來源是 Telegram
  output.source = item.message.chat.title || 'Telegram';
  output.title = `來自 ${item.message.from.first_name} 的訊息`;
  output.content = item.message.text;
  output.url = ''; // Telegram 訊息沒有 URL
} else if (item.Timestamp && item.Announcement) {
  // 來源是 Google Sheets (假設欄位名為 Timestamp 和 Announcement)
  output.source = '團隊內部公告';
  output.title = item.Announcement;
  output.content = item.Details || ''; // 假設有一個 Details 欄位
  output.url = '';
} else {
  // 無法識別的來源,可以選擇忽略或發送錯誤通知
  return [];
}

// 回傳標準化後的物件
return [{ json: output }];

步驟 4:Discord 節點 (統一的彙報出口)

經過了翻譯官的努力,現在所有資訊都變成了統一的格式。因此,我們的 Discord 節點只需要一套模板,就能處理所有來源的情報。

  • 操作方法:新增 Discord 節點,並使用 Embeds。
  • Embeds 設定:
    • Author Name{{$json.source}} (顯示資訊來源)
    • Title{{$json.title}}
    • URL{{$json.url}} (如果 URL 為空,標題就不會有超連結)
    • Description{{$json.content}}

三、總結:從「工人」到「架構師」

恭喜你!今天,你不再只是一個會使用 n8n 節點的「工人」,而是一位能夠設計複雜資料流的「自動化架構師」。

我們學會了 n8n 中一個極其強大但常被忽略的特性:單工作流、多觸發器。並掌握了在真實世界中最實用的技能之一:資料正規化。這個「資訊總線」的設計模式,是你邁向資深自動化玩家的關鍵一步,它能讓你:

  • 減少維護成本:只需維護一個工作流,而不是為每個平台都建一個。
  • 統一處理邏輯:所有的過濾、AI 摘要、通知邏輯,都可以在正規化之後的統一流程中完成。
  • 無限擴充:未來想增加 Slack、Gmail 或任何新的資訊來源?只需要新增一個觸發器,並在 Code 節點中增加一個 else if 判斷即可。

Day 26 的挑戰,不僅是技能的整合,更是思維模式的升級。你已經具備了設計複雜、健壯、且易於擴展的企業級自動化流程的能力。


上一篇
Day 25:資訊過載的終極解答!n8n 結合 AI 打造你的專屬新聞摘要產生器
下一篇
Day 27:從一人團隊到企業協作:n8n 的環境管理與 Git 版控實戰
系列文
「解放自動化新利器!深入了解 n8n 如何助你輕鬆打造專屬工作流程」28
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言