seo-local について
seo-local は、ローカルビジネスのページを対象とする条件付き SEO 監査スキルです。構造化された場所データと表示情報を確認し、ユーザー確認済みデータに基づいてスキーマ修正案を作成できます。
主な機能
- 01LocalBusiness JSON-LD の確認
- 02表示される NAP 情報の整合性確認
- 03座標と営業時間の確認
- 04サービス提供地域のマークアップ確認
- 05Google Business Profile との整合性に関する助言
活用シーン
- 01店舗ページのスキーマ監査
- 02電話番号や住所の不一致の特定
- 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)、ローカルビジネスのページのみを対象にします。
- LocalBusiness スキーマ:必須プロパティ(
name、address(PostalAddress)、telephone)を備えたLocalBusiness(またはRestaurant、Dentistなどの適切なサブタイプ)の JSON-LD ブロックがあること。 - NAP の一貫性:ページ内で表示される名前/住所/電話番号が(ヘッダー、フッター、問い合わせブロックで)一致し、スキーマの値とも一致していること。表記の揺れや古い電話番号がないこと。
- 地理座標:
geo(latitude/longitudeを含むGeoCoordinates)が存在し、記載された住所として妥当であること。 - 営業時間:
openingHoursSpecificationが存在し、dayOfWeek、opens、closesを含む構造化データになっており、表示されている営業時間とも一致していること。 - サービス提供地域:サービス提供地域型のビジネスでは、店舗の
PostalAddressの代わりに、またはそれと併せてareaServedを宣言すること。 - GBP との整合性(参考):NAP、カテゴリ、営業時間は Google Business Profile と一致させる必要があります。このツールは GBP を読み取れないため、参考情報のみです。
修正
- 自動:ユーザー確認済みの NAP、営業時間、地理情報、サービス提供地域から、安定した
@idを含む完全で有効なLocalBusinessJSON-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 スキーマのないローカルページ(statusfail、severity 4、fixable: auto、axisboth、confidenceestablished)。evidence.observedには、対応するld+jsonがない状態で表示されている住所/電話番号を引用します。verification.reproduceでは上記のバリデーターを実行します。M19.nap.inconsistent— フッターの電話番号がスキーマのtelephoneと異なる(statuswarn、severity 4、fixable: proposed、axisboth、confidencedirectional)。evidence.observedには両方の文字列を引用します。dom_assertで検証します。M19.hours.missing— 営業時間が表示されているにもかかわらず、openingHoursSpecificationがない(statuswarn、severity 4、fixable: auto、axisboth、confidenceestablished)。 各所見では、evidence.observedにページ上の内容を引用します。expected_impactは、信頼度タグ付きの範囲で示します(根拠のないパーセンテージは不可)。
Honesty
- 一貫した NAP と構造化された場所データは、ローカルパック/マップおよび AI による場所に関する回答に対する 確立された シグナルです。ただし、ページ上での 近接性/ランキング向上は保証しません。ローカルパックを左右する主な要因(近接性、GBP シグナル、レビュー)はページの DOM の範囲外であり、参考情報として扱います。
- 正確で検証済みの GBP がなければ、
geo/openingHoursSpecificationを追加しても、それだけでローカルランキングが 向上することはありません。確実な効果として提示しないでください。 - 住所から未検証のジオコーディングで座標を推測し、事実として提示しないでください。未確認の値には
TODOと記載します。