AutomationFlowsEmail & Gmail › Hourly RSS to Gmail Email Workflow

Hourly RSS to Gmail Email Workflow

Original n8n title: Splitout Schedule (rss Feed Read)

Splitout Schedule. Uses scheduleTrigger, splitInBatches, noOp, rssFeedRead. Scheduled trigger; 10 nodes.

Cron / scheduled trigger★★★★☆ complexity10 nodesRSS Feed ReadGmail
Email & Gmail Trigger: Cron / scheduled Nodes: 10 Complexity: ★★★★☆ Added:

This workflow follows the Gmail → RSS Feed Read 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": [
    {
      "id": "48a0524d-db39-4046-bad1-18684064cbac",
      "name": "Every 1 hour",
      "type": "n8n-nodes-base.scheduleTrigger",
      "position": [
        40,
        600
      ],
      "parameters": {
        "rule": {
          "interval": [
            {
              "field": "hours",
              "triggerAtMinute": 30
            }
          ]
        }
      },
      "typeVersion": 1.1
    },
    {
      "id": "bf9e2480-e879-4ebc-829f-b61f29251d29",
      "name": "Loop Over Items",
      "type": "n8n-nodes-base.splitInBatches",
      "position": [
        680,
        600
      ],
      "parameters": {
        "options": {}
      },
      "typeVersion": 3
    },
    {
      "id": "f8e8a9a4-6104-4d4c-a400-5160e37f6c55",
      "name": "No Operation, do nothing",
      "type": "n8n-nodes-base.noOp",
      "position": [
        920,
        400
      ],
      "parameters": {},
      "typeVersion": 1
    },
    {
      "id": "980351bb-685b-4392-bb28-a10bec1608fe",
      "name": "RSS Read",
      "type": "n8n-nodes-base.rssFeedRead",
      "onError": "continueRegularOutput",
      "position": [
        920,
        620
      ],
      "parameters": {
        "url": "={{ $json.urls }}",
        "options": {}
      },
      "retryOnFail": true,
      "typeVersion": 1,
      "waitBetweenTries": 5000
    },
    {
      "id": "7281072f-f773-468f-8599-4efa5832f8e2",
      "name": "Sticky Note2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        260,
        760
      ],
      "parameters": {
        "color": 7,
        "width": 162,
        "height": 84,
        "content": "\ud83d\udc46 Add your RSS feeds urls here."
      },
      "typeVersion": 1
    },
    {
      "id": "c1aece31-d2d5-4cf2-864e-1911e34056f3",
      "name": "Sticky Note3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -80,
        466
      ],
      "parameters": {
        "color": 5,
        "width": 447,
        "height": 104.61602497398542,
        "content": "### \ud83d\udc68\u200d\ud83c\udfa4 Setup\n1. Add your email and email creds\n2. Add the RSS feed URLs you want to follow"
      },
      "typeVersion": 1
    },
    {
      "id": "8a932df6-4550-4f01-86a0-45a2857645c0",
      "name": "If published in the last hour",
      "type": "n8n-nodes-base.if",
      "position": [
        1120,
        620
      ],
      "parameters": {
        "options": {},
        "conditions": {
          "options": {
            "leftValue": "",
            "caseSensitive": true,
            "typeValidation": "strict"
          },
          "combinator": "and",
          "conditions": [
            {
              "id": "97b4e257-2413-4c78-8b33-1f7523bfe0cd",
              "operator": {
                "type": "dateTime",
                "operation": "after"
              },
              "leftValue": "={{ DateTime.fromISO($json.isoDate) }}",
              "rightValue": "={{ DateTime.now().minus({hour: 1}) }}"
            },
            {
              "id": "b37ee746-6b2c-45ad-80db-fa2750ce9a58",
              "operator": {
                "type": "dateTime",
                "operation": "beforeOrEquals"
              },
              "leftValue": "={{ DateTime.fromISO($json.isoDate) }}",
              "rightValue": "={{ DateTime.now() }}"
            }
          ]
        }
      },
      "typeVersion": 2
    },
    {
      "id": "8bf89e60-5ea1-47b9-9249-bf2e258f9a2d",
      "name": "Send email with each post",
      "type": "n8n-nodes-base.gmail",
      "position": [
        1360,
        600
      ],
      "parameters": {
        "sendTo": "SET YOUR EMAIL HERE",
        "message": "=Check out this new post from {{ $json.link.extractDomain() }} at {{ $json.link }}\n\n----\n\n {{ $json.contentSnippet }}",
        "options": {
          "appendAttribution": true
        },
        "subject": "=New post from {{ $json.link.extractDomain() }}: {{ $json.title }} "
      },
      "credentials": {
        "gmailOAuth2": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 2.1
    },
    {
      "id": "8a344c1e-4f57-46b8-8736-d4d651188e57",
      "name": "Split Out",
      "type": "n8n-nodes-base.splitOut",
      "position": [
        480,
        600
      ],
      "parameters": {
        "options": {},
        "fieldToSplitOut": "urls"
      },
      "typeVersion": 1
    },
    {
      "id": "6b523a05-ba2e-4118-9061-7ef7fd152802",
      "name": "List of RSS feeds",
      "type": "n8n-nodes-base.set",
      "position": [
        260,
        600
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "257d7e0a-1c6e-42ca-825c-347fec574914",
              "name": "urls",
              "type": "array",
              "value": "[\"https://www.anildash.com/feed.xml\", \"https://sive.rs/en.atom\"]"
            }
          ]
        }
      },
      "typeVersion": 3.3
    }
  ],
  "connections": {
    "RSS Read": {
      "main": [
        [
          {
            "node": "Loop Over Items",
            "type": "main",
            "index": 0
          },
          {
            "node": "If published in the last hour",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Split Out": {
      "main": [
        [
          {
            "node": "Loop Over Items",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Every 1 hour": {
      "main": [
        [
          {
            "node": "List of RSS feeds",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Loop Over Items": {
      "main": [
        [
          {
            "node": "No Operation, do nothing",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "RSS Read",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "List of RSS feeds": {
      "main": [
        [
          {
            "node": "Split Out",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "If published in the last hour": {
      "main": [
        [
          {
            "node": "Send email with each post",
            "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

This workflow automates the delivery of fresh content from your favourite RSS feeds directly to your inbox, ensuring you stay informed without constantly checking multiple sources. It's ideal for busy professionals, bloggers, or anyone who relies on timely updates from news sites, blogs, or industry publications to maintain their edge. The key step involves the RSS Feed Read node pulling in the latest entries every hour, followed by a conditional check to filter only those published in the last hour before sending a personalised email via Gmail for each relevant post.

Use this workflow when you need a hands-off way to digest hourly digests from reliable RSS sources, particularly if you're managing a content curation routine or monitoring niche topics. Avoid it for high-volume feeds that could overwhelm your email, or if you prefer real-time alerts over batched summaries. Common variations include adjusting the cron trigger to daily intervals for less frequent updates, or integrating additional filters to target specific keywords within the posts.

About this workflow

Splitout Schedule. Uses scheduleTrigger, splitInBatches, noOp, rssFeedRead. Scheduled trigger; 10 nodes.

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

More Email & Gmail workflows → · Browse all categories →

Related workflows

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

Email & Gmail

The workflow is triggered automatically every day at 12:00 PM using a Cron node.

RSS Feed Read, Google Sheets, Gmail +1
Email & Gmail

Trello Limit. Uses scheduleTrigger, rssFeedRead, sort, limit. Scheduled trigger; 15 nodes.

RSS Feed Read, Trello, Gmail
Email & Gmail

This workflow is designed for professionals and teams who need to monitor multiple RSS feeds, filter the latest content, and distribute actionable updates as a Trello comment. Ideal for content manage

RSS Feed Read, Trello, Gmail
Email & Gmail

Freelancers and agencies who track new Upwork leads via Vollna RSS and want clean logging to Google Sheets with instant Slack alerts.

Google Sheets, RSS Feed Read, Slack +1
Email & Gmail

This workflow turns news monitoring into an early-warning demand engine. It continuously ingests Google Alert RSS feeds, extracts the full text of every article, and runs real-time purchase-intent mod

HTTP Request, Gmail, RSS Feed Read