Schema.org JSON-LD:Google検索の構造化データ

表示内容と一致する構造化データの選び方、作り方、検証方法を解説します。リッチリザルトの対象にはなりますが、表示は保証されません。

Schema.orgの構造化データは、検索エンジンがページの内容を理解するための語彙です。正しく実装すると、通常のスニペットがリッチリザルトに変わります。星評価、商品価格、営業時間、写真がGoogleの検索結果にそのまま表示されます。

この記事では、形式の選び方とスキーマの優先順位から、Organization、Product、AggregateRating、Review、ImageObjectのJSON-LDコードまで、全体の流れを解説します。見落とされがちなサブタイプも詳しく取り上げます。

JSON-LDの流れ:<script>内のマークアップ → Googleが構造を解析 → 検索結果に星評価と価格を表示するリッチスニペット。
GoogleはJSON-LDを推奨形式としています。MicrodataやRDFaと違い、JSON-LDは<script>タグの中に書くため、HTMLマークアップに埋め込む必要がありません。レイアウトとは別に保守・更新できます。

Schema.orgとは何か、なぜ構造化データを使うのか

Schema.orgは、Google、Bing、Yahoo、Yandexが2011年に始めた共同プロジェクトです。語彙には900を超えるデータ型と数千のプロパティがあります。すべての型は基底のThingを継承し、Person、Organization、Product、Event、CreativeWork、Actionなどに分岐します。

表示内容

ページと一致させる

マークアップは、読者が見て確認できる情報を記述します。

対象

機能のルールに従う

サポートされている型を使い、コンテンツと技術のガイドラインを満たします。

検証

グラフをテストする

構文とポリシーの要件を確認し、レンダリング後のページも検査します。

観察

表示は約束されない

テストに合格しても、リッチリザルトが表示される保証はありません。

Schema.orgマークアップは3つの課題を同時に解決します。検索エンジンにとっては、エンティティを明確に識別できます。これは単に社名が入ったテキストではなく組織であり、単なる数字ではなく商品の価格だと伝わります。ユーザーにとっては、検索結果のリッチリザルトで、クリック前にスニペットから多くの情報を得られます。ビジネスにとっては、CTRの向上とナレッジグラフへの掲載につながります。

形式:JSON-LD、Microdata、RDFa

Schema.orgの構造化データは3通りの方法で追加できます。新規プロジェクトならJSON-LDで決まりです。他の形式もサポートされていますが、保守が大変です。

形式記述場所HTMLとの結合Googleの推奨
JSON-LD<script type="application/ld+json">タグHTMLから独立推奨
Microdataitemscope、itemtype、itemprop属性HTML要素に埋め込みサポート
RDFavocab、typeof、property属性HTML要素に埋め込みサポート
新規プロジェクトにはJSON-LDが最適です。コードがレイアウトから分離され、動的に生成しやすく、HTMLテンプレートに触れずに更新できます。MicrodataとRDFaもGoogleはサポートしていますが、レイアウトを変更すると気づかないうちにマークアップが壊れることがあります。

JSON-LDの基本テンプレートは、どのページでも同じです。type application/ld+jsonの<script>タグの中に、必須の@contextと@typeを持つJSONオブジェクトを書きます。タグは<head>内にも<body>の末尾にも置けます。スキーマが複数ある場合は、<script>ブロックを別々に用意します。

html
<!-- Base JSON-LD template -->
<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "WebSite",
  "name": "Site Name",
  "url": "https://example.com"
}
</script>

<!-- Multiple schemas — multiple <script> blocks -->
<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "Organization",
  "name": "Company",
  "url": "https://example.com"
}
</script>

スキーマの優先順位:Googleでリッチリザルトになるもの

すべてのSchema.org型がリッチリザルトになるわけではありません。検索結果の見た目を強化できるのは、Googleがサポートする一部の型だけです。それ以外のスキーマはコンテンツの理解を助けますが、スニペットの見た目は変わりません。

事業と組織

LocalBusiness、Restaurant、Store:営業時間、住所、電話番号、評価をナレッジパネルに表示します。地域ビジネスでは最優先です。

商品と価格

