mcpField
S
seo-local

seo-local

github.com/hainrixzマーケティング・グロース80206 回インストール6 日前に更新
リポジトリ

seo-local について

seo-local は、ローカルビジネスのページを対象とする条件付き SEO 監査スキルです。構造化された場所データと表示情報を確認し、ユーザー確認済みデータに基づいてスキーマ修正案を作成できます。

主な機能

  1. 01LocalBusiness JSON-LD の確認
  2. 02表示される NAP 情報の整合性確認
  3. 03座標と営業時間の確認
  4. 04サービス提供地域のマークアップ確認
  5. 05Google Business Profile との整合性に関する助言

活用シーン

  1. 01店舗ページのスキーマ監査
  2. 02電話番号や住所の不一致の特定
  3. 03構造化された営業時間と表示内容の照合

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/hainrixz/claude-seo-ai --skill seo-local

インストール後、Claude Code で/seo-localを入力して読み込まれたか確認します。

詳細

seo-local(M19)

ローカルページは、一貫性のある機械可読な場所データがなければ成り立ちません。条件付きモジュール:ページがローカルビジネス(店舗、サービス提供地域、複数拠点、問い合わせ/所在地ページ)に分類された場合のみ実行します。参照先:references/schema-tier1.md(LocalBusiness の行)。

入力

ディスパッチエンベロープで指定された PageSnapshot を使用します。<run_dir>/pages/<slug>.json から parsed(jsonld[]、text_sample、地図用の iframes)を読み込み、エンベロープから vertical を読み込みます。逐語的な証拠を確認するには、pages/<slug>.html を Grep します。サイトのアーティファクトは <run_dir>/site/{robots.json,sitemaps.json,discovery.json} にあります。audit.mjs がすでに出力した決定論的な検出結果は <run_dir>/findings.deterministic.json に記載されています。これらの ID を再出力せず、モデル判定による検出結果のみを追加してください。スナップショットがない状態で URL/パスを直接指定して呼び出された場合は、まず node "${CLAUDE_PLUGIN_ROOT}/scripts/snapshot.mjs" <target> --out "${CLAUDE_PLUGIN_DATA}/runs" を実行し、出力されたスナップショットのパスを使用します。

監査

PageSnapshot を使用し(render.used が none ではない場合は parsed_rendered、それ以外は parsed)、ローカルビジネスのページのみを対象にします。

  1. LocalBusiness スキーマ:必須プロパティ(name、address(PostalAddress)、telephone)を備えた LocalBusiness(または Restaurant、Dentist などの適切なサブタイプ)の JSON-LD ブロックがあること。
  2. NAP の一貫性:ページ内で表示される名前/住所/電話番号が(ヘッダー、フッター、問い合わせブロックで)一致し、スキーマの値とも一致していること。表記の揺れや古い電話番号がないこと。
  3. 地理座標:geo(latitude/longitude を含む GeoCoordinates)が存在し、記載された住所として妥当であること。
  4. 営業時間:openingHoursSpecification が存在し、dayOfWeek、opens、closes を含む構造化データになっており、表示されている営業時間とも一致していること。
  5. サービス提供地域:サービス提供地域型のビジネスでは、店舗の PostalAddress の代わりに、またはそれと併せて areaServed を宣言すること。
  6. GBP との整合性(参考):NAP、カテゴリ、営業時間は Google Business Profile と一致させる必要があります。このツールは GBP を読み取れないため、参考情報のみです。

修正

  • 自動:ユーザー確認済みの NAP、営業時間、地理情報、サービス提供地域から、安定した @id を含む完全で有効な LocalBusiness JSON-LD ブロックを生成します。このブロックは fix 用の差分です。
  • NAP/営業時間の不一致:提案 — 不一致と修正案を提示し、項目ごとに承認できるようにします(どの値が正しいかをツールが判断することはできません)。
  • GBP との整合性:参考情報 — ツールから書き込むことはありません。 住所、電話番号、座標、営業時間を決して捏造しないでください。ユーザーに確認するか、注入前にユーザーが記入できるよう、明確な TODO プレースホルダーを残してください。

検証

  • オフライン:node "${CLAUDE_PLUGIN_ROOT}/scripts/validate-jsonld.mjs" --snapshot <pages/<slug>.json>(または --url <u>)(schema_validator) — JSON の妥当性と必須の LocalBusiness プロパティを検証し、dom_assert で表示されている NAP がスキーマと一致することを確認します。
  • Tier 1:Google Rich Results Test/schema.org バリデーターでリッチリザルトの対象となることを確認します。データティア(または GBP)を利用できない場合、ステータスは needs_api とし、決して誤って pass にしないでください。

Findings

schema/finding.schema.json に従って所見を出力します。ローカルページ以外では not_applicable(重大度 0)、ローカルページでは重大度 4、軸は both です。重大度の方針:5 は、サイト/テンプレートの範囲における、壊滅的で適格性を失わせる事実に限定されます。4 は重大、3 は中程度、2 は軽微、1 は表面的、0 は情報提供のみです。有効なカテゴリにおける established の重大度 5 の fail のみが、スコアの上限を設定できます(references/scoring-model.md)。例:

  • M19.localbusiness.missing — LocalBusiness スキーマのないローカルページ(status fail、severity 4、fixable: auto、axis both、confidence established)。evidence.observed には、対応する ld+json がない状態で表示されている住所/電話番号を引用します。verification.reproduce では上記のバリデーターを実行します。
  • M19.nap.inconsistent — フッターの電話番号がスキーマの telephone と異なる(status warn、severity 4、fixable: proposed、axis both、confidence directional)。evidence.observed には両方の文字列を引用します。dom_assert で検証します。
  • M19.hours.missing — 営業時間が表示されているにもかかわらず、openingHoursSpecification がない(status warn、severity 4、fixable: auto、axis both、confidence established)。 各所見では、evidence.observed にページ上の内容を引用します。expected_impact は、信頼度タグ付きの範囲で示します(根拠のないパーセンテージは不可)。

Honesty

  • 一貫した NAP と構造化された場所データは、ローカルパック/マップおよび AI による場所に関する回答に対する 確立された シグナルです。ただし、ページ上での 近接性/ランキング向上は保証しません。ローカルパックを左右する主な要因(近接性、GBP シグナル、レビュー)はページの DOM の範囲外であり、参考情報として扱います。
  • 正確で検証済みの GBP がなければ、geo/openingHoursSpecification を追加しても、それだけでローカルランキングが 向上することはありません。確実な効果として提示しないでください。
  • 住所から未検証のジオコーディングで座標を推測し、事実として提示しないでください。未確認の値には TODO と記載します。

コメント