mcpField
S
salary-market-scanner

salary-market-scanner

github.com/tinyfish-io生産性2.3k40 回インストール1 週間前に更新
リポジトリ

salary-market-scanner について

salary-market-scanner は、職種と勤務地に応じて求人サイトや給与データベースから報酬情報を集める調査スキルです。事前に TinyFish の環境を確認し、地域に合った複数の情報源をまとめます。

主な機能

  1. 01求人サイトと給与データベースの収集
  2. 02職種と勤務地別の給与調査
  3. 03複数情報源のデータ統合
  4. 04職種や勤務地の表記ゆれへの対応
  5. 05通貨間の給与換算

活用シーン

  1. 01地域ごとの職種別給与の比較
  2. 02リモート職の給与範囲の確認
  3. 03特定企業の報酬調査
  4. 04現在の給与水準の競争力確認

インストール

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

$npx skills add https://github.com/tinyfish-io/tinyfish-cookbook --skill salary-market-scanner

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

詳細

給与市場スキャナー

求人サイトや給与データベースをリアルタイムでスクレイピングし、あらゆる職種・勤務地の実際の報酬データを見つけます。古い調査データではなく、企業が現在実際に掲載し、支払っている金額を調べます。

実行前の確認(必須)

TinyFish を呼び出す前に、必ず両方の確認を実行してください。

1. CLI がインストールされていますか?

which tinyfish && tinyfish --version || echo "TINYFISH_CLI_NOT_INSTALLED"

インストールされていない場合は、停止して次のようにユーザーに伝えてください。

TinyFish CLI をインストールしてください:npm install -g @tiny-fish/cli

2. 認証済みですか?

tinyfish auth status

認証されていない場合は、停止して次のようにユーザーに伝えてください。

TinyFish API キーが必要です。こちらから取得してください:https://agent.tinyfish.ai/api-keys

次に、認証してください。

tinyfish auth login

両方の確認に合格するまで、先に進まないでください。


ステップ 1 — 入力情報を収集する

次の情報が必要です。

  • 職種・役割 — 例:Senior Software Engineer、ML Engineer、Product Designer、DevOps Engineer
  • 勤務地 — 例:London、Singapore、San Francisco、Remote
  • 経験年数(任意)— 例:3-5 years、senior、entry level
  • 特定の企業(任意)— ユーザーが特定の企業の給与を知りたい場合

勤務地が指定されていない場合は、先に進む前に確認してください。給与データは市場によって大きく異なります。


ステップ 2 — 給与を並行してスキャンする

すべてのエージェントを同時に実行します。情報源は勤務地によって異なるため、最も関連性の高いものを含めてください。

# Agent 1 — Levels.fyi (best for tech roles, especially US/global big tech)
tinyfish agent run \
  --url "https://www.levels.fyi/t/{ROLE_SLUG}/?country={COUNTRY}" \
  "You are on Levels.fyi showing compensation data for {ROLE} in {LOCATION}.
   Extract:
   - Median total compensation
   - Base salary range (p25 to p75)
   - Bonus range
   - Stock/equity range (if shown)
   - Sample size (number of data points)
   - Top companies listed and their compensation ranges
   - Any breakdown by years of experience if visible
   STRICT RULES:
   - Do NOT click any company or individual entry
   - Read only the aggregate data visible on the page
   - If no data for this location, return {found: false, reason: 'no data for location'}
   Return JSON: {found: bool, median_total, base_p25, base_p75, bonus_range, equity_range, sample_size, top_companies: [{company, base, total}], yoe_breakdown: []}" \
  --sync > /tmp/sal_levels.json &

# Agent 2 — Glassdoor salaries
tinyfish agent run \
  --url "https://www.google.com/search?q=glassdoor+{ROLE_ENCODED}+salary+{LOCATION_ENCODED}+site:glassdoor.com/Salaries" \
  "You are on Google search results. Find the most relevant Glassdoor salary page for {ROLE} in {LOCATION} and click it.
   On the Glassdoor salary page extract:
   - Median base salary
   - Salary range (low to high)
   - Number of salary reports
   - Additional pay (bonus, profit sharing) range if shown
   - Top companies paying for this role if listed
   STRICT RULES:
   - Click only the first Glassdoor salary result
   - Do NOT click any other links after landing on Glassdoor
   - Read only the aggregate salary data visible on the page
   - If the page asks you to sign in, extract whatever is visible before the gate
   Return JSON: {median_base, salary_low, salary_high, report_count, additional_pay_range, top_companies: [{company, salary}]}" \
  --sync > /tmp/sal_glassdoor.json &

