local-seo

Compare original and translation side by side

🇺🇸

Original

English
🇨🇳

Translation

Chinese

OpenSEO Local SEO

OpenSEO 本地SEO

Goal

目标

Work out why a business does or does not show up in Google Maps and the local pack near its customers, and what to fix first.
Use this when rankings depend on a physical location or service area. For national organic work, use
competitor-analysis
or
keyword-research
.
分析商家在客户周边的Google Maps和本地包中是否展示的原因,并确定首要修复事项。
当排名依赖于实体位置或服务区域时使用此工具。对于全国性自然搜索工作,请使用
competitor-analysis
keyword-research

Required inputs

必填输入

  • projectId
  • The business: name, or a
    cid
    /
    placeId
    (most reliable)
  • Its coordinate (latitude/longitude) — derive it from a
    search_local_businesses
    /
    get_local_serp_results
    row; only ask the user when derivation is ambiguous
  • One to three keywords customers actually search (e.g. "emergency plumber", not the brand name)
  • projectId
  • 商家信息:名称,或
    cid
    /
    placeId
    (最可靠)
  • 商家坐标(纬度/经度)——从
    search_local_businesses
    /
    get_local_serp_results
    的结果行中获取;仅当无法明确推导时才询问用户
  • 1-3个客户实际搜索的关键词(例如“emergency plumber”,而非品牌名称)

OpenSEO MCP tools

OpenSEO MCP工具

  • search_local_businesses
    : nearby listings, filterable by
    minRating
    ,
    minReviews
    , and
    isClaimed
    — use
    isClaimed: false
    to find unclaimed listings when prospecting. One call with the brand name as
    query
    and a wide radius returns category, rating, review count, claimed status, coordinates, and
    cid
    for every location of a chain — usually enough that per-location
    get_business_profile
    calls are unnecessary.
  • get_local_serp_results
    : the Maps/Local Finder result set near a coordinate. The rows carry
    cid
    and
    place_id
    — collect them once and reuse them everywhere below.
  • get_business_profile
    : the full profile for one business (hours, rating breakdown) when the
    search_local_businesses
    row isn't enough.
  • get_business_reviews
    : reviews with ratings, text, and whether the owner replied. Queued: a
    processing
    response returns a
    taskId
    — call again with it after 30-60 seconds, at no extra cost.
  • get_local_rank_grid
    : rank at every point of a grid around a coordinate, with each point's result count and #1 business. 3x3 is nine searches; only go to 5x5 when the service area is genuinely wide.
  • get_google_business_questions
    : Q&A on the profile (accepts
    cid
    /
    placeId
    ).
  • get_business_updates
    : posts published on the profile, with dates.
  • list_business_categories
    : valid category slugs for
    search_local_businesses
    .
  • search_local_businesses
    :周边商家列表,可通过
    minRating
    minReviews
    isClaimed
    筛选——开发潜在客户时使用
    isClaimed: false
    查找未认领的商家列表。一次调用中以品牌名称作为
    query
    并设置较大半径,可返回连锁店每个门店的分类、评分、评论数量、认领状态、坐标和
    cid
    ——通常这些信息已足够,无需再针对每个门店调用
    get_business_profile
  • get_local_serp_results
    :指定坐标周边的Maps/本地搜索结果集。结果行包含
    cid
    place_id
    ——收集一次后可在后续操作中重复使用。
  • get_business_profile
    :当
    search_local_businesses
    的结果行信息不足时,获取单个商家的完整资料(营业时间、评分细分)。
  • get_business_reviews
    :包含评分、文本内容以及商家是否回复的评论。若返回
    processing
    响应,则会提供
    taskId
    ——30-60秒后使用该
    taskId
    再次调用,无需额外费用。
  • get_local_rank_grid
    :指定坐标周边网格每个点的排名情况,包含每个点的结果数量和排名第一的商家。3x3网格对应9次搜索;仅当服务区域确实广阔时才使用5x5网格。
  • get_google_business_questions
    :商家资料上的问答内容(支持
    cid
    /
    placeId
    )。
  • get_business_updates
    :商家资料上发布的帖子及发布日期。
  • list_business_categories
    search_local_businesses
    可用的有效分类别名。

Workflow

