本文へスキップ
課題解決プラットフォーム
AI検索対策公開: 2026-04-04最終更新: 2026-10-22更新約6分で読めます

構造化データ入門|初心者でもわかるJSON-LDの書き方

上田拓哉

上田拓哉(代表取締役)課題解決プラットフォーム 代表取締役監修プロフィール

構造化データ(JSON-LD)は、ページの内容を検索エンジンに機械で読める形で伝えるコードです。記事・パンくずリスト・ローカルビジネス・商品などはGoogle検索のリッチリザルト(検索結果の見た目)の対象になります。一方、FAQのリッチリザルトは2026年5月7日以降、HowToは2023年9月以降Google検索に表示されず、GoogleはAI Overview(AIによる概要)などの生成AI機能に構造化データは必要ないとしています。

「構造化データ」という言葉は難しく聞こえますが、実際にはHTMLファイルに数行のJSONコードを追加するだけです。本記事では、プログラミング初心者でも理解できるよう、構造化データの基礎から4種類のテンプレート、WordPress・Next.jsでの実装方法まで、ステップバイステップで解説します。

構造化データの基礎知識

そもそも構造化データとは?

Webページには2種類の情報があります。

情報の種類対象読者例
HTMLコンテンツ人間が読む見出し・本文・画像など
構造化データ機械(Google・AI)が読む「これはFAQページです」「著者は〇〇です」

Googleのクローラーや生成AIは、Webページのテキストを「意味」まで完全に理解することが難しい場合があります。構造化データを追加することで、「このページが何を提供しているか」を機械語で直接伝えられるのです。

構造化データを実装するとどうなるか

実装するSchemaGoogle検索での変化AI検索での変化
FAQPageFAQのリッチリザルトは2026年5月7日以降表示されないAIによる概要に載るための条件ではない(Googleの説明)
Article記事のタイトルや画像の表示に使われる引用率が上がるという公式の説明はない
LocalBusinessナレッジパネルにビジネスの詳細情報が出ることがある店舗情報を正確に伝える補助
HowToHowToのリッチリザルトは2023年9月に終了AIによる概要に載るための条件ではない

(出典:Google検索セントラルの更新履歴、Google検索セントラル ブログ、生成AI機能向けの最適化ガイド、いずれも2026年10月20日確認)

JSON-LDとは?なぜ推奨されるのか

構造化データの記述形式には3種類ありますが、Googleが最も推奨するのはJSON-LD形式です。

形式特徴Google推奨難易度
JSON-LDscriptタグ内に独立して記述最推奨低(既存HTMLに影響しない)
MicrodataHTMLタグの属性として記述対応中(既存HTMLの修正が必要)
RDFaHTMLタグの属性として記述対応中〜高

JSON-LDが推奨される理由は、「既存のHTMLコードを変更せずに追加できる」からです。scriptタグを1つ追加するだけで実装できるため、CMSやフレームワークを問わず導入しやすいです。


JSON-LDの基本構造

共通の書き方

すべてのJSON-LDスキーマに共通する基本構造は以下の通りです。

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "スキーマのタイプ名",
  "プロパティ名": "値"
}
</script>
要素意味必須
@contextスキーマの仕様書URL(新しく書くならhttps://schema.org。http://schema.orgも当面は広く理解される)必須
@typeページの種類(FAQPage・Article等)必須
各プロパティページの具体的な情報タイプによって必須・任意が異なる

4種類のJSON-LDテンプレート

テンプレート1: FAQPage(本文のFAQと一致させて使う)

FAQページやFAQセクションに実装するスキーマです。FAQのリッチリザルトは2026年5月7日以降Google検索に表示されず、AI Overviewに載るための条件でもありません。本文のFAQを機械にも伝える補助として、本文と一致させて入れます(今ある記事から外す必要はありません)。

主なプロパティ:

プロパティ説明
@type: "FAQPage"FAQページであることを宣言
mainEntityFAQ項目の配列
@type: "Question"質問項目であることを宣言
name質問文
acceptedAnswer回答のオブジェクト
text回答文

FAQPageのテンプレートコード:

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "FAQPage",
  "mainEntity": [
    {
      "@type": "Question",
      "name": "質問文1をここに記入",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "回答文1をここに記入。100〜200文字程度が理想的です。"
      }
    },
    {
      "@type": "Question",
      "name": "質問文2をここに記入",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "回答文2をここに記入。"
      }
    }
  ]
}
</script>

