求人ページのソースを表示しました。
構造化データは、ページの中にあります。書かれてはいます。
その部分だけをコピーして、JSONとして読ませてみました。途中で止まりました。
止まった場所は、仕事内容の説明文でした
説明文の中に、全角の引用符が入っています。それと、改行と、HTMLの改行タグ。
JSONの文字列は引用符で囲みます。囲んでいる途中に同じ引用符が出てくると、そこで文字列が終わったことになります。以降の文字は、構文として意味をなしません。
ページの表示は、まったく正常でした。
原稿を書いた人は、何も間違えていません
仕事内容の欄に「未経験歓迎」と書く。読みやすいように改行を入れる。どちらもごく普通の入力です。
その文字列が、そのまま構造化データの中へ流し込まれていました。書式に合わせて変換する処理が、間に入っていなかったからです。
やったことは、値を変換してから出す関数を1つ通しただけです。あわせて、説明文からHTMLタグを外し、改行タグを普通の改行に直し、空行が3つ以上続いたら詰める処理を足しました。
説明文を直して終わったつもりでした。同じ状態が9つ残っていました
原因は説明文だったので、そこを直して、表示を確認して、終わりにしました。
そのあと別の目で見直したところ、同じ処理が抜けているフィールドが他にもありました。
求人のタイトル、会社名、識別子、掲載期限、雇用形態、都道府県、市区町村、番地、郵便番号。9つです。
説明文が特別だったわけではありませんでした。全部が同じ書き方で、たまたま説明文に引用符が入っていたから、そこが最初に見つかっただけです。会社名に引用符や記号が入っていれば、同じことが起きます。
壊れていることは、画面のどこにも出ません
ここが厄介だと思っています。
構文の壊れた構造化データは、ページの表示に影響しません。レイアウトも崩れません。サーバーのエラーログにも残りません。
読み取る側は、読めない部分を無視します。それだけです。
だから、入れたつもりのまま何年も経つことがあります。サイトの中で検索エンジンだけが読んでいる部分は他にもあって、そのあたりは内部SEOの基本に整理してあります。
給与額はそもそも出力されていませんでした。それでも画面は正常です
もうひとつ見つかりました。
給与額を出すはずの場所に、出力の命令が書かれていませんでした。変数を置いただけで、画面に出す指示がない状態です。
値は取れているのに、どこにも出ない。構造化データの中では、給与の欄が空のまま出ていました。
雇用形態も、ひとつの文字列として書かれていました。仕様では複数を並べられる形式なので、そちらに直しています。給与の単位にも、決められた語彙にない語が入っていました。
掲載終了日は、値を取ってくる処理そのものがありませんでした
求人フィードのほうも見ました。
掲載終了日を出力する箇所はあるのに、その値を取ってくる処理が書かれていませんでした。出力する先はあって、入れるものがない。だから掲載終了日は、ずっと空のままでした。
1行足して、フィードを作り直しました。5.16MBのファイルができて、掲載終了日の入っている求人が155件ありました。
最初に開いたページの構造化データは、いまはJSONとして最後まで読めます。全部のフィールドが変換を通っていることも確認しました。
確認したのは、そのページ1件です。求人は毎日増えますし、原稿に何が入るかは書く人によって違います。全件を機械で通してはいません。そこはまだやっていない範囲です。
構造化データが読める状態かどうかの確認は、お問い合わせから承っています。
FAQよくある質問
- Q自社の構造化データが壊れているかは、どうすれば分かりますか。
- Aページのソースを表示して、構造化データの部分だけをコピーし、JSONとして読めるかを確かめるのが確実です。途中で止まれば、そこが壊れている箇所です。表示崩れやエラーは出ないため、画面を見ていても気づけません。
- Q原稿を入れる側で気をつけることはありますか。
- A本来は、原稿に何を書いても壊れないように作るべきものです。ただし現状で壊れている場合、引用符・記号・改行・貼り付けたHTMLが入りやすい欄から先に出ます。仕事内容や会社概要のような、長い文章を入れる欄が該当します。
- Q直したあと、何を見れば直ったと分かりますか。
- A同じようにソースから構造化データを取り出して、最後まで読めることを確認します。今回はあわせて、各フィールドの値が変換を通っているか、空のまま出ているフィールドがないかも見ました。給与の欄は、出力の命令が抜けていたため空で出ていました。