AutomationFlowsGeneral › Hourly Finance News Alert with AI

Hourly Finance News Alert with AI

Original n8n title: Finance Alert

Finance Alert. Uses rssFeedRead, openAi, httpRequest. Scheduled trigger; 11 nodes.

Cron / scheduled trigger★★★★☆ complexityAI-powered11 nodesRSS Feed ReadOpenAIHTTP Request
General Trigger: Cron / scheduled Nodes: 11 Complexity: ★★★★☆ AI nodes: yes Added:

This workflow follows the HTTP Request → OpenAI 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
{
  "name": "Finance Alert",
  "nodes": [
    {
      "parameters": {
        "rule": {
          "interval": [
            {
              "field": "hours",
              "hoursInterval": 1
            }
          ]
        }
      },
      "name": "Every Hour",
      "type": "n8n-nodes-base.scheduleTrigger",
      "typeVersion": 1.2,
      "position": [
        240,
        300
      ]
    },
    {
      "parameters": {
        "url": "https://feeds.bloomberg.com/markets/news.rss",
        "options": {}
      },
      "name": "Bloomberg Markets",
      "type": "n8n-nodes-base.rssFeedRead",
      "typeVersion": 1,
      "position": [
        460,
        200
      ]
    },
    {
      "parameters": {
        "url": "https://feeds.reuters.com/reuters/businessNews",
        "options": {}
      },
      "name": "Reuters Business",
      "type": "n8n-nodes-base.rssFeedRead",
      "typeVersion": 1,
      "position": [
        460,
        400
      ]
    },
    {
      "parameters": {
        "url": "https://feeds.a]bbased.com/wsj/xml/rss/3_7085.xml",
        "options": {}
      },
      "name": "WSJ Markets",
      "type": "n8n-nodes-base.rssFeedRead",
      "typeVersion": 1,
      "position": [
        460,
        600
      ]
    },
    {
      "parameters": {
        "url": "https://www.reddit.com/r/wallstreetbets/top/.rss?t=day",
        "options": {}
      },
      "name": "WSB Top",
      "type": "n8n-nodes-base.rssFeedRead",
      "typeVersion": 1,
      "position": [
        460,
        800
      ]
    },
    {
      "parameters": {
        "mode": "combine",
        "mergeByFields": {
          "values": []
        },
        "options": {}
      },
      "name": "Merge Sources",
      "type": "n8n-nodes-base.merge",
      "typeVersion": 3,
      "position": [
        700,
        500
      ]
    },
    {
      "parameters": {
        "conditions": {
          "options": {
            "caseSensitive": false
          },
          "conditions": [
            {
              "id": "recent",
              "leftValue": "={{ $json.isoDate || $json.pubDate }}",
              "rightValue": "={{ $now.minus({ hours: 2 }).toISO() }}",
              "operator": {
                "type": "dateTime",
                "operation": "after"
              }
            }
          ]
        }
      },
      "name": "Filter Last 2 Hours",
      "type": "n8n-nodes-base.filter",
      "typeVersion": 2,
      "position": [
        920,
        500
      ]
    },
    {
      "parameters": {
        "model": "gpt-4o-mini",
        "messages": {
          "values": [
            {
              "role": "system",
              "content": "You are a finance news analyst. Rate news urgency 1-10.\n\nURGENT (8-10):\n- Fed rate decisions, policy shifts\n- Major earnings surprises (FAANG, NVDA)\n- Market crashes/rallies >3%\n- Geopolitical events affecting markets\n- Breaking M&A announcements\n- Crypto major moves (BTC >5% daily)\n\nIMPORTANT (5-7):\n- Sector rotation signals\n- Notable analyst upgrades/downgrades\n- Economic data releases\n- Company guidance changes\n\nNORMAL (1-4):\n- Routine earnings\n- Opinion pieces\n- Historical analysis\n\nRespond JSON: {\"urgency\": 1-10, \"category\": \"fed|earnings|macro|crypto|geopolitical\", \"tickers\": [\"AAPL\"], \"headline\": \"5 words max\"}"
            },
            {
              "role": "user",
              "content": "Title: {{ $json.title }}\nSource: {{ $json.link }}\nContent: {{ $json.contentSnippet || $json.content | truncate(500) }}"
            }
          ]
        },
        "options": {
          "temperature": 0.1
        }
      },
      "name": "Rate Urgency",
      "type": "@n8n/n8n-nodes-langchain.openAi",
      "typeVersion": 1.8,
      "position": [
        1140,
        500
      ]
    },
    {
      "parameters": {
        "jsCode": "const response = JSON.parse($input.first().json.message.content);\nconst item = $input.first().json;\nreturn [{\n  json: {\n    title: item.title,\n    link: item.link,\n    source: new URL(item.link).hostname,\n    ...response\n  }\n}];"
      },
      "name": "Parse Result",
      "type": "n8n-nodes-base.code",
      "typeVersion": 2,
      "position": [
        1360,
        500
      ]
    },
    {
      "parameters": {
        "conditions": {
          "number": [
            {
              "value1": "={{ $json.urgency }}",
              "value2": 7,
              "operation": "gte"
            }
          ]
        }
      },
      "name": "Urgency >= 7?",
      "type": "n8n-nodes-base.if",
      "typeVersion": 2,
      "position": [
        1580,
        500
      ]
    },
    {
      "parameters": {
        "method": "POST",
        "url": "={{ $vars.BLINKO_URL }}/api/v1/note/upsert",
        "authentication": "genericCredentialType",
        "genericAuthType": "httpHeaderAuth",
        "sendBody": true,
        "specifyBody": "json",
        "jsonBody": "={\n  \"content\": \"\ud83d\udcb0 {{ $json.headline }}\\n{{ $json.link }}\\n\\n{{ $json.title }}\\n[{{ $json.category }}] {{ $json.tickers.join(' ') }} Urgency: {{ $json.urgency }}/10 #rss #finance\",\n  \"type\": 0\n}"
      },
      "name": "Save to Blinko",
      "type": "n8n-nodes-base.httpRequest",
      "typeVersion": 4.2,
      "position": [
        1800,
        400
      ],
      "credentials": {
        "httpHeaderAuth": {
          "name": "<your credential>"
        }
      }
    }
  ],
  "connections": {
    "Every Hour": {
      "main": [
        [
          {
            "node": "Bloomberg Markets",
            "type": "main",
            "index": 0
          },
          {
            "node": "Reuters Business",
            "type": "main",
            "index": 0
          },
          {
            "node": "WSJ Markets",
            "type": "main",
            "index": 0
          },
          {
            "node": "WSB Top",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Bloomberg Markets": {
      "main": [
        [
          {
            "node": "Merge Sources",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Reuters Business": {
      "main": [
        [
          {
            "node": "Merge Sources",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "WSJ Markets": {
      "main": [
        [
          {
            "node": "Merge Sources",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "WSB Top": {
      "main": [
        [
          {
            "node": "Merge Sources",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Merge Sources": {
      "main": [
        [
          {
            "node": "Filter Last 2 Hours",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Filter Last 2 Hours": {
      "main": [
        [
          {
            "node": "Rate Urgency",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Rate Urgency": {
      "main": [
        [
          {
            "node": "Parse Result",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Parse Result": {
      "main": [
        [
          {
            "node": "Urgency >= 7?",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Urgency >= 7?": {
      "main": [
        [
          {
            "node": "Save to Blinko",
            "type": "main",
            "index": 0
          }
        ],
        []
      ]
    }
  },
  "settings": {
    "executionOrder": "v1"
  },
  "tags": [
    {
      "name": "finance"
    }
  ]
}

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

Stay ahead of critical financial developments by receiving instant alerts on urgent market news, saving you hours of manual monitoring and enabling swift decision-making for investments or business strategies. This workflow suits traders, financial analysts, or executives who need timely insights without constant screen time. It pulls fresh articles from Bloomberg Markets, Reuters Business, WSJ Markets, and WSB Top via RSS feeds every hour, merges and filters them to focus on the last two hours, then leverages OpenAI to rate each story's urgency before notifying you through a custom HTTP request.

Use this workflow when managing high-stakes portfolios or tracking volatile sectors like stocks and commodities, especially during trading hours. Avoid it for non-time-sensitive research or if you prefer comprehensive daily digests over real-time pings. Common variations include swapping RSS sources for niche feeds like crypto news or adjusting the OpenAI prompt to prioritise specific keywords such as 'earnings' or 'merger'.

About this workflow

Finance Alert. Uses rssFeedRead, openAi, httpRequest. Scheduled trigger; 11 nodes.

Source: https://github.com/Genius-Cai/homelab-dashboard/blob/8b1ab1829fd950b7acb417acb48098f3ccd2160e/n8n-workflows/finance-alert.json — original creator credit. Request a take-down →

More General workflows → · Browse all categories →

Related workflows

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

General

Job Seeking. Uses scheduleTrigger, rssFeedRead, googleSheets, httpRequest. Scheduled trigger; 12 nodes.

RSS Feed Read, Google Sheets, HTTP Request +1
General

RoboNuggets - Faceless POV AI Machine (R24). Uses scheduleTrigger, googleSheets, chainLlm, lmChatOpenAi. Scheduled trigger; 31 nodes.

Google Sheets, Chain Llm, OpenAI Chat +5
General

Video Automation (images only). Uses chainLlm, lmChatOpenAi, outputParserStructured, splitOut. Scheduled trigger; 28 nodes.

Chain Llm, OpenAI Chat, Output Parser Structured +4
General

PPC Thievery. Uses manualTrigger, googleDrive, stickyNote, httpRequest. Event-driven trigger; 28 nodes.

Google Drive, HTTP Request, OpenAI +1
General

AI Facebook Ad Spy Tool. Uses manualTrigger, httpRequest, googleDrive, splitInBatches. Event-driven trigger; 25 nodes.

HTTP Request, Google Drive, OpenAI +1