关于 find-leads
find-leads 是面向 InboxMate 的潜在客户筛选技能,用于寻找并审核德国企业,再将合格线索写入 CRM。它按 CHATBOT、INBOX 或混合模式分类,并检查网站、公开联系信息、业务相关性及重复记录。
主要功能
- 01搜索德国企业潜在客户
- 02按 CHATBOT 与 INBOX 分类线索
- 03核验网站及公开联系信息
- 04按资格标准筛除不合适公司
- 05检查 CRM 重复项并记录跳过原因
适用场景
- 01为聊天机器人演示寻找企业线索
- 02为邮件自动化产品寻找目标公司
- 03核验联系人与企业网站是否符合条件
- 04避免重复录入已存在或已拒绝的线索
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ psquared-development/ psquared-skills --skill find-leads安装后在 Claude Code 中输入/find-leads确认已加载。
详细介绍
为 InboxMate 寻找新线索
参数
/find-leads [N] [track] — track 为可选参数:
inbox— 仅电子邮件模式:搜索电子邮件运营需求较大的垂直行业(参见下文“电子邮件量信号”——每轮轮换 2-3 个垂直行业,切勿只盯着某个行业)。每条符合条件的线索都要在备注中标注Track: INBOX。网站上有聊天机器人是正面信号,绝不能因此跳过。这类演示通过/inboxmate-inbox-demo运行。chatbot— 仅聊天机器人模式:采用经典行为,跳过已有聊天机器人的公司,每条线索都标注Track: CHATBOT。- 省略 — 混合模式:逐条线索决定跟进方向(参见步骤 2b)。
播报:
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ Lead Finder 已启动。 目标:[N] 条新线索 · 跟进方向:[INBOX / CHATBOT / 混合] 正在检查环境…… ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
自主运行——无需询问
此技能应尽可能自主运行。 用户可能无法及时回答问题。请勿在处理线索期间请求确认——逐条处理即可:
- 搜索 → 验证 → 跳过或添加 → 处理下一条。不要暂停。
- 如果某项检查结果不明确(例如无法确定电子邮件是否为个人邮箱),应倾向于跳过并添加到跳过列表。不要询问。
- 只有发生严重错误时才停止(例如 CRM 令牌无效、网络中断)。
- 最后汇报结果,不要在处理过程中汇报。
法律背景——请先阅读
在德国和奥地利,B2B 冷邮件处于法律灰色地带。严格解读德国《反不正当竞争法》第 7 条(UWG §7)和奥地利《电信法》第 174 条(TKG §174),事先必须取得同意。然而,目前普遍采用的实际解释(数千家公司每天都在使用)认为,只要满足特定条件,就可以进行一对一的 B2B 联系。
**我们的立场:**我们发送精心撰写、真正有价值的个性化邮件(并提供专为对方公司制作的可用演示)。这不是垃圾邮件。但我们必须记录每条线索符合联系条件的原因。
每条线索都必须通过以下全部 8 项检查:
7 项资格标准
| # | 标准 | 检查内容 | 重要原因 |
|---|---|---|---|
| 1 | 德国公司 | 域名为 .de,Impressum 显示德国地址(DE),公司在德国注册 | 奥地利法律(TKG §174)更严格——没有 B2B 冷邮件例外。德国法律(UWG)对相关的一对一 B2B 联系的实际容忍度更高。 |
| 2 | 仅限 B2B | 联系对象是公司,而非个人 | 消费者保护要求更严格 |
| 3 | 客观相关 | 公司确实会从聊天机器人或电子邮件自动化中受益(面向客户的企业,且有明显的咨询/预约量) | UWG 要求提供的内容与收件人的业务相关 |
| 4 | 公开可用的电子邮件地址 | 在其公开网站上找到电子邮件地址(联系页面、Impressum、团队页面)——不得从 LinkedIn、购买的名单或泄露的数据库中抓取 | 数据来源必须符合 GDPR(由公司自行公开提供) |
| 5 | 明确的联系人 | 邮件发送给拥有决策权的具名人员(创始人、CEO、营销负责人、销售主管)——不得发送至 info@、office@ 或通用地址 | 表明这是个性化联系,而非群发 |
| 6 | 真实的价值提案 | 我们专门为对方制作了内容(演示)——而非通用推销 | 与垃圾邮件有所区别 |
| 7 | CRM 中尚无记录 | CRM 中尚未存在该公司 | 避免重复联系 |
| 8 | 网站处于活跃状态 | 网站可以正常加载,含有真实内容,且维护正常(版权年份未落后 2 年以上) | 避免联系已停止营业的企业 |
如果 8 项标准中任意一项不通过 → 跳过该线索。将其添加到 skip-list.json。不要添加到 CRM。
跳过列表 — 持久化记录已拒绝的潜在客户
当前工作目录中的文件 skip-list.json 用于记录已检查并拒绝的公司。研究任何公司之前,先检查此列表。 如果域名已在列表中,立即跳过——不要浪费时间再次抓取网站。
首次运行时: 如果 skip-list.json 不存在,请创建该文件并写入 []。
格式:
[
{ "domain": "example.de", "reason": "has chatbot", "date": "2026-03-19" },
{ "domain": "other.at", "reason": "no personal email", "date": "2026-03-19" }
]
公司未通过任何检查时: 将域名和简短原因(最多 5 个词)追加到 skip-list.json。
检查任何网站之前: 读取 skip-list.json,检查域名是否已在列表中。如果是,则跳过,不要抓取网站。
简短原因示例:
"has chatbot, no email volume"— 存在聊天小组件,且没有邮件自动化切入点(仅有聊天机器人不再构成淘汰理由——此类公司会进入 INBOX 跟进路径)"no personal email"— 只找到 info@/office@"dead website"— 网站无法访问或已停放"outdated site"— 版权年份已过 2 年或更久"too small"— 个体经营者,没有实际的网络形象"not B2B-facing"— 仅面向批发或内部"already in CRM"— 重复记录"no email on site"— 未找到联系信息"generic only"— 仅提供 kontakt@/info@
步骤 0 — 检查环境
使用 Read 工具读取当前工作目录中的 .env,并提取以下令牌:
| 变量 | 用途 | 用于 |
|---|---|---|
PSQUARED_CRM_TOKEN | Twenty CRM GraphQL API | 检查重复记录,以及创建公司/人员/备注 |
.env 文件位于工作目录根目录(claude-overlord-folder)。如果文件不存在,请停止并告知用户。
读取 skip-list.json(如果文件不存在,则创建并写入 [])。
验证完成后:
Environment OK. Skip list: [N] entries. Starting lead search...
步骤 1 — 搜索潜在客户
使用 WebSearch 查找适合在网站上使用 AI 聊天机器人的德国和奥地利企业。
搜索策略(轮换使用——仅限德国,.de 域名):
"[industry] Unternehmen" site:.de"[industry] GmbH" Kontakt Email site:.de"Geschäftsführer" "[industry]" site:.de"Immobilienmakler" OR "Versicherungsmakler" OR "Steuerberater" OR "Rechtsanwalt" site:.de- 行业专属:房地产中介、保险经纪、IT 咨询公司、营销机构、SaaS 公司、电商店铺、牙科诊所、律师事务所、会计师事务所
InboxMate 的优质目标行业:
- 房地产(Immobilien)——咨询量大,常见问题多
- 保险/金融——客户问题、潜在客户资格筛选
- IT 服务 / MSP——支持请求、产品问题
- 营销/数字机构——客户沟通、入职引导
- SaaS/软件公司——客户支持、功能问题
- 专业服务(法律、税务、咨询)——初步咨询
- 电商——产品问题、订单支持
- 医疗保健(牙科、理疗)——预约安排、常见问题
邮件量信号(符合 INBOX 路线条件——付费邮件产品): InboxMate 的邮件产品不只是回复咨询——它还能对运营邮件进行分类、分发、回复并触发操作。目标是任何业务运营依赖收件箱的德国 B2B 企业。每轮选择 2-3 个垂直行业并轮换——不要只盯着一个行业(例如只关注温泉浴场):
- 订单/预订量大:酒店、场馆、旅游运营商、休闲场所(温泉浴场/公园)、承接团体业务的餐厅、维修厂/汽车经销商(预约咨询)
- 运营邮件量大:批发商/分销商(通过邮件接收订单)、物业管理公司(租户咨询、协调维修工)、物流/货运代理(运输咨询)、手工业企业(报价咨询)、人力资源服务商(求职申请)
- 文件量大:明显有收票/供应商流程的企业——InboxMate 可识别发票并将其转给会计部门
- 通用信号:明显以 info@/office@ 作为主要联系渠道、表单只会发送邮件、没有工单系统、网站上有礼品券/取消/报价咨询
- Demo-Postfach(
/inboxmate-inbox-demo)可证明解决方案有效——预置邮件线程应模仿其运营邮件,包括在合适情况下,自动转发的发票或求职申请
不合适的目标(跳过):
- 没有网站的极小型独资经营者
- 政府/公共机构
- 非营利组织(大型组织除外)
- 既不适合聊天机器人、邮件量也不大的企业(例如重工业、农业)
步骤 2 — 验证每条潜在客户信息
对于找到的每条潜在客户信息:
2a — 先检查跳过名单
从公司 URL 中提取域名。检查该域名是否在 skip-list.json 中。如果存在,立即跳过并转到下一条潜在客户信息——无需抓取网站。
2b — 检查网站(WebFetch)
访问其网站。确认:
- 网站可正常加载且仍在运营
- Impressum 显示德国地址(位于德国的城市,而非奥地利/瑞士)——这可确认符合条件 #1
- 内容是最新的(检查版权年份、最新博客文章、新闻)
- 公司面向客户开展业务(并非没有公开形象的纯 B2B 批发商)
- 检查其网站上是否已有聊天机器人(在 HTML 源代码中查找 Intercom、Drift、Zendesk、HubSpot、Tidio、Crisp、LiveChat 等聊天小组件)。现在已有聊天机器人不再是跳过条件——它决定所属路线:
- 没有聊天机器人 + 面向客户的网站 → CHATBOT 路线(
/inboxmate-demo) - 已有聊天机器人(或聊天机器人适配度较低)+ 明显的邮件量信号 → INBOX 路线(
/inboxmate-inbox-demo)——已有聊天机器人甚至能说明他们愿意投资自动化 - 已有聊天机器人 + 没有邮件量信号 → 跳过,原因填
"has chatbot, no email volume"
- 没有聊天机器人 + 面向客户的网站 → CHATBOT 路线(
**跳过条件:**网站无法访问、已停放、过时或并非德国公司。请附上原因并添加到 skip-list.json。
2c — 查找有邮箱的联系人
在以下位置查找联系信息:
/kontakt或/contact页面/impressum或/imprint页面/team或/ueber-uns页面- 首页页脚
我们需要:
- 最合适的联系人:能够理解我们方案的人——技术或产品方向的人员
- 理想职位(按优先顺序):CTO、IT 主管、产品主管、数字化主管、技术负责人、侧重技术的市场主管
- 备选职位:总经理、CEO、销售主管——但仅在没有技术方向联系人时考虑
- 其邮箱地址——必须公开显示在公司的公开网站上
- 其职位/头衔
邮箱规则:
- 必须是个人邮箱([email protected] 或 [email protected])
- 必须在公司自有网站上找到(截图/记下确切页面)
- 不得来自购买的名单、LinkedIn 抓取数据或任何第三方来源
- 避免使用通用邮箱(info@、office@、hello@、kontakt@)——这些邮箱很少能联系到合适的人
- 只有在找不到个人邮箱,且还在网站上找到具体联系人姓名时,才可将通用邮箱作为最后手段
- 如果找不到可用邮箱 → 将其连同原因添加到 skip-list.json,然后继续
2d — 判断相关性
写 1-2 句话,说明 InboxMate 为什么对这家公司有价值。请引用具体情况:
- “高流量房地产房源网站,设有可自动化处理的常见问题版块”
- “服务组合复杂的 IT 咨询公司——聊天机器人可预先筛选潜在客户”
- “设有多个服务页面的营销机构——访客需要指引,以找到合适的服务”
2e — 在 CRM 中检查重复项
首先按域名检查(最可靠),然后再按公司名称检查:
步骤 1 — 按域名搜索:
curl -s -X POST https://crm.psquared.dev/graphql \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $PSQUARED_CRM_TOKEN" \
-d "{\"query\":\"{ companies(filter: { domainName: { primaryLinkUrl: { like: \\\"%[domain]%\\\" } } }, first: 1) { totalCount } }\"}"
步骤 2 — 如果按域名未找到,再按名称搜索(可查出未添加域名的公司):
curl -s -X POST https://crm.psquared.dev/graphql \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $PSQUARED_CRM_TOKEN" \
-d "{\"query\":\"{ companies(filter: { name: { like: \\\"%[Company Name]%\\\" } }, first: 1) { totalCount } }\"}"
如果任一查询返回 totalCount > 0 → 跳过。将其连同原因 "already in CRM" 添加到 skip-list.json。
步骤 3 — 将合格的潜在客户添加到 CRM
对于通过全部 7 项标准的每条潜在客户:
3a — 创建公司
务必设置 outreachFor: [INBOX_MATE],以便下游 InboxMate 技能能够找到这家公司(演示、营销活动和邮件草稿均基于此字段筛选)。此处绝不要设置 PERSONAL_ONLY 或 INBOX_MATE_MUSEUM——PERSONAL_ONLY 专供 Martin 手动添加公司使用,自动化绝不能触碰;INBOX_MATE_MUSEUM 专供精选博物馆名单使用(于 2026-05-08 导入),由此技能之外的流程处理。
curl -s -X POST https://crm.psquared.dev/graphql \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $PSQUARED_CRM_TOKEN" \
-d "{\"query\":\"mutation { createCompany(data: { name: \\\"[Company Name]\\\", domainName: { primaryLinkUrl: \\\"https://[domain]\\\" }, outreachFor: [INBOX_MATE] }) { id name outreachFor } }\"}"
3b — 创建联系人
curl -s -X POST https://crm.psquared.dev/graphql \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $PSQUARED_CRM_TOKEN" \
-d "{\"query\":\"mutation { createPerson(data: { name: { firstName: \\\"[First]\\\", lastName: \\\"[Last]\\\" }, emails: { primaryEmail: \\\"[email]\\\" }, companyId: \\\"[companyId]\\\", jobTitle: \\\"[Role/Title]\\\" }) { id } }\"}"
3c — 创建说明并写明理由
**分两步操作:**先创建说明(只填写标题),然后再更新并填写完整内容。这样可以避免在单次修改中处理过长内容时出现问题。
步骤 1 — 创建说明:
curl -s -X POST https://crm.psquared.dev/graphql \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $PSQUARED_CRM_TOKEN" \
-d "{\"query\":\"mutation { createNote(data: { title: \\\"Lead Qualification: [Company Name] — [date]\\\" }) { id } }\"}"
步骤 2 — 更新说明,填写完整内容:
curl -s -X POST https://crm.psquared.dev/graphql \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $PSQUARED_CRM_TOKEN" \
-d "{\"query\":\"mutation { updateNote(id: \\\"[noteId]\\\", data: { body: \\\"Email source: [URL where email was found]\\\\nContact: [Name], [Role]\\\\nRelevance: [1-2 sentence justification]\\\\n\\\\nTrack: [CHATBOT | INBOX]\\\\nDemo approach: [suggest best angle — CHATBOT e.g. 'FAQ automation for property listings'; INBOX e.g. 'Demo-Postfach: Gutschein-Anfragen, Gruppenbuchungen, Storno-Mails vorsortiert + beantwortet']\\\\n\\\\nChecks: German company ✓, B2B ✓, Relevant ✓, Public email ✓, Named contact ✓, Value offer ✓, Not in CRM ✓, Active website ✓\\\" }) { id } }\"}"
步骤 3 — 将说明关联到公司:
curl -s -X POST https://crm.psquared.dev/graphql \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $PSQUARED_CRM_TOKEN" \
-d "{\"query\":\"mutation { createNoteTarget(data: { noteId: \\\"[noteId]\\\", companyId: \\\"[companyId]\\\" }) { id } }\"}"
“演示方案”字段应根据你在其网站上找到的信息,提出最适合 InboxMate 演示的切入点。示例:
- 房地产:“房源常见问题机器人——自动处理看房请求和价格咨询”
- IT 服务:“潜在客户筛选聊天机器人——帮助访客找到合适的服务套餐”
- 代理机构:“作品集导航工具——引导潜在客户查看相关案例和服务”
- 电子商务:“产品顾问——帮助客户选择合适的产品,减轻客服负担”
每添加一条后都要宣布:
Added: [Company Name] — [contact email] — [1-line reason]
步骤 4 — 汇报
宣布:
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ Lead Finder 已完成。 已添加:[N] - [Company A] — [email] — [reason] - [Company B] — [email] — [reason] 已跳过:[M] - [Company C] — 已在 CRM 中 - [Company D] — 未找到个人邮箱 - [Company E] — 已有聊天机器人 下一步:运行 /create-demo-for-crm-lead 来制作演示 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
重要提醒
- 重质量,轻数量。 5 条符合条件的潜在客户线索,胜过 50 条可疑线索。
- 记录所有信息。 每家公司的备注都是你的法律凭证。
- 仅使用公开邮箱。 如果在其网站上找不到邮箱,就跳过这条线索。
- 轮换行业。 不要连续搜索 10 家房地产公司——要多样化选择。
- 检查聊天机器人。 如果他们已经使用 Intercom/Drift/Zendesk/HubSpot 聊天工具,就跳过——他们已经有服务了。
- 仅限德国。 只接受 .de 域名。奥地利法律(TKG)更严格——没有 B2B 例外。请确认 Impressum 显示的是德国地址。