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] 件の見込み客向けのアウトリーチをパーソナライズして」または「見込み客リスト用の独自の最初の一文を生成して」 入力: First Name、Last Name、Title、Company、LinkedIn URL(あればメールアドレス)を含む CSV またはリスト 出力: 見込み客ごとに 2〜3 個の最初の一文の候補と信頼スコア。レビュー用 CSV として ~/.claude/skill-state/personalization-at-scale/<date>.csv(デフォルト)に、または Tim がドラフトを求めた場合は Gmail の下書きとして納品 — 送信は決して行いません。

ツールの順序(バッチの仕組みはステージ R):

  1. qualify_lead(Epiphan AI)を連絡先ごとに — 調査の前にリスト全体でゲート 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 を 1 回(ゲート S)。
  4. get_writing_style を 1 回、続いて check_my_copy を一文ずつバッチで(ゲート B)。
  5. 納品: レビュー用 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、その後配信

  1. ゲート S: いずれかの行で Epiphan の製品や機能に言及している場合は、ユースケースごとに search_product_catalog を 1 回実行して引用します。documentationGap → その主張を削除するか [spec unverified] と記載し、ステータスは partial(ステージ: spec)とします。
  2. ゲート B: 実行ごとに get_writing_style を 1 回実行します。その後、生成された行に対して約 40 行ずつのバッチで check_my_copy を実行します(20,000 文字の制限を超えないようにしてください)。配信前にすべてのエラーを修正します。Brand MCP がダウンしている場合は、ファイル / ドラフトの先頭に [brand check skipped] を付け、partial(ステージ: brand)とします。
  3. 配信(ゲート 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. Congratulations - 最近の成果や発表
  2. Observation - 相手の会社 / 役職について気づいた具体的なこと
  3. Shared Interest - 共通のつながり、興味、経験
  4. Insight - 相手の状況に関連する業界トレンド
  5. Question - 課題へのアプローチについて尋ねる
  6. Compliment - 相手の仕事 / コンテンツへの心からの称賛
  7. 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% 未満 = 別の見込み客リストを検討してください。


ベストプラクティス
  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 の呼び出しがリトライ後に失敗した(他のソースで続行し、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」を使用してください。

コメント