关于 seo-maps
seo-maps 是面向本地商家的 SEO 技能,用于检查企业在地图平台上的呈现,涵盖免费 API 检查及 DataForSEO、Google Maps Platform 分析。
主要功能
- 01跨平台 NAP 信息核验
- 02本地竞争对手地图分析
- 03地理网格排名追踪
- 04GBP 与评论审计
- 05生成 LocalBusiness JSON-LD
适用场景
- 01比较企业在各地图平台的资料
- 02测量不同位置的本地排名变化
- 03分析一定半径内的竞争者
MCP 相关
它会检测是否有 DataForSEO MCP 工具,并据此选择分析能力;可使用其商家列表、Maps SERP 和评论数据。
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ agricidaniel/ codex-seo --skill seo-maps安装后在 Claude Code 中输入/seo-maps确认已加载。
附带文件LICENSE.txt
详细介绍
地图情报(2026 年 3 月)
共享数据缓存
步骤 0 —— 检查共享数据缓存:
开始收集之前,检查 .seo-cache/ 中是否有相关 SEO 技能的可复用上下文。
参考:../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 时的页面级上下文 -
如果找到:解析并使用明确有效的字段(注明“正在使用来自 [date] 的缓存 [X]”)
-
如果缺失、损坏或不相关:继续收集新证据
-
如果用户说“refresh”或“re-run”:忽略缓存读取,并在写入时覆盖
面向本地商家的地图平台分析。通过外部 API 评估商家在 Google Maps、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+ |
三层能力检测
在进行任何分析之前,检测可用的能力层级:
层级 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 帖子活跃度、问答数据、Tripadvisor/Trustpilot 评论。
加载: references/maps-api-endpoints.md
层级 2(DataForSEO + Google Maps Platform)
检测: 层级 1 可用,且环境中有 Google Maps API 密钥。
能力: 包含层级 1 的全部功能,另加 Google Places 详情、实时商家状态、AI 驱动的地点摘要、照片分析。
注意: Google ToS 将存储范围限制为仅 place_id。经纬度最多缓存 30 天。
始终在分析开始时告知用户检测到的层级。
地理网格排名跟踪(层级 1+)
模拟从多个 GPS 坐标执行 Google Maps 搜索,以展示不同地理区域中的排名变化。需要 DataForSEO。
加载: references/maps-geo-grid.md,了解算法、SoLV 公式和热力图格式。
加载: references/maps-api-endpoints.md,了解 Maps SERP 端点详情。
工作流
- 对商家地址进行地理编码,获取中心经纬度
- 使用 Haversine 偏移公式生成网格点(默认:7x7,半径 5km)
- 显示费用估算,并在继续操作前请求确认
- 针对每个网格点,使用
location_coordinate发起 DataForSEO Maps SERP API 调用 - 查找目标商家在各点的排名
- 计算 SoLV:
(top_3_count / total_points) * 100 - 在输出中渲染 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 Business Profile 质量和排名的 25 个字段。
加载: references/maps-gbp-checklist.md,查看完整清单和评分标准。
Tier 1 工作流
- 通过 DataForSEO My Business Info API 获取商家资料(使用关键词或 CID)
- 将 API 响应字段映射到 25 项字段清单
- 为每个字段评分:已填写且已优化 = 2 分,已填写 = 1 分,缺失 = 0 分
- 应用行业专属权重系数
- 归一化为 0-100 分
Tier 0 工作流
- 通过 WebFetch 获取商家网站
- 提取可见的 GBP 信号(地图嵌入、地点引用、评价组件)
- 根据可检测到的信号应用静态清单
- 将无法检测的字段标记为“未知(需要 DataForSEO 提供实时数据)”
评价情报(Tier 1+)
跨平台评价分析:增长速度、情感倾向、评分分布、虚假评价检测。
参考: references/local-seo-signals.md 中的基准(与 seo-local 共用)。
工作流
- 通过 DataForSEO Reviews API 获取 Google 评价(按最新发布排序)
- 计算评价增长速度:过去 6 个月的月均评价数
- 检查 18 天规则(Sterling Sky):任何 3 周间隔都意味着排名风险
- 分析评分分布:健康的分布呈钟形,且偏向 5 星
- 计算商家回复率:已回复评价数 / 评价总数
- 获取 Tripadvisor 和 Trustpilot 评价(如果有)
- 制作跨平台对比表
虚假评价检测信号
评价符合以下 2 项或更多模式时,予以标记:
- 时间统一(多条评价发布于同一天或同一小时)
- 评价者账号历史记录有限或仅发布过一条评价
- 地理位置不一致(评价者所在位置与商家位置不符)
- 只有 5 星评价的增长速度突然飙升(相较于历史基线)
- 多条评价的文本完全相同或近乎相同
- 评价数量突然激增,但没有相应的营销活动
竞争对手半径地图(Tier 0+)
识别并分析指定半径范围内的竞争对手。
Tier 0(Overpass API)
加载: references/maps-free-apis.md,查看查询模板。
- 对商家地址进行地理编码
- 查询 Overpass API,查找半径范围内具有相同 OSM 标签的商家
- 解析结果:名称、地址、电话、网站、距中心点的距离
- 按距离排序,并以竞争格局表格呈现
Tier 1(DataForSEO)
- 使用 Maps SERP API,结合商家关键词和地点
- 提取排名前 20 的竞争对手及其完整资料数据
- 对比:评分、评价数量、类别、照片、属性
- 计算竞争密度分数:每平方公里的竞争对手数量
跨平台 NAP 核验(Tier 0+)
检查商家在 Google、Bing Places、Apple 和 OSM 上的列表信息是否一致。
工作流
- 在每个平台上搜索商家名称:
- Google:根据 GBP 数据或 Maps SERP 结果推断
- Bing:
WebFetch https://www.bing.com/maps?q=BUSINESS+NAME+LOCATION - Apple:手动检查(没有公共 API——建议使用 Apple Business Connect,网址为 businessconnect.apple.com)
- OSM:通过 Overpass 或 Nominatim 搜索
- 从每个来源提取 NAP(名称、地址、电话)
- 比较一致性:完全匹配、部分匹配、缺失或冲突
- 将差异标记为:严重(名称不匹配)、高(地址不匹配)、中(电话不匹配)
- 建议认领尚未认领的资料
架构生成(Tier 0+)
根据收集的数据生成 LocalBusiness JSON-LD 标记。
参考: references/local-schema-types.md 中的行业子类型(与 seo-local 共用)。
工作流
- 确定最适合该行业的具体架构子类型
- 填写必需属性:
@type、name、address、image - 添加推荐属性:
telephone、url、geo、openingHoursSpecification、priceRange - 为多地点业务添加策略性属性:
branchOf、areaServed、sameAs - 如果有评论数据,则添加
aggregateRating - 输出可直接用于实施的有效 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,包含:
- 地图健康评分:XX/100,附维度细分表
- 检测到的能力等级(Tier 0 或 Tier 1),并说明可用功能
- 地理网格热力图(Tier 1):ASCII 网格,包含 SoLV 百分比和平均排名
- GBP 资料审核:按字段评分,并采用行业专属权重
- 评论情报:增长速度图表、评分分布、回复率、跨平台对比
- 竞争对手概况:半径范围内的数量、评分/评论数最高的前 5 名、竞争密度
- 跨平台存在情况:Google/Bing/Apple/OSM 商家信息状态
- 架构建议:生成 LocalBusiness JSON-LD(如缺失或不完整)
- 优先级排序的前 10 项行动(Critical > High > Medium > Low)
- 费用报告:分析期间消耗的 DataForSEO 积分(仅 Tier 1)
- 限制免责声明:说明当前等级下无法评估的内容
跨技能委派
- 网站页面内本地信号:建议使用
/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/,请将其添加进去。