工作流程

  1. Find the business. Given only a name or website,
    search_local_businesses
    (name as
    query
    , wide radius) locates the listing and yields its
    cid
    and coordinate. If it returns several locations, the business is a chain — see multi-location below.
  2. Run
    get_local_serp_results
    for the main keyword near the business coordinate. Record the top 3-5 competitors'
    cid
    /
    place_id
    and the user's own row.
  3. Compare the user's listing against the top two competitors: primary category, additional categories, review count, hours completeness, photo count, claimed status.
    search_local_businesses
    rows usually carry all of this; use
    get_business_profile
    for what they lack.
  4. Sanity-check each listing's website link (
    url
    /
    contact_url
    in the rows): it should deep-link to that location's page on the project domain, not a homepage or a stale domain. For broader on-page work, hand off to
    run_site_audit
    .
  5. Call
    get_business_reviews
    for the user and the strongest competitor. Look at review volume, recency, average rating, and how many reviews got an owner reply.
  6. Run
    get_local_rank_grid
    for the main keyword. Use the grid to separate "ranks at the storefront only" from "ranks across the service area", and each point's
    topResult
    to name who wins where the target doesn't.
  7. Add
    get_google_business_questions
    and
    get_business_updates
    when the profile basics are already competitive and the gap is engagement rather than setup.
  8. Turn the evidence into a prioritized list. Category and claim problems outrank posting cadence every time.
  1. 定位商家。若仅提供名称或网站,使用
    search_local_businesses
    (以名称作为
    query
    ,设置较大半径)查找商家列表并获取其
    cid
    和坐标。若返回多个门店,则该商家为连锁店——请查看下方多门店商家相关说明。
  2. 在商家坐标周边针对主关键词运行
    get_local_serp_results
    。记录排名前3-5的竞争对手的
    cid
    /
    place_id
    以及目标商家的结果行。
  3. 将目标商家列表与排名前两位的竞争对手进行对比:主分类、附加分类、评论数量、营业时间完整性、照片数量、认领状态。
    search_local_businesses
    的结果行通常包含所有这些信息;若有缺失,使用
    get_business_profile
    补充。
  4. 检查每个商家列表的网站链接(结果行中的
    url
    /
    contact_url
    ):应直接链接到项目域名下对应门店的页面,而非首页或过期域名。如需更全面的页面优化工作,移交至
    run_site_audit
    处理。
  5. 为目标商家和最强竞争对手调用
    get_business_reviews
    。查看评论数量、时效性、平均评分以及商家回复的评论占比。
  6. 针对主关键词运行
    get_local_rank_grid
    。通过网格区分“仅门店位置排名”和“全服务区域排名”,并根据每个点的
    topResult
    确定目标商家未胜出区域的领先者。
  7. 当商家资料基础信息已具备竞争力,差距在于互动性而非基础设置时,添加
    get_google_business_questions
    get_business_updates
    的调用。
  8. 将分析证据转化为优先级修复列表。分类和认领问题的优先级始终高于发帖频率问题。

Multi-location businesses

多门店商家

Always build the profile snapshot table for the whole chain — one
search_local_businesses
call covers it. The per-location deep-dives (reviews, grid, posts, Q&A) are where cost scales:
  • 5 locations or fewer: deep-dive them all.
  • More than 5: present the snapshot table, then ask the user (AskUserQuestion) which 1-3 locations to deep-dive. Pick sensible defaults to recommend — e.g. the weakest profile in the densest market.
始终为整个连锁店构建资料快照表——一次
search_local_businesses
调用即可覆盖所有门店。针对单个门店的深度分析(评论、网格、帖子、问答)会增加成本:
  • 5家及以下门店:对所有门店进行深度分析。
  • 超过5家门店:先展示快照表,然后询问用户(AskUserQuestion)选择1-3家门店进行深度分析。推荐合理的默认选项——例如,最密集市场中资料最弱的门店。

Output format

输出格式

Start with:
  • Profile snapshot (category, rating, reviews, claimed) — one row per location for chains
  • Where visibility drops off, per the grid
  • The one fix to do this week
Then include:
SignalThis businessBest competitorGapAction
Cover: categories, reviews (count, recency, owner replies), hours and profile completeness, listing website links, Maps coverage from the grid, Q&A and posting hygiene.
开头包含:
  • 资料快照(分类、评分、评论数、认领状态)——连锁店每个门店占一行
  • 根据网格数据显示可见性下降的区域
  • 本周需完成的一项修复任务
随后包含:
指标目标商家最佳竞争对手差距行动
涵盖:分类、评论(数量、时效性、商家回复)、营业时间与资料完整性、列表网站链接、网格显示的Maps覆盖范围、问答与发帖规范。

Guardrails

注意事项

  • Do not run a 5x5 grid, or grids for several keywords, without telling the user the cost first — every point is a paid SERP call.
  • Match businesses by
    cid
    or
    place_id
    when you have one. Name matching collides with chains and similarly named businesses.
  • A missing rank at a grid point means the business wasn't among the results returned there. Read it with that point's
    resultsCount
    : a full result set means outranked; a near-empty one means a sparse SERP, not proof of invisibility.
  • Do not infer local-pack strength from national organic metrics.
  • Never recommend review gating, fake reviews, or keyword-stuffed business names.
  • A grid centered on the wrong place is worse than no grid — confirm the coordinate matches the storefront before spending grid credits.
  • 在未告知用户成本前,请勿运行5x5网格或针对多个关键词运行网格——每个网格点对应一次付费SERP调用。
  • 若有
    cid
    placeId
    ,请通过它们匹配商家。名称匹配可能与连锁店或同名商家冲突。
  • 网格点无排名意味着商家未出现在该点的结果中。需结合该点的
    resultsCount
    解读:结果集完整表示被超越;结果集几乎为空表示SERP数据稀疏,而非完全不可见。
  • 请勿从全国性自然搜索指标推断本地包的竞争力。
  • 绝不推荐评论拦截、虚假评论或关键词堆砌的商家名称。
  • 错误位置的网格比没有网格更糟——在消耗网格调用额度前,请确认坐标与门店位置匹配。