AI PLAY玩法更新持续收录
← 回到更新流

2026-09-26 · 原文发布日

本地商家线索挖掘:地图抓取+网站体检+分级外联

在n8n表单填业务类型、地区、上限数量和要推销的服务,调Apify的Google Places抓取地图商户,按place ID和网站去重;逐个访问网站探测邮箱、预约、聊天挂件、联系表单、移动端适配、版权年份等信号,打不开或找不到邮箱时用Firecrawl补抓;按规则算机会分并分Hot/Warm/Cold,只对Hot/Warm用OpenAI写邮件主题、正文和电话开场白;全部线索写Sheets、汇总发Slack;工作日10点读你标了Approved的行批量建Gmail草稿(日上限20)。模板免费。

原文要点

作者Muhammad Hammad发布的免费n8n模板:表单输入业务类型、地区、国家代码、上限数量和推销服务,调Apify的compass/crawler-google-places抓取Google Maps商户,按place ID和网站去重;用HTTP请求体检网站(邮箱、预约、聊天挂件、联系表单、移动端适配、版权年份),失败或无邮箱时改用Firecrawl;规则打分分Hot/Warm/Cold,仅Hot/Warm用OpenAI生成邮件主题、正文、电话开场白;写Sheets的Leads/Runs两个表并发Slack汇总;工作日10点读Approved行建Gmail草稿,日上限20。

这次做成什么

照着本指南把这条免费模板跑成一条完整线索流水线:表单触发→Apify抓取→去重→网站体检→评分分级→AI写外联文案→写表发Slack→定时建Gmail草稿。由于原文未附评分细则和提示词,下文的分值表与提示词为本站独立设计的练习方案,导入模板后需对照原节点核对字段名。

准备什么

  • n8n实例(云端或自托管)并已导入该免费模板
  • Apify账号及Bearer token,且能访问compass/crawler-google-places actor
  • Firecrawl API key(Bearer方式)
  • OpenAI API凭据,用于生成外联文案
  • Google Sheets、Slack、Gmail OAuth三类凭据
  • 一个含Leads和Runs两个标签页的Google表格

具体怎么做

  1. 配置四类凭据

    在n8n凭据页新建两条HTTP Header Auth:Apify的Header填Authorization、值填Bearer加你的token;Firecrawl同样以Bearer API key配置。再分别连接Google Sheets(服务账号或OAuth)、Slack(填入目标频道ID)、Gmail OAuth2。每条凭据建好后点测试确认连通。

  2. 准备Sheets两张表并核对列

    在Google表格建Leads和Runs两个标签页。Leads至少含place_id、name、website、email、score、priority、status、email_subject、email_body、call_opener列;Runs含run_date、total、hot、warm、cold列。把模板里Google Sheets节点的spreadsheet ID改成你的表格ID,place_id用于去重匹配,status列用于你人工标记Approved。

  3. 用表单触发一次小规模抓取

    打开模板自带的n8n Form,填入:业务类型dentist、地区Austin TX、国家代码US、上限10、推销服务website redesign。提交后流程调Apify的Google Places actor返回商户列表,后续Code节点规范化字段并按place ID和网站去重。第一次练习上限控制在10以内,避免消耗过多Apify额度。

  4. 理解体检与分级分支

    每个商户先走HTTP Request访问其官网,页面内容里匹配邮箱正则、预约关键词(book/schedule)、聊天挂件脚本特征、contact form标签、viewport元标签(移动端适配)、页脚版权年份。请求失败或没找到邮箱时进入Firecrawl分支补抓。随后按规则算机会分并打Hot/Warm/Cold标签,只有Hot/Warm进入OpenAI节点生成主题、正文、电话开场白,Cold只写表不生成文案。

  5. 核对输出并标记Approved

    运行结束后检查Leads表是否每行都有分数和分级,Slack频道应收到本次汇总(无结果时会发no results提醒)。在Leads表把想外联的行status改成Approved,等工作日10点的定时触发器读取这些行,逐条建Gmail草稿(日上限20),并把状态更新为已建草稿,Slack发完成确认。

可直接复制的材料

机会评分规则表(本站设计)

本站独立编写的练习用评分表,分值和阈值可改;不保证与原模板内置规则一致,需在原工作流打分节点核对

