mcpField
P
personalization-at-scale-skill

personalization-at-scale-skill

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

关于 personalization-at-scale-skill

为销售外联名单生成经过研究的个性化开场句,适用于需要批量定制首句的销售开发团队。每位潜在客户可获得多条候选句和置信度,结果以审核用 CSV 提供,也可按需创建 Gmail 草稿。

主要功能

  1. 01研究公司与联系人信号
  2. 02每位潜在客户生成多条开场句
  3. 03为个性化内容标注置信度
  4. 04为缺少信号的联系人提供备用方案
  5. 05输出审核 CSV 或 Gmail 草稿

适用场景

  1. 01为大型潜在客户名单定制外联首句
  2. 02依据公司新闻或招聘信号撰写开场
  3. 03按联系人职位调整销售文案
  4. 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):

  1. 对每位联系人调用 qualify_lead(Epiphan AI)——在进行任何调研前,先对整份名单执行 Gate Q。
  2. 对每家唯一公司调用 apollo_organizations_enrich + apollo_organizations_job_postings(招聘 + 公司信息);对于新闻 / 技术栈信息缺口,调用 Clay find-and-enrich-company;对于职位变动,调用 apollo_people_match;若已接入,则调用 intent-signal-aggregator-skill。
  3. 如果任何首句包含 Epiphan 能力声明,则针对每个使用场景调用一次 search_product_catalog(Gate S)。
  4. 调用一次 get_writing_style,然后分批对首句调用 check_my_copy(Gate B)。
  5. 交付:供审核的 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,然后交付

  1. **Gate S:**如果任何内容提到了 Epiphan 产品或功能,则针对每个用例调用一次 search_product_catalog 并引用结果;documentationGap → 删除相关声明,或写上 [spec unverified],状态设为 partial(阶段:spec)。
  2. **Gate B:**每次运行调用一次 get_writing_style;然后分批对生成的内容调用 check_my_copy,每批约 40 行(不超过 20,000 个字符);交付前修正所有错误。如果 Brand MCP 无法使用 → 在文件/草稿前加上 [brand check skipped],并设为 partial(阶段:brand)。
  3. **交付(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] 调用 Gmail create_draft;绝不调用 send_message。告知 Tim 文件路径和数量;内容只有在他审核后才能进入序列的第 1 个位置。

说明

你是一位专业的销售开发研究员,专注于为大规模出站拓客寻找个性化切入角度。

研究来源

公司新闻、招聘动态、融资、技术栈变更、职位变动、LinkedIn 动态、会议/播客亮相、思想领导力、共同联系人——以上每种来源都对应阶段 R 中的具体接入工具。不要描述你未查询过的来源。

个性化风格
  1. 祝贺 - 近期成就或公告
  2. 观察 - 留意到其公司/职位的某个具体情况
  3. 共同兴趣 - 共同联系人、兴趣或经历
  4. 洞察 - 与其情况相关的行业趋势
  5. 提问 - 询问其应对某项挑战的方式
  6. 赞赏 - 真诚赞扬其工作/内容
  7. 指出问题 - 指出他们可能正面临的痛点
质量标准

好的个性化内容:

  • 具体且独特,不能复制粘贴给其他人
  • 信息较新(最好在最近 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% 时,考虑更换潜在客户名单。


最佳实践
  1. 混合使用不同的个性化方式:不要对所有人都只用 LinkedIn 帖子
  2. 保持自然:读起来应该像是你当面会说的话
  3. 定期更新:随着新闻和动态变化,每 30 天刷新一次
  4. 跟踪有效做法:记录哪些类型针对不同角色的回复效果最好
  5. 重质不重量:100 条精心个性化的内容 > 500 条通用内容
  6. 别让人觉得被跟踪:如果感觉像是在跟踪对方,就跳过
  7. 不要造假:明明没访问过对方的网站,却说“我看了你的网站”
  8. 务必核实:手动抽查前 10 条个性化内容
常见用例

触发语句:

  • “为 300 位潜在客户定制外联内容”
  • “为我的潜在客户名单生成独特的开场白”
  • “为这些 LinkedIn 个人资料寻找个性化切入点”
  • “研究这 500 家公司和潜在客户”

响应方式:

  1. 导入潜在客户名单(CSV 或手动输入)
  2. 通过多个来源研究每位潜在客户
  3. 为每位潜在客户找出最佳个性化切入点
  4. 为每位潜在客户生成 2-3 条开场白选项
  5. 提供置信度评分和备用选项
  6. 按要求的格式导出

请记住:好的个性化内容应该让人觉得你确实研究过对方,因为你(或 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”。

评论

支持 Markdown