トップ / 解析の仕組み / マークアップ × ページ内容の一致確認

マークアップ × ページ内容の一致確認

このページでできること

  • 結果詳細画面に出ている「構造化マークアップとページ内容の一致確認」テーブルが、どんな条件で 一致 / 不一致 / 未実装 を判定しているかを把握できます。
  • schema.org 型ごとに、どのプロパティが何と比較されるか(突き合わせ対象)を確認できます。
  • 突き合わせのテキスト一致は厳密ではなく、空白除去・部分一致を許す方向にチューニングされていることを理解できます。

担当コード: src/StructuredDataConsistencyChecker.phpsrc/HtmlParser.php。出力は crawl_results.result_json.consistency_checks 配列。

なぜこの確認が必要か

JSON-LD などで宣言する構造化マークアップは、Google から見えるが人間にはほぼ見えない裏方の情報です。そのため、「ページの本文を書き換えたのに JSON-LD だけ古いまま」という状況が発生しやすく、これが続くと Google から「ページ内容と構造化データが乖離している」と判断されてリッチリザルト対象から外される恐れがあります。

クヌギスキーマは、マークアップで宣言した値ページの実コンテンツを機械的に突き合わせ、ズレを検出します。

確認ロジックの全体像

  1. クロールで取得した HTML を HtmlParser が解析し、 titlemeta descriptionh1パンくずFAQ 候補記事シグナル(著者・日付)組織シグナル商品シグナルを抽出します。
  2. 同じ HTML から StructuredDataExtractor が JSON-LD / Microdata / RDFa を取り出し、エンティティ群を作ります。
  3. StructuredDataConsistencyChecker が各エンティティの型を見て、その型に対応するプロパティをページ側の対応シグナルと突き合わせ、結果を 1 行ずつ consistency_checks 配列に追加します。
  4. 結果詳細画面(結果一覧/詳細)の「マークアップとページ内容の一致確認」テーブルがこの配列を表示しています。

突き合わせ対象(型ごとの一覧)

schema.org 型突き合わせるフィールドページ側の対応
WebPage name, description, url, @id title タグ、meta description、ページ URL
WebSite(ページ検出分) name, url, publisher, potentialAction, sameAs ページ上の JSON-LD 等から検出された WebSite エンティティ
Article / BlogPosting / NewsArticle headline, author, datePublished, dateModified, description, url, @id h1(無ければ title)、ページ内の著者表示、本文中の日付、meta description、ページ URL
BreadcrumbList itemListElement(各要素の name ページ内のパンくず UI(<nav class="breadcrumb"><ol> 等)から抽出した「>」区切りリスト
FAQPage mainEntity 配下の Question / Answer 文字列 ページ内で見つかった Q&A ライクな見出し・本文ペア
Organization / LocalBusiness 組織名(name)、住所、電話番号、URL など ページのフッタや住所表記から抽出した組織シグナル
Product name、価格・通貨 商品名らしい h1、ページ内の ¥ / / USD 等の価格表記

WebSite 期待値との照合(プロダクト単位)

メタ情報の事前登録 で登録した WebSite 期待値は、各 URL のクロール結果とは別に WebsiteExpectationChecker が評価します。

パンくず UI の検出には、同画面のパンくずセレクターbreadcrumb_selectors_json)が HtmlParser に渡されます。提案・照合自体をオフにする場合は 構造化マークアップ検出設定 で種別単位に制御します。

検出設定による除外

product_schema_detection_settings.disabled_types_json に含まれる代表 @type は、StructuredDataConsistencyCheckerStructuredDataSuggester の両方から除外されます(JSON-LD の抽出は継続)。

判定結果のバッジ

一致確認テーブルの「結果」列は 5 種類のバッジで表現されます。

バッジ意味典型例
一致(緑)マークアップ側の値とページ内容の主要部分が合致したJSON-LD の headline<h1> がほぼ同じ
実装済み(緑)突き合わせの結果、すでにマークアップが入っているので OKパンくず UI と BreadcrumbList の両方が揃っている
要確認(黄)マークアップは入っているが、対応するページ内容が拾えなかった などheadline はあるが h1 が無い
不一致(赤)双方に値はあるが、テキストの主要部分が一致しないJSON-LD の author とページ表示の著者名がズレている
未実装(赤)ページ側にシグナルがあるのに、対応するマークアップが入っていないパンくず UI はあるが BreadcrumbList が無い

テキスト一致の判定方法

厳密なバイト単位比較ではなく、運用上の揺れに耐える設計です。

パンくずの突き合わせ

パンくずは「項目の並び」と「各項目の名前」両方を見ます。

「構造化マークアップが見つからないため、一致確認は実施できません。」が出る場合

JSON-LD / Microdata / RDFa が 1 件も検出できなかった URL では、突き合わせ用の根拠が無いため、1 行だけ info ステータスの行を出して終了します。

該当箇所の HTML を確認する

結果詳細画面では、一致確認テーブルの各行をクリックすると、その判定の根拠となった構造化マークアップ HTML 断片がインライン展開されます。

一致確認結果の活用 CSV ダウンロード(一致確認) を使うと、全 URL × 全判定行をフラットな表形式で出力できます。Excel のフィルタで「不一致」「未実装」だけ絞り込めば、改修対象の一覧が即座に出来上がります。