Domain 58 / 225

JobPosting 構造化データは Google しごと検索への掲載権を獲得する

JobPosting schema の要点

JobPosting 構造化データは求人ページに実装すると Google しごと検索(Job Search 検索エクスペリエンス)に掲載される権利を得る。必須は title / description / datePosted / hiringOrganization / jobLocation など。Indexing API で即時通知が可能、求人終了時は validThrough を更新するか 410 で削除

なぜこれを学ぶか

JobPosting 構造化データは 求人媒体 / 自社採用ページで Google しごと検索からの応募流入を取れる主要施策。 Indeed や doda と並んで Google しごと検索が日本でも普及し、構造化データなしでは応募者からの可視性が低い。

人材会社・採用ページを持つ企業・求人媒体で必須。

学ばないと起きること

よくある事故被害
JobPosting なしで求人ページ公開Google しごと検索に出ない、応募流入の機会損失
給与(baseSalary)を書かない給与フィルタで検索されたときに弾かれる
validThrough を未指定で長期間放置古い求人が検索結果に残り続ける
終了求人を 410 / noindex にしない応募できない求人がいつまでも表示
Indexing API を知らず通常クロール待ち数日〜数週間のインデックス遅延

学ぶメリット

  • Google しごと検索への掲載でフィルタ検索の応募者を獲得
  • 求人終了の正しい処理を即実行できる
  • Indexing API で即時通知できる
  • 商談で「JobPosting の必須プロパティ」を即答できる

仕組み

必須プロパティ

プロパティ内容
title求人タイトル
description詳細説明(HTML 含む)
datePosted掲載日(ISO 8601)
hiringOrganization雇用主 Organization
jobLocation勤務地 Place(オフィス勤務の場合)
jobLocationTypeTELECOMMUTE(リモート時)

推奨プロパティ

プロパティ内容
validThrough掲載終了日
employmentType雇用形態(FULL_TIME / PART_TIME 等)
baseSalary給与情報
directApply直接応募可能か
applicantLocationRequirements応募者の居住地要件
identifier求人 ID

実装例

<script type="application/ld+json">
{
  "@context": "https://schema.org/",
  "@type": "JobPosting",
  "title": "シニア フロントエンド エンジニア",
  "description": "<p>Next.js / TypeScript の経験 3 年以上。SEO / AEO 関連プロダクトの開発...</p>",
  "identifier": {
    "@type": "PropertyValue",
    "name": "spotyou",
    "value": "JOB-2026-001"
  },
  "datePosted": "2026-05-10",
  "validThrough": "2026-08-10T23:59:59+09:00",
  "employmentType": "FULL_TIME",
  "hiringOrganization": {
    "@type": "Organization",
    "name": "spotyou",
    "sameAs": "https://spotyou.ai",
    "logo": "https://spotyou.ai/logo.png"
  },
  "jobLocation": {
    "@type": "Place",
    "address": {
      "@type": "PostalAddress",
      "streetAddress": "六本木 1-2-3",
      "addressLocality": "港区",
      "addressRegion": "東京都",
      "postalCode": "106-0032",
      "addressCountry": "JP"
    }
  },
  "baseSalary": {
    "@type": "MonetaryAmount",
    "currency": "JPY",
    "value": {
      "@type": "QuantitativeValue",
      "minValue": 6000000,
      "maxValue": 9000000,
      "unitText": "YEAR"
    }
  },
  "directApply": true
}
</script>

キー概念

employmentType の値

雇用形態
FULL_TIME正社員
PART_TIMEパート / アルバイト
CONTRACTOR業務委託
TEMPORARY派遣
INTERNインターン
VOLUNTEERボランティア
PER_DIEM日雇い
OTHERその他

baseSalary の指定

時給:

"baseSalary": {
  "@type": "MonetaryAmount",
  "currency": "JPY",
  "value": {
    "@type": "QuantitativeValue",
    "value": 1500,
    "unitText": "HOUR"
  }
}

月給範囲:

"baseSalary": {
  "@type": "MonetaryAmount",
  "currency": "JPY",
  "value": {
    "@type": "QuantitativeValue",
    "minValue": 250000,
    "maxValue": 400000,
    "unitText": "MONTH"
  }
}

unitText の値: HOUR / DAY / WEEK / MONTH / YEAR

リモートワークの指定

完全リモート:

"jobLocationType": "TELECOMMUTE"

特定地域からのみ応募可能なリモート:

"jobLocationType": "TELECOMMUTE",
"applicantLocationRequirements": {
  "@type": "Country",
  "name": "Japan"
}

