コンテンツへスキップ
Tips

店舗サイトのAIO対策|JSON-LD構造化データ実装完全ガイド

はじめに:なぜ今、構造化データが重要なのか?

近年、GoogleのSGE(Search Generative Experience)やPerplexityといった対話型AI検索が急速に普及し、ユーザーが情報を探す方法が劇的に変化しています。これまでの「キーワードで検索し、表示されたWebサイトのリストから答えを探す」という行動から、「AIに直接質問し、要約された答えを得る」という行動へとシフトしつつあります。この変化に対応するための新しいWeb戦略がAIO対策(AI Optimization)です。

従来のSEO(検索エンジン最適化)が「検索順位を上げること」を主眼に置いていたのに対し、AIO対策は「AIの回答に自社の情報が引用・推薦されること」を目指します。そして、AIに自社の情報を正確に理解させ、回答の根拠として使ってもらうために最も重要な技術が、今回解説する「構造化データ」なのです。

この記事では、店舗オーナーや中小企業のWeb担当者様が、明日から自社サイトで実践できる「JSON-LD形式の構造化データ」の書き方を、具体的なコード例を交えながら徹底的に解説します。

問題提起:あなたのサイト情報、AIに正しく伝わっていますか?

「うちのサイトには、住所も電話番号も営業時間も全部書いてあるから大丈夫」と思っていませんか?実は、人間が読んで理解できる情報と、AI(検索エンジン)が機械的に理解できる情報は全く異なります。

例えば、サイトに「営業時間:10時〜19時(水曜定休)」と書かれていたとします。人間はこれを見て、水曜日以外は10時から19時まで営業していると理解できます。しかし、AIにとっては、これは単なる文字列に過ぎません。AIは以下のような疑問を持つ可能性があります。

  • 「10時」は午前か午後か?
  • 「19時」は閉店時間か、最終受付時間か?
  • 祝日の場合はどうなるのか?
  • ランチの休憩時間はないのか?

このように、情報が曖昧なままでは、AIはあなたの店舗情報を検索ユーザーへの回答に採用することをためらいます。結果として、「近くのおすすめカフェは?」というAI検索の問いに対して、あなたの店舗が候補から外されてしまうかもしれません。これは、従来のMEO対策SEOで上位表示を目指すだけではカバーしきれない、深刻な機会損失です。

構造化データとは、こうしたWebページ上の情報を「これは店名です」「これは住所です」「これは営業時間です」といった具合に、AIが100%正確に理解できる共通言語(語彙)でラベル付けする技術です。これを実装することで初めて、あなたの店舗情報はAIにとって信頼できる情報源となるのです。

解決策:店舗サイトに必須のJSON-LD構造化データ3選

構造化データには様々な種類(スキーマ)がありますが、まずは全ての店舗サイトが導入すべき、特に重要な3つのタイプを解説します。コードは「JSON-LD」という現在主流の形式で記述します。このコードをあなたのサイトのHTMLに埋め込むだけで実装できます。

1. LocalBusiness:全ての基本となる店舗情報

LocalBusinessは、実店舗に関するあらゆる情報を網羅的に記述するための最も重要なスキーマです。これを正しく設定することは、MEO対策に直結し、Googleマップ上での情報精度を高めるだけでなく、AIが「近くの〇〇」といった地域性の高い質問に答える際の最重要データとなります。

主なプロパティと役割

  • @type: 店舗の業種を指定します。「Restaurant」「BeautySalon」「Dentist」など、schema.orgで詳細な業種が定義されています。自店舗に最も近いものを指定しましょう。
  • name: 店舗名。
  • address: 住所。streetAddress(番地以降)、addressLocality(市区町村)、addressRegion(都道府県)、postalCode(郵便番号)のように細かく指定します。
  • telephone: 電話番号。国際形式(例: +81-3-1234-5678)での記述が推奨されます。
  • openingHoursSpecification: 営業時間。曜日ごとに細かく設定できるため、非常に重要です。
  • geo: 緯度(latitude)と経度(longitude)。Googleマップで正確な位置を示すために役立ちます。
  • image: 店舗のロゴや外観写真のURL。
  • url: あなたのウェブサイトのURL。

