Generierung von B2B-Lead-Möglichkeiten aus Websites mit Brightdata und OpenRouter AI
Dies ist ein AI Summarization, Multimodal AI-Bereich Automatisierungsworkflow mit 17 Nodes. Hauptsächlich werden Set, Code, Html, Agent, ChatTrigger und andere Nodes verwendet. B2B-Lead-Möglichkeiten aus Websites mit Brightdata und OpenRouter AI generieren
- •Keine besonderen Voraussetzungen, sofort nach Import nutzbar
Verwendete Nodes (17)
Kategorie
{
"meta": {
"instanceId": "4a11afdb3c52fd098e3eae9fad4b39fdf1bbcde142f596adda46c795e366b326",
"templateCredsSetupCompleted": true
},
"nodes": [
{
"id": "9a0fbaa1-3529-4fcb-8552-97def2e37c92",
"name": "Parameter",
"type": "n8n-nodes-base.set",
"position": [
-304,
96
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "d16e4ff1-02f6-4627-8eed-f1dc94b37bda",
"name": "url",
"type": "string",
"value": "={{ $json.chatInput }}"
},
{
"id": "39d8ba7a-3daf-4d3c-bec5-20f84b3d769c",
"name": "sitemap",
"type": "string",
"value": "sitemap.xml"
}
]
}
},
"typeVersion": 3.4
},
{
"id": "b49ab874-73e6-4077-9798-3e723ce7e38f",
"name": "URL extrahieren",
"type": "n8n-nodes-base.code",
"position": [
144,
96
],
"parameters": {
"jsCode": "// Extracts all URLs from <a> tags within the HTML body.\nconst htmlBody = items[0].json.body;\n\n// Checks if the HTML body is a string.\nif (typeof htmlBody !== 'string') {\n return [];\n}\n\nconst regex = /<a\\s+(?:[^>]*?\\s+)?href=\"([^\"]+)\"/gi;\nconst matches = [...htmlBody.matchAll(regex)];\n\n// Maps each match to create a new n8n item with the extracted URL.\nreturn matches.map(match => {\n return {\n json: {\n url: match[1]\n }\n };\n});"
},
"typeVersion": 2
},
{
"id": "f15809c1-8492-4642-878d-aafe9dac0649",
"name": "URLs scrapen",
"type": "@brightdata/n8n-nodes-brightdata.brightData",
"position": [
-80,
96
],
"parameters": {
"url": "={{ $json.url }}",
"zone": {
"__rl": true,
"mode": "list",
"value": "web_unlocker1"
},
"format": "json",
"country": {
"__rl": true,
"mode": "list",
"value": "us",
"cachedResultName": "us"
},
"requestOptions": {}
},
"credentials": {
"brightdataApi": {
"id": "i897C8Zq5VcQXQU9",
"name": "BrightData Inforeole"
}
},
"typeVersion": 1
},
{
"id": "8c653ced-e6d3-411f-8eb0-ae7c5b802424",
"name": "OpenRouter Chat Model1",
"type": "@n8n/n8n-nodes-langchain.lmChatOpenRouter",
"position": [
384,
464
],
"parameters": {
"model": "openai/o4-mini",
"options": {
"temperature": 0
}
},
"credentials": {
"openRouterApi": {
"id": "KElXI3DlHnhrYSjM",
"name": "OpenRouter PrestaM"
}
},
"typeVersion": 1
},
{
"id": "23555c2f-4f1c-4367-9431-1b0c0a8a02d4",
"name": "Structured Output Parser1",
"type": "@n8n/n8n-nodes-langchain.outputParserStructured",
"position": [
544,
304
],
"parameters": {
"autoFix": true,
"schemaType": "manual",
"inputSchema": "{\n\"url\": \n\"https://www.example.com/about.html\"\n}"
},
"typeVersion": 1.3
},
{
"id": "52f25a6b-fd76-49d0-b6da-ecb26f3bbc43",
"name": "URLs scrapen1",
"type": "@brightdata/n8n-nodes-brightdata.brightData",
"position": [
1036,
96
],
"parameters": {
"url": "={{ $json.url }}",
"zone": {
"__rl": true,
"mode": "list",
"value": "web_unlocker1"
},
"format": "json",
"country": {
"__rl": true,
"mode": "list",
"value": "us",
"cachedResultName": "us"
},
"requestOptions": {}
},
"credentials": {
"brightdataApi": {
"id": "i897C8Zq5VcQXQU9",
"name": "BrightData Inforeole"
}
},
"typeVersion": 1
},
{
"id": "846e8b1a-5ce4-456d-8828-d2f58f5097a0",
"name": "HTML-Bereiniger",
"type": "n8n-nodes-base.html",
"position": [
1260,
96
],
"parameters": {
"options": {},
"operation": "extractHtmlContent",
"dataPropertyName": "body",
"extractionValues": {
"values": [
{
"key": "body",
"cssSelector": "body"
}
]
}
},
"typeVersion": 1.2
},
{
"id": "0ce43f94-c79b-4054-9365-45c2b385181e",
"name": "OpenRouter Chat Model2",
"type": "@n8n/n8n-nodes-langchain.lmChatOpenRouter",
"position": [
1492,
320
],
"parameters": {
"model": "openai/gpt-5",
"options": {
"temperature": 0
}
},
"credentials": {
"openRouterApi": {
"id": "KElXI3DlHnhrYSjM",
"name": "OpenRouter PrestaM"
}
},
"typeVersion": 1
},
{
"id": "c6b38f95-1ac7-4ea0-a983-70986dd1c972",
"name": "Structured Output Parser2",
"type": "@n8n/n8n-nodes-langchain.outputParserStructured",
"position": [
1620,
320
],
"parameters": {
"schemaType": "manual",
"inputSchema": "{\n\"summary\": \n\"summary\"\n}"
},
"typeVersion": 1.3
},
{
"id": "b0a1d3e5-5388-4d73-a07b-f21a18f60749",
"name": "OpenRouter Chat Model3",
"type": "@n8n/n8n-nodes-langchain.lmChatOpenRouter",
"position": [
2132,
320
],
"parameters": {
"model": "openai/gpt-5",
"options": {
"temperature": 0
}
},
"credentials": {
"openRouterApi": {
"id": "KElXI3DlHnhrYSjM",
"name": "OpenRouter PrestaM"
}
},
"typeVersion": 1
},
{
"id": "3993fafb-ccc8-4291-9e66-b2c3d06234ac",
"name": "Seiten zusammenführen",
"type": "n8n-nodes-base.code",
"position": [
1836,
96
],
"parameters": {
"jsCode": "/**\n * Merges the `output` objects from all incoming items into a single object.\n * Each item is expected to have a structure of { json: { output: { ... } } }.\n */\nconst mergedData = items.reduce((accumulator, item) => {\n if (item.json && item.json.output) {\n // The spread operator (...) merges the properties of the current object\n // into the accumulator. If keys are identical, the last value seen prevails.\n return { ...accumulator, ...item.json.output };\n }\n return accumulator;\n}, {});\n\n// Returns a single item containing the merged object, paired with the first input item.\nreturn [{ json: { mergedOutput: mergedData }, pairedItem: 0 }];"
},
"typeVersion": 2
},
{
"id": "db0e0c06-d57d-4de6-904c-875d0d7eb983",
"name": "Liste bereinigen",
"type": "n8n-nodes-base.code",
"position": [
812,
96
],
"parameters": {
"jsCode": "// Extrait les URLs, filtre les valeurs vides, et retourne une liste\n// d'items en conservant la liaison avec les items d'entrée.\nreturn items.flatMap((item, index) => {\n const url = item.json.output?.[0]?.url;\n\n // Si une URL est trouvée, retourne un nouvel objet item avec sa liaison.\n // Sinon, retourne un tableau vide pour l'écarter du résultat final.\n return url ? [{ json: { url }, pairedItem: index }] : [];\n});"
},
"typeVersion": 2
},
{
"id": "df3f47a3-fa75-49a7-8b71-22e6205ee5e1",
"name": "Bei Chat-Nachrichtenempfang",
"type": "@n8n/n8n-nodes-langchain.chatTrigger",
"position": [
-528,
96
],
"webhookId": "79b08ee2-afd5-4748-8914-4411a8872b81",
"parameters": {
"public": true,
"options": {
"responseMode": "lastNode"
},
"initialMessages": "Welcome, I am your business opportunity detection agent. Enter the URL of the company to be analyzed, and I will search their website for the best business opportunities based on your activity."
},
"typeVersion": 1.3
},
{
"id": "7ef4c30a-6d51-46f7-82eb-48de5517a73f",
"name": "Haftnotiz",
"type": "n8n-nodes-base.stickyNote",
"position": [
-320,
-320
],
"parameters": {
"width": 640,
"height": 320,
"content": "# Lead Opportunity Finder\n\nThis workflow automates the **B2B lead generation** process by analyzing a company’s website with AI.\n\n👉 Get your free Bright Data API key here: [https://get.brightdata.com/scrap](https://get.brightdata.com/scrap)\n\n**Automated Website Analysis**\nThe workflow is triggered by a URL and uses Bright Data's Web Unblocker to scrape key company pages like \"About Us\" and \"Team\".\n\n**AI-Powered Opportunity Detection**\nAdvanced AI models from OpenRouter analyze the content to identify potential pain points and business needs related to automation.\n\n**Actionable Insights**\nThe final output is a synthesized, non-redundant report of all identified opportunities, formatted for a Google Doc to help sales and business development teams prepare for outreach."
},
"typeVersion": 1
},
{
"id": "a7399426-ec3b-4fb5-946b-de78410f8768",
"name": "Beste Seiten finden",
"type": "@n8n/n8n-nodes-langchain.agent",
"position": [
368,
96
],
"parameters": {
"text": "={{ $json }}",
"options": {
"systemMessage": "You are a B2B data extraction expert. |Task : Analyze the following list of JSON objects. Identify the URLs that are relevant for obtaining information about a company for prospecting purposes (pages such as \"who we are\", \"about us\", \"recruitment\", \"team\", \"contact\"). Output instructions : Extract the value of the \"url\" key for each relevant object. Return only absolute URLs (starting with http). Ignore relative URLs (/) and anchors (#). Your response must contain ONLY the list of relevant URLs, one per line, without any additional comments, titles, or formatting, according to this JSON format {\"url\": \"https://www.example.com/about.html\"}"
},
"promptType": "define",
"hasOutputParser": true
},
"typeVersion": 2.2
},
{
"id": "ca67e038-046f-483f-9c86-de822c268a48",
"name": "Geschäftsmöglichkeiten identifizieren",
"type": "@n8n/n8n-nodes-langchain.agent",
"position": [
1484,
96
],
"parameters": {
"text": "={{ $json.body }}",
"options": {
"systemMessage": "You are a B2B lead generation expert for an agency that offers AI-powered process automation.\n\nYou will be given pages from a prospect's website as input: {{ $('parameters').item.json.url }}\n\nYour role is to look for business opportunities.\n\nRespond without any commentary with a summary of the opportunities you identify. JSON format."
},
"promptType": "define",
"hasOutputParser": true
},
"typeVersion": 2.2
},
{
"id": "f2b564ee-127c-47cb-92b1-120dcf2e359e",
"name": "Duplikate entfernen",
"type": "@n8n/n8n-nodes-langchain.agent",
"position": [
2060,
96
],
"parameters": {
"text": "={{ $json.mergedOutput }}",
"options": {
"systemMessage": "You are a B2B lead generation expert for an agency that offers AI-powered process automation.\n\nYou will be given a summary of their website's pages as input: {{ $('parameters').item.json.url }}\n\nYour role is to find and synthesize business opportunities.\n\nEliminate redundancies.\n\nRespond without any commentary, providing a summary of the opportunities you identify, formatted for a Google Doc with headings."
},
"promptType": "define"
},
"typeVersion": 2.2
}
],
"pinData": {},
"connections": {
"f2b564ee-127c-47cb-92b1-120dcf2e359e": {
"main": [
[]
]
},
"db0e0c06-d57d-4de6-904c-875d0d7eb983": {
"main": [
[
{
"node": "52f25a6b-fd76-49d0-b6da-ecb26f3bbc43",
"type": "main",
"index": 0
}
]
]
},
"9a0fbaa1-3529-4fcb-8552-97def2e37c92": {
"main": [
[
{
"node": "f15809c1-8492-4642-878d-aafe9dac0649",
"type": "main",
"index": 0
}
]
]
},
"f15809c1-8492-4642-878d-aafe9dac0649": {
"main": [
[
{
"node": "b49ab874-73e6-4077-9798-3e723ce7e38f",
"type": "main",
"index": 0
}
]
]
},
"b49ab874-73e6-4077-9798-3e723ce7e38f": {
"main": [
[
{
"node": "a7399426-ec3b-4fb5-946b-de78410f8768",
"type": "main",
"index": 0
}
]
]
},
"3993fafb-ccc8-4291-9e66-b2c3d06234ac": {
"main": [
[
{
"node": "f2b564ee-127c-47cb-92b1-120dcf2e359e",
"type": "main",
"index": 0
}
]
]
},
"52f25a6b-fd76-49d0-b6da-ecb26f3bbc43": {
"main": [
[
{
"node": "846e8b1a-5ce4-456d-8828-d2f58f5097a0",
"type": "main",
"index": 0
}
]
]
},
"846e8b1a-5ce4-456d-8828-d2f58f5097a0": {
"main": [
[
{
"node": "ca67e038-046f-483f-9c86-de822c268a48",
"type": "main",
"index": 0
}
]
]
},
"a7399426-ec3b-4fb5-946b-de78410f8768": {
"main": [
[
{
"node": "db0e0c06-d57d-4de6-904c-875d0d7eb983",
"type": "main",
"index": 0
}
]
]
},
"8c653ced-e6d3-411f-8eb0-ae7c5b802424": {
"ai_languageModel": [
[
{
"node": "23555c2f-4f1c-4367-9431-1b0c0a8a02d4",
"type": "ai_languageModel",
"index": 0
},
{
"node": "a7399426-ec3b-4fb5-946b-de78410f8768",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"0ce43f94-c79b-4054-9365-45c2b385181e": {
"ai_languageModel": [
[
{
"node": "ca67e038-046f-483f-9c86-de822c268a48",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"b0a1d3e5-5388-4d73-a07b-f21a18f60749": {
"ai_languageModel": [
[
{
"node": "f2b564ee-127c-47cb-92b1-120dcf2e359e",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"23555c2f-4f1c-4367-9431-1b0c0a8a02d4": {
"ai_outputParser": [
[
{
"node": "a7399426-ec3b-4fb5-946b-de78410f8768",
"type": "ai_outputParser",
"index": 0
}
]
]
},
"c6b38f95-1ac7-4ea0-a983-70986dd1c972": {
"ai_outputParser": [
[
{
"node": "ca67e038-046f-483f-9c86-de822c268a48",
"type": "ai_outputParser",
"index": 0
}
]
]
},
"df3f47a3-fa75-49a7-8b71-22e6205ee5e1": {
"main": [
[
{
"node": "9a0fbaa1-3529-4fcb-8552-97def2e37c92",
"type": "main",
"index": 0
}
]
]
},
"ca67e038-046f-483f-9c86-de822c268a48": {
"main": [
[
{
"node": "3993fafb-ccc8-4291-9e66-b2c3d06234ac",
"type": "main",
"index": 0
}
]
]
}
}
}Wie verwende ich diesen Workflow?
Kopieren Sie den obigen JSON-Code, erstellen Sie einen neuen Workflow in Ihrer n8n-Instanz und wählen Sie "Aus JSON importieren". Fügen Sie die Konfiguration ein und passen Sie die Anmeldedaten nach Bedarf an.
Für welche Szenarien ist dieser Workflow geeignet?
Experte - KI-Zusammenfassung, Multimodales KI
Ist es kostenpflichtig?
Dieser Workflow ist völlig kostenlos. Beachten Sie jedoch, dass Drittanbieterdienste (wie OpenAI API), die im Workflow verwendet werden, möglicherweise kostenpflichtig sind.
Verwandte Workflows
phil
@phile-com AI automation: 90% time saved on repetitive tasks: product sheets, after-sales chatbots, etc. 🚀 save time, win customers
Diesen Workflow teilen