Product + Offer:価格、在庫状況、評価をスニペットに直接表示します。Googleショッピングとリッチスニペットに対応します。ECサイトには不可欠です。

コンテンツとFAQ

Articleなどのサポート対象の型は、表示されているコンテンツを正確に表す必要があります。FAQのコンテンツは読者に役立ちますが、検索結果での展開表示は保証されません。

評価とレビュー

AggregateRating + Review:スニペットに星評価を表示します。最も目を引く要素です。Product、LocalBusiness、Recipe、Courseで使えます。

スキーマ型Googleのリッチリザルト優先度
Product + Offerスニペットに価格・在庫状況・評価を表示、ショッピングカードECサイトでは必須
LocalBusiness + AggregateRatingナレッジパネル、マップパック、星評価地域ビジネスでは必須
Article / NewsArticleトップニュースのカルーセル、公開日メディアとブログでは高
BreadcrumbListスニペットのURLの代わりにパンくずリストを表示どのサイトでも高
Event日時と場所を表示するイベントカードイベントページでは中
Recipe写真・調理時間・カロリー付きのレシピカード料理サイトでは中
Organization(Local以外)ナレッジグラフ、検索結果のロゴ全サイトの基本

Organization:基本スキーマとすべてのサブタイプ

Organizationは、あらゆる企業、組織、ブランドの基底型です。サブタイプの階層は幅広く、サブタイプごとに専用のフィールドが加わります。正しいサブタイプの選択は重要です。Googleはそれを使って、事業の文脈とナレッジパネルに表示する内容を判断します。

型対象主な追加フィールド
Organizationあらゆる企業、NGO、実店舗を持たないブランドname, url, logo, sameAs
LocalBusiness実店舗を持つ事業address, telephone, openingHours, geo
Store小売店currenciesAccepted, paymentAccepted
FoodEstablishmentカフェ、レストラン(基底型)servesCuisine, menu, hasMap
RestaurantレストランservesCuisine, menu, acceptsReservations
CafeOrCoffeeShopコーヒーショップservesCuisine
FastFoodRestaurantファストフードservesCuisine
MedicalOrganization医療機関(基底型)medicalSpecialty
Hospital病院availableService, medicalSpecialty
MedicalClinicクリニックmedicalSpecialty, availableService
Dentist歯科医院availableService
LegalService法律事務所—
Lawyer弁護士—
AccountingService会計・監査事務所—
FinancialService銀行、保険会社、投資会社—
RealEstateAgent不動産会社—
AutomotiveBusiness自動車販売・修理(基底型)—
AutoDealer自動車ディーラー—
AutoRepair自動車修理工場—
HotelホテルamenityFeature, checkinTime, checkoutTime
SportsActivityLocationスポーツ施設(基底型)availableService
GymOrHealthClubジム、フィットネスクラブ—
GovernmentOrganization行政機関—
EducationalOrganization教育機関(基底型)—
CollegeOrUniversity大学—
School学校—
Corporation大企業tickerSymbol, legalName

基本のOrganization

基本のOrganizationスキーマは、どのサイトでもホームページに追加します。Googleがブランドを識別し、sameAsで外部プロフィールと関連づけるのに役立ちます。固有の識別子を入れた@idフィールドを使うと、他のスキーマがデータを重複させずにこの組織を参照できます。

json
{
  "@context": "https://schema.org",
  "@type": "Organization",
  "@id": "https://example.com/#organization",
  "name": "Company Name",
  "legalName": "Example LLC",
  "url": "https://example.com",
  "logo": {
    "@type": "ImageObject",
    "url": "https://example.com/logo.png",
    "width": 200,
    "height": 60
  },
  "description": "Brief company description for Knowledge Graph.",
  "foundingDate": "2015",
  "contactPoint": {
    "@type": "ContactPoint",
    "telephone": "+1-800-123-4567",
    "contactType": "customer service",
    "availableLanguage": "English"
  },
  "sameAs": [
    "https://www.linkedin.com/company/yourcompany",
    "https://twitter.com/yourcompany",
    "https://www.facebook.com/yourcompany"
  ]
}

LocalBusiness:住所のある実店舗のビジネス

