mcpField
L
lead-qualification

lead-qualification

github.com/nikiandr营销与增长195 次安装31 周前更新
代码仓库

关于 lead-qualification

面向营销团队的潜客评估技能,可定义活动标准、评分并校准结果。支持表格、CSV、LinkedIn URL 和文本名单,并可批量补充资料。

主要功能

  1. 01创建并保存活动评估标准
  2. 02按置信度和理由评估潜客
  3. 03批量补充 LinkedIn 资料
  4. 04全量处理前校准结果
  5. 05导出到 Google Sheets 或 CSV

适用场景

  1. 01为新外联活动制定评估规则
  2. 02筛选 CSV 或 Google Sheet 中的潜客
  3. 03复核初步评分并调整标准
  4. 04评分前补充 LinkedIn 潜客资料

MCP 相关

使用 Rube MCP 读取 Google Sheets;连接可用时,也通过它创建并设置结果表格格式。

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/nikiandr/goose-skills --skill lead-qualification

安装后在 Claude Code 中输入/lead-qualification确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

skill.meta.json
qualification-prompts/
ai-event-attendees-gtm.md
juicebox-linkedin-commenters.md
scripts/
enrich_leads.py

详细介绍

潜在客户资格判定引擎

通过结构化的信息收集流程,依据自定义标准判定潜在客户的资格;然后并行评估潜在客户名单,并给出置信度评级和推理过程。

三种运行模式

模式 1:完整信息收集 + 资格判定

尚无现成的资格判定提示词。通过信息收集创建提示词,保存后再判定潜在客户的资格。

触发条件: 用户未提供资格判定提示词文件。

模式 2:复用提示词 + 资格判定

用户引用现有的资格判定提示词文件——跳过信息收集,直接开始评分。

触发条件: 用户标记或引用 skills/lead-qualification/qualification-prompts/ 中的文件。

模式 3:优化 / 校准

用户已查看结果,希望调整标准。更新已保存的提示词,然后重新运行。

触发条件: 用户表示想要“优化”“调整”“结果不对”之类的意思,或针对资格判定结果提供反馈。


阶段 1:信息收集(仅限模式 1)

目标是全面了解用户如何区分符合资格和不符合资格的对象。分轮批量提问,让用户能够高效作答。

第 1 轮 — 核心问题(一次性全部提问)

将以下问题作为编号列表呈现。告诉用户:“回答相关的问题,不相关的可以跳过。我会就需要澄清的内容继续追问。”

产品与营销活动背景:

  1. 用一句话介绍你的产品 / 服务。
  2. 它解决什么问题,面向哪些人?
  3. 具体的营销活动或触达切入点是什么?(例如:“面向刚完成 A 轮融资的公司”,“争取正在从竞争对手 X 转型的团队”)

公司层面的标准: 4. 目标公司的规模是多少?(例如:1-10 人、11-50 人、51-200 人、201-1000 人、1000 人以上) 5. 哪些行业或垂直领域符合要求? 6. 有哪些行业或公司类型需要明确排除? 7. 目标地区有哪些?还是面向全球? 8. 哪些地区需要排除? 9. 公司所处阶段是否重要?(例如:种子轮、A 轮、B 轮及以上、上市公司) 10. 收入或融资金额范围是否重要?

个人层面的标准: 11. 理想买家的职位或角色是什么? 12. 哪些职位明确不符合资格? 13. 职级是否重要?(例如:必须是总监及以上、副总裁及以上、高管层) 14. 他们应该属于哪些部门?(例如:增长、营销、销售、工程) 15. 在现公司的最低任职时长是多少?(例如:至少 6 个月才能拥有购买决策权) 16. 总工作年限是否重要?

行为与情境信号: 17. 技术栈信号是否会影响资格判定?(例如:“使用 Salesforce” = 符合要求) 18. 公司近期的动态是否重要?(例如:大规模招聘、融资、产品发布) 19. 内容或发帖方面的信号是否重要?(例如:“发布过关于 AI 的内容” = 相关) 20. 还有哪些信号表明其购买意向强或匹配度高?

否决条件与直接判定符合的条件: 21. 哪些是你的硬性否决条件——无论其他因素如何,只要符合这些条件就会立刻将对象判为“不符合”? 22. 哪些是你的最强符合条件——符合这些条件的对象几乎可以确定为“符合”?

第 2 轮 — 后续追问