注意点: FAQ項目は最低2問(推奨3〜10問)。同じページに複数のFAQPageスキーマを実装しないこと。

テンプレート2: Article(ブログ・コンテンツページ)

ブログ記事・コラム・ニュース記事に実装するスキーマです。著者情報・公開日・更新日をGoogleに正確に伝えられます。Googleの文書では、Articleに必須のプロパティはなく、下の表の推奨プロパティを、ページに当てはまる範囲でできるだけ設定するよう案内されています(Google検索セントラル「記事(Article)の構造化データ」、2026年10月20日確認)。

Articleの主要プロパティ:

プロパティ説明Googleの扱い
@type"Article"または"BlogPosting"種類の指定
headline記事タイトル(簡潔に。長いと一部の端末で切り捨てられる)推奨
imageアイキャッチ画像URL推奨
author著者情報(name・url)推奨
publisher発行者情報推奨の表にはない(任意)
datePublished公開日(ISO 8601形式)推奨
dateModified更新日(ISO 8601形式)推奨

ArticleのテンプレートコードとISO 8601形式(YYYY-MM-DD):

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "BlogPosting",
  "headline": "記事タイトルをここに入力(簡潔に)",
  "image": "https://example.com/images/article-image.jpg",
  "author": {
    "@type": "Person",
    "name": "著者名",
    "url": "https://example.com/author/"
  },
  "publisher": {
    "@type": "Organization",
    "name": "会社名・メディア名",
    "logo": {
      "@type": "ImageObject",
      "url": "https://example.com/logo.png"
    }
  },
  "datePublished": "2026-04-04",
  "dateModified": "2026-04-04",
  "description": "記事の説明文を160文字以内で記入"
}
</script>

テンプレート3: LocalBusiness(店舗・地域ビジネス)

実店舗を持つビジネス(飲食店・美容室・士業・クリニック等)で優先して検討したいスキーマです。店舗名・住所・営業時間などを、検索エンジンやAIが正確に読み取る助けになります。

LocalBusinessの主要プロパティ:

プロパティ説明必須
@typeビジネスタイプ("Restaurant"、"BeautySalon"等)必須
nameビジネス名必須
address住所(PostalAddressオブジェクト)必須
telephone電話番号(国際形式推奨)推奨
openingHours営業時間(Mo-Su HH:MM-HH:MM形式。Googleの文書では openingHoursSpecification を推奨)推奨
url公式サイトURL推奨
image店舗写真URL任意
geo緯度・経度推奨

LocalBusinessのテンプレートコード:

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "Restaurant",
  "name": "店舗名",
  "image": "https://example.com/shop-image.jpg",
  "url": "https://example.com/",
  "telephone": "+81-3-1234-5678",
  "address": {
    "@type": "PostalAddress",
    "streetAddress": "〇〇町1-2-3",
    "addressLocality": "渋谷区",
    "addressRegion": "東京都",
    "postalCode": "150-0001",
    "addressCountry": "JP"
  },
  "geo": {
    "@type": "GeoCoordinates",
    "latitude": 35.6580,
    "longitude": 139.7016
  },
  "openingHours": ["Mo-Fr 11:00-22:00", "Sa-Su 10:00-23:00"],
  "priceRange": "¥¥"
}
</script>

@typeの主なビジネスタイプ一覧:

ビジネスタイプ@type値
飲食店・レストランRestaurant
カフェCafeOrCoffeeShop
美容院・理容院BeautySalon / HairSalon
歯科医院Dentist
整体・カイロプラクティックMedicalBusiness
弁護士・法律事務所LegalService
会計士・税理士AccountingService
一般会社・事務所LocalBusiness

