Domain 52 / 225

Product 構造化データは商品スニペットと Merchant Listing で使い分ける

Product schema の要点

Product 構造化データには「Product Snippet(購入できないページ向け)」と「Merchant Listing(購入できるページ向け)」の 2 系統がある。Merchant Listing の方が情報量が多くて推奨だが、Product Snippet は editorial レビューに向く。両方の必須プロパティを満たすと両機能の対象になる

なぜこれを学ぶか

Product 構造化データは EC の検索流入と CTR に最も直接効く施策。 価格 / 在庫 / 評価星が SERP に表示されると、CTR が 30-80% 上がる事例も。

EC・商品紹介メディア・比較サイトで必須。

学ばないと起きること

よくある事故被害
Product Snippet と Merchant Listing の使い分けを誤る想定したリッチリザルトに出ない
必須プロパティ欠落リッチリザルト対象外
在庫 / 価格を構造化データと HTML で不一致スパム判定リスク、リッチリザルト剥奪
Product Variants(カラー違い等)を個別データで実装親商品関連性を Google が認識できない
偽 AggregateRating(実レビューなしで評価記載)構造化データ手動対策

学ぶメリット

  • EC で商品リッチリザルトを獲得し CTR を上げられる
  • Product Snippet と Merchant Listing の選択を即判断できる
  • 商談で「両方の必須プロパティを満たすと両対象」を即答できる

仕組み

2 系統の Product 構造化データ

系統用途主な機能
Product Snippet商品が購入できないページ(editorial レビュー / 比較記事)Pros / Cons / Review
Merchant Listing商品を購入できるページ(EC)価格 / 在庫 / 配送 / 返品

EC は Merchant Listing、メディアの商品紹介記事は Product Snippet。両方の必須プロパティを満たすと 両機能の対象になる。

必須プロパティ(Merchant Listing)

プロパティ内容
name商品名
image商品画像(複数比率推奨)
offers価格 / 在庫 / 通貨

推奨プロパティ

プロパティ内容
description商品説明
brandブランド
aggregateRatingレビュー集計(実レビューがある場合のみ)
review個別レビュー
skuSKU 番号
gtin国際商品識別番号
mpnメーカー型番

実装例(Merchant Listing)

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "Product",
  "name": "青いマキシ丈ドレス(リネン素材)",
  "image": [
    "https://example.com/dress-1x1.jpg",
    "https://example.com/dress-4x3.jpg",
    "https://example.com/dress-16x9.jpg"
  ],
  "description": "リネン 100% のマキシ丈ドレス。サイズ S / M / L、カラー青 / 赤 / 緑",
  "brand": {"@type": "Brand", "name": "spotyou"},
  "sku": "DRESS-BLUE-M",
  "offers": {
    "@type": "Offer",
    "url": "https://example.com/products/dress-blue",
    "priceCurrency": "JPY",
    "price": "12800",
    "availability": "https://schema.org/InStock",
    "shippingDetails": {
      "@type": "OfferShippingDetails",
      "shippingRate": {"@type": "MonetaryAmount", "value": "0", "currency": "JPY"},
      "deliveryTime": {
        "@type": "ShippingDeliveryTime",
        "handlingTime": {"@type": "QuantitativeValue", "minValue": 0, "maxValue": 1, "unitCode": "DAY"},
        "transitTime": {"@type": "QuantitativeValue", "minValue": 1, "maxValue": 3, "unitCode": "DAY"}
      }
    }
  },
  "aggregateRating": {
    "@type": "AggregateRating",
    "ratingValue": "4.5",
    "reviewCount": "120"
  }
}
</script>

キー概念

availability の値

意味
InStock在庫あり
OutOfStock在庫切れ
PreOrder予約受付中
BackOrder入荷待ち
Discontinued販売終了
LimitedAvailability在庫僅少

在庫変化したら必ず構造化データも更新。

Product Variants(カラー / サイズ違い)

{
  "@type": "ProductGroup",
  "productGroupID": "DRESS-MAXI",
  "variesBy": ["color", "size"],
  "hasVariant": [
    {"@type": "Product", "color": "blue", "size": "M", "offers": {...}},
    {"@type": "Product", "color": "red", "size": "M", "offers": {...}},
    {"@type": "Product", "color": "blue", "size": "L", "offers": {...}}
  ]
}

ProductGroup でバリエーションを親で束ねると、Google が「同じ商品の色違い / サイズ違い」を認識する。

AggregateRating の正しい使い方

"aggregateRating": {
  "@type": "AggregateRating",
  "ratingValue": "4.5",
  "reviewCount": "120",
  "bestRating": "5",
  "worstRating": "1"
}

