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] 件の見込み客向けのアウトリーチをパーソナライズして」または「見込み客リスト用の独自の最初の一文を生成して」
入力: First Name、Last Name、Title、Company、LinkedIn URL(あればメールアドレス)を含む CSV またはリスト
出力: 見込み客ごとに 2〜3 個の最初の一文の候補と信頼スコア。レビュー用 CSV として ~/.claude/skill-state/personalization-at-scale/<date>.csv(デフォルト)に、または Tim がドラフトを求めた場合は Gmail の下書きとして納品 — 送信は決して行いません。
ツールの順序(バッチの仕組みはステージ R):
qualify_lead(Epiphan AI)を連絡先ごとに — 調査の前にリスト全体でゲート Q を実行します。apollo_organizations_enrich+apollo_organizations_job_postingsを一意の企業ごとに(採用 + 企業情報); ニュース / 技術スタックのギャップには Clayfind-and-enrich-company; 役割の変更にはapollo_people_match; 接続済みの場合はintent-signal-aggregator-skill。- いずれかの一文に Epiphan の機能に関する主張が含まれる場合は、ユースケースごとに
search_product_catalogを 1 回(ゲート S)。 get_writing_styleを 1 回、続いてcheck_my_copyを一文ずつバッチで(ゲート B)。- 納品: レビュー用 CSV、または見込み客ごとに Gmail
create_draft(ゲート 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、ポータル、メールアドレス、シート数)は、そのスキルの reference/identifiers.md から取得します — ここに再掲しないでください。
いずれかのゲートが失敗した場合は reference/self-healing.md に従い(再試行、フラグ付きで縮退、Tim へのアラート、停止)、/.claude/skill-runs/.jsonl に 1 行追記します。
</house_rules>
<success_criteria>
- 70% 以上の見込み客が、独自の具体的なパーソナライゼーションを発見できている
- 各最初の一文が最近(30〜60 日以内)で、役割に関連し、別の見込み客にコピー/ペーストできないものである
- すべての最初の一文に信頼スコア(High/Medium/Low)が付与されている
- パーソナライゼーションが見つからなかった見込み客向けのフォールバック戦略が提供されている
- すべての入力連絡先が調査前に
qualify_leadを通っている; 除外 / BTL / NEVER の件数が報告されている - 一文に含まれる Epiphan の機能に関する主張はゲート S に由来する; すべての一文が納品前に
check_my_copyを通っている - 出力が指定されたパスにレビュー用 CSV(または Gmail の下書き、送信はしない)として納品されている
- 結果のサイドカー + 実行ログの行が書き込まれている </success_criteria>
ステージ Q — qualify_lead ゲート(以前のインラインの Golden Rules と抑制ステージを置き換えます)
いかなる連絡先も調査またはパーソナライズする前に、mcp__claude_ai_Epiphan_Ai__qualify_lead(email、なければ name)をすべての行に対して writeToHubSpot: false で実行します。判定は、顧客 / デバイス所有者、チャネルパートナー、製品のみのエンゲージャー、AE 所有のアクティブ vs 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 が全リストを求めた場合のみパーソナライズする; それ以外は「優先度を下げた」としてリストする
- 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 が 1 回の再試行後も利用できない → 調査の前に停止し、Tim に伝え、ステータス error(ステージ: gate_q)。
ステージ R — リサーチ(配線済みツール、バッチ処理)
| ソース | ツール | バッチ処理の仕組み |
|---|---|---|
| 採用シグナル、企業情報 | apollo_organizations_enrich、apollo_organizations_job_postings(Apollo プラグイン) | 連絡先ごとではなく、一意のドメインごとに 1 回。実行中はドメイン単位でキャッシュ |
| 企業ニュース、資金調達、テックスタックの変化 | Clay find-and-enrich-company(データポイント: Latest Funding、Tech Stack、News) | Apollo がシグナルを返さなかったドメインのみ。Clay クレジットを消費 |
| 役職変更 / 昇進、在職期間 | apollo_people_match | 連絡先ごと。reveal_personal_emails: false |
| 過去の Epiphan との接触、参照アカウント | search_account_text、search_companies_by_description(Epiphan AI) | ドメインごと。Web 検索より前に Epiphan ネイティブのものを使用 |
| インテント / ページ訪問 | 配線済みの場合は intent-signal-aggregator-skill | ドメインごと |
| LinkedIn 投稿、ポッドキャスト、カンファレンス登壇 | Web 検索 | 上記のツールを使った後、ギャップのみ。最近(30~60 日以内)の情報がなければスキップ |
これらの結果から連絡先ごとに最適なアングルを選びます。ツールを情報源としたシグナルがない行には、フォールバック戦略(後述)と Low の信頼スコアを設定します。
ステージ G — ゲート S + ゲート B、その後配信
- ゲート S: いずれかの行で Epiphan の製品や機能に言及している場合は、ユースケースごとに
search_product_catalogを 1 回実行して引用します。documentationGap→ その主張を削除するか[spec unverified]と記載し、ステータスはpartial(ステージ: spec)とします。 - ゲート B: 実行ごとに
get_writing_styleを 1 回実行します。その後、生成された行に対して約 40 行ずつのバッチでcheck_my_copyを実行します(20,000 文字の制限を超えないようにしてください)。配信前にすべてのエラーを修正します。Brand MCP がダウンしている場合は、ファイル / ドラフトの先頭に[brand check skipped]を付け、partial(ステージ: brand)とします。 - 配信(ゲート 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 の具体的なツールに配線されています。クエリしていないソースについて説明しないでください。
パーソナライゼーションのスタイル
- Congratulations - 最近の成果や発表
- Observation - 相手の会社 / 役職について気づいた具体的なこと
- Shared Interest - 共通のつながり、興味、経験
- Insight - 相手の状況に関連する業界トレンド
- Question - 課題へのアプローチについて尋ねる
- Compliment - 相手の仕事 / コンテンツへの心からの称賛
- Problem Call-Out - 相手が経験していそうなペインポイントを指摘する
品質基準
良いパーソナライゼーション:
- 相手に固有でユニーク(他の誰かにコピー & ペーストできない)
- 最近のもの(理想的には過去 30~60 日以内)
- 相手の役職やビジネスに関連している
- 自然で会話的(気味の悪いストーカー的でない)
- 検証が容易(相手がその出来事を覚えている)
避けるべきこと:
- ありきたりな褒め言葉(「御社が大好きです!」)
- 偽のパーソナライゼーション(「御社の Web サイトを見ていて…」)
- 古い情報(6 か月以上前のもの)
- 相手が知られたくないであろう情報
- 明らかな自動化(「最近の LinkedIn 投稿を拝見しました」× 100)
出力フォーマット
# 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(ある場合)、メールアドレス(ある場合)
任意: 会社の Web サイト、業界、会社規模、所在地
ステップ 2: 好みを指定する
パーソナライズのスタイル(1~3 個選択): 祝福 | 観察 | 共通のつながり | 企業ニュース | 採用シグナル | ソートリーダーシップ
トーン: プロフェッショナル | カジュアル | 直接的 | コンサルティブ
避ける項目: [X] 日より古いもの | 個人情報 | センシティブなトピック
ステップ 3: レビューとカスタマイズ
- 最初の 10 件のパーソナライズをレビューし、必要に応じてトーンを調整する
- 「違和感がある」と感じたものにフラグを立てる
- 企業固有のコンテキストを追加し、CTA を変更する
ステップ 4: エクスポートと使用
フォーマット: パーソナライズ列を含む CSV | Outreach/Salesloft 用のマージフィールド | 個別のメール下書き
ワークフロー: 生成 → カスタムフィールドとしてアップロード → シーケンスのポジション 1 で使用 → タイプ別に応答率を追跡 → 効果のあるものに注力する
パフォーマンスベンチマーク
| 指標 | 一般的なコールドメール | パーソナライズあり |
|---|---|---|
| 応答率 | 1-3% | 8-15% |
| リフト | ベースライン | 5~10 倍の改善 |
時間: 手動で 1 見込み客あたり 5~10 分 vs AI で 1 見込み客あたり 10~30 秒 = 見込み客 100 人あたり 8~16 時間の削減
品質のしきい値: 独自のパーソナライズで 70% 以上を目指します。50% 未満 = 別の見込み客リストを検討してください。
ベストプラクティス
- パーソナライズのタイプを組み合わせる: 全員に LinkedIn の投稿だけを使うのは避ける
- 自然に保つ: 対面で言うように聞こえるべき
- 定期的に更新する: ニュースやアクティビティの変化に合わせて 30 日ごとにリフレッシュする
- 効果のあるものを追跡する: ペルソナ別にどのタイプが最も良い応答を得られるか記録する
- 量より質: 十分にパーソナライズされた 100 件 > 一般的な 500 件
- 気持ち悪くならないように: ストーカーっぽく感じるなら、スキップする
- 偽らない: 明らかに見ていないのに「あなたのウェブサイトを見ました」
- 常に検証する: 最初の 10 件のパーソナライズを手動でスポットチェックする
一般的なユースケース
トリガーフレーズ:
- 「300 人の見込み客へのアプローチをパーソナライズして」
- 「見込み客リスト用のユニークなファーストラインを生成して」
- 「これらの LinkedIn プロフィールのパーソナライズの切り口を見つけて」
- 「これらの 500 社と見込み客を調査して」
応答アプローチ:
- 見込み客リストを取り込む(CSV または手動入力)
- 複数のソースから各見込み客を調査する
- 見込み客ごとに最適なパーソナライズの切り口を特定する
- 見込み客ごとに 2~3 件のファーストライン候補を生成する
- 信頼スコアとフォールバックオプションを提供する
- 要求されたフォーマットでエクスポートする
覚えておいてください: 良いパーソナライズは、実際に調査したように感じられるべきです。なぜなら、あなた(または AI)が実際に調査したからです!
<self_healing>
partial = 行は配信されたが、あるステージが劣化した場合: Apollo または Clay の呼び出しがリトライ後に失敗した(他のソースで続行し、Fallback 行を増やす)、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 のラダー: 1 回リトライ → フラグ付きで劣化 → Tim に伝える → 停止。1 回の実行につき 1 行の JSON を ~/.claude/skill-runs/personalization-at-scale-skill.jsonl に出力します。
</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」を使用してください。