根据用户的回答,提出 5-10 个有针对性的问题,以消除歧义。示例:

  • “你提到了中型市场——这指的是 50-500 名员工,还是 50-1000 名员工?”
  • “你提到了增长副总裁——‘增长负责人’也符合条件吗?还是必须是副总裁职称?”
  • “你没有提到地理范围——我是否应将目标视为全球范围?”
  • “关于任职时长,你说最低要求是 6 个月。那入职 4 个月但在公司内部获得晋升的人呢?”
  • “你提到了 A 轮公司。收入相当的自举创业公司呢?”
第 3 轮 — 边界情况(可选,但建议进行)

提供 3-5 个假设的潜在客户档案,用于测试边界情况。询问“您会认定此人符合条件吗?”

可构造的示例场景(根据用户的标准调整):

  • 某人的职位符合要求,但所在公司的规模稍大或稍小
  • 某人所在公司符合要求,但职位处于边界范围
  • 某人各方面都符合要求,但任职时间较短
  • 某人的职位不完全匹配,但意向信号很强
  • 某人就职于竞争对手的客户公司

这一轮有助于发现用户尚未明确说明的隐性标准。

生成并保存筛选提示词

完成信息收集后,将所有答案整合为结构化的筛选提示词。保存到:

skills/lead-qualification/qualification-prompts/[campaign-name].md

保存的提示词必须遵循以下结构:

# Qualification Prompt: [Campaign Name]

Generated: [date]

## Campaign Context
- **Product:** [one-liner]
- **Campaign Angle:** [specific angle]
- **Problem Solved:** [what and for whom]

## Hard Disqualifiers (Instant No)
- [list each with explanation]

## Hard Qualifiers (Instant Yes)
- [list each with explanation]

## Company Criteria
| Criterion | Qualified | Disqualified | Notes |
|-----------|-----------|--------------|-------|
| Size | [range] | [range] | |
| Industry | [list] | [list] | |
| Geography | [list] | [list] | |
| Stage | [list] | [list] | |
| Funding/Revenue | [range] | [range] | |

## Person Criteria
| Criterion | Qualified | Disqualified | Notes |
|-----------|-----------|--------------|-------|
| Titles | [list] | [list] | |
| Seniority | [level+] | [below level] | |
| Department | [list] | [list] | |
| Tenure | [minimum] | [below minimum] | |
| Experience | [range] | [range] | |

## Behavioral & Situational Signals
- [list signals that boost qualification]
- [list signals that reduce qualification]

## Confidence Rules
- **High Confidence:** Enough data available for company size, title, tenure, and at least one signal.
- **Medium Confidence:** Missing one or two non-critical data points but core criteria are clear.
- **Low Confidence:** Missing critical data points (e.g., no company size, unclear title). Still make a yes/no call but flag it.

## Edge Case Guidance
- [specific guidance derived from Round 3 scenarios]
- [any nuanced rules from the intake conversation]

## Qualification Reasoning Instructions
When evaluating a lead, structure your reasoning as:
1. Check hard disqualifiers first — if any match, immediately disqualify.
2. Check hard qualifiers — if any match, lean strongly toward qualifying.
3. Evaluate company criteria against thresholds.
4. Evaluate person criteria against thresholds.
5. Factor in behavioral/situational signals as tiebreakers.
6. Assign confidence based on data completeness.
7. Write 2-3 sentence reasoning summarizing the decision.

第 2 阶段:潜在客户筛选

第 1 步 — 解析输入

接受以下任意输入格式:

  • Google Sheet URL — 通过 Rube MCP 读取(GOOGLESHEETS_GET_ALL_DATA_FROM_GOOGLE_SHEET 或类似工具)
  • CSV 文件路径 — 直接从文件系统读取
  • LinkedIn 个人资料 URL — 在消息中提供一个或多个 URL
  • 内联列表 — 在消息中列出的姓名/公司

自动检测格式。如果是 Google Sheet,使用 RUBE_SEARCH_TOOLS 查找合适的 Google Sheets 读取工具,然后读取数据。

第 1.5 步 — 通过 Apify 批量补充信息

适用情况: 输入包含 linkedin_url 列(或提供了 LinkedIn URL)。 跳过情况: 未提供 LinkedIn URL,或用户明确要求跳过信息补充。

在 LLM 筛选之前,批量补充所有潜在客户的信息,以获取结构化的档案数据。这比在筛选过程中逐个搜索网页快得多,也省钱得多。

