はじめに
商品ページに表示する価格と、検索エンジンが読み取る価格が違う。販売中の商品が、データ上では在庫切れになっている。こうした食い違いを防ぐことが、ECの商品情報設計の出発点です。
この記事では、ページの説明と JSON-LD の構造化データを揃える方法を整理します。構造化データは情報を伝える手段であり、検索結果への特別な表示やAIによる推薦を保証するものではありません。
なぜ商品情報の伝え方が重要なのか
商品ページに説明文が丁寧に書かれていても、HTML上の見た目だけでは、AIが重要な属性を安定して読み取れないことがあります。
たとえば、次のような情報は比較や推薦に直結します。
- 商品名
- ブランド
- 型番
- 価格
- 在庫状況
- 主な特徴
- 商品カテゴリ
これらが文章の中に散らばっているだけだと、読む人には分かりやすくても、機械には扱いづらい場合があります。そこで有効なのが、JSON-LD による構造化データです。
HTMLとJSON-LDの内容を揃える
考え方はシンプルです。
HTML: 人が読みやすい説明、画像、比較表、レビュー導線を提供するJSON-LD: AIや検索エンジンが解釈しやすい形で、商品情報を明示する
HTMLも検索エンジンなどに読み取られます。JSON-LDはその内容を補うもので、ページにない特典やレビューを追加する場所ではありません。両方に載せる商品名・価格・在庫を同じ更新元から管理します。
ECで最低限そろえたい項目
schema.org の Product と Offer を使うと、商品情報の基本を整理しやすくなります。
まずは次の項目から始めるのが実務的です。
name: 商品名brand: ブランド名model: 型番やシリーズ名category: 商品カテゴリdescription: 商品の要点offers.price: 価格offers.priceCurrency: 通貨offers.availability: 在庫状況
特に、価格と在庫は比較時の判断材料になりやすいため、更新しやすい運用を前提に設計しておくことが重要です。
JSON-LDの記述例
以下は、架空の商品を用いた記述例です。必要なプロパティは対象の検索機能や掲載形態で異なるため、この例だけで要件を満たすとは限りません。
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Product",
"name": "可変圧力IH炊飯器 RC-500",
"brand": {
"@type": "Brand",
"name": "Example"
},
"model": "RC-500",
"category": "炊飯器",
"description": "5.5合炊きの可変圧力IH炊飯器。時短メニューと保温機能に対応。",
"offers": {
"@type": "Offer",
"price": "39800",
"priceCurrency": "JPY",
"availability": "https://schema.org/InStock"
}
}
</script>
仕様の詳細は schema.org の Product や InStock を確認すると整理しやすくなります。
導入を進めるときのポイント
いきなり全商品へ広げるより、次の順番で進めると取り組みやすくなります。
- 売れ筋商品や主力カテゴリから優先的に対応する
- 商品名、価格、在庫など変動しやすい項目の更新元を決める
- HTML上の表示内容とJSON-LDの値がズレないようにする
- リッチリザルト テストで構文と対象機能の要件を確認し、公開後も更新の食い違いを点検する
重要なのは、構造化データを一度入れて終わりにしないことです。商品マスタやCMSの更新フローとつながっていないと、情報の鮮度が落ちて逆効果になりかねません。
運用で確認したいこと
商品マスタやCMSを更新したときに、ページ表示とJSON-LDの両方へ反映されるかを確かめます。特にセール開始・終了、欠品、販売終了は、更新漏れが起きないように確認手順を決めておきます。
検索機能ごとの条件は、Googleの Product構造化データの公式ガイド を参照してください。情報を追加した後は リッチリザルト テスト で検証できます。
ECサイトの商品情報設計や構造化データの整備をご検討中の方は、お問い合わせ ください。