LocalBusinessは、実店舗を持つビジネスにとって最も重要なサブタイプです。スキーマを正しく入力すると、検索結果の上部に出る地図ブロックのGoogleマップパックや、営業時間つきのナレッジパネルに表示される可能性が高まります。主なフィールドはaddress、geo、openingHoursSpecification、telephone、priceRangeです。

json
{
  "@context": "https://schema.org",
  "@type": "Restaurant",
  "@id": "https://example.com/#business",
  "name": "The Birch Restaurant",
  "url": "https://example.com",
  "telephone": "+1-212-555-0100",
  "email": "info@example.com",
  "servesCuisine": ["American", "European"],
  "priceRange": "$$",
  "address": {
    "@type": "PostalAddress",
    "streetAddress": "123 Main Street",
    "addressLocality": "New York",
    "addressRegion": "NY",
    "postalCode": "10001",
    "addressCountry": "US"
  },
  "geo": {
    "@type": "GeoCoordinates",
    "latitude": 40.7128,
    "longitude": -74.0060
  },
  "openingHoursSpecification": [
    {
      "@type": "OpeningHoursSpecification",
      "dayOfWeek": ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday"],
      "opens": "12:00",
      "closes": "23:00"
    },
    {
      "@type": "OpeningHoursSpecification",
      "dayOfWeek": ["Saturday", "Sunday"],
      "opens": "12:00",
      "closes": "00:00"
    }
  ],
  "image": "https://example.com/photos/restaurant.jpg",
  "hasMap": "https://maps.google.com/?cid=XXXXXX"
}
openingHoursSpecificationの曜日は、先頭を大文字にした英語で書きます。Monday、Tuesday、Wednesday、Thursday、Friday、Saturday、Sundayです。時刻は24時間形式のHH:MMです。24時間営業の場合は、opensを"00:00"、closesを"23:59"にします。

sameAs:外部プロフィールへのリンク

sameAsフィールドは、自社の組織が外部プラットフォーム上のプロフィールと同一であることをGoogleに伝えます。Googleのエンティティデータベースであるナレッジグラフを構築するうえで、重要なフィールドです。組織の存在を裏づける信頼できる情報源が多いほど、ナレッジパネルに表示される可能性が高くなります。

  • Wikidata(最も信頼性が高い):https://www.wikidata.org/wiki/Q...
  • Wikipedia:https://en.wikipedia.org/wiki/...
  • LinkedIn、Twitter/X、Facebook、Instagram
  • 組織のYouTubeチャンネル
  • Googleビジネスプロフィール(地域ビジネス向け)
  • 業界ディレクトリ:医療機関名簿、弁護士会など

Product:商品スキーマとすべてのサブタイプ

Productは、あらゆる商品・品目の基底スキーマです。Offer(価格と在庫状況)やAggregateRating(評価)と組み合わせて使います。Productスキーマを正しく実装すると、価格、在庫状況、星評価がスニペットに直接表示されるリッチリザルトになります。

型用途備考
Productあらゆる商品の基本スキーマname、image、descriptionが必須
Offer個別の出品:価格と在庫状況price、priceCurrency、availabilityが必須
AggregateOffer価格帯(複数のオファー)lowPrice、highPrice、offerCount
ProductGroupバリエーションを持つ商品グループvariesBy、hasVariant
IndividualProductProductGroup内の個別バリエーションisVariantOf → ProductGroup
Brand商品のブランド(Productにネスト)nameが必須

Offerを含む基本のProduct

リッチリザルトにはGoogleが最低限のフィールドを求めます。name、image、description、そしてネストしたOfferのpriceCurrency、price、availabilityです。これらのうち少なくとも1つが欠けると、商品スニペットは強化されません。

