リッチリザルトのために Shopify に構造化データを実装する
リッチリザルト (製品評価、価格表示、よくある質問のドロップダウン、検索結果のパンくずリスト) は、標準の青色のリンクよりも 20 ~ 30% 多くのクリックを獲得します。 Shopify 販売者にとって、構造化データは、これらの拡張フォーマットを解放するメカニズムであり、それを適切に導入している店舗と収益に直接結びつかない店舗との間の導入ギャップを実現します。
このガイドでは、Shopify ストアに関連するすべてのスキーマ タイプ、つまりスキーマを正しく実装する方法、リッチリザルトの対象外となる一般的な間違い、カタログ全体で実装を検証する方法について説明します。
重要なポイント
- AggregateRating を使用した商品スキーマは、SERP で星評価を獲得します。通常、CTR が 15 ~ 25% 向上します。
- スキーマ内の価格と在庫状況は、表示される値と正確に一致する必要があります。そうでない場合、Google はリッチリザルトの資格を削除します
- BreadcrumbList スキーマは、検索結果の URL パスを読み取り可能なナビゲーション ラベルに置き換えることができます
- FAQPage スキーマにより、情報および商業クエリ用の SERP 領域が 2 倍になります
- JSON-LD は Google が推奨する形式であり、動的データ インジェクションでサポートされる唯一の形式です
- Search Console の構造化データ エラーは修正後、解決するまでに 2 ~ 4 週間かかる場合があります
- Shopify のデフォルトのテーマには最小限のスキーマが含まれています — 重要な実装作業が残っています
- ペナルティを避けるために、Merchant Center の商品データ フィードとページ上のスキーマは一貫している必要があります
Shopify での構造化データの仕組み
構造化データは、ページの HTML に埋め込まれた機械可読なメタデータであり、ページ上にどのような種類のコンテンツがあるかを検索エンジンに正確に伝えます。これがないと、Google はテキスト、リンク、シグナルからページのコンテンツを推測します。これはあいまいなプロセスです。正確な構造化データがあれば、Google は自信を持ってリッチリザルト形式で商品を表示できます。
Shopify のデフォルトの Dawn テーマには、name、description、image、offers.price を含む基本的な Product スキーマが含まれています。これにより基礎は得られますが、リッチリザルトの資格を完全に解除するための重要なプロパティが欠けています。
AggregateRating(結果の星評価)brandとOrganizationまたはBrandタイプoffers.availabilityを schema.org URL として使用offers.priceCurrency(明示的な通貨コード)- コード0
BreadcrumbList(別のスキーマ ブロック)
プロパティを追加するたびに、Google がリッチ フォーマットでリスティングを表示する可能性が高くなります。
JSON-LD 対 microdata 対 RDFa
JSON-LD (JavaScript Object Notation for Linked Data) は、Google が推奨する実装方法であり、最も保守しやすいアプローチです。 HTML 要素をスキーマ属性でラップする必要がある microdata とは異なり、JSON-LD は自己完結型のスクリプト ブロックであり、ページ マークアップを変更せずに挿入できます。新しい Shopify 実装には常に JSON-LD を使用してください。
製品スキーマ: 完全な実装
製品スキーマは、Shopify eコマース構造化データの基盤です。以下は、実稼働対応の完全な製品スキーマ テンプレートです。
{
"@context": "https://schema.org",
"@type": "Product",
"name": "{{ product.title | escape }}",
"description": "{{ product.description | strip_html | truncate: 300 | escape }}",
"url": "{{ shop.url }}{{ product.url }}",
"sku": "{{ product.selected_or_first_available_variant.sku | escape }}",
"mpn": "{{ product.selected_or_first_available_variant.barcode | escape }}",
"image": [
{% for image in product.images limit: 5 %}
"{{ image | image_url: width: 1200 }}"{% unless forloop.last %},{% endunless %}
{% endfor %}
],
"brand": {
"@type": "Brand",
"name": "{{ product.vendor | escape }}"
},
"offers": {
"@type": "Offer",
"url": "{{ shop.url }}{{ product.url }}",
"priceCurrency": "{{ cart.currency.iso_code }}",
"price": "{{ product.selected_or_first_available_variant.price | money_without_currency | remove: ',' }}",
"priceValidUntil": "{{ 'now' | date: '%Y' | plus: 1 }}-12-31",
"availability": "{% if product.available %}https://schema.org/InStock{% else %}https://schema.org/OutOfStock{% endif %}",
"itemCondition": "https://schema.org/NewCondition",
"seller": {
"@type": "Organization",
"name": "{{ shop.name | escape }}"
}
}
{% if product.metafields.reviews.rating %}
,"aggregateRating": {
"@type": "AggregateRating",
"ratingValue": "{{ product.metafields.reviews.rating.value }}",
"reviewCount": "{{ product.metafields.reviews.rating_count }}",
"bestRating": "5",
"worstRating": "1"
}
{% endif %}
}
Shopify での実装
このスクリプト ブロックを、product.liquid または product-template.liquid ファイルの <script type="application/ld+json"> タグ内に追加します。 <head> セクションまたは </body> の直前に配置します。Google は両方の位置を同等に処理します。
重要なフィールドとそれが重要な理由:
| プロパティ | なぜそれが重要なのか | よくあるエラー |
|---|---|---|
| コード0 | 結果での価格表示に必須 | 通貨記号またはカンマを含む |
| コード0 | ISO 4217 コード (USD、EUR、GBP) | 「USD」の代わりに「$」を使用する |
| コード0 | テキスト文字列ではなく、Schema.org URL が必要です | URL の代わりに「在庫あり」を使用する |
| コード0 | 配列が好ましい。複数の画像により資格が向上します | 相対 URL の使用 |
| コード0 | Google Merchant Center のマッチングに必要 | SKU のない製品の場合は空のままにします。 |
AggregateRating: 検索結果での星評価の獲得
星評価は、Shopify 製品ページで最も目立つリッチリザルトです。 Product スキーマ内にネストされた AggregateRating スキーマが必要です。
星評価の資格要件:
- 評価は実際の顧客レビューに基づいている必要があります。編集的に割り当てられたものではありません
ratingValueは 1 からbestRating値の間でなければなりませんreviewCountは、ページに実際に表示されるレビューの数と一致する必要があります- レビューは同じページ上のユーザーに表示される必要があります
人気の Shopify レビュー アプリとスキーマの互換性:
| アプリ | スキーマ出力 | メモ |
|---|---|---|
| ジャッジミー | JSON-LD 製品 + 総合評価 | クラス最高のスキーマ出力 |
| オーケンド | JSON-LD 総合評価 | 設定で有効にする必要があります |
| ヨットポ | JSON-LD ですが、多くの場合不完全です | 価格と在庫状況フィールドを確認する |
| ルークス | 限られたスキーマでの写真レビュー | カスタム スキーマの補足が必要な場合があります |
| スタンプド.io | JSON-LD、構成可能 | アプリ設定で構造化データを有効にする |
レビュースキーマがアクティブであることを確認しています
レビューのある商品ページで Google のリッチリザルト テストを使用します。テストで AggregateRating と有効な ratingValue および reviewCount が示された場合、星評価の対象となります。注: 資格があるからといって表示が保証されるわけではありません。リッチリザルトをいつ表示するかは Google がアルゴリズムで決定します。
ナビゲーション コンテキストの BreadcrumbList スキーマ
BreadcrumbList スキーマは、特定のページのサイトのナビゲーション階層を Google に伝えます。 Google がこれを検索結果に表示すると、完全な URL が読みやすいブレッドクラム ラベルに置き換えられ、結果がより整理されてナビゲートしやすくなり、CTR が向上します。
Shopify 製品ページのブレッドクラム構造:
{
"@context": "https://schema.org",
"@type": "BreadcrumbList",
"itemListElement": [
{
"@type": "ListItem",
"position": 1,
"name": "Home",
"item": "{{ shop.url }}"
},
{
"@type": "ListItem",
"position": 2,
"name": "{{ collection.title | escape }}",
"item": "{{ shop.url }}{{ collection.url }}"
},
{
"@type": "ListItem",
"position": 3,
"name": "{{ product.title | escape }}",
"item": "{{ shop.url }}{{ product.url }}"
}
]
}
実装上の注意: 製品が複数のコレクションに属している場合、パンくずリストにはユーザーが入力したコレクションが反映されている必要があります。 Shopify Liquid では、コレクション URL を通じて製品にアクセスすると、collection が使用可能になります。条件付きでコレクションのパンくずリストを含めることで、collection が nil (/products/ URL への直接アクセス) の場合を処理します。
購入ガイドと製品ページの FAQPage スキーマ
FAQPage スキーマにより、検索結果で拡張可能な FAQ ドロップダウンが可能になり、SERP 内でリストが占める垂直方向のスペースが 2 倍になります。これは、以下の場合に特に価値があります。
- よくあるお客様の質問を記載した製品ページ
- 購入ガイドのブログ投稿
- カテゴリレベルのFAQを含むコレクションページ
- サービスとポリシーのページ
FAQPage スキーマ テンプレート:
{
"@context": "https://schema.org",
"@type": "FAQPage",
"mainEntity": [
{
"@type": "Question",
"name": "What size should I order?",
"acceptedAnswer": {
"@type": "Answer",
"text": "We recommend sizing up if you are between sizes. See our size guide for measurements."
}
},
{
"@type": "Question",
"name": "What is your return policy?",
"acceptedAnswer": {
"@type": "Answer",
"text": "We accept returns within 30 days of delivery for unused items in original packaging. Free return shipping is included."
}
}
]
}
FAQPage スキーマのルール:
- 質問と回答はページ上に表示される必要があります。非表示または折りたたまれたコンテンツは含めないでください。
- 真の価値を提供するには、回答は包括的 (2 ~ 5 文) である必要があります。
- FAQ スキーマを、回答を装ったプロモーション コンテンツや行動喚起のテキストに使用しないでください。
- クリーンなレンダリングのために、ページあたり最大 10 個の FAQ 項目
- 回答のスキーマ
textフィールド内に HTML マークアップを含めてはなりません
組織と Web サイトのスキーマ
これらのスキーマによりブランド エンティティが確立され、Google の検索結果でサイトリンクの検索ボックスが有効になります。
組織スキーマ (ホームページ <head> に配置):
{
"@context": "https://schema.org",
"@type": "Organization",
"name": "{{ shop.name | escape }}",
"url": "{{ shop.url }}",
"logo": {
"@type": "ImageObject",
"url": "{{ settings.logo | image_url: width: 200 }}"
},
"contactPoint": {
"@type": "ContactPoint",
"telephone": "+1-XXX-XXX-XXXX",
"contactType": "customer service"
},
"sameAs": [
"https://www.instagram.com/yourstore",
"https://www.facebook.com/yourstore",
"https://twitter.com/yourstore"
]
}
サイトリンク検索ボックスを使用した Web サイト スキーマ:
{
"@context": "https://schema.org",
"@type": "WebSite",
"name": "{{ shop.name | escape }}",
"url": "{{ shop.url }}",
"potentialAction": {
"@type": "SearchAction",
"target": {
"@type": "EntryPoint",
"urlTemplate": "{{ shop.url }}/search?q={search_term_string}"
},
"query-input": "required name=search_term_string"
}
}
SearchAction スキーマを使用すると、Google SERP リスト内のブランド検索用の検索ボックスを有効にすることができ、ユーザーが結果ページからストアを直接検索できるようになります。
製品デモンストレーション用のビデオ スキーマ
製品ページにデモ ビデオが含まれている場合、VideoObject スキーマは検索結果でビデオ カルーセルを獲得できます。これは、特に検討度の高い製品の場合に役立ちます。
{
"@context": "https://schema.org",
"@type": "VideoObject",
"name": "{{ product.title }} - Product Demo",
"description": "Watch how {{ product.title }} works in this demonstration.",
"thumbnailUrl": "{{ product.featured_image | image_url: width: 1280 }}",
"uploadDate": "{{ product.created_at | date: '%Y-%m-%dT%H:%M:%S+00:00' }}",
"contentUrl": "https://www.youtube.com/watch?v=YOUR_VIDEO_ID",
"embedUrl": "https://www.youtube.com/embed/YOUR_VIDEO_ID"
}
セマンティックを最大限に豊かにするために、subjectOf プロパティを使用して Product スキーマ内に VideoObject をネストします。
スキーマでの製品バリアントの処理
複数のバリエーション (サイズ、色、素材) がある Shopify 製品には、慎重なスキーマの処理が必要です。 Google では、商品ページごとに 1 つの Product スキーマ (バリアントごとに 1 つではない) を推奨していますが、現在選択されているバリアントの価格と在庫状況を反映する必要があります。
動的バリアント スキーマ戦略:
- 初期ページ読み込みに
product.selected_or_first_available_variantを使用して、スキーマをサーバー側 (Liquid 経由) でレンダリングします。 - バリアントが選択されたときに、JavaScript を使用して JSON-LD の
price、availability、およびsku値を更新します。 offers.urlの URL を更新して、バリアント ID パラメーター?variant=XXXXXXXXを含めます。
あるいは、JavaScript を多用するストアフロントの場合は、すべてのバリアント オプションを含む商品を表す別の ProductGroup スキーマ タイプを使用します。これは、マルチバリアント商品に対する Google の新しい推奨事項です。
検証と監視のワークフロー
構造化データの実装には、導入時だけでなく継続的な体系的な検証が必要です。
ステップ 1: ページレベルの検証
Google のリッチリザルト テスト (search.google.com/test/rich-results) を使用して、すべてのスキーマ タイプをテストします。製品の URL、コレクションの URL、ブログ投稿の URL を入力します。検証: 必要なプロパティがすべて存在し、エラーがなく (警告のみが許容されます)、リッチリザルトの資格が確認されました。
ステップ 2: 一括検証
何千もの商品を扱う店舗の場合、ページごとの検証は現実的ではありません。次の一括方法を使用します。
- Google Search Console > 機能強化 > 製品、レビュー、よくある質問のセクションでサイト全体のエラーを確認する
- クロールされたページからすべての JSON-LD を取得する「抽出」機能を備えた Screaming Frog
- Schema.org バリデーター API (一括検証用のスクリプト作成可能)
ステップ 3: Merchant Center の一貫性
Google ショッピングを実行している場合は、Merchant Center の商品データ フィードがページ上のスキーマと一致していることを確認してください。フィードとスキーマの間で価格、在庫状況、GTIN に不一致がある場合、「自動商品アイテムの不承認」が発生します。
ステップ 4: Search Console の毎月のモニタリング
GSC で、「拡張機能」セクションに移動します。実装した各スキーマ タイプは、有効な項目数、警告数、エラー数とともにここに表示されます。エラーは検出されてから 48 時間以内に対処します。解決されるまでリッチリザルトの資格は抑制されます。
Shopify でよくある構造化データ エラー:
| エラー | 原因 | 修正 |
|---|---|---|
| 「フィールド「価格」がありません」 | 液体レンダリングの空の価格 | フォールバックを追加: `product.price |
| "フィールド 'availability' の値が無効です。" | schema.org URL の代わりにテキストを使用する | https://schema.org/InStock を使用する |
| "フィールド「評価値」の値の形式が正しくありません" | 評価値が 1 ~ 5 の範囲外 | アプリの出力範囲が正しいことを検証する |
| "重複フィールド" | 同じタイプを注入する複数のスキーマ スクリプト | 重複したスキーマ ソースを削除する |
| 「ページには対象となるリッチリザルトがありません」 | スキーマは有効ですが、ページが品質しきい値を下回っています | ページコンテンツの品質を向上させる |
よくある質問
構造化データは検索ランキングを直接的に向上させますか?
構造化データは検索ランキングに直接影響しません。従来の意味でのランキングシグナルではありません。ただし、リッチリザルト (正確な構造化データが必要) では、クリックスルー率が 15 ~ 30% 向上します。これは、時間の経過とともに間接的にランキングに影響を与える可能性がある行動シグナルです。より直接的には、リッチリザルトにより、同じ平均掲載順位からトラフィック量が増加し、既存の SEO パフォーマンスの価値が効果的に倍増します。
構造化データを実装してからどれくらいの期間でリッチリザルトが Google に表示されますか?
Google は通常、実装後 1 ~ 4 週間以内に構造化データを再クロールして処理します。処理後のリッチリザルトの適格性は、ページの品質シグナル、レビューデータの信頼性、リッチ フォーマットを表示するタイミングに関する Google のアルゴリズムの決定によって決まります。 Google のリッチリザルト テスト (リアルタイムで処理) で結果が表示される場合がありますが、SERP の表示が更新されるまでさらに数週間かかります。
テーマ ファイルを編集する代わりに、Shopify アプリを使用して構造化データを管理できますか?
SEO Manager、JSON-LD for SEO、Schema Plus for SEO などのアプリは、テーマを編集せずに構造化データを挿入します。これらはほとんどの店舗で機能し、有効なアプローチです。ただし、テーマ ファイルにスキーマを手動で実装すると、プロパティ値をより詳細に制御できるようになり、アプリの依存関係のリスクが排除され、一部のアプリで発生する JavaScript レンダリングの遅延が回避されます。エンタープライズ ストアの場合は、テーマ レベルの実装をお勧めします。
構造化データにエラーがある場合はどうなりますか?
通常、軽微なエラー (警告) によってリッチリザルトの表示が妨げられることはありませんが、Google が表示するリッチ フォーマットが制限される場合があります。重大なエラー (必須フィールドの欠落、無効な値) により、影響を受けるスキーマは完全にリッチリザルトの対象外になります。スキーマ エラーはランキングのペナルティを引き起こしません。Google は単に無効なマークアップを無視します。エラーをすぐに修正して、リッチリザルトの資格を回復します。
すべてのページにスキーマを実装する必要がありますか、それとも製品ページのみに実装する必要がありますか?
本物の価値を提供する場所にスキーマを実装します。製品スキーマはすべての製品ページにあり、コレクション ページではItemList スキーマを使用できます。ブログ投稿には Article + FAQPage (該当する場合) スキーマが必要です。ホームページには組織 + WebSite スキーマがあり、ポリシー ページには WebPage スキーマが使用できます。ブレッドクラム スキーマは、ホームページを除くすべてのページに表示される必要があります。スキーマがページのコンテンツをより正確に記述するほど、より適切になります。
元の価格とセール価格でセール中の商品のスキーマを実装するにはどうすればよいですか?
priceSpecification プロパティを使用して両方の価格を指定します。元の価格には ListPrice、販売価格には Offer.price を指定します。あるいは、現在のセール価格には offers.price を使用し、セール終了日を示すには offers.priceValidUntil を使用します。 Google ショッピングのガイドラインでは、販売価格はユーザーが実際に支払う金額を反映する必要があります。ページに表示されている価格よりも高い価格をスキーマ内に表示しないでください。
次のステップ
Shopify ストア全体に包括的な構造化データを実装するには、特に動的なバリアント処理、レビューの統合、Merchant Center の一貫性については、Liquid テンプレート、JSON-LD 仕様、Google の検索ガイドラインにわたる技術的な専門知識が必要です。
ECOSIRE の Shopify SEO サービス には、すべてのスキーマ タイプに対する完全な構造化データの実装、製品カタログ全体にわたる検証、Merchant Center の同期、Search Console による継続的なモニタリングが含まれます。当社の実装では、展開後 4 ~ 6 週間以内にリッチリザルトの資格を一貫して達成します。
現在の構造化データを監査し、完全なリッチリザルト戦略を実装するには、Shopify SEO チームにお問い合わせください。
執筆者
ECOSIRE Research and Development Team
ECOSIREでエンタープライズグレードのデジタル製品を開発。Odoo統合、eコマース自動化、AI搭載ビジネスソリューションに関するインサイトを共有しています。
関連記事
Case Study: eCommerce Migration to Shopify with Odoo Backend
How a fashion retailer migrated from WooCommerce to Shopify and connected it to Odoo ERP, cutting order fulfillment time by 71% and growing revenue 43%.
Integrating GoHighLevel CRM with eCommerce Stores
Step-by-step guide to integrating GoHighLevel CRM with Shopify and WooCommerce. Sync orders, automate post-purchase flows, and recover abandoned carts at scale.
Odoo + Shopify Sync: Products, Orders, and Inventory
Complete guide to syncing Odoo 19 with Shopify. Covers product sync, real-time order import, bidirectional inventory, financial reconciliation, and multi-store management.