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 の説明
質問: 「あなたの理想的な顧客プロファイル (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、プロダクト、インフラ、データ、RevOps、CS、エンジニアリングなど)
- シニアリティ: IC、シニア IC、マネージャー、ディレクター、VP、C レベル
- 責任の強調: 支配的なモードを分類します:
- 火消し: "安定化"、"修正"、"ダウンタイム削減"、"ブロック解除"
- 新規構築: "ゼロから構築"、"0→1"、"グリーンフィールド"、"設計と実装"
- 最適化: "スケール"、"最適化"、"効率改善"、"自動化"
- 置き換え: "レガシーの置き換え"、"〜からの移行"、"最新化"
- 要件の表現: 意図を示すキーワードに注目: "初のX採用"、"重要な役割"、"即時"、"必須"
- ツール/スタックのヒント: ユーザーの製品領域と重複する特定のツール、プラットフォーム、またはテクノロジーカテゴリへの参照
企業ごとにグループ化します。 同じ企業から複数の投稿がある場合は、それらのシグナルをまとめてグループ化します。
「X 件の投稿から Y 社にわたるシグナルを抽出しました。」と明記します。
ステップ 4: LLM でスコアリング
完全なスコアリングモデルについては、references/scoring-rubric.md を参照してください。
LLM リクエストを構築します:
cat > /tmp/pain-map-score-request.json << 'ENDJSON'
{
"system_instruction": {
"parts": [{
"text": "あなたは、採用シグナルを購入者の意図に変換することに特化した GTM アナリストです。提供された各アカウントについて、3 つの側面をスコアリングし、企業のコンテキストを推測します。ルール: (1) すべてのスコアには、1 文の平文による説明を含める必要があります。(2) signal_strength は、採用シグナルがユーザーの製品領域にどれだけ多く、具体的であるかを測定します。(3) urgency は、採用ニーズがどれだけ時間に敏感であるかを測定します。(4) icp_fit は、企業がユーザーの ICP の説明にどれだけ適合しているかを測定します。(5) 各スコアは 1〜10 です。(6) overall_score = round((0.4 * signal_strength + 0.3 * urgency + 0.3 * icp_fit) * 10)。(7) ジョブの文言から buy_vs_build を推測します。次のラベルのいずれかを正確に使用してください: 'Leaning build'、'Leaning buy'、'Hybrid (buy-and-build)'、'Unknown'。(8) 企業の手がかり (資金調達段階、従業員数、企業タイプ) から stage_guess を推測します。(9) 有効な JSON のみを出力します。"
}]
},
"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 — それぞれスコアと説明付き)、stage_guess、buy_vs_build_guess
ステップ 5: ペインマップの構築
各アカウントについて、抽出されたシグナルと LLM スコアリングコンテキストを使用して、購入者のペインマップを構築します。
cat > /tmp/pain-map-analysis-request.json << 'ENDJSON'
{
"system_instruction": {
"parts": [{
"text": "あなたは、求人情報を読み、企業が経験している運営上のペインを特定する B2B ペインアナリストです。ルール: (1) すべてのペインには、短いラベル、1〜3 文の説明、および裏付けとなる証拠として求人投稿から引用された具体的なフレーズが必要です。(2) ペインをプライマリ (ユーザーの製品に直接関連する) またはセカンダリ (実際のペインだが製品に関連しない) に分類します。(3) 投稿が一般的すぎて特定のペインを推測できない場合は、明示的にその旨を述べてください — でっち上げないでください。(4) 各アカウントについて、1〜3 の推奨アウトリーチ角度も生成します。各角度には: angle_name (短い)、narrative (リードする方法について 1〜2 文)、および talk_track_bullets (2〜4 の具体的なトーキングポイント) があります。(5) アウトリーチ角度は、特定のペインと証拠を参照する必要があり、一般的なバリュープロップではありません。禁止ワード: synergy、leverage、innovative、cutting-edge、best-in-class、world-class、game-changing、disruptive、seamless、robust、comprehensive、revolutionize、transform、streamline。(6) 有効な JSON のみを出力します。"
}]
},
"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 文のまとめ
key_pain: 最も実行可能な単一のペインを 1 文で
suggested_personas: このペインを最も抱えている可能性が高い 2〜4 の役職
tone: 推奨されるアウトリーチのトーンを説明する 1 文
ハンドオフは、誰かがアウトリーチシーケンスビルダーのプロンプトに貼り付けて、アカウントを再調査せずに使用可能なシーケンスを取得できるほど具体的である必要があります。
ステップ 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) - 購入対構築ラベルが次のいずれかである: "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: 出力と保存
人間が読める出力
以下の形式で完全な分析を提示します:
## 購入者ペインマップ — [YYYY-MM-DD]
**製品:** [概要からの製品名]
**分析済みの投稿:** Y 社にわたる X 件の投稿
**焦点:** [pipeline / positioning / both]
---
### [会社名] — スコア: [N]/100
**見出し:** [採用内容が明らかにすることを 1 行でまとめたもの]
| 側面 | スコア | 説明 |
|-----------|-------|-------------|
| シグナル強度 | N/10 | [1 文] |
| 緊急性 | N/10 | [1 文] |
| ICP 適合度 | N/10 | [1 文] |
**ステージ:** [ステージの推測] | **購入対構築:** [姿勢ラベル]
#### プライマリペイン
- **[ペインラベル]:** [1〜3 文の説明]
- 証拠: "[求人投稿からの引用フレーズ]"
#### セカンダリペイン
- **[ペインラベル]:** [1〜3 文の説明]
- 証拠: "[求人投稿からの引用フレーズ]"
#### 推奨アウトリーチ角度
1. **[角度名]:** [ナラティブ]
- [箇条書き 1]
- [箇条書き 2]
- [箇条書き 3]
#### ハンドオフ → outreach-sequence-builder
> **概要:** [2〜3 文]
> **主要なペイン:** [1 文]
> **推奨ペルソナ:** [リスト]
> **トーン:** [1 文]
---
[全体的なスコアの降順で、会社ごとに繰り返します]
ファイルに保存
mkdir -p docs/pain-maps
OUTFILE="docs/pain-maps/$(date +%Y-%m-%d).md"
cat > "$OUTFILE" << 'EOF'
REPORT_CONTENT_HERE
EOF
echo "ペインマップが $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 の議論に現れるペインテーマを相互参照します。