ECサイトにおける構造化データの実装と注意点
目次
なぜ構造化データが重要なのか
TRYANGLEアナリティクスチームの高橋です。ECサイトのSEOを語るうえで欠かせないのが「構造化データ(Structured Data)」です。構造化データとは、ページ内の情報を検索エンジンが理解できる形式(機械可読な言語)で記述する仕組みのこと。Googleなどのクローラーはこのデータをもとに、「このページは商品詳細だ」「この情報は価格だ」と認識します。
これにより、検索結果で「価格」「在庫」「レビュー評価」などが表示されるリッチリザルト(リッチスニペット)の対象となり、CTR(クリック率)向上が期待できます。また、構造化データはクローラビリティ(発見されやすさ)とインデクサビリティ(理解されやすさ)を高める要素でもあります。つまり、単なるSEO対策ではなく、「正確に理解されるための設計図」なのです。
ECサイトにおいて構造化データを導入するメリット
構造化データを導入することで、検索エンジンや外部プラットフォームがあなたのサイト情報をより深く・正確に理解できるようになります。特にECサイトでは、次のような明確なメリットがあります。
検索結果での視認性向上(リッチリザルト表示)
商品名の下に「価格」「在庫」「レビュー評価」などが表示され、CTR(クリック率)向上が期待できます。特に、比較検討段階のユーザーに対して強い訴求効果を持ちます。
データ整合性の維持と自動連携
Product構造化データを整備しておくと、Google Merchant CenterやMetaカタログへの価格・在庫情報の自動連携に活用できます。同一の商品情報を複数チャネルで正確に反映できるため、データの二重管理を防ぎ、運用効率を高めます。
クローラビリティとインデクサビリティの向上
構造化データを正しく設計することで、クローラーがサイト構造をより的確に理解し、インデックス登録(検索結果への反映)までの速度を高める効果が期待できます。
生成AI(SGE・ChatGPT等)における引用率向上
最近注目される「GEO(生成エンジン最適化)」においても、構造化データはAIがページ内容を理解するための土台となります。FAQ形式やレビュー情報を構造化することで、AIがあなたのサイトを「信頼できる情報源」として引用しやすくなります。
構造化データが影響を与える指標
構造化データは直接的な順位要因ではありませんが、間接的に多くの主要指標に影響します。
| 指標 | 影響の内容 |
|---|---|
| CTR(クリック率) | リッチリザルトによる検索結果の視認性向上でクリック率が上がる |
| CVR(コンバージョン率) | 商品の信頼性やレビューが視覚的に示され、購入率の向上につながる |
| 外部連携精度 | Merchant Center・Metaカタログなどへの商品情報連携が正確に行える |
| AI引用率(GEO指標) | 構造化された情報が生成AIの回答ソースとして利用されやすくなる |
このように、構造化データは単に検索結果を見やすくするだけでなく、SEO対策や広告の運用、AIによる検索で自分のサイトを見つけやすくするための基本となる、とても大事な仕組みです。
ECサイトで特に重要な構造化データ
構造化データには多くの種類がありますが、ECサイトで特に優先すべきは以下の6種類です。
商品(Product)
概要
最も重要な構造化データ。前述の通り、SEOだけでなくデータ連携のハブとしても機能します。Google Merchant CenterやMetaカタログなどに対して、価格情報・在庫情報・JANコードなどの商品属性を連携する際の基礎データとして活用できます。構造化データが正確に整備されていれば、外部の広告プラットフォームやショッピングフィードとの整合性が取りやすく、情報の同期やエラー検出にも役立ちます。
つまり、「SEOのための構造化」だけでなく、「データマーケティング基盤の整備」という観点からも大きな価値を持っています。
name, image, description, sku, gtin, brand, offers, aggregateRating などを正確に設定します。offers では価格や在庫ステータス(例:InStock)を必ず記述しましょう。
Productの構造化データを自動的に出力できるECシステムも存在しますが、出力データに細かい条件などがある場合、対応しきれない場合もあります。
主な対象ページ
商品詳細ページ
主な項目
| プロパティ | 必須/推奨 | 内容 |
|---|---|---|
| @type | 必須 | “Product” と記載 |
| name | 必須 | 商品名 |
| image | 必須 | 商品画像URL(配列可) |
| description | 推奨 | 商品説明文 |
| sku | 推奨 | 商品コード |
| gtin(gtin8 / gtin12 / gtin13 / gtin14) | 推奨 | 国際商品識別コード(JAN・UPC等) |
| brand | 推奨 | ブランド名 |
| offers | 必須 | 価格・在庫情報(Offer構造) |
| aggregateRating | 任意 | レビュー平均評価(あれば) |
| review | 任意 | 個別レビュー(任意) |
Schema記述例
{
"@context": "https://schema.org/",
"@type": "Product",
"name": "EcoSmart ステンレスボトル 500ml",
"image": [
"https://example.com/photos/bottle-front.jpg",
"https://example.com/photos/bottle-side.jpg"
],
"description": "環境に優しい再利用可能なステンレスボトル。保温・保冷対応。",
"sku": "SB500ML",
"gtin13": "4901234567894",
"brand": {
"@type": "Brand",
"name": "EcoSmart"
},
"offers": {
"@type": "Offer",
"url": "https://example.com/products/ecosmart-bottle-500ml",
"priceCurrency": "JPY",
"price": "2200",
"availability": "https://schema.org/InStock"
}
}公式リファレンスリンク
- Google公式:Product の構造化データについて
- Schema.org:Product
バリエーション商品(hasVariant / additionalProperty)
概要
サイズ・カラー・容量など複数バリエーションがある商品を整理するための構造。hasVariantやadditionalPropertyを使用することで、検索エンジンがバリエーションを正確に理解し、在庫や価格差を認識できます。
主な対象ページ
複数サイズ・色を同一ページに掲載する商品詳細ページ
主な項目
| プロパティ | 必須/任意 | 内容 |
|---|---|---|
| hasVariant | 推奨 | バリエーション商品のリスト |
| additionalProperty | 任意 | カラー・サイズ・容量などの属性情報 |
| offers | 推奨 | 各バリエーションごとの価格・在庫情報 |
Schema記述例
{
"@context": "https://schema.org/",
"@type": "Product",
"name": "Smart T-Shirt",
"hasVariant": [
{
"@type": "Product",
"name": "Smart T-Shirt (Blue, M)",
"sku": "ST-BL-M",
"additionalProperty": {
"@type": "PropertyValue",
"name": "Color",
"value": "Blue"
},
"offers": {
"@type": "Offer",
"price": "1980",
"priceCurrency": "JPY",
"availability": "https://schema.org/InStock"
}
},
{
"@type": "Product",
"name": "Smart T-Shirt (Gray, L)",
"sku": "ST-GR-L",
"additionalProperty": {
"@type": "PropertyValue",
"name": "Color",
"value": "Gray"
},
"offers": {
"@type": "Offer",
"price": "2100",
"priceCurrency": "JPY",
"availability": "https://schema.org/InStock"
}
}
]
}公式リファレンスリンク
- Google公式:バリエーション商品用構造化データ(ProductGroup、Product)
- Schema.org:ProductGroup
パンくずリスト(BreadCrumb)
概要
ページの階層構造を検索エンジンに伝える基本情報。「トップ > カテゴリ > 商品」など、ユーザーの経路と一致させることが大切です。BreadcrumbList構造化データを実装することで、検索結果にパンくずリストが表示され、ユーザーがサイト構造を理解しやすくなり、CTR向上につながります。また、クローラーがサイトの階層構造を正確に把握できるため、インデックス効率も向上します。
主な対象ページ
全ページ(トップページ、カテゴリページ、商品詳細ページなど、階層構造を持つすべてのページ)
主な項目
| プロパティ | 必須/推奨 | 内容 |
|---|---|---|
| @type | 必須 | “BreadcrumbList” と記載 |
| itemListElement | 必須 | パンくずアイテムのリスト(ListItem型) |
| itemListElement.item | 必須 | 各階層のURL |
| itemListElement.name | 必須 | 各階層の表示名 |
| itemListElement.position | 必須 | 階層の順序(1から始まる数字) |
Schema記述例
{
"@context": "https://schema.org/",
"@type": "BreadcrumbList",
"itemListElement": [
{
"@type": "ListItem",
"position": 1,
"name": "ホーム",
"item": "https://example.com/"
},
{
"@type": "ListItem",
"position": 2,
"name": "キッチン用品",
"item": "https://example.com/categories/kitchen"
},
{
"@type": "ListItem",
"position": 3,
"name": "EcoSmart ステンレスボトル 500ml",
"item": "https://example.com/products/ecosmart-bottle-500ml"
}
]
}公式リファレンスリンク
- Google公式:パンくずリスト(BreadcrumbList)の構造化データ
- Schema.org:BreadcrumbList
商品一覧(ItemList)
概要
一覧ページに掲載された複数の商品情報を伝える構造化データ。positionやurlを実際の表示順と合わせることで、クローラが構造を正しく把握できます。商品一覧ページにItemList構造化データを実装することで、検索エンジンが「このページには複数の商品が掲載されている」ことを理解し、各商品へのクロールが効率的になります。
主な対象ページ
商品カテゴリ一覧ページ、検索結果ページ、おすすめ商品一覧ページなど
主な項目
| プロパティ | 必須/推奨 | 内容 |
|---|---|---|
| @type | 必須 | “ItemList” と記載 |
| itemListElement | 必須 | 商品リスト(Product型の配列) |
| itemListElement.item | 必須 | 各商品の情報(Product型またはURL) |
| itemListElement.position | 必須 | 商品の表示順序(1から始まる数字) |
| numberOfItems | 推奨 | 一覧内の商品総数 |
| itemListElement.item.offers | 推奨 | 各商品の価格・在庫情報(Offer構造) |
| itemListElement.item.aggregateRating | 任意 | 各商品のレビュー平均評価(あれば) |
Schema記述例
{
"@context": "https://schema.org/",
"@type": "ItemList",
"numberOfItems": 3,
"itemListElement": [
{
"@type": "ListItem",
"position": 1,
"item": {
"@type": "Product",
"name": "EcoSmart ステンレスボトル 500ml",
"url": "https://example.com/products/ecosmart-bottle-500ml",
"image": "https://example.com/photos/bottle-front.jpg",
"offers": {
"@type": "Offer",
"url": "https://example.com/products/ecosmart-bottle-500ml",
"priceCurrency": "JPY",
"price": "2200",
"availability": "https://schema.org/InStock"
},
"aggregateRating": {
"@type": "AggregateRating",
"ratingValue": "4.5",
"reviewCount": "120",
"bestRating": "5",
"worstRating": "1"
}
}
},
{
"@type": "ListItem",
"position": 2,
"item": {
"@type": "Product",
"name": "EcoSmart ステンレスボトル 750ml",
"url": "https://example.com/products/ecosmart-bottle-750ml",
"image": "https://example.com/photos/bottle-750-front.jpg",
"offers": {
"@type": "Offer",
"url": "https://example.com/products/ecosmart-bottle-750ml",
"priceCurrency": "JPY",
"price": "2500",
"availability": "https://schema.org/InStock"
},
"aggregateRating": {
"@type": "AggregateRating",
"ratingValue": "4.3",
"reviewCount": "85",
"bestRating": "5",
"worstRating": "1"
}
}
},
{
"@type": "ListItem",
"position": 3,
"item": {
"@type": "Product",
"name": "EcoSmart ステンレスボトル 1000ml",
"url": "https://example.com/products/ecosmart-bottle-1000ml",
"image": "https://example.com/photos/bottle-1000-front.jpg",
"offers": {
"@type": "Offer",
"url": "https://example.com/products/ecosmart-bottle-1000ml",
"priceCurrency": "JPY",
"price": "2800",
"availability": "https://schema.org/InStock"
},
"aggregateRating": {
"@type": "AggregateRating",
"ratingValue": "4.7",
"reviewCount": "95",
"bestRating": "5",
"worstRating": "1"
}
}
}
]
}公式リファレンスリンク
- Google公式:カルーセル(ItemList)の構造化データ
- Schema.org:ItemList
レビュー(Review / AggregateRating)
概要
ユーザーのレビューや平均評価をマークアップ。ガイドライン違反にならないように、実際のレビュー内容と整合性を保つことが重要です。Product構造化データ内にReviewやAggregateRatingを追加することで、検索結果に評価スター(★)やレビュー数が表示され、CTR向上が期待できます。ただし、実際のレビューが存在しないページに虚偽の評価を設定することは厳禁であり、Googleのガイドライン違反となります。レビュー構造化データは、実際に投稿されたユーザーレビューと一致させる必要があります。
主な対象ページ
レビュー機能がある商品詳細ページ
主な項目
| プロパティ | 必須/推奨 | 内容 |
|---|---|---|
| aggregateRating | 推奨 | 平均評価情報(AggregateRating型) |
| aggregateRating.ratingValue | 必須 | 平均評価点(例:4.5) |
| aggregateRating.reviewCount | 必須 | レビュー総数(例:120) |
| aggregateRating.bestRating | 推奨 | 最高評価点(通常5) |
| aggregateRating.worstRating | 推奨 | 最低評価点(通常1) |
| review | 任意 | 個別レビュー(Review型の配列) |
| review.author | 必須 | レビュー投稿者名 |
| review.datePublished | 必須 | レビュー投稿日 |
| review.reviewBody | 必須 | レビュー本文 |
| review.reviewRating | 推奨 | レビュー評価(Rating型) |
Schema記述例
{
"@context": "https://schema.org/",
"@type": "Product",
"name": "EcoSmart ステンレスボトル 500ml",
"aggregateRating": {
"@type": "AggregateRating",
"ratingValue": "4.5",
"reviewCount": "120",
"bestRating": "5",
"worstRating": "1"
},
"review": [
{
"@type": "Review",
"author": {
"@type": "Person",
"name": "田中 太郎"
},
"datePublished": "2024-01-15",
"reviewBody": "保温効果が素晴らしく、デザインもお気に入りです。",
"reviewRating": {
"@type": "Rating",
"ratingValue": "5",
"bestRating": "5"
}
},
{
"@type": "Review",
"author": {
"@type": "Person",
"name": "佐藤 花子"
},
"datePublished": "2024-01-10",
"reviewBody": "軽量で使いやすいですが、蓋の開け閉めが少し硬いです。",
"reviewRating": {
"@type": "Rating",
"ratingValue": "4",
"bestRating": "5"
}
}
]
}公式リファレンスリンク
- Google公式:クチコミ抜粋(Review、AggregateRating)の構造化データ
- Schema.org:Review、AggregateRating
よくある質問(FAQPage / Question / Answer)
概要
以前はリッチリザルトにアコーディオン形式で表示されていましたが、現在は廃止されています。そのためリッチリザルトスニペットを期待することはできません。クローラビリティ向上の一環として捉えた上で実装しましょう。FAQ構造化データを実装することで、検索エンジンがページ内の質問と回答の関係を理解しやすくなります。また、生成AI(SGE・ChatGPT等)がFAQ情報を引用しやすくなるため、GEO(生成エンジン最適化)の観点からも価値があります。
主な対象ページ
FAQページ、商品詳細ページ内のQ&Aセクション、ヘルプページなど
主な項目
| プロパティ | 必須/推奨 | 内容 |
|---|---|---|
| @type | 必須 | “FAQPage” と記載 |
| mainEntity | 必須 | 質問と回答のリスト(Question型の配列) |
| mainEntity.name | 必須 | 質問文 |
| mainEntity.acceptedAnswer | 必須 | 回答情報(Answer型) |
| mainEntity.acceptedAnswer.text | 必須 | 回答本文 |
| mainEntity.acceptedAnswer.@type | 必須 | “Answer” と記載 |
Schema記述例
{
"@context": "https://schema.org/",
"@type": "FAQPage",
"mainEntity": [
{
"@type": "Question",
"name": "EcoSmart ステンレスボトルは電子レンジで使用できますか?",
"acceptedAnswer": {
"@type": "Answer",
"text": "いいえ、電子レンジでのご使用はできません。ステンレス製のため、電子レンジでの使用は避けてください。代わりに、保温・保冷機能を活用してお使いいただけます。"
}
},
{
"@type": "Question",
"name": "洗浄方法について教えてください",
"acceptedAnswer": {
"@type": "Answer",
"text": "中性洗剤とスポンジで手洗いしていただくか、食洗機でお洗いいただけます。漂白剤の使用は避けてください。"
}
},
{
"@type": "Question",
"name": "保冷・保温時間はどれくらいですか?",
"acceptedAnswer": {
"@type": "Answer",
"text": "冷たい飲み物は約6時間、温かい飲み物は約8時間、適温を保つことができます。使用環境によって多少変動します。"
}
}
]
}公式リファレンスリンク
- Google公式:よくある質問(FAQPage、Question、Answer)の構造化データ
- Schema.org:FAQPage、Question、Answer
サイトリンク検索ボックス(WebSite)
概要
トップページに実装することで検索結果にサイト内検索ボックスを表示できましたが、2024年11月21日をもってGoogleが「Sitelinks Search Box」リッチリザルトの提供を正式に終了しました(公式発表)。
主な対象ページ
サイトトップページ(1つのみ)
主な項目
| プロパティ | 必須/推奨 | 内容 |
|---|---|---|
| @type | 必須 | “WebSite” |
| url | 必須 | サイトURL |
| potentialAction | 推奨 | 内部検索アクション定義(SearchAction) |
Schema記述例
{
"@context": "https://schema.org/",
"@type": "WebSite",
"url": "https://example.com/",
"potentialAction": {
"@type": "SearchAction",
"target": "https://example.com/search?q={search_term_string}",
"query-input": "required name=search_term_string"
}
}実際にschemaを実装する3つの方法
構造化データの実装形式は複数ありますが、Google推奨は「JSON-LD形式」です。HTMLに直接埋め込むMicrodata形式に比べて、メンテナンスが容易でコード管理もしやすいのが特徴です。実装方法は、ECサイトのシステム構成や運用体制によって異なります。代表的な3つの手段を紹介します。
① ECシステムの標準機能で出力
ECシステムによっては、構造化データの出力機能が標準で備わっています。この場合は管理画面上で設定を行うだけで、基本的なProductやBreadcrumbListが自動生成されます。機能が無い場合はテンプレートに記述します。
② テンプレート側で記述
テンプレート内で、JavaScriptやサーバーサイド変数を使って直接schemaを出力する方法です。画面に表示されている商品データ(価格、在庫、商品名など)をそのままJSON-LDに反映させることができ、柔軟な制御が可能です。
ただし、この方法はフロントエンドエンジニアとの連携が必要で、デザイン改修やテンプレート更新時に影響を受けやすい点には注意が必要です。
③ GTM(Google Tag Manager)で記述
GTM上でカスタムHTMLタグを用い、JavaScript経由で構造化データを出力する方法です。テンプレートのコード修正が不要なため、開発環境に触れられない運用担当者でも柔軟に対応できます。
この方法は以前は正式な実装方法として認められていませんでしたが、今ではGoogle公式のドキュメントにも記載されるようになりました(JavaScript を使用して構造化データを生成する)。
ただし、GTMで生成する構造化データはHTMLレンダリング後に挿入されるため、テンプレート側のHTML構造が変更された場合は変数やセレクタの再調整が必要になります。
検証とメンテナンス
構造化データを実装したら、必ず検証と継続的なメンテナンスを行いましょう。正しい形式で実装していても、テンプレートの更新や商品データの変更によってエラーが発生することがあります。検証には、Google公式ツールとSchema.org公式ツールを組み合わせて使用するのが効果的です。
リッチリザルトテストでの確認(Google公式)
Googleが提供するリッチリザルトテストツールでは、構造化データが正しく認識されているかを即時に確認できます。このツールは、Google検索結果におけるリッチリザルト表示の可否を直接確認できる唯一の公式ツールです。
主なチェックポイントは以下の通りです。
- JSON-LDの文法エラーがないか(波括弧やカンマの不整合など)
- 必須プロパティ(例:name, image, offers.price, offers.availability)が正しく設定されているか
- Googleがリッチリザルト対象として認識しているタイプ(Product、FAQPage、Reviewなど)かどうか
- テスト結果が「有効」「警告あり」「エラーあり」のどれに該当するか
特にProductタイプでは、価格・在庫・レビューの整合性が崩れやすいため、定期的にチェックを行うことをおすすめします。
なお、リッチリザルトテストで「有効」と表示されても、実際の検索結果でリッチリザルトが表示されるかどうかはGoogleのアルゴリズムによる判断に依存します。完璧なマークアップをしていても、100%表示されるわけではない点にご注意ください。
Schema.org公式バリデーターでの確認(構文レベルの精度検証)
Schema Markup Validatorは、構造化データの構文やスキーマ定義の正しさを検証する公式ツールです。Googleに限らず、Bing・Yahooなど他の検索エンジンも参照する、構造化データ仕様の本家にあたります。
こちらでは以下のような観点での確認が可能です。
- Schema.org仕様に沿って定義されているか(非推奨・誤記述の検出)
- @typeや@contextが正しいスキーマ階層に基づいているか
- Google未対応の拡張スキーマ(例:LocalBusiness, OfferCatalog)も含めた構文チェック
- JSON-LD以外(Microdata形式など)にも対応
リッチリザルトテストは「Google検索での見え方」を重視するのに対し、Schema.org Validatorは「データ構造としての正しさ」を確認するためのツールです。両者を併用することで、検索エンジンに依存しない安定したデータ品質を保つことができます。
Search Consoleでのモニタリング
構造化データを本番環境に反映したら、Google Search Console(サーチコンソール)で継続的に監視します。Search Consoleの「拡張レポート」では、サイト全体の構造化データを自動的に分析し、以下のような情報を提供してくれます。
- 検出された構造化データタイプの一覧(Product、BreadcrumbList、FAQPageなど)
- エラー/警告/有効件数の推移グラフ
- ページ単位のエラー内容(例:priceCurrency欠損、URL不一致など)
- エラー修正後の再検証リクエスト機能
代表的な警告・エラー例:
- offers の priceCurrency(通貨コード)が欠損している
- canonical URL と構造化データ内の url が一致していない
- ページ内にレビューが存在しないのに AggregateRating が設定されている
Search Consoleでは、これらの問題を一覧で確認できるため、商品テンプレートの更新やGTMタグ修正後に自動的に検知・アラート対応が可能です。
公式ドキュメントで仕様を確認する
構造化データは仕様変更や追加スキーマが定期的に行われます。特にEC領域で利用するProductスキーマはアップデート頻度が高いため、以下の公式ドキュメントを定期的に確認しましょう。
Schema.org公式スキーマ一覧
Schema.org公式スキーマ一覧
構造化データの全タイプ・プロパティ・階層構造を確認できます。Googleがまだ対応していないスキーマも含まれるため、将来的な拡張にも有効です。
Google公式ドキュメント
Google 検索における構造化データのマークアップの概要
Googleからの構造化データに関する公式ドキュメント。リッチリザルトと構造化データの仕様を把握するにはこのドキュメントを参照しましょう。
特にGoogleドキュメント内の「必須プロパティ」「推奨プロパティ」は、実装前に必ず確認し、ECシステムやGTMの出力設定と突き合わせておきましょう。
まとめ:構造化データはECサイトの基礎体力
構造化データは「一度実装して終わり」ではなく、サイト運用とともに育てていく要素です。検索仕様やスキーマ定義は更新されることもあるため、定期的な検証とメンテナンスを習慣化しておくことで、長期的に安定したSEO・GEO効果を得ることができます。
このように、「Google公式ツール(表示確認)」「Schema.org公式バリデータ(構文確認)」「Search Console(運用監視)」の三段構えで管理するのが理想です。これらを運用フローに組み込むことで、構造化データは“実装して終わり”ではなく、“サイト品質を支える基盤”として活用していきましょう。
TRYANGLEにご相談ください