๐ ๋ถ๋์ฐ ์ค๊ฐ์ธ๊ณผ Bright Data์ ํจ๊ป ๊ทํ์ ์ง์ ์ฐพ๊ธฐ
์ด๊ฒ์AI, Marketing๋ถ์ผ์์๋ํ ์ํฌํ๋ก์ฐ๋ก, 11๊ฐ์ ๋ ธ๋๋ฅผ ํฌํจํฉ๋๋ค.์ฃผ๋ก If, Wait, Agent, BrightData, BrightDataTool ๋ฑ์ ๋ ธ๋๋ฅผ ์ฌ์ฉํ๋ฉฐ์ธ๊ณต์ง๋ฅ ๊ธฐ์ ์ ๊ฒฐํฉํ์ฌ ์ค๋งํธ ์๋ํ๋ฅผ ๊ตฌํํฉ๋๋ค. ๐ ๋ถ๋์ฐ ์ค๊ฐ์ธ๊ณผ Bright Data์ ํจ๊ป ๊ทํ์ ์ง์ ์ฐพ๊ธฐ
- โขOpenAI API Key
์ฌ์ฉ๋ ๋ ธ๋ (11)
์นดํ ๊ณ ๋ฆฌ
{
"meta": {
"instanceId": "b1f85eae352fde76d801a1a612661df6824cc2e68bfd6741e31305160a737e6e",
"templateCredsSetupCompleted": true
},
"nodes": [
{
"id": "d9e07286-a8be-4c28-8519-acf7cd35ad86",
"name": "์ฑํ
๋ฉ์์ง ์์ ์",
"type": "@n8n/n8n-nodes-langchain.chatTrigger",
"position": [
-900,
-40
],
"webhookId": "57251efe-e57c-43e2-ac58-bf27f1ec639d",
"parameters": {
"public": true,
"options": {
"showWelcomeScreen": true
},
"initialMessages": "Hi there! ๐\n\nMy name is Miquel and I am your personal Real Estate agent. I help you to find your new home.\n\nWhat are you looking for?"
},
"typeVersion": 1.1
},
{
"id": "7ca48714-3c65-4f32-9491-7b7b621aaa00",
"name": "Simple Memory1",
"type": "@n8n/n8n-nodes-langchain.memoryBufferWindow",
"position": [
-420,
140
],
"parameters": {
"contextWindowLength": 30
},
"typeVersion": 1.3
},
{
"id": "79bea812-5a33-40a1-aa74-fe202d39dded",
"name": "OpenAI Chat Model",
"type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
"position": [
-580,
140
],
"parameters": {
"model": {
"__rl": true,
"mode": "list",
"value": "gpt-4o-mini"
},
"options": {}
},
"credentials": {
"openAiApi": {
"id": "oKzfvOwieOm4upQ2",
"name": "OpenAi account"
}
},
"typeVersion": 1.2
},
{
"id": "30ef3cfc-56db-4092-af0d-304afdad94f0",
"name": "๋ฐ์ดํฐ์
ํํฐ๋ง",
"type": "n8n-nodes-brightdata.brightDataTool",
"position": [
-260,
140
],
"parameters": {
"resource": "marketplaceDataset",
"operation": "filterDataset",
"dataset_id": {
"__rl": true,
"mode": "list",
"value": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Dataset', ``, 'string') }}"
},
"filter_type": "filters_group",
"filters_group": "={{ $fromAI('Filters_Group') }}",
"records_limit": "=3",
"descriptionType": "manual",
"toolDescription": "Create a dataset snapshot based on a provided filter in BrightData. use always filter homeStatus = FOR_SALE. We have the next operators: =, >, >=, in, <, <=, not_array_includes, !=, not_in, not_includes\n\nFilter must follow the next format:\n{\n \"operator\": \"and\",\n \"filters\": [\n {\n \"name\": \"homeStatus\",\n \"operator\": \"=\",\n \"value\": \"FOR_SALE\"\n },\n {\n \"name\": \"price\",\n \"operator\": \"=\",\n \"value\": 1000000\n },\n {\n \"name\": \"city\",\n \"operator\": \"=\",\n \"value\": \"new york\"\n },\n {\n \"name\": \"bathrooms\",\n \"operator\": \"=\",\n \"value\": 2\n },\n {\n \"name\": \"bedrooms\",\n \"operator\": \"=\",\n \"value\": 4\n }\n ]\n}"
},
"credentials": {
"brightdataApi": {
"id": "jk945kIuAFAo9bcg",
"name": "BrightData account"
}
},
"typeVersion": 1
},
{
"id": "6c4c4338-e4d2-40ee-89c0-89e1dd1dc330",
"name": "๋ค๋ฅธ ์ํฌํ๋ก์ฐ์ ์ํด ์คํ ์",
"type": "n8n-nodes-base.executeWorkflowTrigger",
"position": [
-660,
-340
],
"parameters": {
"inputSource": "passthrough"
},
"typeVersion": 1.1
},
{
"id": "9db2680e-8bad-4b91-9cd6-8240f53081a0",
"name": "์ค๋
์ท ์ค๋น ์๋ฃ?",
"type": "n8n-nodes-base.if",
"position": [
-120,
-340
],
"parameters": {
"options": {},
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "or",
"conditions": [
{
"id": "3e99082f-412a-4e33-ab77-c99ddd4d7ff5",
"operator": {
"type": "string",
"operation": "exists",
"singleValue": true
},
"leftValue": "={{ $json.items[0].abbreviatedAddress }}",
"rightValue": "NodeApiError"
}
]
}
},
"typeVersion": 2.2
},
{
"id": "75f66a3a-7738-4a1c-af8a-29385ad41749",
"name": "๋๊ธฐ",
"type": "n8n-nodes-base.wait",
"position": [
100,
-260
],
"webhookId": "7d5607bb-7cbd-439e-a95e-dfe326486b74",
"parameters": {},
"typeVersion": 1.1
},
{
"id": "19beba9e-6089-443f-a384-4be3ec821423",
"name": "๋ถ๋์ฐ AI ์์ด์ ํธ",
"type": "@n8n/n8n-nodes-langchain.agent",
"position": [
-460,
-40
],
"parameters": {
"text": "={{ $json.chatInput }}",
"options": {
"maxIterations": 10,
"systemMessage": "=You are an expert AI Real Estate Agent.\n\nFollow the next guidelines always:\n\n1) If you have no memory, recover the metadata from the next databases:\n- Zillow properties listing information gd_lfqkr8wm13ixtbd8f5\nWe have the next filters:\n- city: City name where entity is located. Contains valid US city names as text strings.\n- bedrooms: Column stores the number of bedrooms in properties. Values are positive integers ranging from 1 to 7, with most properties having 2-4 bedrooms and no null values.\n- bathrooms: Number of bathrooms in residential properties. Values are positive integers ranging from 1 to 7, with most properties having 2-3 bathrooms and no null values.\n- price: Property price in US dollars. Format sample: 180,000\n\nInform user that only 3 houses will be reported.\nOnly call filterDataset if user completes city, bedrooms, bathrooms and price filters.\n\n2) Use filterDataset to generate a snapshot of the requested houses by mapping filter of the user.\nOnly allow one call to tool \"Filter Dataset\", \n\n3) After calling \"filter Dataset\" tool, use tool \"Get Snapshot Content\". Pass snapshot_id parameter.\n\n4) Use output from tool \"Get Snapshot Content\" to convert json to a list of properties with ul > li\nuse returned images to present home briefing"
},
"promptType": "define"
},
"typeVersion": 1.9
},
{
"id": "679e5b92-7b52-4230-a395-f3840d167756",
"name": "Sticky Note1",
"type": "n8n-nodes-base.stickyNote",
"position": [
-960,
-600
],
"parameters": {
"width": 1260,
"height": 880,
"content": "# Real Estate AI Agent with Bright Data\n\n## TODO\n- After pasting this workflow, update node \"Get Snapshot Content\" tool and add current Workflow ID (for instance, if your workflow in n8n has the next url https://n8n-ai.cr.vps2.clients.killia.com/workflow/fjEIEQ1L6n2IKqlx your workflow Id is fjEIEQ1L6n2IKqlx).\n- Add your Bright Data api key to \"Filter Dataset\" tool and \"Recover Snapshot Content\" node."
},
"typeVersion": 1
},
{
"id": "118c60c3-3a46-4ca2-be84-997218949bde",
"name": "์ค๋
์ท ์ฝํ
์ธ ๋ณต๊ตฌ",
"type": "n8n-nodes-brightdata.brightData",
"position": [
-340,
-340
],
"parameters": {
"resource": "marketplaceDataset",
"operation": "getSnapshotContent",
"snapshot_id": "={{ $('When Executed by Another Workflow').item.json.query }}"
},
"credentials": {
"brightdataApi": {
"id": "jk945kIuAFAo9bcg",
"name": "BrightData account"
}
},
"typeVersion": 1
},
{
"id": "5cc00806-6995-4d82-a832-f3159a66e31a",
"name": "์ค๋
์ท ์ฝํ
์ธ ๊ฐ์ ธ์ค๊ธฐ",
"type": "@n8n/n8n-nodes-langchain.toolWorkflow",
"position": [
-100,
140
],
"parameters": {
"workflowId": {
"__rl": true,
"mode": "id",
"value": "Ky9jD15PJgT7PIgP"
},
"workflowInputs": {
"value": {},
"schema": [],
"mappingMode": "defineBelow",
"matchingColumns": [],
"attemptToConvertTypes": false,
"convertFieldsToString": false
}
},
"typeVersion": 2.2
}
],
"pinData": {},
"connections": {
"75f66a3a-7738-4a1c-af8a-29385ad41749": {
"main": [
[
{
"node": "118c60c3-3a46-4ca2-be84-997218949bde",
"type": "main",
"index": 0
}
]
]
},
"30ef3cfc-56db-4092-af0d-304afdad94f0": {
"ai_tool": [
[
{
"node": "19beba9e-6089-443f-a384-4be3ec821423",
"type": "ai_tool",
"index": 0
}
]
]
},
"7ca48714-3c65-4f32-9491-7b7b621aaa00": {
"ai_memory": [
[
{
"node": "19beba9e-6089-443f-a384-4be3ec821423",
"type": "ai_memory",
"index": 0
}
]
]
},
"79bea812-5a33-40a1-aa74-fe202d39dded": {
"ai_languageModel": [
[
{
"node": "19beba9e-6089-443f-a384-4be3ec821423",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"9db2680e-8bad-4b91-9cd6-8240f53081a0": {
"main": [
[],
[
{
"node": "75f66a3a-7738-4a1c-af8a-29385ad41749",
"type": "main",
"index": 0
}
]
]
},
"5cc00806-6995-4d82-a832-f3159a66e31a": {
"ai_tool": [
[
{
"node": "19beba9e-6089-443f-a384-4be3ec821423",
"type": "ai_tool",
"index": 0
}
]
]
},
"118c60c3-3a46-4ca2-be84-997218949bde": {
"main": [
[
{
"node": "9db2680e-8bad-4b91-9cd6-8240f53081a0",
"type": "main",
"index": 0
}
]
]
},
"d9e07286-a8be-4c28-8519-acf7cd35ad86": {
"main": [
[
{
"node": "19beba9e-6089-443f-a384-4be3ec821423",
"type": "main",
"index": 0
}
]
]
},
"6c4c4338-e4d2-40ee-89c0-89e1dd1dc330": {
"main": [
[
{
"node": "118c60c3-3a46-4ca2-be84-997218949bde",
"type": "main",
"index": 0
}
]
]
}
}
}์ด ์ํฌํ๋ก์ฐ๋ฅผ ์ด๋ป๊ฒ ์ฌ์ฉํ๋์?
์์ JSON ๊ตฌ์ฑ ์ฝ๋๋ฅผ ๋ณต์ฌํ์ฌ n8n ์ธ์คํด์ค์์ ์ ์ํฌํ๋ก์ฐ๋ฅผ ์์ฑํ๊ณ "JSON์์ ๊ฐ์ ธ์ค๊ธฐ"๋ฅผ ์ ํํ ํ, ๊ตฌ์ฑ์ ๋ถ์ฌ๋ฃ๊ณ ํ์์ ๋ฐ๋ผ ์ธ์ฆ ์ค์ ์ ์์ ํ์ธ์.
์ด ์ํฌํ๋ก์ฐ๋ ์ด๋ค ์๋๋ฆฌ์ค์ ์ ํฉํ๊ฐ์?
์ค๊ธ - ์ธ๊ณต์ง๋ฅ, ๋ง์ผํ
์ ๋ฃ์ธ๊ฐ์?
์ด ์ํฌํ๋ก์ฐ๋ ์์ ํ ๋ฌด๋ฃ์ด๋ฉฐ ์ง์ ๊ฐ์ ธ์ ์ฌ์ฉํ ์ ์์ต๋๋ค. ๋ค๋ง, ์ํฌํ๋ก์ฐ์์ ์ฌ์ฉํ๋ ํ์ฌ ์๋น์ค(์: OpenAI API)๋ ์ฌ์ฉ์ ์ง์ ๋น์ฉ์ ์ง๋ถํด์ผ ํ ์ ์์ต๋๋ค.
๊ด๋ จ ์ํฌํ๋ก์ฐ ์ถ์ฒ
Miquel Colomer
@mcolomerAs a passionate developer and AI agent creator, Iโve been at the forefront of automation, pioneering workflows and training AI to handle complex tasks seamlessly. Iโm an early adopter and expert of n8n, having worked with its powerful capabilities to create automation solutions for diverse industries. I founded n8nhackers, the first AI-powered agency focused on n8n, where we help businesses transform their workflows with cutting-edge automation.
์ด ์ํฌํ๋ก์ฐ ๊ณต์