json
{
  "@context": "https://schema.org",
  "@type": "Product",
  "name": "Air X Pro Running Shoes",
  "description": "Lightweight running shoes with foam sole for road running. Weight 230g, drop 10mm.",
  "sku": "AIRX-001-BLK",
  "mpn": "AIRX001",
  "gtin13": "0123456789012",
  "brand": {
    "@type": "Brand",
    "name": "RunMax"
  },
  "image": [
    "https://example.com/photos/airx-front.jpg",
    "https://example.com/photos/airx-side.jpg",
    "https://example.com/photos/airx-back.jpg"
  ],
  "offers": {
    "@type": "Offer",
    "url": "https://example.com/products/air-x-pro",
    "priceCurrency": "USD",
    "price": "89.99",
    "priceValidUntil": "2026-12-31",
    "itemCondition": "https://schema.org/NewCondition",
    "availability": "https://schema.org/InStock",
    "seller": {
      "@type": "Organization",
      "name": "RunMax Store"
    }
  },
  "aggregateRating": {
    "@type": "AggregateRating",
    "ratingValue": "4.7",
    "reviewCount": "128"
  }
}
availabilityの値は、該当するスキーマ型が想定する語彙で指定します。最新の機能ドキュメントに従い、文脈の中で値全体を検証してください。1つのフィールドだけでリッチリザルトの結果を推測しないでください。

AggregateOffer:価格帯

複数の販売者が扱う商品や、価格の異なるバリエーションがある商品には、AggregateOfferを使います。単一の価格ではなく、価格帯(lowPrice〜highPrice)を表示できます。

json
{
  "@context": "https://schema.org",
  "@type": "Product",
  "name": "Galaxy S25 Smartphone",
  "brand": { "@type": "Brand", "name": "Samsung" },
  "image": "https://example.com/galaxy-s25.jpg",
  "offers": {
    "@type": "AggregateOffer",
    "priceCurrency": "USD",
    "lowPrice": "799",
    "highPrice": "1099",
    "offerCount": "3",
    "offers": [
      {
        "@type": "Offer",
        "name": "128 GB / Black",
        "price": "799",
        "priceCurrency": "USD",
        "availability": "https://schema.org/InStock"
      },
      {
        "@type": "Offer",
        "name": "256 GB / White",
        "price": "899",
        "priceCurrency": "USD",
        "availability": "https://schema.org/InStock"
      },
      {
        "@type": "Offer",
        "name": "512 GB / Violet",
        "price": "1099",
        "priceCurrency": "USD",
        "availability": "https://schema.org/PreOrder"
      }
    ]
  }
}

ProductGroup:バリエーションのある商品

ProductGroupは、サイズ、色、素材などのパラメーターだけが異なる関連商品のグループです。バリエーションのある商品ページで使います。個々のバリエーションは、ネストしたProductで表し、isVariantOfで親のProductGroupを指します。

json
{
  "@context": "https://schema.org",
  "@type": "ProductGroup",
  "name": "Air X Pro Running Shoes",
  "description": "Road running shoes available in multiple colours and sizes.",
  "url": "https://example.com/products/air-x-pro",
  "brand": { "@type": "Brand", "name": "RunMax" },
  "productGroupID": "AIRX-PRO",
  "variesBy": ["https://schema.org/color", "https://schema.org/size"],
  "hasVariant": [
    {
      "@type": "Product",
      "name": "Air X Pro — Black, US 9",
      "sku": "AIRX-BLK-9",
      "color": "Black",
      "size": "US 9",
      "offers": {
        "@type": "Offer",
        "price": "89.99",
        "priceCurrency": "USD",
        "availability": "https://schema.org/InStock"
      }
    },
    {
      "@type": "Product",
      "name": "Air X Pro — Blue, US 11",
      "sku": "AIRX-BLU-11",
      "color": "Blue",
      "size": "US 11",
      "offers": {
        "@type": "Offer",
        "price": "89.99",
        "priceCurrency": "USD",
        "availability": "https://schema.org/OutOfStock"
      }
    }
  ]
}
ProductのリッチリザルトにはGoogleがname、image、ネストしたOfferを求めます。Offer(価格と在庫状況)がないと、強化されたスニペットは表示されません。さらに、brand、skuまたはgtin13があると、Googleショッピングに表示される可能性が高まります。

AggregateRatingとReview:評価とレビュー

検索結果の星評価は、スニペットの中で最も目を引く要素です。実装には、関連する2つの型を使います。AggregateRating(全評価を集計したスコア)とReview(個別のテキストレビュー)です。どちらも必ず親スキーマの中にネストします。親になるのはProduct、LocalBusiness、Recipe、Course、Bookなどです。

