8
n8n 中文网amn8n.com

Cha GPT驱动的破冰生成器

高级

这是一个Lead Generation, AI Summarization领域的自动化工作流,包含 19 个节点。主要使用 If, Set, Code, Html, Limit 等节点。 使用GPT-4和谷歌表格从网站生成个性化冷邮件开场白

前置要求
  • 可能需要目标 API 的认证凭证
  • Google Sheets API 凭证
  • OpenAI API Key
工作流预览
可视化展示节点连接关系,支持缩放和平移
导出工作流
复制以下 JSON 配置到 n8n 导入,即可使用此工作流
{
  "id": "5jm27UVaH8DXL977",
  "meta": {
    "instanceId": "81fbc47f2c7361dad100f5803eda7f24983f8844d7b7d1688ed0eec2a021756c"
  },
  "name": "icebraker Generator powered with Cha GPT",
  "tags": [],
  "nodes": [
    {
      "id": "29e0adaa-63f0-4c3e-9f0f-f2b0ed627c9f",
      "name": "When clicking ‘Test workflow’",
      "type": "n8n-nodes-base.manualTrigger",
      "position": [
        -304,
        64
      ],
      "parameters": {},
      "typeVersion": 1
    },
    {
      "id": "e594e245-8166-42a2-ac36-4ab8a142f24a",
      "name": "HTML",
      "type": "n8n-nodes-base.html",
      "position": [
        480,
        -80
      ],
      "parameters": {
        "options": {
          "trimValues": true,
          "cleanUpText": true
        },
        "operation": "extractHtmlContent",
        "extractionValues": {
          "values": [
            {
              "key": "links",
              "attribute": "href",
              "cssSelector": "a",
              "returnArray": true,
              "returnValue": "attribute"
            }
          ]
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "ef72e925-a84f-4069-a2d6-96ff01cc3bb8",
      "name": "Split Out",
      "type": "n8n-nodes-base.splitOut",
      "position": [
        112,
        336
      ],
      "parameters": {
        "options": {},
        "fieldToSplitOut": "links"
      },
      "typeVersion": 1
    },
    {
      "id": "87ba5626-9f37-44a2-bbd0-ea5fbd802ad0",
      "name": "Request web page for URL",
      "type": "n8n-nodes-base.httpRequest",
      "onError": "continueRegularOutput",
      "position": [
        784,
        -32
      ],
      "parameters": {
        "url": "={{ $json.links }}",
        "options": {}
      },
      "typeVersion": 4.2,
      "alwaysOutputData": false
    },
    {
      "id": "7558da57-950a-4612-bea2-3669d6a4f6ad",
      "name": "Markdown",
      "type": "n8n-nodes-base.markdown",
      "position": [
        944,
        -32
      ],
      "parameters": {
        "html": "={{ $json.data ? $json.data : \"<div>empty</div>\" }}",
        "options": {}
      },
      "typeVersion": 1
    },
    {
      "id": "ebb5b419-7279-4a0c-bc85-4f6555e6d0e0",
      "name": "Summarize Website Page",
      "type": "@n8n/n8n-nodes-langchain.openAi",
      "position": [
        1232,
        -160
      ],
      "parameters": {
        "modelId": {
          "__rl": true,
          "mode": "list",
          "value": "gpt-4.1",
          "cachedResultName": "GPT-4.1"
        },
        "options": {},
        "messages": {
          "values": [
            {
              "role": "system",
              "content": "You're a helpful, intelligent website scraping assistant."
            },
            {
              "content": "You're provided a Markdown scrape of a website page. Your task is to provide a two-paragraph abstract of what this page is about.\n\nReturn in this JSON format:\n\n{\"abstract\":\"your abstract goes here\"}\n\nRules:\n- Your extract should be comprehensive—similar level of detail as an abstract to a published paper.\n- Use a straightforward, spartan tone of voice.\n- If it's empty, just say \"no content\"."
            },
            {
              "content": "={{ $json.data }}"
            }
          ]
        },
        "jsonOutput": true
      },
      "credentials": {
        "openAiApi": {
          "id": "sp1N9oDRVcWik32U",
          "name": "rifff"
        }
      },
      "typeVersion": 1.6
    },
    {
      "id": "8aba364b-58a7-4f96-8361-0cbb05cf6b65",
      "name": "Limit",
      "type": "n8n-nodes-base.limit",
      "position": [
        416,
        336
      ],
      "parameters": {
        "maxItems": 3
      },
      "typeVersion": 1
    },
    {
      "id": "6afb479b-b40d-4d9c-999d-dfb3f99b540f",
      "name": "Scrape Home",
      "type": "n8n-nodes-base.httpRequest",
      "onError": "continueErrorOutput",
      "position": [
        64,
        64
      ],
      "parameters": {
        "url": "={{ $json['organization_website_url'] }}",
        "options": {
          "redirect": {
            "redirect": {}
          },
          "allowUnauthorizedCerts": false
        }
      },
      "executeOnce": false,
      "typeVersion": 4.2,
      "alwaysOutputData": false
    },
    {
      "id": "169e1261-8eeb-4e3c-bfe6-246d55374559",
      "name": "Aggregate",
      "type": "n8n-nodes-base.aggregate",
      "position": [
        1552,
        -160
      ],
      "parameters": {
        "options": {},
        "fieldsToAggregate": {
          "fieldToAggregate": [
            {
              "fieldToAggregate": "message.content.abstract"
            }
          ]
        }
      },
      "typeVersion": 1
    },
    {
      "id": "aae4a930-5349-4019-a231-5fa3b41b2969",
      "name": "Generate Multiline Icebreaker",
      "type": "@n8n/n8n-nodes-langchain.openAi",
      "position": [
        1232,
        64
      ],
      "parameters": {
        "modelId": {
          "__rl": true,
          "mode": "list",
          "value": "gpt-4.1",
          "cachedResultName": "GPT-4.1"
        },
        "options": {
          "temperature": 0.5
        },
        "messages": {
          "values": [
            {
              "role": "system",
              "content": "You're a helpful, intelligent sales assistant."
            },
            {
              "content": "=We just scraped a series of web pages for a business. Your task is to take their summaries and turn them into catchy, personalized openers for a cold email campaign to imply that the rest of the campaign is personalized.\n\nYou'll return your icebreakers in the following JSON format:\n\n{\"icebreaker\":\"Hey {name}. I noticed your recent work on {thing} and thought it was brilliant. I’m also involved in {otherThing} and wanted to share something with you.\\n\\nI spent some time exploring your site and saw how much emphasis you place on {anotherThing}. A few months ago I built a tool that could make that even easier.\"}\n\nWe’ve been working with web agencies like LeenWeb, GreatNash and Galax media on something simple but highly effective:\n\nA system that finds businesses from local business directories.\nAudits their site (design, SEO, speed, accessibility)\nThen sends them a cold email that feels like it came from a real person\n\nLast 2 months: $70K+ generated through this approach\n\nNo fluff. No hand-holding. You get leads with prewritten emails and audits — ready to send.\n\nTo make a long story short, it's an outreach system that uses AI automation to handle outreach for web agencies. Costs just a few cents to run, very high converting, and I think it's in line with {someImpliedBeliefTheyHave}\"}\n\nIf you're curious, I’d love to show you a short video of it in action, or we can hop on a 10-min call if that’s easier. Just let me know what works for you.\n\nRules:\n- Write in a spartan/laconic tone of voice.\n- Make sure to use the above format when constructing your icebreakers. We wrote it this way on purpose.\n- Shorten the company name wherever possible (say, \"XYZ\" instead of \"XYZ Agency\"). More examples: \"Love AMS\" instead of \"Love AMS Professional Services\", \"Love Mayo\" instead of \"Love Mayo Inc.\", etc.\n- Do the same with locations. \"San Fran\" instead of \"San Francisco\", \"BC\" instead of \"British Columbia\", etc.\n- For your variables, focus on small, non-obvious things to paraphrase. The idea is to make people think we *really* dove deep into their website, so don't use something obvious. Do not say cookie-cutter stuff like \"Love your website!\" or \"Love your take on marketing!\".\n-Do not use hipens and Emojies"
            },
            {
              "content": "=Profile: Aina Rakotoarinaly, CEO founder - Maki Agency / Ti'bouffe, Maki agency, outsourcing/offshoring, Antananarivo, Madagascar\n\nWebsite: \n\nThis webpage presents Maki Agency, a professional digital outsourcing company based in Madagascar that specializes in tailored web development, integration, design, SEO, content creation, community management, and more. The agency offers a range of white-label and dedicated resource solutions, targeting businesses that wish to outsource various digital projects. Maki Agency emphasizes its team's versatile technical expertise across major web technologies, including CSS, HTML, JQuery, WordPress, PHP, WooCommerce, Laravel, and Odoo. The company positions itself as an ideal partner for comprehensive digital support, ensuring that client's digital and branding needs are met through experienced personnel and rigorous project management.\\n\\nThe website details the specific services provided, such as graphic and web design (logos, banners, retouching), web integration (landing pages, newsletters, site layouts), development (showcase sites, e-commerce, intranets, bespoke applications, maintenance), content writing (SEO-optimized texts, articles, product sheets, social media posts), search engine optimization (audits, optimizations, submissions), and social media management. The agency highlights its strengths in quality of work, experience, and discretion, especially in white-label arrangements. Visitors are encouraged to contact Maki Agency for new or existing projects, and convenient contact options (phone, QR codes, social media, chat) are provided for initiating discussions.\n\nThis page presents Maki Agency, a Madagascar-based digital agency specializing in web outsourcing and subcontracting services. The agency emphasizes its experience and dedicated team capable of handling diverse digital tasks such as web development, design, SEO, content writing, integration, community management, and maintenance. Maki Agency offers both white-label and dedicated resource solutions for clients seeking to externalize parts of their workflow to a specialized offshore partner. The descriptions highlight the agency's proficiency in popular web technologies, frameworks, and CMS platforms (such as HTML, CSS, PHP, WordPress, Laravel, WooCommerce, and Odoo), as well as its ability to execute projects ranging from landing pages, e-commerce platforms, and intranets to detailed graphic design and content creation.\\n\\nThe site underscores Maki Agency's core values and competitive advantages, such as meticulous attention to detail, experienced professionals, creativity, discretion, and a client-focused approach. It provides detailed breakdowns of service offerings, ranging from graphic materials (logos, flyers, banners), technical integration, app and website development, staff outsourcing (developers, designers, writers), SEO strategies, community management, and digital content production. Contact details and multiple avenues for communication (phone, WhatsApp, Skype, QR codes) are prominently featured, along with encouragements for clients to reach out for consultations or ongoing projects requiring outsourcing. The agency also highlights its longevity and adaptability in the digital sector, supporting clients across various industries and digital competencies"
            },
            {
              "role": "assistant",
              "content": "{\"icebreaker\":\"Hey Aina,\\n\\nLove what you're doing at Maki. Also doing some outsourcing right now, wanted to run something by you.\\n\\nSo I hope you'll forgive me, but I creeped you/Maki quite a bit. I know that discretion is important to you guys (or at least I'm assuming this given the part on your website about white-labelling your services) and I put something together a few months ago that I think could help. To make a long story short, it's an outreach system that uses AI to find people hiring website devs. Then pitches them with templates (actually makes them a white-labelled demo website). Costs just a few cents to run, very high converting, and I think it's in line with Maki's emphasis on scalability.\"}"
            },
            {
              "content": "=Profile: {{ $node[\"Get Search URL\"].json.first_name }} {{ $node[\"Get Search URL\"].json.last_name }} {{ $node[\"Get Search URL\"].json.headline }}\n\nWebsite: {{ $json.abstract.join(\"/n\") }}"
            }
          ]
        },
        "jsonOutput": true
      },
      "credentials": {
        "openAiApi": {
          "id": "sp1N9oDRVcWik32U",
          "name": "rifff"
        }
      },
      "typeVersion": 1.6
    },
    {
      "id": "f8a7c57a-bdc7-4ad7-9147-bac53ae5deec",
      "name": "Get Search URL",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        -96,
        64
      ],
      "parameters": {
        "options": {
          "returnFirstMatch": true
        },
        "filtersUI": {
          "values": [
            {
              "lookupValue": "=",
              "lookupColumn": "Status"
            }
          ]
        },
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": 1034888960,
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1z4_JWLSsO7V_2U9duotxaCXdhcDACwFLWtKkX9KRxOY/edit#gid=1034888960",
          "cachedResultName": "Marketing Companies (AUS)(Fully verified)"
        },
        "documentId": {
          "__rl": true,
          "mode": "list",
          "value": "1z4_JWLSsO7V_2U9duotxaCXdhcDACwFLWtKkX9KRxOY",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1z4_JWLSsO7V_2U9duotxaCXdhcDACwFLWtKkX9KRxOY/edit?usp=drivesdk",
          "cachedResultName": "Marketing Companies (AUS)(Fully verified)"
        }
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "id": "DCXUL4CTk4ontMrn",
          "name": "Google Sheets account"
        }
      },
      "executeOnce": false,
      "typeVersion": 4.5,
      "alwaysOutputData": true
    },
    {
      "id": "3cd8a65f-c415-4e9f-89df-e0c6aa256e86",
      "name": "Edit Fields",
      "type": "n8n-nodes-base.set",
      "position": [
        -64,
        336
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "40fd7130-c65d-4826-a713-ecca24d23b07",
              "name": "links",
              "type": "array",
              "value": "={{ $json.links }}"
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "dc0acad3-6f5f-4a7e-9c2a-8cfb51dd3968",
      "name": "Code",
      "type": "n8n-nodes-base.code",
      "position": [
        288,
        336
      ],
      "parameters": {
        "jsCode": "const items = $input.all();\n\n// Get base URL from previous node (make sure it's executed!)\nconst BASE_URL_RAW = $('Get Search URL').first().json.organization_website_url?.trim();\nif (!BASE_URL_RAW) {\n  throw new Error(\"Missing organization_website_url from 'Code1' node.\");\n}\n\nconst BASE_URL = BASE_URL_RAW.replace(/\\/$/, \"\"); // remove trailing slash\n\nconst getHostname = (url) => {\n  return url\n    .replace(/^https?:\\/\\//, \"\")\n    .replace(/^www\\./, \"\")\n    .split(\"/\")[0];\n};\n\nconst baseHostname = getHostname(BASE_URL);\n\n// Initialize result\nconst seen = new Set();\nconst updatedItems = [\n  { json: { links: `${BASE_URL}/` } }\n];\nseen.add(`${BASE_URL}/`);\n\nitems.forEach((item) => {\n  const link = item?.json?.links;\n  if (typeof link !== \"string\") return;\n\n  const cleanLink = link.trim().toLowerCase();\n\n  const isAnchor = cleanLink.startsWith(\"#\");\n  const isMailOrPhone = cleanLink.startsWith(\"mailto:\") || cleanLink.startsWith(\"tel:\");\n  const isEmpty = cleanLink === \"\" || cleanLink === \"#\" || cleanLink === \"#.\";\n  const isSocial = [\n    \"facebook.com\", \"instagram.com\", \"linkedin.com\", \"twitter.com\",\n    \"youtube.com\", \"tiktok.com\", \"pinterest.com\", \"snapchat.com\"\n  ].some(domain => cleanLink.includes(domain));\n\n  if (isAnchor || isMailOrPhone || isEmpty || isSocial) return;\n\n  let fullUrl = null;\n\n  if (cleanLink.startsWith(\"http://\") || cleanLink.startsWith(\"https://\")) {\n    const linkHostname = getHostname(cleanLink);\n    if (linkHostname !== baseHostname) return;\n\n    // Extract path manually\n    const pathParts = cleanLink.split(linkHostname);\n    const path = pathParts[1]?.split(/[?#]/)[0] || \"/\";\n    const cleanPath = path.endsWith(\"/\") && path !== \"/\" ? path.slice(0, -1) : path;\n\n    fullUrl = `${BASE_URL}${cleanPath}`;\n  } else if (cleanLink.startsWith(\"/\")) {\n    const cleanPath = cleanLink.endsWith(\"/\") && cleanLink !== \"/\" ? cleanLink.slice(0, -1) : cleanLink;\n    fullUrl = `${BASE_URL}${cleanPath}`;\n  }\n\n  if (fullUrl && !seen.has(fullUrl)) {\n    seen.add(fullUrl);\n    updatedItems.push({ json: { links: fullUrl } });\n  }\n});\n\nreturn updatedItems;\n"
      },
      "typeVersion": 2
    },
    {
      "id": "b6b2bfc9-0e5c-4495-9145-dc329bd00e88",
      "name": "Google Sheets",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        1552,
        64
      ],
      "parameters": {
        "columns": {
          "value": {
            "Status": "Done",
            "IceBreaker": "={{ $json.message.content.icebreaker }}",
            "linkedin_url": "={{ $node[\"Get Search URL\"].json.linkedin_url}}"
          },
          "schema": [
            {
              "id": "first_name",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "first_name",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "last_name",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "last_name",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "name",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "name",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "email",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "email",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "personal_email",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "personal_email",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "linkedin_url",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "linkedin_url",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Company Name",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Company Name",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "organization_website_url",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "organization_website_url",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "IceBreaker",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "IceBreaker",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Status",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Status",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "headline",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "headline",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Company LinkedIn URL",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Company LinkedIn URL",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "organization_phone",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "organization_phone",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "organization_postal_code",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "organization_postal_code",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "organization_primary_domain",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "organization_primary_domain",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "organization_raw_address",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "organization_raw_address",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "photo_url",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "photo_url",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "seniority",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "seniority",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "state",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "state",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "title",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "title",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "twitter_url",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "twitter_url",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "username",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "username",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "domain",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "domain",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "overall_score",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "overall_score",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            }
          ],
          "mappingMode": "defineBelow",
          "matchingColumns": [
            "linkedin_url"
          ],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        },
        "options": {},
        "operation": "appendOrUpdate",
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": 1034888960,
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1z4_JWLSsO7V_2U9duotxaCXdhcDACwFLWtKkX9KRxOY/edit#gid=1034888960",
          "cachedResultName": "Marketing Companies (AUS)(Fully verified)"
        },
        "documentId": {
          "__rl": true,
          "mode": "list",
          "value": "1z4_JWLSsO7V_2U9duotxaCXdhcDACwFLWtKkX9KRxOY",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1z4_JWLSsO7V_2U9duotxaCXdhcDACwFLWtKkX9KRxOY/edit?usp=drivesdk",
          "cachedResultName": "Marketing Companies (AUS)(Fully verified)"
        }
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "id": "DCXUL4CTk4ontMrn",
          "name": "Google Sheets account"
        }
      },
      "typeVersion": 4.6
    },
    {
      "id": "4d6b8c53-4800-4e55-9a33-e353e4442c36",
      "name": "Google Sheets1",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        288,
        64
      ],
      "parameters": {
        "columns": {
          "value": {
            "Status": "Error",
            "linkedin_url": "={{ $('Get Search URL').item.json.linkedin_url }}"
          },
          "schema": [
            {
              "id": "first_name",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "first_name",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "last_name",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "last_name",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "name",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "name",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "email",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "email",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "personal_email",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "personal_email",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "linkedin_url",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "linkedin_url",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Company Name",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Company Name",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "organization_website_url",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "organization_website_url",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "IceBreaker",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "IceBreaker",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Status",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Status",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "headline",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "headline",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Company LinkedIn URL",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Company LinkedIn URL",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "organization_phone",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "organization_phone",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "organization_postal_code",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "organization_postal_code",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "organization_primary_domain",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "organization_primary_domain",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "organization_raw_address",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "organization_raw_address",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "photo_url",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "photo_url",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "seniority",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "seniority",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "state",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "state",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "title",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "title",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "twitter_url",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "twitter_url",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "username",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "username",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "domain",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "domain",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "overall_score",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "overall_score",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            }
          ],
          "mappingMode": "defineBelow",
          "matchingColumns": [
            "linkedin_url"
          ],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        },
        "options": {},
        "operation": "appendOrUpdate",
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": 1034888960,
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1z4_JWLSsO7V_2U9duotxaCXdhcDACwFLWtKkX9KRxOY/edit#gid=1034888960",
          "cachedResultName": "Marketing Companies (AUS)(Fully verified)"
        },
        "documentId": {
          "__rl": true,
          "mode": "list",
          "value": "1z4_JWLSsO7V_2U9duotxaCXdhcDACwFLWtKkX9KRxOY",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1z4_JWLSsO7V_2U9duotxaCXdhcDACwFLWtKkX9KRxOY/edit?usp=drivesdk",
          "cachedResultName": "Marketing Companies (AUS)(Fully verified)"
        }
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "id": "DCXUL4CTk4ontMrn",
          "name": "Google Sheets account"
        }
      },
      "typeVersion": 4.6
    },
    {
      "id": "6e97138a-79df-40d2-bb7a-6e1aba55ef56",
      "name": "If",
      "type": "n8n-nodes-base.if",
      "position": [
        480,
        144
      ],
      "parameters": {
        "options": {},
        "conditions": {
          "options": {
            "version": 2,
            "leftValue": "",
            "caseSensitive": true,
            "typeValidation": "strict"
          },
          "combinator": "and",
          "conditions": [
            {
              "id": "0f0accc3-f769-43ee-9d8c-350748f3edfb",
              "operator": {
                "type": "array",
                "operation": "empty",
                "singleValue": true
              },
              "leftValue": "={{ $json.links }}",
              "rightValue": ""
            }
          ]
        }
      },
      "typeVersion": 2.2
    },
    {
      "id": "91e0c802-23a7-4ea7-9acf-d90b5cb39303",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -144,
        -448
      ],
      "parameters": {
        "color": 4,
        "width": 776,
        "height": 1016,
        "content": "# Step-1\n## This section downloads one web page from your list of leads and creates a list of all pages and subpages. \n\n\nIn the google sheet create credential with the google account where you have sheet with lead and link it in the nodes\n\nIf the system encounters a problem while scraping the home page (incorrect domain, non-functional website, etc.), it will mark it as ERROR in your leads and start scraping the next lead's page.\nIf the HTML node cannot find the page links, it will also return this as an error.\n\nAfter scraping the page, everything goes to the CODE node, which:\nRetrieves a list of links (e.g., collected from the page).\n\nRemoves junk (emails, anchors, social media, external domains).\n\nNormalizes addresses (e.g., adds missing /, removes duplicates).\n\nReturns a list of clean, unique, internal links belonging to a single domain."
      },
      "typeVersion": 1
    },
    {
      "id": "c2c3a848-0581-4a8a-9a5b-1c024d2a5284",
      "name": "Sticky Note1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        704,
        -224
      ],
      "parameters": {
        "color": 6,
        "width": 420,
        "height": 408,
        "content": "# Step-2 \n## In this section, the node visits each collected page and converts it to HTML text."
      },
      "typeVersion": 1
    },
    {
      "id": "391c5fdb-6681-4c31-a28c-12152e88e026",
      "name": "Sticky Note2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1184,
        -544
      ],
      "parameters": {
        "color": 5,
        "width": 580,
        "height": 840,
        "content": "# Step-3\n## Summarize each page & generate icebreaker\n\nHere you need to create your openai credentials\n\nIn the first node, the GPT chatbot summarizes all data, text, etc. from the collected pages and provides a two-paragraph summary of the page content.\nAnd returns in JSON \n\nThen, all summaries are collected into one using the Aggregate node and forwarded to the next node with the gpt chat, where our wonderful personalized icebreaker is generated.\n\nNext, the icebreaker is entered into the lead sheet, and the system repeats with the next lead."
      },
      "typeVersion": 1
    }
  ],
  "active": false,
  "pinData": {},
  "settings": {
    "executionOrder": "v1"
  },
  "versionId": "3408c389-77cf-42c7-bae3-f80db5af7ef8",
  "connections": {
    "If": {
      "main": [
        [
          {
            "node": "Google Sheets1",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Edit Fields",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Code": {
      "main": [
        [
          {
            "node": "Limit",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "HTML": {
      "main": [
        [
          {
            "node": "If",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Limit": {
      "main": [
        [
          {
            "node": "Request web page for URL",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Markdown": {
      "main": [
        [
          {
            "node": "Summarize Website Page",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Aggregate": {
      "main": [
        [
          {
            "node": "Generate Multiline Icebreaker",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Split Out": {
      "main": [
        [
          {
            "node": "Code",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Edit Fields": {
      "main": [
        [
          {
            "node": "Split Out",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Scrape Home": {
      "main": [
        [
          {
            "node": "HTML",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Google Sheets1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Google Sheets": {
      "main": [
        [
          {
            "node": "Get Search URL",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Get Search URL": {
      "main": [
        [
          {
            "node": "Scrape Home",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Google Sheets1": {
      "main": [
        [
          {
            "node": "Get Search URL",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Summarize Website Page": {
      "main": [
        [
          {
            "node": "Aggregate",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Request web page for URL": {
      "main": [
        [
          {
            "node": "Markdown",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Generate Multiline Icebreaker": {
      "main": [
        [
          {
            "node": "Google Sheets",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "When clicking ‘Test workflow’": {
      "main": [
        [
          {
            "node": "Get Search URL",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}
常见问题

如何使用这个工作流?

复制上方的 JSON 配置代码,在您的 n8n 实例中创建新工作流并选择「从 JSON 导入」,粘贴配置后根据需要修改凭证设置即可。

这个工作流适合什么场景?

高级 - 潜在客户开发, AI 摘要总结

需要付费吗?

本工作流完全免费,您可以直接导入使用。但请注意,工作流中使用的第三方服务(如 OpenAI API)可能需要您自行付费。

工作流信息
难度等级
高级
节点数量19
分类2
节点类型13
难度说明

适合高级用户,包含 16+ 个节点的复杂工作流

作者
Mirai

Mirai

@mirai

At MIRAI, we believe that time is the true luxury. Thanks to AI automation, we free up time for you and your business. Our technologies work continuously.

外部链接
在 n8n.io 查看

分享此工作流