SEO対策コース/カリキュラム/第4章: 構造化データとスキーマ/4-2 JSON-LD スキーマを Claude Code で自動生成する

4-2 JSON-LD スキーマを Claude Code で自動生成する

無料

Organization / Article / Product / FAQPage / LocalBusiness の 5 種を Claude Code に日本語指示で JSON-LD 生成。Google テストツールで検証まで行う構造化データ自動生成の手順です。

4章: 構造化データとスキーマ20分

このレッスンのゴール

前のレッスンでは構造化データの全体像を学びました。今回は実際に手を動かす章です。Claude Code に日本語で指示するだけで、Organization、Article、Product、FAQPage、LocalBusiness の 5 種類のスキーマを JSON-LD として生成し、サイトに組み込み、Google のテストツールで検証するところまでを体験します。

コードは一切書きません。やることは「現状確認 → 指示 → 検証」の 3 ステップです。

ステップ 1 — まず今の状態をチェックしよう

いきなり構造化データを追加する前に、サイトに既に設定されているものがないか確認しましょう。WordPress などの CMS を使っている場合、テーマやプラグインが自動で追加していることがあります。重複して追加すると、Google が混乱してリッチリザルトが表示されなくなることもあります。

Claude Code に調べてもらいましょう。

# サイトの構造化データを調べる
> /seo schema https://あなたのサイト.com

結果の見方は次の通りです。

  • 「検出されたスキーマ」 — すでに設定されているもの。種類と内容を確認する
  • 「不足しているプロパティ」 — 既存のスキーマに足りない情報。最優先で埋める
  • 「推奨スキーマ」 — 新たに追加すると効果的なもの。サイト種別に応じて提案される
  • 「エラー」 — 修正が必要な問題。リッチリザルトが表示されない原因になる

エラーがあった場合は、新しいスキーマを追加する前に必ず先に直しましょう。

ポイント

まず現状把握

スキーマを増やすより、既存のエラーを直すほうが優先度が高いです。エラーが残ったままだと、追加したスキーマも表示されない可能性があります。

ステップ 2 — Organization スキーマを最初に作る

最初に作るべきは Organization スキーマです。理由は 3 つあります。

第一に、全ページ共通で使えること。トップページや会社概要ページに 1 度設定すれば、サイト全体の信頼性向上に効きます。

第二に、ナレッジパネル(検索結果の右側に表示される会社情報パネル)の表示に直接影響すること。会社名で検索したときに、ロゴ・住所・SNS リンクがまとまった枠で表示されると、ブランドの印象が大きく変わります。

第三に、他のスキーマから参照される基盤になること。Article スキーマの publisher、Product スキーマの brand など、多くのスキーマが Organization を内部で参照します。

Organization スキーマで設定する基本プロパティは以下の通りです。

  • name — 正式な会社名・サービス名(略称ではなくフル表記が望ましい)
  • url — サイトのトップ URL
  • logo — ロゴ画像 URL(112x112 px 以上、正方形が推奨)
  • address — 本社所在地
  • contactPoint — 連絡先(電話番号、対応言語、対応エリア)
  • sameAs — 公式 SNS アカウントの URL リスト(信頼性の裏付けになる)
  • founder — 創業者(個人 SEO・代表者ブランディングに有効)
  • foundingDate — 設立日

Claude Code への指示例は以下の通りです。

> 会社の Organization スキーマを作って。情報はこれ。
> 会社名: 株式会社サンプル
> 住所: 東京都渋谷区神宮前1-1-1
> 電話: 03-1234-5678
> ロゴ URL: https://example.com/images/logo.png
> 設立: 2020年
> SNS: Twitter https://twitter.com/sample, Facebook https://facebook.com/sample
> 出力は JSON-LD で、トップページの <head> に入れる前提でお願い。
Good