AggregateRating:集計スコア

AggregateRatingは、平均値と評価数という集計スコアを表します。Googleはこれをスニペットの星として表示します。必須フィールドはratingValue(平均値)と、reviewCountまたはratingCountです。

json
{
  "@context": "https://schema.org",
  "@type": "Product",
  "name": "Air X Pro Running Shoes",
  "image": "https://example.com/airx.jpg",
  "offers": {
    "@type": "Offer",
    "price": "89.99",
    "priceCurrency": "USD",
    "availability": "https://schema.org/InStock"
  },
  "aggregateRating": {
    "@type": "AggregateRating",
    "ratingValue": "4.7",
    "bestRating": "5",
    "worstRating": "1",
    "reviewCount": "128",
    "ratingCount": "215"
  }
}
ratingCountは、評価の総数です。テキストのない評価も含みます。reviewCountは、テキストレビューの数です。星評価だけでテキストがない場合はratingCountを使います。テキストレビューだけの場合はreviewCountを使います。両方を同時に指定することもできます。

Review:個別のレビュー

Reviewは、個別のテキストレビューを表すスキーマです。reviewプロパティで親オブジェクトの中にネストします。各Reviewには、投稿者、評価、本文を含めます。Googleはリッチリザルトにレビュー本文の一部を表示することがあります。

json
{
  "@context": "https://schema.org",
  "@type": "Product",
  "name": "Air X Pro Running Shoes",
  "image": "https://example.com/airx.jpg",
  "offers": {
    "@type": "Offer",
    "price": "89.99",
    "priceCurrency": "USD",
    "availability": "https://schema.org/InStock"
  },
  "aggregateRating": {
    "@type": "AggregateRating",
    "ratingValue": "4.7",
    "reviewCount": "128"
  },
  "review": [
    {
      "@type": "Review",
      "reviewRating": {
        "@type": "Rating",
        "ratingValue": "5",
        "bestRating": "5"
      },
      "name": "Great shoes for daily runs",
      "reviewBody": "Been running in them for 3 months — sole holds up well, feet don't tire. Recommend for road running.",
      "datePublished": "2026-03-15",
      "author": {
        "@type": "Person",
        "name": "Alex K."
      }
    },
    {
      "@type": "Review",
      "reviewRating": {
        "@type": "Rating",
        "ratingValue": "4",
        "bestRating": "5"
      },
      "reviewBody": "Good cushioning, but runs a little small. Order half a size up.",
      "datePublished": "2026-04-01",
      "author": {
        "@type": "Person",
        "name": "Maria S."
      }
    }
  ]
}
Googleの重要な要件があります。マークアップのレビューは、自サイトの実在ユーザーによる本物のレビューでなければなりません。星5つのレビューだけを表示する、低評価を隠す、編集部が書いたレビューを公開する、といった行為は禁止です。違反すると、手動による対策が科され、リッチリザルトが表示されなくなります。

ImageObject:構造化データの写真

Schema.orgで画像を指定する方法は2つあります。URL文字列("image": "https://example.com/photo.jpg")と、メタデータを持つImageObjectです。ほとんどのスキーマは文字列で足ります。ただしArticle、Recipe、HowToでは、Googleは寸法、キャプション、形式を指定できるImageObjectを推奨しています。

