mcpField
I
intent-signal-aggregator-skill

intent-signal-aggregator-skill

github.com/scientiacapital营销与增长2836 次安装3 周前更新
代码仓库

关于 intent-signal-aggregator-skill

根据 Apollo 信号和 Epiphan CRM 活动对目标账户的购买意向排序。它会先对账户进行资格判断,再收集信号,并通过 Slack 摘要和交接数据供后续 Skill 跟进。

主要功能

  1. 01解析账户列表和域名
  2. 02收集信号前判断账户资格
  3. 03汇总招聘、融资、增长和领导层变动
  4. 04纳入一方互动和技术栈数据
  5. 05按信号衰减规则评分并排序
  6. 06发送 Slack 摘要及热门账户交接 JSON

适用场景

  1. 01发现近期出现购买意向信号的账户
  2. 02按账户意向分数安排外联优先级
  3. 03监控目标账户的招聘或领导层变化
  4. 04将热门账户信息交给拨号和联系人研究工作流

MCP 相关

使用 MCP 工具进行账户资格判断,获取 Apollo 组织及人员信号,并查询 Epiphan CRM 活动。结果可通过 Slack 和交接 JSON 文件传递;外联文案须经检查后才创建草稿。

安装

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

$npx skills add https://github.com/scientiacapital/skills --skill intent-signal-aggregator-skill

安装后在 Claude Code 中输入/intent-signal-aggregator-skill确认已加载。

附带文件config.json

详细介绍

Intent Signal Aggregator

将目标账户列表转化为按意向排序的信息流,其中每个信号都是工具结果:通过 Apollo 职位发布和组织信息补全,获取招聘、融资、增长和领导层变动信号;通过 Epiphan CRM 活动获取第一方互动信号。账户必须先通过 `qualify_lead` 才能成为高意向账户,评分范围为 0-100,并以 Slack 摘要和交接文件的形式交付给 sdr-dial-lists 和 contact-hunter。时机就是产品:同一个潜在客户,不同的一周,结果不同。 关键词:`intent signals`、`buying signals`、`hot accounts`、`job postings`、`funding`、`in-market`

<quick_start> 触发条件:“跟踪[账户列表 / 垂直行业]的意向信号”或“本周哪些账户显示出购买信号?”

工具调用顺序:

  1. 账户列表 — 来自请求、HubSpot 列表(hubspot_search_lists + hubspot_list_members),或通过 execute_sql 查询垂直行业对应的 hubspot_companies。解析域名。
  2. Gate Q — 对每个账户调用 qualify_lead,然后再获取任何信号(排除的账户不消耗额度)。判定结果决定排除 / STALE AE LEAD / 新增潜在客户。
  3. 对每个符合条件的域名获取信号:
    • apollo_organizations_job_postings → 获取开放职位;将职位名称 / 描述与下方的 AV/视频关键词列表进行匹配。
    • apollo_organizations_enrich → 获取融资事件、estimated_num_employees 趋势和领导层信息(current_technologies、latest_funding_stage、founded_year)。
    • 使用 ATL 职位名称和域名调用 apollo_mixed_people_api_search,再通过 apollo_people_bulk_match 获取任职时间 → 入职未满 90 天的新高管。
    • 第一方信号:对已知联系人调用 activity_get_timeline,并通过 analytics_search_by_email 查询产品页面 / 定价 / 演示活动。
    • 可选:在已配置时,使用 Clay track-event 获取融资 / 新闻信息。
  4. 评分(见下表)、排序并撰写摘要。
  5. 交付:通过 Slack 私信向 Tim 发送摘要;将交接 JSON 写入 ~/.claude/skill-state/intent-signal-aggregator/<date>-hot.json,供 sdr-dial-lists / contact-hunter 使用;任何外联文案都必须先通过 Gate B,再调用 create_draft。 </quick_start>