sameAs に公式 SNS アカウントを 3〜5 個並べると、Google が「実在する組織」と判断しやすくなります。Twitter(X)、Facebook、LinkedIn、YouTube、Wikipedia ページなど、運営している公式アカウントは漏れなく入れましょう。

ステップ 3 — Article / BlogPosting でブログ記事を強化

ブログやニュース記事を運用している場合は、Article または BlogPosting スキーマを必ず入れましょう。

このスキーマで Google に伝えるべき重要プロパティは以下の通りです。

  • headline — 記事タイトル(110 文字以内)
  • author — 著者名と著者ページの URL。E-E-A-T の「専門性」を示す
  • datePublished — 初回公開日
  • dateModified — 最終更新日。これがあると「最新情報」として扱われやすい
  • image — 記事のアイキャッチ画像(1200x630 以上推奨)
  • publisher — 発行元(Organization スキーマと連携)

特に dateModified は重要です。同じ記事でも「更新日」が新しいほうが検索結果で優位になりやすいため、内容を見直したら必ず更新しましょう。

> このブログ記事に Article スキーマを追加して。
> 著者は「田中太郎」、著者ページは /authors/tanaka にある。
> 公開日と更新日はファイルのメタ情報から取って。
> アイキャッチは記事内の最初の画像を使って。

Article と BlogPosting のどちらを使うかは、サイトの性質で決めます。ニュース・解説記事中心なら Article、個人や企業の継続的なブログ更新なら BlogPosting を選びましょう。迷ったら BlogPosting で問題ありません。

気づき

著者ページ(/authors/xxx)には Person スキーマを別途設定し、その Person のプロフィール・経歴・SNS リンクを構造化しておくと、E-E-A-T の「経験」と「権威性」がさらに強化されます。Claude Code に「著者ページに Person スキーマも追加して」と頼みましょう。

ステップ 4 — Product スキーマで商品ページを強化

EC サイトや SaaS の料金ページには Product スキーマが効きます。検索結果に価格・在庫・レビュー評価が表示されるようになり、購入意欲の高いユーザーに刺さります。

Product スキーマで設定する項目は次の通りです。

  • name — 商品名
  • image — 商品画像(複数可)
  • description — 商品説明
  • offers — 価格、通貨、在庫状況(InStock / OutOfStock)
  • aggregateRating — 平均評価とレビュー件数
  • review — 個別レビュー(任意)
  • brand — ブランド名
> /product/saas-plan-a のページに Product スキーマを追加して。
> 価格・プラン内容・在庫はページ内の表示から自動で拾って。
> レビューが <section class="reviews"> 内にあるので、それも構造化して。

SaaS の料金ページの場合、Product よりも SoftwareApplication スキーマのほうが適切なケースもあります。サブスクリプション課金で「在庫」の概念がないなら SoftwareApplication、物販に近い感覚なら Product を選びましょう。Claude Code に「これは SaaS の料金ページだけど、ProductかSoftwareApplicationどっちが適切?」と聞けば判定してくれます。

注意

価格や在庫を構造化データに入れる場合、必ずページの表示と一致させること。表示価格と構造化データの価格が違うと、Google から「マークアップ違反」として警告が来てリッチリザルトが消えます。動的価格の場合は Claude Code に「ページから自動で拾って」と指示するのが安全です。

ステップ 5 — FAQPage で表示面積を増やす

すべての構造化データの中で、最も手軽に効果が出るのが FAQPage スキーマです。

FAQPage を追加すると、検索結果に「よくある質問」が直接展開表示されます。表示面積が縦に大きく広がるため、競合より目立ち、クリック率が上がります。

サイトに FAQ ページがなくても、各記事の下部に「よくある質問」セクションを追加すれば OK です。Claude Code に頼めばセクションごと自動生成してくれます。

> このページの下部に「よくある質問」セクションを追加して。
> ページの内容に関連する質問を 5 つ作って、回答もつけて。
> HTML の Q&A セクション + JSON-LD の FAQPage スキーマを両方入れて。

