日本語 English(Home)

構造化データとは?JSON-LDの書き方・確認方法とAI検索との関係

構造化データは、ページの内容を検索エンジンなどに明示するための標準化されたデータ形式です。Googleの定義、非構造化データとの違い、JSON-LDの書き方と確かめ方、リッチリザルトやAI検索との関係で何が言えて何が言えないかを整理します。

構造化データとは?JSON-LDの書き方・確認方法とAI検索との関係

この記事の要点:

  • 構造化データは、Googleの説明では、ページに関する情報をさまざまなサイトで活用できるように標準化したデータ形式です。形式はJSON-LDが推奨です。
  • リッチリザルトの対象になりえますが、表示は約束されず、順位を直接上げるものでもありません。FAQとHowToのリッチリザルトは表示を終えています。
  • AIによる概要やAIモードのための特別なマークアップは不要です。会社や記事の主題を取り違えずに伝える手段として整えます。
  • 迷ったら、ページの主な内容を表す型を1つと、サイト共通のOrganization・BreadcrumbListから始めます。
  • 公開前にリッチリザルトテストと検証ツールで確かめ、公開後はSearch Consoleでエラーを見ます。

構造化データとは

構造化データとは、ページに関する情報をさまざまなサイトで活用できるように標準化したデータ形式です(Google 検索セントラル:構造化データの仕組みについて)。Googleは、構造化データでページの意図を伝えるとページをより正確に理解できるとし、形式は多くの場合JSON-LDを推奨しています。

具体的には、記事の題名・公開日・運営会社・商品の価格などを、schema.orgの語彙でHTMLの中に書きます。本文の「株式会社〇〇」が運営者か取引先か題材かを明示できます。

schema.orgとは

schema.orgとは、構造化データで使う型(Organization、Article、Productなど)とプロパティ(name、priceなど)を定めた共通の語彙です。2011年にGoogle・Microsoft・Yahoo・Yandexが共同で始めました(schema.org:About)。Googleのリッチリザルトに使われるのはその一部です。

3つの書き方(形式)

構造化データの書き方(形式)はJSON-LD・Microdata・RDFaの3つで、GoogleはJSON-LDを推奨しています。

形式書く場所特徴
JSON-LD<script type="application/ld+json"> の中本文のHTMLと切り離して書ける。Googleが推奨する形式
Microdata本文のHTMLタグの属性(itemscope、itemprop など)見えている文字に直接印を付ける
RDFa本文のHTMLタグの属性(vocab、property など)Microdataと同じく属性で書く

構造化データと非構造化データの違い

構造化データと非構造化データの違いは、項目と値の決まった形で整理されているかどうかです。構造化データは「題名=〇〇、公開日=〇〇」のように項目ごとに値が入り、非構造化データ(文章・画像・音声・動画など)は決まった形を持ちません。

用語意味例
構造化データ(SEO)ページの内容を、schema.orgの型とプロパティで検索エンジン向けに書いた記述記事の題名・公開日・著者をJSON-LDで書いたもの
構造化データ(データ分析)表の行と列のように、決まった項目で整理されたデータ顧客の一覧表、売上の表
半構造化データ項目名は付いているが、表ほど形が決まっていないデータJSONやXMLのファイル
非構造化データ決まった形を持たないデータウェブページの本文、画像、音声、動画

SEOでは、人が読む本文が非構造化データにあたります。検索エンジンは本文から内容を推測しますが、構造化データを添えると題名・日付・運営者などを明示できます。データ分析の意味と区別するには「構造化データ マークアップ」「schema.org」と合わせて調べます。

構造化データでできること・できないこと

構造化データでできるのは、リッチリザルトの対象になることと、ページの内容を検索エンジンに正確に伝えることで、順位を直接上げるものではありません。

  • リッチリザルトの対象になる:商品の価格、レビューの星、イベントの日時、パンくずリストなどが検索結果に表示される場合があります。
  • 内容を正確に伝える:ページの種類、運営する組織、記事の主題などを、推測ではなく宣言として伝えられます。