运行信息补充脚本:

python3 skills/lead-qualification/scripts/enrich_leads.py INPUT_CSV \
  --output ENRICHED_CSV \
  --cache-hours 24

先使用 --dry-run 显示费用估算,不调用 Apify。

此脚本的作用:

  1. 从输入 CSV 中读取所有 LinkedIn URL
  2. 检查本地缓存(默认缓存 24 小时)——跳过已补充信息的档案
  3. 将未缓存的 URL 分批发送给 Apify,每批 50 个
  4. 返回补充信息后的 CSV,其中包含:enriched_title、enriched_company、enriched_industry、enriched_location、enriched_connections、enriched_education、enriched_experience_years、enriched_headline、enriched_about、enrichment_status
  5. 费用:每 1,000 个档案约 $3(每 100 个潜在客户约 $0.03)

信息补充完成后,将补充信息后的 CSV 用作第 2-4 步的输入。 补充后的数据可让 LLM 筛选步骤使用结构化字段,而无需搜索网页,从而大幅提升速度和一致性。

如果部分档案的信息补充失败: 这些档案的输出中会显示 enrichment_status: failed。LLM 筛选步骤应仅对这些潜在客户回退到网页搜索。

第 2 步 — 校准批次

处理完整列表之前,先处理前 5-10 个潜在客户,并以表格形式向用户展示结果。

如果已执行批量信息补充(第 1.5 步),请将补充后的列(enriched_title、enriched_company 等)作为主要数据来源。仅对 enrichment_status 为 failed 或 no_url 的潜在客户回退到网页搜索。

| # | Name | Title | Company | Qualified | Confidence | Reasoning |
|---|------|-------|---------|-----------|------------|-----------|
| 1 | ... | ... | ... | Yes | High | ... |
| 2 | ... | ... | ... | No | Medium | ... |
| ... |

询问:“这些结果看起来正确吗?处理完整列表之前,我需要调整任何标准吗?”

如果用户指出问题:

  1. 讨论需要更改的内容
  2. 更新已保存的筛选提示词文件
  3. 重新运行校准批次
  4. 在继续之前再次确认

重复以上步骤,直到用户批准。

步骤 3 — 完整运行(并行处理)

校准获批后,使用并行子 Agent 处理所有剩余潜在客户。必须并行处理 — 不要按顺序逐个处理潜在客户。

并行处理协议(必须遵守):

  1. 计算批次数:

    • 剩余潜在客户总数 / 15 = 批次数(向上取整)
    • 目标:每批约 15 个潜在客户
    • 最少:2 批(即使列表较短,也要验证并行处理是否有效)
    • 最多:10 个并发批次(避免上下文过载)
  2. 准备批次输入: 为每个批次创建一个独立完整的上下文包:

    • 完整的资格审查提示词(来自 qualification-prompts/ 文件)
    • 该批次的潜在客户行(包括所有列,以及步骤 1.5 中补充的数据)
    • 输出格式说明:姓名、是否符合资格(是/否)、置信度(高/中/低)、理由(2–3 句话)
    • 指示:“对于 enrichment_status=failed 或 no_url 的潜在客户,快速进行网页搜索。每位潜在客户的搜索时间不得超过 30 秒。”
  3. 并行启动 Task Agent: 使用 Task 工具,在一条消息中通过多个工具调用同时启动所有批次:

    Task: "Qualify leads batch 1/N"
    Context: [qualification prompt] + [batch 1 lead rows]
    
    Task: "Qualify leads batch 2/N"
    Context: [qualification prompt] + [batch 2 lead rows]
    
    ... (launch ALL at once — do NOT wait for batch 1 before launching batch 2)
    
  4. 收集并合并结果:

    • 等待所有 Task Agent 完成
    • 将所有批次结果合并为一个列表
    • 保留输入中的原始行顺序
    • 如果任何批次失败,则重试该批次一次。如果再次失败,将这些潜在客户标记为“qualification_failed”并继续。
  5. 验证完整性:

    • 计数:符合资格 + 不符合资格 + 失败 = 输入潜在客户总数
    • 如果有潜在客户遗漏,找出并重新处理

