mcpField
S
seo-maps

seo-maps

github.com/agricidanielマーケティング・グロース89474 回インストール2 週間前に更新
リポジトリ

seo-maps について

seo-mapsは、地図プラットフォーム上での事業者の掲載状況を調べるローカルSEOスキルです。無料APIの確認からDataForSEO、Google Maps Platformを使う分析まで扱います。

主な機能

  1. 01プラットフォーム間のNAP照合
  2. 02地域の競合マッピング
  3. 03地域グリッド順位追跡
  4. 04GBPとレビューの監査
  5. 05LocalBusiness JSON-LD生成

活用シーン

  1. 01地図サービス間の事業者情報の比較
  2. 02地点ごとのローカル順位変動の測定
  3. 03一定範囲内の競合状況の分析

MCP 対応

利用可能なDataForSEO MCPツールを検出して分析機能を選び、事業者リスト、Maps SERP、レビューのデータを利用できます。

インストール

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

$npx skills add https://github.com/agricidaniel/codex-seo --skill seo-maps

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

同梱ファイルLICENSE.txt

詳細

Maps Intelligence(2026年3月)

共有データキャッシュ

ステップ 0 -- 共有データキャッシュを確認します:

情報を収集する前に、関連する SEO スキルから再利用できるコンテキストがないか、.seo-cache/ を確認します。 スキーマと依存関係マップについては、../seo/references/shared-data-cache.md を参照してください。

次のキャッシュファイルが存在する場合は確認します:

  • .seo-cache/site-meta.json:ドメイン、ビジネスタイプ、業界、クロールのコンテキスト

  • .seo-cache/audit-scores.json:過去の全体監査での優先事項

  • .seo-cache/pages/{url-slug}/page-analysis.json:URL が指定されている場合のページレベルのコンテキスト

  • 見つかった場合:明らかに有効なフィールドを解析して使用します(「キャッシュされた[X]を[日付]から使用」と記録します)

  • 見つからない、破損している、または関連性がない場合:新たな根拠に基づいて続行します

  • ユーザーが「refresh」または「re-run」と指示した場合:キャッシュの読み込みを無視し、書き込み時に上書きします

地域ビジネス向けのマッププラットフォーム分析です。外部 API を使って、Google マップ、Bing Places、Apple Maps、OpenStreetMap 上でのビジネスの表示状況を評価します。

seo-local との境界: このスキルは API を介してマッププラットフォーム上のビジネスを分析します。seo-local は HTML の取得を介してウェブサイト上のローカル SEO シグナルを分析します。seo-local のオンページ分析を重複して行わないでください。ウェブサイトレベルの確認には /seo local <url> を推奨してください。


クイックリファレンス

コマンド内容ティア
/seo maps <url>マップ掲載状況の全体監査(ティアを自動選択)0+
/seo maps grid <keyword> <location>地理グリッド順位スキャン(7x7、デフォルトはキーワード 1 件)1+
/seo maps reviews <business> <location>プラットフォーム横断のレビュー分析1+
/seo maps competitors <keyword> <location>競合の範囲マッピング0+
/seo maps nap <business-name>プラットフォーム横断の NAP 確認0+
/seo maps schema <business-name>データから LocalBusiness JSON-LD を生成0+
/seo maps gbp <business> <location>GBP の充実度監査1+

3 段階の機能検出

分析を行う前に、利用可能な機能ティアを検出します:

ティア 0(無料)

検出方法: DataForSEO MCP ツールが利用できません。 機能: Overpass API による競合の検出、Geoapify による POI 検索、Nominatim によるジオコーディング、静的な GBP チェックリスト、スキーマ生成、プラットフォーム横断の NAP ガイダンス。 読み込み: references/maps-free-apis.md

ティア 1(DataForSEO)

検出方法: business_data_business_listings_search MCP ツールが利用できます。 機能: ティア 0 のすべてに加え、地理グリッド順位追跡、リアルタイム GBP プロフィール監査、レビュー分析(投稿頻度、センチメント、分布)、GBP 投稿のアクティビティ、Q&A データ、Tripadvisor/Trustpilot のレビュー。 読み込み: references/maps-api-endpoints.md

ティア 2(DataForSEO + Google Maps Platform)

検出方法: ティア 1 が利用可能で、環境に Google Maps API キーが設定されています。 機能: ティア 1 のすべてに加え、Google Places の詳細情報、ビジネスのリアルタイム状況、AI による場所の要約、写真分析。 注記: Google の利用規約では、保存できるのは place_id のみです。緯度/経度のキャッシュ期間は最大 30 日です。

分析の開始時に、検出されたティアを必ずユーザーに伝えてください。


地理グリッド順位追跡(ティア 1 以上)

複数の GPS 座標から Google マップ検索をシミュレートし、地理的な範囲内での順位の変動を表示します。DataForSEO が必要です。

