This workflow follows the Agent → Execute Workflow Trigger 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 →
{
"updatedAt": "2025-09-10T16:50:26.000Z",
"createdAt": "2025-08-20T18:39:51.868Z",
"id": "Oz1klRdsrlykSSSb",
"name": "Backup Analysis Anna",
"active": true,
"isArchived": false,
"nodes": [
{
"parameters": {
"url": "=https://api.firecrawl.dev/v1/extract/{{ $(\"Request\").item.json.id }}",
"authentication": "genericCredentialType",
"genericAuthType": "httpBearerAuth",
"options": {}
},
"type": "n8n-nodes-base.httpRequest",
"typeVersion": 4.2,
"position": [
1632,
608
],
"id": "65ca2aed-4e7c-45db-90dd-234044954195",
"name": "Get Data",
"credentials": {
"httpHeaderAuth": {
"name": "<your credential>"
},
"httpBearerAuth": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"jsCode": "const data = $input.first().json.data;\n\nconst hasData = Array.isArray(data)\n ? data.length > 0\n : typeof data === 'object' && data !== null && Object.keys(data).length > 0;\n\nreturn { status: hasData };"
},
"type": "n8n-nodes-base.code",
"typeVersion": 2,
"position": [
1824,
608
],
"id": "2b8267c0-ac7b-48e9-beb2-63c6777e34a1",
"name": "Check Status"
},
{
"parameters": {
"conditions": {
"options": {
"caseSensitive": true,
"leftValue": "",
"typeValidation": "strict",
"version": 2
},
"conditions": [
{
"id": "ec7e1f39-a030-411f-9ca5-ef8632663c49",
"leftValue": "={{ $json.status }}",
"rightValue": "",
"operator": {
"type": "boolean",
"operation": "true",
"singleValue": true
}
}
],
"combinator": "or"
},
"options": {}
},
"type": "n8n-nodes-base.if",
"typeVersion": 2.2,
"position": [
2000,
608
],
"id": "64108982-af4e-4d61-a788-0900cac294b0",
"name": "If Successful"
},
{
"parameters": {
"method": "POST",
"url": "https://api.firecrawl.dev/v1/extract",
"authentication": "genericCredentialType",
"genericAuthType": "httpBearerAuth",
"sendBody": true,
"bodyParameters": {
"parameters": [
{
"name": "prompt",
"value": "={{ $json.prompt }} {{ $json.urls[0] }}"
}
]
},
"options": {}
},
"type": "n8n-nodes-base.httpRequest",
"typeVersion": 4.2,
"position": [
1440,
608
],
"id": "a3b84a22-541a-4e88-a60b-c3f17050ab18",
"name": "Request",
"credentials": {
"httpHeaderAuth": {
"name": "<your credential>"
},
"httpBearerAuth": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"model": "openai/gpt-4.1",
"options": {}
},
"type": "@n8n/n8n-nodes-langchain.lmChatOpenRouter",
"typeVersion": 1,
"position": [
32,
256
],
"id": "484d6833-4ede-4729-9c41-db4745af9bd8",
"name": "OpenRouter Chat Model",
"credentials": {
"openRouterApi": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"sessionIdType": "customKey",
"sessionKey": "={{ $('Message Anna').item.json.message.chat.id }}"
},
"type": "@n8n/n8n-nodes-langchain.memoryBufferWindow",
"typeVersion": 1.3,
"position": [
2208,
144
],
"id": "91e423e1-7597-490c-9354-06f853fc7f0c",
"name": "Simple Memory"
},
{
"parameters": {
"chatId": "={{ $('Message Anna').item.json.message.chat.id }}",
"text": "={{ $json.output.analyseAnnaAnswer }}",
"additionalFields": {
"appendAttribution": false
}
},
"type": "n8n-nodes-base.telegram",
"typeVersion": 1.2,
"position": [
560,
-16
],
"id": "534dddde-f783-4ce4-9429-ba196e371ff5",
"name": "Answer User",
"credentials": {
"telegramApi": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"jsonSchemaExample": "{\n \"userMessage\": \"Analysiere alle Solartechnik-Firmen in Brandenburg auf W\u00e4rmepumpen-Angebote.\",\n \"analyseAnnaAnswer\": \"Analyse der Solartechnik-Firmen in Brandenburg wird vorbereitet. Fokus: W\u00e4rmepumpen-Angebote auf den Webseiten.\",\n \"website\": [\n \"https://www.solarexperte-brb.de\",\n \"https://www.sonnenkraft-technik.de\",\n \"https://www.solarteam-ost.de\"\n ],\n \"userGoal\": \"W\u00e4rmepumpen-Angebote finden\",\n \"startResearch\": true,\n \"isSingleCompany\": false\n}"
},
"type": "@n8n/n8n-nodes-langchain.outputParserStructured",
"typeVersion": 1.2,
"position": [
672,
256
],
"id": "5e1c079a-5820-477a-be3a-d3394308bb18",
"name": "Structured Output Parser"
},
{
"parameters": {
"updates": [
"message"
],
"additionalFields": {}
},
"type": "n8n-nodes-base.telegramTrigger",
"typeVersion": 1.2,
"position": [
-160,
-16
],
"id": "02ad7413-2f57-4841-b441-ab3b99400dbf",
"name": "Message Anna",
"credentials": {
"telegramApi": {
"name": "<your credential>"
}
},
"disabled": true
},
{
"parameters": {
"assignments": {
"assignments": [
{
"id": "51746dd0-2087-430b-aef5-76424ac07607",
"name": "supabaseProjectID",
"value": "nythxjdfrrtdvlhxndjg",
"type": "string"
},
{
"id": "6775cd0c-e308-4cc2-8230-db33a6c7a190",
"name": "bearerToken",
"value": "",
"type": "string"
}
]
},
"includeOtherFields": true,
"options": {}
},
"type": "n8n-nodes-base.set",
"typeVersion": 3.4,
"position": [
48,
-16
],
"id": "3b9fa25c-cf5d-496c-b99f-448d13611079",
"name": "ENV"
},
{
"parameters": {
"operation": "getAll",
"tableId": "german_companies",
"returnAll": true,
"filters": {
"conditions": [
{
"keyName": "state",
"condition": "ilike",
"keyValue": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('conditions0_Field_Value', ``, 'string') }}"
}
]
}
},
"type": "n8n-nodes-base.supabaseTool",
"typeVersion": 1,
"position": [
144,
352
],
"id": "e4450935-61d3-4a98-b2b1-a88519fc15af",
"name": "Get_Companies_By_State",
"credentials": {
"supabaseApi": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"operation": "getAll",
"tableId": "german_companies",
"returnAll": true,
"filters": {
"conditions": [
{
"keyName": "city",
"condition": "ilike",
"keyValue": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('conditions0_Field_Value', ``, 'string') }}"
}
]
}
},
"type": "n8n-nodes-base.supabaseTool",
"typeVersion": 1,
"position": [
352,
352
],
"id": "88f06e14-b9a3-43a0-a677-008f785d837a",
"name": "Get_Companies_By_City",
"credentials": {
"supabaseApi": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"operation": "getAll",
"tableId": "german_companies",
"returnAll": true,
"filters": {
"conditions": [
{
"keyName": "district",
"condition": "ilike",
"keyValue": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('conditions0_Field_Value', ``, 'string') }}"
}
]
}
},
"type": "n8n-nodes-base.supabaseTool",
"typeVersion": 1,
"position": [
544,
352
],
"id": "88c49d5a-b4cd-4fc9-9baa-b0b7c9433f44",
"name": "Get_Companies_By_District",
"credentials": {
"supabaseApi": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"operation": "getAll",
"tableId": "german_companies",
"returnAll": true,
"filters": {
"conditions": [
{
"keyName": "industry",
"condition": "ilike",
"keyValue": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('conditions0_Field_Value', ``, 'string') }}"
}
]
}
},
"type": "n8n-nodes-base.supabaseTool",
"typeVersion": 1,
"position": [
448,
192
],
"id": "c833c2bd-2ce6-4260-ba27-384eb586f682",
"name": "Get_Companies_By_Industry",
"credentials": {
"supabaseApi": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"operation": "getAll",
"tableId": "german_companies",
"returnAll": true,
"filters": {
"conditions": [
{
"keyName": "company",
"condition": "ilike",
"keyValue": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('conditions0_Field_Value', ``, 'string') }}"
}
]
}
},
"type": "n8n-nodes-base.supabaseTool",
"typeVersion": 1,
"position": [
240,
192
],
"id": "c683f1af-3c00-4da9-a59d-2ed17f152aa2",
"name": "Get_Companies_By_Name",
"credentials": {
"supabaseApi": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"workflowInputs": {
"values": [
{
"name": "userMessage"
}
]
}
},
"type": "n8n-nodes-base.executeWorkflowTrigger",
"typeVersion": 1.1,
"position": [
-160,
-176
],
"id": "1ce28331-85d6-4975-8506-b8bf5c432c99",
"name": "Team Leader"
},
{
"parameters": {
"modelId": {
"__rl": true,
"value": "gpt-4.1",
"mode": "list",
"cachedResultName": "GPT-4.1"
},
"messages": {
"values": [
{
"content": "=\nDu bist ein API-Request-Generator f\u00fcr FireCrawl.\n\nDeine Aufgabe: Erstelle ein JSON-Objekt, das als Request-Body f\u00fcr eine FireCrawl-Abfrage dient \u2013 basierend auf dem strukturierten Input einer vorangegangenen Analyse.\n\n## Input\n\nDas folgende JSON-Objekt sollst du verarbeiten:\n\n{{ $('Analyse Anna').all().toJsonString() }}\n\n## Deine Aufgabe\n\nErstelle daraus ein JSON im FireCrawl-Format:\n\n{\n \"urls\": [...],\n \"prompt\": \"...\",\n \"schema\": {\n \"type\": \"object\",\n \"properties\": {\n ...\n },\n \"required\": [...]\n }\n}\n\n### Regeln f\u00fcr das Format:\n\n1. **urls**: direkt aus `website` \u00fcbernehmen (Das Array sollte immer nur eine url haben, fals doch mehree drin sind nehme die erste)\n2. **prompt**: formuliere einen pr\u00e4zisen englischen Extraktionsbefehl, z.\u202fB. \n - \u201eExtract the CEO name\u201c \n - \u201eFind the job page URL\u201c \n - \u201eSearch for career opportunities on the site\u201c \n3. **schema**: Erzeuge passende Properties im JSON-Schema-Stil, je nachdem, was der Nutzer wissen will. \n - z.\u202fB. `{ \"ceo_name\": { \"type\": \"string\" } }` \n - oder `{ \"job_page_url\": { \"type\": \"string\" } }` \n - Falls mehrere Infos gew\u00fcnscht sind: mehrere Properties \n4. **required**: Alle Keys aus `properties` m\u00fcssen hier gelistet werden \n5. Kein Text au\u00dferhalb des JSON \u2013 gib ausschlie\u00dflich das finale JSON-Objekt zur\u00fcck.\n\n## Beispiele\n\n### Beispiel 1 (nur CEO)\n\nInput:\n{\n \"userGoal\": \"Finde den Gesch\u00e4ftsf\u00fchrer\",\n \"website\": [\"https://firma-a.de\"]\n}\n\nOutput:\n{\n \"urls\": [\"https://firma-a.de\"],\n \"prompt\": \"Extract the CEO name\",\n \"schema\": {\n \"type\": \"object\",\n \"properties\": {\n \"ceo_name\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\"ceo_name\"]\n }\n}\n\n### Beispiel 2 (mehrere Infos)\n\nInput:\n{\n \"userGoal\": \"Finde den Gesch\u00e4ftsf\u00fchrer, seine E-Mail und Telefonnummer\",\n \"website\": [\"https://firma-b.de\"]\n}\n\nOutput:\n{\n \"urls\": [\"https://firma-b.de\"],\n \"prompt\": \"Extract the CEO name, the CEO email and the CEO phone number\",\n \"schema\": {\n \"type\": \"object\",\n \"properties\": {\n \"ceo_name\": {\n \"type\": \"string\"\n },\n \"ceo_email\": {\n \"type\": \"string\"\n },\n \"ceo_phone\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\"ceo_name\", \"ceo_email\", \"ceo_phone\"]\n }\n}\n\n## Besondere Hinweise\n\n- Nutze ausschlie\u00dflich englische Begriffe im `prompt` und in den `schema`-Feldern \n- Keine allgemeinen Texte oder Kommentare \u2013 nur das finale JSON \n- Wenn das Ziel unklar ist, nimm eine sinnvolle, m\u00f6glichst spezifische englische Beschreibung als `prompt` (z.\u202fB. \u201eTry to find out what services the company offers\u201c)\n",
"role": "system"
}
]
},
"jsonOutput": true,
"options": {}
},
"type": "@n8n/n8n-nodes-langchain.openAi",
"typeVersion": 1.8,
"position": [
448,
608
],
"id": "a2228688-4a69-488d-abfa-50cc0945f9c5",
"name": "Build Request",
"credentials": {
"openAiApi": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"conditions": {
"options": {
"caseSensitive": true,
"leftValue": "",
"typeValidation": "strict",
"version": 2
},
"conditions": [
{
"id": "4d17cc19-9718-4ca8-8a95-71655e348f07",
"leftValue": "={{ $('Analyse Anna').item.json.output.website }}",
"rightValue": "",
"operator": {
"type": "array",
"operation": "notEmpty",
"singleValue": true
}
},
{
"id": "fc028b7e-c3fe-4730-93e7-46a4f7030dfa",
"leftValue": "={{ $('Analyse Anna').item.json.output.userGoal }}",
"rightValue": "",
"operator": {
"type": "string",
"operation": "notEmpty",
"singleValue": true
}
},
{
"id": "664fa3e0-b57a-4f48-abe2-abed4edb9fdf",
"leftValue": "={{ $('Analyse Anna').item.json.output.startResearch }}",
"rightValue": "",
"operator": {
"type": "boolean",
"operation": "true",
"singleValue": true
}
}
],
"combinator": "and"
},
"options": {}
},
"type": "n8n-nodes-base.if",
"typeVersion": 2.2,
"position": [
1584,
368
],
"id": "e443bcc2-6d1c-47ca-98aa-31f718e76a45",
"name": "Start Analysing"
},
{
"parameters": {
"options": {}
},
"type": "n8n-nodes-base.splitInBatches",
"typeVersion": 3,
"position": [
256,
752
],
"id": "753b3eef-2c3d-4464-ab69-7e75ca139381",
"name": "Loop Over Companies"
},
{
"parameters": {
"promptType": "define",
"text": "={{ $json.message.text }}",
"hasOutputParser": true,
"options": {
"systemMessage": "=# Rolle\n\nDu bist AnalyseAnna \u2013 eine digitale Recherche- und Analyse-Expertin. Pr\u00e4zise, professionell und l\u00f6sungsorientiert. Dein Job: aus Anweisungen wie \u201eAnalysiere ...\u201c eine fundierte Recherche starten \u2013 auf Basis einer firmenspezifischen Datenbank.\n\n# Was du brauchst\n\n- Einen **Firmennamen**, eine **Branche**, einen **Ortsteil**, eine **Stadt** oder ein **Bundesland** \n- Ein konkretes **Analyse-Ziel**: Was soll genau herausgefunden werden? \n (z.\u202fB. \u201eAnalysiere alle Webseiten auf W\u00e4rmepumpen-Angebote\u201c oder \u201eSchau, ob die Firmen Stellenangebote auf ihrer Seite haben\u201c)\n\n\ud83d\udccc Die Eingabe ist meistens eine direkte Anweisung, z.\u202fB.:\n> \u201eAnalysiere Solartechnik-Firmen in Brandenburg auf W\u00e4rmepumpen\u201c\n> \u201eAnalysiere diese Firma: XYZ GmbH auf Karriere-Seite und Dienstleistungen\u201c\n\nFalls etwas unklar ist: sachlich und konkret nachfragen.\n\n# Wichtiger Hinweis\n\nWenn keine konkrete Firma angegeben ist, sondern z.\u202fB. eine Branche oder ein Ort:\n- Hole **alle passenden Firmen aus der Datenbank**\n- Und analysiere **jede dieser Firmen einzeln**\n\nKeine pauschale Branchenrecherche \u2013 du arbeitest immer **firmenspezifisch**.\n\n# Tools\n\n- **Get_Companies_By_Name** \u2013 f\u00fcr einzelne Firmen \n- **Get_Companies_By_Industry** \u2013 f\u00fcr Branchen \n- **Get_Companies_By_State** \u2013 f\u00fcr Bundesl\u00e4nder \n- **Get_Companies_By_City** \u2013 f\u00fcr St\u00e4dte \n- **Get_Companies_By_District** \u2013 f\u00fcr Stadtteile \n\nImmer das Tool nutzen, das zur Nutzereingabe passt. Wenn nicht eindeutig: R\u00fcckfrage stellen.\n\n# Webseiten-Info\n\nDie Analyse erfolgt **auf Basis der Unternehmenswebseiten**. \nDiese werden aus dem Feld `website` in der Datenbank extrahiert. \nAlle Tools liefern Daten im gleichen Format, inklusive des Felds `website`.\n\nDu erstellst ein **Array aus URLs**, auf denen dann gescraped wird.\n\n# Flag f\u00fcr Einzelfirma\n\nSetze das Feld `isSingleCompany`:\n\n- `true`, wenn **nur eine Website vorhanden** ist **oder** wenn die Nutzereingabe klar auf **eine bestimmte Firma** zielt (z.\u202fB. \u201eAnalysiere die XYZ GmbH ...\u201c) \n- `false`, wenn mehrere Webseiten vorhanden sind **und** keine eindeutige Einzelfirma genannt ist\n\n# Antwortstil\n\n- Professionell, klar, sachlich \n- Keine Umgangssprache oder Floskeln \n- Beispiel: \u201eAnalyse der Solartechnik-Firmen in Brandenburg wird vorbereitet. Fokus: W\u00e4rmepumpen.\u201c\n\n# Ziel\n\n- Eingabe auswerten und verstehen: Firma, Branche oder Region? \n- Analyse-Ziel erkennen \n- Passendes Tool aufrufen \n- Webseiten-Array vorbereiten \n- Erst wenn alles vollst\u00e4ndig ist: `startResearch = true`\n\n# Sonderfall: Smalltalk oder irrelevante Nachricht\n\nWenn die Nachricht **nicht analyserelevant** ist (z.\u202fB. \u201eWie geht\u2019s dir?\u201c), antworte locker, aber mit Stil:\n\n**Beispiel:**\n\n> Guten Morgen, Chef! Mir geht\u2019s bestens \u2013 bereit f\u00fcr den n\u00e4chsten Auftrag. \n> Soll ich direkt wieder mit der Analyse von Firmen starten?\n\n# Beispiel Output\n\n{\n \"userMessage\": \"Analysiere alle Solartechnik-Firmen in Brandenburg auf W\u00e4rmepumpen-Angebote.\",\n \"analyseAnnaAnswer\": \"Analyse der Solartechnik-Firmen in Brandenburg wird vorbereitet. Fokus: W\u00e4rmepumpen-Angebote auf den Webseiten.\",\n \"website\": [\n \"https://www.solarexperte-brb.de\",\n \"https://www.sonnenkraft-technik.de\",\n \"https://www.solarteam-ost.de\"\n ],\n \"userGoal\": \"W\u00e4rmepumpen-Angebote finden\",\n \"startResearch\": true,\n \"isSingleCompany\": false\n}\n"
}
},
"type": "@n8n/n8n-nodes-langchain.agent",
"typeVersion": 1.9,
"position": [
224,
-16
],
"id": "7256e2ea-2e60-48c6-b7e2-d3c1ddfd20e4",
"name": "Analyse Anna"
},
{
"parameters": {
"conditions": {
"options": {
"caseSensitive": true,
"leftValue": "",
"typeValidation": "strict",
"version": 2
},
"conditions": [
{
"id": "6e8ddfac-5c09-42c8-b176-9a0a7da41ad7",
"leftValue": "={{ $('Analyse Anna').item.json.output.isSingleCompany }}",
"rightValue": "",
"operator": {
"type": "boolean",
"operation": "true",
"singleValue": true
}
}
],
"combinator": "and"
},
"options": {}
},
"type": "n8n-nodes-base.if",
"typeVersion": 2.2,
"position": [
-160,
608
],
"id": "85df995f-79d5-4646-bfbd-cefa81614833",
"name": "Analyse A Single Company"
},
{
"parameters": {
"conditions": {
"options": {
"caseSensitive": true,
"leftValue": "",
"typeValidation": "strict",
"version": 2
},
"conditions": [
{
"id": "6e8ddfac-5c09-42c8-b176-9a0a7da41ad7",
"leftValue": "={{ $('Analyse Anna').item.json.output.isSingleCompany }}",
"rightValue": "",
"operator": {
"type": "boolean",
"operation": "true",
"singleValue": true
}
}
],
"combinator": "and"
},
"options": {}
},
"type": "n8n-nodes-base.if",
"typeVersion": 2.2,
"position": [
2432,
496
],
"id": "e1f331ae-81ce-4d9a-b5ae-61b7b5541cc7",
"name": "Analyse A Single Company1"
},
{
"parameters": {
"modelId": {
"__rl": true,
"value": "gpt-4.1",
"mode": "list",
"cachedResultName": "GPT-4.1"
},
"messages": {
"values": [
{
"content": "=Du bist \"Analyse Anna\", eine freundliche, professionelle KI-Assistentin, die Ergebnisse von Webseitenanalysen zusammenfasst und als Textnachricht zur\u00fcckgibt. Dein Stil ist sachlich, aber freundlich.\n\n## Ziel\n\nFormuliere eine passende Antwort auf Basis folgender Informationen:\n\n1. **Initialer Analyse-Wunsch des Nutzers** (siehe \"initialRequest\")\n2. **Ergebnisse der FireCrawl-Analyse** (siehe \"result\")\n\nDu gibst **nur** ein JSON-Objekt mit folgendem Format zur\u00fcck:\n\n```json\n{\n \"analyseAnnaSuccessAnswer\": \"...\"\n}\n```\n\n## Regeln\n\n- Antworte auf Deutsch.\n- Starte nicht mit einer Begr\u00fc\u00dfung \u2013 du antwortest mitten in einer laufenden Konversation.\n- Gehe freundlich, aber kurz auf das Ziel des Nutzers ein.\n- Formuliere klar, was du herausgefunden hast.\n- Nenne dabei die gefundenen Informationen direkt (z.\u202fB. Name, Position, Link etc.)\n- Verwende keine Platzhalter.\n- Schreibe so, als w\u00fcrde \"Anna\" in einem Telegram-Chat antworten \u2013 direkt, aber professionell.\n- Kein Text au\u00dferhalb des JSON!\n\n### Input:\n\ninitialRequest:\n\n{{ $('Analyse Anna').all().toJsonString() }}\n\nresult:\n\n{{ $('Get Data').item.json.data.toJsonString() }}",
"role": "system"
}
]
},
"jsonOutput": true,
"options": {}
},
"type": "@n8n/n8n-nodes-langchain.openAi",
"typeVersion": 1.8,
"position": [
2640,
464
],
"id": "f1d82ad8-f509-4086-939b-a26905812a82",
"name": "Build Answer",
"credentials": {
"openAiApi": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"chatId": "={{ $('Message Anna').item.json.message.chat.id }}",
"text": "={{ $json.message.content.analyseAnnaSuccessAnswer }}",
"additionalFields": {
"appendAttribution": false
}
},
"type": "n8n-nodes-base.telegram",
"typeVersion": 1.2,
"position": [
2960,
464
],
"id": "c95e7be8-9c1c-4e94-89a3-1d401d932d17",
"name": "Inform User",
"credentials": {
"telegramApi": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"options": {}
},
"type": "@n8n/n8n-nodes-langchain.lmChatOpenRouter",
"typeVersion": 1,
"position": [
3072,
656
],
"id": "8c68dcaf-d682-4b97-ae30-ea4b67bc98fd",
"name": "OpenRouter Chat Model1",
"credentials": {
"openRouterApi": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"tableId": "german_companies",
"fieldsUi": {
"fieldValues": [
{
"fieldId": "website",
"fieldValue": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('fieldValues0_Field_Value', ``, 'string') }}"
}
]
}
},
"type": "n8n-nodes-base.supabaseTool",
"typeVersion": 1,
"position": [
3232,
656
],
"id": "0fc66767-1291-4e75-98fb-9cd77f38e214",
"name": "Get_Company",
"credentials": {
"supabaseApi": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"promptType": "define",
"text": "=Du bist AnalyseAnna \u2013 eine digitale Recherche- und Analyse-Expertin. Pr\u00e4zise, professionell und l\u00f6sungsorientiert. Dein Job: Unternehmensdaten in einer Datenbank zu aktualisieren.\n\n# Tools\n\n1. **Get_Company** - Liefert gespeicherte Unternehmensdaten aus der Datenbank zur angegebenen Webseite.\n2. **Update_CEO** - Aktualisiert das column `ceo_name`\n3. **Update_Email** - Aktualisiert das column `email`\n2. **Save_Analysis** - Speichert sonstige in der Analyse herausgefundene informationen als string im column `analysis`\n\n## Ziel\n\nBasierend auf der vorhandenen Webseite und den Ergebnissen einer FireCrawl-Analyse sollst du die gespeicherten Unternehmensdaten aktualisieren.\n\n## Regeln\n\n- Die Webseite ist bereits bekannt (du musst `Get_Company` **nur nutzen, wenn du bestehende Daten vergleichen m\u00f6chtest**).\n- Wenn neue Informationen aus FireCrawl vorliegen (z.\u202fB. ceo_name), aktualisiere diese \u00fcber `Update_CEO`.\n- Wenn neue Informationen aus FireCrawl vorliegen (z.\u202fB. email), aktualisiere diese \u00fcber `Update_Email`.\n- Wenn neue zus\u00e4tzliche Informationen aus FireCrawl vorliegen, speicher eine diese mit `Save_Analysis` \n- Verwende keine Platzhalter.\n- Gib am Ende deiner Aktionen eine kurze Erkl\u00e4rung ab was du gemacht hast.\n\n## Input\n\nfirecrawlResult:\n\n{{ $('Get Data').item.json.data.toJsonString() }}\n\ncompanyWebsite:\n\n{{ $('Analyse Anna').first().json.output.website[0] }}",
"options": {}
},
"type": "@n8n/n8n-nodes-langchain.agent",
"typeVersion": 1.9,
"position": [
3120,
464
],
"id": "21fd9617-981f-4093-afdc-d5ef9a701a80",
"name": "Update Agent"
},
{
"parameters": {
"operation": "update",
"tableId": "german_companies",
"filters": {
"conditions": [
{
"keyName": "website",
"condition": "eq",
"keyValue": "={{ $('Build Request').item.json.message.content.urls[0] }}"
}
]
},
"fieldsUi": {
"fieldValues": [
{
"fieldId": "ceo_name",
"fieldValue": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('fieldValues1_Field_Value', ``, 'string') }}"
}
]
}
},
"type": "n8n-nodes-base.supabaseTool",
"typeVersion": 1,
"position": [
3392,
656
],
"id": "ee045e78-4384-447a-81f1-abd64c3a3032",
"name": "Update_CEO",
"credentials": {
"supabaseApi": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"operation": "update",
"tableId": "german_companies",
"filters": {
"conditions": [
{
"keyName": "website",
"condition": "eq",
"keyValue": "={{ $('Build Request').item.json.message.content.urls[0] }}"
}
]
},
"fieldsUi": {
"fieldValues": [
{
"fieldId": "email",
"fieldValue": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('fieldValues0_Field_Value', ``, 'string') }}"
}
]
}
},
"type": "n8n-nodes-base.supabaseTool",
"typeVersion": 1,
"position": [
3152,
784
],
"id": "847d7b26-14f3-4ef0-a9e9-68abd707fe7c",
"name": "Update_Email",
"credentials": {
"supabaseApi": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"operation": "update",
"tableId": "german_companies",
"filters": {
"conditions": [
{
"keyName": "website",
"condition": "eq",
"keyValue": "={{ $('Build Request').item.json.message.content.urls[0] }}"
}
]
},
"fieldsUi": {
"fieldValues": [
{
"fieldId": "analysis",
"fieldValue": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('fieldValues0_Field_Value', ``, 'string') }}"
}
]
}
},
"type": "n8n-nodes-base.supabaseTool",
"typeVersion": 1,
"position": [
3312,
784
],
"id": "5fd3ec08-9bb7-460b-b2cb-5871538a84de",
"name": "Save_Analysis",
"credentials": {
"supabaseApi": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"chatId": "={{ $('Message Anna').item.json.message.chat.id }}",
"text": "Ich habe Ihnen die analysierten Informationen in der Datenbank aktualisiert.",
"additionalFields": {
"appendAttribution": false
}
},
"type": "n8n-nodes-base.telegram",
"typeVersion": 1.2,
"position": [
3472,
464
],
"id": "3cde1ee0-23ca-4044-8861-de74d2ab575f",
"name": "Inform User1",
"credentials": {
"telegramApi": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"options": {}
},
"type": "@n8n/n8n-nodes-langchain.lmChatOpenRouter",
"typeVersion": 1,
"position": [
2592,
1008
],
"id": "ff279539-1cbe-4dcb-bd9b-aecb671440c2",
"name": "OpenRouter Chat Model2",
"credentials": {
"openRouterApi": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"tableId": "german_companies",
"fieldsUi": {
"fieldValues": [
{
"fieldId": "website",
"fieldValue": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('fieldValues0_Field_Value', ``, 'string') }}"
}
]
}
},
"type": "n8n-nodes-base.supabaseTool",
"typeVersion": 1,
"position": [
2752,
1008
],
"id": "aad9a925-deec-4290-a770-7e1848c77cc4",
"name": "Get_Company1",
"credentials": {
"supabaseApi": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"promptType": "define",
"text": "=Du bist AnalyseAnna \u2013 eine digitale Recherche- und Analyse-Expertin. Pr\u00e4zise, professionell und l\u00f6sungsorientiert. Dein Job: Unternehmensdaten in einer Datenbank zu aktualisieren.\n\n# Tools\n\n1. **Get_Company** - Liefert gespeicherte Unternehmensdaten aus der Datenbank zur angegebenen Webseite.\n2. **Update_CEO** - Aktualisiert das column `ceo_name`\n3. **Update_Email** - Aktualisiert das column `email`\n2. **Save_Analysis** - Speichert sonstige in der Analyse herausgefundene informationen als string im column `analysis`\n\n## Ziel\n\nBasierend auf der vorhandenen Webseite und den Ergebnissen einer FireCrawl-Analyse sollst du die gespeicherten Unternehmensdaten aktualisieren.\n\n## Regeln\n\n- Die Webseite ist bereits bekannt (du musst `Get_Company` **nur nutzen, wenn du bestehende Daten vergleichen m\u00f6chtest**).\n- Wenn neue Informationen aus FireCrawl vorliegen (z.\u202fB. ceo_name), aktualisiere diese \u00fcber `Update_CEO`.\n- Wenn neue Informationen aus FireCrawl vorliegen (z.\u202fB. email), aktualisiere diese \u00fcber `Update_Email`.\n- Wenn neue zus\u00e4tzliche Informationen aus FireCrawl vorliegen, speicher eine diese mit `Save_Analysis` \n- Verwende keine Platzhalter.\n- Gib am Ende deiner Aktionen eine kurze Erkl\u00e4rung ab was du gemacht hast.\n\n## Input\n\nfirecrawlResult:\n\n{{ $('Get Data').item.json.data.toJsonString() }}\n\ncompanyWebsite:\n\n{{ $('Analyse Anna').first().json.output.website[0] }}",
"options": {}
},
"type": "@n8n/n8n-nodes-langchain.agent",
"typeVersion": 1.9,
"position": [
2640,
784
],
"id": "866bc480-9e2d-4235-a15b-c1c471319b78",
"name": "Update Agent1"
},
{
"parameters": {
"operation": "update",
"tableId": "german_companies",
"filters": {
"conditions": [
{
"keyName": "website",
"condition": "eq",
"keyValue": "={{ $('Build Request').item.json.message.content.urls[0] }}"
}
]
},
"fieldsUi": {
"fieldValues": [
{
"fieldId": "ceo_name",
"fieldValue": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('fieldValues1_Field_Value', ``, 'string') }}"
}
]
}
},
"type": "n8n-nodes-base.supabaseTool",
"typeVersion": 1,
"position": [
2912,
1008
],
"id": "d99092f5-7076-4623-b1a2-55de7c258c25",
"name": "Update_CEO1",
"credentials": {
"supabaseApi": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"operation": "update",
"tableId": "german_companies",
"filters": {
"conditions": [
{
"keyName": "website",
"condition": "eq",
"keyValue": "={{ $('Build Request').item.json.message.content.urls[0] }}"
}
]
},
"fieldsUi": {
"fieldValues": [
{
"fieldId": "email",
"fieldValue": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('fieldValues0_Field_Value', ``, 'string') }}"
}
]
}
},
"type": "n8n-nodes-base.supabaseTool",
"typeVersion": 1,
"position": [
2672,
1152
],
"id": "e64d5872-e238-413e-a74d-58e7fe79fa67",
"name": "Update_Email1",
"credentials": {
"supabaseApi": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"operation": "update",
"tableId": "german_companies",
"filters": {
"conditions": [
{
"keyName": "website",
"condition": "eq",
"keyValue": "={{ $('Build Request').item.json.message.content.urls[0] }}"
}
]
},
"fieldsUi": {
"fieldValues": [
{
"fieldId": "email",
"fieldValue": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('fieldValues0_Field_Value', ``, 'string') }}"
}
]
}
},
"type": "n8n-nodes-base.supabaseTool",
"typeVersion": 1,
"position": [
2832,
1152
],
"id": "6f1fdb2c-1a0a-40ee-b171-e7b6d5c4279f",
"name": "Save_Analysis1",
"credentials": {
"supabaseApi": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"chatId": "={{ $('Message Anna').item.json.message.chat.id }}",
"text": "Ich habe Ihnen die analysierten Informationen in der Datenbank aktualisiert.",
"additionalFields": {
"appendAttribution": false
}
},
"type": "n8n-nodes-base.telegram",
"typeVersion": 1.2,
"position": [
544,
816
],
"id": "0cfaa217-47e0-4cd4-9863-be820809e818",
"name": "Finished Task",
"credentials": {
"telegramApi": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"mode": "runOnceForEachItem",
"jsCode": "return $input.item.json.message.content;"
},
"type": "n8n-nodes-base.code",
"typeVersion": 2,
"position": [
832,
608
],
"id": "d1322bb4-161d-40f4-97ae-6fd9881f7c40",
"name": "Code"
},
{
"parameters": {
"fieldToSplitOut": "output.website",
"options": {}
},
"type": "n8n-nodes-base.splitOut",
"typeVersion": 1,
"position": [
912,
128
],
"id": "11bdad08-b428-4a17-a220-7b08abc3b6df",
"name": "Split Out"
},
{
"parameters": {
"jsCode": "return $input.all().map(item => {\n return { json: { url: item.json[\"output.website\"] } };\n});"
},
"type": "n8n-nodes-base.code",
"typeVersion": 2,
"position": [
1184,
128
],
"id": "af6efccf-f896-4704-b83f-bc5b9e2f0029",
"name": "Code1"
},
{
"parameters": {},
"type": "n8n-nodes-base.wait",
"typeVersion": 1.1,
"position": [
2208,
704
],
"id": "20661de5-68c4-475b-b9c5-f37faab1babe",
"name": "Wait"
}
],
"connections": {
"Get Data": {
"main": [
[
{
"node": "Check Status",
"type": "main",
"index": 0
}
]
]
},
"Check Status": {
"main": [
[
{
"node": "If Successful",
"type": "main",
"index": 0
}
]
]
},
"If Successful": {
"main": [
[
{
"node": "Analyse A Single Company1",
"type": "main",
"index": 0
}
],
[
{
"node": "Wait",
"type": "main",
"index": 0
}
]
]
},
"Request": {
"main": [
[
{
"node": "Get Data",
"type": "main",
"index": 0
}
]
]
},
"OpenRouter Chat Model": {
"ai_languageModel": [
[
{
"node": "Analyse Anna",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"Simple Memory": {
"ai_memory": [
[
{
"node": "Analyse Anna",
"type": "ai_memory",
"index": 0
},
{
"node": "Update Agent",
"type": "ai_memory",
"index": 0
}
]
]
},
"Structured Output Parser": {
"ai_outputParser": [
[
{
"node": "Analyse Anna",
"type": "ai_outputParser",
"index": 0
}
]
]
},
"Message Anna": {
"main": [
[
{
"node": "ENV",
"type": "main",
"index": 0
}
]
]
},
"ENV": {
"main": [
[
{
"node": "Analyse Anna",
"type": "main",
"index": 0
}
]
]
},
"Get_Companies_By_State": {
"ai_tool": [
[
{
"node": "Analyse Anna",
"type": "ai_tool",
"index": 0
}
]
]
},
"Get_Companies_By_City": {
"ai_tool": [
[
{
"node": "Analyse Anna",
"type": "ai_tool",
"index": 0
}
]
]
},
"Get_Companies_By_District": {
"ai_tool": [
[
{
"node": "Analyse Anna",
"type": "ai_tool",
"index": 0
}
]
]
},
"Get_Companies_By_Industry": {
"ai_tool": [
[
{
"node": "Analyse Anna",
"type": "ai_tool",
"index": 0
}
]
]
},
"Get_Companies_By_Name": {
"ai_tool": [
[
{
"node": "Analyse Anna",
"type": "ai_tool",
"index": 0
}
]
]
},
"Answer User": {
"main": [
[]
]
},
"Team Leader": {
"main": [
[
{
"node": "ENV",
"type": "main",
"index": 0
}
]
]
},
"Build Request": {
"main": [
[
{
"node": "Code",
"type": "main",
"index": 0
}
]
]
},
"Start Analysing": {
"main": [
[
{
"node": "Analyse A Single Company",
"type": "main",
"index": 0
}
]
]
},
"Loop Over Companies": {
"main": [
[
{
"node": "Finished Task",
"type": "main",
"index": 0
}
],
[
{
"node": "Build Request",
"type": "main",
"index": 0
}
]
]
},
"Analyse Anna": {
"main": [
[
{
"node": "Answer User",
"type": "main",
"index": 0
},
{
"node": "Split Out",
"type": "main",
"index": 0
}
]
]
},
"Analyse A Single Company": {
"main": [
[
{
"node": "Build Request",
"type": "main",
"index": 0
}
],
[
{
"node": "Loop Over Companies",
"type": "main",
"index": 0
}
]
]
},
"Analyse A Single Company1": {
"main": [
[
{
"node": "Build Answer",
"type": "main",
"index": 0
}
],
[
{
"node": "Update Agent1",
"type": "main",
"index": 0
}
]
]
},
"Build Answer": {
"main": [
[
{
"node": "Inform User",
"type": "main",
"index": 0
}
]
]
},
"Inform User": {
"main": [
[
{
"node": "Update Agent",
"type": "main",
"index": 0
}
]
]
},
"OpenRouter Chat Model1": {
"ai_languageModel": [
[
{
"node": "Update Agent",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"Get_Company": {
"ai_tool": [
[
{
"node": "Update Agent",
"type": "ai_tool",
"index": 0
}
]
]
},
"Update_CEO": {
"ai_tool": [
[
{
"node": "Update Agent",
"type": "ai_tool",
"index": 0
}
]
]
},
"Update_Email": {
"ai_tool": [
[
{
"node": "Update Agent",
"type": "ai_tool",
"index": 0
}
]
]
},
"Save_Analysis": {
"ai_tool": [
[
{
"node": "Update Agent",
"type": "ai_tool",
"index": 0
}
]
]
},
"Update Agent": {
"main": [
[
{
"node": "Inform User1",
"type": "main",
"index": 0
}
]
]
},
"OpenRouter Chat Model2": {
"ai_languageModel": [
[
{
"node": "Update Agent1",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"Get_Company1": {
"ai_tool": [
[
{
"node": "Update Agent1",
"type": "ai_tool",
"index": 0
}
]
]
},
"Update Agent1": {
"main": [
[
{
"node": "Loop Over Companies",
"type": "main",
"index": 0
}
]
]
},
"Update_CEO1": {
"ai_tool": [
[
{
"node": "Update Agent1",
"type": "ai_tool",
"index": 0
}
]
]
},
"Update_Email1": {
"ai_tool": [
[
{
"node": "Update Agent1",
"type": "ai_tool",
"index": 0
}
]
]
},
"Save_Analysis1": {
"ai_tool": [
[
{
"node": "Update Agent1",
"type": "ai_tool",
"index": 0
}
]
]
},
"Code": {
"main": [
[
{
"node": "Request",
"type": "main",
"index": 0
}
]
]
},
"Split Out": {
"main": [
[
{
"node": "Code1",
"type": "main",
"index": 0
}
]
]
},
"Code1": {
"main": [
[
{
"node": "Start Analysing",
"type": "main",
"index": 0
}
]
]
},
"Wait": {
"main": [
[
{
"node": "Loop Over Companies",
"type": "main",
"index": 0
}
]
]
}
},
"settings": {
"executionOrder": "v1"
},
"staticData": null,
"meta": {
"templateCredsSetupCompleted": true
},
"versionId": "e01503fb-67d2-49d3-8773-ca969ee6df1d",
"activeVersionId": "e01503fb-67d2-49d3-8773-ca969ee6df1d",
"triggerCount": 0,
"shared": [
{
"updatedAt": "2025-08-20T18:39:51.877Z",
"createdAt": "2025-08-20T18:39:51.877Z",
"role": "workflow:owner",
"workflowId": "Oz1klRdsrlykSSSb",
"projectId": "B7QJE85HA2Vij1it"
}
],
"activeVersion": {
"updatedAt": "2025-12-17T18:43:08.327Z",
"createdAt": "2025-12-17T18:43:08.327Z",
"versionId": "e01503fb-67d2-49d3-8773-ca969ee6df1d",
"workflowId": "Oz1klRdsrlykSSSb",
"nodes": [
{
"parameters": {
"url": "=https://api.firecrawl.dev/v1/extract/{{ $(\"Request\").item.json.id }}",
"authentication": "genericCredentialType",
"genericAuthType": "httpBearerAuth",
"options": {}
},
"type": "n8n-nodes-base.httpRequest",
"typeVersion": 4.2,
"position": [
1632,
608
],
"id": "65ca2aed-4e7c-45db-90dd-234044954195",
"name": "Get Data",
"credentials": {
"httpHeaderAuth": {
"id": "iye8Q4wTT5P3zqAN",
"name": "Digistore Header Auth"
},
"httpBearerAuth": {
"id": "SxECNeK5aZvVbEGa",
"name": "FireCrawl Bearer Auth"
}
}
},
{
"parameters": {
"jsCode": "const data = $input.first().json.data;\n\nconst hasData = Array.isArray(data)\n ? data.length > 0\n : typeof data === 'object' && data !== null && Object.keys(data).length > 0;\n\nreturn { status: hasData };"
},
"type": "n8n-nodes-base.code",
"typeVersion": 2,
"position": [
1824,
608
],
"id": "2b8267c0-ac7b-48e9-beb2-63c6777e34a1",
"name": "Check Status"
},
{
"parameters": {
"conditions": {
"options": {
"caseSensitive": true,
"leftValue": "",
"typeValidation": "strict",
"version": 2
},
"conditions": [
{
"id": "ec7e1f39-a030-411f-9ca5-ef8632663c49",
"leftValue": "={{ $json.status }}",
"rightValue": "",
"operator": {
"type": "boolean",
"operation": "true",
"singleValue": true
}
}
],
"combinator": "or"
},
"options": {}
},
"type": "n8n-nodes-base.if",
"typeVersion": 2.2,
"position": [
2000,
608
],
"id": "64108982-af4e-4d61-a788-0900cac294b0",
"name": "If Successful"
},
{
"parameters": {
"method": "POST",
"url": "https://api.firecrawl.dev/v1/extract",
"authentication": "genericCredentialType",
"genericAuthType": "httpBearerAuth",
"sendBody": true,
"bodyParameters": {
"parameters": [
{
"name": "prompt",
"value": "={{ $json.prompt }} {{ $json.urls[0] }}"
}
]
},
"options": {}
},
"type": "n8n-nodes-base.httpRequest",
"typeVersion": 4.2,
"position": [
1440,
608
],
"id": "a3b84a22-541a-4e88-a60b-c3f17050ab18",
"name": "Request",
"credentials": {
"httpHeaderAuth": {
"id": "iye8Q4wTT5P3zqAN",
"name": "Digistore Header Auth"
},
"httpBearerAuth": {
"id": "SxECNeK5aZvVbEGa",
"name": "FireCrawl Bearer Auth"
}
}
},
{
"parameters": {
"model": "openai/gpt-4.1",
"options": {}
},
"type": "@n8n/n8n-nodes-langchain.lmChatOpenRouter",
"typeVersion": 1,
"position": [
32,
256
],
"id": "484d6833-4ede-4729-9c41-db4745af9bd8",
"name": "OpenRouter Chat Model",
"credentials": {
"openRouterApi": {
"id": "kRKxZkSBiWUL3Xr4",
"name": "OpenRouter account"
}
}
},
{
"parameters": {
"sessionIdType": "customKey",
"sessionKey": "={{ $('Message Anna').item.json.message.chat.id }}"
},
"type": "@n8n/n8n-nodes-langchain.memoryBufferWindow",
"typeVersion": 1.3,
"position": [
2208,
144
],
"id": "91e423e1-7597-490c-9354-06f853fc7f0c",
"name": "Simple Memory"
},
{
"parameters": {
"chatId": "={{ $('Message Anna').item.json.message.chat.id }}",
"text": "={{ $json.output.analyseAnnaAnswer }}",
"additionalFields": {
"appendAttribution": false
}
},
"type": "n8n-nodes-base.telegram",
"typeVersion": 1.2,
"position": [
560,
-16
],
"id": "534dddde-f783-4ce4-9429-ba196e371ff5",
"name": "Answer User",
"webhookId": "06135021-087d-4558-be06-94de90f2f053",
"credentials": {
"telegramApi": {
"id": "nZg2Mdzi4Olbxbrr",
"name": "Analysis Anna Telegram"
}
}
},
{
"parameters": {
"jsonSchemaExample": "{\n \"userMessage\": \"Analysiere alle Solartechnik-Firmen in Brandenburg auf W\u00e4rmepumpen-Angebote.\",\n \"analyseAnnaAnswer\": \"Analyse der Solartechnik-Firmen in Brandenburg wird vorbereitet. Fokus: W\u00e4rmepumpen-Angebote auf den Webseiten.\",\n \"website\": [\n \"https://www.solarexperte-brb.de\",\n \"https://www.sonnenkraft-technik.de\",\n \"https://www.solarteam-ost.de\"\n ],\n \"userGoal\": \"W\u00e4rmepumpen-Angebote finden\",\n \"startResearch\": true,\n \"isSingleCompany\": false\n}"
},
"type": "@n8n/n8n-nodes-langchain.outputParserStructured",
"typeVersion": 1.2,
"position": [
672,
256
],
"id": "5e1c079a-5820-477a-be3a-d3394308bb18",
"name": "Structured Output Parser"
},
{
"parameters": {
"updates": [
"message"
],
"additionalFields": {}
},
"type": "n8n-nodes-base.telegramTrigger",
"typeVersion": 1.2,
"position": [
-160,
-16
],
"id": "02ad7413-2f57-4841-b441-ab3b99400dbf",
"name": "Message Anna",
"webhookId": "d7f347dd-476e-414b-a30c-357b366ce6d0",
"credentials": {
"telegramApi": {
"id": "nZg2Mdzi4Olbxbrr",
"name": "Analysis Anna Telegram"
}
},
"disabled": true
},
{
"parameters": {
"assignments": {
"assignments": [
{
"id": "51746dd0-2087-430b-aef5-76424ac07607",
"name": "supabaseProjectID",
"value": "nythxjdfrrtdvlhxndjg",
"type": "string"
},
{
"id": "6775cd0c-e308-4cc2-8230-db33a6c7a190",
"name": "bearerToken",
"value": "",
"type": "string"
}
]
},
"includeOtherFields": true,
"options": {}
},
"type": "n8n-nodes-base.set",
"typeVersion": 3.4,
"position": [
48,
-16
],
"id": "3b9fa25c-cf5d-496c-b99f-448d13611079",
"name": "ENV"
},
{
"parameters": {
"operation": "getAll",
"tableId": "german_companies",
"returnAll": true,
"filters": {
"conditions": [
{
"keyName": "state",
"condition": "ilike",
"keyValue": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('conditions0_Field_Value', ``, 'string') }}"
}
]
}
},
"type": "n8n-nodes-base.supabaseTool",
"typeVersion": 1,
"position": [
144,
352
],
"id": "e4450935-61d3-4a98-b2b1-a88519fc15af",
"name": "Get_Companies_By_State",
"credentials": {
"supabaseApi": {
"id": "fdzgJDGuPA2JozKn",
"name": "Supabase account"
}
}
},
{
"parameters": {
"operation": "getAll",
"tableId": "german_companies",
"returnAll": true,
"filters": {
"conditions": [
{
"keyName": "city",
"condition": "ilike",
"keyValue": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('conditions0_Field_Value', ``, 'string') }}"
}
]
}
},
"type": "n8n-nodes-base.supabaseTool",
"typeVersion": 1,
"position": [
352,
352
],
"id": "88f06e14-b9a3-43a0-a677-008f785d837a",
"name": "Get_Companies_By_City",
"credentials": {
"supabaseApi": {
"id": "fdzgJDGuPA2JozKn",
"name": "Supabase account"
}
}
},
{
"parameters": {
"operation": "getAll",
"tableId": "german_companies",
"returnAll": true,
"filters": {
"conditions": [
{
"keyName": "district",
"condition": "ilike",
"keyValue": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('conditions0_Field_Value', ``, 'string') }}"
}
]
}
},
"type": "n8n-nodes-base.supabaseTool",
"typeVersion": 1,
"position": [
544,
352
],
"id": "88c49d5a-b4cd-4fc9-9baa-b0b7c9433f44",
"name": "Get_Companies_By_District",
"credentials": {
"supabaseApi": {
"id": "fdzgJDGuPA2JozKn",
"name": "Supabase account"
}
}
},
{
"parameters": {
"operation": "getAll",
"tableId": "german_companies",
"returnAll": true,
"filters": {
"conditions": [
{
"keyName": "industry",
"condition": "ilike",
"keyValue": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('conditions0_Field_Value', ``, 'string') }}"
}
]
}
},
"type": "n8n-nodes-base.supabaseTool",
"typeVersion": 1,
"position": [
448,
192
],
"id": "c833c2bd-2ce6-4260-ba27-384eb586f682",
"name": "Get_Companies_By_Industry",
"credentials": {
"supabaseApi": {
"id": "fdzgJDGuPA2JozKn",
"name": "Supabase account"
}
}
},
{
"parameters": {
"operation": "getAll",
"tableId": "german_companies",
"returnAll": true,
"filters": {
"conditions": [
{
"keyName": "company",
"condition": "ilike",
"keyValue": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('conditions0_Field_Value', ``, 'string') }}"
}
]
}
},
"type": "n8n-nodes-base.supabaseTool",
"typeVersion": 1,
"position": [
240,
192
],
"id": "c683f1af-3c00-4da9-a59d-2ed17f152aa2",
"name": "Get_Companies_By_Name",
"credentials": {
"supabaseApi": {
"id": "fdzgJDGuPA2JozKn",
"name": "Supabase account"
}
}
},
{
"parameters": {
"workflowInputs": {
"values": [
{
"name": "userMessage"
}
]
}
},
"type": "n8n-nodes-base.executeWorkflowTrigger",
"typeVersion": 1.1,
"position": [
-160,
-176
],
"id": "1ce28331-85d6-4975-8506-b8bf5c432c99",
"name": "Team Leader"
},
{
"parameters": {
"modelId": {
"__rl": true,
"value": "gpt-4.1",
"mode": "list",
"cachedResultName": "GPT-4.1"
},
"messages": {
"values": [
{
"content": "=\nDu bist ein API-Request-Generator f\u00fcr FireCrawl.\n\nDeine Aufgabe: Erstelle ein JSON-Objekt, das als Request-Body f\u00fcr eine FireCrawl-Abfrage dient \u2013 basierend auf dem strukturierten Input einer vorangegangenen Analyse.\n\n## Input\n\nDas folgende JSON-Objekt sollst du verarbeiten:\n\n{{ $('Analyse Anna').all().toJsonString() }}\n\n## Deine Aufgabe\n\nErstelle daraus ein JSON im FireCrawl-Format:\n\n{\n \"urls\": [...],\n \"prompt\": \"...\",\n \"schema\": {\n \"type\": \"object\",\n \"properties\": {\n ...\n },\n \"required\": [...]\n
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.
httpBearerAuthhttpHeaderAuthopenAiApiopenRouterApisupabaseApitelegramApi
For the full experience including quality scoring and batch install features for each workflow upgrade to Pro
About this workflow
Backup Analysis Anna. Uses httpRequest, lmChatOpenRouter, memoryBufferWindow, telegram. Event-driven trigger; 42 nodes.
Source: https://github.com/adamhaley/megyk-automations/blob/main/workflows/Backup_Analysis_Anna.json — original creator credit. Request a take-down →
Related workflows
Workflows that share integrations, category, or trigger type with this one. All free to copy and import.
Generate AI viral videos with NanoBanana & VEO3, shared on socials via Blotato 2. Uses @blotato/n8n-nodes-blotato, googleSheets, lmChatOpenAi, toolThink. Event-driven trigger; 94 nodes.
The AI-Powered Shopify SEO Content Automation is an enterprise-grade workflow that transforms product content creation for e-commerce stores. This sophisticated multi-agent system integrates GPT-4o, C
Arvifund - Supabase (Fixed v6). Uses httpRequest, telegram, supabase, telegramTrigger. Event-driven trigger; 92 nodes.
Arvifund - Supabase (Fixed v5). Uses httpRequest, telegram, googleSheets, telegramTrigger. Event-driven trigger; 91 nodes.
Arvifund - Supabase. Uses httpRequest, telegram, googleSheets, telegramTrigger. Event-driven trigger; 90 nodes.