テンプレート4: HowTo(手順・ハウツーコンテンツ)

手順を説明するハウツー記事に実装するスキーマです。HowToのリッチリザルトは2023年9月に終了しており、Google検索でステップリストは表示されません。AI検索での引用率が上がるという公式の説明もないため、入れる場合は本文の手順と一致させる補助として扱います。

HowToの主要プロパティ:

プロパティ説明必須
@type: "HowTo"ハウツーコンテンツを宣言必須
nameハウツーのタイトル必須
step手順の配列必須
HowToStep.name各ステップの名前必須
HowToStep.text各ステップの説明必須
totalTime所要時間(ISO 8601 duration形式)推奨

HowToのテンプレートコード:

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "HowTo",
  "name": "〇〇の方法(タイトル)",
  "description": "このハウツーの概要説明",
  "totalTime": "PT30M",
  "step": [
    {
      "@type": "HowToStep",
      "name": "ステップ1のタイトル",
      "text": "ステップ1の詳細な説明をここに記入。"
    },
    {
      "@type": "HowToStep",
      "name": "ステップ2のタイトル",
      "text": "ステップ2の詳細な説明をここに記入。"
    },
    {
      "@type": "HowToStep",
      "name": "ステップ3のタイトル",
      "text": "ステップ3の詳細な説明をここに記入。"
    }
  ]
}
</script>

WordPressでの実装方法

プラグインを使った実装(推奨)

プログラミング知識がない場合は、プラグインを使うのが最も簡単です。

プラグイン名対応スキーマ料金おすすめ度
Yoast SEO(Premium)Article・FAQ・HowTo等有料(料金は公式サイトで確認)★★★★★
Rank Math(Pro)28種類以上のスキーマ有料(料金は公式サイトで確認)★★★★★
Schema Pro20種類以上有料(料金は公式サイトで確認)★★★★☆
WP Schema Markup Light基本的なスキーマのみ無料★★★☆☆

Yoast SEOでFAQPageを実装する手順:

ステップ操作
1記事編集画面でYoast SEOブロックを追加
2「FAQ」ブロックを選択
3質問文と回答文を入力
4保存・公開するとJSON-LDが自動生成される

手動でコードを追加する方法

テーマのfunctions.phpまたはheadタグ内に直接コードを追加する方法です。

functions.phpに追加する場合(ページ別に切り替え):

function add_schema_markup() {
    if ( is_page('faq') ) {
        echo '<script type="application/ld+json">
        {
          "@context": "https://schema.org",
          "@type": "FAQPage",
          "mainEntity": [...]
        }
        </script>';
    }
}
add_action( 'wp_head', 'add_schema_markup' );

Next.jsでの実装方法

App RouterでのJSON-LD実装

Next.js 14(App Router)では、各ページのレイアウトまたはページコンポーネント内でJSON-LDを実装します。

ページコンポーネントへの実装例(page.tsx):

export default function FaqPage() {
  const faqSchema = {
    "@context": "https://schema.org",
    "@type": "FAQPage",
    "mainEntity": [
      {
        "@type": "Question",
        "name": "質問文1",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "回答文1"
        }
      }
    ]
  };

  // < を \u003c に置き換え、文字列に </script> が入っても script 要素が途中で閉じないようにする(Next.js の JSON-LD の手引き)
  return (
    <>
      <script
        type="application/ld+json"
        dangerouslySetInnerHTML={{ __html: JSON.stringify(faqSchema).replace(/</g, '\\u003c') }}
      />
      {/* ページのコンテンツ */}
    </>
  );
}

MDXブログ記事でのArticleスキーマ実装(layout.tsx):