【コピペOK】LocalBusinessのJSON-LDコード例(カフェの場合)

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "CafeOrCoffeeShop",
  "name": "サンプルカフェ",
  "address": {
    "@type": "PostalAddress",
    "streetAddress": "丸の内1-2-3",
    "addressLocality": "千代田区",
    "addressRegion": "東京都",
    "postalCode": "100-0005",
    "addressCountry": "JP"
  },
  "telephone": "+81-3-1234-5678",
  "openingHoursSpecification": [
    {
      "@type": "OpeningHoursSpecification",
      "dayOfWeek": [
        "Monday",
        "Tuesday",
        "Thursday",
        "Friday"
      ],
      "opens": "10:00",
      "closes": "19:00"
    },
    {
      "@type": "OpeningHoursSpecification",
      "dayOfWeek": [
        "Saturday",
        "Sunday"
      ],
      "opens": "11:00",
      "closes": "20:00"
    }
  ],
  "geo": {
    "@type": "GeoCoordinates",
    "latitude": "35.681236",
    "longitude": "139.767125"
  },
  "image": "https://example.com/images/cafe-photo.jpg",
  "url": "https://example.com/"
}
</script>

この例では、平日(月・火・木・金)と週末(土・日)で営業時間が異なる設定をしています。定休日の水曜日は記述しないことで、休みであることを示します。このように詳細に記述することで、AIはユーザーからの「土曜日にやっているカフェは?」といった質問に正確に答えられるようになります。

2. Review:信頼性を高める口コミ情報

ユーザーがお店を選ぶ際、口コミや評価は非常に重要な判断材料です。これはAIも同様で、評価の高い店舗を優先的に推薦する傾向があります。サイト内に掲載しているお客様の声をReviewスキーマでマークアップすることで、その情報をAIに公式な評価として認識させることができます。

また、正しく実装すると、Googleの検索結果で店名の横に星評価(★★★★★)が表示される「リッチリザルト」の対象となり、クリック率の向上が期待できるため、直接的なSEO効果も見込めます。

主なプロパティと役割

  • aggregateRating: 複数のレビューを集計した総合評価を記述します。
  • ratingValue: 5段階評価の平均点。
  • reviewCount: レビューの総数。
  • review: 個別のレビュー内容を記述します。
  • author: レビュー投稿者の名前。
  • reviewBody: レビューの本文。
  • reviewRating: そのレビュー単体の評価点。

【コピペOK】ReviewのJSON-LDコード例

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "Restaurant",
  "name": "サンプルレストラン",
  "aggregateRating": {
    "@type": "AggregateRating",
    "ratingValue": "4.5",
    "reviewCount": "150"
  },
  "review": [
    {
      "@type": "Review",
      "author": {
        "@type": "Person",
        "name": "山田 太郎"
      },
      "datePublished": "2023-10-26",
      "reviewBody": "パスタが絶品でした!お店の雰囲気も最高で、また利用したいです。",
      "reviewRating": {
        "@type": "Rating",
        "ratingValue": "5"
      }
    },
    {
      "@type": "Review",
      "author": {
        "@type": "Person",
        "name": "鈴木 花子"
      },
      "datePublished": "2023-10-25",
      "reviewBody": "ランチで利用しました。コストパフォーマンスが良いと思います。",
      "reviewRating": {
        "@type": "Rating",
        "ratingValue": "4"
      }
    }
  ]
}
</script>

注意点:ここに記述するレビューは、実際にあなたのサイトに表示されているものと一致している必要があります。Googleビジネスプロフィールや他の口コミサイトから無断で転載すると、ガイドライン違反とみなされる可能性があるため注意してください。

3. FAQPage:ユーザーの疑問を先回りして解決

「よくある質問」ページは、AIO対策において非常に強力なコンテンツです。「駐車場の有無」「予約方法」「支払い方法」など、ユーザーが来店前に知りたい情報をQ&A形式でまとめておくことで、AIがそれらの質問に対する直接的な回答として引用しやすくなります。

FAQPageスキーマを実装すると、検索結果で質問部分がアコーディオン形式で表示されることがあり、表示面積が広がることでユーザーの目に留まりやすくなるというSEO上のメリットもあります。

主なプロパティと役割

  • mainEntity: 質問(Question)と回答(Answer)のペアを格納します。
  • Question: 質問文そのもの。
  • acceptedAnswer: 質問に対する回答。

