8
n8n 한국어amn8n.com

BuiltWith를 Google Sheets로

중급

이것은Marketing분야의자동화 워크플로우로, 10개의 노드를 포함합니다.주로 Code, HttpRequest, GoogleSheets, ManualTrigger 등의 노드를 사용하며. BuiltWith에서 데이터를 내보내고 Google Sheets에 기술 스택 데이터 정리

사전 요구사항
  • 대상 API의 인증 정보가 필요할 수 있음
  • Google Sheets API 인증 정보

카테고리

워크플로우 미리보기
노드 연결 관계를 시각적으로 표시하며, 확대/축소 및 이동을 지원합니다
워크플로우 내보내기
다음 JSON 구성을 복사하여 n8n에 가져오면 이 워크플로우를 사용할 수 있습니다
{
  "id": "jpviET9waC9J5cmy",
  "meta": {
    "instanceId": "84ad02d6104594179f43f1ce9cfe3a81637b2faedb57dafcb9e649b7542988db",
    "templateCredsSetupCompleted": true
  },
  "name": "BuiltWith To Google Sheets",
  "tags": [],
  "nodes": [
    {
      "id": "b91b2e44-7fa5-44ce-a328-e6416bc6aed9",
      "name": "수동 트리거",
      "type": "n8n-nodes-base.manualTrigger",
      "position": [
        0,
        0
      ],
      "parameters": {},
      "typeVersion": 1
    },
    {
      "id": "014ab620-9f80-40af-85ba-13a606021bfa",
      "name": "Google 시트에서 도메인 읽기",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        220,
        0
      ],
      "parameters": {
        "options": {},
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": "gid=0",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1Hs9LcBpC-kaGgD_QjkkqBEJzDeAd85RW_L1fXTYEdCA/edit#gid=0",
          "cachedResultName": "Sheet1"
        },
        "documentId": {
          "__rl": true,
          "mode": "list",
          "value": "1Hs9LcBpC-kaGgD_QjkkqBEJzDeAd85RW_L1fXTYEdCA",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1Hs9LcBpC-kaGgD_QjkkqBEJzDeAd85RW_L1fXTYEdCA/edit?usp=drivesdk",
          "cachedResultName": "BuiltWith Domain"
        }
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "id": "Rp7XiR3hxJfv03ZO",
          "name": "Google Sheets account"
        }
      },
      "typeVersion": 4.5
    },
    {
      "id": "07215599-c91a-474c-935f-c94c34e8b9b9",
      "name": "BuiltWith를 통한 상세 정보 가져오기",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        480,
        0
      ],
      "parameters": {
        "url": "https://api.builtwith.com/v21/api.json",
        "options": {},
        "sendQuery": true,
        "queryParameters": {
          "parameters": [
            {
              "name": "KEY",
              "value": "YOUR_API_KEY"
            },
            {
              "name": "LOOKUP",
              "value": "={{ $json.Domain }}"
            }
          ]
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "49ec52b1-5f97-4871-ac6c-564fa444b7ec",
      "name": "기술 스택 정보 추출",
      "type": "n8n-nodes-base.code",
      "position": [
        700,
        0
      ],
      "parameters": {
        "jsCode": "const result = $json.Results?.[0];\nconst domain = result?.Lookup || null;\nconst path = result?.Result?.Paths?.[0];\nconst url = path?.Url || null;\n\nlet extracted = null;\n\n// Loop through Groups to find the first available Tech entry\nfor (const group of path?.Groups || []) {\n  const category = group.Name;\n  const tech = group.Tech?.[0];\n  \n  if (tech) {\n    extracted = {\n      Technology: tech.Name,\n      Category: category,\n      \"First Detected\": tech.FirstDetected,\n      \"Last Detected\": tech.LastDetected,\n      Domain: domain,\n      URL: url\n    };\n    break; // Stop after first match\n  }\n}\n\nreturn extracted ? [extracted] : [];\n"
      },
      "typeVersion": 2
    },
    {
      "id": "e2b7063b-614f-4ded-a883-bffc4bcb6c3c",
      "name": "Google 시트 업데이트",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        1020,
        0
      ],
      "parameters": {
        "columns": {
          "value": {
            "URL": "={{ $json.URL }}",
            "Category": "={{ $json.Category }}",
            "Technology": "={{ $json.Technology }}",
            "row_number": "={{ $('Read Domains from Google Sheets').item.json.row_number }}",
            "Last Detected": "={{ $json[\"Last Detected\"] }}",
            "First Detected": "={{ $json[\"First Detected\"] }}"
          },
          "schema": [
            {
              "id": "Domain",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "Domain",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Technology",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Technology",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Category",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Category",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "First Detected",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "First Detected",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Last Detected",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Last Detected",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "URL",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "URL",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "row_number",
              "type": "string",
              "display": true,
              "removed": false,
              "readOnly": true,
              "required": false,
              "displayName": "row_number",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            }
          ],
          "mappingMode": "defineBelow",
          "matchingColumns": [
            "row_number"
          ],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        },
        "options": {},
        "operation": "update",
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": "gid=0",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1Hs9LcBpC-kaGgD_QjkkqBEJzDeAd85RW_L1fXTYEdCA/edit#gid=0",
          "cachedResultName": "Sheet1"
        },
        "documentId": {
          "__rl": true,
          "mode": "list",
          "value": "1Hs9LcBpC-kaGgD_QjkkqBEJzDeAd85RW_L1fXTYEdCA",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1Hs9LcBpC-kaGgD_QjkkqBEJzDeAd85RW_L1fXTYEdCA/edit?usp=drivesdk",
          "cachedResultName": "BuiltWith Domain"
        }
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "id": "Rp7XiR3hxJfv03ZO",
          "name": "Google Sheets account"
        }
      },
      "typeVersion": 4.5
    },
    {
      "id": "11d4cd39-98d4-4b0f-8159-035bac593f39",
      "name": "스티커 노트",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -40,
        -800
      ],
      "parameters": {
        "color": 6,
        "width": 420,
        "height": 1000,
        "content": "## 🧩 **Section 1: Input Collection**\n\n📄➡️📤\n**Nodes:**\n\n* `🖱️ Manual Trigger`\n* `📗 Read Domains from Google Sheets`\n\n---\n\n### 🔹 What it does:\n\n* The workflow starts **when you click \"Test workflow\"** (manual trigger). This is useful for testing before setting up a schedule.\n* Then it connects to a **Google Sheet**, which contains a list of domains (e.g., `webflow.com`, `shopify.com`) you want to analyze.\n\n### 📚 How it works:\n\n* You’ve connected your Google Sheets account.\n* It reads all rows from a specific sheet (e.g., a tab called `Domains`).\n* Each row should include at least one column like `Domain`.\n\n### 💡 Beginner Tips:\n\n* Want to analyze other domains? Just paste them into the Google Sheet.\n* You can automate this by replacing the manual trigger with a `Cron` node to run every day, week, or month.\n\n---\n\n"
      },
      "typeVersion": 1
    },
    {
      "id": "e8ec39a6-ac8e-40ab-abc6-835600ef9c09",
      "name": "스티커 노트1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        420,
        -900
      ],
      "parameters": {
        "color": 7,
        "width": 440,
        "height": 1100,
        "content": "## 🌍 **Section 2: Tech Stack Lookup**\n\n🔍🌐➡️🧠\n**Nodes:**\n\n* `🌐 Fetch Tech Stack from BuiltWith`\n* `🧠 Extract Tech Stack Info (Function node)`\n\n---\n\n### 🔹 What it does:\n\n* For each domain, it sends an HTTP GET request to the **BuiltWith API** to fetch that site's detected technologies.\n* The **Code (Function)** node then parses the complex response and extracts only what you care about:\n\n  * `Technology` 🛠️\n  * `Category` 📦\n  * `First Detected` 🕐\n  * `Last Detected` ⌛\n  * `Domain` 🌐\n  * `URL` 🔗\n\n### 🧠 How it works:\n\n* BuiltWith returns a rich JSON structure with all detected tech.\n* Your function loops through it and pulls **just one matching technology** per domain (to keep it simple).\n* This makes it easy to update a single row in your sheet.\n\n### 💡 Beginner Tips:\n\n* Want **all technologies** per domain? Modify the function to return multiple results per input.\n* Make sure to handle **API limits** if you’re processing many domains—add delays using the `Wait` node if needed.\n\n---\n\n"
      },
      "typeVersion": 1
    },
    {
      "id": "926c3af0-de90-43a9-a2c8-efe838548e09",
      "name": "스티커 노트2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        900,
        -780
      ],
      "parameters": {
        "color": 5,
        "width": 360,
        "height": 980,
        "content": "# 📊 **Section 3: Output to Google Sheets**\n\n📥📝\n**Node:**\n\n* `📗 Update Google Sheet with Tech Stack`\n\n---\n\n### 🔹 What it does:\n\n* Takes the extracted data and **writes it back to the original sheet**.\n* Fills in columns like:\n\n  * `Technology`\n  * `Category`\n  * `First Detected`\n  * `Last Detected`\n\n### ✍️ How it works:\n\n* It matches the correct row using something like a `row_number` or primary key.\n* Then it updates that row with the extracted tech stack info.\n\n"
      },
      "typeVersion": 1
    },
    {
      "id": "e00e4ddd-e314-4562-9f3f-df18bb27949a",
      "name": "스티커 노트9",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1620,
        -800
      ],
      "parameters": {
        "color": 4,
        "width": 1300,
        "height": 320,
        "content": "=======================================\n            WORKFLOW ASSISTANCE\n=======================================\nFor any questions or support, please contact:\n    Yaron@nofluff.online\n\nExplore more tips and tutorials here:\n   - YouTube: https://www.youtube.com/@YaronBeen/videos\n   - LinkedIn: https://www.linkedin.com/in/yaronbeen/\n=======================================\n"
      },
      "typeVersion": 1
    },
    {
      "id": "28a6ebbd-74ad-47f4-9ad8-354b68316953",
      "name": "스티커 노트4",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1620,
        -460
      ],
      "parameters": {
        "color": 4,
        "width": 1289,
        "height": 2818,
        "content": "## ⚙️ **Workflow Overview: Scrape BuiltWith Tech Data into Google Sheets**\n\nThis automation does three main things:\n\n1. 📥 **Reads domains from Google Sheets**\n2. 🌐 **Fetches tech stack data from BuiltWith**\n3. 📤 **Updates Google Sheets with the results**\n\n---\n\n## 🧩 **Section 1: Input Collection**\n\n📄➡️📤\n**Nodes:**\n\n* `🖱️ Manual Trigger`\n* `📗 Read Domains from Google Sheets`\n\n---\n\n### 🔹 What it does:\n\n* The workflow starts **when you click \"Test workflow\"** (manual trigger). This is useful for testing before setting up a schedule.\n* Then it connects to a **Google Sheet**, which contains a list of domains (e.g., `webflow.com`, `shopify.com`) you want to analyze.\n\n### 📚 How it works:\n\n* You’ve connected your Google Sheets account.\n* It reads all rows from a specific sheet (e.g., a tab called `Domains`).\n* Each row should include at least one column like `Domain`.\n\n### 💡 Beginner Tips:\n\n* Want to analyze other domains? Just paste them into the Google Sheet.\n* You can automate this by replacing the manual trigger with a `Cron` node to run every day, week, or month.\n\n---\n\n## 🌍 **Section 2: Tech Stack Lookup**\n\n🔍🌐➡️🧠\n**Nodes:**\n\n* `🌐 Fetch Tech Stack from BuiltWith`\n* `🧠 Extract Tech Stack Info (Function node)`\n\n---\n\n### 🔹 What it does:\n\n* For each domain, it sends an HTTP GET request to the **BuiltWith API** to fetch that site's detected technologies.\n* The **Code (Function)** node then parses the complex response and extracts only what you care about:\n\n  * `Technology` 🛠️\n  * `Category` 📦\n  * `First Detected` 🕐\n  * `Last Detected` ⌛\n  * `Domain` 🌐\n  * `URL` 🔗\n\n### 🧠 How it works:\n\n* BuiltWith returns a rich JSON structure with all detected tech.\n* Your function loops through it and pulls **just one matching technology** per domain (to keep it simple).\n* This makes it easy to update a single row in your sheet.\n\n### 💡 Beginner Tips:\n\n* Want **all technologies** per domain? Modify the function to return multiple results per input.\n* Make sure to handle **API limits** if you’re processing many domains—add delays using the `Wait` node if needed.\n\n---\n\n## 📊 **Section 3: Output to Google Sheets**\n\n📥📝\n**Node:**\n\n* `📗 Update Google Sheet with Tech Stack`\n\n---\n\n### 🔹 What it does:\n\n* Takes the extracted data and **writes it back to the original sheet**.\n* Fills in columns like:\n\n  * `Technology`\n  * `Category`\n  * `First Detected`\n  * `Last Detected`\n\n### ✍️ How it works:\n\n* It matches the correct row using something like a `row_number` or primary key.\n* Then it updates that row with the extracted tech stack info.\n\n### 💡 Beginner Tips:\n\n* Add more columns like `Confidence`, `Data Source`, or `Notes` if you want to enrich your research.\n* Use this sheet for:\n\n  * 💼 Lead qualification\n  * 📊 Market analysis\n  * 🚀 Tech product targeting\n\n---\n\n## 🎯 Final Thoughts\n\n🔁 This automation turns a **manual and tedious research task** into a repeatable, scalable, and accurate process. By connecting **Google Sheets + BuiltWith + n8n**, you can:\n\n✅ Automatically analyze websites\n✅ Store structured data for marketing or sales\n✅ Scale your intelligence gathering with just a few clicks\n\n---\n\n\n"
      },
      "typeVersion": 1
    }
  ],
  "active": false,
  "pinData": {
    "Fetch detail via BuiltWith": [
      {
        "json": {
          "Results": [
            {
              "Lookup": "webflow.com",
              "Result": {
                "Paths": [
                  {
                    "Url": "http://webflow.com",
                    "Groups": [
                      {
                        "Name": "Web Hosting Providers",
                        "Tech": [
                          {
                            "Name": "Amazon Web Services",
                            "LastDetected": "2025-06-06",
                            "FirstDetected": "2022-01-10"
                          }
                        ]
                      },
                      {
                        "Name": "JavaScript Libraries",
                        "Tech": [
                          {
                            "Name": "React",
                            "LastDetected": "2025-06-06",
                            "FirstDetected": "2021-05-01"
                          },
                          {
                            "Name": "jQuery",
                            "LastDetected": "2024-12-01",
                            "FirstDetected": "2020-09-15"
                          }
                        ]
                      }
                    ]
                  }
                ]
              }
            }
          ]
        }
      }
    ]
  },
  "settings": {
    "executionOrder": "v1"
  },
  "versionId": "f2928e0a-050f-4b50-b11b-7435cc08265c",
  "connections": {
    "b91b2e44-7fa5-44ce-a328-e6416bc6aed9": {
      "main": [
        [
          {
            "node": "014ab620-9f80-40af-85ba-13a606021bfa",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "49ec52b1-5f97-4871-ac6c-564fa444b7ec": {
      "main": [
        [
          {
            "node": "e2b7063b-614f-4ded-a883-bffc4bcb6c3c",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "07215599-c91a-474c-935f-c94c34e8b9b9": {
      "main": [
        [
          {
            "node": "49ec52b1-5f97-4871-ac6c-564fa444b7ec",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "014ab620-9f80-40af-85ba-13a606021bfa": {
      "main": [
        [
          {
            "node": "07215599-c91a-474c-935f-c94c34e8b9b9",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}
자주 묻는 질문

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

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

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

중급 - 마케팅

유료인가요?

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

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

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

저자
Yaron Been

Yaron Been

@yaron-nofluff

Building AI Agents and Automations | Growth Marketer | Entrepreneur | Book Author & Podcast Host If you need any help with Automations, feel free to reach out via linkedin: https://www.linkedin.com/in/yaronbeen/ And check out my Youtube channel: https://www.youtube.com/@YaronBeen/videos

외부 링크
n8n.io에서 보기

이 워크플로우 공유

카테고리

카테고리: 34