8
n8n 한국어amn8n.com

부동산

중급

이것은Market Research, AI Summarization분야의자동화 워크플로우로, 8개의 노드를 포함합니다.주로 Code, Telegram, ScheduleTrigger, ScrapegraphAi 등의 노드를 사용하며. ScrapeGraphAI를 사용하여 Zillow 부동산 목록을 Telegram으로 자동 전송

사전 요구사항
  • Telegram Bot Token
워크플로우 미리보기
노드 연결 관계를 시각적으로 표시하며, 확대/축소 및 이동을 지원합니다
워크플로우 내보내기
다음 JSON 구성을 복사하여 n8n에 가져오면 이 워크플로우를 사용할 수 있습니다
{
  "id": "cmnzMjCOzadRrYT9",
  "meta": {
    "instanceId": "521567c5f495f323b77849c4cfd0c9f4f2396c986e324e0e66c8425b6f124744",
    "templateCredsSetupCompleted": true
  },
  "name": "Real estate",
  "tags": [],
  "nodes": [
    {
      "id": "6a1fbe16-eb98-4106-b88a-9a069ac78a15",
      "name": "일정 트리거",
      "type": "n8n-nodes-base.scheduleTrigger",
      "position": [
        700,
        820
      ],
      "parameters": {
        "rule": {
          "interval": [
            {}
          ]
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "0c1aa147-5e3f-4a59-9f0f-2a115f03ffb7",
      "name": "ScrapegraphAI",
      "type": "n8n-nodes-scrapegraphai.scrapegraphAi",
      "position": [
        1380,
        820
      ],
      "parameters": {
        "userPrompt": "Extract real estate listings from this site. Use the following schema for response { \"address\": \"123 Main St, Columbus, OH 43215\", \"price\": \"$450,000\", \"beds\": \"3\", \"baths\": \"2\", \"sqft\": \"1,850\", \"lot_size\": \"0.25 acres\", \"year_built\": \"1995\", \"property_type\": \"Single Family\", \"listing_url\": \"https://www.zillow.com/homedetails/123-Main-St...\" }",
        "websiteUrl": "https://www.zillow.com/homes/?category=SEMANTIC&searchQueryState=%7B%22filterState%22%3A%7B%22isRecentlySold%22%3A%7B%22value%22%3Afalse%7D%2C%22isPreMarketPreForeclosure%22%3A%7B%22value%22%3Afalse%7D%2C%22isPreMarketForeclosure%22%3A%7B%22value%22%3Afalse%7D%2C%22isForRent%22%3A%7B%22value%22%3Afalse%7D%2C%22isForSaleByAgent%22%3A%7B%22value%22%3Atrue%7D%2C%22isForSaleByOwner%22%3A%7B%22value%22%3Atrue%7D%2C%22isAuction%22%3A%7B%22value%22%3Atrue%7D%2C%22isComingSoon%22%3A%7B%22value%22%3Atrue%7D%2C%22isForSaleForeclosure%22%3A%7B%22value%22%3Atrue%7D%2C%22isNewConstruction%22%3A%7B%22value%22%3Atrue%7D%2C%22sortSelection%22%3A%7B%22value%22%3A%22globalrelevanceex%22%7D%7D%2C%22regionSelection%22%3A%5B%7B%22regionId%22%3A44%7D%5D%2C%22usersSearchTerm%22%3A%22Ohio%22%7D"
      },
      "credentials": {
        "scrapegraphAIApi": {
          "id": "",
          "name": ""
        }
      },
      "typeVersion": 1
    },
    {
      "id": "b9523259-cabb-41a4-9e55-9a106c4abc28",
      "name": "코드",
      "type": "n8n-nodes-base.code",
      "notes": "Hey this is where \nyou \nformat results ",
      "position": [
        2140,
        820
      ],
      "parameters": {
        "jsCode": "// Get the input data\nconst inputData = $input.all()[0].json;\n// Extract listings array from result - FIXED: use real_estate_listings\nconst listings = inputData.result.real_estate_listings || inputData.result.listings || inputData.result.properties || inputData.listings || [];\n\nfunction formatForTelegram(listing) {\n  const {\n    address,\n    price,\n    beds,\n    baths,\n    sqft,\n    lot_size,\n    year_built,\n    year_bult, // Note: there's a typo in your data (year_bult instead of year_built)\n    property_type,\n    listing_url\n  } = listing;\n\n  // Handle null/undefined values\n  const safeAddress = address || 'Address not available';\n  const safePrice = price || 'Price not listed';\n  const safeBeds = beds || 'N/A';\n  const safeBaths = baths || 'N/A';\n  const safeSqft = sqft || 'N/A';\n  const safeLotSize = lot_size && lot_size !== '[null]' ? lot_size : null;\n  // Handle both year_built and year_bult (typo in data)\n  const safeYearBuilt = (year_built || year_bult) && (year_built || year_bult) !== 'N/A' ? (year_built || year_bult) : null;\n  const safePropertyType = property_type || 'Property';\n  const safeUrl = listing_url || '#';\n\n  let message = `🏠 **NEW ${safePropertyType.toUpperCase()} LISTING**\n\n📍 **Address:** ${safeAddress}\n💰 **Price:** ${safePrice}\n🛏️ **Beds:** ${safeBeds} | 🚿 **Baths:** ${safeBaths}\n📐 **Size:** ${safeSqft} sqft`;\n\n  // Add optional fields if available\n  if (safeLotSize) {\n    message += `\\n🌱 **Lot Size:** ${safeLotSize}`;\n  }\n  \n  if (safeYearBuilt) {\n    message += `\\n🗓️ **Year Built:** ${safeYearBuilt}`;\n  }\n\n  message += `\\n\\n🔗 [View Full Details](${safeUrl})\n\n━━━━━━━━━━━━━━━━━━━━━━\n🕐 Listed: ${new Date().toLocaleString()}`;\n\n  return message;\n}\n\n// Debug log\nconsole.log(`Found ${listings.length} listings`);\n\n// Return each listing as separate execution with formatted Telegram text\nreturn listings.map(listing => ({\n  json: {\n    text: formatForTelegram(listing),\n    // Keep original data for reference if needed\n    address: listing.address,\n    price: listing.price,\n    beds: listing.beds,\n    baths: listing.baths,\n    sqft: listing.sqft,\n    lot_size: listing.lot_size,\n    year_built: listing.year_built || listing.year_bult, // Handle typo\n    property_type: listing.property_type,\n    listing_url: listing.listing_url\n  }\n}));"
      },
      "notesInFlow": true,
      "typeVersion": 2
    },
    {
      "id": "19302435-3112-4136-a8a3-95ff5da1c8ef",
      "name": "스티키 노트1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1180,
        460
      ],
      "parameters": {
        "color": 5,
        "width": 574.9363634768473,
        "height": 530.4701664623029,
        "content": "# Step 2: ScrapeGraphAI Node 🤖\n\nThis is the core node which will scrape the website that you want.\n\n## How to Use\n- Simply mention the website URL\n- Describe what you want to extract in natural language\n\n## Example\n- **Website**: `https://www.example.com`\n- **Instruction**: \"Extract all article titles and URLs from this news site\""
      },
      "typeVersion": 1
    },
    {
      "id": "0e801cc4-a853-4fb1-a0c6-330943996f63",
      "name": "스티키 노트2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1920,
        460
      ],
      "parameters": {
        "color": 5,
        "width": 574.9363634768473,
        "height": 530.4701664623029,
        "content": "# Step 3: Format the response 🧱\n\nThis node will format the results for sheets.\n\n## What it does\n- Prepares data for Telegram compatibility\n- Each listing is formatted in beautiful message\n- Maintains all important metadata\n- Easy to filter and analyze data"
      },
      "typeVersion": 1
    },
    {
      "id": "76a1aff0-92cc-4bb0-84ec-525ed7a0cdf2",
      "name": "스티키 노트3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        460,
        460
      ],
      "parameters": {
        "color": 5,
        "width": 574.9363634768473,
        "height": 530.4701664623029,
        "content": "# Step 1: Trigger ⏱️\n\nThis trigger will invoke the workflow on the mentioned time.\n\n## Configuration Options\n- You can mention your custom time for trigger\n- Or even choose a different trigger"
      },
      "typeVersion": 1
    },
    {
      "id": "151eaaf9-a11f-42dc-8f08-3d4e6c7a5a03",
      "name": "스티키 노트",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        2680,
        460
      ],
      "parameters": {
        "color": 5,
        "width": 574.9363634768473,
        "height": 530.4701664623029,
        "content": "# Step 4:Telegram Node 📧\nThis node will send the listings to your given channel or chat\n\n## What it does\n- Connects to your Telegram account\n- Sends the message using the created bot \n\n\n## Configuration\n- Create a bot using @botfather in Telegram\n- Add the given api key in config\n- Add your chat/channel username in config\n"
      },
      "typeVersion": 1
    },
    {
      "id": "37d06314-47d4-4705-a52e-501caff0817f",
      "name": "Telegram",
      "type": "n8n-nodes-base.telegram",
      "maxTries": 5,
      "position": [
        2920,
        820
      ],
      "parameters": {
        "text": "={{ $json.text }}",
        "chatId": "@housingprices",
        "additionalFields": {}
      },
      "credentials": {
        "telegramApi": {
          "id": "",
          "name": ""
        }
      },
      "executeOnce": false,
      "retryOnFail": true,
      "typeVersion": 1.2,
      "alwaysOutputData": false,
      "waitBetweenTries": 5000
    }
  ],
  "active": false,
  "pinData": {},
  "settings": {
    "executionOrder": "v1"
  },
  "versionId": "6a32d4c5-dad4-442c-a6d6-19743b661a8c",
  "connections": {
    "b9523259-cabb-41a4-9e55-9a106c4abc28": {
      "main": [
        [
          {
            "node": "37d06314-47d4-4705-a52e-501caff0817f",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "37d06314-47d4-4705-a52e-501caff0817f": {
      "main": [
        []
      ]
    },
    "0c1aa147-5e3f-4a59-9f0f-2a115f03ffb7": {
      "main": [
        [
          {
            "node": "b9523259-cabb-41a4-9e55-9a106c4abc28",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "6a1fbe16-eb98-4106-b88a-9a069ac78a15": {
      "main": [
        [
          {
            "node": "0c1aa147-5e3f-4a59-9f0f-2a115f03ffb7",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}
자주 묻는 질문

이 워크플로우를 어떻게 사용하나요?

위의 JSON 구성 코드를 복사하여 n8n 인스턴스에서 새 워크플로우를 생성하고 "JSON에서 가져오기"를 선택한 후, 구성을 붙여넣고 필요에 따라 인증 설정을 수정하세요.

이 워크플로우는 어떤 시나리오에 적합한가요?

중급 - 시장 조사, AI 요약

유료인가요?

이 워크플로우는 완전히 무료이며 직접 가져와 사용할 수 있습니다. 다만, 워크플로우에서 사용하는 타사 서비스(예: OpenAI API)는 사용자 직접 비용을 지불해야 할 수 있습니다.

워크플로우 정보
난이도
중급
노드 수8
카테고리2
노드 유형5
난이도 설명

일정 경험을 가진 사용자를 위한 6-15개 노드의 중간 복잡도 워크플로우

외부 링크
n8n.io에서 보기

이 워크플로우 공유

카테고리

카테고리: 34