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

2026-10-14 · 原文发布日

n8n表格线索自动充实:找域名、验邮箱、写破冰开场白

每30分钟扫描Google Sheets里pending状态的线索:用Firecrawl确定公司域名并抓取官网,由OpenRouter上的大模型提炼公司情报和ICP匹配分,且剔除无法在原文中逐字印证的事实;缺联系人时用Hunter按目标职位找人,再经网站发现、Hunter、Dropcontact三级瀑布验证邮箱;对达标线索生成只引用一条已核实事实的冷邮件开场白,结果回写表格并邮件汇总。

原文要点

原流程每30分钟或手动读取Google Sheets中status为pending的线索,限制批量与credit预算;缺公司名标记skipped。用行内website或Firecrawl搜索确定域名并抓首页及About/Team页,OpenRouter提炼公司情报与ICP分,且删除引文不能逐字出现在抓取文本中的事实。缺联系人用Hunter domain search按目标职位部门找人;邮箱按网站发现、Hunter Email Finder、Dropcontact瀑布候选,并经Hunter Verifier直到deliverable或qualified accept-all或预算门停止。达标后写一句只绑定一条已核实事实的开场白,回写表格并用Gmail发HTML汇总。

这次做成什么

在n8n搭一条可手动试运行的小批量线索充实链:输入公司名/官网,输出域名、可核对情报、联系人邮箱结论、合规冷开场白和回写状态;不追求全自动群发,只做到表格闭环。

准备什么

  • n8n可运行环境并能新建Schedule Trigger、Google Sheets、HTTP Request或对应节点
  • Google Sheets OAuth2凭据和一张含Leads工作表的测试表,勿用生产客户表
  • Firecrawl、OpenRouter、Hunter、Dropcontact、Gmail OAuth2测试凭据;无某服务就先停用对应分支
  • 一份合成线索CSV,公司名为虚构品牌,邮箱用example.com域名或保留空

具体怎么做

  1. 建表与配置

    复制本站artifacts里的leads_test.csv到Google Sheets的Leads页;在n8n建Set节点命名Table Settings,放入icp、targetTitles、batchSize、creditBudget、reportTo。Schedule Trigger先改Manual Trigger便于调试,跑通后再改30分钟。

  2. 读取pending并限批

    用Google Sheets Read筛选status=pending,后接Limit取batchSize;IF判断company为空则把status写成skipped并continue。每次处理单行,用Loop Over Items避免一次烧完额度。

  3. 定域名并抓官网

    若website非空,规范化成域名;否则HTTP Request调Firecrawl搜索公司名取最像官网的域名,再scrape首页,发现导航含About/Team的链接再抓一页。合并纯文本存到researchText,保留原始文本用于逐字核对。

  4. 提炼情报并剔除无据事实

    把researchText、icp、targetTitles送入OpenRouter Chat节点,使用下方grounding_prompt,要求输出JSON:facts数组每项含fact与quote,quote必须是researchText连续片段,另有icpFitScore0-100与reason。后接Code节点校验每个quote确实indexOf于researchText,不通过就删除该fact并重算可用事实数。

  5. 找人并三级验邮箱

    first_name或last_name缺失时调Hunter Domain Search,按targetTitles/departments选一位决策人;邮箱候选顺序为网页已出现且同域名地址、Hunter Email Finder、Dropcontact。每个候选都过Hunter Email Verifier,只接受deliverable,accept-all仅在status标注qualified且预算未超;creditBudget到阈值即停止后续查找。

  6. 生成开场白并回写汇总

    仅当emailOutcome可用且icpFitScore达到settings阈值时,用opener_prompt生成一句中文或英文开场白,Code节点检查它只引用facts中保留的一条quote且不出现‘AI生成/保证收益’等禁用语。最后Google Sheets Update写domain、researchJson、emailOutcome、icpFitScore、opener、creditsUsed、finalStatus;Gmail Send向reportTo发本批HTML表:每行公司、域名、邮箱结论、分数、跳过原因。

可直接复制的材料

Leads测试表合成CSV

本站合成练习数据,导入测试表;company为空用于验证skipped,真实客户信息不要放入。

