{
  "name": "Aggregate crypto and stock market news feed from multiple sources",
  "nodes": [
    {
      "id": "3605441c-09a7-408d-ae58-952fca2fbddf",
      "name": "Schedule Trigger",
      "type": "n8n-nodes-base.scheduleTrigger",
      "position": [
        -1712,
        -32
      ]
    },
    {
      "id": "95f9c5dd-bed8-4ae7-afd0-f52735d9a721",
      "name": "RSS Read - Coindesk",
      "type": "n8n-nodes-base.rssFeedRead",
      "position": [
        -416,
        -256
      ]
    },
    {
      "id": "94b0094a-4e1d-4e02-bac6-d01b35fa3a89",
      "name": "RSS Read - Google news",
      "type": "n8n-nodes-base.rssFeedRead",
      "position": [
        -416,
        -80
      ]
    },
    {
      "id": "56b70dc1-cef6-4dea-9ea3-e974a33bd5f1",
      "name": "RSS Read - X Posts",
      "type": "n8n-nodes-base.rssFeedRead",
      "position": [
        -32,
        64
      ]
    },
    {
      "id": "1733a9d9-08ac-46bb-ab9b-9b7987320d51",
      "name": "Source set - Coindesk",
      "type": "n8n-nodes-base.set",
      "position": [
        1024,
        -256
      ]
    },
    {
      "id": "d535536a-a590-405e-b806-e14617d158bf",
      "name": "Source set - Google news",
      "type": "n8n-nodes-base.set",
      "position": [
        1024,
        -80
      ]
    },
    {
      "id": "0dcafdf0-9e39-4409-9c5d-54cae63010c1",
      "name": "Source set - Cointelegraph",
      "type": "n8n-nodes-base.set",
      "position": [
        1024,
        432
      ]
    },
    {
      "id": "e113b336-a53f-4054-94e7-6a1f86ea8e44",
      "name": "Source set - X Posts",
      "type": "n8n-nodes-base.set",
      "position": [
        1024,
        240
      ]
    },
    {
      "id": "8d5a498d-3c2a-40e8-ba90-456f400b382e",
      "name": "Merge - Coindesk + Google news",
      "type": "n8n-nodes-base.merge",
      "position": [
        1280,
        -176
      ]
    },
    {
      "id": "f711a07b-0bbe-4102-81f8-d11736ed796f",
      "name": "Merge - X posts + CoinTelegraph",
      "type": "n8n-nodes-base.merge",
      "position": [
        1280,
        336
      ]
    },
    {
      "id": "47e8fd90-a623-42a9-9637-55d9f262eceb",
      "name": "Merge - Merge previous two merges",
      "type": "n8n-nodes-base.merge",
      "position": [
        1568,
        64
      ]
    },
    {
      "id": "9a05a06c-e0e3-4c48-adc7-ff6c8f869cd1",
      "name": "Code - Keywords Filter",
      "type": "n8n-nodes-base.code",
      "position": [
        1872,
        64
      ]
    },
    {
      "id": "54cf0cbf-2d00-47d7-bc97-c98daef776b7",
      "name": "Code - Array bind",
      "type": "n8n-nodes-base.code",
      "position": [
        2080,
        64
      ]
    },
    {
      "id": "a44d59a2-eedf-4d90-a6f2-a15a209d443f",
      "name": "Webhook",
      "type": "n8n-nodes-base.webhook",
      "position": [
        -1712,
        144
      ]
    },
    {
      "id": "9382dfc1-2dfb-4244-83bd-2b9cc9a3dd8c",
      "name": "Merge",
      "type": "n8n-nodes-base.merge",
      "position": [
        -1504,
        48
      ]
    },
    {
      "id": "60c11872-6e80-4023-9d18-e17a7da4f230",
      "name": "Init RunConfig",
      "type": "n8n-nodes-base.code",
      "position": [
        -1328,
        48
      ]
    },
    {
      "id": "6713c172-8117-43be-8bdb-66e5ae755a0c",
      "name": "IF Gate - Coindesk",
      "type": "n8n-nodes-base.if",
      "position": [
        -848,
        -240
      ]
    },
    {
      "id": "2d94beb0-fc90-4f12-8ffa-8b1ec7565429",
      "name": "IF Gate - Google news",
      "type": "n8n-nodes-base.if",
      "position": [
        -848,
        -64
      ]
    },
    {
      "id": "a2378244-cd10-4848-a0c4-b7526ecd5a31",
      "name": "IF Gate - CoinTelegraph",
      "type": "n8n-nodes-base.if",
      "position": [
        -848,
        448
      ]
    },
    {
      "id": "de6fe9fb-f1a0-4119-b0bf-189d45e3ff98",
      "name": "IF Gate - X",
      "type": "n8n-nodes-base.if",
      "position": [
        -848,
        160
      ]
    },
    {
      "id": "1615f08c-e635-47f1-893e-10c7ff7fe3b7",
      "name": "X Batches",
      "type": "n8n-nodes-base.splitInBatches",
      "position": [
        -320,
        144
      ]
    },
    {
      "id": "e0000def-80a6-448e-b416-afe90ba8eb55",
      "name": "IF - More X batches?",
      "type": "n8n-nodes-base.if",
      "position": [
        512,
        224
      ]
    },
    {
      "id": "eae176c5-2d96-4a78-86eb-9868cbc47488",
      "name": "Code - Finalize X batches (emit combined)",
      "type": "n8n-nodes-base.code",
      "position": [
        704,
        240
      ]
    },
    {
      "id": "f835fc48-9583-4ba8-9d92-0a7e91574586",
      "name": "Code - Accumulate X items",
      "type": "n8n-nodes-base.code",
      "position": [
        304,
        64
      ]
    },
    {
      "id": "48e24f9b-7f97-42f9-88ff-2eaafaead490",
      "name": "Code - Reset X accumulator",
      "type": "n8n-nodes-base.code",
      "position": [
        -496,
        144
      ]
    },
    {
      "id": "b306e15c-b6d8-4116-ae30-a5d3140d64b7",
      "name": "Code - URL Build - XCancel",
      "type": "n8n-nodes-base.code",
      "position": [
        -640,
        144
      ]
    },
    {
      "id": "055c48be-7df5-4338-b847-57af53707580",
      "name": "Code - Tag topic - Google news",
      "type": "n8n-nodes-base.code",
      "position": [
        128,
        -80
      ]
    },
    {
      "id": "0ef11d59-ad03-4194-9d51-bb94212ccd2f",
      "name": "Code - Tag topic - Coin desk",
      "type": "n8n-nodes-base.code",
      "position": [
        128,
        -256
      ]
    },
    {
      "id": "7c3880d2-e46d-47ff-bf60-fd56496aa3e6",
      "name": "Code - Tag topic - X",
      "type": "n8n-nodes-base.code",
      "position": [
        128,
        64
      ]
    },
    {
      "id": "f67bece3-b9a2-4337-b5dd-41b922822d4d",
      "name": "Code - URL build - Google news",
      "type": "n8n-nodes-base.code",
      "position": [
        -640,
        -80
      ]
    },
    {
      "id": "628c02c2-de72-48a9-8510-8f4a2efee6c8",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1776,
        720
      ],
      "parameters": {
        "width": 848,
        "height": 928,
        "content": "## README\n\nREADME – Crypto/Stocks News → UI workflow\n\n### What this does\n- Collects crypto or stock-market news from CoinDesk, CoinTelegraph, Google News, and X (via xcancel.com RSS).\n- Tags each item"
      }
    },
    {
      "id": "3757d187-20b8-4d1b-b05e-89275643edc1",
      "name": "HTTP Request - Send to your backend",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        2288,
        64
      ]
    },
    {
      "id": "bedf7a10-89f0-4189-a814-9f84b82fd27a",
      "name": "Loop back – X Batches",
      "type": "n8n-nodes-base.noOp",
      "position": [
        -32,
        208
      ]
    },
    {
      "id": "0824dd31-e98f-4979-9139-208b8cfff5a4",
      "name": "Sticky Note1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -880,
        720
      ],
      "parameters": {
        "width": 416,
        "height": 256,
        "content": "## CONFIG\n\nEdit these places only for 90% of use cases:\n```\n1. Init RunConfig\n2.URL build nodes \n3. Keywords Filter lists\n4. HTTP Request URL/headers.\n``` "
      }
    },
    {
      "id": "97602b31-2d25-488b-b813-2ee4e0f2a0fe",
      "name": "Code - Tag topic - Coin telegraph",
      "type": "n8n-nodes-base.code",
      "position": [
        128,
        432
      ]
    },
    {
      "id": "03e932ee-bb95-48ca-b92f-ce4837fcce42",
      "name": "RSS Read - CoinTelegraph",
      "type": "n8n-nodes-base.rssFeedRead",
      "position": [
        -400,
        432
      ]
    },
    {
      "id": "9fe664e3-9624-4c15-a667-b8acacdd5f2e",
      "name": "Sticky Note2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1776,
        -128
      ],
      "parameters": {
        "width": 640,
        "height": 496,
        "content": "## Section 1 – Triggers & Run Config\nThis section controls how the workflow starts and what it should fetch."
      }
    },
    {
      "id": "d42831f4-64bd-4f56-a447-a8c0949f0831",
      "name": "Sticky Note3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1056,
        -336
      ],
      "parameters": {
        "width": 1936,
        "height": 1008,
        "content": "## Section 2 – Fetch & Tag News from Sources\nThis section decides which sources to use and pulls news from each of them."
      }
    },
    {
      "id": "8993380b-a412-467c-8b68-b3f930e3891c",
      "name": "Sticky Note4",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        928,
        -336
      ],
      "parameters": {
        "width": 784,
        "height": 1008,
        "content": "## Section 3 - Merge and normalize All Items\nThis section normalizes metadata and merges all sources into one unified stream."
      }
    },
    {
      "id": "17142132-b6c7-4e08-a17f-3739e1eb355e",
      "name": "Sticky Note5",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1744,
        -64
      ],
      "parameters": {
        "width": 784,
        "height": 400,
        "content": "## Section 4 – Filter, Deduplicate & Build Payload → Send to Backend\nThis section prepares the final dataset and sends it to your app or UI."
      }
    }
  ],
  "connections": {
    "Merge": {
      "main": [
        [
          {
            "node": "Init RunConfig",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Webhook": {
      "main": [
        [
          {
            "node": "Merge",
            "type": "main",
            "index": 1
          }
        ]
      ]
    },
    "X Batches": {
      "main": [
        [
          {
            "node": "RSS Read - X Posts",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Loop back – X Batches",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "IF Gate - X": {
      "main": [
        [
          {
            "node": "Code - URL Build - XCancel",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Init RunConfig": {
      "main": [
        [
          {
            "node": "IF Gate - Coindesk",
            "type": "main",
            "index": 0
          },
          {
            "node": "IF Gate - Google news",
            "type": "main",
            "index": 0
          },
          {
            "node": "IF Gate - CoinTelegraph",
            "type": "main",
            "index": 0
          },
          {
            "node": "IF Gate - X",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Schedule Trigger": {
      "main": [
        [
          {
            "node": "Merge",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Code - Array bind": {
      "main": [
        [
          {
            "node": "HTTP Request - Send to your backend",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "IF Gate - Coindesk": {
      "main": [
        [
          {
            "node": "RSS Read - Coindesk",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "RSS Read - X Posts": {
      "main": [
        [
          {
            "node": "Code - Tag topic - X",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "RSS Read - Coindesk": {
      "main": [
        [
          {
            "node": "Code - Tag topic - Coin desk",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Code - Tag topic - X": {
      "main": [
        [
          {
            "node": "Code - Accumulate X items",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "IF - More X batches?": {
      "main": [
        [
          {
            "node": "X Batches",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Code - Finalize X batches (emit combined)",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Source set - X Posts": {
      "main": [
        [
          {
            "node": "Merge - X posts + CoinTelegraph",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "IF Gate - Google news": {
      "main": [
        [
          {
            "node": "Code - URL build - Google news",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Source set - Coindesk": {
      "main": [
        [
          {
            "node": "Merge - Coindesk + Google news",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Code - Keywords Filter": {
      "main": [
        [
          {
            "node": "Code - Array bind",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "RSS Read - Google news": {
      "main": [
        [
          {
            "node": "Code - Tag topic - Google news",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "IF Gate - CoinTelegraph": {
      "main": [
        [
          {
            "node": "RSS Read - CoinTelegraph",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Loop back – X Batches": {
      "main": [
        [
          {
            "node": "X Batches",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "RSS Read - CoinTelegraph": {
      "main": [
        [
          {
            "node": "Code - Tag topic - Coin telegraph",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Source set - Google news": {
      "main": [
        [
          {
            "node": "Merge - Coindesk + Google news",
            "type": "main",
            "index": 1
          }
        ]
      ]
    },
    "Code - Accumulate X items": {
      "main": [
        [
          {
            "node": "IF - More X batches?",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Code - Reset X accumulator": {
      "main": [
        [
          {
            "node": "X Batches",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Code - URL Build - XCancel": {
      "main": [
        [
          {
            "node": "Code - Reset X accumulator",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Source set - Cointelegraph": {
      "main": [
        [
          {
            "node": "Merge - X posts + CoinTelegraph",
            "type": "main",
            "index": 1
          }
        ]
      ]
    },
    "Code - Tag topic - Coin desk": {
      "main": [
        [
          {
            "node": "Source set - Coindesk",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Code - Tag topic - Google news": {
      "main": [
        [
          {
            "node": "Source set - Google news",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Code - URL build - Google news": {
      "main": [
        [
          {
            "node": "RSS Read - Google news",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Merge - Coindesk + Google news": {
      "main": [
        [
          {
            "node": "Merge - Merge previous two merges",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Merge - X posts + CoinTelegraph": {
      "main": [
        [
          {
            "node": "Merge - Merge previous two merges",
            "type": "main",
            "index": 1
          }
        ]
      ]
    },
    "Code - Tag topic - Coin telegraph": {
      "main": [
        [
          {
            "node": "Source set - Cointelegraph",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Merge - Merge previous two merges": {
      "main": [
        [
          {
            "node": "Code - Keywords Filter",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Code - Finalize X batches (emit combined)": {
      "main": [
        [
          {
            "node": "Source set - X Posts",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}