AutomationFlowsAI & RAG › RSS to Telegram with Groq AI Rewriting

RSS to Telegram with Groq AI Rewriting

Original n8n title: Automated RSS to Telegram Publisher with Groq AI Rewriting

ByAnton Bezman @nefar1an on n8n.io

This workflow monitors multiple RSS feeds, detects new posts, rewrites them using AI, and sends the formatted output to your Telegram account. It helps you keep your Telegram feed active with clear, polished, and ready-to-publish content — all fully automated. A scheduled…

Cron / scheduled trigger★★★★☆ complexityAI-powered16 nodesGroq ChatRSS Feed ReadData TableAgentTelegram
AI & RAG Trigger: Cron / scheduled Nodes: 16 Complexity: ★★★★☆ AI nodes: yes Added:

This workflow corresponds to n8n.io template #11566 — we link there as the canonical source.

This workflow follows the Agent → Datatable 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
{
  "id": "XkjKJ8w09XNqUphj",
  "name": "Telegram RSS Autoposter",
  "tags": [],
  "nodes": [
    {
      "id": "05bf737f-a6e2-47d5-a61a-718d6e9a40b4",
      "name": "Groq Chat Model",
      "type": "@n8n/n8n-nodes-langchain.lmChatGroq",
      "position": [
        2496,
        256
      ],
      "parameters": {
        "model": "groq/compound-mini",
        "options": {}
      },
      "credentials": {
        "groqApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "dc5ad1c9-7b92-44f6-9536-d1ea6fd98ddc",
      "name": "Every 30 minutes",
      "type": "n8n-nodes-base.scheduleTrigger",
      "position": [
        1040,
        16
      ],
      "parameters": {
        "rule": {
          "interval": [
            {
              "field": "minutes",
              "minutesInterval": 30
            }
          ]
        }
      },
      "typeVersion": 1.3
    },
    {
      "id": "ec9ae3bb-8389-4dcc-bb6f-67554b87ac09",
      "name": "Read RSS links",
      "type": "n8n-nodes-base.rssFeedRead",
      "position": [
        1552,
        16
      ],
      "parameters": {
        "url": "={{ $json.rss }}",
        "options": {}
      },
      "typeVersion": 1.2
    },
    {
      "id": "1856442e-3b9c-4a1a-aea4-5d6700bbbe73",
      "name": "Add link",
      "type": "n8n-nodes-base.dataTable",
      "position": [
        2192,
        16
      ],
      "parameters": {
        "columns": {
          "value": {
            "link": "={{ $json.link }}"
          },
          "schema": [
            {
              "id": "link",
              "type": "string",
              "display": true,
              "removed": false,
              "readOnly": false,
              "required": false,
              "displayName": "link",
              "defaultMatch": false
            }
          ],
          "mappingMode": "defineBelow",
          "matchingColumns": [
            "link"
          ],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        },
        "options": {},
        "dataTableId": {
          "__rl": true,
          "mode": "list",
          "value": "Pq55D6gzQF3MyLNa",
          "cachedResultUrl": "/projects/1lm79qXlf70Tj1rt/datatables/Pq55D6gzQF3MyLNa",
          "cachedResultName": "post_links"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "eb5bbc5a-6f49-4f5c-b851-2af81d31f3a0",
      "name": "Rewrite Post",
      "type": "@n8n/n8n-nodes-langchain.agent",
      "position": [
        2416,
        16
      ],
      "parameters": {
        "text": "=[empty]",
        "options": {
          "systemMessage": "=You handle news formatting for this Telegram channel.\nYour role is to make each news post look polished and visually appealing, without altering the actual information too much.\nIf a text is longer than 700 characters, shorten it carefully so the essential meaning stays intact and the final version fits the limit.\nFeel free to use Telegram\u2019s formatting tools \u2014 bold, italic, and fitting emojis \u2014 to enhance readability.\nEvery result you produce should be a clean, publication-ready news post.\nCreate a beautifully formatted version of the news titled:\n\"{{ $('Get only latest link').item.json.title }}\"\n---\n{{ $('Get only latest link').item.json.content }}\n---\nThe response should be a ready-to-publish text."
        },
        "promptType": "define"
      },
      "typeVersion": 2.2
    },
    {
      "id": "e6b8073b-72c8-496e-96c1-b4f55b2e64f7",
      "name": "Send post to user",
      "type": "n8n-nodes-base.telegram",
      "position": [
        2768,
        16
      ],
      "parameters": {
        "text": "={{ $json.output }}",
        "chatId": "123456789",
        "additionalFields": {}
      },
      "credentials": {
        "telegramApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "7c3a0c17-9d3d-43b6-ae7f-ee6fa7ed7cfa",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        496,
        -112
      ],
      "parameters": {
        "width": 496,
        "height": 544,
        "content": "**Telegram RSS Autoposter**\n\nThis workflow automatically pulls new articles from a set of RSS feeds and sends AI-enhanced summaries to your Telegram chat.\n\n**How it works:**\n\n1. Every 30 minutes, the workflow checks each RSS feed listed in your n8n table for new items.\n2. It verifies whether the link has already been processed.\n3. Previously posted links are skipped, and new ones are saved in the n8n tables.\n4. A Groq free-tier AI model rewrites and refines the article text.\n5. The final content is sent to your Telegram chat.\n\n**Ideal For:**\n\nAnyone who wants consistent, polished Telegram updates without manual work.\n\n**Requirements:**\n\n* Two n8n tables: rss_list (with an rss column) and post_links (with a link column)\n* Groq API token\n* Telegram bot token and your Telegram user ID"
      },
      "typeVersion": 1
    },
    {
      "id": "5379e2dc-a893-4410-966e-b87312236444",
      "name": "Sticky Note1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1008,
        -112
      ],
      "parameters": {
        "color": 7,
        "width": 680,
        "height": 540,
        "content": "**1. Get RSS posts**\nEvery 30 minutes, fetch posts from each RSS feed stored in the rss_list table."
      },
      "typeVersion": 1
    },
    {
      "id": "fd269440-aa0f-405f-a43b-e1068d94165f",
      "name": "Sticky Note2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        2352,
        -112
      ],
      "parameters": {
        "color": 7,
        "width": 344,
        "height": 540,
        "content": "**3. Rewrite content**\nFree-tier Groq AI rewrites the post and shortens it when necessary."
      },
      "typeVersion": 1
    },
    {
      "id": "7a4af82d-cf73-4b3a-a3b8-545260f5cec3",
      "name": "Sticky Note3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        2720,
        -112
      ],
      "parameters": {
        "color": 7,
        "width": 280,
        "height": 540,
        "content": "**4. Send to Telegram**\nEach enhanced RSS post is sent to your private Telegram messages."
      },
      "typeVersion": 1
    },
    {
      "id": "09be1f04-ba6a-4e85-b0e2-d7996b712c19",
      "name": "Sticky Note4",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1712,
        -112
      ],
      "parameters": {
        "color": 7,
        "width": 616,
        "height": 540,
        "content": "**2. Process latest links**\nRetrieve only the latest post from each RSS feed.\nCheck whether the post\u2019s link exists in the post_links table, and add it if it\u2019s not found."
      },
      "typeVersion": 1
    },
    {
      "id": "5c41067a-2874-4e16-9c24-b0d934540751",
      "name": "If link not in table",
      "type": "n8n-nodes-base.dataTable",
      "position": [
        1968,
        16
      ],
      "parameters": {
        "filters": {
          "conditions": [
            {
              "keyName": "link",
              "keyValue": "={{ $json.link }}"
            }
          ]
        },
        "operation": "rowNotExists",
        "dataTableId": {
          "__rl": true,
          "mode": "list",
          "value": "Pq55D6gzQF3MyLNa",
          "cachedResultUrl": "/projects/1lm79qXlf70Tj1rt/datatables/Pq55D6gzQF3MyLNa",
          "cachedResultName": "post_links"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "2056669f-2e86-4b83-aed7-573039aac5b5",
      "name": "For each RSS",
      "type": "n8n-nodes-base.splitInBatches",
      "position": [
        1376,
        16
      ],
      "parameters": {
        "options": {}
      },
      "typeVersion": 3
    },
    {
      "id": "51941d34-5b97-4881-aaf3-e02e0fadb923",
      "name": "Finish workflow",
      "type": "n8n-nodes-base.noOp",
      "position": [
        1552,
        240
      ],
      "parameters": {},
      "typeVersion": 1
    },
    {
      "id": "2a40ac67-5d88-42f0-a67a-378ece39b463",
      "name": "Get RSS list",
      "type": "n8n-nodes-base.dataTable",
      "position": [
        1200,
        16
      ],
      "parameters": {
        "operation": "get",
        "returnAll": true,
        "dataTableId": {
          "__rl": true,
          "mode": "list",
          "value": "oaMD72VJvrhSBLl5",
          "cachedResultUrl": "/projects/1lm79qXlf70Tj1rt/datatables/oaMD72VJvrhSBLl5",
          "cachedResultName": "rss_list"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "30a8b800-38a8-4931-b4d7-6de2c4572260",
      "name": "Get only latest link",
      "type": "n8n-nodes-base.limit",
      "position": [
        1744,
        16
      ],
      "parameters": {},
      "typeVersion": 1
    }
  ],
  "active": false,
  "settings": {
    "executionOrder": "v1"
  },
  "versionId": "9519ff6a-af4c-4b09-92ce-d38643b41c1c",
  "connections": {
    "Add link": {
      "main": [
        [
          {
            "node": "Rewrite Post",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "For each RSS": {
      "main": [
        [
          {
            "node": "Finish workflow",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Read RSS links",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Get RSS list": {
      "main": [
        [
          {
            "node": "For each RSS",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Rewrite Post": {
      "main": [
        [
          {
            "node": "Send post to user",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Read RSS links": {
      "main": [
        [
          {
            "node": "Get only latest link",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Groq Chat Model": {
      "ai_languageModel": [
        [
          {
            "node": "Rewrite Post",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "Every 30 minutes": {
      "main": [
        [
          {
            "node": "Get RSS list",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Send post to user": {
      "main": [
        [
          {
            "node": "For each RSS",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Get only latest link": {
      "main": [
        [
          {
            "node": "If link not in table",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "If link not in table": {
      "main": [
        [
          {
            "node": "Add link",
            "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

About this workflow

This workflow monitors multiple RSS feeds, detects new posts, rewrites them using AI, and sends the formatted output to your Telegram account. It helps you keep your Telegram feed active with clear, polished, and ready-to-publish content — all fully automated. A scheduled…

Source: https://n8n.io/workflows/11566/ — original creator credit. Request a take-down →

More AI & RAG workflows → · Browse all categories →

Related workflows

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

AI & RAG

Workflow Name: Geopolitics Breaking News Alert System Author: Devjothi Dutta Category: Productivity, News & Media, AI/Machine Learning Complexity: Medium Setup Time: 45-60 minutes

RSS Feed Read, Telegram, Agent +4
AI & RAG

Tags: EU News, RSS, AI Classifier, Data Table, Email Digest, Automation, n8n

RSS Feed Read, Gmail, Data Table +5
AI & RAG

BoomerBobBot.TP. Uses agent, telegramTrigger, telegram, memoryBufferWindow. Event-driven trigger; 95 nodes.

Agent, Telegram Trigger, Telegram +10
AI & RAG

Automatically scan major financial newswires for biotech catalyst events, score them with AI sentiment analysis, and surface ranked trade candidates — all without manual monitoring.

RSS Feed Read, Data Table, HTTP Request +4
AI & RAG

ITfest. Uses telegramTrigger, telegram, textClassifier, agent. Event-driven trigger; 70 nodes.

Telegram Trigger, Telegram, Text Classifier +6