Claude Code が自動でやってくれるのは下記のとおりです。

  1. ページ本文を読んで適切な Q&A を 5 つ作成
  2. HTML 上にユーザーが見られる Q&A セクションを追加
  3. 同じ内容を JSON-LD の FAQPage スキーマとしてマークアップ
気づき

FAQPage は「ページに表示されている内容」しか構造化データに入れてはいけません。ユーザーに見えない隠し FAQ をマークアップするのはガイドライン違反です。だから Claude Code には「HTML と JSON-LD を両方作って」と頼むのが正解です。

ステップ 6 — LocalBusiness で地域集客を強化

店舗・クリニック・サロン・士業など、地域ビジネスの場合は LocalBusiness スキーマが必須です。Google マップとの連携、営業時間の検索結果表示、「近くの〇〇」検索でのヒットに直接効きます。

LocalBusiness では、Organization の項目に加えて以下を設定します。

  • address — 詳細な住所(postalCode、addressLocality、streetAddress を分けて記述)
  • geo — 緯度・経度
  • openingHoursSpecification — 曜日ごとの営業時間
  • priceRange — 価格帯(¥、¥¥、¥¥¥ など)
  • telephone — 電話番号
  • areaServed — 商圏
> トップページに LocalBusiness スキーマを追加して。
> 業種は美容室、店舗名「サンプル美容室」、
> 住所は東京都新宿区西新宿2-1-1、
> 営業は火〜日 10:00-20:00、月曜定休。
> Google マップの埋め込み URL は <iframe> から緯度経度を抽出して使って。

LocalBusiness には業種別の派生スキーマがあります。BeautySalon(美容室)、Restaurant(飲食店)、Dentist(歯科)、LegalService(法律事務所)、AutoRepair(自動車整備)、ChildCare(保育)など、より具体的なスキーマを使うほど Google に伝わる情報量が増えます。Claude Code に「業種は美容室なので、BeautySalon を使って」と明示しましょう。

複数店舗を運営している場合は、各店舗ページに個別の LocalBusiness スキーマを設定し、トップページの Organization スキーマと location プロパティで紐付けるのがベストプラクティスです。

Claude Code への指示テンプレート集

コピペで使える指示テンプレートをまとめました。サイトの情報に合わせて書き換えて使ってください。

# テンプレ 1: 既存スキーマの監査
> /seo schema https://example.com
> エラーと不足プロパティを優先度順に並べて、修正案を出して。

# テンプレ 2: サイト全体に Organization を入れる
> 全ページの共通レイアウト(layout.tsx / header.php など)に
> Organization スキーマを追加して。情報は <会社情報を貼り付け>

# テンプレ 3: 既存記事に一括で Article スキーマ
> content/blog/ 配下の全記事に Article スキーマを追加して。
> 著者・公開日・更新日は frontmatter から取って。

# テンプレ 4: FAQ を本文から自動生成
> このページの本文を読んで、想定 Q&A を 5 つ作って。
> 表示用 HTML と FAQPage JSON-LD の両方を出して。

# テンプレ 5: Product スキーマを自動補完
> /products/ 配下の全ページに Product スキーマを追加して。
> 価格・画像・説明はページ内から自動で拾って。

# テンプレ 6: 既存スキーマの dateModified を一括更新
> 過去 30 日以内に更新した記事の dateModified を最新化して。

ステップ 7 — Rich Results Test で必ず検証

スキーマを追加したら、Google の Rich Results Test(リッチリザルトテスト)で検証します。URL は search.google.com/test/rich-results です。

検証フローは以下のとおりです。