読み込み: アルゴリズム、SoLV の計算式、ヒートマップ形式については references/maps-geo-grid.md を読み込みます。 読み込み: Maps SERP エンドポイントの詳細については references/maps-api-endpoints.md を読み込みます。

ワークフロー
  1. ビジネスの住所をジオコーディングして中心の緯度/経度を取得します
  2. Haversine オフセット計算式を使ってグリッドポイントを生成します(デフォルト:7x7、半径 5km)
  3. 続行する前に、費用の見積もりを表示して確認を求めます
  4. 各グリッドポイントの location_coordinate を指定して、DataForSEO Maps SERP API を呼び出します
  5. 各ポイントで対象ビジネスの順位を確認します
  6. SoLV を計算します:(top_3_count / total_points) * 100
  7. 出力に ASCII ヒートマップを表示します
費用の警告(必須)

各地理グリッドスキャンの前に、次を表示してください:

Geo-Grid Scan: [keyword] at [location]
Grid: 7x7 (49 points) | Keywords: [N] | Est. cost: $[amount]
DataForSEO credits will be consumed. Proceed?

GBP プロフィール監査(Tier 1 推奨、Tier 0 は手動)

Google ビジネス プロフィールの品質とランキングに影響する25項目を監査します。

読み込み: 完全なチェックリストと採点方法については、references/maps-gbp-checklist.md を参照してください。

Tier 1 ワークフロー
  1. DataForSEO My Business Info API を使ってビジネスプロフィールを取得します(キーワードまたは CID)
  2. API のレスポンスフィールドを25項目のチェックリストに対応付けます
  3. 各項目を採点します:登録済み+最適化済み = 2点、登録済み = 1点、未登録 = 0点
  4. 業種別の重み係数を適用します
  5. 0~100のスケールに正規化します
Tier 0 ワークフロー
  1. WebFetch を使ってビジネスのウェブサイトを取得します
  2. 視認できる GBP の兆候(マップの埋め込み、場所への言及、レビューウィジェット)を抽出します
  3. 検出可能な兆候に基づいて静的チェックリストを適用します
  4. 検出できない項目には「不明(ライブデータには DataForSEO が必要)」と記載します

レビューインテリジェンス(Tier 1 以上)

複数プラットフォームのレビューを分析します:投稿頻度、感情、評価分布、不正レビューの検出。

参照: ベンチマークについては references/local-seo-signals.md を参照してください(seo-local と共有)。

ワークフロー
  1. DataForSEO Reviews API を使って Google のレビューを取得します(新しい順に並べ替え)
  2. レビュー投稿頻度を計算します:過去6か月間の月あたりのレビュー数
  3. 18日ルール(Sterling Sky)を確認します:3週間の空白がある場合はランキングリスクです
  4. 評価分布を分析します:健全な分布は、5つ星に偏った釣鐘型です
  5. オーナーの返信率を計算します:返信数 / レビュー総数
  6. Tripadvisor と Trustpilot のレビューを取得します(利用可能な場合)
  7. プラットフォーム間の比較表を作成します
不正レビューの検出シグナル

次のパターンのうち2つ以上に該当するレビューにフラグを付けます:

  • 投稿時期が均一(同じ日または時間帯に複数のレビュー)
  • レビュー投稿者のアカウントの履歴が少ない、またはレビューが1件のみ
  • 地理的な不整合(レビュー投稿者の所在地とビジネスの所在地の相違)
  • 過去の基準値に対して、5つ星レビューだけが急増
  • レビュー間でテキストが同一、または酷似
  • 対応するマーケティング活動がないのに投稿数が突然急増

競合半径マッピング(Tier 0 以上)

指定した半径内の競合を特定して分析します。

Tier 0(Overpass API)

読み込み: クエリテンプレートについては references/maps-free-apis.md を参照してください。

  1. ビジネスの住所をジオコーディングします
  2. Overpass API に問い合わせ、半径内で同じ OSM タグを持つビジネスを検索します
  3. 結果を解析します:名称、住所、電話番号、ウェブサイト、中心点からの距離
  4. 距離順に並べ、競合状況の表として提示します
Tier 1(DataForSEO)
  1. ビジネスのキーワードと所在地を使って Maps SERP API を利用します
  2. 詳細なプロフィールデータとともに上位20件の競合を抽出します
  3. 評価、レビュー数、カテゴリ、写真、属性を比較します
  4. 競合密度スコアを計算します:競合数 / km^2

プラットフォーム間のNAP検証(Tier 0 以上)

Google、Bing Places、Apple、OSM におけるビジネスリスティングの一貫性を確認します。

ワークフロー
  1. 各プラットフォームでビジネス名を検索します:
    • Google:GBP データまたは Maps SERP の結果から推定します
    • Bing:WebFetch https://www.bing.com/maps?q=BUSINESS+NAME+LOCATION
    • Apple:手動で確認します(公開 API はありません。businessconnect.apple.com の Apple Business Connect を推奨します)
    • OSM:Overpass または Nominatim で検索します
  2. 各情報源から NAP(名称、住所、電話番号)を抽出します
  3. 一貫性を比較します:完全一致、一部一致、欠落、または矛盾
  4. 不一致にフラグを付けます:重大(名称の不一致)、高(住所の不一致)、中(電話番号の不一致)
  5. 未登録のプロフィールのオーナー登録を推奨します