row_id,status,company,website,first_name,last_name,job_title
L001,pending,北辰云仓科技有限公司,https://beichen-yc.example.com,,,运营负责人
L002,pending,青屿供应链咨询,,林,岚,创始人
L003,pending,,https://qingyu-sc.example.com,,,
L004,done,星野制造,https://xingye.example.com,周,野,采购总监

grounding_prompt 可复制

本站独立编写示例,粘贴到OpenRouter节点;花括号字段按n8n表达式替换,需在正式工作流核对模型名与参数。

你是B2B线索研究助手。只根据【抓取文本】作答,禁止使用外部知识。输出严格JSON,不要Markdown:{"domain":"","facts":[{"fact":"","quote":""}],"icpFitScore":0,"reason":"","missing":[]}。规则:1) facts最多5条,每条fact必须能由quote直接证明,quote必须是抓取文本中逐字连续片段,长度8到80字;2) 不得写未出现的人数、收入、融资、客户名;3) 无法确认域名时domain留空并在missing说明;4) icpFitScore为0到100整数,依据【ICP】与【目标职位】匹配度;5) 文本不足时facts可为空数组。\n【ICP】{{$json.settings.icp}}\n【目标职位】{{$json.settings.targetTitles}}\n【抓取文本】{{$json.researchText}}

opener_prompt 可复制

本站独立编写示例;用于单句开场白,不是整封邮件,发送前仍需人工合规判断。

写一句冷邮件开场白,长度不超过45个汉字或28个英文词。只能使用【已核实事实】中的一条,且把对应quote原样放进evidence字段。禁止承诺收益、禁止夸大、禁止提及AI、不得添加未核实数字。输出严格JSON:{"opener":"","usedQuote":"","evidence":""}。若无法做到只引用一条事实,输出{"opener":"","usedQuote":"","evidence":"insufficient_grounding"}。\n【已核实事实】{{$json.keptFactsJson}}\n【收件人称呼】{{$json.firstName}}

Table Settings示例JSON

本站方案默认值;example.com邮箱需替换为你的测试收件箱,阈值按预算调低或调高。

{"icp":"员工20到200人、正在电商履约扩容的中国大陆仓储或供应链企业","targetTitles":["创始人","运营负责人","供应链总监","采购总监"],"targetDepartments":["operations","supply_chain","procurement"],"batchSize":5,"creditBudget":40,"minIcpFitScore":70,"reportTo":"ops-demo@example.com","acceptAllQualified":true}

输入与输出示例

本站虚构演示,字段与输入对应,未调用真实API也非作者结果。

输入

Leads行L002:company=青屿供应链咨询,website空,联系人空;Firecrawl合成文本含‘青屿为华东电商仓提供库存盘点SOP,团队列出运营负责人林岚’。

对应输出

回写L002:domain=qingyu-sc.example.com;facts保留1条且quote=‘青屿为华东电商仓提供库存盘点SOP’;icpFitScore=76;emailOutcome=qualified_accept_all;opener=‘看到青屿在做华东电商仓库存盘点SOP,想请教旺季盘点差错怎么压。’;finalStatus=enriched;汇总邮件含1条成功、0条skipped。

做完检查这些

  • company为空的L003在跑完后status必须是skipped且不得消耗Firecrawl以外额度
  • facts中每条quote能在researchText中用indexOf逐字找到,找不到即被删除
  • 邮箱候选顺序必须网站发现优先,Hunter其次,Dropcontact最后,且每步记录verifier状态
  • opener为空或evidence=insufficient_grounding时finalStatus不得写成enriched
  • 回写列domain、researchJson、emailOutcome、icpFitScore、opener、creditsUsed、finalStatus都有值

容易卡住的地方

  • 免费或试用API额度很小,batchSize先设为1到5,别把30分钟调度直接放开
  • accept-all邮箱只是qualified而非确定送达,群发前需要单独退信与合规策略
  • OpenRouter模型名、Firecrawl与Hunter端点以你账户和原模板页面为准,本站未实测按钮
  • 抓不到About/Team页不应报错终止,应降级为仅用首页文本并减少facts上限
  • Google Sheets列名不一致会导致update写错列,先锁定表头再映射字段

原文与作者资料 ↗

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

原文标题
Enrich outbound leads in Google Sheets with Firecrawl, Hunter, and GPT-5.6
原作者
Mina Saad
原始发布日期
2026-10-14T13:22:39.885Z
来源
https://n8n.io/workflows/20950