mcpField
G
get-qualified-leads-from-luma

get-qualified-leads-from-luma

github.com/gooseworks-ai营销与增长1.3k48 次安装3 天前更新
代码仓库

关于 get-qualified-leads-from-luma

该营销 Skill 搜索 Luma 活动并收集参与者与主办方,再按 ICP 评估线索。它将结果整理到 Google Sheets,并可通过 Slack 提醒团队查看重点线索。

主要功能

  1. 01按主题、地点搜索 Luma 活动
  2. 02收集并去重参与者资料
  3. 03按 ICP 批量评估线索
  4. 04将结果写入 Google Sheets
  5. 05通过 Slack 发送重点线索提醒

适用场景

  1. 01从近期行业活动中寻找潜在客户
  2. 02按既有 ICP 提示词筛选活动参与者
  3. 03汇总合格线索并通知销售团队

MCP 相关

工作流说明使用 Rube MCP 搜索 Google Sheets 和 Slack 工具,以写入表格并发送提醒。

安装

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

$npx skills add https://github.com/gooseworks-ai/goose-skills --skill get-qualified-leads-from-luma

安装后在 Claude Code 中输入/get-qualified-leads-from-luma确认已加载。

附带文件skill.meta.json

详细介绍

从 Luma 活动中获取合格潜在客户

按主题和地点搜索 Luma 活动,提取所有参会者和主办方,根据你的 ICP 对他们进行筛选,将结果导出到 Google Sheet,并通过 Slack 向你发送包含优质潜在客户的提醒。

这是一个 5 步工作流,将 luma-event-attendees、lead-qualification、Google Sheets 输出和 Slack 提醒串联起来。

步骤 0:明确搜索参数

开始前,确保你已明确回答以下问题。如果用户的提示已经涵盖这些问题,则直接进入下一步。否则,请提问:

  1. 地点 — 活动应位于哪里?(例如,“San Francisco”“New York”“London”)
  2. 主题/关键词 — 活动主题是什么?建议提供 3-5 个关键词变体,以尽可能扩大覆盖范围。例如,如果用户说“growth marketing”,还可以建议:“GTM”“demand gen”“startup growth”“growth hacking”“marketing leadership”
  3. 时间范围 — 活动需要有多新?(例如,“过去 2 周”“过去 1 个月”“本季度”)。如果用户未指定,默认使用过去 30 天。Luma 搜索可能返回数月甚至数年前的活动,因此务必确认时间范围,避免结果过时。
  4. 筛选提示词 — 用户是否在 skills/lead-qualification/qualification-prompts/ 中已有筛选提示词?如果没有,用户的 ICP 大致是什么?(可以使用 lead-qualification 的 intake 模式来创建一个)
  5. Slack 频道/ webhook — 应将提醒发送到哪里?Webhook URL 还是 Slack 频道名称?
  6. Slack 提醒中应包含多少个优质潜在客户?(默认:5 个)

以编号列表的形式列出这些问题。用户可以一次性回答。

步骤 1:搜索 Luma 并提取参会者

使用 luma-event-attendees skill,采用多个关键词变体来尽可能扩大覆盖范围。

并行执行搜索

生成 3-5 个结合用户主题和地点的关键词变体。并行运行所有搜索:

# Run each search variation in parallel
python3 skills/luma-event-attendees/scripts/scrape_event.py --search "AI San Francisco" --output /tmp/luma_search_1.csv
python3 skills/luma-event-attendees/scripts/scrape_event.py --search "Growth Marketing San Francisco" --output /tmp/luma_search_2.csv
python3 skills/luma-event-attendees/scripts/scrape_event.py --search "GTM San Francisco" --output /tmp/luma_search_3.csv
按时间范围筛选

收集结果后,使用 event_date 列筛除超出用户指定时间范围的活动。Luma 搜索会返回所有时间段的活动,因此这一步对于避免潜在客户信息过时至关重要。如果未指定时间范围,默认使用过去 30 天。

去重

按姓名(不区分大小写)合并并去重。妥善处理 None 姓名 — 跳过没有姓名的条目。

将去重后的结果保存为 CSV:

/tmp/luma_all_attendees.csv

向用户报告:

  • 去重前的结果总数
  • 去重后的独立人员数量
  • 拥有 LinkedIn 个人资料的人数
  • 涵盖的活动数量

步骤 2:将参会者数据保存为 CSV

整个工作流都使用 CSV;Google Sheets 只在最后(步骤 4)创建,因为处理中途将大型数据集写入 Sheets 速度慢且容易出错。

步骤 1 生成的 CSV(/tmp/luma_all_attendees.csv)是工作文件。列应包括:

nameevent_rolebiotitlecompanylinkedin_urltwitter_urlinstagram_urlwebsite_urlusernameevent_nameevent_dateevent_url

步骤 3:筛选潜在客户

使用 lead-qualification skill(模式 2:复用提示词)筛选所有参会者。

准备批次
  1. 从用户指定的文件中读取筛选提示词(例如,skills/lead-qualification/qualification-prompts/ai-event-attendees-gtm.md)
  2. 将参会者拆分为多个批次,每批约 15-20 位潜在客户
  3. 对每位潜在客户,包含:id(行号)、name、event_role、bio、title、company、linkedin_url、event_name
并行执行筛选

使用 Task 工具和 sonnet 模型子 Agent 同时启动所有批次:

Task: "Qualify leads batch 1/N"
  - Include the full qualification prompt text
  - Include the batch of leads as JSON
  - Ask for output as JSON array: [{id, name, qualified, confidence, reasoning}]

