关于 lead-qualification
面向营销团队的潜客评估技能,可定义活动标准、评分并校准结果。支持表格、CSV、LinkedIn URL 和文本名单,并可批量补充资料。
主要功能
- 01创建并保存活动评估标准
- 02按置信度和理由评估潜客
- 03批量补充 LinkedIn 资料
- 04全量处理前校准结果
- 05导出到 Google Sheets 或 CSV
适用场景
- 01为新外联活动制定评估规则
- 02筛选 CSV 或 Google Sheet 中的潜客
- 03复核初步评分并调整标准
- 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.jsonqualification-prompts/ai-event-attendees-gtm.mdjuicebox-linkedin-commenters.mdscripts/enrich_leads.py详细介绍
潜在客户资格判定引擎
通过结构化的信息收集流程,依据自定义标准判定潜在客户的资格;然后并行评估潜在客户名单,并给出置信度评级和推理过程。
三种运行模式
模式 1:完整信息收集 + 资格判定
尚无现成的资格判定提示词。通过信息收集创建提示词,保存后再判定潜在客户的资格。
触发条件: 用户未提供资格判定提示词文件。
模式 2:复用提示词 + 资格判定
用户引用现有的资格判定提示词文件——跳过信息收集,直接开始评分。
触发条件: 用户标记或引用 skills/lead-qualification/qualification-prompts/ 中的文件。
模式 3:优化 / 校准
用户已查看结果,希望调整标准。更新已保存的提示词,然后重新运行。
触发条件: 用户表示想要“优化”“调整”“结果不对”之类的意思,或针对资格判定结果提供反馈。
阶段 1:信息收集(仅限模式 1)
目标是全面了解用户如何区分符合资格和不符合资格的对象。分轮批量提问,让用户能够高效作答。
第 1 轮 — 核心问题(一次性全部提问)
将以下问题作为编号列表呈现。告诉用户:“回答相关的问题,不相关的可以跳过。我会就需要澄清的内容继续追问。”
产品与营销活动背景:
- 用一句话介绍你的产品 / 服务。
- 它解决什么问题,面向哪些人?
- 具体的营销活动或触达切入点是什么?(例如:“面向刚完成 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。
此脚本的作用:
- 从输入 CSV 中读取所有 LinkedIn URL
- 检查本地缓存(默认缓存 24 小时)——跳过已补充信息的档案
- 将未缓存的 URL 分批发送给 Apify,每批 50 个
- 返回补充信息后的 CSV,其中包含:
enriched_title、enriched_company、enriched_industry、enriched_location、enriched_connections、enriched_education、enriched_experience_years、enriched_headline、enriched_about、enrichment_status - 费用:每 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 | ... |
| ... |
询问:“这些结果看起来正确吗?处理完整列表之前,我需要调整任何标准吗?”
如果用户指出问题:
- 讨论需要更改的内容
- 更新已保存的筛选提示词文件
- 重新运行校准批次
- 在继续之前再次确认
重复以上步骤,直到用户批准。
步骤 3 — 完整运行(并行处理)
校准获批后,使用并行子 Agent 处理所有剩余潜在客户。必须并行处理 — 不要按顺序逐个处理潜在客户。
并行处理协议(必须遵守):
-
计算批次数:
- 剩余潜在客户总数 / 15 = 批次数(向上取整)
- 目标:每批约 15 个潜在客户
- 最少:2 批(即使列表较短,也要验证并行处理是否有效)
- 最多:10 个并发批次(避免上下文过载)
-
准备批次输入: 为每个批次创建一个独立完整的上下文包:
- 完整的资格审查提示词(来自
qualification-prompts/文件) - 该批次的潜在客户行(包括所有列,以及步骤 1.5 中补充的数据)
- 输出格式说明:姓名、是否符合资格(是/否)、置信度(高/中/低)、理由(2–3 句话)
- 指示:“对于
enrichment_status=failed或no_url的潜在客户,快速进行网页搜索。每位潜在客户的搜索时间不得超过 30 秒。”
- 完整的资格审查提示词(来自
-
并行启动 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) -
收集并合并结果:
- 等待所有 Task Agent 完成
- 将所有批次结果合并为一个列表
- 保留输入中的原始行顺序
- 如果任何批次失败,则重试该批次一次。如果再次失败,将这些潜在客户标记为“qualification_failed”并继续。
-
验证完整性:
- 计数:符合资格 + 不符合资格 + 失败 = 输入潜在客户总数
- 如果有潜在客户遗漏,找出并重新处理
逐个潜在客户处理(在每个批次 Agent 中):
- 读取输入行中的所有可用数据(包括步骤 1.5 中补充的列)
- 如果存在补充数据(
enrichment_status: success或cached):使用enriched_title、enriched_company等字段。 - 如果缺少补充数据(
enrichment_status: failed或no_url):快速进行网页搜索(最长 30 秒) - 应用资格审查提示词:
- 先检查硬性排除条件 — 如符合任一条件,立即判定为不符合资格
- 再检查硬性符合条件 — 如符合任一条件,应优先判定为符合资格
- 评估所有标准
- 确定:是否符合资格(是/否)、置信度(高/中/低)
- 撰写 2–3 句话的理由
- 返回结果
步骤 4 — 输出到 Google Sheet
首选:通过 Rube MCP 使用 Google Sheets
使用 RUBE_SEARCH_TOOLS 查找 Google Sheets 工具,然后:
- 创建一个名为
[Campaign Name] - Qualified Leads - [Date]的新 Google Sheet - 写入所有原始列,再加上三个新列:
Qualified— 是 / 否Confidence— 高 / 中 / 低Reasoning— 2–3 句话的说明
- 设置工作表格式:
- 标题行使用深色背景并加粗
- 为 Qualified 列设置颜色:是为绿色,否为红色
- 为 Confidence 列设置颜色:高为绿色,中为黄色,低为红色
- 自动调整列宽,确保内容清晰易读
- 添加筛选行,方便用户按 Qualified/Confidence 筛选
- 向用户提供 Google Sheet 链接
备用方案:CSV
如果 Rube MCP 不可用或 Google Sheets 连接失败:
- 将 CSV 写入:
skills/lead-qualification/output/[campaign-name]-[date].csv - 包含所有原始列,以及 Qualified、Confidence、Reasoning
- 告知用户文件路径
步骤 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-scraperApify 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 更新已保存的提示词并重新运行。