歯科医院の構造化データマークアップ実装ガイド

歯科医院の構造化データマークアップ実装ガイド

歯科医院のホームページがSEO対策済みでも、検索結果での表示が地味なままではクリック率は伸びません。構造化データマークアップを実装すると、検索結果にリッチリザルトが表示されます。星評価やFAQ、診療時間などが検索結果に直接表示されるため、クリック率が平均30%向上するというデータもあります。

本記事では、歯科医院サイトに特化した構造化データマークアップの実装方法を解説します。Schema.orgの各スキーマタイプごとに、JSON-LDのコード例と設定手順を具体的に紹介します。Googleのリッチリザルトテストでの検証方法まで網羅していますので、実装の参考にしてください。

構造化データマークアップとは何か

構造化データの基本的な仕組みを理解する

構造化データとは、Webページの情報を検索エンジンが理解しやすい形式で記述する仕組みです。通常のHTMLだけでは、検索エンジンはページ内のテキストが「医院名」なのか「住所」なのかを正確に判別できません。構造化データを使えば、各情報に意味づけ(セマンティクス)を付与できます。

構造化データの記述には、Schema.orgという国際的な語彙(ボキャブラリー)を使用します。Schema.orgはGoogle・Microsoft・Yahoo!が共同で策定した標準規格です。記述形式にはJSON-LD・Microdata・RDFaの3種類がありますが、GoogleはJSON-LDを推奨しています。JSON-LDはHTMLの<head>内に<script>タグで記述するため、既存のHTML構造に影響を与えません。

歯科医院が構造化データを実装すべき理由

構造化データを実装する最大のメリットは、リッチリザルトの獲得です。リッチリザルトとは、通常の検索結果よりも視覚的に目立つ表示形式を指します。具体的には、星評価・FAQ・パンくずリスト・診療時間・電話番号などが検索結果に直接表示されます。

Search Engine Journalの調査によると、リッチリザルトが表示されたページのクリック率は、通常の検索結果より平均58%高いとされています。歯科医院の場合、「地域名+歯科」の検索結果で星評価やFAQが表示されると、競合との差別化に直結します。構造化データの実装率は歯科業界で約15%と低いため、今実装すれば大きなアドバンテージを得られます。

LocalBusinessスキーマの実装方法

DentistタイプでJSON-LDを記述する

LocalBusinessスキーマは、歯科医院の基本情報を検索エンジンに伝えるための構造化データです。Schema.orgでは、LocalBusinessの下位タイプとして「Dentist」が定義されています。歯科医院のトップページには、このDentistタイプの実装が最優先です。

JSON-LDのコード例は以下の通りです。

{
  "@context": "https://schema.org",
  "@type": "Dentist",
  "name": "〇〇歯科クリニック",
  "image": "https://example.com/images/clinic.jpg",
  "address": {
    "@type": "PostalAddress",
    "streetAddress": "渋谷区〇〇1-2-3 〇〇ビル2F",
    "addressLocality": "渋谷区",
    "addressRegion": "東京都",
    "postalCode": "150-0001",
    "addressCountry": "JP"
  },
  "telephone": "+81-3-1234-5678",
  "url": "https://example.com",
  "openingHoursSpecification": [
    {
      "@type": "OpeningHoursSpecification",
      "dayOfWeek": ["Monday","Tuesday","Wednesday","Thursday","Friday"],
      "opens": "09:00",
      "closes": "20:00"
    }
  ],
  "geo": {
    "@type": "GeoCoordinates",
    "latitude": 35.6612,
    "longitude": 139.7036
  }
}

このコードをHTMLの<head>セクションに<script type="application/ld+json">タグで囲んで記述します。医院名・住所・電話番号・診療時間・座標は、自院の情報に書き換えてください。

MedicalOrganizationを併用して専門性を明示する

Dentistタイプに加えて、MedicalOrganizationタイプを併用すると、医療機関としての専門性をより詳細に伝えられます。MedicalOrganizationでは、診療科目や対応する保険情報などを記述できます。

具体的には、@typeを配列にして複数のタイプを指定します。

{
  "@context": "https://schema.org",
  "@type": ["Dentist", "MedicalOrganization"],
  "name": "〇〇歯科クリニック",
  "medicalSpecialty": [
    "一般歯科",
    "矯正歯科",
    "口腔外科",
    "小児歯科"
  ],
  "isAcceptingNewPatients": true,
  "availableService": {
    "@type": "MedicalProcedure",
    "name": "インプラント治療"
  }
}