ハイブリッド(一部出社)の場合は jobLocation で物理オフィスを指定し、description でリモート可能性を明記。

Indexing API での即時通知

公式: 求人系コンテンツは Indexing API で即時通知できる。

POST https://indexing.googleapis.com/v3/urlNotifications:publish
Content-Type: application/json

{
  "url": "https://example.com/jobs/job-001",
  "type": "URL_UPDATED"
}

通常のクロール待ち(数日〜数週間)を回避し、即座にインデックスされる。

求人終了時の処理

パターン対処
正常終了(応募締切)validThrough を過去日付に変更 + Indexing API 通知
採用充足求人ページを 410 Gone に + Indexing API で URL_DELETED 通知
一時停止(再開予定あり)validThrough を一時的に短く設定

掲載終了求人が Google しごと検索に残るとユーザー体験が悪化、ペナルティ対象になる。

よくある誤解

よくある誤解実際のところ出典
JobPosting 構造化データを入れれば必ず Google しごと検索に出る出る権利を得るだけ、品質判定もあるJobPosting 構造化データ
給与情報(baseSalary)は省略可推奨プロパティ、給与フィルタ検索で表示されない同上
終了求人も残しておけば Google が自動判定NG。validThrough 更新 / Indexing API / 410 が必要同上
jobLocation は文字列で住所を書けるPlace オブジェクト + PostalAddress で構造化同上
Indexing API は通常 SEO で使う公式に求人 / ライブ配信動画でのみ承認Indexing API
完全リモートの求人は jobLocation を空にjobLocationType: TELECOMMUTE を指定 + applicantLocationRequirements 推奨JobPosting 構造化データ
同じ求人を複数 URL で公開NG。重複扱いで Google しごと検索から外れる同上
description は短くシンプルにHTML を含む詳細説明が推奨、応募者の判断材料同上

実務での適用

求人ページのチェックリスト

  1. JobPosting 構造化データの必須プロパティ完備
  2. baseSalary(給与)を範囲または具体額で指定
  3. validThrough を必ず指定
  4. jobLocation を Place + PostalAddress で構造化
  5. Indexing API で即時通知
  6. 求人終了時は validThrough 更新 / 410 / Indexing API URL_DELETED

求人媒体の運用フロー

新規求人公開:
1. JobPosting 構造化データを実装
2. Indexing API で URL_UPDATED 通知
3. Search Console で「拡張」レポート確認

求人終了:
1. validThrough を過去日付に
2. Indexing API で URL_DELETED 通知
3. ページを 410 Gone または採用充足ページにリダイレクト

Search Console での監視

  • 「拡張」→「求人情報」レポートでエラー / 警告
  • 終了求人が残っていないか定期確認
  • インデックス状況とアクティブ求人数の整合

トラブル別の対処

症状確認すべきこと
Google しごと検索に出ないJobPosting の必須プロパティ / 品質ガイドライン違反
終了求人が残り続けるvalidThrough 更新 / Indexing API / 410 の実装
Search Console「拡張」エラーhiringOrganization / jobLocation の必須プロパティ確認
給与フィルタで表示されないbaseSalary の構造化データ完全性
検索順位が低い求人タイトル / 説明文の質、応募者向け価値の明示

公式ソース

自己テスト

Q1. JobPosting の必須プロパティは?

title / description / datePosted / hiringOrganization / jobLocation(または jobLocationType)

Q2. 給与情報(baseSalary)は省略可か?

技術的には省略可だが、推奨プロパティ。給与フィルタ検索に対応しないと応募者から見つけられない

Q3. リモートワークの正しい指定は?

jobLocationType: TELECOMMUTE + 必要に応じて applicantLocationRequirements で居住地要件

Q4. 終了した求人の正しい処理は?

validThrough を過去日付に更新 + Indexing API で URL_DELETED 通知 + ページを 410 Gone

Q5. Indexing API はどんな用途で使えるか?

公式に求人(JobPosting)とライブ配信動画(BroadcastEvent)のみ承認

Q6. 同じ求人を複数 URL で公開すると?

重複扱いで Google しごと検索から外れる。1 求人 1 URL を厳守

Q7. JobPosting の description は短くすべきか?

詳細に書く方が推奨。HTML を含む詳細説明が応募者の判断材料

Q8. employmentType の主な値は?

FULL_TIME / PART_TIME / CONTRACTOR / TEMPORARY / INTERN / VOLUNTEER

これらの内容を採点付きで挑戦したい場合は、本ドメインのプロ試験で 5 問形式で確認できる。