スキーマ型画像の要件最小幅
Product商品画像を1枚以上、白背景が望ましい800 px推奨
Article / NewsArticle16:9、4:3、1:1の画像を3枚以上1200 px
Recipe完成した料理の画像が必須任意、1200×628が最適
LocalBusiness入口、内装、外観の写真任意
Organization(ロゴ)長方形、白または透過の背景112×112以上、縦横比は最大1×10
JSON-LDによるSchema.orgの画像マークアップの例です。
json
{
  "@context": "https://schema.org",
  "@type": "Product",
  "name": "Air X Pro Running Shoes",
  "image": [
    {
      "@type": "ImageObject",
      "url": "https://example.com/airx-front.jpg",
      "width": 1200,
      "height": 1200,
      "caption": "Air X Pro — front view"
    },
    {
      "@type": "ImageObject",
      "url": "https://example.com/airx-side.jpg",
      "width": 1200,
      "height": 1200,
      "caption": "Air X Pro — side view"
    }
  ],
  "offers": {
    "@type": "Offer",
    "price": "89.99",
    "priceCurrency": "USD",
    "availability": "https://schema.org/InStock"
  }
}
ArticleにはGoogleが、幅1200 pxで、アスペクト比が16:9、4:3、1:1のいずれかの画像を1枚以上求めます。3種類すべてを用意すると、Googleが表示場所ごとに適切なものを選びます。画像はクロール可能で(robots.txtでブロックしない)、URLが安定している必要があります。

1ページに複数のスキーマを組み合わせる

1ページに複数のスキーマを入れる場合は、<script>ブロックを別々に追加します。ここでは、商品ページのマークアップの完全な例を示します。販売元の組織、パンくずリスト、価格・評価・レビュー付きの商品です。

html
<!-- Schema 1: Selling organisation (on all site pages) -->
<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "Organization",
  "@id": "https://example.com/#organization",
  "name": "RunMax Store",
  "url": "https://example.com",
  "logo": "https://example.com/logo.png"
}
</script>

<!-- Schema 2: Breadcrumbs -->
<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "BreadcrumbList",
  "itemListElement": [
    { "@type": "ListItem", "position": 1, "name": "Home", "item": "https://example.com" },
    { "@type": "ListItem", "position": 2, "name": "Footwear", "item": "https://example.com/shoes" },
    { "@type": "ListItem", "position": 3, "name": "Air X Pro" }
  ]
}
</script>

<!-- Schema 3: Product with price, rating and review (on product page) -->
<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "Product",
  "name": "Air X Pro Running Shoes",
  "description": "Road running shoes.",
  "sku": "AIRX-001",
  "brand": { "@type": "Brand", "name": "RunMax" },
  "image": "https://example.com/airx.jpg",
  "offers": {
    "@type": "Offer",
    "price": "89.99",
    "priceCurrency": "USD",
    "availability": "https://schema.org/InStock",
    "priceValidUntil": "2026-12-31",
    "seller": { "@id": "https://example.com/#organization" }
  },
  "aggregateRating": {
    "@type": "AggregateRating",
    "ratingValue": "4.7",
    "reviewCount": "128",
    "bestRating": "5"
  },
  "review": {
    "@type": "Review",
    "reviewRating": { "@type": "Rating", "ratingValue": "5" },
    "author": { "@type": "Person", "name": "Alex K." },
    "reviewBody": "Excellent shoes, run in them every day.",
    "datePublished": "2026-04-10"
  }
}
</script>
seller: { "@id": "https://example.com/#organization" }に注目してください。先に定義した組織を@idで参照しています。これをグラフ連結と呼びます。Googleはデータを重複させずに、エンティティを1つのナレッジグラフにつなげます。

構造化データの検証

実装したら、必ずマークアップを検証します。Googleの公式ツールは2つあります。さらにSearch Consoleでは、インデックス登録済みのページでクローラーが実際に見ている内容を確認できます。

ステップ1リッチリザルトテスト

search.google.com/test/rich-resultsを開き、URLまたはHTMLを入力します。スキーマで利用できるリッチリザルト、必須フィールド、入力が誤っている箇所がわかります。マークアップで検索結果の見た目が実際に強化されるかを確認できるのは、このツールだけです。

ステップ2Schema Markup Validator

validator.schema.orgを開くと、Googleが対応する型に限らず、Schema.orgの標準に照らした完全な検証ができます。型ごとの必須プロパティを確認し、互換性のない組み合わせを警告します。複雑なネストしたスキーマで役立ちます。

ステップ3Google Search Console

Search Console →「拡張」→ スキーマ型を選びます。この画面には、インデックス登録済みのページで実際に起きているエラーが表示されます。ここに出るエラーが、公開中のURLでいまリッチリザルトを妨げている原因です。最も対応しやすい手がかりになります。