Task: "Qualify leads batch 2/N"
  ... (launch ALL at once)
合并结果
  1. 收集所有批次的结果
  2. 合并为一个 JSON 数组,并保留原始 ID
  3. 按置信度对符合条件的潜在客户排序(High 优先,其次是 Medium,最后是 Low)
  4. 保存结果:
    • /tmp/all_qual_results.json — 全部 195 条结果
    • /tmp/qualified_leads.json — 仅包含符合条件的潜在客户,并按置信度排序

向用户报告:

  • 处理的潜在客户总数
  • 符合条件的数量和百分比
  • 按置信度等级划分的数量(High / Medium / Low)
  • 主要的不符合条件原因

第 4 步:创建包含结果的 Google Sheet

现在创建包含所有数据的 Google Sheet,包括原始参会者数据和筛选结果。

使用 Rube MCP 操作 Google Sheets
  1. 使用 RUBE_SEARCH_TOOLS 查找 Google Sheets 工具(搜索 "google sheet create")
  2. 创建一个名为:Luma Leads - [Topic] - [Date] 的新工作表
  3. 工作表 1("All Attendees"): 写入所有参会者行,保留原始列,并添加:
    • Qualified — Yes / No
    • Confidence — High / Medium / Low
    • Reasoning — 2-3 句说明
  4. 工作表 2("Qualified Leads"): 仅包含符合条件的潜在客户,并按置信度排序
大型数据集的写入策略

对于大型数据集,Google Sheets API 可能运行较慢。请采用以下方法:

  • 先写入标题行
  • 使用批量更新操作,每次写入 50 行
  • 如果某个数据块写入失败,重试一次后再继续
备用方案

如果 Rube/Sheets 不可用,请保存为 CSV:

/tmp/luma_qualified_leads_[date].csv

向用户提供 Google Sheet 链接(或 CSV 路径)。

第 5 步:发送 Slack 提醒

发送格式化的 Slack 消息,其中包含排名靠前的 N 个符合条件的潜在客户(默认:5 个,或用户指定的数量)。

如果用户提供了 webhook URL

使用 Python 的 urllib.request 向 webhook 发送 POST 请求:

import json
import urllib.request

message = {
    "blocks": [
        {"type": "header", "text": {"type": "plain_text", "text": "Top N Qualified Leads from [Topic] Events"}},
        {"type": "section", "text": {"type": "mrkdwn", "text": "_From X attendees across Y events, Z qualified (P%). Here are the top N:_"}},
        # For each lead:
        {"type": "section", "text": {"type": "mrkdwn", "text": "*1. Name* [Confidence]\n   LinkedIn: url\n   Bio: ...\n   Why: reasoning"}},
        {"type": "divider"},
        # Link to spreadsheet at the bottom
        {"type": "section", "text": {"type": "mrkdwn", "text": "<sheet_url|View full spreadsheet> (X attendees, Y qualified)"}}
    ]
}

req = urllib.request.Request(webhook_url, data=json.dumps(message).encode(), headers={"Content-Type": "application/json"})
urllib.request.urlopen(req)
如果用户希望通过 Rube MCP 使用 Slack

使用 RUBE_SEARCH_TOOLS 查找 Slack 工具,然后通过 SLACK_SEND_MESSAGE 或类似工具发送。

消息格式

Slack 提醒中应为每个排名靠前的潜在客户包含:

  • 姓名和置信度等级
  • LinkedIn URL(可点击)
  • 简介 — 一句话总结
  • 原因 — 符合条件的理由(如有需要,截短至约 150 个字符)

最后附上完整 Google Sheet 的链接。

费用估算

组成部分费用
Luma 抓取器(Apify)固定订阅费 $29/mo
LinkedIn 信息补充(可选)每 100 个潜在客户约 ~$0.03
Google Sheets免费(通过 Rube/Composio)
LLM 筛选每次运行约 ~$0.10-0.30(取决于批次大小)
Slack webhook免费

典型运行: 在 3-5 种搜索条件下处理约 200 名参会者,基本只需支付 Apify 订阅费和几美分的 LLM 令牌费用。

示例提示词

使用现有提示词快速运行:

"从 SF 的 AI 和增长活动中寻找符合条件的潜在客户。使用 ai-event-attendees-gtm 筛选提示词。通过 Slack webhook 发送排名前 5 的结果:https://hooks.slack.com/..."

完整说明:

"在 New York 搜索创业公司、SaaS 和 AI 活动。提取所有参会者。根据我们的 Series A 创始人 ICP 筛选他们。将所有内容放入 Google Sheet,并通过 Slack 给我发送排名前 10 的结果。"

简略请求(会触发澄清问题):

"帮我从 SF 科技活动中寻找潜在客户"

故障排除

未设置 Apify 令牌
export APIFY_API_TOKEN="your_token"
# Or check skills/luma-event-attendees/.env
未找到参会者

部分 Luma 活动已禁用 show_guest_list。Apify 抓取器仍可获取精选嘉宾,但并非所有活动都能提供完整的参会者名单。

Google Sheets 写入速度慢

大型数据集出现这种情况是正常的。该技能会按每批 50 行写入。如果速度太慢或写入失败,结果始终会以 CSV 格式保存在 /tmp/ 中。

Slack webhook 返回错误

请确认 webhook URL 正确,并且 Slack 应用仍已安装在工作区中。使用简单的 curl 命令进行测试:

curl -X POST -H 'Content-Type: application/json' -d '{"text":"test"}' YOUR_WEBHOOK_URL

评论

支持 Markdown