【コピペOK】FAQPageのJSON-LDコード例

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "FAQPage",
  "mainEntity": [
    {
      "@type": "Question",
      "name": "駐車場はありますか?",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "はい、店舗前に3台分の無料駐車場がございます。満車の場合は近隣のコインパーキングをご利用ください。"
      }
    },
    {
      "@type": "Question",
      "name": "クレジットカードは使えますか?",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "はい、VISA、MasterCard、JCB、American Expressなど各種クレジットカードをご利用いただけます。"
      }
    },
    {
      "@type": "Question",
      "name": "予約は必要ですか?",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "ランチタイムはご予約なしでもご利用いただけますが、ディナータイムは席数が限られておりますので、事前のご予約をおすすめしております。お電話またはウェブサイトの予約フォームからご予約いただけます。"
      }
    }
  ]
}
</script>

このマークアップは、「よくある質問」ページ全体に対して1つ設置します。個別のQ&Aごとに設置するわけではないので注意しましょう。

実践4ステップ!構造化データをあなたのサイトに実装しよう

理論はわかったけれど、実際にどうやって実装すればいいのかわからない、という方もご安心ください。以下の4ステップで、誰でも簡単に構造化データを実装できます。

Step 1: マークアップする情報を正確に整理する

まずは、構造化データに含める情報を正確にリストアップします。特にLocalBusinessの情報(店名、住所、電話番号、営業時間)は、Googleビジネスプロフィールに登録している情報と一言一句同じになるように統一してください。情報に食い違いがあると、AIや検索エンジンを混乱させ、逆効果になる可能性があります。

Step 2: JSON-LDコードを自動生成する

コードを手書きするのはミスが起こりやすいため、無料のジェネレーターツールを使うのが最も安全で効率的です。おすすめは以下のツールです。

  • Merkle Schema Markup Generator: 業種を選ぶと、必要な項目がフォームとして表示され、入力するだけでJSON-LDコードを自動生成してくれます。初心者には最も使いやすいツールです。

これらのツールで「LocalBusiness」や「FAQ」などを選択し、Step 1で整理した情報をフォームに入力していきましょう。全ての入力が終わると、コピペできる状態のコードが生成されます。

Step 3: Webサイトにコードを実装する

生成された<script type="application/ld+json">...</script>というコードを、あなたのWebサイトのHTMLソースコードに貼り付けます。設置場所は、HTMLの<head>タグ内、もしくは<body>タグの閉じタグ直前が一般的です。

  • WordPressの場合:
    テーマのカスタマイズ機能や、専用のプラグイン(「Schema & Structured Data for WP & AMP」など)を使って実装するのが安全です。テーマのheader.phpファイルを直接編集する方法もありますが、アップデートで消えてしまう可能性があるため、子テーマを使用するなど注意が必要です。
  • WixやJimdoなどのサイトビルダーの場合:
    「カスタムコード」や「ヘッダー・フッターコードの埋め込み」といった機能があるはずです。その機能を使って、生成したコードを全ページ、もしくは関連するページのヘッダー部分に貼り付けましょう。

Step 4: 実装内容をテストする

実装が完了したら、必ず正しく認識されているかテストを行います。Googleが公式に提供している以下のツールを使用します。

このツールにあなたのサイトのURLを入力するか、生成したコードを直接貼り付けます。「ページはリッチリザルトに対応しています」と表示され、検出された構造化データの項目にエラーや警告がなければ成功です。もしエラーが出た場合は、メッセージをよく読み、コードを修正して再度アップロード・テストを行ってください。

まとめ:構造化データは未来のWeb集客への第一歩

この記事では、AI検索時代に不可欠なAIO対策の核心である、構造化データ(JSON-LD)の実装方法について解説しました。

構造化データは、単なるテクニカルなSEO施策ではありません。それは、あなたのビジネスに関する情報を、AIや検索エンジンという「機械の訪問者」に対して、親切に、そして正確に伝えるための「おもてなし」です。このおもてなしを徹底することが、AIに「このお店は信頼できる」と判断させ、未来の顧客に推薦してもらうための鍵となります。

まずは今回ご紹介したLocalBusinessReviewFAQPageの3つから実装を始めてみてください。この小さな一歩が、AI検索という大きな波に乗り、競合他社に差をつけるための重要な布石となるはずです。Webサイトの情報は常に最新の状態に保ち、構造化データもそれに合わせて更新していくことを忘れないようにしましょう。

より体系的なAIO対策の進め方は、TrendPackageのAIO対策パッケージで詳しく解説しています。

FREE DIAGNOSIS

あなたのお店のAI対策レベルを無料で診断

3分で完了。営業電話は一切ありません。

無料AI診断を受ける

RELATED ARTICLES

関連コラム