AutomationFlowsWeb Scraping › Send Scheduled RSS News Digest Emails with Formatted HTML in Gmail

Send Scheduled RSS News Digest Emails with Formatted HTML in Gmail

BySarfaraz Muhammad Sajib @sarfarazmuhammad on n8n.io

Automatically send beautifully formatted news digests from any RSS feed (e.g., Prothom Alo) directly to your Gmail inbox on a schedule using this n8n workflow. Ideal for news curators, bloggers, media professionals, or anyone who wants a daily/weekly news summary in their email.

Cron / scheduled trigger★★★★☆ complexity6 nodesGmailXMLHTTP Request
Web Scraping Trigger: Cron / scheduled Nodes: 6 Complexity: ★★★★☆ Added:

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

This workflow follows the Gmail → HTTP Request 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": "a45d1jkHh90Cr2bF",
  "name": "Scheduled RSS News Digest Emails with Gmail",
  "tags": [],
  "nodes": [
    {
      "id": "544b4167-737b-4f3f-9866-457712b93b8b",
      "name": "Schedule Trigger",
      "type": "n8n-nodes-base.scheduleTrigger",
      "position": [
        -280,
        320
      ],
      "parameters": {
        "rule": {
          "interval": [
            {}
          ]
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "24f4a95c-3009-46c5-adea-f91231dc817e",
      "name": "Send a message",
      "type": "n8n-nodes-base.gmail",
      "position": [
        600,
        320
      ],
      "parameters": {
        "message": "=<!DOCTYPE html>\n<html lang=\"en\" >\n<head>\n  <meta charset=\"UTF-8\" />\n  <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\" />\n  <title>News Digest</title>\n  <style>\n    /* Reset */\n    body, table, td, a {\n      -webkit-text-size-adjust: 100%;\n      -ms-text-size-adjust: 100%;\n    }\n    table, td {\n      mso-table-lspace: 0pt;\n      mso-table-rspace: 0pt;\n    }\n    img {\n      -ms-interpolation-mode: bicubic;\n    }\n    body {\n      margin: 0;\n      padding: 0;\n      font-family: \"Segoe UI\", Tahoma, Geneva, Verdana, sans-serif;\n      background-color: #ffffff;\n      color: #333333;\n    }\n    .email-container {\n      max-width: 600px;\n      margin: 0 auto;\n      background: #ffffff;\n      border-radius: 8px;\n      overflow: hidden;\n      box-shadow: 0 2px 8px rgba(0,0,0,0.1);\n      border: 1px solid #cc0000;\n    }\n    .header {\n      background-color: #cc0000; /* Bold red */\n      color: #ffffff;\n      padding: 20px 30px;\n      text-align: center;\n      font-size: 24px;\n      font-weight: bold;\n    }\n    .content {\n      padding: 20px 30px;\n    }\n    .article {\n      border-bottom: 1px solid #f0f0f0;\n      padding: 15px 0;\n    }\n    .article:last-child {\n      border-bottom: none;\n    }\n    .title {\n      font-size: 18px;\n      font-weight: 600;\n      color: #cc0000;\n      margin: 0 0 8px 0;\n      text-decoration: none;\n    }\n    .summary {\n      font-size: 14px;\n      color: #555555;\n      margin: 0 0 8px 0;\n    }\n    .meta {\n      font-size: 12px;\n      color: #999999;\n    }\n    .footer {\n      text-align: center;\n      padding: 15px 30px;\n      font-size: 12px;\n      color: #cc0000;\n      background-color: #fef0f0;\n      border-top: 1px solid #cc0000;\n    }\n    a.button {\n      display: inline-block;\n      background-color: #cc0000;\n      color: white !important;\n      padding: 10px 15px;\n      border-radius: 4px;\n      text-decoration: none;\n      font-weight: 600;\n      margin-top: 10px;\n    }\n    a.button:hover {\n      background-color: #990000;\n    }\n    a {\n      color: #cc0000;\n      text-decoration: none;\n    }\n    a:hover {\n      text-decoration: underline;\n    }\n    @media screen and (max-width: 620px) {\n      .email-container {\n        width: 100% !important;\n        margin: 0 auto !important;\n        border-radius: 0 !important;\n      }\n      .header, .content, .footer {\n        padding-left: 15px !important;\n        padding-right: 15px !important;\n      }\n      .title {\n        font-size: 16px !important;\n      }\n    }\n  </style>\n</head>\n<body>\n  <div class=\"email-container\" role=\"article\" aria-roledescription=\"email\" aria-label=\"News Digest\">\n    <div class=\"header\">\n      News RSS Feed\n    </div>\n    <div class=\"content\">\n      <!-- Repeat this block for each article -->\n\n{{ $json.html }}\n\n\n      <!-- End article block -->\n      \n      <!-- Add more article blocks dynamically here -->\n      \n    </div>\n  </div>\n</body>\n</html>\n",
        "options": {},
        "subject": "News Digest From RSS"
      },
      "credentials": {
        "gmailOAuth2": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 2.1
    },
    {
      "id": "391ef1b4-63cc-4bb2-9565-f3a967d170f9",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -140,
        -80
      ],
      "parameters": {
        "width": 680,
        "height": 560,
        "content": "Scheduled RSS News Digest Automation Workflow\n\n**Steps**\n- Schedule Trigger: Runs on a set interval.\n- HTTP Request: Fetches RSS feed from example: \"prothomalo.com\" (You can choose yours).\n- XML Node: Parses RSS XML to JSON.\n- Format Html Block (Code): Builds styled HTML email with today's date and articles (title, summary, published date, author, category, read more link).\n- Send a message (Gmail): Sends the email to using Gmail OAuth2.\n- Sticky Note: For internal comments.\n\nFlow: Schedule Trigger \u2192 HTTP Request \u2192 XML \u2192 Format Html Block \u2192 Send a message\n\nDesigned for automatic periodic news digest emails with responsive styling.\n"
      },
      "typeVersion": 1
    },
    {
      "id": "7cdede22-e5e0-41fa-8b69-78d1f4cae16f",
      "name": "Convert XML to JSON",
      "type": "n8n-nodes-base.xml",
      "position": [
        160,
        320
      ],
      "parameters": {
        "options": {}
      },
      "typeVersion": 1
    },
    {
      "id": "05704dc2-46be-4e29-9102-4c13dc4df7a1",
      "name": "Generate HTML News Preview",
      "type": "n8n-nodes-base.code",
      "position": [
        380,
        320
      ],
      "parameters": {
        "jsCode": "const entries = $input.first().json.feed.entry || [];\n\nlet html = `\n  <div style=\"max-width:600px;margin:0 auto;background:#fff;padding:20px;font-family:Arial,sans-serif;color:#333;\">\n    <h2 style=\"text-align:center;color:#cc0000;\">${new Date().toLocaleDateString('en-US', { year: 'numeric', month: 'long', day: 'numeric' })}</h2>\n`;\n\nfor (const entry of entries) {\n  const title = entry.title || 'No Title';\n  const link = entry.link?.href || '#';\n  const published = entry.published ? new Date(entry.published).toLocaleDateString('bn-BD', { year: 'numeric', month: 'long', day: 'numeric' }) : '';\n  const author = entry.author?.name || '';\n  const summary = entry.summary || '';\n  const category = entry.category?.term || '';\n\n  html += `\n    <div style=\"border-bottom:1px solid #eee;padding:15px 0;\">\n      <a href=\"${link}\" target=\"_blank\" style=\"color:#cc0000;font-size:18px;font-weight:bold;text-decoration:none;\">${title}</a>\n      <p style=\"color:#555;margin:8px 0;\">${summary}</p>\n      <p style=\"font-size:12px;color:#999;margin:0;\">Published: ${published} | Author: ${author} | Category: ${category}</p>\n      <a href=\"${link}\" target=\"_blank\" style=\"display:inline-block;margin-top:10px;padding:8px 12px;background:#cc0000;color:#fff;text-decoration:none;border-radius:4px;\">Read More</a>\n    </div>\n  `;\n}\n\nreturn [{ json: { html } }];\n"
      },
      "typeVersion": 2
    },
    {
      "id": "34b49597-b56b-4656-9362-129f091af80d",
      "name": "Get RSS from Prothom Alo",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        -60,
        320
      ],
      "parameters": {
        "url": "https://prothomalo.com/feed",
        "options": {}
      },
      "typeVersion": 4.2
    }
  ],
  "active": false,
  "settings": {
    "executionOrder": "v1"
  },
  "versionId": "301a6a15-c049-46ad-8e12-44d675855661",
  "connections": {
    "Schedule Trigger": {
      "main": [
        [
          {
            "node": "Get RSS from Prothom Alo",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Convert XML to JSON": {
      "main": [
        [
          {
            "node": "Generate HTML News Preview",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Get RSS from Prothom Alo": {
      "main": [
        [
          {
            "node": "Convert XML to JSON",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Generate HTML News Preview": {
      "main": [
        [
          {
            "node": "Send a message",
            "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

Automatically send beautifully formatted news digests from any RSS feed (e.g., Prothom Alo) directly to your Gmail inbox on a schedule using this n8n workflow. Ideal for news curators, bloggers, media professionals, or anyone who wants a daily/weekly news summary in their email.

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

More Web Scraping workflows → · Browse all categories →

Related workflows

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

Web Scraping

This workflow is an improvement of this workflow by Greg Brzezinka.

HTTP Request, Email Send, XML +1
Web Scraping

This workflow automates the full cycle of fetching, processing, and storing Telr payment gateway reports — and then notifying your team by email. It runs on a schedule, calls the Telr API twice (once

Compression, Email Send, HTTP Request +2
Web Scraping

Stop waiting for search engines to discover your content updates. This workflow automates the process of notifying search engines (Bing, Yandex, etc.) about new or updated pages using the IndexNow pro

HTTP Request, XML
Web Scraping

How it works

HTTP Request, Html Extract, Sqlite +2
Web Scraping

Boost your online visibility and stay ahead of the curve with this Automated SEO Audit Workflow Template. This solution streamlines the crucial task of monitoring your website’s health, proactively id

HTTP Request, Gmail