開源自動化工作流程平台n8n介紹

關鍵字 :n8n自動化流程AI助手

資訊爆炸的時代,「自動化」是提升工作效率的關鍵之一,無論是自動寄送電子郵件、從表單收集資料,還是同步多個平台的資料,自動化都可以幫助你節省大量時間。

 

在眾多自動化平台中,n8n 以「開源、自我託管、高度擴展性」的特性,逐漸成為技術團隊與自動化愛好者的首選,本篇介紹 n8n 功能。

 

► n8n 是什麼?

 

n8n(發音為 "nin")是一個功能強大、高度靈活且可擴展的開源自動化工具。它允許使用者透過直觀的視覺化介面,將來自不同應用程式和服務的資料串聯起來,建立複雜的自動化工作流程,無需撰寫傳統程式碼。其核心理念在於提供一個基於節點(Node-based)的環境,讓每個節點代表一個特定的應用程式連接器、操作或資料處理步驟。它的特色在於:

· 可視化流程設計:拖拉式的節點介面,讓你可以像畫流程圖一樣設計自動化。

· 支援超過 300 個服務整合:如 Slack、Google Sheets、Notion、Airtable、Telegram、Webhook、MySQL 等。

· 可自訂 JavaScript 程式碼:進階使用者可以在節點中撰寫程式邏輯。

·  自托管或雲端部署皆可:你可以選擇將 n8n 安裝在自己的伺服器,或使用官方的 n8n.cloud。

 

► 為何選擇 n8n?其核心競爭優勢

 

1. 開源與自行主機託管:這是 n8n 相較於其他商業 SaaS 平台(如 Zapier、Make)最顯著的差異化優勢。n8n 允許使用者將其部署在自己的伺服器基礎設施上(例如 Docker、Kubernetes 或 VM),特色:

·資料主權與隱私:所有資料和工作流程執行記錄皆保留在內部環境,符合嚴格的資安規範與隱私政策,對於處理敏感資料的企業尤為關鍵。

·成本效益:無需支付高額的訂閱費用,可有效控制營運成本。

·高度客製化與擴展性:作為開源專案,使用者擁有完整的程式碼存取權,能夠根據特定業務需求進行深度客製化開發與功能擴展。

·無需依賴第三方:擺脫對特定雲端供應商的依賴,降低潛在的服務中斷風險。

2. 直覺式的視覺化工作流程設計器:提供拖放式的圖形使用者介面,使使用者能夠以視覺化的方式建構和管理工作流程。每個節點的輸入、輸出資料結構清晰可見,有助於快速理解資料流向、除錯及協作。

3. 豐富的整合能力與擴展性:內建數百種應用程式節點,涵蓋了主流的 CRM、ERP、資料庫、通訊軟體、雲端服務等。對於未直接支援的服務,n8n 提供強大的 HTTP Request 節點及支援自訂 JavaScript 程式碼節點,可透過 RESTful API 輕鬆連接任何外部系統。

4. 彈性的觸發機制:工作流程的啟動方式多元,包括:

·Webhook:接收來自其他應用程式的 HTTP 請求。

·Cron Job(排程):根據預設的時間點或頻率自動觸發。

·應用程式事件觸發:監聽特定應用程式中的事件(例如:新郵件、新訂單)。

·手動執行:進行測試或一次性任務。

5. 活躍的開源社群支援:擁有全球社群、官方論壇、GitHub 或其他技術社群中獲取支援、分享經驗、提交功能請求或貢獻程式碼,加速問題解決與功能迭代。

 

► n8n 的操作核心概念

 

工作流程(Workflow):一個工作流程代表一個完整的自動化任務序列。它由一個或多個節點組成,從一個觸發點開始,資料依序經過各個節點進行處理,直到任務完成。

 

節點 (Node):節點是工作流程的基礎構成單元。每個節點執行特定的功能,例如:

·觸發節點 (Trigger Nodes)啟動工作流程的節點(例如 Webhook、Cron、應用程式事件)。

·應用程式節點 (App Nodes)與特定應用程式(如 Salesforce、Slack、Google Sheets)互動,執行讀取、寫入、傳送等操作。

·邏輯節點 (Logic Nodes)實現條件判斷 (If/Else)、迴圈 (Loop)、分批處理 (Split In Batches) 等控制流程。

·資料處理節點 (Data Manipulation Nodes)進行資料轉換(設定、移動與重新命名)、過濾(篩選)、排序(排序)等操作。

·通用節點例如,HTTP Request 用於連接任意 API,而 Code 節點則用於執行自訂的 JavaScript 程式碼。

 

►常見應用場景

 

行銷自動化

  • 每次有新的訂閱者加入 Mailchimp,就會自動寄出歡迎信。
  • 監聽 Twitter 關鍵字,自動收集到 Google Sheets

