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表格
具体怎么做
配置四类凭据
在n8n凭据页新建两条HTTP Header Auth:Apify的Header填Authorization、值填Bearer加你的token;Firecrawl同样以Bearer API key配置。再分别连接Google Sheets(服务账号或OAuth)、Slack(填入目标频道ID)、Gmail OAuth2。每条凭据建好后点测试确认连通。
准备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。
用表单触发一次小规模抓取
打开模板自带的n8n Form,填入:业务类型dentist、地区Austin TX、国家代码US、上限10、推销服务website redesign。提交后流程调Apify的Google Places actor返回商户列表,后续Code节点规范化字段并按place ID和网站去重。第一次练习上限控制在10以内,避免消耗过多Apify额度。
理解体检与分级分支
每个商户先走HTTP Request访问其官网,页面内容里匹配邮箱正则、预约关键词(book/schedule)、聊天挂件脚本特征、contact form标签、viewport元标签(移动端适配)、页脚版权年份。请求失败或没找到邮箱时进入Firecrawl分支补抓。随后按规则算机会分并打Hot/Warm/Cold标签,只有Hot/Warm进入OpenAI节点生成主题、正文、电话开场白,Cold只写表不生成文案。
核对输出并标记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