AutomationFlowsData & Sheets › Hourly RSS to Notion Sync

Hourly RSS to Notion Sync

Original n8n title: RSS to Notion

RSS to Notion. Uses rssFeedRead, notion. Scheduled trigger; 4 nodes.

Cron / scheduled trigger★★★★☆ complexity4 nodesRSS Feed ReadNotion
Data & Sheets Trigger: Cron / scheduled Nodes: 4 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": "RSS to Notion",
  "nodes": [
    {
      "parameters": {
        "rule": {
          "interval": [
            {
              "field": "hours",
              "hoursInterval": 1
            }
          ]
        }
      },
      "id": "schedule-node",
      "name": "Schedule (Hourly)",
      "type": "n8n-nodes-base.scheduleTrigger",
      "typeVersion": 1,
      "position": [
        250,
        300
      ]
    },
    {
      "parameters": {
        "url": "https://example.com/feed.xml",
        "options": {}
      },
      "id": "rss-node",
      "name": "RSS Feed",
      "type": "n8n-nodes-base.rssFeedRead",
      "typeVersion": 1,
      "position": [
        450,
        300
      ]
    },
    {
      "parameters": {
        "jsCode": "// Filter: Only items from last 24 hours\nconst items = $input.all();\nconst oneDayAgo = Date.now() - 86400000;\n\nconst newItems = items.filter(item => {\n  const pubDate = new Date(item.json.pubDate).getTime();\n  return pubDate > oneDayAgo;\n});\n\nif (newItems.length === 0) {\n  // Return empty to stop workflow\n  return [];\n}\n\n// Format for Notion\nreturn newItems.map(item => ({\n  json: {\n    title: item.json.title,\n    url: item.json.link,\n    published: item.json.pubDate,\n    source: item.json.creator || 'Unknown',\n    summary: item.json.contentSnippet?.substring(0, 200) || '',\n    read: false\n  }\n}));"
      },
      "id": "filter-node",
      "name": "Filter & Format",
      "type": "n8n-nodes-base.code",
      "typeVersion": 2,
      "position": [
        650,
        300
      ]
    },
    {
      "parameters": {
        "resource": "databasePage",
        "databaseId": {
          "__rl": true,
          "value": "SETUP_REQUIRED",
          "mode": "id"
        },
        "title": "={{ $json.title }}",
        "propertiesUi": {
          "propertyValues": [
            {
              "key": "URL",
              "textContent": "={{ $json.url }}"
            },
            {
              "key": "Published",
              "date": "={{ $json.published }}"
            },
            {
              "key": "Source",
              "selectValue": "={{ $json.source }}"
            },
            {
              "key": "Summary",
              "textContent": "={{ $json.summary }}"
            },
            {
              "key": "Read",
              "checkboxValue": false
            }
          ]
        }
      },
      "id": "notion-node",
      "name": "Notion",
      "type": "n8n-nodes-base.notion",
      "typeVersion": 2,
      "position": [
        850,
        300
      ],
      "credentials": {
        "notionApi": {
          "name": "<your credential>"
        }
      }
    }
  ],
  "connections": {
    "Schedule (Hourly)": {
      "main": [
        [
          {
            "node": "RSS Feed",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "RSS Feed": {
      "main": [
        [
          {
            "node": "Filter & Format",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Filter & Format": {
      "main": [
        [
          {
            "node": "Notion",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  },
  "settings": {
    "executionOrder": "v1"
  },
  "staticData": null,
  "tags": [],
  "triggerCount": 0,
  "updatedAt": "2026-03-02T19: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

RSS to Notion. Uses rssFeedRead, notion. Scheduled trigger; 4 nodes.

Source: https://github.com/kcurtet/n8n-workflows/blob/4c219a8a1bf2c2d5f89cf34542ce0f5b26c870ef/templates/rss-to-notion/workflow.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

RSS 피드 수집. Uses notion, httpRequest, rssFeedRead. Scheduled trigger; 13 nodes.

Notion, HTTP Request, RSS Feed Read
Data & Sheets

WorkFlow 05. Uses notion, httpRequest. Scheduled trigger; 44 nodes.

Notion, HTTP Request
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

WorkFlow 08. Uses notion, httpRequest. Scheduled trigger; 37 nodes.

Notion, HTTP Request
Data & Sheets

WorkFlow 01. Uses notion. Scheduled trigger; 30 nodes.

Notion