逐个潜在客户处理(在每个批次 Agent 中):

  1. 读取输入行中的所有可用数据(包括步骤 1.5 中补充的列)
  2. 如果存在补充数据(enrichment_status: success 或 cached):使用 enriched_title、enriched_company 等字段。
  3. 如果缺少补充数据(enrichment_status: failed 或 no_url):快速进行网页搜索(最长 30 秒)
  4. 应用资格审查提示词:
    • 先检查硬性排除条件 — 如符合任一条件,立即判定为不符合资格
    • 再检查硬性符合条件 — 如符合任一条件,应优先判定为符合资格
    • 评估所有标准
    • 确定:是否符合资格(是/否)、置信度(高/中/低)
    • 撰写 2–3 句话的理由
  5. 返回结果
步骤 4 — 输出到 Google Sheet

首选:通过 Rube MCP 使用 Google Sheets

使用 RUBE_SEARCH_TOOLS 查找 Google Sheets 工具,然后:

  1. 创建一个名为 [Campaign Name] - Qualified Leads - [Date] 的新 Google Sheet
  2. 写入所有原始列,再加上三个新列:
    • Qualified — 是 / 否
    • Confidence — 高 / 中 / 低
    • Reasoning — 2–3 句话的说明
  3. 设置工作表格式:
    • 标题行使用深色背景并加粗
    • 为 Qualified 列设置颜色:是为绿色,否为红色
    • 为 Confidence 列设置颜色:高为绿色,中为黄色,低为红色
    • 自动调整列宽,确保内容清晰易读
    • 添加筛选行,方便用户按 Qualified/Confidence 筛选
  4. 向用户提供 Google Sheet 链接

备用方案:CSV

如果 Rube MCP 不可用或 Google Sheets 连接失败:

  1. 将 CSV 写入:skills/lead-qualification/output/[campaign-name]-[date].csv
  2. 包含所有原始列,以及 Qualified、Confidence、Reasoning
  3. 告知用户文件路径
步骤 5 — 摘要

输出完成后,提供摘要:

## Qualification Results: [Campaign Name]

**Total leads processed:** X
**Qualified:** X (Y%)
**Disqualified:** X (Y%)

**Confidence breakdown:**
- High: X leads
- Medium: X leads
- Low: X leads (may need manual review)

**Top disqualification reasons:**
1. [reason] — X leads
2. [reason] — X leads
3. [reason] — X leads

**Output:** [Google Sheet link or CSV path]
**Qualification prompt saved to:** skills/lead-qualification/qualification-prompts/[campaign-name].md

所需工具

资格评估 Agent 应具备以下工具的访问权限:

  • Apify LinkedIn Enrichment — scripts/enrich_leads.py,用于资格评估前批量补充个人资料信息
    • 使用 supreme_coder~linkedin-profile-scraper Apify actor(每 1,000 份个人资料收费 $3,无需 Cookie)
    • 需要设置 APIFY_API_TOKEN 环境变量
    • 先使用 --dry-run 预览费用
  • Web Search — 当补充信息稀少或缺失时,用于调查潜在客户
  • Fetch (web page) — 用于获取 LinkedIn 个人资料、公司页面等
  • Rube MCP — 用于 Google Sheets 的输入/输出
    • RUBE_SEARCH_TOOLS — 查找可用工具
    • RUBE_MANAGE_CONNECTIONS — 确保 Google Sheets 连接处于活动状态
    • RUBE_REMOTE_WORKBENCH — 执行工作表操作
  • Task tool — 将潜在客户处理任务分配给多个子 Agent 并行执行(步骤 3 中必须使用)
  • Read/Write — 用于 CSV 输入/输出,以及保存资格评估提示词
  • Glob/Grep — 用于查找现有的资格评估提示词文件

示例用法

从 Google 表格完整导入并评估资格:
Qualify leads for our outbound campaign. Here's the lead list: [Google Sheet URL]

→ Agent 检测到没有已保存的提示词,于是开始导入、构建提示词,然后进行资格评估。

复用现有提示词:
Qualify these leads using @skills/lead-qualification/qualification-prompts/series-a-founders.md
— lead list: [Google Sheet URL]

→ Agent 跳过导入,直接进行校准和资格评估。

直接评估 LinkedIn 个人资料:
Using the series-a-founders qualification prompt, qualify these people:
- https://linkedin.com/in/person1
- https://linkedin.com/in/person2
- https://linkedin.com/in/person3
查看结果后进行优化:
Those results look off — also disqualify anyone at a consulting firm, and lower the
tenure minimum to 3 months for Director+ titles.

→ Agent 更新已保存的提示词并重新运行。

评论

支持 Markdown