「構造化データを入れておいて」と言われたけれど、JSON-LDって結局何を書けばいいのか分からない。調べてみると@context@typeといった見慣れない記号が並んでいて、そこで手が止まってしまう。

そういう状態のまま検索して、この記事にたどり着いた方が多いのではないかと思います。

この記事は、JSON-LDという言葉を今日はじめて見た方を想定して書きました。むずかしい説明はいったん脇に置き、身近なものにたとえながら、記事・会社概要・パンくずリストという3つのコピペ例を使って、実際に手を動かせるところまで進みます。JSON-LDの実装は、AI対策の入り口としてもよく挙げられます。

こんなふうに調べていませんか

  • ChatGPTに「JSON-LDって何」と聞いたけれど、コードの説明ばかりで結局よく分からなかった
  • 「JSON-LD 書き方」で検索して、そのままコピペできるテンプレートを探している
  • 上司や先輩に「構造化データ、入れておいて」と言われたが、何から手をつければいいか分からない

この記事を読み終えたときに手に入るもの

  • JSON-LDの3つの部品(@context@type・プロパティ)を、人に説明できるようになります
  • 記事・会社概要・パンくずリストの3つを、コピペしてそのまま試せます
  • 書いたコードが合っているか、自分で確認できるようになります

結論30秒でわかる、この記事の結論

  • JSON-LDとは、<script>タグの中に、ページの情報をJSONの書き方で並べる記述形式です。
  • 骨格はいつも同じ3つだけ。@context@type・プロパティです。
  • この記事では、記事(Article)・会社概要(Organization)・パンくずリスト(BreadcrumbList)の3つをコピペ例として用意し、最後に「書いたコードが合っているか確かめる方法」まで解説します。
JSON-LDの骨格は、いつも同じ3つだけ@context・@type・プロパティですJSON-LDの骨格は、いつも同じ3つだけ1つめJSON-LDの正体(名札のようなもの)@context・@type・プロパティの3点だけ2つめ3つのコピペ例記事・会社概要・パンくずリスト3つめ書いたら確認するリッチリザルトテストで検証鈴木さん@context・@type・プロパティです
JSON-LDの骨格は、いつも同じ3つだけ — @context・@type・プロパティです

この記事では、ある会社のマーケティング部の2人と、専門家の会話をはさみながら進めます。あなたに近い立場の人の質問から読んでいただいて構いません。

  • 若葉さん(Web担当2年目)— 「そもそも、それって何ですか?」を聞く役
  • 高梨課長(マーケ課長)— 「誰が、どれくらいの手間でやるんですか?」を聞く役
  • 鈴木さん(AIO/SEOの専門家・本誌監修)— 答える役

01そもそもJSON-LDって、AI検索対策で何をするものなんですか?

若葉さん
若葉さんの発言

あの…そもそもなんですが、「JSON-LD」ってどう読むんでしょうか。アルファベットの並びを見ただけで、もう身構えてしまって…。

鈴木さん
鈴木さんの発言

「ジェイソン・エルディー」と読みます。最初は誰でもそうなるので、大丈夫ですよ。ひとことで言うと、JSON-LDは、ページの中身に「これは何のデータか」という札を付ける書き方なんです。

JSON-LD(JSON for Linking Data)は、人間が読み書きしやすいJSON形式をベースにした記述方式です。HTMLの中に<script type="application/ld+json">というタグを1つ置き、その中にデータを書きます。

Googleは、実装のしやすさとエラーの起きにくさから、この形式を推奨しています。理由は3つあります。1つめは、ページの表示用テキストとは独立した<script>ブロックに書けるため、既存のHTMLタグを汚さないこと。2つめは、入れ子構造を簡潔に表現できること。3つめは、JavaScriptで動的に生成・挿入したデータも読み取れることです。

02JSON-LDの書き方は、名札にたとえるとAI検索対策で何を書く作業なんですか?

身近なものにたとえると、こうなります名札だと思うと、身構えずに読めます身近なものにたとえると、こうなります名札だと思うと、身構えずに読めます名札でいうとJSON-LDでいうと名札を服につけること<script>タグをHTMLに設置すること名札に書く「発行元のルール」@context(データの語彙の出典を宣言)名札に書く「役職」@type(データの種類を宣言)名札に書く「名前」「連絡先」プロパティ(name・urlなどのキーと値)
身近なものにたとえると、こうなります — 名札だと思うと、身構えずに読めます