<Steps items={[{"title":"URL を入力","body":"テストツールの入力欄に検証したいページの URL を貼り付けて「URL をテスト」ボタンを押す"},{"title":"スキーマ検出を確認","body":"ページ内で検出されたスキーマの種類が一覧表示される。意図したスキーマがすべて検出されているかチェック"},{"title":"エラーと警告を確認","body":"赤いエラー(必須プロパティ欠落など)と黄色い警告(推奨プロパティ欠落)を確認"},{"title":"プレビューで見え方を確認","body":"「結果のプレビュー」で実際の検索結果での見え方をシミュレート。表示崩れがないか確認"},{"title":"エラーを Claude Code で修正","body":"エラー内容をそのまま Claude Code に貼り付けて「これを直して」と指示。修正版を生成してもらう"},{"title":"再テストして全エラー解消","body":"修正したら再度 URL を入力して、すべてのエラーが消えるまで繰り返す"}]} />

ポイント

Rich Results Test で「リッチリザルト対象」と表示されても、実際の検索結果に出るまで数日〜数週間かかります。すぐに表示されなくても焦らず、Google Search Console の「拡張」レポートで反映状況を追いましょう。

よくある間違い

構造化データの設定でよくある失敗を 4 つ紹介します。Claude Code に依頼するときも、これらを避けるよう明示すると安全です。

注意

1. 表示と異なる情報を構造化データに入れる ページに「¥10,000」と書いてあるのに、JSON-LD では「¥8,000」と書く、といったケース。Google のスパムポリシー違反になり、ペナルティ対象です。

注意

2. ユーザーに見えない隠しコンテンツのマークアップ ページ上には表示されていない FAQ や口コミを、構造化データだけに書く行為。FAQPage、Review、HowTo などで特に違反になりやすい。

注意

3. 関係ないスキーマを盛りすぎる 1 ページに 5 種類も 6 種類もスキーマを詰め込むと、Google がページの主題を判断できなくなります。ページの内容を最もよく表すスキーマを 1〜2 個に絞りましょう。

注意

4. dateModified を更新せずに「最新」を装う 本文を更新していないのに dateModified だけ毎日書き換えるのは NG。Google は本文の差分も見ているので、最終的に評価が下がります。本文を実際に更新した日だけ書き換えること。

デプロイ後の運用ポイント

スキーマを入れて終わり、ではありません。継続的なメンテナンスが必要です。

月次でやること — Google Search Console の「拡張」レポートを開き、各スキーマの「有効」「警告」「エラー」の件数を確認します。エラー件数が増えていたら、Claude Code に「Search Console のエラー一覧をスクリーンショットで送るので直して」と依頼すれば、原因と修正方法をまとめて返してくれます。

新規ページ追加時 — 新しいテンプレート(記事、商品、店舗など)を追加するときは、必ず Rich Results Test で 1 URL ぶん検証してから本番反映します。テンプレートのミスは全ページに波及するので、リリース前のチェックが最重要です。

サイト構造変更時 — URL 構造を変更したり、サイトリニューアルを行ったときは、構造化データ内の URL(logo、sameAs、author URL など)も古いままになっていないか必ず Claude Code に確認させましょう。「全ページの JSON-LD を読んで、404 になっている URL がないかチェックして」と頼めば自動でスキャンしてくれます。

<Quiz question="Product スキーマに価格を入れるとき、最も重要なルールは?" options={["ページに表示されている価格と完全に一致させる","競合より安い価格を入れて目立たせる","税抜価格で統一する"]} answer={0} />

<Quiz question="FAQPage スキーマで Q&A を構造化するとき、Q&A はどこに書くべき?" options={["JSON-LD と HTML 本文の両方に書く(ユーザーにも見える状態にする)","JSON-LD だけに書けば十分(HTML には書かなくていい)","HTML だけに書けば Google が自動で構造化する"]} answer={0} />

<Checklist id="seo-ch4-2" items={["/seo schema で現状のスキーマを確認した","Organization スキーマをトップページに追加した","主要なページタイプ(記事 / 商品 / FAQ / 店舗)に応じたスキーマを 1 つ以上追加した","Rich Results Test で全ページのエラーがゼロになった","表示と構造化データの内容が一致していることを確認した"]} />

次のステップ