你遇到的痛點
如果你曾經在 n8n 中串接 Telegram 機器人,應該對 MarkdownV2 格式又愛又恨。想要發送格式化的訊息,卻總是遇到「Bad Request: can't parse entities」錯誤;明明只是想加個連結或粗體字,卻要花時間研究哪些符號需要跳脫。
問題的核心在於 Telegram 的 MarkdownV2 格式要求極度嚴格。所有特殊符號如 .、+、-、(、)、[、] 等都必須用反斜線跳脫,否則就會解析失敗。當你的工作流程需要處理大量動態內容時,手動處理這些跳脫字元簡直是噩夢。
telegramify-markdown 如何解決問題
telegramify-markdown 是一個專門為 Telegram 設計的 Markdown 轉換工具,基於 Unified 和 Remark 框架開發。它能自動將標準 Markdown 格式轉換為 Telegram 相容的 MarkdownV2 格式,並提供三種處理策略:· escape 模式:自動跳脫所有不支援的特殊符號,確保訊息能順利發送
· remove 模式:直接移除不支援的標籤,保留純文字內容
· keep 模式:保持原樣,適合已經處理好格式的內容
這個工具已經在 GitHub 上獲得 72 顆星,被 159 個專案使用,穩定性和實用性都經過社群驗證。
方案一:直接安裝社群節點(推薦)
好消息是,已經有開發者將 telegramify-markdown 封裝成 n8n 社群節點,你可以直接安裝使用,完全不需要寫程式。
安裝步驟:
- 登入你的 n8n 實例(自架版)
- 點擊右上角的「Settings」設定選項
- 選擇「Community Nodes」社群節點功能
- 點擊「Install a community node」安裝按鈕
- 輸入套件名稱:
@aotoki/n8n-nodes-telegramify-markdown - 點擊安裝並等待完成,重新整理頁面後即可使用
使用方式:
安裝完成後,在工作流程中搜尋「Telegramify Markdown」節點,加入工作流程並配置參數。節點會自動處理 Markdown 轉換,你只需要將輸出連接到 Telegram 節點,並在 Telegram 節點中設定 Parse Mode 為「MarkdownV2」即可。
典型的工作流程結構是:觸發器 → 取得 Markdown 內容 → Telegramify Markdown → Telegram 發送訊息。這樣的設計讓你可以專注於內容本身,而不用擔心格式問題。
方案二:使用 Code Node 自行整合
如果你的 n8n 環境無法安裝社群節點(例如某些 Docker 配置限制),或者你想要更彈性的控制,可以透過 Code Node 直接使用 telegramify-markdown 套件。
前置準備:
首先需要在 n8n 環境中安裝套件。如果使用 Docker 部署,執行以下指令進入容器並安裝:
docker exec -it <container-name> sh
npm install -g telegramify-markdown
接著設定環境變數允許使用外部模組。在 Docker 啟動時加入 NODE_FUNCTION_ALLOW_EXTERNAL=telegramify-markdown 參數,或直接設定為 * 允許所有模組。
Code Node 實作:
在工作流程中加入 Code Node,選擇 JavaScript 模式,輸入以下程式碼:
const telegramifyMarkdown = require('telegramify-markdown');
const items = $input.all();
const outputItems = items.map(item => {
const markdown = item.json.content || item.json.text;
const strategy = 'escape';
const telegramMarkdown = telegramifyMarkdown(markdown, strategy);
return {
json: {
...item.json,
telegramMarkdown: telegramMarkdown
}
};
});
return outputItems;
這段程式碼會取得輸入資料中的 Markdown 內容,使用 escape 策略進行轉換,並將結果存入 telegramMarkdown 欄位。你可以根據需求調整策略參數,或是從工作流程中動態傳入。
實際應用場景
這個解決方案特別適合以下情境:
內容發布自動化:將部落格文章、電子報內容自動轉發到 Telegram 頻道,保持格式一致性
AI 助理回覆:當 AI 生成的回覆包含 Markdown 格式時,自動轉換後發送給用戶
資料報表推送:定期產生的報表或統計資料,以易讀的格式推送到 Telegram 群組
多平台內容同步:在不同平台間同步內容時,自動適配各平台的格式要求
注意事項與限制
社群節點僅適用於自架版 n8n,n8n Cloud 目前不支援安裝未驗證的社群節點。如果你使用的是雲端版本,只能選擇 Code Node 方案,但需要確認你的訂閱方案是否允許使用外部模組。
安裝社群節點後需要重啟 n8n 服務才會顯示在節點列表中。如果使用 Docker,執行 docker restart <container-name> 即可;如果是 npm 安裝,執行 n8n restart 重啟服務。
環境變數 NODE_FUNCTION_ALLOW_EXTERNAL 的設定會影響安全性,建議明確指定允許的套件名稱,而非使用 * 開放所有外部模組。在正式環境中,這個設定需要特別注意。
結語
Telegram MarkdownV2 格式的複雜性不應該成為自動化的阻礙。透過 telegramify-markdown 工具,無論是使用現成的社群節點,或是透過 Code Node 自行整合,都能輕鬆解決格式轉換問題。
選擇社群節點方案可以快速上手,適合大多數使用情境;選擇 Code Node 方案則提供更高的彈性,適合需要客製化處理邏輯的場景。根據你的實際需求選擇合適的方案,讓 n8n 工作流程更加順暢。
現在就試試看,把那些令人頭痛的格式問題交給自動化處理吧。
參考資料
· GitHub - telegramify-markdown





















