AutomationFlowsSlack & Telegram › Send Telegram Message on New RSS Reader Item

Send Telegram Message on New RSS Reader Item

Original n8n title: Send a Message to Telegram on a New Item Saved to Reader

Send A Message To Telegram On A New Item Saved To Reader. Uses manualTrigger, writeBinaryFile, readBinaryFile, httpRequest. Event-driven trigger; 11 nodes.

Event trigger★★★★☆ complexity11 nodesWrite Binary FileRead Binary FileHTTP RequestTelegramMove Binary DataFunction Item
Slack & Telegram Trigger: Event Nodes: 11 Complexity: ★★★★☆ Added:

This workflow follows the HTTP Request → Telegram recipe pattern — see all workflows that pair these two integrations.

The workflow JSON

Copy or download the full n8n JSON below. Paste it into a new n8n workflow, add your credentials, activate. Full import guide →

Download .json
{
  "nodes": [
    {
      "name": "On clicking 'execute'",
      "type": "n8n-nodes-base.manualTrigger",
      "position": [
        340,
        380
      ],
      "parameters": {},
      "typeVersion": 1
    },
    {
      "name": "Write Binary File",
      "type": "n8n-nodes-base.writeBinaryFile",
      "position": [
        1680,
        280
      ],
      "parameters": {
        "fileName": "={{$node[\"Config\"].parameter[\"values\"][\"string\"][0][\"value\"]}}"
      },
      "typeVersion": 1
    },
    {
      "name": "Read Binary File",
      "type": "n8n-nodes-base.readBinaryFile",
      "position": [
        580,
        460
      ],
      "parameters": {
        "filePath": "={{$node[\"Config\"].parameter[\"values\"][\"string\"][0][\"value\"]}}"
      },
      "typeVersion": 1,
      "continueOnFail": true,
      "alwaysOutputData": true
    },
    {
      "name": "HTTP Request",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        1020,
        460
      ],
      "parameters": {
        "url": "https://readwise.io/reader/api/state/",
        "options": {},
        "authentication": "headerAuth",
        "queryParametersUi": {
          "parameter": [
            {
              "name": "schemaVersion",
              "value": "5"
            },
            {
              "name": "filter[updated_at][gt]",
              "value": "={{$json[\"last_synced\"]}}"
            }
          ]
        },
        "headerParametersUi": {
          "parameter": []
        }
      },
      "credentials": {
        "httpHeaderAuth": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1
    },
    {
      "name": "Telegram",
      "type": "n8n-nodes-base.telegram",
      "position": [
        1480,
        460
      ],
      "parameters": {
        "text": "={{$json[\"title\"]}} by {{$json[\"author\"]}}\n\n{{$json[\"summary\"]}}\n\n{{$json[\"url\"]}}",
        "chatId": "={{$node[\"Config\"].parameter[\"values\"][\"number\"][0][\"value\"]}}",
        "additionalFields": {}
      },
      "credentials": {
        "telegramApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1
    },
    {
      "name": "Binary to json",
      "type": "n8n-nodes-base.moveBinaryData",
      "position": [
        800,
        460
      ],
      "parameters": {
        "options": {}
      },
      "typeVersion": 1,
      "alwaysOutputData": true
    },
    {
      "name": "Json to binary",
      "type": "n8n-nodes-base.moveBinaryData",
      "position": [
        1480,
        280
      ],
      "parameters": {
        "mode": "jsonToBinary",
        "options": {}
      },
      "typeVersion": 1
    },
    {
      "name": "Set new update time",
      "type": "n8n-nodes-base.functionItem",
      "position": [
        1280,
        280
      ],
      "parameters": {
        "functionCode": "return {\n  last_synced: new Date().getTime()\n};"
      },
      "typeVersion": 1
    },
    {
      "name": "Split into baches",
      "type": "n8n-nodes-base.function",
      "position": [
        1280,
        460
      ],
      "parameters": {
        "functionCode": "const newValue = Object.values(items[0].json.documents).filter(it => it.category === 'article').filter(it => it.children.length === 0).map(it => ({\n  json: {\n      url: it.url,\n  title: it.title,\n  author: it.author,\n  summary: it.summary,\n  saved_at: new Date(it.saved_at),\n  }\n}))\n\n\nreturn newValue;"
      },
      "typeVersion": 1
    },
    {
      "name": "Cron",
      "type": "n8n-nodes-base.cron",
      "position": [
        340,
        540
      ],
      "parameters": {
        "triggerTimes": {
          "item": [
            {
              "mode": "everyX",
              "unit": "minutes",
              "value": 10
            }
          ]
        }
      },
      "typeVersion": 1
    },
    {
      "name": "Config",
      "type": "n8n-nodes-base.set",
      "position": [
        800,
        300
      ],
      "parameters": {
        "values": {
          "number": [
            {
              "name": "Telegram chat it",
              "value": 19999
            }
          ],
          "string": [
            {
              "name": "file path",
              "value": "/whatever/readwiseLastSynced.json"
            }
          ]
        },
        "options": {}
      },
      "typeVersion": 1
    }
  ],
  "connections": {
    "Cron": {
      "main": [
        [
          {
            "node": "Read Binary File",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "HTTP Request": {
      "main": [
        [
          {
            "node": "Split into baches",
            "type": "main",
            "index": 0
          },
          {
            "node": "Set new update time",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Binary to json": {
      "main": [
        [
          {
            "node": "HTTP Request",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Json to binary": {
      "main": [
        [
          {
            "node": "Write Binary File",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Read Binary File": {
      "main": [
        [
          {
            "node": "Binary to json",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Split into baches": {
      "main": [
        [
          {
            "node": "Telegram",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Set new update time": {
      "main": [
        [
          {
            "node": "Json to binary",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "On clicking 'execute'": {
      "main": [
        [
          {
            "node": "Read Binary File",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}

Credentials you'll need

Each integration node will prompt for credentials when you import. We strip credential IDs before publishing — you'll add your own.

Pro

For the full experience including quality scoring and batch install features for each workflow upgrade to Pro

How this works

Stay effortlessly informed about articles you save in your RSS reader by receiving instant Telegram notifications for new items, ensuring you never miss key updates without constantly checking feeds. This workflow suits avid readers, researchers, or professionals monitoring specific topics, delivering concise summaries or links directly to your messaging app. The core step involves an event trigger that detects new saves, followed by an HTTP request to fetch details and the Telegram node to dispatch the alert seamlessly.

Use this workflow when you rely on a reader like Inoreader or Feedly for curated content and want real-time mobile alerts without app overload. Avoid it if your reader lacks robust event hooks or you prefer batched digests over immediacy. Common variations include adding filters in the function node to prioritise items by keyword or integrating email as an alternative to Telegram for broader reach.

About this workflow

Send A Message To Telegram On A New Item Saved To Reader. Uses manualTrigger, writeBinaryFile, readBinaryFile, httpRequest. Event-driven trigger; 11 nodes.

Source: https://github.com/Zie619/n8n-workflows — original creator credit. Request a take-down →

More Slack & Telegram workflows → · Browse all categories →

Related workflows

Workflows that share integrations, category, or trigger type with this one. All free to copy and import.

Slack & Telegram

This workflow aims to build a simple bot that will send a message to a telegram channel every time there is a new saved item to the Reader.

Write Binary File, Read Binary File, HTTP Request +3
Slack & Telegram

Extend N8N With Additional Tools. Uses telegram, telegramTrigger, httpRequest, spreadsheetFile. Event-driven trigger; 21 nodes.

Telegram, Telegram Trigger, HTTP Request +4
Slack & Telegram

This workflow extends n8n and uses R language graphic capabilities. This is a Telegram bot which fetches weather data via the openweathermap.org API, plots an image using ggoplot2 package from R and s

Telegram, Telegram Trigger, HTTP Request +4
Slack & Telegram

google drive to instagram, tiktok and youtube. Uses googleDriveTrigger, googleDrive, errorTrigger, telegram. Event-driven trigger; 15 nodes.

Google Drive Trigger, Google Drive, Error Trigger +5
Slack & Telegram

02 - Photo OCR Handler. Uses telegramTrigger, telegram, httpRequest, readBinaryFile. Event-driven trigger; 16 nodes.

Telegram Trigger, Telegram, HTTP Request +2