注意:

  • ページ内に対応する実レビューが表示されていること
  • 偽レビュー / 自社操作の評価は構造化データ手動対策の対象
  • ページ全体での集計(aggregate)は OK、個別レビューは review プロパティで

Pros / Cons(Product Snippet 限定)

editorial レビュー記事で:

"review": {
  "@type": "Review",
  "reviewRating": {...},
  "name": "編集部レビュー",
  "author": {"@type": "Person", "name": "山田 太郎"},
  "positiveNotes": {
    "@type": "ItemList",
    "itemListElement": [
      {"@type": "ListItem", "position": 1, "name": "軽量で持ち運びやすい"},
      {"@type": "ListItem", "position": 2, "name": "バッテリー寿命が長い"}
    ]
  },
  "negativeNotes": {
    "@type": "ItemList",
    "itemListElement": [
      {"@type": "ListItem", "position": 1, "name": "価格が高め"}
    ]
  }
}

Product Snippet で「Pros / Cons」リッチリザルトに表示される。

よくある誤解

よくある誤解実際のところ出典
Product Snippet と Merchant Listing は同じ用途が違う、購入できる EC は Merchant ListingProduct 構造化データ
Product 構造化データを入れれば必ずリッチリザルトに出る出る権利を得るだけ、Google の判定同上
AggregateRating は自由に書けるページ内に対応する実レビューが必須、偽は構造化データ手動対策構造化データ品質ガイドライン
カラー違いを別 Product でそれぞれ書くProductGroup + variesBy で親子関係を Google に伝えるProduct Variants
availability を InStock にしておけば Google が自動判定在庫変化時に必ず構造化データも更新する必要ありProduct 構造化データ
Pros / Cons は EC の商品ページに使えるProduct Snippet(editorial レビュー)専用同上
sku / gtin は不要推奨プロパティ、Google が商品を一意識別するのに役立つ同上
在庫切れ商品の構造化データは消すべきOutOfStock として残し、ページも維持同上

実務での適用

EC サイトの商品ページ実装フロー

  1. CMS テンプレに Merchant Listing 用 JSON-LD を組み込み
  2. 商品マスタから動的に値を生成
  3. 在庫変化トリガで構造化データも自動更新
  4. リッチリザルトテストで全カテゴリのサンプル URL を検証
  5. Search Console「拡張」レポートで監視

Product Variants の実装

カラー / サイズ違いの実装:

親商品: /products/dress-maxi (ProductGroup)
  バリアント:
    - /products/dress-maxi-blue-m
    - /products/dress-maxi-blue-l
    - /products/dress-maxi-red-m
    - /products/dress-maxi-red-l

各 URL に Product 構造化データ + 親 ProductGroup への紐付け。

在庫管理との連動

在庫管理システムから商品ページへの連動:

  1. 在庫数が 0 になる → availability: OutOfStock
  2. 入荷予定あり → availability: BackOrder
  3. 廃番 → availability: Discontinued または 410 / 301

トラブル別の対処

症状確認すべきこと
商品リッチリザルトに価格 / 在庫が出ないoffers の必須プロパティの完全性、リッチリザルトテストで確認
カラー違い商品がカニバライズProductGroup + variesBy で親子関係を明示
Search Console「拡張」で Product エラー急増構造化データと HTML の不一致、必須プロパティ欠落
偽レビュー疑いで手動対策aggregateRating の根拠、ページ内の実レビュー表示確認
Pros / Cons リッチリザルトに出ないProduct Snippet 構造化データ + 推奨プロパティ充実

公式ソース

自己テスト

Q1. Product Snippet と Merchant Listing の使い分けは?

Product Snippet = 購入できないページ(editorial レビュー / 比較記事) Merchant Listing = 購入できる EC 商品ページ

Q2. Merchant Listing の必須プロパティは?

name / image / offers(price / priceCurrency / availability)

Q3. AggregateRating を書くときの注意は?

ページ内に対応する実レビューが表示されている必要がある。偽レビューは構造化データ手動対策

Q4. カラー違い / サイズ違い商品の正しい構造化方法は?

ProductGroup + variesBy + hasVariant で親子関係を Google に伝える

Q5. 在庫切れ商品の availability の値は?

OutOfStock。商品ページは維持し、構造化データを更新する

Q6. Pros / Cons のリッチリザルトはどの構造化データに使える?

Product Snippet 専用。editorial レビュー記事で positiveNotes / negativeNotes を指定

Q7. sku / gtin / mpn は不要なプロパティか?

推奨プロパティ。Google が商品を一意識別するのに役立つ、特に Merchant Listing で重要

Q8. Product 構造化データを入れれば必ずリッチリザルトに出るか?

出る権利を得るだけ。表示するかは Google のアルゴリズム判定

これらの内容を採点付きで挑戦したい場合は、本ドメインのプロ試験で 5 問形式で確認できる。