スキーマ生成(Tier 0 以上)

収集したデータから LocalBusiness JSON-LD マークアップを生成します。

参照: 業種別のサブタイプについては references/local-schema-types.md を参照してください(seo-local と共有)。

ワークフロー
  1. 業界に最も適したスキーマのサブタイプを特定します
  2. 必須プロパティを設定します:@type、name、address、image
  3. 推奨プロパティを追加します:telephone、url、geo、openingHoursSpecification、priceRange
  4. 複数拠点向けの戦略的なプロパティを追加します:branchOf、areaServed、sameAs
  5. レビューデータがある場合は aggregateRating を追加します
  6. 実装にそのまま使える有効な JSON-LD ブロックを出力します

自社に都合のよいレビューのマークアップは生成しないでください。Google は、事業者自身が作成した LocalBusiness のレビューのマークアップを無視します。ページに表示されている第三者のレビューのみをマークアップしてください。


参照ファイル

必要に応じてオンデマンドで読み込みます(起動時にすべて読み込まないでください)。

  • references/maps-api-endpoints.md:DataForSEO のエンドポイントの詳細、パラメーター、コスト
  • references/maps-free-apis.md:Overpass、Geoapify、Nominatim のクエリテンプレート
  • references/maps-geo-grid.md:グリッドアルゴリズム、SoLV の計算式、ヒートマップのレンダリング
  • references/maps-gbp-checklist.md:業界ごとの重み付けを含む 25 項目の GBP 監査
  • references/local-seo-signals.md:ランキング要因、レビューのベンチマーク(共通)
  • references/local-schema-types.md:業界別の LocalBusiness サブタイプ(共通)

出力

以下を含む MAPS-ANALYSIS-{domain}.md を生成します。

  1. Maps Health Score: XX/100 と各指標の内訳表
  2. 検出された機能ティア(Tier 0 または Tier 1)と利用可能な機能の説明
  3. ジオグリッドのヒートマップ(Tier 1):SoLV の割合と平均順位を含む ASCII グリッド
  4. GBP プロフィール監査:業界固有の重み付けによるフィールドごとの採点
  5. レビューインテリジェンス:推移グラフ、評価の分布、返信率、プラットフォーム間の比較
  6. 競合状況:半径内の件数、評価とレビュー数に基づく上位 5 件、競合の密度
  7. プラットフォーム間の掲載状況:Google/Bing/Apple/OSM への掲載ステータス
  8. スキーマの推奨事項:LocalBusiness の JSON-LD を生成します(不足または不完全な場合)
  9. 優先順位を付けた上位 10 件のアクション(Critical > High > Medium > Low)
  10. コストレポート:分析中に消費した DataForSEO クレジット(Tier 1 のみ)
  11. 制限事項に関する免責事項:現在のティアでは評価できなかった項目

スキル間の委任

  • ウェブサイトのオンページにおけるローカルシグナル:/seo local <url> を推奨します
  • AI 検索での可視性の全体分析:/seo geo <url> を推奨します
  • スキーマの検証と修正:/seo schema <url> を推奨します
  • ライブ SERP とキーワードのデータ:/seo dataforseo [command] を推奨します

エラー処理

状況対応
DataForSEO MCP が利用できないTier 0 に切り替えます。ユーザーに「DataForSEO が検出されませんでした。無料ティアで分析を実行します。ジオグリッドの追跡とレビューインテリジェンスを利用するには、DataForSEO 拡張機能をインストールしてください。」と伝えます。
Maps SERP で事業者が見つからないキーワードを指定して My Business Info を試します。それでも見つからない場合は、「この場所の Google Maps で事業者が見つかりませんでした。」と報告します。
ジオコーディングに失敗する(Nominatim)座標または、より詳細な住所をユーザーに求めます。
API のレート制限に達した制限を報告します。待機するか、ライブ方式ではなく標準(キュー)方式を使用するよう提案します。
レビューが見つからないレビューがゼロであることを報告します。18 日間隔を目標とするレビュー獲得戦略を推奨します。
複数拠点が検出された分析する拠点をユーザーに確認するか、拠点ごとのコスト見積もりを添えて一括モードを提案します。

共有データキャッシュへの書き込み

すべての作業が完了した後、ワークフローによって再利用可能な調査結果が得られた場合は、簡潔な JSON の要約を .seo-cache/ に書き込みます。 ../seo/references/shared-data-cache.md のスキーマと命名規則を使用し、少なくとも cache_type、analyzed_at、ソース URL/ドメイン、主な調査結果、問題点、推奨事項、ツールの制限事項を含めます。.gitignore に .seo-cache/ がない場合は追加します。

コメント