export default function BlogLayout({ children, params }) {
  const articleSchema = {
    "@context": "https://schema.org",
    "@type": "BlogPosting",
    "headline": "記事タイトル",
    "datePublished": "2026-04-04",
    "author": {
      "@type": "Organization",
      "name": "会社名"
    }
  };

  return (
    <>
      <script
        type="application/ld+json"
        dangerouslySetInnerHTML={{ __html: JSON.stringify(articleSchema).replace(/</g, '\\u003c') }}
      />
      <article>{children}</article>
    </>
  );
}

実装後の確認・テスト方法

Googleのリッチリザルトテストの使い方

ステップ操作URL
1ブラウザで「リッチリザルトテスト」にアクセスsearch.google.com/test/rich-results
2テストしたいURLを入力してテスト実行—
3エラー・警告の確認—
4「有効なリザルト」が表示されれば実装成功—

リッチリザルトテストで確かめられるのは、Googleのリッチリザルトの対象の種類(記事・パンくずリスト・ローカルビジネス・商品など)です。FAQPage・HowToはリッチリザルトが終わっているため、Schema.orgの「Schema Markup Validator」で構文を確かめます。

よくあるエラーと修正方法

エラーメッセージ原因修正方法
必須プロパティ「address」がありませんLocalBusinessにaddressなしaddress(PostalAddress)を追加
値の型が正しくありません(日付)日付のフォーマットが誤りYYYY-MM-DD形式に修正
画像のURL形式が無効相対パスや綴りの誤ったURLを指定「https://」で始まる正しい絶対URLに修正
@contextが見つかりません@contextの記述漏れ"https://schema.org"を追加

構造化データ実装の優先順位

どのページに何のスキーマを実装すべきか、優先順位をまとめます。

優先度スキーマタイプ実装すべきページ期待効果
最優先LocalBusinessトップページ・会社概要・店舗情報ページローカル検索・Googleマップ対策
高Article/BlogPostingブログ記事全ページ著者・日付を正確に伝える(リッチリザルトの対象)
中BreadcrumbList全ページ(パンくずリスト)サイト構造の明確化(リッチリザルトの対象)
中Organizationトップページ企業情報のナレッジパネル
補助FAQPageFAQ集・サービスページ・ブログ記事(FAQセクション)本文のFAQを機械に伝える(リッチリザルトは2026年5月に終了)
補助HowTo手順説明・ガイド系コンテンツ本文の手順を機械に伝える(リッチリザルトは2023年9月に終了)

まとめ

構造化データ(JSON-LD)は、「コンテンツを書く労力に比べて実装コストが低く、リッチリザルトの対象になる種類では検索結果の見た目を整えられる」 という特徴があります。

今日から実施できる3ステップ:

ステップ内容目安時間
1トップページにLocalBusinessスキーマを追加30分
2ブログ記事にArticle(BlogPosting)スキーマを追加30分
3Googleリッチリザルトテストでエラーがないか確認10分

まずこの3ステップを実施し、その後BreadcrumbList・Organizationなどを順次追加していくことを推奨します。


関連記事

AIO対策・構造化データ実装をプロに依頼したいですか?

構造化データの設計・実装から、AI検索で自社の情報が正しく扱われるためのコンテンツ設計まで、AIO対策をまとめて支援。月額のスタンダード300,000円・プレミアム500,000円(税抜・別途初期費用150,000円〜・最低6ヶ月、以降1ヶ月単位で自動更新)で、どちらも初月にAIO診断(AI検索での自社の扱われ方の調査・競合比較・改善提案レポート)を行います。AIO対策サービスの詳細はこちら →

あわせて読みたい

この記事は株式会社課題解決プラットフォームが2026-04-04に公開し、2026-10-22に内容を更新しました。料金と契約条件は、AI検索対策(LLMO・AIO)の料金表が最新です。

よくある質問

Q.構造化データとは何ですか?初心者向けに説明してください。

