AutomationFlowsData & Sheets › Automatically Collect & Process Google News Articles to Google Sheets

Automatically Collect & Process Google News Articles to Google Sheets

BySuS @sulieman-said on n8n.io

This workflow automatically collects the latest articles from Google News RSS feeds, cleans and deduplicates them, and stores them neatly in a Google Sheet. It runs on a set schedule (every Monday at 09:00 by default) and helps you build a fresh pool of content ideas for…

Cron / scheduled trigger★★★☆☆ complexity11 nodesItem ListsRSS Feed ReadGoogle Sheets
Data & Sheets Trigger: Cron / scheduled Nodes: 11 Complexity: ★★★☆☆ Added:

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

This workflow follows the Google Sheets → 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": "c20dae93-b0a7-4e4d-96fe-58ce9533f2e6",
      "name": "Sticky: \ud83e\uddfc Clean & Neu",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        0,
        0
      ],
      "parameters": {
        "width": 448,
        "height": 592,
        "content": "## Gather Information\n"
      },
      "typeVersion": 1
    },
    {
      "id": "9e4b1c28-4f02-4c3f-8a3b-7b2c11390860",
      "name": "Item Lists: Unique by URL",
      "type": "n8n-nodes-base.itemLists",
      "position": [
        928,
        304
      ],
      "parameters": {
        "operation": "removeDuplicates"
      },
      "typeVersion": 1
    },
    {
      "id": "07033869-1d9c-41de-919c-bcabe2a63f86",
      "name": "Merge Feeds (Append)",
      "type": "n8n-nodes-base.merge",
      "position": [
        320,
        304
      ],
      "parameters": {},
      "typeVersion": 2
    },
    {
      "id": "1118d0bb-6a84-49c8-af05-51399b0df255",
      "name": "RSS Read \u2014 Google News (TOPIC_2)",
      "type": "n8n-nodes-base.rssFeedRead",
      "position": [
        80,
        416
      ],
      "parameters": {
        "url": "https://news.google.com/rss/search?q=AIAutomation&hl=de&gl=DE&ceid=DE:de",
        "options": {}
      },
      "typeVersion": 1
    },
    {
      "id": "a588e5bc-c6a1-4fe1-9326-d40bd38dbcb4",
      "name": "RSS Read \u2014 Google News (TOPIC_1)",
      "type": "n8n-nodes-base.rssFeedRead",
      "position": [
        80,
        176
      ],
      "parameters": {
        "url": "https://news.google.com/rss/search?q=AI&hl=de&gl=DE&ceid=DE:de",
        "options": {}
      },
      "typeVersion": 1
    },
    {
      "id": "05e7a035-5892-43c2-8413-6057d0e2d162",
      "name": "Sticky: \ud83e\uddfc Clean & Neu1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1088,
        0
      ],
      "parameters": {
        "width": 176,
        "height": 592,
        "content": "## Save in Sheets\n"
      },
      "typeVersion": 1
    },
    {
      "id": "bfb656db-8f3a-4f7b-a311-2c46086b5788",
      "name": "Sticky: \ud83e\uddfc Clean & Neu2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        480,
        0
      ],
      "parameters": {
        "width": 576,
        "height": 592,
        "content": "## Clean & New\n"
      },
      "typeVersion": 1
    },
    {
      "id": "06267467-f32c-4115-9e0f-c39030abab1d",
      "name": "Append new Links",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        1120,
        304
      ],
      "parameters": {
        "operation": "appendOrUpdate",
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": ""
        },
        "documentId": {
          "__rl": true,
          "mode": "list",
          "value": ""
        }
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 4
    },
    {
      "id": "0040d423-82f0-4432-8fba-1ed8b3b07d31",
      "name": "Set (Clean URL + Fields)",
      "type": "n8n-nodes-base.set",
      "position": [
        528,
        304
      ],
      "parameters": {
        "values": {
          "string": [
            {
              "name": "url",
              "value": "={{ $json[\"link\"] && $json[\"link\"].match(/[?&]url=([^&]+)/) ? decodeURIComponent($json[\"link\"].match(/[?&]url=([^&]+)/)[1]) : ($json[\"link\"] || $json[\"guid\"] || \"\") }}"
            },
            {
              "name": "title",
              "value": "={{$json[\"title\"] || \"\"}}"
            },
            {
              "name": "summary",
              "value": "={{$json[\"contentSnippet\"] || $json[\"summary\"] || \"\"}}"
            },
            {
              "name": "pubDate",
              "value": "={{$json[\"pubDate\"] || $json[\"isoDate\"] || $json[\"date\"] || \"\"}}"
            }
          ]
        },
        "options": {},
        "keepOnlySet": true
      },
      "typeVersion": 2
    },
    {
      "id": "11812dba-c56b-49fb-8a4d-cc36358c6242",
      "name": "Filter (only complete Items)",
      "type": "n8n-nodes-base.filter",
      "position": [
        720,
        304
      ],
      "parameters": {
        "options": {},
        "conditions": {
          "options": {
            "version": 2,
            "leftValue": "",
            "caseSensitive": true,
            "typeValidation": "strict"
          },
          "combinator": "and",
          "conditions": [
            {
              "id": "cond-title",
              "operator": {
                "name": "filter.operator.notEmpty",
                "type": "string",
                "operation": "notEmpty"
              },
              "leftValue": "={{$json[\"title\"]}}",
              "rightValue": ""
            },
            {
              "id": "cond-url",
              "operator": {
                "name": "filter.operator.notEmpty",
                "type": "string",
                "operation": "notEmpty"
              },
              "leftValue": "={{$json[\"url\"]}}",
              "rightValue": ""
            }
          ]
        }
      },
      "typeVersion": 2.2
    },
    {
      "id": "b9827b14-3e28-4de5-8be9-8a94c32aa1bc",
      "name": "Trigger: Monday 09:00",
      "type": "n8n-nodes-base.cron",
      "position": [
        -160,
        304
      ],
      "parameters": {
        "triggerTimes": {
          "item": [
            {
              "hour": 9,
              "mode": "everyWeek"
            }
          ]
        }
      },
      "typeVersion": 1
    }
  ],
  "connections": {
    "Merge Feeds (Append)": {
      "main": [
        [
          {
            "node": "Set (Clean URL + Fields)",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Trigger: Monday 09:00": {
      "main": [
        [
          {
            "node": "RSS Read \u2014 Google News (TOPIC_2)",
            "type": "main",
            "index": 0
          },
          {
            "node": "RSS Read \u2014 Google News (TOPIC_1)",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Set (Clean URL + Fields)": {
      "main": [
        [
          {
            "node": "Filter (only complete Items)",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Item Lists: Unique by URL": {
      "main": [
        [
          {
            "node": "Append new Links",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Filter (only complete Items)": {
      "main": [
        [
          {
            "node": "Item Lists: Unique by URL",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "RSS Read \u2014 Google News (TOPIC_1)": {
      "main": [
        [
          {
            "node": "Merge Feeds (Append)",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "RSS Read \u2014 Google News (TOPIC_2)": {
      "main": [
        [
          {
            "node": "Merge Feeds (Append)",
            "type": "main",
            "index": 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

This workflow automatically collects the latest articles from Google News RSS feeds, cleans and deduplicates them, and stores them neatly in a Google Sheet. It runs on a set schedule (every Monday at 09:00 by default) and helps you build a fresh pool of content ideas for…

Source: https://n8n.io/workflows/8134/ — 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

++How it Works:++ This RSS reader retrieves links from a Google Sheets file and goes through each link to retrieve the messages that are younger than 3 days, then saves them in a second Google Sheets

RSS Feed Read, Google Sheets
Data & Sheets

Workflow Overview Zoom Attendance Evaluator with Follow-up is an n8n automation workflow that automatically evaluates Zoom meeting attendance and sends follow-up emails to no-shows and early leavers w

Zoom, Item Lists, HTTP Request +3
Data & Sheets

Get recent funding rounds from Crunchbase in Google Sheets,

Item Lists, HTTP Request, Google Sheets
Data & Sheets

特化型SNSアカウント&アフィリエイト半自動化. Uses rssFeedRead, chainLlm, googleSheets. Scheduled trigger; 5 nodes.

RSS Feed Read, Chain Llm, Google Sheets
Data & Sheets

This workflow automates tax compliance by aggregating multi-channel revenue data, calculating jurisdiction-specific tax obligations, detecting anomalies, and generating submission-ready reports for ta

Gmail, Google Sheets, Airtable +1