# Agent 3 — LinkedIn Jobs (extract posted salary ranges from active listings)
tinyfish agent run \
  --url "https://www.linkedin.com/jobs/search/?keywords={ROLE_ENCODED}&location={LOCATION_ENCODED}&f_SB2=1&sortBy=DD" \
  "You are on LinkedIn job search results for {ROLE} in {LOCATION}, filtered to show salary information, sorted by date.
   For each job listing card visible on the page:
   - Click into the listing to open the job detail panel on the right
   - Look for the salary range in the detail panel (often shown near the top under the job title)
   - Extract: job title, company name, salary range, employment type
   - Go back to the listing and repeat for the next one
   STRICT RULES:
   - Only extract listings that show an explicit salary — skip those without
   - Maximum 10 listings then stop
   - Do NOT navigate away from the search results page
   Return JSON array: [{title, company, salary_range, employment_type}]" \
  --sync > /tmp/sal_linkedin.json &

# Agent 4 — Indeed salaries
tinyfish agent run \
  --url "https://www.indeed.com/career/{ROLE_INDEED}/salaries?from=top_sb&l={LOCATION_ENCODED}" \
  "You are on Indeed's salary page for {ROLE} in {LOCATION}.
   Extract:
   - Average base salary
   - Salary range (low to high)
   - Number of salary reports
   - Salary by experience level (if shown: entry, mid, senior)
   - Top paying companies for this role (if listed)
   STRICT RULES:
   - Do NOT click any links
   - Read only the aggregate data on this page
   Return JSON: {average_salary, salary_low, salary_high, report_count, by_experience: [{level, salary}], top_companies: [{company, salary}]}" \
  --sync > /tmp/sal_indeed.json &

wait

echo "=== LEVELS ===" && cat /tmp/sal_levels.json
echo "=== GLASSDOOR ===" && cat /tmp/sal_glassdoor.json
echo "=== LINKEDIN ===" && cat /tmp/sal_linkedin.json
echo "=== INDEED ===" && cat /tmp/sal_indeed.json

実行する前に、以下を置き換えてください。

  • {ROLE} — 人が読みやすい職種名。例:Senior Software Engineer
  • {ROLE_ENCODED} — URL エンコードした職種名。例:Senior%20Software%20Engineer
  • {ROLE_SLUG} — Levels.fyi のスラッグ。例:software-engineer
  • {ROLE_INDEED} — Indeed 形式の職種名。例:software-engineer
  • {LOCATION} — 例:London、Singapore
  • {LOCATION_ENCODED} — URL エンコードした勤務地。例:London%2C%20England
  • {COUNTRY} — Levels.fyi 用の国コード。例:GB、SG、US

ステップ 3 — 市場の全体像をまとめる

すべての情報源のデータを統合し、全体の給与レンジを算出します。

## Salary Market Report — {ROLE} · {LOCATION}

*Live data scraped from Levels.fyi, Glassdoor, LinkedIn, and Indeed*
*{date} · Based on {N} total data points*

---

### 💰 Compensation Summary

| | Low | Median | High |
|---|---|---|---|
| **Base Salary** | {low} | {median} | {high} |
| **Total Comp** (incl. bonus/equity) | {low} | {median} | {high} |

> All figures in {CURRENCY}. "Total comp" includes base + annual bonus + annualized equity where data is available.

---

### 📊 By Experience Level

| Level | Typical Base |
|---|---|
| Entry (0-2 yrs) | {range} |
| Mid (3-5 yrs) | {range} |
| Senior (6+ yrs) | {range} |
| Staff / Principal | {range} |

*(Skip levels where no data was found)*

---

### 🏢 What Companies Are Posting

From active LinkedIn job listings with disclosed salaries:

| Company | Role | Posted Range |
|---|---|---|
| {company} | {title} | {range} |

---

### 🏆 Top Paying Companies

*(From Levels.fyi and Glassdoor)*
| Company | Median Base | Median Total |
|---|---|---|
| {company} | {base} | {total} |

---

### 📈 Market Signals

{2-3 sentences on what the data says about this market — is it competitive, is there a wide spread, are companies being transparent about pay?}

---

### 🔍 Data Sources
- Levels.fyi: {sample_size} data points / not found
- Glassdoor: {report_count} salary reports / not found  
- LinkedIn: {N} active listings with disclosed salaries
- Indeed: {report_count} salary reports / not found

例外ケース

  • Levels.fyi にこの勤務地のデータがない — Glassdoor と Indeed を中心にし、Levels.fyi は米国の大手テック企業に偏っていることを注記します
  • 職種名が一般的でない — よく使われる別の表現を試します(例:「ML Engineer」→「Machine Learning Engineer」、「AI Engineer」)
  • 勤務地が小都市 — 国全体または最寄りの主要都市に対象を広げ、変更したことを注記します
  • リモート職 — ユーザーの国と米国市場の両方をスクレイピングし、両方を提示します(リモート求人では米国の給与レンジが使われることがよくあります)
  • テック以外の職種 — テック職のみを対象とする Levels.fyi は除外し、Glassdoor と Indeed を利用します
  • 給与が異なる通貨で表示されている — 現地通貨に換算し、使用した換算レートを注記します
  • 自分の給与が競争力のある水準かユーザーが尋ねている — データを提示した後、現在の給与を尋ね、率直に評価します

コメント