構造化データを入れても、リッチリザルトを表示するかどうかはGoogleが判断します。

終わったリッチリザルト:FAQとHowTo

よくある質問(FAQPage)のリッチリザルトは、2023年8月に、よく知られた信頼性の高い政府・保健医療系のサイトに限られ、2026年5月7日以降はすべてのサイトで表示されなくなりました。HowTo(手順)のリッチリザルトも2023年に表示を終えています。FAQPageのマークアップは残しても問題ありません。

AI検索と構造化データの関係

構造化データは、AIによる概要やAIモードに表示されるための条件ではなく、入れればAIに引用されるものでもありません。よく見る主張を、公式の説明に照らすと次のとおりです。

よく見る主張公式の説明から言えること
AIによる概要に出るには専用のマークアップが必要Googleは、AIによる概要やAIモードに表示されるために、特別なマークアップや追加の要件は必要ないと説明しています(AI 機能とウェブサイト)
構造化データを入れればAIに引用される引用されるかどうかは検索エンジン側が決めます。構造化データは引用を約束するものではありません
構造化データはAI検索には関係ないページの内容をプログラムに正確に伝える手段であることは、通常の検索でもAI検索でも変わりません

Google以外のAIサービスでの使われ方は、公開されている説明が限られます。役立つ可能性があるのは、エンティティ(会社・人物・製品など、ほかと区別できる事柄)を取り違えずに伝える場面です。例:同名の会社がある場合、Organizationの sameAs で公式SNSやWikidataを結ぶと、どの会社かを特定する手がかりが増えます。

JSON-LDの書き方

JSON-LDは、<script type="application/ld+json"> の中に、@context(使う語彙。schema.orgなら "https://schema.org")、@type(型)、その型のプロパティ(name、urlなど)を書く形式です。値に別の型を入れ子にでき、HTMLの head 内でも body 内でも構いません。以下のコードはすべて説明用の例です。

Organization:運営組織と sameAs

Organizationは、トップページや会社概要のページに置き、運営組織を宣言する型です。sameAsには、公式SNSやWikidataのページなど、その組織を指すことが確かなURLだけを書きます。

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "Organization",
  "@id": "https://example.com/#organization",
  "name": "株式会社サンプル工務店",
  "url": "https://example.com/",
  "logo": "https://example.com/images/logo.png",
  "sameAs": ["https://www.wikidata.org/wiki/Q(確認したID)",
    "https://www.youtube.com/@(公式チャンネル)"]
}
</script>

@id は、ほかの構造化データから同じ組織を参照するための識別子です。記事の author や publisher から同じ @id で参照すれば、組織の情報を何度も書かずに済みます。1ページの複数の型は、scriptを分けても "@graph": [ ... ] にまとめても構いません。

BlogPosting:記事と about・mentions・mainEntity

記事ページには、ArticleまたはBlogPosting(ニュースならNewsArticle)を使い、Googleが推奨する headline、image、datePublished、dateModified、author などを書きます。記事の主題は、schema.orgの about(主な題材)、mentions(触れているが主題ではない事柄)、mainEntity(中心として説明している事柄)で示せます。

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "BlogPosting",
  "headline": "キッチンリフォームの費用と工期の目安",
  "datePublished": "2026-09-01T09:00:00+09:00",
  "dateModified": "2026-10-05T10:30:00+09:00",
  "author": { "@id": "https://example.com/#organization" },
  "publisher": { "@id": "https://example.com/#organization" },
  "mainEntity": { "@type": "Thing", "name": "キッチンリフォーム" },
  "about": [{ "@type": "Thing", "name": "リフォーム",
    "sameAs": "https://www.wikidata.org/wiki/Q(確認したID)" }],
  "mentions": [{ "@type": "Thing", "name": "システムキッチン" }]
}
</script>

about・mentions・mainEntityはリッチリザルトの条件ではなく、主題を宣言するための記述です。

BreadcrumbList:パンくずリスト

