採用LLMOの「最初の一手」であり、費用対効果が最も分かりやすいのが、この JobPosting です。人間向けの求人本文とは別に、機械が確実に読めるデータを1ブロック足すだけ。それだけで、Googleしごと検索の枠に載る資格が生まれ、AIが「給与は?勤務地は?」に自社の求人で答えられるようになります。
01JobPostingで何が起きるか
JobPosting は、schema.org が定める「求人情報」を表す構造化データです。求人ページの <head> か本文末に JSON-LD として設置すると、主に2つの効果があります。
- Googleしごと検索(Google for Jobs)に掲載される——検索結果内の求人専用ボックスに、無料で表示される資格が得られます。
- AI検索・生成AIが求人を正確に参照できる——給与・勤務地・雇用形態が構造化されているほど、AIは誤解なく引用します。
02必須プロパティ
Googleしごと検索に掲載されるには、最低限これらが必要です。1つでも欠けると「掲載対象外」になります。
| プロパティ | 区分 | 内容 |
|---|---|---|
| title | 必須 | 職種名。「〇〇(雇用形態)」等を含めた具体的な名称(会社名は入れない)。 |
| description | 必須 | 仕事内容・要件。HTMLタグ可(<p><ul><br>)。本文と同等の情報量を。 |
| datePosted | 必須 | 掲載日。2026-07-01 形式。 |
| hiringOrganization | 必須 | 採用企業。name と、可能なら sameAs(公式サイトURL)。 |
| jobLocation | 必須 | 勤務地の address。※完全リモートは 05章の書き方に置換。 |
03推奨プロパティ
無くても掲載はされますが、入れるほどAIにも人にも“伝わる求人”になります。特に baseSalary と validThrough は必ず入れてください。
| プロパティ | 区分 | 内容 |
|---|---|---|
| baseSalary | 強く推奨 | 給与レンジ。未記載は警告が出ます。年収なら unitText:"YEAR"。AIが最も聞かれる項目。 |
| validThrough | 強く推奨 | 募集終了日。2026-12-31 形式。過去日にすると掲載が消えるので注意。 |
| employmentType | 推奨 | FULL_TIME / PART_TIME / CONTRACTOR / INTERN 等。 |
| identifier | 推奨 | 社内の求人ID。同一求人の重複判定に効きます。 |
| jobLocationType | 条件付 | 完全リモートのとき TELECOMMUTE(05章)。 |
04コピペできる完全テンプレート
必須+推奨を入れた実戦版です。<head> 内、または求人本文の直後に貼り、値だけ差し替えてください。
<script type="application/ld+json">
{
"@context": "https://schema.org/",
"@type": "JobPosting",
"title": "Webエンジニア(自社サービス開発)",
"description": "<p>自社プロダクトの開発を担当。</p><ul><li>必須:実務3年</li><li>歓迎:AWS</li></ul>",
"identifier": {
"@type": "PropertyValue",
"name": "株式会社サンプル",
"value": "ENG-2026-01"
},
"datePosted": "2026-07-01",
"validThrough": "2026-12-31T23:59",
"employmentType": "FULL_TIME",
"hiringOrganization": {
"@type": "Organization",
"name": "株式会社サンプル",
"sameAs": "https://example.com",
"logo": "https://example.com/logo.png"
},
"jobLocation": {
"@type": "Place",
"address": {
"@type": "PostalAddress",
"streetAddress": "西本町1-4-1",
"addressLocality": "大阪市西区",
"addressRegion": "大阪府",
"postalCode": "550-0005",
"addressCountry": "JP"
}
},
"baseSalary": {
"@type": "MonetaryAmount",
"currency": "JPY",
"value": {
"@type": "QuantitativeValue",
"minValue": 4000000,
"maxValue": 7000000,
"unitText": "YEAR"
}
}
}
</script>
05リモート求人の書き方
完全リモートの求人は、jobLocation の代わりに jobLocationType と applicantLocationRequirements(応募できる国・地域)を使います。これが無いと、リモート求人がGoogleに正しく認識されません。
"jobLocationType": "TELECOMMUTE",
"applicantLocationRequirements": {
"@type": "Country",
"name": "JP"
},
※ 出社もあるハイブリッド勤務は、jobLocationType は付けず、通常どおり jobLocation にオフィス住所を書きます。
06よくあるエラーと対処
SPA(React/Vue/Nuxt等)で本文やJSON-LDが後から挿入されると、クローラに空に見えます。対処:SSRか静的HTMLでマークアップを返す。採用LLMO全体でも最重要の注意点です。
募集終了日を過ぎると掲載が消えます。空欄も推奨違反。対処:未来日を必ず設定し、募集継続なら日付を更新。
掲載自体は可能ですが警告が出ます。対処:レンジで良いので必ず記載。AIにも人にも効く最重要項目。
1〜2行だけ、本文と乖離、はNG。対処:仕事内容・必須/歓迎要件をHTMLタグ込みで、本文と同等の情報量に。
重複は評価を分散させます。対処:正規URLに canonical を張り、identifier で同一求人を明示。
07実装後の検証手順
貼って終わりにせず、必ず機械の目で確認します。
- リッチリザルトテストで構文チェックGoogleの「リッチリザルト テスト」に求人URLを入れ、JobPostingが検出され、エラー0・警告最小かを確認。
- スキーマ検証ツールで型を確認schema.org の Validator(validator.schema.org)で、プロパティの型崩れがないかを見ます。
- Search Consoleの「求人情報」レポートで追跡掲載後、GSCの拡張レポート「求人情報(Job posting)」で有効数・エラー数を定点観測。エラーが出たら該当URLを修正して再検証。
08WordPress・自社サイトでの入れ方
WordPress の場合
プラグインを増やしたくない場合は、テーマの functions.php で求人ページ(カスタム投稿など)にだけ JSON-LD を出力するのが軽量です。カスタムフィールドに給与・勤務地を持たせ、テンプレート側で差し込みます。求人系プラグインやSEOプラグイン(Yoast等)の求人機能を使う手もあります。
静的HTML・自社CMSの場合
求人詳細ページのテンプレートに <script type="application/ld+json"> を1つ足し、各求人のデータを差し込むだけです。サーバー側でHTMLに埋め込んで返すことだけ守れば、実装は数十分で済みます。