簡易チェック:JSON-LDが、JavaScriptで追加されたものだけでなく、サーバーのHTMLレスポンスにあるか確認します。DevTools → Network → 最初のリクエスト → Previewを開き、script type="application/ld+json"を検索します。ブロックがなければ、Googlebotがマークアップを認識できない可能性があります。

構造化データのチェックリスト

JSON-LDの基本実装

  • <script type="application/ld+json">タグを<head>または<body>の末尾に追加した
  • すべてのブロックに@context: "https://schema.org"と@typeがある
  • 主要なエンティティすべてに、フラグメント付きURL形式(#name)の固有の@idがある
  • JSONが有効で、末尾のカンマがなく、引用符がすべて閉じている
  • マークアップがサーバーのHTMLレスポンスにある(JavaScript経由だけではない)

Organization / LocalBusiness

  • プレーンなOrganizationではなく、適切なサブタイプ(Restaurant、Dentist、AutoDealerなど)を選んだ
  • name、url、telephone、address(LocalBusinessの場合)を入力した
  • geoに正確な座標(latitude、longitude)を追加した
  • openingHoursSpecificationに、英語の曜日名とHH:MM形式の時刻を入力した
  • sameAsで、少なくともSNSのプロフィールとWikidata(あれば)にリンクした

Product

  • name、description、image(1枚以上)を入力した
  • ネストしたOfferに、price、priceCurrency、availability、priceValidUntilがある
  • availabilityに完全なURL(https://schema.org/InStock)を使った
  • Googleショッピング向けに、skuまたはgtin13(あるいは両方)を指定した
  • ページにユーザー評価がある場合は、AggregateRatingをネストした

評価とレビュー

  • AggregateRatingに、ratingValue、reviewCount、bestRating、worstRatingがある
  • AggregateRatingの値がサイトの実データと一致している
  • Reviewは単独ではなく、親オブジェクト(Product / LocalBusiness)の中にネストされている
  • 各Reviewに、author(Person)、reviewRating、datePublished、reviewBodyがある
  • マークアップのレビューは、実在ユーザーによる本物のレビューである

FAQ

Schema.orgマークアップはGoogleの検索順位に直接影響しますか?
構造化データは、Googleがページの該当機能を理解する助けになります。ただし、リッチリザルトの表示は保証されず、マークアップが順位を直接上げる近道であるともGoogleは説明していません。表示されている事実を正確に表すために使ってください。
Google Tag Managerで構造化データを追加できますか?
技術的には可能です。GTMでJSON-LDの<script>タグを挿入できます。ただしGoogleは、JavaScriptで追加するより、サーバーのHTMLレスポンスにあるマークアップを好みます。そのページでGooglebotがJSを実行しない場合、GTMで挿入したマークアップはクロール時に正しく認識されないことがあります。最適なのは、サーバー側でJSON-LDを生成する方法です。
Reviewマークアップには、何件のレビューを含めるべきですか?
Googleは決まった件数を求めていません。実際には、レビューが10件未満ならすべて含め、数百件ある場合は最近の3〜5件で十分です。件数より質が大切で、各Reviewに本文、投稿者、日付が必要です。レビューが少なすぎると、スニペットに星が表示されないことがあります。
検証に合格したのに、リッチリザルトが表示されないのはなぜですか?
理由はいくつか考えられます。(1) Googleがまだページを再クロールしていない:1〜4週間待つか、インデックス登録をリクエストします。(2) reviewCountが少なすぎる。(3)ページがGoogleのポリシーに違反している(例:レビューが操作されているように見える)。(4)このスキーマ型のリッチリザルトが、他の検索結果機能と競合している。Search Console →「拡張」で確認します。
海外向けストアでは、価格をどう指定しますか?
通貨ごとに別々のOfferを使うか、AggregateOffer内に複数のOfferを入れます。priceCurrencyにはISO 4217コード(USD、EUR、GBP、JPY)を使います。Googleは、ページの対象となる国や言語の価格を表示します。hreflangを正しく設定して、各ロケールのユーザーが自分の通貨のマークアップを見られるようにします。

Check it with SpiderHead

Free and local: run the audit on your own machine.

Try it