关于 cold-email-outreach
面向销售团队的冷邮件外联技能,覆盖潜客研究、个性化邮件起草、发送、跟进和回复分类。它通过 Hyper MCP 编排 Apollo、Firecrawl 和 Gmail 等工具,并默认先提供草稿供审核。
主要功能
- 01按 ICP 搜索并补全潜客信息
- 02收集个性化邮件所需信号
- 03按框架起草冷邮件
- 04安排邮件发送与跟进
- 05分类并跟踪回复
适用场景
- 01为目标客户群建立外联名单
- 02根据公司动态撰写个性化开场
- 03审核邮件草稿后开展外联活动
- 04追踪回复并处理退订
MCP 相关
通过 Hyper MCP 调用 Apollo、Firecrawl、Gmail 及可选的 LinkedIn 抓取工具,管理潜客研究、邮件起草与发送以及回复分类。
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ hyperfx-ai/ marketing-skills --skill cold-email-outreach安装后在 Claude Code 中输入/cold-email-outreach确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
references/deliverability.mdfollow-up-sequences.mdframeworks.md详细介绍
冷邮件外联
端到端冷邮件外联:调研、撰写、发送、跟进、分流回复。策略基于经验证有效的吸引点框架(数字开头/提问/痛点/利益优先);执行通过 Hyper MCP 使用 Apollo、Firecrawl、LinkedIn scraper 和 Gmail。
不在范围内 — 请转交给其他技能
| 请求 | 转交给 |
|---|---|
| 面向已建立联系的潜在客户的生命周期/培育序列(欢迎、引导、重新互动、挽回) | email-lifecycle(计划中) |
| LinkedIn 私信、连接请求或 Sales Navigator 工作流 | (计划中) |
| 回复后的潜在客户评分、分流、交易阶段更新 | crm-revops(计划中) |
| 抓取竞争对手的广告 | meta-ads-library |
要求
- 已安装并连接 Hyper MCP。 https://app.hyperfx.ai/mcp
- 已连接 Gmail 集成,网址为 https://app.hyperfx.ai/apps — 提供发件账户。
- 已连接 Apollo 集成 — 提供潜在客户搜索和邮箱信息补全。
- Firecrawl(内置)— 用于获取公司页面信号。
- 可选:LinkedIn scraper(内置,通过 Apify 运行)— 用于针对每位潜在客户进行更丰富的个性化定制。
如果 Agent 的工具列表中没有 gmail_messages_send 和 apollo_people_search,请停止并告知用户启用 Hyper MCP,并连接 Gmail 和 Apollo。
如何运行此技能中的工具
此技能中的每个工具都以其规范工具名称命名。使用当前界面提供的调用方式运行:
| 界面 | 查找工具 | 运行工具 |
|---|---|---|
| MCP 客户端(Claude、Cursor、Codex、ChatGPT) | search("<what you want to do>"),然后 describe("<name>") | call("<name>", {...}) |
| Hyper CLI | hyperai search "<what you want to do>",然后 hyperai describe <name> | hyperai call <name> --json '{...}' |
如果找不到某个工具,则表示其集成尚未连接或尚未在工作区启用:请停止并告知用户需要连接哪个集成。
工具列表
| 阶段 | 工具 |
|---|---|
| 潜在客户调研 | apollo_people_search、apollo_companies_search、apollo_people_match_bulk(2 位及以上潜在客户的信息补全优先使用)、apollo_people_match(仅用于单个潜在客户) |
| 单个潜在客户的信号 | firecrawl_urls_scrape、firecrawl_urls_scrape_batch、firecrawl_branding_extract、firecrawl_screenshots_create、scrape_linkedin_profiles (有条件使用 — 需要 LinkedIn Apify 集成) |
| 撰写 | gmail_drafts_create、gmail_drafts_update、gmail_drafts_get、gmail_drafts_list |
| 发送 | gmail_messages_send、gmail_drafts_send、gmail_messages_reply |
| 回复分流 | gmail_messages_list、gmail_messages_get、gmail_labels_create、gmail_labels_add、gmail_labels_remove、gmail_messages_move_to_label (使用 label_id 字符串,而非 label_ids 数组) |
关键规则
- 绝不要针对多个潜在客户循环调用
apollo_people_match。 对于 2 条或更多记录,始终批量调用apollo_people_match_bulk。Apollo 的工具说明对此有明确警告——循环调用单条匹配会浪费额度,而且速度慢得多。 - 默认发送模式 = 先创建草稿供审核。 对于包含 4 位或更多潜在客户的任何营销活动,先用
gmail_drafts_create为前 1–3 位创建草稿,展示给用户并获得明确批准,然后再用gmail_messages_send批量发送其余邮件。未经展示样例,绝不要发送完整营销活动。 - 每次营销活动使用一个标签。 开始时用
gmail_labels_create创建cold/<campaign-name>标签,应用到每封已发送邮件,然后通过搜索该标签来跟踪回复。这样才能让第 6 阶段的回复路由真正发挥作用。 - 遵守 Gmail 的发送限额。 消费者版 Gmail 账号每天约可发送 500 封邮件,Workspace 用户每天约可发送 2,000 封。分批发送——有关预热和每日发送节奏,请参阅
references/deliverability.md。 - 个性化内容必须与问题相关。 如果删掉个性化开场白,邮件依然说得通,那它就没有起到作用。开场白应自然地引出 你发邮件的原因。
- 每封邮件只提一个请求,只包含一个 CTA。 初次冷邮件中,基于兴趣的询问(
Worth exploring?)比直接邀约会面更有效。 - 立即遵守退订请求。 收到任何“请将我移除/我不感兴趣”的回复时,都要应用
unsubscribed标签,并且绝不再通过同一 Hyper 工作区向该地址发送邮件。
工作流
阶段 1 — 定义营销活动(始终先做这一步)
让用户明确以下内容:
- ICP — 职位、行业、公司规模、技术栈、地理位置。具体示例:“美国种子轮前至 A 轮 B2B SaaS 公司的增长负责人,员工 10–50 人,使用 HubSpot。”
- 请求内容 — 什么样的回复算“同意”?(15 分钟通话、异步回复、产品演示、介绍其他联系人。)
- 一句话价值主张 — “我们帮助 X 实现 Y,从而让他们能够 Z。”
- 证明点 — 一个具体成果:“我们帮助 Notion 在 90 天内将 CAC 降低了 31%。”(虚构示例比没有示例更糟——请获取真实案例。)
- 触发因素/信号(可选但很有用) — 融资、招聘、定价页面变更、近期博客文章、产品发布、领导层变动。
- 发件人 + 回复地址 — 用于发送邮件的 Gmail 账号。(使用
gmail_labels_list确认集成已正常运行。) - 发送量 + 频率 — 潜在客户总数、每日最大发送量、后续跟进间隔模式。
如果用户在其中任何一项上难以确定,请提出异议。没有证明点或明确请求的营销活动,无论文案多么巧妙,都不会有好的效果。
阶段 2 — 构建并丰富潜在客户名单
# Search by ICP
apollo_people_search(
person_titles=["Head of Growth", "VP Growth", "Director of Growth"],
organization_num_employees_ranges=["11,50"],
person_locations=["United States"],
per_page=50,
)
然后,针对确实要联系的潜在客户,批量补充邮箱信息:
# CORRECT — one bulk call for many prospects
apollo_people_match_bulk(
details=[
{"first_name": "...", "last_name": "...", "domain": "..."},
...up to 10 per call...
],
reveal_personal_emails=True,
)
仅在查询单个潜在客户时,才回退使用 apollo_people_match(例如,用户粘贴了一个 LinkedIn URL)。
如需更深入的公司层面背景信息(行业、收入范围、技术栈),请按机构名称对要丰富信息的公司调用 apollo_companies_search。请注意,人员搜索结果已包含核心公司字段(员工人数、行业、所在地)——只有在需要人员搜索结果未提供的信息时,才调用 apollo_companies_search。
第 3 阶段 — 每位潜在客户的信号(个性化层)
针对每位潜在客户,收集一条与您所解决的问题相关的具体观察。使用有效且成本最低的信号:
| 成本 | 工具 | 用途 |
|---|---|---|
| 免费(已有数据) | Apollo 响应字段 | 职位变动、近期开始担任新职位、公司员工人数激增、融资 |
| 低 | firecrawl_urls_scrape 抓取招聘/定价/博客页面 | “贵公司正在招聘 4 名 SDR”“定价页面显示企业版即将推出”“最新博客文章谈的是 X” |
| 低(多页面) | firecrawl_urls_scrape_batch | 一次调用即可在多个网站获取相同观察 |
| 中 | firecrawl_branding_extract | 获取品牌语气,用于确定邮件语气;如果您要发送后续图片,也可获取品牌颜色 |
| 较高 (视情况而定) | scrape_linkedin_profiles(profile_urls=[...]) (需要 LinkedIn Apify 集成 — 如果尚未连接,请跳过) | 近期帖子、共同联系人、近期职位变动、学校/雇主重合 |
个性化层级(针对本次营销活动,使用您能负担的最高层级):
- 第 1 层(批量/低投入) — 名字 + 职位 + 公司 + 行业。只有当价值主张足够有力、单靠它就能撑起邮件时才可接受。回复率:低。
- 第 2 层(基于信号) — 潜在客户处于相关职位/阶段,您所解决的问题对其尤为迫切(例如,刚上任、任职未满 60 天的增长负责人)。回复率:明显更高。
- 第 3 层(基于观察) — 提及公司网站、定价页面、招聘页面或近期产品发布中的内容。这是最理想的层级。
- 第 4 层(深入了解) — 提及对方近期发布的 LinkedIn 帖子、撰写的博客文章或发表的演讲。仅用于高价值目标。
低于第 2 层的个性化都应谨慎看待 — 仅替换 {{FirstName}} 不算个性化。
阶段 4 — 撰写邮件(默认先保存为草稿)
根据具体情况选择合适的框架。以下四种结构都很实用:
- 观察 → 问题 → 证明 → 邀请 — “你们正在招聘 SDR。这通常意味着会议数与 SDR 数量的比率成了瓶颈。我们帮助 [company] 达成了 X。值得了解一下吗?”
- 提问 → 价值 → 邀请 — “正在为 [problem] 发愁吗?我们能提供 [Y]。[Company Z] 获得了 [result]。想了解一下吗?”
- 契机 → 洞察 → 邀请 — “祝贺你们获得 [funding/launch]。这通常会带来 [Y challenge]。我们帮助过类似的团队解决这个问题。想了解一下吗?”
- 故事 → 衔接 → 邀请 — “[Similar company] 曾面临 [problem]。他们通过与我们合作,[solved it this way with us]。这对你们有参考价值吗?”
完整示例以及各类结构的最佳适用场景,请参阅 references/frameworks.md。
主题行。 简短、小写,看起来像内部邮件。2–4 个词。不用表情符号、不写名字、不耍紧迫感的花招。目标:看起来像同事发来的邮件。示例:quick question、reply rates、hiring ops、q3 forecast、for {{company}}。避免使用:Increase your revenue 10x!、John, are you free Thursday?、[URGENT] follow-up。
语气规则。
- 像同行交流,而不是供应商推销。使用缩写。大声读一遍——如果听起来像营销文案,就重写。
- “You/your”的数量应至少是“I/we”的 2 倍。
- 每句话都应推动读者回复。最好的陌生邮件给人的感觉应该是还可以更短,而不是更长。
- 根据资历调整:高管层 → 极简、平等交流。中层 → 更具体地说明价值。技术人员 → 表述精准、不说空话,并尊重他们的专业能力。
避免以下内容(审核者一眼就能看出的 AI 痕迹):
- “希望这封邮件能顺利送达。” / “我看到了你的个人资料。”
- “利用”“协同效应”“同类最佳”“领先供应商”“之后再联系”
- 罗列功能。一条有力的证明胜过十项功能。
- HTML、图片、多个链接。
- 虚假的
Re:/Fwd:主题行。 - 只替换
{{FirstName}}的完全相同模板。 - 第一次联系就邀请对方通话 30 分钟。
默认采用先保存为草稿的发送方式(适用于任何联系对象达到 4 人及以上的营销活动):
# 1. Create label for the campaign once — capture the returned id
label = gmail_labels_create(name="cold/q3-growth-leads")
campaign_label_id = label["id"]
# 2. Draft the first 1-3 prospects for user review
for p in prospects[:3]:
gmail_drafts_create(
to=p["email"],
subject="quick question",
body=render_email(framework="observation", prospect=p),
)
# 3. Show drafts to user, await explicit approval
# 4. After approval, send and label each message
for p in prospects[3:]:
result = gmail_messages_send(
to=p["email"],
subject="quick question",
body=render_email(framework="observation", prospect=p),
)
gmail_labels_add(message_id=result["id"], label_ids=[campaign_label_id])
如果用户希望审核每封邮件,请对所有邮件使用 gmail_drafts_create 创建草稿,并在获得批准后通过 gmail_drafts_send 发送。如果用户有把握,且模板已获批准(例如他们以前开展过这种形式的营销活动),则可以从第 1 位潜在客户开始,直接使用 gmail_messages_send。默认行为是先保存为草稿。
阶段 5 — 执行后续跟进节奏
总共联系 3–5 次,每次间隔逐渐拉长。每次跟进都要补充新内容——换个角度、提供新的证明,或分享有用的资源。“只是跟进一下”无法给读者任何回复的理由。
默认跟进节奏(根据用户的情况调整):
| 联系次数 | 天数 | 角度 | 工具 |
|---|---|---|---|
| 1 | 0 | 初始框架(观察/提问/契机/故事) | gmail_messages_send |
| 2 | +3 | 在同一邮件线程中回复,补充一句具体的证明 | gmail_messages_reply |
| 3 | +7 | 换个角度(如果第 1 封采用观察角度,就尝试提问或先讲价值) | gmail_messages_reply |
| 4 | +14 | 有用的免费资源——案例研究、计算器、拆解分析 | gmail_messages_reply |
| 5 | +21 | 结束跟进的邮件。“如果没有回复,我就先不再打扰了。我们保持联系,方便以后再聊吗?” | gmail_messages_reply |
务必在原始线程中回复(使用第 1 次发送返回的 message_id 调用 gmail_messages_reply)——这样既能保留上下文,也能提高邮件送达率。关于角度轮换、结束跟进邮件模板,以及如何在跟进序列中筛除潜在客户,请参阅 references/follow-up-sequences.md。
阶段 6 — 跟踪回复并进行分流
# Pull all replies on the campaign label from the last 7 days
gmail_messages_list(query="label:cold/q3-growth-leads is:unread newer_than:7d")
对于每条回复,使用 gmail_messages_get(message_id=...) 读取正文,进行分类并添加标签:
| 分类 | 标签 | 操作 |
|---|---|---|
| 感兴趣(“是 / 多说一些 / 发个日历邀请”) | cold/q3-growth-leads/interested | 停止序列。移交(功能上线后再交给 crm-revops)。 |
| 异议(“我们用 X / 没预算 / Q4 再试试”) | cold/q3-growth-leads/objection | 针对性回复一条,然后停止序列。 |
| 暂时不考虑(“晚些时候再联系”) | cold/q3-growth-leads/not-now | 停止序列。重新标记,90 天后再次跟进。 |
| 取消订阅(“请移除我 / 不感兴趣”) | cold/q3-growth-leads/unsubscribed | 停止序列。添加全局标签 unsubscribed。绝不再次联系。 |
| 不在办公室 | cold/q3-growth-leads/ooo | 暂停序列,在邮件所述的不在办公室结束日期后恢复。 |
使用两个单独的调用应用分类并清除未读状态:
gmail_labels_add(message_id=..., label_ids=[classification_label_id])
gmail_labels_remove(message_id=..., label_ids=["UNREAD"])
在分流循环开始前,使用 gmail_labels_create 创建一次这些子标签,并记录其 ID。
质量检查(发送前)
根据以下直觉检查逐封阅读草稿。若有超过一项不符合,则拒绝:
- 听起来像真人写的吗?(大声读出来。)
- 如果收到这封邮件,你会回复吗?
- 每句话是否都在为读者服务,而非发送者?
- 个性化内容是否与你要解决的问题相关,而非泛泛的赞美?
- 是否有一个明确、低门槛的请求?
- 主题行看起来像是同事写的吗?
- 首次触达的邮件是否少于约 120 个词?
参考工作流
长篇材料可按需阅读:
| 参考资料 | 阅读时机 |
|---|---|
references/frameworks.md | 选择框架、查看完整示例、按资历调整语气 |
references/follow-up-sequences.md | 构建多轮触达节奏、轮换切入角度、查看结束跟进邮件模板 |
references/deliverability.md | Gmail 速率限制、发件人预热、SPF/DKIM/DMARC、名单卫生、解除屏蔽名单限制 |