medicalSpecialtyには標榜科目を、isAcceptingNewPatientsには新規患者の受け入れ状況を記述します。なお、医療広告ガイドラインに準拠し、標榜が認められていない診療科目名は記載しないよう注意してください。歯科の標榜科目は「歯科」「矯正歯科」「小児歯科」「歯科口腔外科」の4つです。

FAQPage構造化データの実装方法

FAQPageスキーマの基本構造を理解する

FAQPage構造化データを実装すると、検索結果にFAQ(よくある質問)がアコーディオン形式で表示されます。これにより、検索結果ページでの占有面積が大幅に拡大します。占有面積が大きいほどクリック率が向上するため、歯科医院にとって非常に効果的な施策です。

FAQPageスキーマの基本構造は以下の通りです。

{
  "@context": "https://schema.org",
  "@type": "FAQPage",
  "mainEntity": [
    {
      "@type": "Question",
      "name": "質問文をここに記述",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "回答文をここに記述"
      }
    }
  ]
}

mainEntity配列の中に、質問と回答のペアを必要な数だけ追加します。Googleの仕様では、質問数の上限は設けられていません。ただし、実務上は5〜10個程度が適切です。質問数が多すぎると、ユーザー体験を損なうとGoogleが判断し、リッチリザルトが表示されない場合があります。

歯科医院の診療ページ別FAQ構造化データ例

FAQPage構造化データは、診療メニューごとに個別のページで実装します。インプラントページのFAQ構造化データ例を示します。

{
  "@context": "https://schema.org",
  "@type": "FAQPage",
  "mainEntity": [
    {
      "@type": "Question",
      "name": "インプラント治療の費用はどのくらいですか?",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "インプラント1本あたりの費用は30万〜50万円が一般的です。CT検査・手術費・上部構造(被せ物)の費用が含まれます。医療費控除の対象となります。"
      }
    },
    {
      "@type": "Question",
      "name": "インプラント治療の期間はどのくらいですか?",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "一般的に3〜6ヶ月です。骨の状態や治療部位によって期間は異なります。カウンセリング時に治療計画をご説明いたします。"
      }
    }
  ]
}

回答文はページ本文のFAQセクションと一致させてください。構造化データの回答とページ本文が異なると、Googleのガイドライン違反となります。また、FAQの内容は医療広告ガイドラインに準拠した表現を使いましょう。治療効果を保証する回答や、他院との比較優位を述べる回答は掲載できません。

BreadcrumbList構造化データの実装方法

パンくずリストの構造化データで階層構造を伝える

BreadcrumbList構造化データは、サイトの階層構造を検索エンジンに伝えるためのマークアップです。実装すると、検索結果のURLの代わりにパンくずリストが表示されます。「トップ > 診療案内 > インプラント」のような階層表示になるため、ユーザーはページの位置づけを一目で把握できます。

JSON-LDのコード例は以下の通りです。

{
  "@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/service/"
    },
    {
      "@type": "ListItem",
      "position": 3,
      "name": "インプラント",
      "item": "https://example.com/service/implant/"
    }
  ]
}

positionは1から始まる連番で、階層の浅い方から順に番号を振ります。nameはパンくずに表示されるテキスト、itemは各階層のURLです。最後の項目(現在のページ)ではitemプロパティを省略する場合もあります。

歯科医院のサイト構造に合わせたパンくず設計

歯科医院のホームページでは、一般的に3〜4階層のパンくずリストが適切です。階層が深すぎるとユーザビリティが低下します。主要ページごとのパンくず設計例を示します。

診療メニューページの場合は以下の通りです。

  • トップ > 診療案内 > 矯正歯科
  • トップ > 診療案内 > 審美歯科
  • トップ > 診療案内 > 小児歯科

ブログ記事ページの場合は以下の通りです。

  • トップ > ブログ > カテゴリ名 > 記事タイトル

症例紹介ページの場合は以下の通りです。

  • トップ > 症例紹介 > インプラント症例