資料同步

  • 每天從 Notion 抓取報表數據,整合到 PostgreSQL
  • 將 Airtable 中的內容同步到另一個 API

通知系統

  • 當某個 API 回傳錯誤時,自動通知技術團隊的 Telegram 群組
  • 每週五自動發送 Slack 提醒:記得填寫週報!

 

►開始使用 n8n

 

1. 線上試用

可以直接使用n8n.cloudhttps://n8n.io 的免費試用帳號已開放。

 

2. 自行部署

使用 Docker 快速啟動:

 

$ docker run -it --rm \
  -p 5678:5678 \
  -v ~/.n8n:/home/node/.n8n \
  n8nio/n8n

 

使用 Node.js(建議 v18+)安裝:

 

$ curl -fsSL https://deb.nodesource.com/setup_18.x | sudo -E bash -
$ sudo apt-get install -y nodejs
$ npm install n8n -g
$ n8n

 

啟動後你可以透過 http://localhost:5678 存取 n8n 編輯介面。

 

 

►抓取每日科技新聞

 

Telegram 機器人建立

• 開啟 Telegram 並搜尋 @BotFather:BotFather 是 Telegram 官方用來管理所有機器人的機器人。確保你找到的是帶有藍色勾勾驗證標誌的 @BotFather。https://t.me/BotFather

• 開始與 BotFather 對話:點擊「開始」或輸入 /start。

• 建立新機器人:輸入指令 /newbot

• 為你的 bot 命名:BotFather 會要求你輸入一個顯示名稱 (Name),這是使用者在聊天中會看到的名稱,可以包含空格,例如「我的聊天機器人」。

• bot 設定一個使用者名稱(Username):這是用戶用來搜尋你的 bot 的名稱,必須是唯一的,並且必須以 bot 或 _bot 結尾。

• 取得 Bot Token:成功建立後,BotFather 會給你一串很長的 API Token(例如 123456:ABC-DEF1234ghIkl-zyx57W2E1u1mM)。

• 在 Telegram 中找到你自己的 Chat ID,可使用 https://api.telegram.org/bot<YOUR_TOKEN>/getUpdates

• 在 Telegram 搜尋你的 Bot 名稱(例如:@your_bot_name)

• 點選 開始對話 或傳一個字(如「Hi」)給它

• 輸入網址產生:

 

句子: {
  "ok": true,
  "result": [
    {
      "update_id": 123456789,
      "message": {
        "message_id": 1,
        "from": {
          "id": 1122334455, ←這是你的 Chat ID
          "first_name": "你的名字",
          ...
        },
        "chat": {
          "id": 1122334455, ←用這個
          "first_name": "你的名字",
          "type": "private"
        },
        "text": "Hi"
      }
    }
  ]
}

 

新增工作流程

 

 

搜尋Telegram

 

 

Telegram 代幣

 

 

每日抓取流程:

  1. 建立新工作流程(workflow)

  2. 加入「Schedule Trigger」每天自動執行

  3. 加入 HTTP Request 抓取新聞 RSS

  4. 使用「RSS Feed Read」解析內容(或自行撰寫解析器)

  5. 選擇輸出方式(儲存成 Google Sheets、Email、Telegram 等)

  6. 節點類型:排程觸發器

設定時間:

· 模式:每天

· 小時:8 → 每天早上 8 點抓新聞

加入 HTTP Request 節點

設定如下:

· 方法:GET

· URL:https://www.theverge.com/rss/index.xml

· 回應格式:字串

 

直接使用json來設定,其中chatId需要替換Telegram Bot的chatId,daily-ai-chip-news-telegram.json內容如下:

 