このたとえで言うと、JSON-LDを書く作業は「名札に、決められた項目を、決められた書式で書き込む」作業に近いといえます。デザインを考える必要はありません。空欄を埋めていくだけです。

この章のまとめ

JSON-LDとは、<script>タグの中にJSON形式でデータを書く記述方式です。名札に発行元・役職・連絡先を書くのと同じ感覚で、@context@type・プロパティを埋めていきます。

03AI検索対策の土台になるJSON-LDの書き方は、骨格がいつも同じ3つだけって本当ですか?

若葉さん
若葉さんの発言

さっきの名札の話、なんとなくイメージはできたんですが…実際のコードだと、どこに何を書けばいいんでしょうか。

鈴木さん
鈴木さんの発言

そこは、どんな型を書くときも同じ骨格を使い回せます。@context@type・プロパティの3つです。この3つさえ押さえれば、あとは型に当てはめるだけなんですよ。

@contextは、名札でいう「発行元のルール」にあたる部分です。「このデータは、schema.orgという共通の辞書に従って書いています」という宣言をします。多くの場合、値はhttps://schema.orgという決まった文字列になります。

@typeは、名札でいう「役職」にあたる部分です。「これは記事です」「これは会社です」というように、データの種類を宣言します。

プロパティは、名札でいう「名前」「連絡先」にあたる部分です。"キー": "値"という形で、具体的な情報を並べていきます。

書き方の骨格は、いつも同じ3つですこの3つの役割さえ分かれば、あとは型に当てはめるだけです書き方の骨格は、いつも同じ3つですこの3つの役割さえ分かれば、あとは型に当てはめるだけです@contextこの情報が、どの辞書のルールに従うかの宣言@typeデータの種類の宣言(記事なのか、会社なのか)プロパティname・urlなどのキーと値のペア
書き方の骨格は、いつも同じ3つです — この3つの役割さえ分かれば、あとは型に当てはめるだけです

構造化データを実装する目的も、ここで確認しておきます。Googleは、ページ内容の理解とリッチリザルト表示のために構造化データを使います。ただし、構造化データを追加したからといって、掲載順位が直接上がるわけではない点には注意が必要です。

この章のまとめ

書き方の骨格は、どの型でも共通です。@contextで語彙の出典を、@typeでデータの種類を宣言し、あとはプロパティを"キー": "値"の形で並べるだけです。

04JSON-LDの全部のプロパティを、AI検索最適化のために書かないといけないんですか?

高梨課長
高梨課長の発言

鈴木さん、プロパティって、全部書かないといけないものなんですか?うちは専任がいないので、全部となると結構な作業量になりそうで心配なんですが。

鈴木さん
鈴木さんの発言

いえ、全部を書く必要はありません。 Googleのガイドラインでは、プロパティは必須と推奨の2段階に分かれています。ここに任意を加えた3段階で考えると、力の入れどころが見えてきますよ。

コードを書く前に、Googleの構造化データガイドラインが定める前提を押さえておきます。Googleのガイドラインでは必須・推奨の2段階が定義されています。本記事ではこれに「任意(定義には存在するが必須・推奨に含まれないプロパティ)」を加えた3段階で整理します。こうしたプロパティの整備は、AI検索最適化(LLMOとも呼ばれます)の土台になる作業でもあります。

分類意味実装での扱い
必須これがないとリッチリザルトの対象外になる全プロパティを漏れなく記述する
推奨あるほど質の高い実装として扱われる数より正確さ・完全性を優先する
任意記述してもしなくてもよい自社の情報がある場合のみ追加する
全部書く必要はありません。優先順位はこの3段階です必須→推奨→任意の順に、力の入れどころが変わります全部書く必要はありません。優先順位はこの3段階です必須→推奨→任意の順に、力の入れどころが変わります1必須のプロパティを書くこれがないと、リッチリザルトの対象外になります2推奨のプロパティを書くあるほど、質の高い実装として扱われます3任意のプロパティは、自社に情報がある時だけ書く無理に埋めると、ガイドライン違反のリスクが高まります
全部書く必要はありません。優先順位はこの3段階です — 必須→推奨→任意の順に、力の入れどころが変わります