{
  "scoringRules": [
    {"signal": "网站无法访问且Firecrawl也失败", "points": 25, "reason": "可能没有可用网站"},
    {"signal": "页脚版权年份早于2023", "points": 20, "reason": "网站长期未更新"},
    {"signal": "缺少viewport元标签(移动端不适配)", "points": 20, "reason": "适合推销网站重做"},
    {"signal": "未找到任何邮箱", "points": 10, "reason": "联系渠道薄弱"},
    {"signal": "无在线预约功能", "points": 10, "reason": "适合推销预约系统"},
    {"signal": "无聊天挂件", "points": 5, "reason": "适合推销客服工具"},
    {"signal": "无联系表单", "points": 10, "reason": "获客入口缺失"}
  ],
  "tiers": {"hot": ">=60", "warm": "35-59", "cold": "<35"},
  "note": "本站设计的示例分值,非原模板参数;导入后需以原模板打分节点实际规则为准"
}

OpenAI外联文案提示词(本站设计)

本站编写的提示词,原模板未公开其提示词内容;双花括号变量需按你工作流中实际字段名替换

你是一位帮本地商家做数字化升级顾问的文案。根据下面的商户体检结果,只输出JSON,不要多余文字。

商户名称:{{name}}
商户类型:{{category}}
网站体检发现的问题:{{issues}}
我要推销的服务:{{service}}

输出JSON结构:
{
  "email_subject": "15字以内、提及一个具体问题、不带营销词的邮件主题",
  "email_body": "120字以内的英文正文,第一段指出一个体检发现的具体问题,第二段说明我能怎么帮,结尾提出15分钟电话邀约,语气像同行建议而非推销",
  "call_opener": "30秒电话开场白,先自报姓名,再说出对方网站的一个具体问题,最后问现在是否方便聊两分钟"
}

测试用商户合成数据

本站虚构的合成练习数据,域名均为保留示例域;用于理解字段结构,正式跑通仍以Apify真实返回为准

place_id,name,website,category,phone
ChIJtest001,Riverside Dental Studio,http://example-riverside-dental.test,Dentist,+1-555-0101
ChIJtest002,Elm Street Auto Repair,,Auto Repair,+1-555-0102
ChIJtest003,Maple Bakery Co,http://example-maple-bakery.test,Bakery,+1-555-0103

输入与输出示例

本站虚构演示,数字来自上文评分表推算,非原作者运行结果、未实际调用Apify

输入

表单提交:业务类型dentist,地区Austin TX,国家代码US,上限3,推销服务website redesign;体检结果:Riverside Dental Studio版权年份2019、无viewport、无在线预约、无聊天挂件、无联系表单、找到邮箱;Elm Street Auto Repair无网站且Firecrawl兜底也失败,其余信号均缺失

对应输出

Leads表新增2行:Riverside Dental Studio,score=65(版权20+viewport20+预约10+聊天5+表单10),priority=Hot,email_subject、email_body、call_opener三列已由OpenAI生成且内容提及2019年份与移动端不适配问题,status空白待审;Elm Street Auto Repair,score=80(无网站25+viewport20+邮箱10+预约10+聊天5+表单10),priority=Hot,email为空故草稿步骤将跳过该行。Slack收到汇总:Run完成,total=2,hot=2,warm=0,cold=0

做完检查这些

  • 提交表单后Apify节点返回商户数组,去重后行数不大于上限数量
  • 无网站的行自动进入Firecrawl分支且不报错中断
  • Leads表每行score、priority齐全,仅Hot/Warm行有email_subject等三列文案
  • 把某行status改为Approved后,下个工作日定时运行能在Gmail草稿箱看到对应草稿且总数不超过20
  • Slack频道每次运行都收到汇总或无结果提醒

容易卡住的地方

  • Apify和Firecrawl的Header值必须以Bearer开头加空格再加key,漏写Bearer会401
  • Sheets列名与模板期望不一致会导致写入静默失败,先对照模板说明建列
  • compass/crawler-google-places是第三方actor,你的Apify账号需能访问它,否则抓取节点报错
  • 定时分支只在工作日10点触发,测试时可手动执行该分支验证而不必等待
  • 评分表和提示词为本站设计,与原模板内置规则可能不同,正式外联前需核对原节点
  • Apify、Firecrawl、OpenAI按各自用量计费,模板本身免费不代表这些服务免费

原文与作者资料 ↗

本站借助AI整理来源事实,独立编写中文操作指南与示例。示例不代表实际运行结果;来源效果尚未由本站独立复现。付费模板与模型、服务费用分别计算。

原文标题
Find and pitch local business leads with Apify, Firecrawl, OpenAI, Gmail, Sheets and Slack
原作者
Muhammad Hammad
原始发布日期
2026-09-25T20:37:28.062Z
来源
https://n8n.io/workflows/19946