構造化データとは、Webページの内容を「機械が理解しやすい形式」で記述したコードです。人間が読むHTMLとは別に、「このページはFAQページです」「この記事の著者は〇〇です」「この店の電話番号は〇〇です」といった情報をGoogleやAIに伝えるためのものです。適切に実装すると、記事・パンくずリスト・ローカルビジネス・商品などは、Google検索のリッチリザルト(検索結果の見た目)の対象になります。なお、FAQのリッチリザルトは2026年5月7日以降Google検索に表示されず、構造化データはAI Overview(AIによる概要)に載るための条件でもありません。実装はHTMLのhead内またはbodyにJSON-LDのコードブロックを追加するだけです。

Q.構造化データはどのように実装すればよいですか?

構造化データの実装方法は3つあります。①JSON-LD形式(推奨):HTMLのheadまたはbody内に<script type='application/ld+json'>タグでJSONコードを追加する方法。Googleが最も推奨する形式です。②Microdata形式:HTMLタグに直接属性を追加する方法。③RDFa形式:HTMLタグに属性を追加する別の形式。現在のSEOベストプラクティスは①のJSON-LD形式です。WordPressではYoast SEOプラグインまたはRank Mathプラグインで自動生成できます。Next.jsでは<script>タグとdangerouslySetInnerHTMLを使って実装します。

Q.構造化データを実装するとSEOにどんな効果がありますか?

期待できる効果は主に2つです。①リッチリザルトの対象:記事・パンくずリスト・ローカルビジネス・商品・クチコミの抜粋などは、条件を満たすと検索結果に拡張表示されることがあります(FAQのリッチリザルトは2026年5月7日以降、HowToは2023年9月以降、Google検索に表示されません)。②内容の把握を助ける:Googleは構造化データを使ってページの内容を認識するとしています。一方でGoogleは、AIによる概要などの生成AI機能に構造化データは必要ないとしており、AI検索での引用を約束するものではありません。構造化データの実装がそのまま検索順位に直接影響するわけではなく、コンテンツ品質の向上と組み合わせることが重要です。

Q.構造化データの実装でよくあるエラーは何ですか?

最もよくあるエラーは①「必須プロパティの欠落」です。例えばLocalBusinessでは'name'と'address'が必須で、指定しないとエラーになります。②「不正なURL形式」:相対パスや綴りの誤ったURLを指定するとエラーになることがあります(「https://」で始まる絶対URLで書くのが無難です)。③「@context」の指定忘れ:@contextでSchema.orgを指定しないと、どの語彙の型か伝わりません。Schema.orgのFAQは、新しく書くなら'https://schema.org'の形を勧めつつ、'http://schema.org'も当面は広く理解され、既存の記述を急いで直す必要はないとしています。④「日付形式の誤り」:'datePublished'はISO 8601形式(YYYY-MM-DD)で指定する必要があります。実装後は、リッチリザルトの対象の種類はGoogleの「リッチリザルトテスト」(search.google.com/test/rich-results)、FAQPage・HowToなど対象外の種類はSchema.orgの「Schema Markup Validator」で、エラーを確認してください。

無料セルフチェック

AI検索対策チェックリスト(無料・2026年版)

ChatGPT・Perplexity・AI Overviewに対する自社サイトの対応状況をセルフチェックできます。登録は不要です。

最初のご相談で、現状の整理と進め方の方向性をお渡しします

課題が整理されていなくても構いません。

  • 全国オンライン対応
  • 秘密厳守
  • 必須は3項目

相談フォーム

ご用件を選ぶと、入力欄に下書きが入ります(任意)

+ お名前・電話番号(任意)

※ 送信後は1〜2営業日以内にメールでご連絡します。

  • 週23〜48人当社サイトへのAI検索経由の訪問(2026年9月)
  • 500ページ超AIで開発・運用している当社サイト(2026年9月)
  • 記事600本超当社サイトで公開している解説記事(2026年9月)

料金の目安(税抜)

  • 業務改善AI ¥300,000〜(単発)・月¥300,000
  • AI検索対策(LLMO・AIO) 月¥300,000〜
  • MEO 月¥49,800〜
  • 動画 ¥150,000〜

※料金は代表的な目安で、ご要望により変動します。

全国オンライン対応・秘密厳守

フォーム