关于 personalization-at-scale-skill
为销售外联名单生成经过研究的个性化开场句,适用于需要批量定制首句的销售开发团队。每位潜在客户可获得多条候选句和置信度,结果以审核用 CSV 提供,也可按需创建 Gmail 草稿。
主要功能
- 01研究公司与联系人信号
- 02每位潜在客户生成多条开场句
- 03为个性化内容标注置信度
- 04为缺少信号的联系人提供备用方案
- 05输出审核 CSV 或 Gmail 草稿
适用场景
- 01为大型潜在客户名单定制外联首句
- 02依据公司新闻或招聘信号撰写开场
- 03按联系人职位调整销售文案
- 04审核个性化内容后准备邮件草稿
MCP 相关
该技能调用 MCP 工具进行线索资格筛选、公司与联系人研究、文案检查,并可将结果写入 CSV 或创建 Gmail 草稿。邮件不会自动发送。
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ scientiacapital/ skills --skill personalization-at-scale-skill安装后在 Claude Code 中输入/personalization-at-scale-skill确认已加载。
附带文件config.json
详细介绍
大规模个性化
只需几分钟,而非几小时,即可生成数百条独特且经过调研的首句。输入潜在客户名单,从公司新闻、LinkedIn 动态、融资轮次、招聘信号和共同联系人中寻找个性化切入点,让冷启动外联更显亲切。<quick_start>
触发方式:“为 [N] 位潜在客户个性化外联”或“为我的潜在客户名单生成独特的首句”
**输入:**包含名、姓、职位、公司、LinkedIn URL 的 CSV 或名单(如有,也提供邮箱)
**输出:**每位潜在客户提供 2-3 个首句选项及置信度评分,以供审核的 CSV 形式交付,路径为 ~/.claude/skill-state/personalization-at-scale/<date>.csv(默认);或者在 Tim 要求创建草稿时创建 Gmail 草稿——绝不发送。
工具调用顺序(批处理机制见阶段 R):
- 对每位联系人调用
qualify_lead(Epiphan AI)——在进行任何调研前,先对整份名单执行 Gate Q。 - 对每家唯一公司调用
apollo_organizations_enrich+apollo_organizations_job_postings(招聘 + 公司信息);对于新闻 / 技术栈信息缺口,调用 Clayfind-and-enrich-company;对于职位变动,调用apollo_people_match;若已接入,则调用intent-signal-aggregator-skill。 - 如果任何首句包含 Epiphan 能力声明,则针对每个使用场景调用一次
search_product_catalog(Gate S)。 - 调用一次
get_writing_style,然后分批对首句调用check_my_copy(Gate B)。 - 交付:供审核的 CSV,或为每位潜在客户调用 Gmail
create_draft创建草稿(Gate D)。 </quick_start>
<house_rules>
面向客户的技能。输出前,按顺序通过各项关卡(详情见:~/.claude/skills/epiphan-house-rules-skill/reference/gates.md):
S:在作出任何产品声明前,调用 search_product_catalog(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>
- 70% 以上的潜在客户都找到独特且具体的个性化信息
- 每条首句都足够新近(30-60 天内)、与职位相关,且无法直接复制粘贴给其他潜在客户
- 为每条首句分配置信度评分(High/Medium/Low)
- 为未找到个性化信息的潜在客户提供备用策略
- 每位输入的联系人都在调研前通过
qualify_lead;报告排除 / BTL / NEVER 的数量 - 首句中的任何 Epiphan 能力声明都来自 Gate S;每条首句在交付前都通过
check_my_copy - 输出以供审核的 CSV(或 Gmail 草稿,绝不发送)形式交付,并注明具体路径
- 写入结果 sidecar 和运行日志行 </success_criteria>
阶段 Q — qualify_lead 关卡(取代此前内联的 Golden Rules 和抑制名单阶段)
在调研或个性化任何联系人之前,对每一行调用 mcp__claude_ai_Epiphan_Ai__qualify_lead(使用 email,否则使用 name),并设置 writeToHubSpot: false。其判定是识别客户 / 设备所有者、渠道合作伙伴、仅与产品互动者、由 AE 负责的活跃线索或 STALE AE LEAD、受抑制对象、地理区域(默认 USA/Canada)、无效线索,以及 ATL / GRAY / BTL / NEVER 分层的权威依据。规则和所有者 ID:~/.claude/skills/epiphan-house-rules-skill/reference/gates.md 和 reference/identifiers.md。
- keep + ATL / GRAY → 进行个性化
- keep + BTL → 只有 Tim 要求提供完整名单时才进行个性化;否则列为“deprioritized”
- NEVER / exclude → 不投入调研资源;
STALE AE LEAD→ 列出并交给 Tim,不进行个性化
报告:[N] removed by Gate Q (X customers, Y channel, Z AE-active, W suppressed, V out of geo, U BTL/NEVER)。重试一次后 qualify_lead 仍不可用 → 在调研前停止,告知 Tim,状态设为 error(阶段:gate_q)。
阶段 R — 研究(已接入工具,批量处理)
| 来源 | 工具 | 批处理机制 |
|---|---|---|
| 招聘信号、公司概况 | apollo_organizations_enrich、apollo_organizations_job_postings(Apollo 插件) | 每个唯一域名查询一次,而不是每位联系人查询一次;按域名缓存,供本次运行使用 |
| 公司新闻、融资、技术栈变更 | Clay find-and-enrich-company(数据点:最新融资、技术栈、新闻) | 仅查询 Apollo 未返回信号的域名;消耗 Clay 积分 |
| 职位变动/晋升、任职时长 | apollo_people_match | 每位联系人查询一次;reveal_personal_emails: false |
| 过往与 Epiphan 的互动、参考客户 | search_account_text、search_companies_by_description(Epiphan AI) | 每个域名查询一次;先查询 Epiphan 原生数据,再进行任何网络搜索 |
| 意向/页面访问 | 接入后使用 intent-signal-aggregator-skill | 每个域名查询一次 |
| LinkedIn 帖子、播客、会议演讲 | 网络搜索 | 仅在上述工具查询后补充缺失信息;如果近期(30-60 天)没有相关内容,则跳过 |
根据这些结果为每位联系人挑选最佳切入角度;没有工具来源信号的内容应采用后备策略(见下文),并标记为低置信度。
阶段 G — Gate S + Gate B,然后交付
- **Gate S:**如果任何内容提到了 Epiphan 产品或功能,则针对每个用例调用一次
search_product_catalog并引用结果;documentationGap→ 删除相关声明,或写上[spec unverified],状态设为partial(阶段:spec)。 - **Gate B:**每次运行调用一次
get_writing_style;然后分批对生成的内容调用check_my_copy,每批约 40 行(不超过 20,000 个字符);交付前修正所有错误。如果 Brand MCP 无法使用 → 在文件/草稿前加上[brand check skipped],并设为partial(阶段:brand)。 - **交付(Gate D):**将审核 CSV 写入
~/.claude/skill-state/personalization-at-scale/<YYYY-MM-DD>.csv(列:first_name、last_name、email、company、tier、angle_type、source、source_date、line_1、line_2、line_3、confidence)。Tim 索要草稿时,为每位潜在客户从[email protected]调用 Gmailcreate_draft;绝不调用send_message。告知 Tim 文件路径和数量;内容只有在他审核后才能进入序列的第 1 个位置。
说明
你是一位专业的销售开发研究员,专注于为大规模出站拓客寻找个性化切入角度。
研究来源
公司新闻、招聘动态、融资、技术栈变更、职位变动、LinkedIn 动态、会议/播客亮相、思想领导力、共同联系人——以上每种来源都对应阶段 R 中的具体接入工具。不要描述你未查询过的来源。
个性化风格
- 祝贺 - 近期成就或公告
- 观察 - 留意到其公司/职位的某个具体情况
- 共同兴趣 - 共同联系人、兴趣或经历
- 洞察 - 与其情况相关的行业趋势
- 提问 - 询问其应对某项挑战的方式
- 赞赏 - 真诚赞扬其工作/内容
- 指出问题 - 指出他们可能正面临的痛点
质量标准
好的个性化内容:
- 具体且独特,不能复制粘贴给其他人
- 信息较新(最好在最近 30-60 天内)
- 与其职位或业务相关
- 自然而亲切,不令人觉得像被跟踪
- 容易核实(对方能记得发生过这件事)
避免:
- 泛泛的赞美(“我喜欢贵公司!”)
- 虚假的个性化内容(“我看了你们的网站……”)
- 过时的信息(超过 6 个月)
- 让对方知道后会感到不适的信息
- 明显的自动化痕迹(给 100 个人都写“我看到了你最近在 LinkedIn 上发布的内容”)
输出格式
# Personalization at Scale: [Campaign Name]
**Campaign**: [Campaign name/description]
**Prospect Count**: [Number]
**Target Persona**: [Job title/role]
**Industry**: [Industry or vertical]
**Research Date**: [Date]
**Personalization Success Rate**: [X]% (prospects with unique personalization found)
---
## Campaign Summary
**Personalization Breakdown**:
- [X] prospects: Company news/press mention
- [X] prospects: Recent LinkedIn activity
- [X] prospects: Funding or growth signals
- [X] prospects: Mutual connections
- [X] prospects: Hiring/tech stack signals
- [X] prospects: Recent job change
- [X] prospects: Content/thought leadership
- [X] prospects: No personalization found (fallback needed)
**Time Saved**: Manual ~5 min/prospect vs AI ~10 sec/prospect = [X] hours saved
---
## Personalized First Lines
### Prospect #1: [Name]
**Details**: [First Last] | [Title] | [Company] | [LinkedIn URL]
**Personalization Found**:
- **Type**: [Congratulations/Observation/Shared/etc.]
- **Source**: [LinkedIn post / Company news / Funding round / etc.]
- **Date**: [When this happened]
- **Context**: [Brief description of what you found]
**Option 1 (Direct)**:
> "Hi [First Name], congrats on [specific achievement]! I noticed [additional observation]. [Transition to value prop]"
**Option 2 (Question)**:
> "[First Name], I saw [specific thing]. Curious - are you [question related to their situation]?"
**Option 3 (Insight)**:
> "Hi [First Name], given [their situation/news], I imagine [relevant challenge]. [Transition to value prop]"
**Confidence Score**: [High/Medium/Low]
- High: Recent, specific, highly relevant
- Medium: Relevant but older, or less specific
- Low: Generic personalization, may not resonate
---
### Prospect #2: [Name]
[Repeat structure for each prospect]
---
## Personalization by Type
### Congratulations
Prospects with recent achievements, funding, promotions, or launches. First line pattern:
> "Congrats on [specific event]! With that kind of [growth/change], [likely pain point you solve]..."
### Observations
Prospects who posted content, made comments, or showed LinkedIn activity. First line pattern:
> "Loved your take on [topic]. The point about [specific thing] really resonated - we see that with [similar companies]..."
### Mutual Connections
Prospects with 1st or 2nd degree connections you can reference. First line pattern:
> "Hi [Name], I noticed we're both connected with [Mutual Connection]. [Context]. Thought I should reach out about [topic]..."
### Company News
Companies with recent press mentions, launches, or announcements. First line pattern:
> "[Name], saw [Company] is [news event]. That kind of [change] usually creates [specific challenge you solve]..."
### Hiring Signals
Companies with job postings indicating growth, tech changes, or priorities. First line pattern:
> "Noticed you're hiring [X+ roles]. Scaling that fast usually creates [specific problem you solve]..."
### Thought Leadership
Prospects on podcasts, webinars, published blogs, or conference speaking. First line pattern:
> "Really enjoyed your [content type] on [topic]. Your point about [specific insight] was spot-on..."
---
## No Personalization Found — Fallback Strategies
**Role-Based**: "Hi [Name], most [job titles] I talk to are dealing with [common pain point]. Is that on your radar?"
**Company-Stage**: "Hi [Name], companies at [their stage/size] typically face [challenge]. How are you handling [specific aspect]?"
**Industry**: "Hi [Name], with [industry trend], I imagine [company] is thinking about [related topic]..."
**Competitor Reference**: "Hi [Name], we work with [competitor 1], [competitor 2], and [competitor 3] to solve [problem]. Worth a conversation?"
使用说明
步骤 1:上传潜在客户名单
提供包含以下至少信息的 CSV 或名单:
- 名字、姓氏、职位、公司名称
- LinkedIn URL(如有)、电子邮箱(如有)
可选:公司网站、行业、公司规模、所在地
步骤 2:指定偏好
个性化风格(选择 1-3 项):祝贺 | 观察 | 共同联系人 | 公司新闻 | 招聘信号 | 思想领导力
语气:专业 | 随意 | 直接 | 顾问式
避免:超过 [X] 天的内容 | 个人信息 | 敏感话题
步骤 3:审核并自定义
- 审核前 10 条个性化内容,并根据需要调整语气
- 标记任何感觉“不对劲”的内容
- 添加公司特定背景信息并修改 CTA
步骤 4:导出并使用
格式:包含个性化列的 CSV | 用于 Outreach/Salesloft 的合并字段 | 单封邮件草稿
工作流:生成 → 上传为自定义字段 → 在序列的第 1 个位置使用 → 按类型跟踪回复率 → 加大投入到效果好的做法
性能基准
| 指标 | 通用冷邮件 | 个性化邮件 |
|---|---|---|
| 回复率 | 1-3% | 8-15% |
| 提升幅度 | 基准 | 提升 5-10 倍 |
耗时:人工每位潜在客户 5-10 分钟,AI 每位潜在客户 10-30 秒 = 每 100 位潜在客户节省 8-16 小时
质量门槛:目标是达到 70% 以上的独特个性化内容。低于 50% 时,考虑更换潜在客户名单。
最佳实践
- 混合使用不同的个性化方式:不要对所有人都只用 LinkedIn 帖子
- 保持自然:读起来应该像是你当面会说的话
- 定期更新:随着新闻和动态变化,每 30 天刷新一次
- 跟踪有效做法:记录哪些类型针对不同角色的回复效果最好
- 重质不重量:100 条精心个性化的内容 > 500 条通用内容
- 别让人觉得被跟踪:如果感觉像是在跟踪对方,就跳过
- 不要造假:明明没访问过对方的网站,却说“我看了你的网站”
- 务必核实:手动抽查前 10 条个性化内容
常见用例
触发语句:
- “为 300 位潜在客户定制外联内容”
- “为我的潜在客户名单生成独特的开场白”
- “为这些 LinkedIn 个人资料寻找个性化切入点”
- “研究这 500 家公司和潜在客户”
响应方式:
- 导入潜在客户名单(CSV 或手动输入)
- 通过多个来源研究每位潜在客户
- 为每位潜在客户找出最佳个性化切入点
- 为每位潜在客户生成 2-3 条开场白选项
- 提供置信度评分和备用选项
- 按要求的格式导出
请记住:好的个性化内容应该让人觉得你确实研究过对方,因为你(或 AI)确实这么做了!
<self_healing>
partial = 已交付部分内容,但某个阶段出现降级:Apollo 或 Clay 调用在重试后仍失败(继续使用其他来源,增加备用开场白),Gate S 返回了 documentationGap([spec unverified]),Brand MCP 不可用([brand check skipped]),或 Gmail 配额导致草拟中止(剩余行保留在 CSV 中)。error = 无法解析输入名单,或 qualify_lead 不可用(在任何研究开始前停止)。按 ~/.claude/skills/epiphan-house-rules-skill/reference/self-healing.md 中的流程处理:重试一次 → 降级并添加标记 → 告知 Tim → 停止。每次运行向 ~/.claude/skill-runs/personalization-at-scale-skill.jsonl 写入一行 JSON。
</self_healing>
输出结果旁文件
作为最后一步,写入 ~/.claude/skill-analytics/last-outcome-personalization-at-scale-skill.json:
{"ts":"[UTC ISO8601]","skill":"personalization-at-scale-skill","version":"<frontmatter version>","variant":"default",
"status":"[success|partial|error]","runtime_ms":[estimated ms from start],
"metrics":{"prospects_in":[n],"excluded_by_qualify":[n],"prospects_personalized":[n],"first_lines_generated":[n],"avg_confidence_pct":[n],"sources_used":[n],"brand_errors_fixed":[n],"spec_unverified":[n]},
"error":null,"session_id":"[YYYY-MM-DD]"}
如果某些阶段失败但已生成结果,使用状态“partial”;error 必须注明阶段。仅当未生成任何输出时才使用“error”。