Schema.org構造化データ実装術|AIエージェントにクリニックの「予約アクション」を伝える方法

GoogleやChatGPTなどのAIエージェントが診療予約を提案してくれる時代が始まっています。その仕組みの鍵を握るのが、Schema.org構造化データです。
この記事では、保険診療を中心とするクリニックのウェブサイトにSchema.orgの「予約アクション」を正しく実装する手順を、コードの書き方から検証方法までわかりやすく解説します。
構造化データを整えれば、AI検索やGoogleのリッチリザルトに自院の予約導線が表示されやすくなり、集患力の強化につながるでしょう。技術に詳しくない先生でも取り組めるよう、一つひとつ丁寧にお伝えします。
Schema.org構造化データとは何か|クリニックのSEOを左右する「機械が読める情報」
Schema.org構造化データとは、ウェブページに書かれた情報を検索エンジンやAIが正確に読み取れるよう、決められた書式で記述するマークアップの仕組みです。人間が見るデザインとは別に、機械向けの「裏側の情報」を埋め込むことで、GoogleのリッチリザルトやAIエージェントの回答に自院の情報が反映されやすくなります。
検索エンジンは「見た目」ではなく「タグ」でクリニック情報を判断する
たとえばウェブサイトに「受付時間 9:00〜18:00」と表示していても、検索エンジンがそれを診療時間だと自動で判別できるとは限りません。HTMLの文字列をそのまま読んでいるだけだからです。
そこでSchema.orgの構造化データを使い、「これは医療機関の営業時間です」と明示的にタグ付けします。するとGoogleは診療時間を正確に認識し、検索結果画面に表示できるようになります。
クリニック向けに使われるSchema.orgの代表的な型(タイプ)
Schema.orgには膨大な種類の「型(タイプ)」がありますが、クリニックに関係するものは限られています。まず押さえたいのが「MedicalClinic」で、これは医療機関そのものを表すタイプです。
さらに診療科目を示す「MedicalSpecialty」や、医師のプロフィールを記述する「Physician」なども活用できます。これらを組み合わせれば、自院の基本情報を機械に正しく伝えられます。
クリニックで活用頻度の高いSchema.orgタイプ一覧
| タイプ名 | 用途 | 記述例 |
|---|---|---|
| MedicalClinic | 医療機関の基本情報 | 名称・住所・電話番号 |
| Physician | 医師の情報 | 氏名・専門分野 |
| MedicalSpecialty | 診療科の指定 | 内科・皮膚科など |
| OpeningHoursSpecification | 診療時間の詳細 | 曜日別の受付時間 |
| ReserveAction | 予約アクション | オンライン予約のURL |
構造化データを導入すると検索結果がどう変わるか
構造化データを正しく実装したクリニックのウェブサイトは、Googleの検索結果にリッチリザルト(強調表示)として表示される可能性が高まります。診療時間や住所、さらには「予約する」ボタンが検索結果上に直接現れるケースもあります。
こうした情報が表示されると、患者さんはクリニックのサイトを開かなくても基本情報を把握できるため、クリック率と来院率の向上が期待できます。
AIエージェントがクリニックの予約情報を「読み取る」仕組みを知っておこう
ChatGPTやGeminiなどのAIエージェントは、ウェブ上の構造化データを手がかりにして「この病院は予約ができる」「予約ページはここだ」と判断しています。構造化データが整っていないと、AIはクリニックの予約機能を見つけられず、患者さんへの提案候補から外れてしまうかもしれません。
AIエージェントはSchema.orgの「ReserveAction」をどう解釈するか
Schema.orgには「ReserveAction」というアクション型があり、予約を受け付けるウェブページのURLやターゲット情報を記述できます。AIエージェントはこのReserveActionを読み込み、「オンライン予約が可能な医療機関」として認識します。
単にウェブサイトのボタンに「ご予約はこちら」と書いてあるだけでは、AIは予約導線だと確信を持てません。構造化データで明示することが、AI時代の集患に直結します。
Googleリッチリザルトとの関係|検索結果に「予約ボタン」が出る条件
Googleが検索結果に予約アクションを表示するには、Schema.orgの構造化データが正しく記述されていることに加え、Googleビジネスプロフィール(旧Googleマイビジネス)との連携も影響します。構造化データはあくまでウェブサイト側の施策ですが、ビジネスプロフィール側の情報と一致していることが大切です。
なお、リッチリザルトへの表示はGoogleのアルゴリズムが判断するため、実装すれば必ず表示されるわけではありません。とはいえ、実装していなければ候補にすら上がらないため、対策する価値は十分あるでしょう。
AI検索時代に「構造化データ未対応」だと起きること
AIエージェントは日々進化しており、患者さんが「近くの内科で予約できるところ」と音声やテキストで質問する場面が増えています。構造化データで予約情報を明示しているクリニックと、していないクリニックでは、AIの回答に表示される確率に差が生まれます。
今後、AI検索の利用者が増えるほど、構造化データの有無が集患力を左右する要因になると考えられます。
| 項目 | 構造化データあり | 構造化データなし |
|---|---|---|
| Googleリッチリザルト | 表示候補になる | 表示されない |
| AIエージェントの回答 | 予約先として提案される | 候補に含まれにくい |
| 検索結果のクリック率 | 向上しやすい | 変化が期待しにくい |
予約アクション(ReserveAction)をJSON-LDで書く具体的な方法
予約アクション(ReserveAction)をクリニックのウェブサイトに実装する際は、JSON-LD形式で記述するのが現在もっとも推奨されている方法です。JSON-LDはHTMLのheadタグ内に記述でき、ページの見た目に影響を与えないため、既存デザインを崩すことなく導入できます。
JSON-LDとは|HTMLを書き換えずに構造化データを追加できる記述形式
JSON-LDは「JavaScript Object Notation for Linked Data」の略で、構造化データをJSON形式で記述する方法です。HTMLの<script type="application/ld+json">タグ内にまとめて記述するため、既存のHTMLコードを変更する必要がありません。
クリニックのウェブサイトでは、CMS(WordPressなど)のテーマファイルやプラグインを通じてheadタグ内にJSON-LDを挿入するのが一般的な方法です。
ReserveActionの基本コード|コピーして使えるテンプレート
以下がReserveActionを含むJSON-LDの基本テンプレートです。「name」にはクリニック名を、「url」には予約ページのURLを、「target」には予約フォームのURLを入れてください。
{
"@context": "https://schema.org",
"@type": "MedicalClinic",
"name": "〇〇クリニック",
"url": "https://example.com",
"telephone": "03-XXXX-XXXX",
"address": {
"@type": "PostalAddress",
"streetAddress": "〇〇区〇〇1-2-3",
"addressLocality": "〇〇市",
"addressRegion": "東京都",
"postalCode": "100-0001",
"addressCountry": "JP"
},
"potentialAction": {
"@type": "ReserveAction",
"target": {
"@type": "EntryPoint",
"urlTemplate": "https://example.com/reserve",
"actionPlatform": [
"http://schema.org/DesktopWebPlatform",
"http://schema.org/MobileWebPlatform"
]
},
"result": {
"@type": "Reservation",
"name": "診療予約"
}
}
}
| プロパティ | 記述内容 | 注意点 |
|---|---|---|
| @type | MedicalClinic | 医療機関であることを明示 |
| name | クリニック正式名称 | 登記名と一致させる |
| urlTemplate | 予約ページURL | httpではなくhttpsを使用 |
| actionPlatform | 対応端末の指定 | PCとスマホ両方を記述 |
| result | 予約の種類 | 「診療予約」と明記 |
診療科や診療時間と組み合わせて記述する方法
ReserveActionだけを単独で記述しても効果はありますが、診療科(MedicalSpecialty)や診療時間(OpeningHoursSpecification)と組み合わせて記述すると、検索エンジンやAIエージェントの理解度が格段に向上します。
たとえば「内科」の診療時間が「月曜から金曜の9:00〜17:00」であることをJSON-LD内に一緒に記述すれば、AIが「平日の午前中に予約できる内科」として患者さんに提案できるようになります。
WordPress利用者向け|プラグインで構造化データを簡単に追加する方法
WordPressを利用している場合、構造化データの追加はプラグインを使えば比較的簡単です。「Rank Math」や「Yoast SEO」などのSEOプラグインには構造化データの出力機能が含まれています。
ただし、ReserveActionのようなアクション型は標準機能では対応していない場合があるため、カスタムJSON-LDを追加できるプラグイン(「WPCode」など)を併用するのが現実的でしょう。
実装後のテストと検証|Googleの公式ツールでエラーを確実に見つける
構造化データは書いて終わりではなく、正しく機能しているかテストすることが大切です。Googleが提供する無料のテストツールを使えば、記述ミスやエラーをすぐに発見できます。
Googleリッチリザルトテストで「予約アクション」が認識されているか確認する
Googleが提供する「リッチリザルトテスト」(search.google.com/test/rich-results)は、指定したURLまたはコードの構造化データが正しく記述されているかを判定するツールです。URLを入力して数秒待つだけで、検出された構造化データの種類とエラーの有無が表示されます。
ReserveActionが正しく認識されていれば、テスト結果に「Action」の項目が表示されるはずです。エラーが出ている場合は、プロパティ名やURL記述に間違いがないかを確認しましょう。
Schema.orgマークアップバリデーターで記述の細部を検証する
Schema.org公式が提供している「Schema Markup Validator」(validator.schema.org)は、Googleのツールよりも詳細なチェックが可能です。プロパティの型(文字列・数値・URLなど)が正しいかまで検証してくれます。
Googleのテストで問題がなくても、Schema.orgの仕様上は警告が出るケースがあるため、両方で二重チェックすると安心です。
Google Search Consoleで構造化データの認識状況を継続監視する
公開後は、Google Search Console(サーチコンソール)の「拡張」レポートで構造化データの認識状況をモニタリングしましょう。新たにエラーが発生した場合にアラートが届くため、問題の早期発見に役立ちます。
構造化データの検証に使う3つのツール
- リッチリザルトテスト(search.google.com/test/rich-results):実装時と変更時に使用
- Schema Markup Validator(validator.schema.org):仕様準拠の詳細検証に使用
- Google Search Console:公開後の継続モニタリングに週1回以上確認
よくある実装ミスとその対処法|せっかくの構造化データを無駄にしないために
構造化データを実装したのに検索結果に反映されない場合、記述内容に何らかのミスが含まれていることがほとんどです。よくあるミスのパターンを事前に把握しておけば、修正の手間を大幅に減らせるでしょう。
URLの記述ミス|httpとhttpsの混在やスラッシュの有無で認識されない
もっとも多いミスが、URLの記述に関するものです。ウェブサイトがhttpsで運用されているのにJSON-LD内のURLが「http://」で始まっていると、検索エンジンは一致しないURLと判断する場合があります。
末尾のスラッシュ(/)の有無も要注意です。「https://example.com/reserve」と「https://example.com/reserve/」はGoogleにとって別のURLとして扱われることがあるため、サイトの正規URLと完全に一致させましょう。
@typeの指定ミス|「Hospital」と「MedicalClinic」を混同しない
Schema.orgでは「Hospital」と「MedicalClinic」は別のタイプとして定義されています。一般的なクリニック(診療所)の場合は「MedicalClinic」を使うのが適切です。
- MedicalClinic:診療所・クリニック向け
- Hospital:病院(病床20床以上)向け
- Physician:個人の医師の情報を記述する場合
「Hospital」を指定してしまうと、Googleが「入院施設のある病院」と誤認する恐れがあるため、開業医の先生は必ず「MedicalClinic」を選択してください。
JSON-LDの文法エラー|カンマやブラケットの抜けに注意する
JSON-LDはJSON形式で記述するため、カンマの位置やブラケット(括弧)の対応に厳格です。たった1つのカンマの欠落でJSON全体が無効になり、検索エンジンに一切認識されなくなる場合があります。
こうしたミスを防ぐには、JSONのバリデーター(jsonlint.comなど)で文法チェックを行い、その後にGoogleのリッチリザルトテストで意味的なチェックを行う2段階の検証がおすすめです。
ChatGPTを活用してJSON-LDのエラーを素早く発見する
JSON-LDの記述に慣れていない場合、ChatGPTにコードを貼り付けて「このJSON-LDにエラーがないか確認してください」と依頼する方法が便利です。文法上の問題点だけでなく、Schema.orgの仕様に合わないプロパティの使い方まで指摘してくれることがあります。
ただし、生成AIの回答は常に正確とは限りません。最終的にはGoogleの公式テストツールで検証することを忘れないでください。「下書きのチェック役」として活用するのが賢い使い方です。
Googleビジネスプロフィールとの連携で構造化データの効果を高める
Schema.org構造化データの効果を引き出すには、ウェブサイト単体の施策だけでなく、Googleビジネスプロフィール(GBP)との情報の一致が重要です。ウェブサイトの構造化データとGBPの情報がそろっているクリニックは、Google検索やGoogleマップでの露出が安定しやすくなります。
NAP情報を完全一致させるだけで検索評価が変わる
NAP情報とは、Name(名称)・Address(住所)・Phone(電話番号)の3つを指します。ウェブサイトのJSON-LDに記述したNAP情報と、Googleビジネスプロフィールに登録しているNAP情報が一字一句同じであることが求められます。
たとえば、ウェブサイト側では「〇〇内科クリニック」と記載しているのに、GBP側では「○○内科医院」になっている場合、Googleは同一の医療機関と判断できないことがあります。
予約リンクの設定をGBP側でも忘れずに行う
Googleビジネスプロフィールには予約URL(予約リンク)を設定する項目があります。ウェブサイトのJSON-LDに記述した予約URLと、GBP上の予約URLが一致していることを確認しましょう。
両方に同じURLを設定しておくことで、Googleはそのリンクがクリニックの公式予約ページだと判断しやすくなります。
口コミ対策と構造化データは両輪で取り組む
Googleビジネスプロフィールの口コミ評価と構造化データは、それぞれ独立したシグナルですが、どちらも検索結果の表示に影響します。構造化データでクリニック情報を正しく伝えつつ、口コミへの丁寧な返信を続けることで、集患力を総合的に高められるでしょう。
| 一致させるべき情報 | ウェブサイト側 | GBP側 |
|---|---|---|
| クリニック名称 | JSON-LDのnameプロパティ | ビジネス名 |
| 住所 | JSON-LDのaddressプロパティ | 所在地情報 |
| 電話番号 | JSON-LDのtelephoneプロパティ | 電話番号欄 |
| 予約URL | JSON-LDのurlTemplate | 予約リンク欄 |
構造化データ運用の年間スケジュール|導入後に放置すると集患チャンスを逃す
構造化データは「一度実装すれば完了」ではなく、定期的な見直しと更新が必要です。クリニックの診療体制は季節や年度の変わり目で変わることが多いため、構造化データの情報が古いまま放置されると、検索エンジンやAIエージェントに誤った情報を伝えてしまうことになります。
年末年始や長期休診前に構造化データを更新する理由
| 時期 | 更新すべき情報 | 放置した場合のリスク |
|---|---|---|
| 年末年始 | 休診日・診療時間の変更 | AI検索で「本日診療中」と誤表示される |
| 4月(年度替わり) | 医師の異動・診療科の変更 | 在籍しない医師が表示される |
| GW・お盆 | 臨時休診の反映 | 来院した患者さんが休診で戻ることに |
| 随時 | 予約システムのURL変更 | 予約リンクがリンク切れになる |
診療時間や担当医が変わったら必ず構造化データも書き換える
新しい非常勤医師が加わった場合や、特定の曜日の診療時間が変わった場合、ウェブサイトの表示だけを修正して構造化データの更新を忘れるケースが少なくありません。
表示上は正しい情報が載っていても、JSON-LD内の情報が古いままだと、検索エンジンは古い方の情報を参照してリッチリザルトを表示する可能性があります。結果として、患者さんに誤った診療時間を伝えてしまう事態になりかねません。
年に1回は構造化データ全体を棚卸しする習慣をつける
日々の小さな更新に加え、年に1回は構造化データ全体を見直す「棚卸し」を行いましょう。予約システムの変更や住所表記の修正など、気づかないうちに差分が生じているケースは珍しくありません。
棚卸しのタイミングとしては、年度初めの4月やウェブサイトのリニューアル時が適しています。Googleリッチリザルトテストで全ページを再チェックし、構造化データの品質を維持しましょう。
外部業者に運用を任せるときの注意点
構造化データの運用をウェブ制作会社やSEO会社に委託する場合、更新依頼のフローを事前に決めておくことが大切です。「診療時間の変更があったら3営業日以内にJSON-LDを更新する」など、具体的なルールを明記しておきましょう。
外部に依頼する場合でも、内容が正しいかどうかは自院でチェックできる体制を整えておくと安心です。
よくある質問
Schema.org構造化データはプログラミング未経験の開業医でも実装できる?
プログラミングの知識がなくても実装は可能です。WordPressであればSEOプラグインやカスタムコード挿入プラグインを使うことで、コードをコピー&ペーストするだけで構造化データを追加できます。
自院の名称・住所・電話番号・予約URLをテンプレートに当てはめるだけなので、特別な技術は必要ありません。不安な場合は、ウェブ制作会社に依頼すれば数万円程度で実装してもらえるケースが一般的です。
Schema.orgのReserveActionを実装すると検索順位は上がる?
構造化データ自体がGoogleの検索順位を直接引き上げる要因になるわけではありません。Googleは公式に「構造化データはランキングシグナルではない」と説明しています。
ただし、リッチリザルトとして表示されることでクリック率が向上し、結果として間接的にSEO効果をもたらすことは十分に考えられます。また、AIエージェントの回答に表示されやすくなるという別の集患経路も期待できるでしょう。
Schema.org構造化データの実装にかかる費用の目安はどれくらい?
自院で実装する場合、費用はかかりません。WordPressの無料プラグインと公式テンプレートを使えば、追加コストなしで構造化データを設置できます。
外部に依頼する場合の費用は制作会社によって異なりますが、初期実装で3万円〜10万円程度が相場です。月額保守として更新を依頼する場合は、月5,000円〜2万円程度で対応してくれる会社が多い傾向にあります。
Schema.org構造化データは保険診療のクリニックにも効果がある?
保険診療を中心とするクリニックでも、構造化データは十分に効果を発揮します。むしろ保険診療のクリニックは診療科目や診療時間が明確であるため、構造化データとの相性が良いといえます。
「内科 予約 〇〇市」のように地域名と診療科を組み合わせた検索は保険診療のクリニックで多く見られるパターンです。こうした検索でリッチリザルトやAI検索に表示されることで、新規の患者さんに自院を知ってもらう機会が広がるでしょう。
Schema.org構造化データを間違えて実装した場合、ペナルティを受ける?
記述ミスがあった場合、Googleからペナルティ(手動対策)を受けることは通常ありません。単にGoogleが構造化データを認識しない、あるいはリッチリザルトが表示されないだけで終わるケースがほとんどです。
ただし、意図的に虚偽の情報を記述した場合(予約機能がないのにReserveActionを設定するなど)は、ガイドライン違反として手動対策の対象になる可能性があります。正確な情報を記述することだけ心がけていれば心配は不要です。
この記事が気に入ったら
フォローをお願いします!
この記事を書いた人 Wrote this article
AIで集患している人@山岡
自社の本業は医薬部外品等のネット通販。某巨大企業の社畜マーケターとしても活動中。個人マーケと大手マーケ、社長と社畜、の両岸を現在進行形で行っているのが最大の強み。某メジャー競技で全国優勝多数の元アスリート。生活も仕事もストイックすぎて誰ともなじめず友達はいないが悩んでもいない。AIエージェントをフル活用した「集患の全自動化」に挑戦中。すでに全自動化の仕組みは完成しており現在はテストを繰り返してバグを修正中。