こんにちは、SEO分析ツール「アナトミー」開発チームの江頭です。
JobPosting型の構造化データをマークアップすると、Googleしごと検索に求人を掲載できます。無料でGoogleに掲載できるので、求人情報のSEO対策として、Googleしごと検索は欠かせません。
本記事では、HTML にGoogleしごと検索向けの構造化データを正しくマークアップする方法を詳しく説明します。
リッチリザルトについては、以下の記事を参考にしてください。
SEOの基本知識についてはオンラインセミナーで解説しています。セミナーではGoogle公式のSEOガイドであるGoogle検索セントラルの「Google検索の仕組み」と「スターターガイド」の内容を分かり易く解説します。これからSEOを始めようと考えている方は是非ご参加ください。
Googleしごと検索とは?
Googleしごと検索(Google for Jobs)とは、Googleで求人情報を検索したときに表示されるリッチリザルトの一つです。広告枠とWebサイト一覧の間に専用エリアとして表示されます。
たとえば、「薬剤師 求人」でGoogle検索すると、次のような結果が表示されます。
※当ページ内で掲載されている求人情報は、すべて説明のための架空の求人情報です。
各求人をクリックすると求人の詳細画面が表示されます。
Googleしごと検索への掲載方法
Googleしごと検索(Google for Jobs)に掲載するには、企業サイトに求人ページを作成し、構造化データを設置します。
Googleは、インターネット上のWebサイトから求人情報を自動的に集めているので、構造化データを設置することでGoogleしごと検索に掲載できます。
企業サイトに求人ページを追加する
まず、企業サイトやサービスサイトに求人情報のページを追加します。ページ内には、求人情報として以下を含めるようにします。
- 雇用形態
- 職種
- 仕事の内容
- 雇用主の会社名
- 勤務地
- 給与
求人ページに構造化データを追加する
求人ページの準備ができたら、ページ内にJobPosting型の構造化データを設置します。構造化データには、職種・勤務地・給与など求人の詳細情報が含まれていて、これらの情報がGoogleしごと検索にも使用されます。
構造化データは、求人情報を紹介する詳細画面のみに設置します。たとえば、企業サイトなら採用ページに設置します。
求人サイトの場合、検索結果ページやカテゴリページのようなページへJobPosting型の構造化データを設置してはいけません。
構造化データの書式
Googleは、JSON-JDとmicrodataの2つの書式に対応しています。
形式 | 説明 |
---|---|
JSON-LD | JSON形式でscriptタグとして記載する。 |
microdata | HTMLタグ上で項目に該当する場所に属性を追加する。 |
ただし、microdata形式は、ページに表示する内容と構造化データとして指定する内容が微妙に異なる場合に対応が難しくなってしまいます。 JSON-LD形式の方が柔軟に設定できるので、Googleも推奨しています。
この記事では、JSON-LD形式とmicrodata形式の両方を解説します。
JSON-LD形式の例
JSON-LD 形式では、構造化データを JSON 形式として、script タグ内に記載します。記載する場所は、head 内でも、body 内でも構いません。
以下は、架空の求人例です。
<script type="application/ld+json">
{
"@context": "http://schema.org",
"@type": "JobPosting",
"datePosted": "2020-10-15",
"validThrough": "2020-11-30",
"employmentType": "PART_TIME",
"title": "薬剤師"
,
"description": "代々木八幡駅より徒歩3分の薬局です。<br><br>【仕事内容】<br>店舗にて、調剤業務、薬歴管理などを行っていただきます。 ・・・",
"baseSalary" : {
"@type" : "MonetaryAmount",
"currency" : "JPY",
"value" : {
"@type" : "QuantitativeValue",
"value" : 1000,
"unitText" : "HOUR"
}
},
"hiringOrganization": {
"@type": "Organization",
"name": "株式会社〇〇〇〇〇",
"logo": "https://example.com/logo.png"
},
"jobLocation": {
"@type": "Place",
"address": {
"@type": "PostalAddress",
"postalCode": "151-0063",
"streetAddress": "富ヶ谷0-0-0",
"addressLocality": "渋谷区",
"addressRegion": "東京都",
"addressCountry": "JP"
}
}
}
</script>
microdata形式の例
microdata形式では、HTMLにitemtype属性やitemprop属性、itemscope属性を付与することで、構造化データの各情報を指定します。
employmentTypeのように、コンテンツに含まれることがない情報は、metaタグで指定します。
以下は、架空の求人例です。
<table itemscope itemtype="https://schema.org/JobPosting">
<tr>
<th>公開日</th>
<td itemprop="datePosted">2020-10-15</td>
</tr>
<tr>
<th>有効期限</th>
<td itemprop="validThrough">2020-11-30</td>
</tr>
<tr>
<th>職種</th>
<td itemprop="title">薬剤師</td>
</tr>
<tr>
<th>勤務形態</th>
<td>
アルバイト・パート
<meta itemprop="employmentType" content="PART_TIME">
</td>
</tr>
<tr>
<th>時給</th>
<td itemprop="baseSalary" itemscope itemtype="https://schema.org/MonetaryAmount">
<span itemprop="value" itemscope itemtype="https://schema.org/QuantitativeValue">
<span itemprop="value">1000</span>円
<meta itemprop="unitText" content="HOUR">
</span>
<meta itemprop="currency" content="JPY">
</td>
</tr>
<tr>
<th>募集要項</th>
<td itemprop="description">代々木八幡駅より徒歩3分の薬局です。<br><br>【仕事内容】<br>店舗にて、調剤業務、薬歴管理などを行っていただきます。 ・・・</td>
</tr>
<tr>
<th>勤務地</th>
<td itemprop="jobLocation" itemscope itemtype="https://schema.org/Place">
<span itemprop="address" itemscope itemtype="https://schema.org/PostalAddress">
〒<span itemprop="postalCode">151-0063</span><br>
<span itemprop="addressRegion">東京都</span><span itemprop="addressLocality">渋谷区</span><span itemprop="streetAddress">富ヶ谷0-0-0</span>
<meta itemprop="addressCountry" content="JP">
</span>
</td>
</tr>
<tr>
<th>事業所名</th>
<td itemprop="hiringOrganization" itemscope itemtype="https://schema.org/Organization">
<span itemprop="name">株式会社〇〇〇〇〇</span>
</td>
</tr>
</table>
microdata形式の時は、HTMLがかなり複雑になるので注意が必要です。
JobPosting構造化データの設定項目
JobPostingの構造化データでは、「求人概要」「勤務地」「給与」に関する情報を指定します。
※以下の例はすべて架空の求人です。
求人概要
項目 | 説明 |
---|---|
datePosted | 求人情報の公開日です(ISO-8601形式)。 必須項目です。 (例1)2020-10-15 (例2)2020-10-15T10:00+09:00 |
validThrough | 求人情報の有効期限です(ISO-8601形式)。 (例)2020-11-30 |
employmentType | 雇用形態です。 FULL_TIME:フルタイム(正社員) PART_TIME:パートタイム CONTRACTOR:契約社員 TEMPORARY:パートタイム(短期) INTERN:インターン VOLUNTEER:ボランティア PER_DIEM:日雇い OTHER:その他 |
title | 募集する職種です。 必須項目です。 (例)SEOコンサルタント |
description | 求人情報の詳細です。 HTMLタグ <br>、<ul>、<li>、<p> が利用できます。 ただし、見出しや画像、リンクは利用できません。 必須項目です。 (例)代々木八幡駅より徒歩3分のWebマーケティング企業です。・・・・ |
hiringOrganization.@type | Organization を指定します。 |
hiringOrganization.name | 雇用主の会社名です。 必須項目です。 (例)株式会社シンメトリック |
hiringOrganization.logo | 雇用主の会社のロゴ画像のURLです。 指定しないときは、Googleマイビジネスに登録された画像が利用されます。 (例)https://example.com/logo.png |
勤務地
完全リモートワークを除き、以下の項目は必須です。
項目 | 説明 |
---|---|
jobLocation.@type | 勤務地を表します。 PostalAddress を指定します。 |
jobLocation.addressCountry | 勤務地の国を表します。 書式は ISO 3166-1 alpha-2 で、日本は”JP”になります。 (例)JP |
jobLocation.postalCode | 勤務地の郵便番号です。 (例)151-0063 |
jobLocation.addressRegion | 勤務地の都道府県です。 (例)東京都 |
jobLocation.addressLocality | 勤務地の市区町村です。 (例)渋谷区 |
jobLocation.streetAddress | 勤務地の番地です。 (例)富ヶ谷0-0-0 |
勤務地(リモート勤務)
完全リモートワークの求人に関する項目です。
項目 | 説明 |
---|---|
jobLocationType | 勤務場所の種別です。 TELECOMMUTE:完全リモートワーク |
applicantLocationRequirements.@type | 従業員のリモート勤務場所に関する要件です。 Country:国 |
applicantLocationRequirements.name | 従業員のリモート勤務国に関する要件です。 (例)JPN |
給与
求人の給与(基本給)に関する情報です。
項目 | 説明 |
---|---|
baseSalary.currency | 価格の通貨コード(3桁)です。 ISO 4217で定義された通貨コード(日本円=JPY、アメリカドル=USD)を使います。 (例)JPY |
baseSalary.value.@type | 給与の種別です。 QuantitativeValue:基本給 |
baseSalary.value.value | 給与の額です。 カンマを含めることはできません。 baseSalary.value.valueを指定しない場合は、minValueとmaxValueの両方を指定します。 (例)400000 |
baseSalary.value.minValue | 給与の金額の下限値です。 (例)300000 |
baseSalary.value.maxValue | 給与の金額の上限値です。 (例)500000 |
応募ボタンのリンク先
Googleしごと検索で、求人詳細画面には応募ボタンが表示されています。
この応募ボタンのリンク先は、構造化データを設置したWebページのURLになります。
そのため、自社サイトの求人ページに設置した場合は、リンク先が自社サイトになります。
JobPosting構造化データのテスト
JobPosting構造化データは、リッチリザルトテストツールでの確認が便利です。
構造化データを表すscriptタグを張り付けるか、URLを入力すると、構文チェックしてくれます。
JobPosting構造化データをGoogleに送信する
Webページに記載したJobPosting構造化データは、Googleクローラーに巡回を依頼することで、Googleしごと検索への掲載を早めることができます。
JobPosting構造化データの巡回依頼方法としては、以下の3つがあります。
サイトマップを送信する
XMLサイトマップを更新し、サイトマップをGoogleに送信する方法です。
XMLサイトマップにはページごとの最終更新日が記録されているので、Googleは最近更新されたページを優先的に巡回してくれます。
インデックス登録をリクエストする
Googleサーチコンソールで更新したページに対して「インデックス登録をリクエスト」します。該当ページの巡回が早まることがあります。
Indexing APIを利用する
GoogleのIndexing APIを利用して、ページが更新されたことをGoogleに通知します。
Indexing APIとは、Googleの検索インデックスへの登録・更新を行うための専用APIで、JobPosting構造化データを設置したページに対して使うことができます。URLを指定してAPIへリクエストすることで、サーチコンソールの「インデックス登録をリクエスト」に近い効果が得られます。
Indexing APIのクロール優先度は非常に高いので、できるだけIndexing APIを利用することが推奨されています。
Googleしごと検索で表示されないときのチェックポイント
構造化データをマークアップしても、求人情報がGoogleしごと検索に掲載されない場合は、以下の原因が考えられます。
原因1.構造化データの構文エラー
まずは、JSON-LD の構文エラーがないかどうかをリッチリザルトテストツールやGoogleサーチコンソール 確認します。Googleサーチコンソールでの確認手順は以下の通りです。
- URL を入力して Enter を押下する
- URL 検査画面で [公開URLをテスト]ボタンをクリックする
以下は、JSON の書式エラーがあった場合の画面です 。
エラーの対処方法については、以下ページにも詳しくまとめています。
- 関連記事:リッチリザルトテストツールの使い方
原因2.当該URLがまだインデックスされていない
クローラーがまだページをクローリングしていない可能性があります。
Googleサーチコンソール で URL を入力し、[インデックス登録をリクエスト]ボタンをクリックしてください。
早ければ数分~数十分程度でクローリングされ、Googleしごと検索に表示されるようになります。
掲載ページが多数ある場合は、XMLサイトマップを作成し、Googleサーチコンソールでサイトマップを登録するとよいでしょう。
原因3.求人の有効期限が過ぎている
validThrough
で指定した掲載期限が過ぎると、Googleしごと検索には表示されません。
掲載期間が延長した場合には、validThrough
を変更します。
原因4.構造化データで指定した求人情報がページに表示されていない
Google の構造化データガイドラインでは、ページに表示されている内容と構造化データを一致させるように記載されています。
ページの読者に表示されないコンテンツをマークアップしないでください。たとえば、JSON-LD マークアップでパフォーマーが記述されている場合、HTML の本文でも同じパフォーマーが記述されている必要があります。
https://developers.google.com/search/docs/guides/sd-policies#content
構造化データで指定した求人情報が実際には存在しないような場合や、ページに掲載した情報と異なる場合は Google のガイドライン違反となります。ガイドライン違反があると、Googleしごと検索への掲載が停止されます。
原因5.求人一覧ページに構造化データを設置している
JobPosting型の構造化データを求人一覧ページに設置することはできません。求人詳細画面に構造化データを設置します。
まとめ
以上、JobPosting構造化データをマークアップする方法を説明しました。
Googleしごと検索は、検索結果画面の上位に表示されるので、たくさんに人に閲覧してもらえる可能性があります。求人情報のSEO対策として是非取り組んでみてください。
SEOの基本知識についてはオンラインセミナーで解説しています。セミナーではGoogle公式のSEOガイドであるGoogle検索セントラルの「Google検索の仕組み」と「スターターガイド」の内容を分かり易く解説します。これからSEOを始めようと考えている方は是非ご参加ください。
弊社ではサーチコンソールとGA4データを1つにまとめて分析ができる「SEO分析ツール アナトミー」 を提供しております。運用しているサイトのSEOチェックを行うのに必要な機能が揃ったダッシュボードプランは全て無料でずっとご利用いただけます。是非、アナトミーに無料登録してサイトのSEOチェックをしてみてください。