Schema.org JSON-LD:Google検索の構造化データ
表示内容と一致する構造化データの選び方、作り方、検証方法を解説します。リッチリザルトの対象にはなりますが、表示は保証されません。
Schema.orgの構造化データは、検索エンジンがページの内容を理解するための語彙です。正しく実装すると、通常のスニペットがリッチリザルトに変わります。星評価、商品価格、営業時間、写真がGoogleの検索結果にそのまま表示されます。
この記事では、形式の選び方とスキーマの優先順位から、Organization、Product、AggregateRating、Review、ImageObjectのJSON-LDコードまで、全体の流れを解説します。見落とされがちなサブタイプも詳しく取り上げます。
<script>内のマークアップ → Googleが構造を解析 → 検索結果に星評価と価格を表示するリッチスニペット。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から独立 | 推奨 |
| Microdata | itemscope、itemtype、itemprop属性 | HTML要素に埋め込み | サポート |
| RDFa | vocab、typeof、property属性 | HTML要素に埋め込み | サポート |
JSON-LDの基本テンプレートは、どのページでも同じです。type application/ld+jsonの<script>タグの中に、必須の@contextと@typeを持つJSONオブジェクトを書きます。タグは<head>内にも<body>の末尾にも置けます。スキーマが複数ある場合は、<script>ブロックを別々に用意します。
<!-- 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フィールドを使うと、他のスキーマがデータを重複させずにこの組織を参照できます。
{
"@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です。
{
"@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"
}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 |
| IndividualProduct | ProductGroup内の個別バリエーション | isVariantOf → ProductGroup |
| Brand | 商品のブランド(Productにネスト) | nameが必須 |
Offerを含む基本のProduct
リッチリザルトにはGoogleが最低限のフィールドを求めます。name、image、description、そしてネストしたOfferのpriceCurrency、price、availabilityです。これらのうち少なくとも1つが欠けると、商品スニペットは強化されません。
{
"@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"
}
}AggregateOffer:価格帯
複数の販売者が扱う商品や、価格の異なるバリエーションがある商品には、AggregateOfferを使います。単一の価格ではなく、価格帯(lowPrice〜highPrice)を表示できます。
{
"@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を指します。
{
"@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"
}
}
]
}AggregateRatingとReview:評価とレビュー
検索結果の星評価は、スニペットの中で最も目を引く要素です。実装には、関連する2つの型を使います。AggregateRating(全評価を集計したスコア)とReview(個別のテキストレビュー)です。どちらも必ず親スキーマの中にネストします。親になるのはProduct、LocalBusiness、Recipe、Course、Bookなどです。
AggregateRating:集計スコア
AggregateRatingは、平均値と評価数という集計スコアを表します。Googleはこれをスニペットの星として表示します。必須フィールドはratingValue(平均値)と、reviewCountまたはratingCountです。
{
"@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"
}
}Review:個別のレビュー
Reviewは、個別のテキストレビューを表すスキーマです。reviewプロパティで親オブジェクトの中にネストします。各Reviewには、投稿者、評価、本文を含めます。Googleはリッチリザルトにレビュー本文の一部を表示することがあります。
{
"@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."
}
}
]
}ImageObject:構造化データの写真
Schema.orgで画像を指定する方法は2つあります。URL文字列("image": "https://example.com/photo.jpg")と、メタデータを持つImageObjectです。ほとんどのスキーマは文字列で足ります。ただしArticle、Recipe、HowToでは、Googleは寸法、キャプション、形式を指定できるImageObjectを推奨しています。
| スキーマ型 | 画像の要件 | 最小幅 |
|---|---|---|
| Product | 商品画像を1枚以上、白背景が望ましい | 800 px推奨 |
| Article / NewsArticle | 16:9、4:3、1:1の画像を3枚以上 | 1200 px |
| Recipe | 完成した料理の画像が必須 | 任意、1200×628が最適 |
| LocalBusiness | 入口、内装、外観の写真 | 任意 |
| Organization(ロゴ) | 長方形、白または透過の背景 | 112×112以上、縦横比は最大1×10 |
{
"@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"
}
}1ページに複数のスキーマを組み合わせる
1ページに複数のスキーマを入れる場合は、<script>ブロックを別々に追加します。ここでは、商品ページのマークアップの完全な例を示します。販売元の組織、パンくずリスト、価格・評価・レビュー付きの商品です。
<!-- 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>構造化データの検証
実装したら、必ずマークアップを検証します。Googleの公式ツールは2つあります。さらにSearch Consoleでは、インデックス登録済みのページでクローラーが実際に見ている内容を確認できます。
search.google.com/test/rich-resultsを開き、URLまたはHTMLを入力します。スキーマで利用できるリッチリザルト、必須フィールド、入力が誤っている箇所がわかります。マークアップで検索結果の見た目が実際に強化されるかを確認できるのは、このツールだけです。
validator.schema.orgを開くと、Googleが対応する型に限らず、Schema.orgの標準に照らした完全な検証ができます。型ごとの必須プロパティを確認し、互換性のない組み合わせを警告します。複雑なネストしたスキーマで役立ちます。
Search Console →「拡張」→ スキーマ型を選びます。この画面には、インデックス登録済みのページで実際に起きているエラーが表示されます。ここに出るエラーが、公開中のURLでいまリッチリザルトを妨げている原因です。最も対応しやすい手がかりになります。
構造化データのチェックリスト
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 Tag Managerで構造化データを追加できますか?
Reviewマークアップには、何件のレビューを含めるべきですか?
検証に合格したのに、リッチリザルトが表示されないのはなぜですか?
海外向けストアでは、価格をどう指定しますか?
Check it with SpiderHead
Free and local: run the audit on your own machine.



