Brightdata와 OpenRouter AI를 사용하여 웹사이트에서 B2B 잠재 고객 기회 생성
고급
이것은AI Summarization, Multimodal AI분야의자동화 워크플로우로, 17개의 노드를 포함합니다.주로 Set, Code, Html, Agent, ChatTrigger 등의 노드를 사용하며. Brightdata와 OpenRouter AI를 사용하여 웹사이트에서 B2B 잠재 고객 기회 생성
사전 요구사항
- •특별한 사전 요구사항 없이 가져와 바로 사용 가능합니다
워크플로우 미리보기
노드 연결 관계를 시각적으로 표시하며, 확대/축소 및 이동을 지원합니다
워크플로우 내보내기
다음 JSON 구성을 복사하여 n8n에 가져오면 이 워크플로우를 사용할 수 있습니다
{
"meta": {
"instanceId": "4a11afdb3c52fd098e3eae9fad4b39fdf1bbcde142f596adda46c795e366b326",
"templateCredsSetupCompleted": true
},
"nodes": [
{
"id": "9a0fbaa1-3529-4fcb-8552-97def2e37c92",
"name": "parameters",
"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 추출",
"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": "URL 스크래핑",
"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": "URL 스크래핑1",
"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 클리너",
"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": "페이지 병합",
"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": "목록 정리",
"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": "채팅 메시지 수신 시",
"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": "Sticky Note",
"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": "최적 페이지 찾기",
"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": "비즈니스 기회 식별",
"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": "중복 제거",
"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
}
]
]
}
}
}자주 묻는 질문
이 워크플로우를 어떻게 사용하나요?
위의 JSON 구성 코드를 복사하여 n8n 인스턴스에서 새 워크플로우를 생성하고 "JSON에서 가져오기"를 선택한 후, 구성을 붙여넣고 필요에 따라 인증 설정을 수정하세요.
이 워크플로우는 어떤 시나리오에 적합한가요?
고급 - AI 요약, 멀티모달 AI
유료인가요?
이 워크플로우는 완전히 무료이며 직접 가져와 사용할 수 있습니다. 다만, 워크플로우에서 사용하는 타사 서비스(예: OpenAI API)는 사용자 직접 비용을 지불해야 할 수 있습니다.
관련 워크플로우 추천
Bright Data의 SERP 데이터 AI 분석을 사용하여 데이터 중심의 SEO 콘텐츠 브리핑 생성
Bright Data의 SERP 데이터 AI 분석을 사용하여 데이터 주도형 SEO 내용 요약을 생성하세요
Set
Code
Limit
+
Set
Code
Limit
27 노드phil
AI 요약
AI, Apify 및 Telegram 통합을 사용한 도구 평가 자동화
Telegram, Apify, AI 및 Google Sheets를 사용한 웹사이트 도구 분석 자동화
If
Set
Code
+
If
Set
Code
20 노드Mirza Ajmal
AI 요약
자동화된 회의 준비
GPT-5 및 Gemini 리서치를 사용한 캘린더에서 Slack까지 Attio CRM 통해 회의 자동 준비
If
Set
Code
+
If
Set
Code
39 노드Harry Siggins
AI 요약
Gemini, Slack, Notion을 사용하여 뉴스 요약에서 AI 정보 요약을 생성
Gemini, Slack, 및 Notion을 사용하여 뉴스 브리핑에서 AI 정보 요약을 생성
Set
Code
Gmail
+
Set
Code
Gmail
19 노드Harry Siggins
기타
매일 WhatsApp 그룹 지능형 분석: GPT-4.1 분석 및 음성 메시지 변환
매일 WhatsApp 그룹 지능 분석: GPT-4.1 분석 및 음성 메시지 트랜스크립션
If
Set
Code
+
If
Set
Code
52 노드Daniel Lianes
기타
자동화 재무 문서 처리
Google Gemini OCR를 사용한 자동 재정 문서 처리
Set
Code
Merge
+
Set
Code
Merge
76 노드Didac Fernandez
콘텐츠 제작
워크플로우 정보
난이도
고급
노드 수17
카테고리2
노드 유형9
저자
phil
@phile-com AI automation: 90% time saved on repetitive tasks: product sheets, after-sales chatbots, etc. 🚀 save time, win customers
외부 링크
n8n.io에서 보기 →
이 워크플로우 공유