05AI検索対策でも、ページに表示していない情報をJSON-LDの書き方として入れていいんですか?

もう1つ重要な前提があります。マークアップの内容は、ページに実際に表示されている情報と一致させる必要があります。表示されていない情報を構造化データにだけ書くことは、ガイドライン違反にあたります。

この章のまとめ

プロパティは、必須・推奨・任意の3段階です。全部を埋める作業ではなく、まず必須を漏れなく、次に推奨を正確に、任意は自社に情報がある時だけという順番で考えます。

06実際のJSON-LDって、AI検索対策としてどうやって書けばいいんですか?

若葉さん
若葉さんの発言

骨格は分かってきました。それで、実際のコードって、そのままコピペして使ってもいいものなんでしょうか。

鈴木さん
鈴木さんの発言

大丈夫です。 ここでは、使う場面が違う3つの例を用意しました。自社の情報に置き換えれば、そのまま使えるテンプレートです。

ここからは、記事(Article)・会社概要(Organization)・パンくずリスト(BreadcrumbList)という、使う場面が異なる3つの実装例を見ていきます。

3つのコピペ例、それぞれ何のためのものか使う場面によって、選ぶ型が変わります3つのコピペ例、それぞれ何のためのものか使う場面によって、選ぶ型が変わりますArticle記事(BlogPosting)ブログ記事やニュース記事に使うOrganization会社概要会社概要ページなどで使うBreadcrumbListパンくずリストカテゴリ階層を示すページで使う
3つのコピペ例、それぞれ何のためのものか — 使う場面によって、選ぶ型が変わります

07記事(Article)のJSON-LDは、AI検索対策としてどう書けばいいんですか?

最初の実装例は、ブログ記事やニュース記事に使うArticle型です。schema.orgの定義では、Article型は「ニュース記事や調査報告書など、様々なタイプの記事」を表す型です。継承構造はThing > CreativeWork > Articleです。

以下は、企業ブログの記事を想定したテンプレートです。自社の情報に置き換えれば、そのまま利用できます。企業ブログ記事にはBlogPostingを使います(継承:Thing>CreativeWork>Article>SocialMediaPosting>BlogPosting)。

{
  "@context": "https://schema.org",
  "@type": "BlogPosting",
  "headline": "記事のタイトルをここに入力",
  "author": {
    "@type": "Person",
    "name": "山田太郎",
    "jobTitle": "コンテンツディレクター",
    "url": "https://sample.example.com/author/yamada-taro"
  },
  "publisher": {
    "@type": "Organization",
    "name": "株式会社サンプル",
    "logo": {
      "@type": "ImageObject",
      "url": "https://sample.example.com/images/logo.png"
    }
  },
  "datePublished": "2026-07-24",
  "dateModified": "2026-07-24",
  "image": "https://sample.example.com/images/article-thumbnail.jpg"
}

headlineauthordatePublishedはGoogleが推奨するプロパティです。authorpublisherはPerson型・Organization型を内側に入れ子にして記述します。この入れ子の考え方は、後ほど「入れ子と配列」の章で改めて整理します。

著者情報のプロパティをさらに深掘りしたい方は、別記事『著者Person schemaの書き方とE-E-A-T効果』もあわせてご覧ください。namesameAsjobTitleなど、Person型固有のプロパティの選び方を扱っています。

08会社概要(Organization)のJSON-LDの書き方は、AI検索最適化でどう変わりますか?

2つ目の実装例は、会社概要ページなどで使うOrganization型です。schema.orgの定義では「学校、NGO、企業、クラブなど、組織を表現する型」とされています。

以下は、コーポレートサイトの会社概要ページを想定したテンプレートです。

