mcpField
N
network-scan

network-scan

github.com/proficientlyjobs生産性439116 回インストール33 週間前に更新
リポジトリ

network-scan について

network-scan は、LinkedIn の知人がいる企業で、プロフィールや希望条件に合う求人を調べる Proficiently のスキルです。採用ページの URL をキャッシュして結果を記録し、後続の検索や紹介依頼に役立てます。

主な機能

  1. 01最近または全連絡先の企業を検索
  2. 02採用ページの URL を7日間キャッシュ
  3. 03プロフィールと希望条件で求人を照合
  4. 04求人の適合度を評価して記録
  5. 05適合度の高い求人情報を保存

活用シーン

  1. 01人脈のある企業の求人を探す
  2. 02週次の求職活動で候補求人を確認
  3. 03紹介を頼める連絡先を見つける

MCP 対応

ワークフローではブラウザー MCP ツールを使って採用ページや求人情報を確認します。

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/proficientlyjobs/proficiently-claude-skills --skill network-scan

インストール後、Claude Code で/network-scanを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

README.md
scripts/
evaluate-company.md
resolve-careers.md

詳細

ネットワークスキャンスキル

優先順位の階層:競合を解決する際は、shared/references/priority-hierarchy.md を参照してください。

知り合いがいる企業で、自分に合った職種の求人があるか積極的に確認します。初回の実行時に、企業の採用ページの URL のキャッシュを作成します。以降の実行ではキャッシュを再利用するため、週次の確認をすばやく行えます。

クイックスタート

  • /proficiently:network-scan - 最近の連絡先 25 件に含まれる企業をスキャンします
  • /proficiently:network-scan 50 - 最近の連絡先 50 件を確認します
  • /proficiently:network-scan all - すべての連絡先を確認します(1500 件以上の場合、時間がかかることがあります)

ファイル構成

scripts/
  resolve-careers.md     # Subagent for resolving a batch of company careers URLs
  evaluate-company.md    # Subagent for scanning a batch of companies' open roles

ユーザーデータ(~/.proficiently/ に保存):

~/.proficiently/
  resume/                # Your resume PDF/DOCX
  preferences.md         # Job matching rules
  profile.md             # Work history from interview
  linkedin-contacts.csv  # LinkedIn contacts export
  company-careers.json   # Cached company careers URLs
  network-scan-history.md # Running log of scan results
  jobs/                  # Per-job application folders

ワークフロー

ステップ 0:前提条件を確認する

データディレクトリを特定し、shared/references/prerequisites.md に従って前提条件を確認します。履歴書、設定、linkedin-contacts.csv がすべて必要です。