<house_rules> 面向客户的技能。输出前,按顺序通过各项关卡(详情:~/.claude/skills/epiphan-house-rules-skill/reference/gates.md): S:在提出任何产品声明之前,先搜索产品目录(Epiphan AI)或 Epiphan Knowledge。B:对每条面向客户的文案调用 check_my_copy。 Q:在获取候选名单后立即调用 qualify_lead,先于分级 / 信息补全 / 草稿撰写。D:外发文本应保存为 Gmail 草稿,绝不能发送。 标识符(所有者 ID、portal、电子邮件、席位)来自该技能中的 reference/identifiers.md — 请勿在此处重复。 任何关卡失败时,遵循 reference/self-healing.md(重试、降级并添加标记、提醒 Tim、停止),并在 ~/.claude/skill-runs/.jsonl 中追加一行。 </house_rules>

<success_criteria>

  • 每个账户在获取信号前都已通过 qualify_lead;统计排除账户和 STALE AE LEAD
  • 每个信号都注明来源调用和日期(职位发布 ID、融资事件、时间线事件);不叙述未经记录的信息
  • 每个账户都有一个 0-100 的意向分数,并清楚显示各信号的贡献分值
  • 报告各来源的降级情况(哪个来源为空 / 失败),不得静默跳过
  • 摘要已通过 Slack 私信发送;高意向账户交接 JSON 已写入
  • 每个高意向账户的建议操作都注明联系人层级(来自 qualify_lead)和下一项技能
  • 已写入结果附属文件和运行日志行 </success_criteria>

阶段 1 — 账户列表和 Gate Q

将列表解析为 HubSpot 公司 ID 和域名。对每个账户调用 qualify_lead;黄金规则、AE 90 天规则、抑制规则和地理区域默认值(美国 / 加拿大)都会在该调用中评估 — 请参阅 epiphan-house-rules-skill reference/gates.md 和 reference/identifiers.md,请勿在此处重复所有者 ID。排除的账户会在消耗任何 Apollo 额度之前移除。若 qualify_lead 不可用 → 停止。

## 阶段 2 — 信号来源(全部实时)
信号工具计入条件
招聘(相关岗位)apollo_organizations_job_postings职位名称/描述匹配:AV、视听、媒体服务、课堂录制、视频制作、流媒体、教室技术、教学技术、法庭技术、广播工程师
招聘(数量)同上IT/设施/媒体部门有 ≥ 3 个空缺岗位
融资apollo_organizations_enrichlatest_funding_stage/融资事件发生在 ≤ 90 天内;对于公共机构,如果已配置,则通过 Clay track-event 跟踪债券或资本项目新闻
员工人数增长apollo_organizations_enrich员工人数估算值较 skill-state 中存储的先前值增长 ≥ 10%
领导层变动apollo_mixed_people_api_search + apollo_people_bulk_matchATL 职位的任职开始时间 ≤ 90 天
技术栈apollo_organizations_enrich current_technologies存在或新增 Panopto、Kaltura、Echo360、YuJa、Zoom Rooms、Crestron、Extron
第一方互动activity_get_timeline、analytics_search_by_email过去 30 天内的定价/演示页面浏览、表单提交、邮件回复

每个来源在发生临时错误时重试一次,然后降级处理:来源为空或失败 → 该信号得分为 0,账户标记为 partial:<source>,运行继续。

阶段 3 — 评分

信号分值衰减
相关职位招聘信息25(首个)+ 每增加一个 5 分,最高 35 分30 天后减半
新任 ATL 高管2560 天后减半
融资/资本事件1590 天后减半
第一方互动1514 天后减半
员工人数增长5每季度
技术栈匹配5固定

最高 100 分。Hot ≥ 60(本周行动)· Warm 35-59(2 周内行动)· Watch < 35。

阶段 4 — 输出

# Intent Signal Report — [date range]
Accounts in: [n] · excluded by Gate Q: [n] · stale AE surfaced: [n] · scored: [n] · hot: [n] · warm: [n]
Sources degraded: [none | job_postings for 3 accounts | …]