{
  "@context": "https://schema.org",
  "@type": "Organization",
  "name": "株式会社サンプル",
  "url": "https://sample.example.com/",
  "logo": "https://sample.example.com/images/logo.png",
  "sameAs": [
    "https://twitter.com/sample_example",
    "https://ja.wikipedia.org/wiki/株式会社サンプル"
  ],
  "contactPoint": {
    "@type": "ContactPoint",
    "telephone": "+81-3-0000-0000",
    "contactType": "customer service"
  },
  "address": {
    "@type": "PostalAddress",
    "addressRegion": "東京都",
    "addressLocality": "千代田区",
    "postalCode": "100-0000",
    "streetAddress": "サンプル1-2-3"
  }
}

nameurllogoは基本プロパティです。sameAsには、自社であると確認できる公式アカウントやWikipediaページを配列で指定します。contactPointaddressは、それぞれContactPoint型・PostalAddress型を入れ子にして記述しています。

09パンくずリスト(BreadcrumbList)のJSON-LDは、AIOではどう書きますか?

3つ目の実装例は、カテゴリ階層を示すBreadcrumbList型です。schema.orgの定義では「URLと名前で説明される、リンクされたWebページの連鎖」とされています。

以下は、ECサイトのカテゴリページを想定したテンプレートです。

{
  "@context": "https://schema.org",
  "@type": "BreadcrumbList",
  "itemListElement": [
    {
      "@type": "ListItem",
      "position": 1,
      "name": "トップ",
      "item": "https://sample.example.com/"
    },
    {
      "@type": "ListItem",
      "position": 2,
      "name": "サービス一覧",
      "item": "https://sample.example.com/services/"
    },
    {
      "@type": "ListItem",
      "position": 3,
      "name": "AIO診断サービス"
    }
  ]
}

BreadcrumbListは、これまでの2例と違い、itemListElementという配列の中に複数のListItemを並べる構造です。positionは1から始まる連番、itemにはページのURLを指定します。最後の階層(現在地のページ)はitemを省略して構いません。これはGoogle公式ドキュメント「パンくずリスト」に掲載されている例と同じ書き方です。

この章のまとめ

記事・会社概要・パンくずリストの3つは、自社の情報に置き換えるだけで使えるテンプレートです。同じ@context@type・プロパティの骨格の上に、それぞれ違うプロパティが並んでいます。

10入れ子と配列は、JSON-LDの書き方としてAI検索対策でどう使い分けるんですか?

若葉さん
若葉さんの発言

さっきのOrganizationは波括弧{}だけでしたけど、パンくずリストは角括弧[]も出てきましたよね。この違いって、何なんでしょうか。

鈴木さん
鈴木さんの発言

いいところに気づきましたね。 3つの実装例を並べると、JSON-LDには2種類の「組み合わせ方」があることが分かるんです。

3つの実装例を並べると、JSON-LDには2種類の「組み合わせ方」があることがわかります。1つは、あるオブジェクトの中に別のオブジェクトを直接入れる入れ子です。実装例①のArticleにPersonとOrganizationを入れた形がこれにあたります。

もう1つは、同じ型のオブジェクトを順番に並べる配列です。実装例③のBreadcrumbListが、この配列の考え方を使っています。

組み合わせ方記法使う場面本記事の実装例
入れ子プロパティ名の後ろに波括弧{}を1つ1つの要素の中に別の1つの要素を含めるArticle内のauthor・publisher
配列プロパティ名の後ろに角括弧[]、中に波括弧を複数同じ型の要素を複数・順序つきで並べるBreadcrumbListのitemListElement
入れ子と配列、この2つだけ覚えてください混同すると、構文エラーの原因になります入れ子と配列、この2つだけ覚えてください混同すると、構文エラーの原因になります入れ子1つの要素の中に、別の1つの要素を含める波括弧を1つ使う例:Article内のauthor・publisher書き方はプロパティ名の後ろに波カッコを1つ配列同じ型の要素を、複数・順序つきで並べる角括弧の中に波括弧を複数並べる例:BreadcrumbListのitemListElement書き方はプロパティ名の後ろに角カッコ、中に波カッコを複数
入れ子と配列、この2つだけ覚えてください — 混同すると、構文エラーの原因になります

11JSON-LDの入れ子と配列を混同すると、AI検索対策の実装でどうなってしまうんですか?