BreadcrumbListは全ページに実装しましょう。WordPressを使用している場合は、Yoast SEOプラグインが自動でBreadcrumbListの構造化データを出力します。プラグインの設定画面でパンくずを有効化するだけで完了します。手動実装の場合は、テンプレートファイルに上記のJSON-LDコードを動的に出力する仕組みを組み込んでください。

構造化データの検証とエラー対処法

Googleのリッチリザルトテストで検証する

構造化データを実装したら、必ずGoogleの検証ツールでエラーがないか確認しましょう。検証に使用できるツールは主に2つあります。

1つ目は「リッチリザルトテスト」です。URLまたはコードを入力すると、リッチリザルトの対象となる構造化データが検出されるかを確認できます。エラーや警告がある場合は、具体的な修正箇所が表示されます。

2つ目は「Google Search Console」の「拡張」セクションです。実際にGoogleがクロールした結果に基づくエラーレポートが表示されます。サイト全体の構造化データの状態を一括で確認できるため、定期的なモニタリングに適しています。

検証の手順は以下の通りです。

  • リッチリザルトテストにURLを入力する
  • 「URLをテスト」ボタンをクリックする
  • 検出された構造化データの種類を確認する
  • エラー・警告がある場合は内容を確認して修正する
  • 修正後に再度テストして問題がないことを確認する

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

歯科医院サイトで発生しやすい構造化データのエラーと対処法を紹介します。

最も多いエラーは「必須プロパティの欠落」です。LocalBusinessの場合、nameaddressが必須です。FAQPageの場合、各QuestionにacceptedAnswerが必須です。エラーメッセージに表示されるプロパティ名を確認し、JSON-LDに追加してください。

次に多いのは「値の形式エラー」です。電話番号は国際形式(+81-3-1234-5678)で記述する必要があります。URLはhttps://で始まる完全なURLを指定します。開業時間は24時間形式(09:00、20:00)で記述してください。

3つ目は「ページ内容との不一致」です。構造化データに記述した情報がページ本文に存在しない場合、Googleはスパムと判断する可能性があります。FAQの質問と回答は、ページ上に実際に表示されている内容と完全に一致させましょう。この不一致はGoogleの手動対策(ペナルティ)の対象となるため、特に注意が必要です。

複数の構造化データを1ページにまとめて実装する方法

1ページに複数のJSON-LDを配置するベストプラクティス

歯科医院のトップページには、LocalBusiness・FAQPage・BreadcrumbListなど複数の構造化データを同時に実装するのが理想です。1ページに複数のJSON-LDスクリプトを配置する方法は2つあります。

方法1は、個別の<script>タグで記述する方法です。

<script type="application/ld+json">
{ "@context": "https://schema.org", "@type": "Dentist", ... }
</script>
<script type="application/ld+json">
{ "@context": "https://schema.org", "@type": "FAQPage", ... }
</script>

方法2は、@graphプロパティで1つのスクリプトにまとめる方法です。

{
  "@context": "https://schema.org",
  "@graph": [
    { "@type": "Dentist", "name": "..." },
    { "@type": "FAQPage", "mainEntity": [...] },
    { "@type": "BreadcrumbList", "itemListElement": [...] }
  ]
}

どちらの方法でも検索エンジンは正しく解釈します。管理のしやすさでは方法2の@graphがおすすめです。1つのスクリプトにまとめることで、構造化データの見通しが良くなります。

歯科医院のページ種別ごとの推奨スキーマ一覧

ページの種類によって、実装すべき構造化データの組み合わせは異なります。歯科医院の主要ページごとの推奨スキーマを一覧で示します。

トップページに実装すべきスキーマは以下の3つです。

  • Dentist(LocalBusiness):医院名・住所・電話番号・診療時間
  • BreadcrumbList:トップ
  • FAQPage:医院に関するよくある質問

診療メニューページに実装すべきスキーマは以下の3つです。

  • MedicalProcedure:診療内容・費用の目安
  • BreadcrumbList:トップ > 診療案内 > 各診療名
  • FAQPage:各診療に関するよくある質問

ブログ記事ページに実装すべきスキーマは以下の2つです。

  • Article:記事タイトル・著者・公開日・更新日
  • BreadcrumbList:トップ > ブログ > 記事タイトル

医師紹介ページに実装すべきスキーマは以下の2つです。

  • Person(またはPhysician):氏名・資格・所属学会
  • BreadcrumbList:トップ > 医師紹介

