販売者リスティング(Product、Offer)の構造化データ
ページに Product のマークアップを追加すると、Google 検索における販売者のリスティングのエクスペリエンスに、ショッピング ナレッジパネル、Google 画像検索、人気商品の結果、商品スニペットなどを表示できるようになります。販売者リスティングでは、商品に関するさらに詳しいデータ(価格、在庫状況、配送と返品に関する情報など)をハイライト表示できます。
このガイドでは、販売者リスティングに適用される Product 構造化データの要件について説明します。どのマークアップを使用すればよいかわからない場合は、Product マークアップの概要をご覧ください。
構造化データを追加する方法
構造化データは、ページに関する情報を提供し、ページ コンテンツを分類するための標準化されたデータ形式です。構造化データを初めて使用する場合は、構造化データの仕組みについてをご覧ください。
構造化データの作成、テスト、リリースの概要は次のとおりです。
- 必須プロパティを追加します。使用している形式に基づいて、ページ上の構造化データを挿入する場所をご確認ください。
- ガイドラインに従います。
- リッチリザルト テストでコードを検証し、重大なエラーを修正します。ツールで報告される重大ではない問題の修正も検討してください。構造化データの品質向上に役立ちます(ただし、リッチリザルトの対象となるために必ずしも必要というわけではありません)。
- 構造化データが含まれているページを数ページ導入し、URL 検査ツールを使用して、Google でページがどのように表示されるかをテストします。Google がページにアクセスでき、robots.txt ファイル、
noindexタグ、ログイン要件によってページがブロックされていないことを確認します。ページが正常に表示されたら、Google に URL の再クロールを依頼できます。 - 今後の変更について Google に継続して情報を提供するために、サイトマップを送信することをおすすめします。これは、Search Console Sitemap API で自動化できます。
例
次の例は、さまざまな状況でウェブページに構造化データを追加する方法を示しています。
販売情報が掲載されている商品ページ
商品レビューを掲載しながら商品を販売している商品ページの例を以下に示します。
JSON-LD
<html>
<head>
<title>Executive Anvil</title>
<script type="application/ld+json">
{
"@context": "https://schema.org/",
"@type": "Product",
"name": "Executive Anvil",
"image": [
"https://example.com/photos/1x1/photo.jpg",
"https://example.com/photos/4x3/photo.jpg",
"https://example.com/photos/16x9/photo.jpg"
],
"description": "Sleeker than ACME's Classic Anvil, the Executive Anvil is perfect for the business traveler looking for something to drop from a height.",
"sku": "0446310786",
"mpn": "925872",
"brand": {
"@type": "Brand",
"name": "ACME"
},
"review": {
"@type": "Review",
"reviewRating": {
"@type": "Rating",
"ratingValue": 4,
"bestRating": 5
},
"author": {
"@type": "Person",
"name": "Fred Benson"
}
},
"aggregateRating": {
"@type": "AggregateRating",
"ratingValue": 4.4,
"reviewCount": 89
},
"offers": {
"@type": "Offer",
"url": "https://example.com/anvil",
"priceCurrency": "USD",
"price": 119.99,
"priceValidUntil": "2024-11-20",
"itemCondition": "https://schema.org/UsedCondition",
"availability": "https://schema.org/InStock"
}
}
</script>
</head>
<body>
</body>
</html>RDFa
<html>
<head>
<title>Executive Anvil</title>
</head>
<body>
<div typeof="schema:Product">
<div rel="schema:review">
<div typeof="schema:Review">
<div rel="schema:reviewRating">
<div typeof="schema:Rating">
<div property="schema:ratingValue" content="4"></div>
<div property="schema:bestRating" content="5"></div>
</div>
</div>
<div rel="schema:author">
<div typeof="schema:Person">
<div property="schema:name" content="Fred Benson"></div>
</div>
</div>
</div>
</div>
<div rel="schema:image" resource="https://example.com/photos/4x3/photo.jpg"></div>
<div property="schema:mpn" content="925872"></div>
<div property="schema:name" content="Executive Anvil"></div>
<div property="schema:description" content="Sleeker than ACME's Classic Anvil, the Executive Anvil is perfect for the business traveler looking for something to drop from a height."></div>
<div rel="schema:image" resource="https://example.com/photos/1x1/photo.jpg"></div>
<div rel="schema:brand">
<div typeof="schema:Brand">
<div property="schema:name" content="ACME"></div>
</div>
</div>
<div rel="schema:aggregateRating">
<div typeof="schema:AggregateRating">
<div property="schema:reviewCount" content="89"></div>
<div property="schema:ratingValue" content="4.4"></div>
</div>
</div>
<div rel="schema:offers">
<div typeof="schema:Offer">
<div property="schema:price" content="119.99"></div>
<div property="schema:availability" content="https://schema.org/InStock"></div>
<div property="schema:priceCurrency" content="USD"></div>
<div property="schema:priceValidUntil" datatype="xsd:date" content="2024-11-20"></div>
<div rel="schema:url" resource="https://example.com/anvil"></div>
<div property="schema:itemCondition" content="https://schema.org/UsedCondition"></div>
</div>
</div>
<div rel="schema:image" resource="https://example.com/photos/16x9/photo.jpg"></div>
<div property="schema:sku" content="0446310786"></div>
</div>
</body>
</html>microdata
<html>
<head>
<title>Executive Anvil</title>
</head>
<body>
<div>
<div itemtype="https://schema.org/Product" itemscope>
<meta itemprop="mpn" content="925872" />
<meta itemprop="name" content="Executive Anvil" />
<link itemprop="image" href="https://example.com/photos/16x9/photo.jpg" />
<link itemprop="image" href="https://example.com/photos/4x3/photo.jpg" />
<link itemprop="image" href="https://example.com/photos/1x1/photo.jpg" />
<meta itemprop="description" content="Sleeker than ACME's Classic Anvil, the Executive Anvil is perfect for the business traveler looking for something to drop from a height." />
<div itemprop="offers" itemtype="https://schema.org/Offer" itemscope>
<link itemprop="url" href="https://example.com/anvil" />
<meta itemprop="availability" content="https://schema.org/InStock" />
<meta itemprop="priceCurrency" content="USD" />
<meta itemprop="itemCondition" content="https://schema.org/UsedCondition" />
<meta itemprop="price" content="119.99" />
<meta itemprop="priceValidUntil" content="2024-11-20" />
</div>
<div itemprop="aggregateRating" itemtype="https://schema.org/AggregateRating" itemscope>
<meta itemprop="reviewCount" content="89" />
<meta itemprop="ratingValue" content="4.4" />
</div>
<div itemprop="review" itemtype="https://schema.org/Review" itemscope>
<div itemprop="author" itemtype="https://schema.org/Person" itemscope>
<meta itemprop="name" content="Fred Benson" />
</div>
<div itemprop="reviewRating" itemtype="https://schema.org/Rating" itemscope>
<meta itemprop="ratingValue" content="4" />
<meta itemprop="bestRating" content="5" />
</div>
</div>
<meta itemprop="sku" content="0446310786" />
<div itemprop="brand" itemtype="https://schema.org/Brand" itemscope>
<meta itemprop="name" content="ACME" />
</div>
</div>
</div>
</body>
</html>価格設定
Google では、以下の 3 つの価格設定を想定しています。
- アクティブな価格
- 現在、その商品が提供されている価格。
- 取り消し線が引かれた価格
- セール中に示される、商品の定価。値下げしたアクティブな価格に注目を集めるために、取り消し線が引かれた価格が示されることがあります。
- メンバー価格
- 特定のポイント プログラムのメンバーに提供される商品価格。
これらの価格は、Offer オブジェクトの下に価格の指定を使用してエンコードします(アクティブな価格は例外で、offer レベルでエンコードすることもできます)。各価格の指定は、価格の指定プロパティ priceType と validForMemberTier により識別し、これらを一緒に使用することはできません。
- アクティブな価格にはプロパティ
priceTypeとvalidForMemberTierのどちらも使用できません。 - 取り消し線が引かれた価格では、
priceTypeプロパティがStrikethroughPriceに設定され(移行期間中はListPriceも許可されます)、validForMemberTierプロパティは設定できません。 - メンバー価格は
validForMemberTierプロパティで設定され、priceTypeプロパティは設定できません。
これらのプロパティを両方含む価格の指定は無視されます。
アクティブな価格
JSON-LD でアクティブな価格をエンコードする例を 2 つ示します。アクティブな価格は、次のように price プロパティを使用して指定できます。
"offers": { "@type": "Offer", "price": 10.00, "priceCurrency": "USD", ... }
あるいは、priceSpecification プロパティを使用して指定することもできます。
"offers": { "@type": "Offer", "priceSpecification": { "@type": "UnitPriceSpecification", "price": 10.00, "priceCurrency": "USD" }, ... }
セール価格設定
次の例では、セール価格の商品を示しています。取り消し線が引かれた元の価格を 2 つめの価格として追加し、priceType プロパティの値を https://schema.org/StrikethroughPrice に設定すると、現在のアクティブな価格は自動的にセール価格になります。現在のアクティブな価格に priceType プロパティを設定しないでください。
{ "@context": "https://schema.org/", "@type": "Product", "name": "Nice trinket", "offers": { "@type": "Offer", "url": "https://www.example.com/trinket_offer", "price": 10.00, "priceCurrency": "GBP", "priceSpecification": { "@type": "UnitPriceSpecification", "priceType": "https://schema.org/StrikethroughPrice", "price": 15.00, "priceCurrency": "GBP" } } }
あるいは、2 つの UnitPriceSpecification オブジェクトを使用して、セール価格と取り消し線が引かれた価格を指定できます。
{ "@context": "https://schema.org/", "@type": "Product", "name": "Nice trinket", "offers": { "@type": "Offer", "priceSpecification": [ { "@type": "UnitPriceSpecification", "price": 10.00, "priceCurrency": "GBP" }, { "@type": "UnitPriceSpecification", "priceType": "https://schema.org/StrikethroughPrice", "price": 15.00, "priceCurrency": "GBP" } ] } }
メンバー価格
メンバー価格のエンコード例を 4 つ示します。最初の例では、offer レベルで price プロパティを使用してアクティブな価格が指定され、価格の指定に validForMemberTier プロパティを使用してメンバー価格が指定されています。
"offers": { "@type": "Offer", "url": "https://www.example.com/trinket_offer", "price": 10.00, "priceCurrency": "GBP", "priceSpecification": { "@type": "UnitPriceSpecification", "price": 8.00, "priceCurrency": "GBP", "validForMemberTier": { "@type": "MemberProgramTier", "@id": "https://www.example.com/com/members#tier_gold" } } }
2 つめの例では、価格の指定を使用してアクティブな価格とメンバー価格の両方がエンコードされています。
"offers": { "@type": "Offer", "url": "https://www.example.com/trinket_offer", "priceSpecification": [ { "@type": "UnitPriceSpecification", "price": 10.00, "priceCurrency": "GBP" }, { "@type": "UnitPriceSpecification", "price": 8.00, "priceCurrency": "GBP", "validForMemberTier": { "@type": "MemberProgramTier", "@id": "https://www.example.com/com/members#tier_gold" } } ] }
3 つめの例では、セール価格、取り消し線が引かれた価格、複数のポイント プログラム レベルに分かれたメンバー価格を、単一の offer 内にエンコードする方法が示されています。
"offers": { "@type": "Offer", "url": "https://www.example.com/trinket_offer", "priceSpecification": [ { "@type": "UnitPriceSpecification", "price": 9.00, "priceCurrency": "GBP" }, { "@type": "UnitPriceSpecification", "priceType": "https://schema.org/StrikethroughPrice", "price": 10.00, "priceCurrency": "GBP" }, { "@type": "UnitPriceSpecification", "price": 8.00, "priceCurrency": "GBP", "validForMemberTier": { "@type": "MemberProgramTier", "@id": "https://www.example.com/com/members#tier_silver" } }, { "@type": "UnitPriceSpecification", "price": 7.00, "priceCurrency": "GBP", "validForMemberTier": [ { "@type": "MemberProgramTier", "@id": "https://www.example.com/com/members#tier_gold" }, { "@type": "MemberProgramTier", "@id": "https://www.example.com/com/members#tier_platinum" } ] } ] }
最初の例に示したように、アクティブな価格は offer レベルでエンコードすることもできます。
4 つ目の例では、メンバー価格の指定にメンバー価格ではなくメンバーシップ ポイントが示されています。
"offers": { "@type": "Offer", "url": "https://www.example.com/trinket_offer", "price": 10.00, "priceCurrency": "GBP", "priceSpecification": { "@type": "UnitPriceSpecification", "membershipPointsEarned": 20, "validForMemberTier": { "@type": "MemberProgramTier", "@id": "https://www.example.com/com/members#tier_gold" } } }
価格の計量単位を使用した価格設定
以下は、通常は 100 ml 単位で販売される商品の 200 ml 分の価格を指定する方法の例です。たとえば、香水を 200 ml の瓶で販売している場合は、100 ml あたりの費用をユーザーに示すことができます。次の例では、香水の価格は 100 ml あたり 100 ユーロで、200 ml 瓶の価格は 200 ユーロになることを示しています。この価格の形式は、EU 圏内やニュージーランド、オーストラリアで容積や長さ、重量を単位として販売する商品の場合に特に重要です。
価格の計量単位と価格の基準計量単位が存在する場合は、UnitPriceSpecification 内でアクティブな価格を指定し、referenceQuantity プロパティを使用して価格の単価を設定します。
"offers": { "@type": "Offer", "url": "https://www.example.com/perfume_offer", "priceSpecification": { "@type": "UnitPriceSpecification", "price": 200.00, "priceCurrency": "EUR", "referenceQuantity": { "@type": "QuantitativeValue", "value": "200", "unitCode": "ML", "valueReference": { "@type": "QuantitativeValue", "value": "100", "unitCode": "ML" } } } }
配送情報
配送情報を掲載している商品ページの例を次に示します。この例では、米国に居住しているすべてのユーザーの送料レートが $3.49 になります。その他の例については、配送セクションをご覧ください。
JSON-LD
<html>
<head>
<title>Nice trinket</title>
<script type="application/ld+json">
{
"@context": "https://schema.org/",
"@type": "Product",
"sku": "trinket-12345",
"gtin14": "00012345600012",
"image": [
"https://example.com/photos/16x9/trinket.jpg",
"https://example.com/photos/4x3/trinket.jpg",
"https://example.com/photos/1x1/trinket.jpg"
],
"name": "Nice trinket",
"description": "Trinket with clean lines",
"brand": {
"@type": "Brand",
"name": "MyBrand"
},
"offers": {
"@type": "Offer",
"url": "https://www.example.com/trinket_offer",
"itemCondition": "https://schema.org/NewCondition",
"availability": "https://schema.org/InStock",
"price": 39.99,
"priceCurrency": "USD",
"priceValidUntil": "2024-11-20",
"shippingDetails": {
"@type": "OfferShippingDetails",
"shippingRate": {
"@type": "MonetaryAmount",
"value": 3.49,
"currency": "USD"
},
"shippingDestination": {
"@type": "DefinedRegion",
"addressCountry": "US"
},
"deliveryTime": {
"@type": "ShippingDeliveryTime",
"handlingTime": {
"@type": "QuantitativeValue",
"minValue": 0,
"maxValue": 1,
"unitCode": "DAY"
},
"transitTime": {
"@type": "QuantitativeValue",
"minValue": 1,
"maxValue": 5,
"unitCode": "DAY"
}
}
}
},
"review": {
"@type": "Review",
"reviewRating": {
"@type": "Rating",
"ratingValue": 4,
"bestRating": 5
},
"author": {
"@type": "Person",
"name": "Fred Benson"
}
},
"aggregateRating": {
"@type": "AggregateRating",
"ratingValue": 4.4,
"reviewCount": 89
}
}
</script>
</head>
<body>
</body>
</html>RDFa
<html>
<head>
<title>Nice trinket</title>
</head>
<body>
<div typeof="schema:Product">
<div property="schema:sku" content="trinket-12345"></div>
<div property="schema:gtin14" content="00012345600012"></div>
<div property="schema:name" content="Nice trinket"></div>
<div rel="schema:image" resource="https://example.com/photos/16x9/trinket.jpg"></div>
<div rel="schema:image" resource="https://example.com/photos/4x3/trinket.jpg"></div>
<div rel="schema:image" resource="https://example.com/photos/1x1/trinket.jpg"></div>
<div property="schema:description" content="Trinket with clean lines"></div>
<div rel="schema:brand">
<div typeof="schema:Brand">
<div property="schema:name" content="MyBrand"></div>
</div>
</div>
<div rel="schema:offers">
<div typeof="schema:Offer">
<div rel="schema:url" resource="https://example.com/trinket_offer"></div>
<div property="schema:itemCondition" content="https://schema.org/NewCondition"></div>
<div property="schema:availability" content="https://schema.org/InStock"></div>
<div property="schema:price" content="39.99"></div>
<div property="schema:priceCurrency" content="USD"></div>
<div property="schema:priceValidUntil" datatype="xsd:date" content="2024-11-20"></div>
<div rel="schema:shippingDetails">
<div typeof="schema:OfferShippingDetails">
<div rel="schema:shippingRate">
<div typeof="schema:MonetaryAmount">
<div property="schema:value" content="3.49"></div>
<div property="schema:currency" content="USD"></div>
</div>
</div>
<div rel="schema:shippingDestination">
<div typeof="schema:DefinedRegion">
<div property="schema:addressCountry" content="US"></div>
</div>
</div>
<div rel="schema:deliveryTime">
<div typeof="schema:ShippingDeliveryTime">
<div rel="schema:handlingTime">
<div typeof="schema:QuantitativeValue">
<div property="schema:minValue" content="0"></div>
<div property="schema:maxValue" content="1"></div>
<div property="schema:unitCode" content="DAY"></div>
</div>
</div>
<div rel="schema:transitTime">
<div typeof="schema:QuantitativeValue">
<div property="schema:minValue" content="1"></div>
<div property="schema:maxValue" content="5"></div>
<div property="schema:unitCode" content="DAY"></div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<div rel="schema:review">
<div typeof="schema:Review">
<div rel="schema:reviewRating">
<div typeof="schema:Rating">
<div property="schema:ratingValue" content="4"></div>
<div property="schema:bestRating" content="5"></div>
</div>
</div>
<div rel="schema:author">
<div typeof="schema:Person">
<div property="schema:name" content="Fred Benson"></div>
</div>
</div>
</div>
</div>
<div rel="schema:aggregateRating">
<div typeof="schema:AggregateRating">
<div property="schema:reviewCount" content="89"></div>
<div property="schema:ratingValue" content="4.4"></div>
</div>
</div>
</div>
</body>
</html>microdata
<html>
<head>
<title>Nice trinket</title>
</head>
<body>
<div>
<div itemtype="https://schema.org/Product" itemscope>
<meta itemprop="sku" content="trinket-12345" />
<meta itemprop="gtin14" content="00012345600012" />
<meta itemprop="name" content="Nice trinket" />
<link itemprop="image" href="https://example.com/photos/16x9/trinket.jpg" />
<link itemprop="image" href="https://example.com/photos/4x3/trinket.jpg" />
<link itemprop="image" href="https://example.com/photos/1x1/trinket.jpg" />
<meta itemprop="description" content="Trinket with clean lines" />
<div itemprop="brand" itemtype="https://schema.org/Brand" itemscope>
<meta itemprop="name" content="MyBrand" />
</div>
<div itemprop="offers" itemtype="https://schema.org/Offer" itemscope>
<link itemprop="url" href="https://www.example.com/trinket_offer" />
<meta itemprop="itemCondition" content="https://schema.org/NewCondition" />
<meta itemprop="availability" content="https://schema.org/InStock" />
<meta itemprop="price" content="39.99" />
<meta itemprop="priceCurrency" content="USD" />
<meta itemprop="priceValidUntil" content="2024-11-20" />
<div itemprop="shippingDetails" itemtype="https://schema.org/OfferShippingDetails" itemscope>
<div itemprop="shippingRate" itemtype="https://schema.org/MonetaryAmount" itemscope>
<meta itemprop="value" content="3.49" />
<meta itemprop="currency" content="USD" />
</div>
<div itemprop="shippingDestination" itemtype="https://schema.org/DefinedRegion" itemscope>
<meta itemprop="addressCountry" content="US" />
</div>
<div itemprop="deliveryTime" itemtype="https://schema.org/ShippingDeliveryTime" itemscope>
<div itemprop="handlingTime" itemtype="https://schema.org/QuantitativeValue" itemscope>
<meta itemprop="minValue" content="0" />
<meta itemprop="maxValue" content="1" />
<meta itemprop="unitCode" content="DAY" />
</div>
<div itemprop="transitTime" itemtype="https://schema.org/QuantitativeValue" itemscope>
<meta itemprop="minValue" content="1" />
<meta itemprop="maxValue" content="5" />
<meta itemprop="unitCode" content="DAY" />
</div>
</div>
</div>
</div>
<div itemprop="review" itemtype="https://schema.org/Review" itemscope>
<div itemprop="author" itemtype="https://schema.org/Person" itemscope>
<meta itemprop="name" content="Fred Benson" />
</div>
<div itemprop="reviewRating" itemtype="https://schema.org/Rating" itemscope>
<meta itemprop="ratingValue" content="4" />
<meta itemprop="bestRating" content="5" />
</div>
</div>
<div itemprop="aggregateRating" itemtype="https://schema.org/AggregateRating" itemscope>
<meta itemprop="reviewCount" content="89" />
<meta itemprop="ratingValue" content="4.4" />
</div>
</div>
</div>
</body>
</html>送料無料
米国ニューヨーク州からの購入に対して送料を無料にする場合の例を以下に示します。
"shippingDetails": { "@type": "OfferShippingDetails", "shippingRate": { "@type": "MonetaryAmount", "value": "0", "currency": "USD" }, "shippingDestination": [ { "@type": "DefinedRegion", "addressCountry": "US", "addressRegion": ["NY"] } ] }
返品情報の詳細
返品情報の詳細が記載されている商品ページの例を以下に示します。このマークアップは、スイスで販売された商品について 60 日以内に郵送で返品することを要件とする返品ポリシーと一致しており、返品料金は 3.49 スイスフランです。
{ "@context": "https://schema.org/", "@type": "Product", "sku": "trinket-12345", "gtin14": "00012345600012", "image": [ "https://example.com/photos/16x9/trinket.jpg", "https://example.com/photos/4x3/trinket.jpg", "https://example.com/photos/1x1/trinket.jpg" ], "name": "Nice trinket", "description": "Trinket with clean lines", "brand": { "@type": "Brand", "name": "MyBrand" }, "offers": { "@type": "Offer", "url": "https://www.example.com/trinket_offer", "itemCondition": "https://schema.org/NewCondition", "availability": "https://schema.org/InStock", "priceSpecification": { "@type": "PriceSpecification", "price": 39.99, "priceCurrency": "CHF" }, "hasMerchantReturnPolicy": { "@type": "MerchantReturnPolicy", "applicableCountry": "CH", "returnPolicyCategory": "https://schema.org/MerchantReturnFiniteReturnWindow", "merchantReturnDays": 60, "returnMethod": "https://schema.org/ReturnByMail", "returnFees": "https://schema.org/ReturnShippingFees", "returnShippingFeesAmount": { "@type": "MonetaryAmount", "value": 3.49, "currency": "CHF" } } } }
認証
次の例は、構造化データを使用して認証情報を指定する方法を示しています。 最初の例は、ドイツにおける車両の CO2 排出量クラス "D" を指定しています。
{ "@context": "https://schema.org/", "@type": "Product", "sku": "1234-5678", "image": "https://www.example.com/vehicle.jpg", "name": "Big Car", "description": "Passenger vehicle with combustion engine", "gtin14": "00012345600012", "mpn": "WH1234", "brand": { "@type": "Brand", "name": "ExampleCarBrand" }, "hasCertification": { "@type": "Certification", "issuedBy": { "@type": "Organization", "name": "BMWK" }, "name": "Vehicle_CO2_Class", "certificationRating": { "@type": "Rating", "ratingValue": "D" } }, "offers": { "@type": "Offer", "url": "https://www.example.com/vehicle", "itemCondition": "https://schema.org/NewCondition", "availability": "https://schema.org/InStock", "price": 17999.00, "priceCurrency": "EUR" } }
2 つ目の例では、LED の省エネ性能を示す、欧州エネルギー ラベリング製品レジストリ(EPREL)ラベルを指定しています。
{ "@context": "https://schema.org/", "@type": "Product", "sku": "1234-5678", "image": "https://www.example.com/led.jpg", "name": "LED", "description": "Dimmable LED", "gtin14": "00012345600012", "mpn": "WH1234", "brand": { "@type": "Brand", "name": "ExampleLightingBrand" }, "hasCertification": { "@type": "Certification", "issuedBy": { "@type": "Organization", "name": "European_Commission" }, "name": "EPREL", "certificationIdentification": "123456" }, "offers": { "@type": "Offer", "url": "https://www.example.com/led", "itemCondition": "https://schema.org/NewCondition", "availability": "https://schema.org/InStock", "price": 2.30, "priceCurrency": "EUR" } }
3D モデル
この例は subjectOf プロパティと 3DModel タイプを使用して 3D モデルを商品にリンクさせる方法を示しています。
{ "@context": "https://schema.org/", "@type": "Product", "sku": "1234-5678", "image": "https://www.example.com/sofa.jpg", "name": "Water heater", "description": "White 3-Seat Sofa", "gtin14": "00012345600012", "mpn": "S1234W3", "brand": { "@type": "Brand", "name": "ExampleSofaBrand" }, "subjectOf": { "@type": "3DModel", "encoding": { "@type": "MediaObject", "contentUrl": "https://example.com/sofa.gltf" } }, "offers": { "@type": "Offer", "url": "https://www.example.com/whitechaiselongue", "itemCondition": "https://schema.org/NewCondition", "availability": "https://schema.org/InStock", "price": 1299.00, "priceCurrency": "USD" } }
ガイドライン
Product マークアップを使用して販売者のリスティングのエクスペリエンスが表示されるようにするには、以下のガイドラインに準拠する必要があります。
- 構造化データに関する一般的なガイドライン
- 検索の基本事項
- 技術に関するガイドライン
- コンテンツ ガイドライン
- 無料リスティングのガイドライン(販売者のリスティングのエクスペリエンスの場合)
技術に関するガイドライン
- 販売者のリスティングのエクスペリエンスの対象となるのは、買い物客が商品を購入できるページのみであり、商品を販売する他のサイトへのリンクを掲載したページは対象ではありません。Google は、検索結果に情報を表示する前に、販売者リスティングの商品データの検証を試みることがあります。
- 商品のリッチリザルトは単一の商品(または同じ商品の複数のバリエーション)に焦点を当てたページのみをサポートしています。たとえば、「当店の靴」は特定の商品ではありません。これには、それぞれ URL が異なるバリエーション商品も含まれます。複数の商品やある商品カテゴリを一覧表示するページではなく、特定の商品ページにマークアップを追加することをおすすめします。
- バリエーション商品のマークアップの追加方法について詳しくは、バリエーション商品の構造化データのドキュメントをご覧ください。
- 複数の通貨で商品を販売する場合は、通貨ごとに個別の URL を指定します。たとえば、ある商品がカナダドルと米ドルで購入可能な場合、2 つの異なる URL(1 つの通貨につき 1 つ)を使用します。
Carが Product のサブタイプとして自動的にサポートされることはありません。現時点では、評価を追加してこの検索結果の機能の表示対象となるようにするには、CarタイプとProductタイプの両方を含める必要があります。JSON-LD の例を以下に示します。{ "@context": "https://schema.org", "@type": ["Product", "Car"], ... }
- すべてのタイプのショッピング検索結果を最適化しようとしている場合、最良の結果を得るために、最初から
Product構造化データを HTML に含めることをおすすめします。 - JavaScript で生成された
Productマークアップの場合: 動的に生成されるマークアップにより、Google ショッピングのクロールの頻度と信頼性が低下する可能性があることに注意してください。商品の在庫状況や価格など、頻繁に変更されるコンテンツでは問題となる場合があります。JavaScript を使用してProductマークアップを生成している場合は、Google からのトラフィック増加に対応できるだけの十分なコンピューティング リソースがサーバーにあることを確認してください。
コンテンツ ガイドライン
- 人に深刻な危害や直接的な危害、または長期的な危害をもたらす可能性があり、広く禁止または規制されている商品やサービス、情報を宣伝するコンテンツは認められません。これには、銃器を含む武器、危険ドラッグ、タバコ関連商品(電子タバコを含む)、ギャンブル関連商品に関連するコンテンツが含まれます。
構造化データタイプの定義
コンテンツがリッチリザルトとして表示されるようにするには、必須プロパティを含める必要があります。また、推奨プロパティを使用すると、構造化データにより多くの情報を追加でき、ユーザー エクスペリエンスの向上につながります。
商品情報
Product
Product の定義の全文は schema.org/Product で確認できます。コンテンツで商品情報のマークアップを設定するには、Product タイプの以下のプロパティを使用します。
| 必須プロパティ | |
|---|---|
name |
商品名。 |
image |
商品の写真の URL。商品がはっきりわかる写真(背景が白の写真など)を指定することをおすすめします。 画像に関するその他のガイドライン:
次に例を示します。 "image": [ "https://example.com/photos/1x1/photo.jpg", "https://example.com/photos/4x3/photo.jpg", "https://example.com/photos/16x9/photo.jpg" ] |
offers |
ネストされた 商品スニペットでは |
| 推奨プロパティ | |
|---|---|
aggregateRating |
商品のネストされた |
audience |
推奨される性別や年齢層など、商品の推奨ユーザー層に関するオプション情報。 |
brand.name |
わかっている場合は、 |
color |
商品の色または色の組み合わせ(例: 「赤」、「黄 / スカイブルー」)Google Merchant Center ヘルプの色属性もご覧ください。 |
description |
商品の説明。商品の説明は必須ではありませんが、このプロパティを使用して商品説明を追加することを強くおすすめします。 |
gtin | gtin8 | gtin12 | gtin13 | gtin14 | isbn |
該当するすべてのグローバル識別子を設定します。グローバル識別子については、schema.org/Product をご覧ください。すべての GTIN(国際取引商品番号)には汎用の
{ "@context": "https://schema.org", "@type": ["Product", "Book"], ... } |
hasCertification |
商品に関連する省エネ性能評価などの認証。最大 10 個の認証を指定できます。このプロパティはヨーロッパ諸国では特に重要です。Google でサポートされている |
inProductGroupWithID |
このバリエーション商品が属する商品グループの ID。Google Merchant Center ヘルプの |
isVariantOf |
このバリエーション商品が属する商品グループ(該当する場合)。バリエーション商品のマークアップを追加する方法について詳しくは、バリエーション商品の構造化データのドキュメントをご覧ください。 |
material |
商品の素材や素材の組み合わせ(例: 「革」、「綿 / ポリエステル」)。Google Merchant Center ヘルプの |
mpn |
メーカーの部品番号。このプロパティによって特定のメーカーの商品が一意に識別されます。 |
pattern |
商品の柄(例: 「水玉模様」、「ストライプ」)。Google Merchant Center の商品データ仕様ページに掲載されている |
review |
商品のネストされた 商品のレビューを追加する場合、その投稿者の名前は 非推奨: ブラック フライデーは 50% オフ 推奨: 「山田太郎」、「CNET クチコミ投稿者」 |
size |
商品のサイズ(例: 「XL」、「ミディアム」)。Google Merchant Center の商品データ仕様のページの |
sku |
商品を表す販売者固有の識別子。指定できる値は 1 つです。
|
subjectOf |
商品の 3D モデル(該当する場合)。Google でサポートされている |
3DModel
3DModel の定義の全文は schema.org/3DModel で確認できます。
3D モデルへのリンクには以下のプロパティを使用します。現在サポートされているのは glTF 形式のモデルのみです。
| 必須プロパティ | |
|---|---|
encoding |
3D モデル用のメディア |
encoding.contentUrl |
glTF 形式の 3D モデル定義ファイルへのリンクファイルにはサフィックスとして |
販売情報の詳細
Offer
Offer の定義の全文は schema.org/Offer で確認できます。商品内で販売情報をマークアップする場合は、schema.org の Offer タイプの以下に示すプロパティを使用します。
| 必須プロパティ | |
|---|---|
price または priceSpecification.price |
現在のアクティブな商品販売価格。schema.org の使用ガイドラインに沿って指定してください。
"offers": { "@type": "Offer", "price": 39.99, "priceCurrency": "USD" } 商品スニペットとは異なり、販売者のリスティングのエクスペリエンスには 0 より大きな値の価格が必要です。 アクティブな価格は必須ですが、 |
priceCurrency または priceSpecification.priceCurrency |
商品価格の記述に使用する通貨を 3 文字の ISO 4217 形式で指定します。
|
priceSpecification |
アクティブな価格は、
|
| 推奨プロパティ | |
|---|---|
availability |
商品の在庫状況のオプション。URL 接頭辞が付加されていない略称もサポートされています(例:
複数の値を指定しないでください。 |
hasMerchantReturnPolicy |
|
itemCondition |
販売中の商品の状態。URL 接頭辞が付加されていない略称もサポートされています(例:
複数の値を指定しないでください。 |
shippingDetails |
|
url |
買い物客が商品を購入できる商品のウェブページの URL。この URL は、すべてのバリエーション オプションが適切に選択された時点のページの優先 URL と考えることができます。URL は省略できます。複数の URL を指定しないでください。 バリエーション商品のマークアップを追加する方法について詳しくは、バリエーション商品の構造化データのドキュメントをご覧ください。 |
UnitPriceSpecification
UnitPriceSpecification の定義の全文は schema.org/UnitPriceSpecification で確認できます。より複雑な価格設定スキームを取得するには、次のプロパティを使用します。
| 必須プロパティ | |
|---|---|
price |
商品の価格。 |
priceCurrency |
商品価格の記述に使用する通貨を 3 文字の ISO 4217 形式で指定します。 |
| 推奨プロパティ | |
|---|---|
membershipPointsEarned |
この購入によって特定のポイント プログラムのメンバーが獲得するポイントの数(整数)。このプロパティと併用できるのは |
priceType |
このプロパティは、商品の元の正規価格を指定します(該当する場合)。このプロパティは、Google で商品のセール価格を表示したい場合にのみ使用してください。
|
referenceQuantity |
特定の価格で提供される商品の数量。価格の単価設定の詳細は、価格の計量単位を使用した価格設定および Google Merchant Center ヘルプの価格の計量単位の記事をご覧ください。 |
validForMemberTier |
このプロパティは、この価格が特定のポイント プログラムのメンバーに対して有効であることを示します。複数のメンバーレベルに対する価格が同一の場合は、複数のメンバーレベルを指定でき、メンバーレベル間で価格が異なる場合は、このプロパティに複数の価格指定を設定できます。
ビジネスで提供するポイント プログラムとレベルは、Merchant Center アカウントで定義するか、組織の管理情報とポリシーを定義する別ページで、 Merchant Center で定義されたメンバーシップ プログラムとレベルを "validForMemberTier": { "@type": "MemberProgramTier", "name": "silver", "isTierOf": { "@type": "MemberProgram", "name": "member-plus" } }
"validForMemberTier": { "@type": "MemberProgramTier", "@id": "https://www.example.com/com/member-plus#tier_silver" } |
priceType と validForMemberTier の両方を使用すると、価格の指定は無視されます。
QuantitativeValue(価格の単価設定の場合)
このセクションでは、単価の仕様の referenceQuantity プロパティに QuantitativeValue を使用する方法について説明します(QuantitativeValue はお届け日数にも使用されますが、ルールが異なります)。QuantitativeValue の定義の全文は schema.org/QuantitativeValue で確認できます。
QuantitativeValue は、1 平方メートル単位での床材の購入や、0.5 ガロン単位での液体の購入など、計量単位に基づいた価格に使用できます。価格の単価設定の詳細は、価格の計量単位を使用した価格設定および Google Merchant Center ヘルプの記事価格の計量単位をご覧ください。
単価の詳細情報を取得するには、次のプロパティを使用します。
| 必須プロパティ | |
|---|---|
unitCode |
計量単位。Google Merchant Center ヘルプの価格の計量単位に記載されている UN/CEFACT コード、またはそれと同等の人が読める形式のコードのいずれかがサポートされています( |
value |
販売単位の数値。 |
| 推奨プロパティ | |
|---|---|
valueReference |
商品価格設定の基本数量。 |
SizeSpecification
SizeSpecification タイプは、商品のサイズを示すために使用します。タイプの定義の全文については、schema.org/SizeSpecification で確認できます。
| 推奨プロパティ | |
|---|---|
name |
人が読める形式のサイズ名(例: "XL")。詳しくは、Google Merchant Center のヘルプのサイズ属性をご覧ください。 |
sizeGroup |
商品の推奨サイズグループ(該当する場合)。グループの解釈は
URL 接頭辞が付加されていない略称もサポートされています(例: サポートされているサイズ表記について詳しくは、Google Merchant Center ヘルプの |
sizeSystem |
商品のサイズ表記(該当する場合)。サポートされている値は次のとおりです。
URL 接頭辞が付加されていない略称もサポートされています(例: Google Merchant Center ヘルプの |
PeopleAudience
PeopleAudience の定義の全文は schema.org/PeopleAudience で確認できます。
商品の想定されるユーザー層の指定には、次のプロパティを使用します。Google Merchant Center ヘルプのサポートされている構造化データの属性と値もご覧ください。
| 推奨プロパティ | |
|---|---|
suggestedGender |
商品のユーザーとして想定する性別。次のいずれかの値を指定する必要があります。
詳細については、Google Merchant Center ヘルプの Google では schema.org プレフィックスなしで |
suggestedMaxAge(または suggestedAge.maxValue) |
商品に対して推奨される最大年齢(年)商品に対して推奨される最大年齢が次の固定数値セットにマッピングされます。
|
suggestedMinAge(または suggestedAge.minValue) |
商品に対して推奨される最小年齢(年)商品に対して推奨される最小年齢が次の固定数値セットにマッピングされます。
|
Certification
Certification の定義の全文は schema.org/Certification で確認できます。
認証を指定するには、次のプロパティを使用します。
| 必須プロパティ | |
|---|---|
issuedBy |
認証を発行する権限を有する機関または認証機関。組織を指定するには
|
name |
認証の名称現時点では、次の値がサポートされています。
|
| 推奨プロパティ | |
|---|---|
certificationIdentification |
認証のコード。たとえば、EPREL 認証にリンク |
certificationRating |
認証の値。このプロパティは、
EU のエネルギー効率評価を指定するネストされたプロパティを hasCertification": { "@type": "Certification", "issuedBy": { "@type": "Organization", "name": "European_Commission" } "name": "EPREL", "url": "https://eprel.ec.europa.eu/screen/product/ovens/53553", "certificationIdentification": "53553", "certificationRating": { "@type": "Rating", "ratingValue": "A+", "bestRating": "A++", "worstRating": "D" } } CO2 排出量クラスを指定するネストされたプロパティを "hasCertification": { "@type": "Certification", "issuedBy": { "@type": "Organization", "name": "ADEME" } "name": "Vehicle_CO2_Class", "certificationRating": { "@type": "Rating", "ratingValue": "E", "bestRating": "A", "worstRating": "G" } } |
送料
OfferShippingDetails
OfferShippingDetails を使用すると、ユーザーの所在地と配送元の配送ポリシーに基づき、ユーザーが送料と推定配送時間を確認できます。商品に詳細な配送情報が表示されるようにするには、Product 構造化データに加えて、商品ページに次の OfferShippingDetails プロパティを追加します。
販売者は商品の配送について、ユーザーに複数の選択肢(翌日配達、翌々日配達、標準など)を提示する場合があります。それぞれを指定するには、shippingRate プロパティと deliveryTime プロパティをさまざまに組み合わせた、複数の shippingDetails プロパティを使用します。
OfferShippingDetails は必須ではありませんが、詳細な配送情報が表示されるようにするには、次のプロパティを追加する必要があります。
OfferShippingDetails の定義の全文は schema.org/OfferShippingDetails で確認できます。
| 必須プロパティ | |
|---|---|
deliveryTime |
注文を受けてから商品が購入者に届くまでに生じる遅延時間の合計。
|
shippingDestination |
配送先を示します。 |
shippingRate |
指定した配送先への送料の情報。
|
shippingRate.currency |
送料の通貨。3 文字の ISO 4217 形式で示します。この通貨は販売情報の通貨と同じにする必要があります。 |
shippingRate.value または shippingRate.maxValue |
送料無料を指定するには、値を |
DefinedRegion
DefinedRegion を使用してカスタムの地域を作成すると、複数の配送サービスで正確な送料とお届け日数を設定できます。現在、Google Merchant Center ヘルプの地域を設定するに記載されているように、この機能は一部の国でのみサポートされています。
| 必須プロパティ | |
|---|---|
addressCountry |
ISO 3166-1 alpha-2 形式による 2 文字の国コード。 |
| 推奨プロパティ | |
|---|---|
addressRegion または postalCode を選択 |
購入者の配送地域を指定します。省略した場合は、国全体が地域として指定されます。複数の地域を一覧表示できますが、1 つの |
addressRegion |
このプロパティを使用する場合は、国コードを付けない 2 桁または 3 桁の ISO 3166-2 区分コードで地域を指定します。Google 検索では現在、米国、オーストラリア、日本の地域のみサポートされています。例: 「NY」(米国、ニューヨーク州)、NSW(オーストラリア、ニュー サウス ウェールズ州)、「03」(日本、岩手県)。 地域情報と郵便番号の両方を入力しないでください。 |
postalCode |
郵便番号。たとえば 94043 などです。現在、郵便番号がサポートされているのはオーストラリア、カナダ、米国です。 |
ShippingDeliveryTime
ShippingDeliveryTime は、注文を受けてから商品が購入者に届くまでに生じる遅延時間の合計を共有するために使用します。
| 推奨プロパティ | |
|---|---|
handlingTime |
注文を受けてから商品が倉庫を出るまでに通常発生する遅延。 |
transitTime |
注文された商品が発送されてから購入者に届くまでに通常発生する遅延。 |
QuantitativeValue(配送所要時間の場合)
QuantitativeValue は配送所要時間を表すために使用されます。最短日数と最長日数を指定する必要があります(QuantitativeValue は価格の単価設定にも使用されますが、プロパティの検証ルールが異なります)。
| 必須プロパティ | |
|---|---|
maxValue |
最長日数。値は負でない整数にする必要があります。 |
minValue |
最短日数。値は負でない整数にする必要があります。 |
unitCode |
最小値と最大値の単位。値は |
返品
MerchantReturnPolicy
次のプロパティを使用して、返品に関するポリシー情報(返品手数料や返品可能期間など)が販売者のリスティングに表示されるようにしてください。
| 必須プロパティ | |
|---|---|
applicableCountry |
2 文字の ISO 3166-1 alpha-2 国コード形式による、返品に関するポリシーが適用される国コード。最大 50 か国を指定できます。 |
returnPolicyCategory |
返品に関するポリシーのタイプ。次のいずれかの値を使用します。
|
| 推奨プロパティ | |
|---|---|
merchantReturnDays |
商品の返品が可能なお届け日からの日数。このプロパティは、 |
returnFees |
返品料金のタイプ。次のいずれかのサポートされている値を使用します。
|
returnMethod |
利用可能な返品方法のタイプ。
|
returnShippingFeesAmount |
商品返品に伴う配送料。このプロパティは、商品の返品に伴い、消費者が販売者に対して配送料を支払う必要がある場合にのみ必須です。この場合、 |
Google で配送と返品を設定する別の方法
販売店の配送と返品に関するポリシーは複雑で、頻繁に変更されることもあります。配送および返品情報の指定や最新情報への更新にマークアップを使用することが困難で、Google Merchant Center アカウントを保有している場合は、Google Merchant Center ヘルプで配送設定と返品に関するポリシーを設定することを検討してください。または、Search Console の配送と返品に関するポリシーで、アカウント単位で設定することも可能です。この設定は自動的に Merchant Center に追加されます。
複数の配送と返品の設定を組み合わせる
配送または返品に関するポリシーを複数の場所で定義する場合、Google は次の優先順位を適用します(優先度が高い順)。
- Merchant Center に登録された商品レベルのフィード
- Content API for Shopping での設定
- Merchant Center または Search Console での設定
- 商品レベルの販売者リスティングのマークアップ
- 組織レベルのマークアップ
Search Console でリッチリザルトを監視する
Search Console は、Google 検索におけるページのパフォーマンスを監視できるツールです。Search Console に登録していなくても Google 検索結果に表示されますが、登録することにより、Google がサイトをどのように認識しているかを把握して改善できるようになります。次の場合は Search Console を確認することをおすすめします。
構造化データを初めてデプロイした後
ページがインデックスに登録されたら、関連するリッチリザルトのステータス レポートを使用して、問題がないかどうかを確認します。有効な項目が増え、無効な項目が増えていない状態が理想的です。構造化データに問題が見つかった場合の手順は次のとおりです。
- 無効な項目を修正します。
- 一般公開 URL の検査を行い、問題が解決したかどうかを確認します。
- ステータス レポートを使用して検証をリクエストします。
新しいテンプレートをリリースした後やコードを更新した後
ウェブサイトに大幅な変更を加えた場合は、構造化データの無効な項目が増加しないかどうか監視します。- 無効な項目が増加した場合は、新しく公開したテンプレートが正常に機能していないか、既存のテンプレートの新しい操作方法に問題があると考えられます。
- 有効な項目が減少している(無効な項目の増加と一致しない)場合は、ページに構造化データが埋め込まれていない可能性があります。URL 検査ツールを使用して問題の原因を特定します。
トラフィックを定期的に分析する場合
パフォーマンス レポートを使用して Google 検索のトラフィックを分析します。このデータから、検索でページがリッチリザルトとして表示される頻度、ユーザーがページをクリックする頻度、検索結果におけるページの平均掲載順位がわかります。この結果は、Search Console API を使用して自動的に取得することもできます。
Product 構造化データに関連する Search Console レポートは 2 つあります。
- 販売者リスティング レポート: 買い物客が商品を購入できるページ用。
- 商品スニペット レポート: 商品レビューや情報集約サイトなど、その他の商品関連ページ用。
どちらのレポートでも、Product 構造化データに関する警告とエラーが表示されますが、関連付けられているエクスペリエンスの要件が異なるため、個別に表示されます。たとえば、販売者リスティング レポートでは、Offer 構造化データを含む商品スニペットのチェックも実施されます。そのため、商品スニペット レポートの方では、販売者リスティング以外のページについてのみ参照すればよいことになります。
トラブルシューティング
構造化データの実装またはデバッグで問題が発生した場合は、以下のリソースが参考になります。
- コンテンツ管理システム(CMS)を使用している場合や、別の人がサイトを管理している場合は、担当者にサポートを依頼してください。その際は、問題の詳細を含む Search Console のメッセージを必ず転送してください。
- 構造化データを使用するコンテンツが必ず検索結果に表示されるとは限りません。コンテンツがリッチリザルトに表示されないときのよくある原因については、構造化データに関する一般的なガイドラインをご覧ください。
- 構造化データにエラーがある可能性があります。構造化データエラーの一覧と解析不能な構造化データに関するレポートを確認してください。
- 構造化データへの手動による対策がページに対して行われると、ページ上の構造化データが考慮されなくなります(ただし、Google 検索結果にはページは引き続き表示されます)。構造化データの問題を修正するには、手動による対策レポートを使用します。
- コンテンツにガイドライン違反がないか、ガイドラインを再度確認してください。スパム コンテンツまたはスパム マークアップの使用が原因で、問題が発生することがありますが、これは構文の問題ではない可能性があり、リッチリザルト テストでは特定できません。
- リッチリザルトが見つからない場合やリッチリザルトの総数が減少している場合のトラブルシューティングを行ってください。
- 再クロールとインデックスの再登録にかかる時間を考慮してください。ページを公開した後、Google がそのページを検出してクロールするまで数日かかる場合があることにご注意ください。クロールとインデックス登録に関する一般的な質問については、Google 検索のクロールとインデックス登録に関するよくある質問をご覧ください。
- Google 検索セントラル フォーラムでも質問を受け付けています。