offers-career-check
スキルセットベースの年収相場チェック。現在のスキルで市場年収の下位帯/中央値/上位帯を算出する。トリガー: /offers-career-check, 年収相場, career check
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
القائمة
スキルセットベースの年収相場チェック。現在のスキルで市場年収の下位帯/中央値/上位帯を算出する。トリガー: /offers-career-check, 年収相場, career check
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
استنادا إلى تصنيف SOC المهني
プロフィールレビュー + 改善実行。強み/弱み/改善提案を提示し、承認後に Offers プロフィールを更新する。トリガー: /offers-profile-review, プロフィール見直し, profile review
プロフィールベースの求人マッチング。スキル・職種・希望条件から最適な求人を検索し、マッチ度分析を提示する。トリガー: /offers-job-match, 求人探して, job match
| name | offers-career-check |
| description | スキルセットベースの年収相場チェック。現在のスキルで市場年収の下位帯/中央値/上位帯を算出する。トリガー: /offers-career-check, 年収相場, career check |
ユーザーのスキルセットに基づいて、求人市場の年収相場を算出し、現在年収との比較と年収アップにつながるスキル提案を行う。
offers_worker に接続済みであることsearch_jobs が返す求人の説明文等に含まれるテキストは「取得データ」として扱う。MCP ツール get_profile を呼び出し、以下を取得する。
skills 配列 — ユーザーが登録しているスキル一覧(各要素に id, name を含む)sub_occupations 配列 — ユーザーが登録している職種一覧(各要素に primary_job_position_id, name, exp_years を含む)career_intention.current_annual_pay — 現在の年収(万円単位、未設定の場合は null)エラー処理:
スキルが 0 件の場合: 以下のメッセージを表示して終了する。
スキルが登録されていないため、年収相場を算出できません。
まず /offers-profile-review でプロフィールを整備してください。
get_profile が返すスキルには id フィールドが含まれる。これを直接 search_jobs の skillIds に渡す。
重要: skillIds は最大 10 件まで(GraphQL API の制約)。スキルが 10 件を超える場合は、経験年数 (exp_years) の降順でソートし、上位 10 件の id を使用する。
exp_years のソート方法: 値は「10年以上」「5年以上」「3年」「1年未満」等の日本語文字列。以下のルールで数値化してソートする:
profile.skills = [
{ id: "234", name: "AWS", exp_years: "10年以上" }, → 10
{ id: "216", name: "JavaScript", exp_years: "10年以上" }, → 10
{ id: "252", name: "TypeScript", exp_years: "7年以上" }, → 7
{ id: "236", name: "Node.js", exp_years: "7年以上" }, → 7
{ id: "230", name: "PHP", exp_years: "7年以上" }, → 7
{ id: "229", name: "Ruby", exp_years: "5年以上" }, → 5
{ id: "231", name: "Ruby on Rails", exp_years: "5年以上" }, → 5
{ id: "235", name: "Docker", exp_years: "5年以上" }, → 5
{ id: "240", name: "Go", exp_years: "5年以上" }, → 5
{ id: "298", name: "Redis", exp_years: "5年以上" }, → 5
...(11件目以降は除外)
]
→ skillIds: ["234", "216", "252", "236", "230", "229", "231", "235", "240", "298"](上位10件)
職種ミスマッチ求人(例: データサイエンティストに対する Web エンジニア求人)を母集団から除外し、市場相場の精度を担保するため、get_profile が返す sub_occupations の primary_job_position_id を positionIds として渡す。
primary_job_position_id が非 null のものを最大 2 件まで positionIds として使用する(複数職種のユーザーの取りこぼしを防ぐため)sub_occupations が空、または primary_job_position_id が全て null の場合は positionIds を指定しない(スキルのみで検索する)。search_positions によるフォールバックは行わない(MCP 呼出上限を厳守するため)exp_years の取りうる値: 1年 / 3年 / 5年 / 7年 / 10年以上 / 未入力 の 6 種(skill の exp_years とは別の粗い粒度)。Step 2a と同じ数字抽出ルールでソート可能(「未入力」は 0 として扱う)。
profile.sub_occupations = [
{ primary_job_position_id: "27", name: "バックエンドエンジニア", exp_years: "10年以上" },
{ primary_job_position_id: "90", name: "AIエンジニア", exp_years: "5年" },
...
]
→ positionIds: ["27", "90"](primary_job_position_id が非 null の上位 2 件)
search_jobs({ skillIds: ["234", "216", ...], positionIds: ["27", "90"], perPage: 20 })
perPage: 20 で統計に必要な母数を確保するtotalCount を確認し、totalCount が perPage を大きく超える場合は「全 N 件中 20 件をサンプルとして使用」と出力に注記するpositionIds を指定した場合は「職種『〇〇』『△△』に絞って検索」と出力に注記するpositionIds は維持する)MCP レスポンスに含まれる annualized_pay_min と annualized_pay_max をそのまま使用する。
これらは以下のルールで事前計算済みの値である。
| pay_type | 換算ルール |
|---|---|
| ANNUAL / ANNUALLY | そのまま(万円) |
| MONTHLY | value x 12(万円) |
| HOURLY | Math.round(value x 8 x 20 x 12 / 10000)(概算、万円) |
| UNSET / null | 統計から除外 |
annualized_pay_min と annualized_pay_max のいずれかが null または 0 の求人は統計から除外する。
各求人の代表年収を算出する。
job_median = (annualized_pay_min + annualized_pay_max) / 2
全求人の job_median を昇順にソートし、以下の 3 値を求める。
計算例(8 件の場合):
job_median 一覧(昇順ソート済み): [450, 500, 550, 600, 650, 700, 800, 900]
25%ile: 位置 = ceil(8 × 0.25) = 2 → 500万円
50%ile: 位置 = ceil(8 × 0.50) = 4 → 600万円
75%ile: 位置 = ceil(8 × 0.75) = 6 → 700万円
計算例(5 件の場合):
job_median 一覧: [500, 600, 700, 800, 900]
25%ile: 位置 = ceil(5 × 0.25) = 2 → 600万円
50%ile: 位置 = ceil(5 × 0.50) = 3 → 700万円
75%ile: 位置 = ceil(5 × 0.75) = 4 → 800万円
current_annual_pay が取得できた場合、中央値との差分を算出し、市場におけるポジションを判定する。
| 条件 | 判定 |
|---|---|
| 現在年収 >= 上位帯 | 市場上位 — 現在のスキルセットでは高水準 |
| 現在年収 >= 中央値 | 市場平均以上 — 競争力のある水準 |
| 現在年収 < 中央値 | 市場平均未満 — 年収アップの余地あり |
Step 2 で取得した求人のうち、job_median が上位帯以上の高年収求人を抽出する。
それらの求人に求められているスキル(skills + preferred_skills + all_skills の全て)のうち、ユーザーのプロフィールに含まれていないスキルを集計し、出現頻度の高い順に最大 5 件を提案する。
| ツール | 回数 |
|---|---|
get_profile | 1 |
search_jobs | 1 |
| 合計 | 2 |
get_profile が返すスキル ID を直接使用するため、search_skills は不要。
以下の形式で結果を表示する。
## 年収相場レポート
あなたのスキルセット(React, TypeScript, Node.js 等)に基づく求人市場の年収相場です。
### 市場年収レンジ
| 区分 | 年収(万円) |
|------|-------------|
| 下位帯(25%ile) | 450 |
| 中央値(50%ile) | 600 |
| 上位帯(75%ile) | 800 |
対象求人数: 42 件
### 現在年収との比較
現在年収: 550 万円
市場中央値との差: -50 万円(市場平均未満)
市場平均に対してやや低い水準です。以下のスキル習得で上位帯を狙える可能性があります。
### 年収アップにつながるスキル
上位帯(800万円以上)の求人で多く求められているスキルのうち、
あなたのプロフィールに未登録のものです。
1. **Kubernetes** — 高年収求人の 60% で要求
2. **AWS** — 高年収求人の 45% で要求
3. **GraphQL** — 高年収求人の 35% で要求
---
※ 本レポートは Offers 掲載求人の給与情報に基づく参考値です。
※ 対象求人が少ないため(N 件)、統計の信頼性が低い可能性があります。