募集終了した求人がしごと検索に残る|validThroughと消し方3択
募集は締め切った。ページにも「募集は終了しました」と書いた。なのにGoogleしごと検索には求人カードが出たままで、応募が届く。——原因の多くは、画面の文言ではなく構造化データがまだ「募集中」のままだからです。
Googleの求人情報ドキュメントは、応募を受け付けていない求人は決められた方法のいずれかで「期限切れ」にしなければならない、と書いています。方法は3つです。validThrough に過去の日付を入れる。ページ自体を消して404か410を返す。ページから JobPosting の構造化データを取り除く。どれを選ぶかは「そのページを残すかどうか」で決まります。
文言を変えただけでは、なぜ終わらないのか
構造化データとは、職種・勤務地・給与・締切といった求人の中身を、検索エンジンが読める決まった書き方でHTMLに埋め込む仕組みです。求人向けの型が JobPosting です。リッチリザルト(しごと検索の求人枠のような拡張表示)の対象になるのは、このデータを読んだ結果です。
本文に書いた「募集終了」の一文を、Googleが求人の期限として読み取ってくれる保証はありません。一方で <script type="application/ld+json"> の中の validThrough が来月のままなら、こちらからGoogleに渡している締切は来月のままです。ここが放置されやすいところです。
放置にはリスクがあります。同じドキュメントには、期限切れの求人に対して速やかに対処しないと手動による対策(Googleがサイトに課す措置)の対象になり得る、と明記されています。構造化データに手動対策を受けると、そのページの構造化データは無視されます。ページ自体は検索結果に出続けることがある、とも書かれています。求人枠だけ失う状態です。
3つの終了方法を、ページを残すかどうかで選ぶ
Googleが挙げている終了方法と、それぞれの向き不向きを並べます。
| 方法 | ページの扱い | 向く場面 | 実装の要点 |
|---|---|---|---|
validThrough に過去の日付を入れる | 残す | 同じURLで再募集する予定がある。募集要項を記録として残したい | JSON-LD の日付を書き換えるだけ。本文の「終了」表記と揃える |
| ページを削除して404または410を返す | 消す | 二度と使わないURL。キャンペーン採用や単発の募集 | サーバー側でステータスコードを返す。リンク元の整理も必要 |
JobPosting の構造化データを取り除く | 残す | ページを会社紹介や職種紹介として残したいが、求人としては扱わせたくない | <script> ブロックごと削除。他の構造化データは残してよい |
一つめは、定期的に同じ職種を募集する会社に向いています。「エンジニア募集」のURLを毎回作り直すより、締切だけ動かすほうが運用は軽くなります。
二つめは、URLごと役目を終える場合です。Googleのドキュメントでは、429を除く4xxはすべて同じ扱いで、以前インデックスに登録されていたURLはインデックス登録パイプラインによってインデックスから削除されると説明されています。クロールの頻度は徐々に下がります。404と410で結果が変わるとは書かれていないので、どちらを返すかで迷って止まる必要はありません。消す判断そのものについては404エラーがSEOに与える影響に整理しています。
三つめは、ページを「求人ではないもの」に作り替えるときです。構造化データを外せば、Googleにとってそのページは求人ではなくなります。本文はそのまま残せます。
validThrough の書き方と、締切前に埋まったときの扱い
validThrough は求人の有効期限を ISO 8601 形式で指定するプロパティです。ドキュメントの例は "2017-02-24" のような日付だけの形と、"2017-02-24T19:33:17+00:00" のような日時の形の両方を示しています。締切が決まっている求人では、この値で締切を伝えます。
{
"@context": "https://schema.org/",
"@type": "JobPosting",
"title": "Webエンジニア",
"datePosted": "2026-08-01",
"validThrough": "2026-09-01T00:00"
}
ここに2つの落とし穴があります。
1つめ。期限が決まっていない求人には、このプロパティを入れないことになっています。ドキュメントは「期限がない、またはいつ期限が来るか分からない場合は含めない」としています。とりあえず1年後を入れておく運用は、この指示から外れます。
2つめ。締切より前に採用が決まったら、求人を削除するように書かれています。9月1日締切で8月20日に決まったなら、validThrough を8月20日に書き換えるか、上の表の別の方法で終了させます。締切が来るまで待つ、は正しい運用ではありません。
日時に時刻を付けるときは、タイムゾーンを省略すると意図と違う時刻に解釈される可能性があります。過去日付として使うなら、迷わず余裕をもって数日前の日付にしておくのが安全です。
noindex は求人の終了方法として挙げられていない
「noindex を入れれば消えるのでは」と考えるのは自然です。noindex は、ページを検索エンジンのインデックス(検索結果に出るための登録簿)に登録させない指示で、<head> 内に <meta name="robots" content="noindex"> を置きます。
Googlebot がそのページをクロールしてタグを読み取ると、他サイトからリンクされていても、ページは検索結果から完全に除外される、とドキュメントにあります。効き目は強い。ただし、求人ドキュメントの「削除方法」の一覧に noindex は入っていません。
だから、位置づけを分けて考えます。求人を終了させるのは上の3方法。ページを検索結果そのものから外したいなら noindex。両方やっても矛盾はしません。
もう1つ注意があります。noindex が効くには、そのページが robots.txt でブロックされていないことが条件です。ブロックされているとGooglebotがタグを読めません。URL検査ツールでは、Googleが noindex を読めない状態だと「インデックス登録を許可?」が常に「はい」になる、とヘルプに書かれています。noindex を入れたのに消えない、という相談の定番です。詳しくはnoindexを入れたのに消えないときのrobots.txtの落とし穴を参照してください。
ワークスルー:締切前に埋まった「Webエンジニア募集」を終了させる
9月1日締切で公開していた募集が、8月20日に決まった。ページは次回募集でも使うので残したい。この前提で通します。
-
残すか消すかを決める。今回は残すので、
validThroughの書き換えを選びます。次回募集の予定がなければ、404にするか構造化データを外します。 -
JSON-LD の
validThroughを過去の日付に書き換える。"validThrough": "2026-08-20"にします。同時に本文の見出しにも「募集は終了しました」を入れ、応募フォームを閉じます。データと画面を揃えるためです。 -
デプロイ後、サーバーが返す内容を確認する。ブラウザのソース表示でもよいですが、コマンドなら確実です。
curl -s https://example.com/recruit/web-engineer | grep -A 20 'application/ld+json'validThroughが新しい日付になっていれば、公開側の作業は終わりです。ページを消す方を選んだ場合はcurl -Iでステータス行に404か410が出ることを見ます。 -
Search Console の URL検査ツールでライブテストをする。URLを入力し「公開URLをテスト」を押します。ヘルプによれば、ライブテストの結果とインデックス済みの結果は「Googleインデックス」と「ライブテスト」の切り替えで見比べられます。ライブ側で新しい内容が読めていれば、あとはGoogle側の再処理待ちです。
-
再クロールを促す。求人ドキュメントは、ページが問題なければ再クロールをリクエストできる、としています。URL検査の「インデックス登録をリクエスト」には1日あたりの上限があります。求人URLについては、サイトマップより Indexing API の利用が推奨されています。理由は、Indexing API のほうが Googlebot のクロールを早く促すため、とドキュメントに書かれています。API連携がなければ、URL検査からのリクエストで構いません。
-
数日後に「Googleインデックス」側を再確認する。ドキュメントには再クロールと再インデックスに時間を見込むよう書かれています。公開時の話として、Googleがページを見つけてクロールするまで数日かかることがある、とも書かれています。更新の反映も同じように待つ場面がある、と考えておくとよいでしょう。
反映のタイミングは、リクエストしたからといって思いどおりには動きません。ここはインデックス登録リクエストは思ったより速くないで扱った話と同じです。
自己点検:自分のケースを当てはめる
| 状況 | 確認すること | 期待する状態 |
|---|---|---|
| 本文に「終了」と書いたが求人カードが出る | ソースの validThrough の値 | 過去の日付になっている |
| 締切前に採用が決まった | validThrough を書き換えたか、ページを削除したか | いずれかが済んでいる |
| 期限未定の求人に適当な未来日を入れている | validThrough の有無 | プロパティ自体を外している |
| ページを削除した | curl -I のステータス行 | 404 または 410 |
| noindex を入れたのに消えない | robots.txt でブロックしていないか | ブロックなし。URL検査で noindex が読めている |
| 構造化データに手動対策の通知が来た | Search Console の手動対策レポート | 期限切れ求人を全件処理してから再審査 |
構造化データの警告と、いま起きているエラーの区別で迷うときは構造化データのエラーと警告の違いが助けになります。
求人ページは、公開時より終了時のほうが放置されます。終了の手順を「本文を直す」で終わらせず、「JSON-LD を直す」まで含めて手順書に入れておくと、次の募集からは迷わなくなります。
出典