以降のステップで使用するため、次のファイルを読み込みます。

  • DATA_DIR/preferences.md(希望職種、必須条件、避けたい条件、あると望ましい条件)
  • DATA_DIR/resume/*(候補者のプロフィール)
  • DATA_DIR/profile.md(職歴。存在する場合)
ステップ 1:連絡先を選択して企業を抽出する

$ARGUMENTS を解析します。

  • 数字(例:50)の場合:連絡先の上限として使用します
  • all の場合:すべての連絡先を使用します(200 件を超える場合は時間がかかる可能性があることをユーザーに警告します)
  • 空または未指定の場合:既定値の 25 を使用します

~/.proficiently/linkedin-contacts.csv を読み込みます。「Connected On」を降順(新しいものから)に並べ替えます。上限に基づいて、先頭から N 件の連絡先を取得します。

選択した連絡先から重複のない企業名を抽出します。名前が空または空白の企業は除外します。

企業ごとに連絡先をまとめ、次の検索用データを作成します。

{
  "Google": [{"name": "Jane Smith", "position": "PM Director", "url": "https://linkedin.com/in/janesmith"}, ...],
  "Stripe": [{"name": "John Doe", "position": "Eng Manager", "url": "https://linkedin.com/in/johndoe"}]
}

ユーザーに次のように報告します:「Y 件の連絡先から、重複のない企業が X 社見つかりました。採用ページを確認しています……」

ステップ 2:採用ページを特定する(並列処理)

~/.proficiently/company-careers.json が存在する場合は、キャッシュとして読み込みます。存在しない場合は、空のオブジェクトから開始します。

企業を次の 3 グループに分けます。

  • キャッシュ済み(新しい):last_checked が過去 7 日以内 - そのまま使用し、作業は不要です
  • キャッシュ済み(古い):last_checked が 7 日より前 - 再確認が必要です
  • 未キャッシュ:キャッシュにない、または type が "not_found" で古い - 一から特定する必要があります

次のように報告します:「キャッシュから X 社、特定が必要な企業が Y 社です……」

サブエージェントを使った並列特定:

特定が必要な企業(古いキャッシュ済み + 未キャッシュ)をすべて取得し、10 社ずつのバッチに分けます。Task ツール(subagent_type: "general-purpose")を使って、バッチごとにサブエージェントを 1 つ起動します。すべてのバッチを並列実行します。

各サブエージェントには次の情報を渡します。

  • 特定対象の企業名のバッチ
  • scripts/resolve-careers.md の指示

各サブエージェントは WebSearch(ブラウザーではありません)を使って採用ページを検索します。

  1. 検索:"[Company Name]" careers jobs site:[company domain if known]
  2. 検索結果から、採用・求人ページの URL を特定します
  3. URL の種類を分類します。
    • "direct" - 企業独自の採用ページ(例:careers.google.com)
    • "greenhouse" - Greenhouse ATS(boards.greenhouse.io/company または company.greenhouse.io)
    • "lever" - Lever ATS(jobs.lever.co/company)
    • "workday" - Workday ATS(company.wd5.myworkdayjobs.com)
    • "other_ats" - その他の ATS プラットフォーム(Ashby、BambooHR など)
    • "not_found" - 採用ページが見つからない(careers_url を null に設定)
  4. バッチの結果を返します

すべてのサブエージェントの結果を集めてキャッシュに統合します。~/.proficiently/company-careers.json に保存します。形式:

{
  "Company Name": {
    "careers_url": "https://careers.example.com",
    "type": "direct",
    "last_checked": "YYYY-MM-DD",
    "last_found_roles": 0
  }
}

進捗を次のように報告します:「新たに X 件の採用ページを特定しました。Y 件はキャッシュから取得し、Z 件は見つかりませんでした。」

ステップ 3:該当する求人をスキャンする(並列処理)

有効な careers_url がある企業をすべて対象にします(not_found と ignored のエントリは除外します)。企業を 5 社ずつのバッチに分けます。

Task ツール(subagent_type: "general-purpose")を使用して、サブエージェントを並列で起動します。ブラウザーに負荷をかけすぎないよう、最大 5 つのサブエージェントで、すべてのバッチを並列実行します。

各サブエージェントには、次の情報を渡します。

  • 企業のバッチ(名前、careers_url、ATS タイプ、ネットワーク上の連絡先)
  • 候補者のプロフィール概要(履歴書から)
  • 希望条件(希望職種、必須条件、避けたい条件、あるとうれしい条件)
  • scripts/evaluate-company.md の指示

各サブエージェントは次の処理を行います。

  1. 独自のブラウザータブを作成します(tabs_context_mcp の後に tabs_create_mcp を実行)。
  2. バッチ内の各企業について、次の処理を行います。 a. 採用ページに移動します。 b. 希望職種とキーワードに合致する職種を検索または閲覧します。 c. ATS のページでは、プラットフォームの検索・絞り込み機能を使用します。
    • Greenhouse:検索ボックスまたは部門フィルター
    • Lever:検索バーまたはチームフィルター
    • Workday:キーワード検索フィールド
    • 直接掲載/その他:ページを閲覧し、検索機能があれば使用して、掲載されている職種を確認します。 d. 求人情報を抽出します:職種名、勤務地、URL e. 各求人情報をスコアリングします(適合度の基準に従って High/Medium/Low/Skip)。 f. 適合度が High と Medium の求人のみを返します。
  3. バッチ全体の結果を返します。

適合度のスコアリング基準: 標準定義については shared/references/fit-scoring.md を参照してください。

すべてのサブエージェントから結果を収集します。スキャンした各企業のキャッシュ内の last_found_roles 件数を更新します。

サブエージェントが失敗またはタイムアウトした場合は、処理中だった企業を記録して続行します。再試行はしないでください。ユーザーは次回、その企業を指定して再実行できます。

ステップ 4:結果を保存する

company-careers.json を更新します: スキャンしたすべての企業について、last_checked と last_found_roles を更新します。

~/.proficiently/network-scan-history.md に追記します:

ファイルが存在しない場合は、次の内容で作成します。

# Network Scan History

This file tracks all network scans run by the `/network-scan` skill.

---

次に、以下を追記します。

## YYYY-MM-DD - Network Scan (N contacts, M companies)

| Company | Contact | Role Found | Fit | URL |
|---------|---------|------------|-----|-----|
| Google | Jane Smith (PM Director) | Sr. Product Manager | High | https://... |
| Stripe | John Doe (Eng Manager) | No matching roles | - | - |

表には、一致した企業と一致しなかった企業の両方を含め、スキャンしたすべての企業を記載します。

適合度が High の求人票を保存します: 適合度が High の求人ごとに、求人掲載 URL に移動し、完全な求人票を標準形式で ~/.proficiently/jobs/[company-slug]-[YYYY-MM-DD]/posting.md に保存します。

# [Job Title] - [Company Name]

**Company**: [Company]
**Location**: [Location]
**Salary**: [Salary or N/A]
**Type**: [Type]
**Source**: network-scan
**Date Found**: YYYY-MM-DD
**Network Contact**: [Contact Name] ([Position]) - [LinkedIn URL]

## About the Role
[Description]

## Key Requirements
- [requirement]

## Direct Careers Page
- [URL]

## Fit Assessment
**Rating**: [High/Medium]
**Why**: [explanation]
ステップ 5:結果を提示する

紹介を依頼できる連絡先情報を添えて、適合度別に求人をまとめて表示します。

## Network Scan Results - YYYY-MM-DD
Scanned N companies from M contacts.

### Matches Found

#### 1. Senior Product Manager at Google
- **Fit**: High
- **Your contact**: Jane Smith (PM Director) - [LinkedIn](url)
- **Location**: Mountain View, CA
- **Apply**: https://careers.google.com/jobs/...
- **Why**: [brief match reason]

#### 2. Strategy Lead at Stripe
- **Fit**: Medium
- **Your contact**: John Doe (Eng Manager) - [LinkedIn](url)
- **Location**: Remote
- **Apply**: https://stripe.com/jobs/...
- **Why**: [brief match reason]

### Companies Checked (No Matches)
Google (3 open roles, none matching), Stripe (0 open roles), ...

### Companies Without Careers Pages
Acme Corp, Small Startup LLC, ...

すべての企業で一致する求人が見つからなかった場合:

## Network Scan Results - YYYY-MM-DD
Scanned N companies from M contacts. No matching roles found this time.

### Companies Checked
[List with role counts]

### Companies Without Careers Pages
[List]

Try again next week, or expand your search: `/proficiently:network-scan 100`

最後に、以下を記載します。

To tailor a resume: /proficiently:tailor-resume [job URL]
To write a cover letter: /proficiently:cover-letter [job URL]

Built by Proficiently. Want someone to find jobs, tailor resumes,
apply, and connect you with hiring managers? Visit proficiently.com
ステップ 6:フィードバックから学習する

結果を確認した後、ユーザーからフィードバックがあった場合:

  • 「Skip [company]」:その企業の company-careers.json エントリに "ignored": true を追加します。今後のスキャンでは除外されます。
  • 採用 URL の訂正:キャッシュのエントリを正しい URL とタイプで更新します。
  • 希望条件の調整:それに応じて ~/.proficiently/preferences.md を更新します(例:「あるとうれしい条件にフィンテックを追加」「暗号資産企業は対象外」)。

応答形式

ユーザー向けの出力は、次のセクションで構成します。

  1. ネットワーク上の求人 — 適合度が High/Medium の求人を、企業名、職種、適合度、連絡先名、応募 URL とともに一覧表示します。
  2. 確認した企業 — 一致する求人がなかった企業と、採用ページが見つからなかった企業の概要を示します。
  3. 次のステップ — 上位の求人について、/proficiently:tailor-resume と /proficiently:cover-letter の利用を提案します。

必要な権限

~/.claude/settings.json に追加します。

{
  "permissions": {
    "allow": [
      "Read(~/.claude/skills/**)",
      "Read(~/.proficiently/**)",
      "Write(~/.proficiently/**)",
      "Edit(~/.proficiently/**)",
      "mcp__claude-in-chrome__*"
    ]
  }
}

コメント