入れ子と配列を混同すると、構文エラーの原因になります。入れ子は波括弧{}1つ、配列は角括弧[]の中に波括弧を複数並べる、という違いを意識してください。

なお、本記事で扱ったArticle・Organization・BreadcrumbListのような汎用スキーマ単体のAI引用効果には、慎重な見方を示すデータもあります。FAQPage・HowToとの関係は、別記事『FAQ・HowTo構造化データと引用率の関係を一次データで検証』で扱っています。

この章のまとめ

入れ子は「1つの中に1つを含める」、配列は「同じ型を複数・順序つきで並べる」という違いです。波括弧{}と角括弧[]、どちらを使うつもりだったかを意識するだけで、構文エラーはかなり防げます。

12書いたJSON-LDのコードが合っているか、AI検索対策としてどうやって確かめるんですか?

高梨課長
高梨課長の発言

コードの書き方は分かりました。それで、公開する前に、これが合っているかどうかは、誰がどうやって確認するんでしょうか。

鈴木さん
鈴木さんの発言

そこは、Googleが無料で提供しているツールがあります。特別な知識がなくても、貼り付けるだけで確認できます。

コードを書いたら、公開前に検証しましょう。Googleが提供する公式ツール「リッチリザルトテスト」を使えば、構文エラーやプロパティの過不足を確認できます。

検証の手順は次の4ステップです。

  1. リッチリザルトテスト(search.google.com/test/rich-results)にアクセスする
  2. 公開済みのURL、またはコードスニペットを直接貼り付ける
  3. 「テストを実行」をクリックする
  4. 検出された型・エラー・警告の有無を確認する
書いてから確認するまでの4ステップ公開前に、必ずこの手順を通します書いてから確認するまでの4ステップ公開前に、必ずこの手順を通します1型を選び、プロパティを書く自社の情報に置き換えます2<script>タグでページに設置する<head>内か</body>の直前に置きます3リッチリザルトテストに入力するURLまたはコードを貼り付けます4エラー・警告を確認する問題があれば直して再テストします
書いてから確認するまでの4ステップ — 公開前に、必ずこの手順を通します

エラーが出た場合は、該当プロパティ名を確認し、JSON構文のカンマ・括弧の過不足を見直してください。検証ツールの詳しい読み方は、別記事『構造化データのテスト・検証ツールの使い方|旧ツールとの違いも解説』で扱います。

この章のまとめ

公開前に、リッチリザルトテストへURLかコードを貼り付けて「テストを実行」を押すだけで、構文エラーやプロパティの過不足を確認できます。特別な知識も、専任の担当者も必要ありません。

13JSON-LDのコードは、AI検索対策としてページのどこに置けばいいんですか?

若葉さん
若葉さんの発言

コードが書けて、確認もできました。あとは、このコードをどこに置けばいいのか、というところが最後に気になっています。

鈴木さん
鈴木さんの発言

そこは、そこまで気にしなくて大丈夫なところです。ただ、代わりによく起きる間違いが4つあるので、そちらを一緒に確認しておきましょう。

JSON-LDの<script>タグは、<head>内または</body>の直前に置きます。Google公式ドキュメントによれば、ページ内のどちらに置いても解釈に違いはありません。

14JSON-LDの書き方でよくある間違いは、AI検索最適化の観点で何ですか?

書き方でつまずきやすいポイントは4つです。

  • 末尾のカンマが余分に残ってしまう: プロパティを追加・削除した際、最後の項目の後ろに不要なカンマが残ると構文エラーになります
  • 括弧の対応が崩れる: 波括弧{}と角括弧[]の開始・終了の数を、書き終えたら数えて確認します
  • 表示されていない情報を書いてしまう: sameAsaddressに、ページ本文にない情報を書くとガイドライン違反になります
  • @typeのスペルミス: Organizatonのような綴り間違いは、その型として認識されない原因になります
つまずきやすい、4つのポイントどれも「気づかないうちに」起きますつまずきやすい、4つのポイントどれも「気づかないうちに」起きます末尾のカンマが、余分に残ってしまうプロパティを追加・削除した時に起きやすい波括弧と角括弧の対応が、崩れてしまう書き終えたら数を数えて確認しますページに表示されていない情報を、書いてしまうsameAsやaddressに、本文にない情報を書くとガイドライン違反です公開前に、リッチリザルトテストで確認するこれだけで、事故の大半は防げます
つまずきやすい、4つのポイント — どれも「気づかないうちに」起きます

