AutomationFlowsData & Sheets › RSS Aggregator to Airtable

RSS Aggregator to Airtable

Original n8n title: Ecas — 03 RSS Aggregator

ECAS — 03 RSS Aggregator. Uses rssFeedRead, airtable. Scheduled trigger; 10 nodes.

Cron / scheduled trigger★★★★☆ complexity10 nodesRSS Feed ReadAirtable
Data & Sheets Trigger: Cron / scheduled Nodes: 10 Complexity: ★★★★☆ Added:

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
{
  "name": "ECAS \u2014 03 RSS Aggregator",
  "nodes": [
    {
      "parameters": {
        "rule": {
          "interval": [
            {
              "field": "minutes",
              "minutesInterval": 15
            }
          ]
        }
      },
      "id": "cron-rss",
      "name": "Every 15 Minutes",
      "type": "n8n-nodes-base.scheduleTrigger",
      "typeVersion": 1.1,
      "position": [
        240,
        500
      ]
    },
    {
      "parameters": {
        "url": "https://news.google.com/rss/search?q=Dominion+Energy+substation+transmission&hl=en-US&gl=US&ceid=US:en"
      },
      "id": "rss-dominion",
      "name": "RSS: Dominion Substation",
      "type": "n8n-nodes-base.rssFeedRead",
      "typeVersion": 1,
      "position": [
        460,
        100
      ]
    },
    {
      "parameters": {
        "url": "https://news.google.com/rss/search?q=data+center+power+Virginia+substation&hl=en-US&gl=US&ceid=US:en"
      },
      "id": "rss-datacenter-va",
      "name": "RSS: Data Center Power VA",
      "type": "n8n-nodes-base.rssFeedRead",
      "typeVersion": 1,
      "position": [
        460,
        260
      ]
    },
    {
      "parameters": {
        "url": "https://news.google.com/rss/search?q=ERCOT+transmission+expansion+Texas&hl=en-US&gl=US&ceid=US:en"
      },
      "id": "rss-ercot",
      "name": "RSS: ERCOT Transmission TX",
      "type": "n8n-nodes-base.rssFeedRead",
      "typeVersion": 1,
      "position": [
        460,
        420
      ]
    },
    {
      "parameters": {
        "url": "https://news.google.com/rss/search?q=power+purchase+agreement+data+center+grid&hl=en-US&gl=US&ceid=US:en"
      },
      "id": "rss-ppa",
      "name": "RSS: PPA Data Center Grid",
      "type": "n8n-nodes-base.rssFeedRead",
      "typeVersion": 1,
      "position": [
        460,
        580
      ]
    },
    {
      "parameters": {
        "url": "https://www.prnewswire.com/rss/news-releases-list.rss?category=ENI"
      },
      "id": "rss-prnewswire",
      "name": "RSS: PR Newswire Energy",
      "type": "n8n-nodes-base.rssFeedRead",
      "typeVersion": 1,
      "position": [
        460,
        740
      ]
    },
    {
      "parameters": {
        "url": "https://news.google.com/rss/search?q=EPC+contract+substation+transmission+awarded&hl=en-US&gl=US&ceid=US:en"
      },
      "id": "rss-epc",
      "name": "RSS: EPC Contract Awards",
      "type": "n8n-nodes-base.rssFeedRead",
      "typeVersion": 1,
      "position": [
        460,
        900
      ]
    },
    {
      "parameters": {
        "mode": "mergeByPosition",
        "options": {}
      },
      "id": "merge-feeds",
      "name": "Merge All Feeds",
      "type": "n8n-nodes-base.merge",
      "typeVersion": 3,
      "position": [
        700,
        500
      ]
    },
    {
      "parameters": {
        "jsCode": "// Deduplicate by URL and filter out items older than 24 hours\nconst allItems = $input.all();\nconst cutoff = Date.now() - 24 * 60 * 60 * 1000;\n\nconst seen = new Set();\nconst deduped = [];\n\nfor (const item of allItems) {\n  const data = item.json;\n  const url = data.link || data.url || data.guid || '';\n  const pubDate = data.pubDate || data.isoDate || data.published || null;\n\n  if (!url) continue;\n\n  // Deduplicate\n  if (seen.has(url)) continue;\n  seen.add(url);\n\n  // Age filter: skip if older than 24h\n  if (pubDate) {\n    const ts = new Date(pubDate).getTime();\n    if (!isNaN(ts) && ts < cutoff) continue;\n  }\n\n  const title = data.title || '';\n  const description = data.contentSnippet || data.content || data.description || data.summary || '';\n  const rawText = [title, description].filter(Boolean).join(' \u2014 ').slice(0, 2000);\n\n  deduped.push({\n    json: {\n      source: 'rss_feed',\n      url: url,\n      raw_text: rawText,\n      captured_at: pubDate ? new Date(pubDate).toISOString() : new Date().toISOString(),\n      processed: false,\n    }\n  });\n}\n\nconsole.log(`RSS: ${allItems.length} total items \u2192 ${deduped.length} after dedup+age filter`);\nreturn deduped;"
      },
      "id": "code-dedup-rss",
      "name": "Dedup & Age Filter",
      "type": "n8n-nodes-base.code",
      "typeVersion": 2,
      "position": [
        920,
        500
      ]
    },
    {
      "parameters": {
        "operation": "upsert",
        "baseId": {
          "__rl": true,
          "value": "appoi8SzEJY8in57x",
          "mode": "id"
        },
        "tableId": {
          "__rl": true,
          "value": "signals_raw",
          "mode": "name"
        },
        "columns": {
          "mappingMode": "defineBelow",
          "value": {
            "source": "={{ $json.source }}",
            "url": "={{ $json.url }}",
            "raw_text": "={{ $json.raw_text }}",
            "captured_at": "={{ $json.captured_at }}",
            "processed": "={{ $json.processed }}"
          }
        },
        "options": {
          "fieldsToMergeOn": [
            "url"
          ]
        }
      },
      "id": "airtable-upsert-rss",
      "name": "Upsert Airtable Signal",
      "type": "n8n-nodes-base.airtable",
      "typeVersion": 2.1,
      "position": [
        1140,
        500
      ],
      "credentials": {
        "airtableTokenApi": {
          "name": "<your credential>"
        }
      }
    }
  ],
  "connections": {
    "Every 15 Minutes": {
      "main": [
        [
          {
            "node": "RSS: Dominion Substation",
            "type": "main",
            "index": 0
          },
          {
            "node": "RSS: Data Center Power VA",
            "type": "main",
            "index": 0
          },
          {
            "node": "RSS: ERCOT Transmission TX",
            "type": "main",
            "index": 0
          },
          {
            "node": "RSS: PPA Data Center Grid",
            "type": "main",
            "index": 0
          },
          {
            "node": "RSS: PR Newswire Energy",
            "type": "main",
            "index": 0
          },
          {
            "node": "RSS: EPC Contract Awards",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "RSS: Dominion Substation": {
      "main": [
        [
          {
            "node": "Merge All Feeds",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "RSS: Data Center Power VA": {
      "main": [
        [
          {
            "node": "Merge All Feeds",
            "type": "main",
            "index": 1
          }
        ]
      ]
    },
    "RSS: ERCOT Transmission TX": {
      "main": [
        [
          {
            "node": "Merge All Feeds",
            "type": "main",
            "index": 2
          }
        ]
      ]
    },
    "RSS: PPA Data Center Grid": {
      "main": [
        [
          {
            "node": "Merge All Feeds",
            "type": "main",
            "index": 3
          }
        ]
      ]
    },
    "RSS: PR Newswire Energy": {
      "main": [
        [
          {
            "node": "Merge All Feeds",
            "type": "main",
            "index": 4
          }
        ]
      ]
    },
    "RSS: EPC Contract Awards": {
      "main": [
        [
          {
            "node": "Merge All Feeds",
            "type": "main",
            "index": 5
          }
        ]
      ]
    },
    "Merge All Feeds": {
      "main": [
        [
          {
            "node": "Dedup & Age Filter",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Dedup & Age Filter": {
      "main": [
        [
          {
            "node": "Upsert Airtable Signal",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  },
  "settings": {
    "executionOrder": "v1",
    "saveManualExecutions": true,
    "callerPolicy": "workflowsFromSameOwner"
  },
  "staticData": null,
  "tags": [
    "ecas",
    "signals",
    "rss"
  ],
  "triggerCount": 0,
  "updatedAt": "2026-03-03T00:00:00.000Z",
  "versionId": "1"
}

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

ECAS — 03 RSS Aggregator. Uses rssFeedRead, airtable. Scheduled trigger; 10 nodes.

Source: https://github.com/Entmarketingteam/ECAS/blob/817a62ace685a160e21f7edeef1932db9d7c9f3f/n8n-workflows/03-rss-aggregator.json — original creator credit. Request a take-down →

More Data & Sheets workflows → · Browse all categories →

Related workflows

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

Data & Sheets

The-Scout-Workflow. Uses airtable, loopOverItems, httpRequest, rssFeedRead. Scheduled trigger; 14 nodes.

Airtable, Loop Over Items, HTTP Request +2
Data & Sheets

The-Scout-Workflow01. Uses airtable, loopOverItems, httpRequest, rssFeedRead. Scheduled trigger; 14 nodes.

Airtable, Loop Over Items, HTTP Request +2
Data & Sheets

Collects crypto and/or stock market headlines from multiple sources: CoinDesk, CoinTelegraph, Google News, and X (via an RSS proxy). Normalizes all items into a consistent structure with fields like ,

RSS Feed Read, HTTP Request
Data & Sheets

I prepared a detailed guide that showed the whole process of integrating the Binance API and storing data in Airtable to manage funding statements associated with tokens in a wallet.

Crypto, HTTP Request, Airtable
Data & Sheets

Stop wasting hours on manual dialing and listening to ringtones. This workflow transforms your Airtable into a high-velocity AI Call Center using Vapi AI**.

Airtable, HTTP Request