## HOT
### #1 [Company] — [vertical] — score [n]/100
1. Hiring: [n] relevant roles — "[title]" posted [date] (job posting id) — mentions [keyword]
2. Leadership: [Name], [Title], started [date] (Apollo id) — tier [ATL] per qualify_lead
3. First-party: [contact] viewed pricing [date] (timeline event)
Action: [call this week via sdr-dial-lists | contact-hunter for the new exec] — contact tier [ATL/GRAY]
Opener (draft id [Gmail id] after check_my_copy): "[one line]"

## WARM … ## WATCH …
## STALE AE LEADS — Tim decides
[Company] — owner [AE] — last activity [date] — score [n]

除非根据 ~/.claude/skill-analytics/outcomes.jsonl 计算,否则不输出信号赢率表;报告中不提供示例百分比。

阶段 5 — 发送与交接

  1. 向 Tim 发送 Slack 私信:包含 HOT 部分和计数,以及完整报告的保存路径 ~/.claude/skill-state/intent-signal-aggregator/<date>.md。
  2. 交接 JSON ~/.claude/skill-state/intent-signal-aggregator/<date>-hot.json:[{company_id, domain, score, signals[], recommended_skill, contact_tier}],由 sdr-dial-lists 和 contact-hunter-skill 使用。
  3. 开场白:调用一次 get_writing_style,每行调用一次 check_my_copy,为有已验证联系人的热门账户调用 create_draft。绝不发送。
  4. 按域在 skill-state 中持久化员工人数快照,以供下次运行比较增长情况。

阶段 6 — 输出结果附属文件 + 运行日志

写入 ~/.claude/skill-analytics/last-outcome-intent-signal-aggregator-skill.json:

{"ts":"[UTC ISO8601]","skill":"intent-signal-aggregator-skill","version":"<frontmatter version>","variant":"default",
 "status":"[success|partial|error]","runtime_ms":[estimated ms from start],
 "metrics":{"accounts_in":[n],"excluded_by_qualify":[n],"stale_ae_surfaced":[n],"accounts_scanned":[n],"signals_detected":[n],"hot_accounts":[n],
 "signal_types":{"hiring":[n],"funding":[n],"leadership":[n],"tech_stack":[n],"engagement":[n]},"sources_degraded":["job_postings"]},
 "error":null,"session_id":"[YYYY-MM-DD]"}

status 为 partial 时,必须在 error 中注明降级的来源。向 ~/.claude/skill-runs/intent-signal-aggregator-skill.jsonl 追加一行。

<self_healing> partial = 已生成排名,但某个来源降级:职位信息或补充数据在重试后仍为空/失败(信号评分为 0,账户标记为 partial:<source>)、Slack DM 失败(在聊天中返回报告路径)、create_draft 失败(在聊天中返回开场白)。error = 无法解析账户列表、Apollo 完全不可用,或 qualify_lead 不可用(停止:绝不将未经 Gate Q 审核的账户标记为热门)。根据 ~/.claude/skills/epiphan-house-rules-skill/reference/self-healing.md 中的流程:重试一次 → 标记后降级 → Slack DM 给 Tim → 将状态写入 ~/.claude/skill-state/intent-signal-aggregator/ 后停止。 </self_healing>

<anti_patterns>

  • 没有职位信息结果可供引用,却写“发布了 5 条职位信息”。
  • 在正文中重复陈述负责人 ID 或黄金规则;由 qualify_lead 给出判定。
  • 输出从未测量过的赢单率基准。
  • 仅凭一个过时信号就将账户标记为热门;应应用衰减规则。 </anti_patterns>

<reference_guides>

  • ~/.claude/skills/epiphan-house-rules-skill/reference/gates.md — Gate Q 判定、抑制规则、地理位置默认值
  • ~/.claude/skills/epiphan-house-rules-skill/reference/identifiers.md — 负责人 ID、门户、电子邮件(此处绝不重复陈述)
  • 同类技能:linkedin-sales-navigator-alt-skill(查找更换过职位的人)、lookalike-customer-finder-skill(确定监控对象)、sdr-dial-lists / contact-hunter-skill(跟进热门账户) </reference_guides>

评论

支持 Markdown