この章のまとめ

設置場所は<head>内でも</body>の直前でもかまいません。むしろ気をつけたいのは、末尾のカンマ・括弧の対応・表示されていない情報の記載・@typeのスペルミスという4つのつまずきポイントです。

15よくある質問

JSON-LDとMicrodata・RDFaは、どちらを使えばいいですか?

Google公式ドキュメントは、実装のしやすさとエラーの起きにくさから、JSON-LDを推奨しています。既存のHTMLタグを変更せず、<script>ブロックを1つ追加するだけで実装できる点が理由です。

<script>タグは、ページのどこに置けばいいですか?

<head>内でも</body>の直前でも構いません。Google公式ドキュメントは、設置場所の違いが解釈に影響しないと説明しています。

複数の型を、1つのページに書いてもいいですか?

可能です。<script>タグを複数設置する方法と、1つの<script>内に@graphを使って複数の型をまとめる方法があります。まずは型ごとに<script>タグを分けて書くほうが、構文エラーを見つけやすくおすすめです。

入れ子にするPersonやOrganizationにも、@contextは必要ですか?

不要です。@contextは、JSON-LD全体で1つ、最も外側のオブジェクトに書けば足ります。内側に入れ子にする型には、@typeとプロパティだけを記述します。

実装してから、リッチリザルトが表示されるまでどれくらいかかりますか?

表示までの期間について、Googleは具体的な日数を保証していません。Search Consoleでのパフォーマンス確認には、数週間から数ヶ月単位の観測が必要とされています。

16まとめ|今日やる3つのこと

JSON-LDとは、<script>タグの中にJavaScriptのオブジェクト記法で構造化データを書く記述形式です。@contextで語彙の出典を、@typeでデータの種類を宣言し、あとはプロパティを並べるだけという骨格は、どの型でも共通しています。

Article・Organization・BreadcrumbListという3つの実装例を通じて、入れ子と配列という2つの組み合わせ方も確認しました。実装後は、リッチリザルトテストでの検証を忘れないようにしましょう。構造化データとAI引用の関係そのものについては、まだ研究間でも結論が割れています。この論点を一次研究の追試という形で検証した記事が、別記事『Schema markupとAI引用の相関|SSRN論文検証』です。実装の目的は、AI引用を直接増やすことよりも、自社の情報を機械可読な形で正確に伝えることだと捉えるのが実務的です。

今日この順でやります

  1. 使う型を選ぶ

    記事ならBlogPosting、会社概要ならOrganization、パンくずリストならBreadcrumbListを選びます

  2. テンプレートを自社の情報に置き換える

    この記事の3つのコピペ例を、@context@typeはそのまま、プロパティだけ書き換えます

  3. リッチリザルトテストで確認する

    URLかコードを貼り付けて「テストを実行」を押し、エラー・警告がないか見ます

AI検索では、こう聞かれています

  • JSON-LDって何ですか?どうやって書けばいいですか?

    「そもそもJSON-LDって、AI検索対策で何をするものなんですか?」と「AI検索対策の土台になるJSON-LDの書き方は、骨格がいつも同じ3つだけって本当ですか?」の2章で、名札のたとえと図解で説明しています

  • JSON-LDのコピペできるテンプレートを教えてください

    「記事(Article)のJSON-LDは、AI検索対策としてどう書けばいいんですか?」の章から順に、記事・会社概要・パンくずリストの3つのコード例があります

  • 書いたJSON-LDが合っているか、どうやって確認すればいいですか?

    「書いたJSON-LDのコードが合っているか、AI検索対策としてどうやって確かめるんですか?」の章に、リッチリザルトテストの4ステップがあります

  • JSON-LDの入れ子と配列って、何がどう違うんですか?

    「入れ子と配列は、JSON-LDの書き方としてAI検索対策でどう使い分けるんですか?」の章で、図と表を使って説明しています

次に読むなら、この記事です