AutomationFlowsAI & RAG › Extract Key Earnings Insights From Google News RSS and Send Alerts to Slack…

Extract Key Earnings Insights From Google News RSS and Send Alerts to Slack…

Original n8n title: Extract Key Earnings Insights From Google News RSS and Send Alerts to Slack with Gemini Pro

ByWeblineIndia @weblineindia on n8n.io

> RSS to Slack Automation via Gemini & n8n

Event trigger★★★★☆ complexityAI-powered16 nodesHTTP RequestXMLChain LlmGoogle Gemini ChatData TableSlack
AI & RAG Trigger: Event Nodes: 16 Complexity: ★★★★☆ AI nodes: yes Added:

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

This workflow follows the Chainllm → HTTP Request 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
{
  "id": "eU3mOTO8q2WgjYtn",
  "meta": {
    "templateCredsSetupCompleted": true
  },
  "name": "Earnings News \u2192 Key Takeaways Extractor",
  "tags": [],
  "nodes": [
    {
      "id": "5f4cec36-c29b-4d3f-bfbb-a95809ff270d",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -288,
        -512
      ],
      "parameters": {
        "width": 464,
        "height": 480,
        "content": "## Earnings News \u2192 Key Takeaways Extractor\n\n## How it Works\nThis workflow automates financial monitoring by fetching the latest earnings reports via Google News RSS. It uses Gemini AI to parse messy news snippets into structured data (Revenue, Guidance and Surprises). A Logic Filter then separates actual financial results from simple meeting announcements, ensuring only high-signal alerts are sent to Slack while all data is logged for records.\n\n## Setup Steps\n\nHTTP Request: Update the q= parameter with your target companies.\n\nGemini Node: Ensure your Google AI API key is connected.\n\nSlack Node: Connect your Slack account and select a destination channel.\n\nDatabase: Map the \"Clean AI Output\" fields to your table columns.\n\nTest: Click \"Execute Workflow\" to verify the extraction and filtering logic."
      },
      "typeVersion": 1
    },
    {
      "id": "8960a447-da8d-4581-ad2b-5f27902d6e3e",
      "name": "Sticky Note1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        304,
        -128
      ],
      "parameters": {
        "color": 7,
        "width": 672,
        "height": 368,
        "content": "## Data Acquisition Group \n(Nodes: Fetch: Google News RSS \u2192 Filter: Top 5 Articles\u2192 Iterator: Process Each Article)\n\nSection: Source Fetching\nRetrieves the latest RSS feed from Google News. The Limit node prevents high API costs by processing only the top 5 stories, while the Loop ensures each article is analyzed individually."
      },
      "typeVersion": 1
    },
    {
      "id": "8a625516-9519-46d7-af20-bc05b961a48a",
      "name": "Sticky Note2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1120,
        -192
      ],
      "parameters": {
        "color": 7,
        "width": 768,
        "height": 416,
        "content": "## AI Processing Group \n(Nodes: Parser: XML to JSON\u2192 Prompt Builder: Financial Analyst \u2192 Gemini)\n\nSection: Intelligence Engine\nConverts raw XML into readable JSON. The Edit Fields node constructs a \"Financial Analyst\" prompt, which Gemini uses to extract hard numbers and market sentiment from the news text."
      },
      "typeVersion": 1
    },
    {
      "id": "fd3eb0e2-c135-4159-88fe-bc79bd484906",
      "name": "Sticky Note3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1968,
        -160
      ],
      "parameters": {
        "color": 7,
        "width": 784,
        "height": 336,
        "content": "## Governance & Delivery Layer\n(Nodes: Formatter \u2192 Database Log \u2192 High-Signal Filter \u2192 Slack Alert)\n\nSection: Quality & Alerts\nCleans AI responses for database compatibility and logs every result. A Logic Filter then identifies \"empty\" announcements, ensuring only high-value, actionable financial data is pushed to Slack to prevent user alert fatigue."
      },
      "typeVersion": 1
    },
    {
      "id": "8aa8d8db-0cbb-47b6-a6e2-748023216d1c",
      "name": "Start: Manual Trigger",
      "type": "n8n-nodes-base.manualTrigger",
      "position": [
        128,
        48
      ],
      "parameters": {},
      "typeVersion": 1
    },
    {
      "id": "b67fa332-4438-4c2a-aa85-dd2151adea94",
      "name": "Fetch: Google News RSS",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        368,
        48
      ],
      "parameters": {
        "url": "https://news.google.com/rss/search?q=company+earnings+OR+quarterly+results+OR+earnings+report&hl=en-IN&gl=IN&ceid=IN:en",
        "options": {}
      },
      "typeVersion": 4.3
    },
    {
      "id": "c8e3c655-c571-4001-bf7b-3750111c92cd",
      "name": "Filter: Top 5 Articles",
      "type": "n8n-nodes-base.limit",
      "position": [
        592,
        48
      ],
      "parameters": {
        "maxItems": 5
      },
      "typeVersion": 1
    },
    {
      "id": "bab0f7b6-7fcc-4bee-9d1c-d0534b400230",
      "name": "Iterator: Process Each Article",
      "type": "n8n-nodes-base.splitInBatches",
      "position": [
        816,
        48
      ],
      "parameters": {
        "options": {}
      },
      "executeOnce": false,
      "retryOnFail": false,
      "typeVersion": 3,
      "alwaysOutputData": false
    },
    {
      "id": "e47d5c1a-5448-4c7f-87be-9358aefaaa6b",
      "name": "Parser: XML to JSON",
      "type": "n8n-nodes-base.xml",
      "position": [
        1168,
        64
      ],
      "parameters": {
        "options": {}
      },
      "typeVersion": 1
    },
    {
      "id": "c677e3dd-befd-4ae7-a02d-dc95c195cce7",
      "name": "Prompt Builder: Financial Analyst",
      "type": "n8n-nodes-base.set",
      "position": [
        1392,
        64
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "62befc81-af19-446f-b722-bec904d04fe3",
              "name": "rss.channel.title",
              "type": "string",
              "value": "={{ $json.rss.channel.title }}"
            },
            {
              "id": "960b17dd-200c-42fc-853d-179b09c28a81",
              "name": "rss.channel.link",
              "type": "string",
              "value": "={{ $json.rss.channel.link }}"
            },
            {
              "id": "bbb706b6-e457-419a-be57-c50462f6775f",
              "name": "rss.channel.item[0].description",
              "type": "string",
              "value": "={{ $json.rss.channel.item[0].description }}"
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "9e9d4b71-b32b-47c4-941e-02fb75466857",
      "name": "AI: Extract Key Takeaways",
      "type": "@n8n/n8n-nodes-langchain.chainLlm",
      "position": [
        1648,
        -32
      ],
      "parameters": {
        "text": "=You are a financial analyst. I have an earnings headline: \"{{ $json.rss.channel.title }},{{ $json.rss.channel.link }}, {{ $json.rss.channel.item[0].description }}\nIf the headline contains specific numbers, extract them. If it doesn't, then check the given link summarize the general sentiment (e.g., \"Record results implies a positive revenue trend\").\n\nProvide:\n1. Revenue Trend\n2. Guidance\n3. Surprises\n\n",
        "batching": {},
        "promptType": "define"
      },
      "typeVersion": 1.8
    },
    {
      "id": "0e678609-c19e-4264-a818-ac4eb5b0cfb9",
      "name": "Model: Gemini Pro",
      "type": "@n8n/n8n-nodes-langchain.lmChatGoogleGemini",
      "position": [
        1664,
        240
      ],
      "parameters": {
        "options": {}
      },
      "credentials": {
        "googlePalmApi": {
          "name": "<your credential>"
        }
      },
      "retryOnFail": true,
      "typeVersion": 1,
      "waitBetweenTries": 5000
    },
    {
      "id": "2280c704-3807-4bbf-ad85-8f30a654372d",
      "name": "Formatter: Clean AI Output",
      "type": "n8n-nodes-base.set",
      "position": [
        2000,
        32
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "fcd2a217-cb80-47c8-9a99-fab4c089e2bc",
              "name": "rss.channel.title",
              "type": "string",
              "value": "={{ $node[\"Parser: XML to JSON\"].json[\"rss\"][\"channel\"][\"item\"][0][\"title\"] }}"
            },
            {
              "id": "b7cc388a-b0cc-4794-aaf7-21f0fc5c3265",
              "name": "Revenue Trend",
              "type": "string",
              "value": "={{ $json.text.split('Guidance:')[0].replace('Revenue:', '').trim() }}"
            },
            {
              "id": "ffae6c06-8a8b-44c0-83d1-a78639bf7838",
              "name": "Guidance",
              "type": "string",
              "value": "={{ $json.text.split('Guidance:')[1].split('Surprises:')[0].trim() }}"
            },
            {
              "id": "43c39cf5-a084-4b58-9b22-17a3c74d8358",
              "name": "Surprises",
              "type": "string",
              "value": "={{ $json.text.split('Surprises:')[1].trim() }}"
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "1f647dee-e19f-4c75-b34d-552a207fc23a",
      "name": "Database: Log Results",
      "type": "n8n-nodes-base.dataTable",
      "position": [
        2224,
        48
      ],
      "parameters": {
        "columns": {
          "value": {
            "Title": "={{ $json.rss.channel.title }}",
            "Guidance": "={{ $json.Guidance }}",
            "Surprises": "={{ $json.Surprises }}",
            "Revenue_Trend": "={{ $json['Revenue Trend'] }}"
          },
          "schema": [
            {
              "id": "Title",
              "type": "string",
              "display": true,
              "removed": false,
              "readOnly": false,
              "required": false,
              "displayName": "Title",
              "defaultMatch": false
            },
            {
              "id": "Revenue_Trend",
              "type": "string",
              "display": true,
              "removed": false,
              "readOnly": false,
              "required": false,
              "displayName": "Revenue_Trend",
              "defaultMatch": false
            },
            {
              "id": "Guidance",
              "type": "string",
              "display": true,
              "removed": false,
              "readOnly": false,
              "required": false,
              "displayName": "Guidance",
              "defaultMatch": false
            },
            {
              "id": "Surprises",
              "type": "string",
              "display": true,
              "removed": false,
              "readOnly": false,
              "required": false,
              "displayName": "Surprises",
              "defaultMatch": false
            }
          ],
          "mappingMode": "defineBelow",
          "matchingColumns": [],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        },
        "options": {},
        "dataTableId": {
          "__rl": true,
          "mode": "list",
          "value": "eRSBSLxgRO2ZZN8D",
          "cachedResultUrl": "/projects/XkgejKSYcPusPWyB/datatables/eRSBSLxgRO2ZZN8D",
          "cachedResultName": "Lalit-n8n"
        }
      },
      "typeVersion": 1.1
    },
    {
      "id": "b23b8f45-c7d2-467a-aad4-7f6383a3d1fa",
      "name": "Send a message",
      "type": "n8n-nodes-base.slack",
      "position": [
        2640,
        48
      ],
      "parameters": {
        "text": "=New Earnings Takeaway:  {{ $json.Title }}  Revenue Trend:{{ $json.Revenue_Trend }} Guidance: {{ $json[\"Guidance\"] }}  Surprises: {{ $json[\"Surprises\"] }}   [View Original Article]({{ $node[\"Parser: XML to JSON\"].json[\"rss\"][\"channel\"][\"item\"][0][\"link\"] }})",
        "user": {
          "__rl": true,
          "mode": "id",
          "value": "U0AP17N3QRY"
        },
        "select": "user",
        "otherOptions": {}
      },
      "credentials": {
        "slackApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 2.4
    },
    {
      "id": "b325a5d9-cff3-45ca-a391-b42bacef4829",
      "name": "High-Signal Filter",
      "type": "n8n-nodes-base.filter",
      "position": [
        2432,
        48
      ],
      "parameters": {
        "options": {},
        "conditions": {
          "options": {
            "version": 3,
            "leftValue": "",
            "caseSensitive": true,
            "typeValidation": "strict"
          },
          "combinator": "and",
          "conditions": [
            {
              "id": "2987caa3-03c1-4c73-af02-b729037472a1",
              "operator": {
                "type": "string",
                "operation": "notContains"
              },
              "leftValue": "={{ $json.Revenue_Trend }}",
              "rightValue": "Not available"
            }
          ]
        }
      },
      "typeVersion": 2.3
    }
  ],
  "active": false,
  "settings": {
    "availableInMCP": false,
    "executionOrder": "v1"
  },
  "versionId": "442a81d9-8a78-4371-a9ac-b04ff20063ad",
  "connections": {
    "Model: Gemini Pro": {
      "ai_languageModel": [
        [
          {
            "node": "AI: Extract Key Takeaways",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "High-Signal Filter": {
      "main": [
        [
          {
            "node": "Send a message",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Parser: XML to JSON": {
      "main": [
        [
          {
            "node": "Prompt Builder: Financial Analyst",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Database: Log Results": {
      "main": [
        [
          {
            "node": "High-Signal Filter",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Start: Manual Trigger": {
      "main": [
        [
          {
            "node": "Fetch: Google News RSS",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Fetch: Google News RSS": {
      "main": [
        [
          {
            "node": "Filter: Top 5 Articles",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Filter: Top 5 Articles": {
      "main": [
        [
          {
            "node": "Iterator: Process Each Article",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "AI: Extract Key Takeaways": {
      "main": [
        [
          {
            "node": "Formatter: Clean AI Output",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Formatter: Clean AI Output": {
      "main": [
        [
          {
            "node": "Database: Log Results",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Iterator: Process Each Article": {
      "main": [
        [],
        [
          {
            "node": "Parser: XML to JSON",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Prompt Builder: Financial Analyst": {
      "main": [
        [
          {
            "node": "AI: Extract Key Takeaways",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}

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

&gt; RSS to Slack Automation via Gemini & n8n

Source: https://n8n.io/workflows/15668/ — original creator credit. Request a take-down →

More AI & RAG workflows → · Browse all categories →

Related workflows

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

AI & RAG

Content - Newsletter Agent. Uses formTrigger, chainLlm, outputParserStructured, httpRequest. Event-driven trigger; 91 nodes.

Form Trigger, Chain Llm, Output Parser Structured +8
AI & RAG

Content - Newsletter Agent. Uses formTrigger, chainLlm, outputParserStructured, httpRequest. Event-driven trigger; 87 nodes.

Form Trigger, Chain Llm, Output Parser Structured +7
AI & RAG

Content - Write Best Tools In Category Article. Uses formTrigger, httpRequest, slack, chainLlm. Event-driven trigger; 41 nodes.

Form Trigger, HTTP Request, Slack +6
AI & RAG

Automate your lead intake, scoring, and outreach pipeline. This workflow collects leads from forms, enriches and scores them using Relevance AI, routes them by quality, and triggers the right follow-u

Form Trigger, HTTP Request, Chain Llm +6
AI & RAG

Sales teams and B2B marketers who spend hours researching leads manually. If you've looked at Clay but didn't want the $149/month price tag, this workflow does the same job as a one-time n8n template.

Form Trigger, HTTP Request, Chain Llm +3