BreadcrumbListは、ページに表示しているパンくずリストと同じ順番で書きます。positionは1から始め、最後の項目(今のページ)はURLを省略できます。

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "BreadcrumbList",
  "itemListElement": [
    { "@type": "ListItem", "position": 1, "name": "ホーム", "item": "https://example.com/" },
    { "@type": "ListItem", "position": 2, "name": "コラム", "item": "https://example.com/column/" },
    { "@type": "ListItem", "position": 3, "name": "キッチンリフォームの費用と工期の目安" }
  ]
}
</script>

LocalBusiness:店舗・地域の事業

店舗や地域で営業する事業のページには、LocalBusiness(または飲食店のRestaurantなど、より具体的な型)を使います。Googleの説明では、nameとaddressが必須で、telephone、openingHoursSpecification、geo、urlなどが推奨です。

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "LocalBusiness",
  "name": "サンプル工務店 本店",
  "address": { "@type": "PostalAddress", "postalCode": "000-0000",
    "addressRegion": "〇〇県", "addressLocality": "〇〇市",
    "streetAddress": "〇〇町1-2-3" },
  "telephone": "+81-00-0000-0000",
  "openingHoursSpecification": [{ "@type": "OpeningHoursSpecification",
    "dayOfWeek": ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday"],
    "opens": "09:00", "closes": "18:00" }]
}
</script>

住所や営業時間は、ページの表示とGoogleビジネスプロフィールに合わせます。

サイトの種類別:どの構造化データから入れるか

どの構造化データから入れるかはサイトの種類で決まり、会社のサイトならOrganization、ブログならBlogPosting、通販ならProduct、店舗ならLocalBusinessが出発点です。求人のページなら JobPosting で、必須プロパティと募集が終わったときの扱いは「採用サイトのSEO」で説明しています。

サイトの種類まず入れる次に検討する補足
会社・サービスのサイトOrganization(トップ)、BreadcrumbListWebSite(サイト名)社名やロゴの表記を外部のプロフィールとそろえる
ブログ・オウンドメディアBlogPosting または Article、BreadcrumbListabout・mentions、著者のPersonまたはOrganization書き手や運営者が分かるページと合わせる
ネット通販Product(Offerで価格・在庫)、BreadcrumbListReview・AggregateRating(実際のレビューがある場合)価格や在庫が変わったら構造化データも同時に更新する
店舗・地域のサービスLocalBusiness(住所・営業時間)OrganizationGoogleビジネスプロフィールの情報と食い違わないようにする
ニュースNewsArticleBreadcrumbListdatePublished と dateModified を正しく分ける

通販の商品ページ向けの詳しい書き方は「ECサイトのSEO」で説明しています。

実装と確認の手順

構造化データは、今の出力を調べてから出す場所を1つに決め、公開前に検証ツールで、公開後にSearch Consoleで確かめます。

実装の手順(WordPressの例)

  1. 今の出力を調べる:ソースで application/ld+json を検索します。テーマやSEOプラグインが、すでに出力していることがよくあります。
  2. どこで出すかを1つに決める:プラグインで足りるものはプラグインに任せ、足りない部分(about・mentions など)だけを追加します。同じ型を2か所から出さないようにします。
  3. テンプレートに組み込む:手で貼らず、タイトルや日付が記事のデータから入るようにします。
  4. 公開前に検証する:リッチリザルトテストとスキーマ マークアップ検証ツールで確認します。
  5. 公開後に監視する:Search Consoleのリッチリザルトのレポートでエラーの件数を、「URL検査」で個別のページの構造化データを確かめます。

リッチリザルトテストとスキーマ マークアップ検証ツールの違い

Googleのリッチリザルトの対象かを確かめるならリッチリザルトテスト(Google)、schema.orgの語彙として正しいかを確かめるならスキーマ マークアップ検証ツール(schema.org)を使い、公開前は両方で確かめます。

観点リッチリザルトテストスキーマ マークアップ検証ツール
確認できることリッチリザルトの対象になる型か、必須・推奨のプロパティが足りているかschema.orgの語彙として正しいか(about・mentions など、リッチリザルトに関係しない記述も含む)
向いている場面商品・パンくずリスト・記事など、検索結果での表示を確認したいときエンティティの宣言など、Googleの機能に限らない記述を確かめたいとき