句子: {
  "name": "每日 AI 與晶片新聞推送到 Telegram",
  "nodes": [
    {
      "parameters": {
        "triggerTimes": [
          {
            "hour": 9,
            "minute": 0
          }
        ]
      },
      "id": "scheduleTrigger",
      "name": "排程觸發器",
      "type": "n8n-nodes-base.scheduleTrigger",
      "typeVersion": 1,
      "position": [
        200,
        300
      ]
    },
    {
      "parameters": {
        "url": "https://www.theverge.com/rss/index.xml"
      },
      "id": "verge",
      "name": "The Verge RSS",
      "type": "n8n-nodes-base.rssFeedRead",
      "typeVersion": 1,
      "position": [
        400,
        100
      ]
    },
    {
      "parameters": {
        "url": "https://techcrunch.com/feed/"
      },
      "id": "techcrunch",
      "name": "TechCrunch RSS",
      "type": "n8n-nodes-base.rssFeedRead",
      "typeVersion": 1,
      "position": [
        400,
        300
      ]
    },
    {
      "parameters": {
        "url": "https://www.engadget.com/rss.xml"
      },
      "id": "engadget",
      "name": "Engadget RSS",
      "type": "n8n-nodes-base.rssFeedRead",
      "typeVersion": 1,
      "position": [
        400,
        500
      ]
    },
    {
      "parameters": {
        "mode": "passThrough"
      },
      "id": "mergeNews",
      "name": "合併新聞",
      "type": "n8n-nodes-base.merge",
      "typeVersion": 1,
      "position": [
        600,
        300
      ]
    },
    {
      "parameters": {
        "functionCode": "const filtered = [];\nfor (const item of items) {\n  const title = item.json.title?.toLowerCase() || '';\n  if (title.includes('ai') || title.includes('chip') || title.includes('晶片')) {\n    filtered.push(item);\n  }\n}\nreturn filtered;"
      },
      "id": "filterNews",
      "name": "篩選 AI/晶片新聞",
      "type": "n8n-nodes-base.function",
      "typeVersion": 1,
      "position": [
        800,
        300
      ]
    },
    {
      "parameters": {
        "functionCode": "let message = '今日 AI / 晶片新聞摘要\\n\\n';\nfor (const item of items) {\n  const title = item.json.title;\n  const link = item.json.link;\n  message += `<a href=\"${link}\">${title}</a>\\n`;\n}\nif (items.length === 0) {\n  message = '今日沒有關於 AI 或晶片的科技新聞。';\n}\nreturn [{ json: { message } }];"
      },
      "id": "buildMessage",
      "name": "建立 Telegram 訊息",
      "type": "n8n-nodes-base.function",
      "typeVersion": 1,
      "position": [
        1000,
        300
      ]
    },
    {
      "parameters": {
        "chatId": "xxxxxxxxxx", <=  修改成你的 Chat ID
        "text": "={{$json.message}}",
        "options": {
          "parse_mode": "HTML"
        }
      },
      "id": "sendTelegram",
      "name": "發送到 Telegram",
      "type": "n8n-nodes-base.telegram",
      "typeVersion": 1,
      "position": [
        1200,
        300
      ],
      "credentials": {
        "telegramApi": {
          "id": "1",
          "name": "我的 Telegram Bot"
        }
      }
    }
  ],
  "connections": {
    "scheduleTrigger": {
      "main": [
        [
          {
            "node": "verge",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "techcrunch",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "engadget",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "verge": {
      "main": [
        [
          {
            "node": "mergeNews",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "techcrunch": {
      "main": [
        [
          {
            "node": "mergeNews",
            "type": "main",
            "index": 1
          }
        ]
      ]
    },
    "engadget": {
      "main": [
        [
          {
            "node": "mergeNews",
            "type": "main",
            "index": 2
          }
        ]
      ]
    },
    "mergeNews": {
      "main": [
        [
          {
            "node": "filterNews",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "filterNews": {
      "main": [
        [
          {
            "node": "buildMessage",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "buildMessage": {
      "main": [
        [
          {
            "node": "sendTelegram",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  },
  "active": false,
  "settings": {},
  "versionId": "1"
}

 

匯入每日 AI 晶片新聞 Telegram.json

 

 

建立完成

 

 

測試

 

 

►小結

 

n8n 提供一個自由、彈性且功能強大的平台,讓你能夠以視覺化的方式打造自己的自動化工作流程。無論你是想取代像 Zapier 這樣的付費工具,還是想部署一個私有且高度自訂化的自動化平台,n8n 都是個不錯的選擇。本篇博文就到這邊,期待下一篇博文吧!

 

►問與答

 

Q1:n8n 是什麼?

A:n8n 是一個開源的自動化工作流程平台,它可以幫助你將不同的應用服務(例如 Gmail、Notion、Slack、Google Sheets)連接在一起,並根據條件自動執行流程,例如「接收到表單 → 儲存資料 → 發送通知」。

 

Q2:n8n 需要寫程式嗎?

A:大多數流程可以用拖拉節點的方式完成,不需要撰寫程式。但如果你想要進階邏輯,可以在 Function 節點中使用 JavaScript 撰寫一些資料處理語法。

 

Q3:n8n 支援哪些服務整合?

A:n8n 支援超過 300 種服務與應用程式,包括:

Google 試算表

Telegram / Slack / Discord

Notion / Airtable / Trello

Webhook / REST API

MySQL / PostgreSQL 等資料庫

 

Q4:n8n需要付費嗎?

A:使用 n8n.cloud(官方託管)有免費與付費方案。如果你選擇自己安裝(自託管),完全免費,因為它是開源軟體!

 

Q5:n8n 需要安裝在電腦上嗎?

A:不一定!你可以直接使用官方的 n8n.cloud 線上版,或者自己安裝在電腦、伺服器上,或使用 Docker 執行。

 

►參考

★博文內容均由個人提供,與平台無關,如有違法或侵權,請與網站管理員聯繫。

★文明上網,請理性發言。內容一周內被舉報5次,發文人進小黑屋喔~

參考來源

:

評論