全ページにBreadcrumbListを実装することが基本です。そのうえで、各ページの内容に応じたスキーマを追加していきましょう。なお、構造化データに記載する内容は全て医療広告ガイドラインに準拠する必要があります。特に、治療の効果を保証する表現や虚偽の情報は、構造化データ内であっても使用できません。

よくある質問

Q. 構造化データを実装するとすぐにリッチリザルトが表示されますか?

実装後すぐには表示されません。Googleがページを再クロールし、構造化データを認識する必要があります。通常は実装後1〜4週間で反映されます。Google Search Consoleの「URL検査」からインデックス再登録をリクエストすると、反映を早められます。ただし、リッチリザルトの表示はGoogleの判断に委ねられるため、実装しても表示が保証されるわけではありません。

Q. WordPressで構造化データを実装する簡単な方法はありますか?

Yoast SEOやRank Mathなどのプラグインを使えば、コードを直接記述せずに構造化データを実装できます。Yoast SEOはBreadcrumbListとArticleを自動出力します。FAQPageには「FAQブロック」を使用します。LocalBusinessの詳細設定には、Schema Proなどの専用プラグインの導入が効果的です。

Q. 構造化データの実装に医療広告ガイドラインは関係しますか?

はい、関係します。構造化データに記述する内容も医療広告ガイドラインの対象です。例えば、FAQPageの回答に「治療成功率100%」と記載すれば誇大広告に該当します。構造化データはページ本文と一致させる必要があるため、本文・構造化データの両方でガイドラインを遵守してください。

Q. Schema.orgにはどのような歯科関連のスキーマがありますか?

Schema.orgには歯科医院に関連する複数のスキーマが定義されています。主なものはDentist(歯科医院)、MedicalOrganization(医療機関)、MedicalProcedure(医療処置)、Physician(医師)です。さらにFAQPage・BreadcrumbList・Articleなど汎用スキーマも組み合わせて活用できます。

Q. 構造化データのエラーを放置するとSEOに悪影響がありますか?

エラーがある構造化データは、Googleに無視されるだけで直接的なペナルティは受けません。ただし、意図的に虚偽の情報をマークアップした場合は手動対策の対象となります。エラーを放置するとリッチリザルトが表示されず、実装の効果を得られません。Google Search Consoleで定期的にエラー状況を確認し、速やかに修正することを推奨します。

よくある質問(FAQ)

Q. 構造化データを実装するとすぐにリッチリザルトが表示されますか?

A. 実装後すぐには表示されません。Googleがページを再クロールし構造化データを認識する必要があり、通常1〜4週間で反映されます。Google Search Consoleの「URL検査」からインデックス再登録をリクエストすると反映を早められます。ただし表示はGoogleの判断に委ねられ、保証されるわけではありません。

Q. WordPressで構造化データを実装する簡単な方法はありますか?

A. Yoast SEOやRank Mathなどのプラグインを使えば、コードを直接記述せずに実装できます。Yoast SEOはBreadcrumbListとArticleを自動出力します。FAQPageには「FAQブロック」を使用します。LocalBusinessの詳細設定にはSchema Proなどの専用プラグインが効果的です。

Q. 構造化データの実装に医療広告ガイドラインは関係しますか?

A. はい、関係します。構造化データに記述する内容も医療広告ガイドラインの対象です。FAQPageの回答に「治療成功率100%」と記載すれば誇大広告に該当します。構造化データはページ本文と一致させる必要があるため、本文と構造化データの両方でガイドラインを遵守してください。

Q. Schema.orgにはどのような歯科関連のスキーマがありますか?

A. 主なものはDentist(歯科医院)、MedicalOrganization(医療機関)、MedicalProcedure(医療処置)、Physician(医師)です。さらにFAQPage・BreadcrumbList・Articleなど汎用スキーマも組み合わせて活用できます。ページの種類に応じて適切なスキーマを選択してください。

Q. 構造化データのエラーを放置するとSEOに悪影響がありますか?

A. エラーがある構造化データはGoogleに無視されるだけで、直接的なペナルティは受けません。ただし意図的に虚偽の情報をマークアップした場合は手動対策の対象となります。エラーを放置するとリッチリザルトが表示されないため、Google Search Consoleで定期的に確認し修正しましょう。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です