Shopify アパレル向け Product Schema 例
Shopify アパレル向けのコピーしてすぐ使える JSON-LD Product と ProductGroup schema 例 — サイズと色のバリアント、Offer、パンくず、AI 検索エンジンが商品ページを実際に引用するかを決める AggregateRating ルールを網羅。
Shopify 上のアパレル商品ページが AI ショッピングエンジンに引用されるかは、
JSON-LD がバリアント全体をどれだけ正確に記述しているかによって決まり
ます。ChatGPT、Perplexity、Gemini で「サイズ感のある麻シャツのミディアム」
と検索する買い手には、その特定バリアントが存在し、在庫があり、価格があり、
L や XL の兄弟と区別されていることを AI が認識する必要があります。バリ
アント詳細のない汎用 Product schema は AI に推測を強います;hasVariant
付き ProductGroup は確信を持って引用できるデータを与えます。
この例は 2 つのコピー対応 JSON-LD ブロックを提供します:バリアントマトリ
クス用の ProductGroup と、カテゴリ文脈用の BreadcrumbList。両方とも
Google Rich Results Test を綺麗に通過し、可視ページ内容を反映するよう
キャリブレーションされています(AI エンジンが実際に強制するルール)。
Product と ProductGroup の使い分け
| ユースケース | Schema | 理由 |
|---|---|---|
| 単一 SKU 商品(1 サイズ・1 色) | Product | バリアントマトリクスなし — ProductGroup はやり過ぎ。 |
| サイズバリアントのみのアパレル | ProductGroup + variesBy: size | AI ショッピングクエリはサイズ条件付き。 |
| 色バリアントのみのアパレル | ProductGroup + variesBy: color | AI クエリは色条件付き。 |
| サイズ × 色マトリクスのアパレル | ProductGroup + 両方の variesBy | バリアントのデカルト積;各 hasVariant がユニーク SKU。 |
| バンドル / キット(複数親) | アイテムごとの Product + カスタム isRelatedTo | ProductGroup は商品のバリアントを記述、複数商品バンドルではない。 |
Shopify のデフォルト Liquid テンプレートはバリアント数に関わらず
Product を出力します。多サイズのアパレルストアにとって ProductGroup
へのアップグレードは一度きりのテーマ編集(または自動処理する Shopify
アプリ)で、AI ショッピング引用向上の価値があります。
ProductGroup JSON-LD(バリアント付きアパレル)
商品ページテンプレートに貼り付け、プレースホルダー値を置き換え。例は
2 バリアントのサブセット;本番では実 SKU ごとに hasVariant エントリ
1 つ。
{
"@context": "https://schema.org",
"@type": "ProductGroup",
"name": "Linen Relaxed Shirt",
"description": "A breathable linen shirt in three colors, sizes XS–XL. 100% European linen, pre-washed for softness.",
"brand": {
"@type": "Brand",
"name": "Example Apparel"
},
"productGroupID": "linen-shirt-001",
"variesBy": ["https://schema.org/size", "https://schema.org/color"],
"hasVariant": [
{
"@type": "Product",
"sku": "LINEN-SHIRT-WHITE-M",
"name": "Linen Relaxed Shirt — White / M",
"color": "White",
"size": "M",
"material": "Linen",
"image": "https://example.com/products/linen-shirt-white.jpg",
"offers": {
"@type": "Offer",
"url": "https://example.com/products/linen-shirt?variant=white-m",
"priceCurrency": "USD",
"price": "79.00",
"availability": "https://schema.org/InStock",
"itemCondition": "https://schema.org/NewCondition"
}
},
{
"@type": "Product",
"sku": "LINEN-SHIRT-BLACK-S",
"name": "Linen Relaxed Shirt — Black / S",
"color": "Black",
"size": "S",
"material": "Linen",
"image": "https://example.com/products/linen-shirt-black.jpg",
"offers": {
"@type": "Offer",
"url": "https://example.com/products/linen-shirt?variant=black-s",
"priceCurrency": "USD",
"price": "79.00",
"availability": "https://schema.org/InStock",
"itemCondition": "https://schema.org/NewCondition"
}
}
]
} BreadcrumbList JSON-LD
ProductGroup を BreadcrumbList とペアリングして、AI エンジンが商品が
存在するカテゴリ階層を理解できるようにします。パンくず URL はページの
可視パンくずと完全一致する必要があります。
{
"@context": "https://schema.org",
"@type": "BreadcrumbList",
"itemListElement": [
{
"@type": "ListItem",
"position": 1,
"name": "Home",
"item": "https://example.com/"
},
{
"@type": "ListItem",
"position": 2,
"name": "Shirts",
"item": "https://example.com/collections/shirts"
},
{
"@type": "ListItem",
"position": 3,
"name": "Linen Relaxed Shirt",
"item": "https://example.com/products/linen-shirt"
}
]
} よくあるエラー(頻度順)
-
ページ上で可視でも選択可能でもないバリアントに markup する。 Schema は可視現実を反映する必要があります。商品ページが S / M / L しか表示しないのに JSON-LD が XS から XXL を宣言すると、AI エンジン はやがて 404 になるバリアントを引用しようとし、ストアを減点します。
-
レビューウィジェットがないのに AggregateRating を使う。 レビュー を可視表示する(Shopify レビューアプリを使う)か、schema フィールド を削除してください。捏造しないこと。
-
schema と可視商品ページ間の通貨・価格・在庫の不整合。 買い手は
$79を見るが schema は89.00を宣言 —— AI エンジンは schema の 数字を取り、引用し、買い手は騙された気分になります。さらに悪いこと に、Google は schema を信頼できないとフラグします。 -
複数バリアントで同じ
skuを再利用。 Shopify は一意な SKU を 生成しますが、マーチャントはしばしば上書きします。hasVariant内 の SKU 重複は AI エンジンによるバリアントの誤統合を引き起こします。 -
バリアント固有名が失われる方法で
ProductGroupとProductを 混在させる。 同じアイテムに両方を出力する場合は、Productインス タンスを親(バリアント詳細なし)に、ProductGroup.hasVariantにバリ アントを含めてください。グループ外で各バリアントにProductを出 力しないこと。 -
アパレル説明に医療的または支持のないクレームを追加。「姿勢矯正」 /「血行を促進」/「抗菌素材で皮膚病を予防」—— こうしたクレームは多 くの市場で規制されており、法的に問題なくても AI エンジンの減点を 引き起こします。フィットと素材の説明に留めましょう。
-
schema URL を非正規バリアント URL に向ける。 ページがカノニカル 商品 URL(例:
/products/linen-shirt)を使い、バリアントがクエリ パラメータ(?variant=white-m)で選択される場合でも、hasVariant[].offers.urlはバリアント固有 URL を指す必要があります —— そこが買い手(と AI エージェント)が到着する場所です。
検証方法
- デプロイした商品 URL を
Google Rich Results Test
に貼り付け。Product と BreadcrumbList のアイテムが両方とも検証され るはずです。 - 上の検証チェックリストを各フィールド単位で確認。
- シークレットウィンドウでページを開き、可視商品 H1、価格、在庫、 パンくずがすべて schema 宣言と一致することを確認。
- 商品構造が変わった場合(新色、削除サイズ)、Schema ジェネレーター を再実行して再デプロイ。
JSON-LD は AI ショッピングスタックの 1 つのシグナルです。 ファッション llms.txt テンプレート とコンテンツマップ側でペアリングし、 Robots アナライザー で GPTBot が商品ページに到達できることを確認してください。
検証チェックリスト
Schema の商品名が可視 H1 と一致している
ProductGroup の `name` フィールドが商品ページ H1 と完全一致(大文字小文字・句読点含む)。AI エンジンは不一致を低信頼シグナルとして減点する。
各バリアントに一意な SKU がある
二つの `hasVariant[].sku` 値が衝突しない。Shopify はバリアント SKU を自動生成するがマーチャントが上書きすることが多い —— schema 内の SKU 重複は AI エンジンによる誤統合の原因。
バリアント名がサイズ・色・素材を識別する
各 `hasVariant[].name` は実際の商品ラベルのように読める(例:「Linen Relaxed Shirt — White / M」)、プレースホルダーではない。AI ショッピング回答はこのフィールドを直接引用する。
productGroupID がデプロイ間で安定
`productGroupID` は安定した内部識別子(Shopify product GID やカスタムスラッグ)、ランダムなビルドタイム UUID ではない。AI エンジンはこれを使ってページ再読込み間で同一商品を重複排除する。
各 Offer に currency + price + availability + URL がある
各バリアントの `offers` ブロックに `priceCurrency`、`price`、`availability`、`url` がある。currency 欠落は Google Rich Results Test が Product 結果を格下げする最大の理由。
AggregateRating は実際のレビューが可視のときのみ
`aggregateRating` を出力する場合、商品ページに同じ評価 + レビュー数が可視である必要がある。AI エンジンは schema と可視内容を比較する;捏造評価は減点をトリガーする。
BreadcrumbList が可視パンくずと一致
schema の `itemListElement` URL チェーンがページの可視パンくずと完全一致する(同じパス、同じラベル)。ずれはパンくず文脈でカテゴリを理解する AI エンジンを混乱させる。
Rich Results Test で重大エラーなし
デプロイ後、商品 URL を https://search.google.com/test/rich-results に貼り付け —— Product と BreadcrumbList の両方が重大エラーなく検証される。
Schema ジェネレーターで開く
商品名、説明、ブランド、価格、在庫、評価のアパレルストア用プレースホルダーを事前入力済み。プレースホルダーを実際の商品データに置き換え、Shopify 用 JSON-LD ブロックをダウンロード。
よくある質問
Shopify アパレル商品は Product と ProductGroup どちらを使うべきですか?
バリアントのない単純な商品には `Product` を使ってください。サイズ・色・素材のバリアントが存在する場合は `ProductGroup` を使ってください —— AI エンジンが特定のクエリ(「M サイズの麻シャツ」)に対して正しいバリアントを引用できるようになります。Shopify のデフォルト Liquid テンプレートは `Product` しか出力しません;`ProductGroup` へのアップグレードは手作業ですが、多サイズのアパレルストアにとっては AI ショッピング引用の向上が労力に値します。
ページに可視レビューがない場合に AggregateRating を出してもよいですか?
いいえ。Schema は可視内容を反映する必要があります。`aggregateRating: 4.7 from 32 reviews` を出力するが商品ページにレビューウィジェットがない場合、AI エンジンと Google の両方が信頼性なしとフラグします。レビューを可視レンダリング(Judge.me や Shopify Reviews などのアプリ)するか、schema フィールドを完全に削除してください。
各色バリアントは別々の hasVariant エントリにすべきですか?
バリアントが異なる SKU、色、サイズ、画像、価格、在庫を持つ場合はそうしてください。AI ショッピングエンジンが「黒の麻シャツはまだ在庫がありますか」と答えるには、各バリアントが独自の `offers.availability` を持つ個別アドレス可能な Product ノードである必要があります。色のみ → 色ごとに `hasVariant`;サイズのみ → サイズごとに 1 つ;サイズ + 色 → デカルト積。
ProductGroup schema は Shopify 商品フィードを置き換えますか?
いいえ。ページ上の JSON-LD はフィード(Shopify の自動生成 `/products.json`、Google Merchant フィード、Meta カタログ)を補完します。AI ショッピングエンジンはページを直接クロール *かつ* フィードを読みます —— 両方のシグナルが重要です。一方のために他方を捨てないでください。
関連リソース
ファッション系 Shopify llms.txt テンプレート
この Product schema を llms.txt コンテンツマップと組み合わせる —— 両方のシグナルが AI ショッピング引用のために連携。
ビューティー系 Shopify llms.txt テンプレート
姉妹領域 —— 同じ JSON-LD 原則がビューティー Product schema にも適用、サイズ/色の代わりに成分文脈フィールド。
エレクトロニクス系 Shopify llms.txt テンプレート
姉妹領域 —— エレクトロニクスではサイズ/色バリアントの代わりに型番 + 互換性フィールド付き ProductGroup を使う。
Shopify AI Visibility Optimizer
AI 可視性の完全スタック —— schema、コンテンツマップ、クローラポリシー、引用モニタリング。
llms.txt for Shopify 完全ガイド
この例の schema シグナルと対になるコンテンツマップシグナルの背景。