リッチリザルトテストで「検出されたアイテムはありません」と出ても、対象でない型だけを書いている場合があり、壊れているとは限りません。

よくあるエラーと直し方

構造化データのよくあるエラーは、JSONの書き方の誤り、必須プロパティの不足、日付の誤り、レビューの使い方の誤りです。テーマとプラグインによる二重の出力は、どちらか一方を止めて直します。

起きる状況原因直し方
構造化データがまったく検出されない末尾の余計なカンマ、全角の引用符、閉じ括弧の不足など、JSONの書き方の誤り検証ツールでエラーの行を直す。手で貼らずテンプレートで出力する
「必須プロパティがありません」と出る例:Productに offers・review・aggregateRating のどれもないページにある情報で補う。無ければその型を使わない
日付が正しく読まれない、更新のたびに公開日が変わる「2026/10/9」のような形式、datePublished の上書きISO 8601形式(例:2026-10-09T09:00:00+09:00)で書き、更新日は dateModified に書く
レビューの星が表示されない自社について自社で集めたレビューを、Organization・LocalBusinessに付けているGoogleはこの種のレビューを星の表示の対象にしていない。商品ページの実際のレビューなどで使う

当サイト(seoagent.jp)での実例:記事ごとに主題を宣言した

当サイト(seoagent.jp)では、記事の主題を検索エンジンに推測させる状態だったため、記事ごとに主題・テーマ・言及する事柄を決め、構造化データで宣言しました。対象は93語で、WikidataのIDは、実際に確認できた語だけに付けています。記事には mainEntity・about・mentions を、記事をまとめたトピックページには CollectionPage を出力しています。たとえばこの記事では、主題を「構造化データ」、テーマを「schema.org」「JSON-LD」としています。

この宣言で検索での表示やAIの回答が変わることは約束されていません。

よくある質問

WordPressのプラグインに任せていれば、自分で書く必要はありませんか?

多くの場合、基本の型はテーマやSEOプラグインが出力します。ただし、型が空だったりテーマと二重に出力されていたりすることがあるため、一度はソースで中身を確かめ、足りない部分だけを追加します。WordPress で出力元を突き止めて 1 つにまとめる手順は「WordPressの構造化データ」で説明しています。

Googleタグマネージャーで構造化データを入れてもよいですか?

入れられます。Googleは、タグマネージャーやJavaScriptでJSON-LDを追加する方法を案内しています。値はページの表示と食い違わないようにし、入れた後はリッチリザルトテストで確かめます。

構造化データを入れてから、検索に反映されるまでどのくらいかかりますか?

Googleが再びクロールして処理した後に反映されるため、期間は決まっていません。Search ConsoleのURL検査で構造化データが検出されているかを確かめ、必要ならインデックス登録をリクエストします。反映されてもリッチリザルトの表示が約束されるわけではない点は同じです。

SEOAGENTでできること

SEOAGENTでは、WordPressへの記事の公開・予約公開と、公開後の検索データの確認を進められます。構造化データの出力は、WordPress側のテーマやSEOプラグインの設定で行います。

サイト全体の技術的な点検項目はSEO内部対策とは、ほかの関連記事は「テクニカルSEOの記事一覧」にまとめています。

参考情報

関連する記事

「テクニカルSEO」の記事をすべて見る →

クロールバジェットとは:Googleの説明と、気にすべきサイト・しなくてよいサイト
テクニカルSEO

クロールバジェットとは:Googleの説明と、気にすべきサイト・しなくてよいサイト

クロールバジェットは、多くのサイトでは気にする必要がありません。Google の「クロール バジェットの管理」の原文に沿って、決まる仕組み、対策が必要なサイトの目安、クロールの統計情報での確かめ方、クロールを無駄にする原因と対処を、当サイトの点検結果とあわせて説明します。

AIでSEO対策を、もっと続けやすく。

機能と使い方、料金・契約条件は、サービス資料でご案内します。