linkedin-job-post-to-buyer-pain-map について
linkedin-job-post-to-buyer-pain-mapは、B2Bチーム向けにLinkedInの求人情報を分析し、企業レベルの課題を整理、アカウントを評価して根拠のあるアプローチ案を提示するスキルです。アウトリーチシーケンス作成用の構造化された引き継ぎ情報も作成します。
主な機能
- 01求人情報からシグナルを抽出
- 02シグナル、緊急度、ICP適合度を評価
- 03課題を求人文中の引用に結び付け
- 04根拠に基づくアプローチ案を提示
- 05構造化されたアウトリーチ用情報を作成
活用シーン
- 01採用シグナルで優先アカウントを選定
- 02アカウントベースの営業準備
- 03ポジショニング向けに顧客表現を収集
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ varnan-tech/ opendirectory --skill linkedin-job-post-to-buyer-pain-mapインストール後、Claude Code で/linkedin-job-post-to-buyer-pain-mapを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
.env.exampleREADME.mdevals/evals.jsonreferences/examples.mdscoring-rubric.md詳細
LinkedIn の求人投稿からバイヤーの課題マップを作成
LinkedIn の求人投稿を入力すると、スコア、課題、アプローチの切り口を含む、構造化されたバイヤーの課題マップを作成します。
重要なルール: 推定する課題にはすべて、その根拠となる求人情報の具体的な表現を引用してください。テキストに根拠のない課題を決して捏造しないでください。投稿の内容が一般的すぎて課題を推定できない場合は、その旨を明確に伝え、シグナル強度のスコアを低く設定してください。
倫理的なルール: 候補者の個人属性や保護対象の特性を推定しないでください。企業レベルの業務上の課題と組織のニーズにのみ焦点を当ててください。
ステップ 1:セットアップの確認
必須の環境変数を確認します。
echo "GEMINI_API_KEY: ${GEMINI_API_KEY:+set}"
GEMINI_API_KEY が設定されていない場合: 停止し、ユーザーに次のように伝えてください。「GEMINI_API_KEY が必要です。aistudio.google.com で取得し、.env ファイルに追加してください。」
ステップ 2:入力情報の収集
このスキルには必須入力が 3 つあります。先に収集してください。
2a:製品概要
次のように尋ねます。「製品について 2~5 文で説明してください。何を提供しているか、中核となる価値提案は何か、誰をターゲットにしているかを教えてください。」
ユーザーがプロンプト内ですでに説明している場合: 内容を抽出し、次のように確認します。「製品概要を取得しました:[要約]。」
2b:ICP の説明
次のように尋ねます。「理想的な顧客像を 2~6 個の箇条書きで説明してください。業界、企業規模、販売対象の職種、テックスタックに関するヒントを含めてください。」
ユーザーがプロンプト内ですでに説明している場合: 内容を抽出し、次のように確認します。「ICP を取得しました:[要約]。」
2c:求人情報
次のように尋ねます。「分析する求人情報を貼り付けてください。各投稿には、企業名、職種名、説明文の全文を含めてください。1~15 件を貼り付けられます。」
対応形式:
- 企業名と職種名が明確に記載された、貼り付けたテキスト
- 次のフィールドを含む構造化された JSON オブジェクト:
company_name、job_title、location(任意)、seniority(任意)、team_or_function(任意)、job_description_text、job_url(任意) - 明確な区切り(--- または番号付き)で分けられた複数の投稿
フィールドが不足している場合: 説明文から推定できるものは推定してください。company_name または job_description_text が不足している場合は、処理を進める前にユーザーに確認してください。
2d:任意の入力
ユーザーが次のいずれかを提供した場合は、取得してください。
account_notes:企業ごとの追加情報(資金調達、テックスタック、既知のツール、連絡先)focus_dimension:「pipeline」(スコアリングと優先順位付けを重視)、「positioning」(メッセージの切り口を重視)、または「both」(デフォルト)
ステップ 3:シグナルの抽出
各求人投稿について、解析して次の情報を抽出します。
- チーム/機能: この職種はどのチームに属していますか?(GTM、Product、Infra、Data、RevOps、CS、Engineering など)
- シニアリティ: IC、Senior IC、Manager、Director、VP、C-level
- 責任範囲の重点: 中心となる業務形態を分類します。
- 火消し:「安定化する」「修正する」「ダウンタイムを削減する」「障害を解消する」
- 新規構築:「ゼロから構築する」「0→1」「グリーンフィールド」「設計して実装する」
- 最適化:「スケールさせる」「最適化する」「効率を改善する」「自動化する」
- 置き換え:「レガシーを置き換える」「~から移行する」「モダナイズする」
- 要件の表現: 意図を示すキーワードを記録します:「初の X 担当者」「重要な職務」「即時」「必須」
- ツール/スタックのヒント: ユーザーの製品領域と重なる、具体的なツール、プラットフォーム、または技術カテゴリへの言及
企業ごとにグループ化します。 同じ企業の投稿が複数ある場合は、そのシグナルをまとめてください。
次のように伝えます。「X 件の投稿から、Y 社分のシグナルを抽出しました。」
ステップ 4:LLM によるスコアリング
スコアリングモデルの全容は references/scoring-rubric.md を読んで確認してください。
LLM へのリクエストを作成します。
cat > /tmp/pain-map-score-request.json << 'ENDJSON'
{
"system_instruction": {
"parts": [{
"text": "You are a GTM analyst who specializes in decoding hiring signals into buyer intent. For each account provided, you will score three dimensions and infer company context. Rules: (1) Every score must include a one-sentence plain-text explanation. (2) signal_strength measures how many and how specific the hiring signals are relative to the user's product area. (3) urgency measures how time-sensitive the hiring need appears. (4) icp_fit measures how closely the company matches the user's ICP description. (5) Each score is 1-10. (6) overall_score = round((0.4 * signal_strength + 0.3 * urgency + 0.3 * icp_fit) * 10). (7) Infer buy_vs_build from job language. Use EXACTLY one of these labels: 'Leaning build', 'Leaning buy', 'Hybrid (buy-and-build)', 'Unknown'. (8) Infer stage_guess from company clues: funding stage, employee count, company type. (9) Output valid JSON only."
}]
},
"contents": [{
"parts": [{
"text": "SCORING_CONTEXT_HERE"
}]
}],
"generationConfig": {
"temperature": 0.2,
"maxOutputTokens": 4096
}
}
ENDJSON
curl -s -X POST \
"https://generativelanguage.googleapis.com/v1beta/models/gemini-2.0-flash:generateContent?key=$GEMINI_API_KEY" \
-H "Content-Type: application/json" \
-d @/tmp/pain-map-score-request.json \
| python3 -c "import sys,json; d=json.load(sys.stdin); print(d['candidates'][0]['content']['parts'][0]['text'])"
SCORING_CONTEXT_HERE を次の内容に置き換えます。
- ステップ 2 の製品概要と ICP の説明
- ステップ 3 で抽出した企業ごとのシグナル
references/scoring-rubric.mdのスコアリングルール- 次の項目を含む JSON を出力する指示:
company_name、headline、overall_score、score_breakdown(signal_strength、urgency、icp_fit。それぞれに score と explanation を含む)、stage_guess、buy_vs_build_guess
ステップ 5:ペインマップを作成する
各アカウントについて、抽出したシグナルと LLM のスコアリングコンテキストを使って、購買者のペインマップを作成します。
cat > /tmp/pain-map-analysis-request.json << 'ENDJSON'
{
"system_instruction": {
"parts": [{
"text": "You are a B2B pain analyst who reads job descriptions and identifies the operational pains a company is experiencing. Rules: (1) Every pain must have a short label, a 1-3 sentence description, and specific phrases quoted from the job post as supporting evidence. (2) Classify pains as primary (directly relevant to the user's product) or secondary (real pain but tangential to the product). (3) If a post is too generic to infer specific pain, state that explicitly — do not hallucinate. (4) For each account, also generate 1-3 recommended outreach angles. Each angle has: angle_name (short), narrative (1-2 sentences on how to lead), and talk_track_bullets (2-4 concrete talking points). (5) Outreach angles must reference specific pains and evidence, not generic value props. No banned words: synergy, leverage, innovative, cutting-edge, best-in-class, world-class, game-changing, disruptive, seamless, robust, comprehensive, revolutionize, transform, streamline. (6) Output valid JSON only."
}]
},
"contents": [{
"parts": [{
"text": "ANALYSIS_CONTEXT_HERE"
}]
}],
"generationConfig": {
"temperature": 0.4,
"maxOutputTokens": 8192
}
}
ENDJSON
curl -s -X POST \
"https://generativelanguage.googleapis.com/v1beta/models/gemini-2.0-flash:generateContent?key=$GEMINI_API_KEY" \
-H "Content-Type: application/json" \
-d @/tmp/pain-map-analysis-request.json \
| python3 -c "import sys,json; d=json.load(sys.stdin); print(d['candidates'][0]['content']['parts'][0]['text'])"
ANALYSIS_CONTEXT_HERE を次の内容に置き換えます。
- 製品概要と ICP の説明
- 各企業の求人情報(全文)
- ステップ 4 のスコアとコンテキスト
- 提供されている場合は、アカウントに関するメモ
focus_dimensionの設定(pipeline/positioning/both)- アカウントごとに
buyer_pain_map(primary_pains、secondary_pains)とrecommended_outreach_anglesを出力する指示
references/examples.md を読み、期待される出力の品質と詳しさを把握します。
ステップ 6:ハンドオフオブジェクトを作成する
各アカウントについて、outreach-sequence-builder がそのまま利用できる構造化されたハンドオフブロックを生成します。
handoff:
for_outreach_sequence_builder:
account_summary: 2-3 sentence recap of the company's situation and hiring context
key_pain: The single most actionable pain in one sentence
suggested_personas: 2-4 job titles of the people most likely to own this pain
tone: One sentence describing the recommended outreach tone
ハンドオフは、アカウントについて再調査しなくても、誰かが outreach-sequence-builder のプロンプトに貼り付けて、実用的なシーケンスを作成できるだけの具体性を備えている必要があります。
ステップ 7:セルフ QA
以下のチェック項目をすべて確認し、違反があれば修正してから提示します。
- 推測したすべてのペインに、求人情報からの具体的な表現を少なくとも 1 つ引用している
- シグナルの弱い一般的な求人情報(
signal_strength ≤ 3の投稿)について、ペインをでっち上げていない - 3 つのスコア(signal_strength、urgency、icp_fit)すべてに、1 文で説明を付けている
- 総合スコアが次の計算式と一致している:
round((0.4 × signal + 0.3 × urgency + 0.3 × icp_fit) × 10) - Buy-vs-build のラベルが次のいずれかである:"Leaning build"、"Leaning buy"、"Hybrid (buy-and-build)"、"Unknown"
- アウトリーチの切り口に、禁止語が含まれていない:synergy、leverage、innovative、cutting-edge、best-in-class、world-class、game-changing、disruptive、seamless、robust、comprehensive、revolutionize、transform、streamline
- 各アウトリーチの切り口に、一般的な価値提案ではなく、2〜4 個のトークポイントがある
- ICP の対象外であるアカウントには、優先度を下げる明確な推奨を付けている
- ハンドオフオブジェクトに 4 つのフィールド(account_summary、key_pain、suggested_personas、tone)がすべて含まれている
- 候補者の個人的な属性や保護対象の特性を推測していない
- 複数の投稿が同じ企業のものである場合、企業ごとに投稿をまとめている
提示する前に、違反があれば修正します。
ステップ 8:出力して保存する
人が読める形式で出力する
次の形式で分析全体を提示します。
## Buyer Pain Map — [YYYY-MM-DD]
**Product:** [product name from brief]
**Posts analyzed:** X posts across Y companies
**Focus:** [pipeline / positioning / both]
---
### [Company Name] — Score: [N]/100
**Headline:** [one-line summary of what the hiring reveals]
| Dimension | Score | Explanation |
|-----------|-------|-------------|
| Signal Strength | N/10 | [one sentence] |
| Urgency | N/10 | [one sentence] |
| ICP Fit | N/10 | [one sentence] |
**Stage:** [stage guess] | **Buy-vs-Build:** [posture label]
#### Primary Pains
- **[Pain label]:** [1-3 sentence description]
- Evidence: "[quoted phrase from job post]"
#### Secondary Pains
- **[Pain label]:** [1-3 sentence description]
- Evidence: "[quoted phrase from job post]"
#### Recommended Outreach Angles
1. **[Angle name]:** [narrative]
- [bullet 1]
- [bullet 2]
- [bullet 3]
#### Handoff → outreach-sequence-builder
> **Summary:** [2-3 sentences]
> **Key pain:** [one sentence]
> **Suggested personas:** [list]
> **Tone:** [one sentence]
---
[repeat for each company, ordered by overall_score descending]
ファイルに保存する
mkdir -p docs/pain-maps
OUTFILE="docs/pain-maps/$(date +%Y-%m-%d).md"
cat > "$OUTFILE" << 'EOF'
REPORT_CONTENT_HERE
EOF
echo "Pain map saved to $OUTFILE"
複数の企業を分析した場合は、企業名をスラッグ化した名前(小文字にし、スペースと特殊文字をハイフンに置き換え、末尾のハイフンを削除)で個別のファイルも保存します。
例:"ACME, Inc." → acme-inc.md、"CoolStartup Inc" → coolstartup-inc.md
SLUG=$(echo "COMPANY_NAME" | tr '[:upper:]' '[:lower:]' | sed 's/[^a-z0-9]/-/g' | sed 's/--*/-/g' | sed 's/-$//')
cat > "docs/pain-maps/${SLUG}.md" << 'EOF'
INDIVIDUAL_ACCOUNT_CONTENT_HERE
EOF
使用する場面
- 貼り付けた 1〜15 件の求人情報から、各企業が抱えるペインを把握したい場合
- アカウントベースのアウトリーチを計画しており、シーケンスを作成する前に、構造化されたペイン分析が必要な場合
- 採用シグナルのあるアカウントのうち、最初にアプローチする対象を優先順位付けしたい場合
- PMM が、ポジショニングを改善するために、求人情報に含まれる実際のペインを表す言葉を求めている場合
使用しない場面
- 採用中の企業を見つける必要がある場合(代わりに
linkedin-hiring-intent-scannerまたはyc-intent-radar-skillを使います) - アウトリーチメッセージを作成する必要がある場合(代わりに
outreach-sequence-builderを使います。このスキルのハンドオフを渡してください) - シグナルを一定期間にわたってプラットフォーム上で監視する場合(代わりに
reddit-icp-monitorまたはtwitter-GTM-find-skillを使います) - 連絡先情報やメールアドレスの補完が必要な場合(このスキルでは対応しません)
相性のよいツール
- outreach-sequence-builder:シーケンスを作成するとき、
handoff.for_outreach_sequence_builderブロックをコンテキストとして直接渡します。 - noise-to-linkedin-carousel:主要なペインと根拠となる引用を、購買者の課題を扱うカルーセルの素材として使います。
- reddit-icp-monitor:求人情報から得たペインのテーマを、Reddit の議論で見られるペインのテーマと照らし合わせます。