← 返回专栏
· 1 分钟阅读

同一个关键词、四个市场、不同的 Google 排名:一次真实的本地化测试

一个没有钉死市场的排名数字就是谣言。我们用同一个 SERP API 对同一个关键词跑了四次,只改 gl/hl(美国、英国、德国、印度)——top-10 洗牌了。真实代码、完整结果表、什么稳住了、什么动了、以及让排名数据可信的规则。外加 API 也修不了的数据中心 IP 注意事项。

TL;DR

排名位置不是页面的属性,是页面在某个市场里的属性。我们实测:同一关键词、同一 API、只改 gl/hl 跑美英德印四个市场,14 个出现域名里只有 3 个在每个市场稳住 top-10;一个域名在美国第 5、印度第 8;另一个在美国 top-10 消失、印度第 4。落地的规则:每次调用钉死 gl/hl、写进缓存 key、每个数字带市场标签、永不跨市场比较。还有:钉死的 API 调用也只是市场归一化的——你的出口 IP 仍在 bending 真实用户看到的东西。

你抓过的每个排名数字都带一个看不见的后缀:对某个人、在某地。剥掉这个后缀,数字就成了谣言——看起来精确、无法证伪、没法用来比较。

我们跑了证明这件事的实验。一个关键词、一个 API、四个市场、其他全部钉死。代码、原始表格、以及从中掉出来的工作规则,都在下面。

实验设置

工具不重要——就是每个市场一次 API 调用,走带缓存的 SERP 层,只有 gl/hl 在变:

def serp(q, gl, hl):
    body = json.dumps({"q": q, "gl": gl, "hl": hl, "num": 10}).encode()
    req = urllib.request.Request(
        "https://google.serper.dev/search", data=body,
        headers={"X-API-KEY": os.environ["SERPER_API_KEY"],
                 "Content-Type": "application/json"})
    with urllib.request.urlopen(req, timeout=20) as r:
        return [x["link"] for x in json.load(r).get("organic", [])]

kw = "python seo tools"
markets = [("us","en"), ("gb","en"), ("de","de"), ("in","en")]

四次调用,每次约 2 秒、1 credit。然后把结果对齐成位置网格。

结果

python seo tools,各市场 top-10 域名位置,每市场一次:

domain                              us    gb    de    in
www.reddit.com/r/TechSEO/...        1     1     1     1
www.python.org/success-stories      2     3     3     2
github.com/sethblack/python-seo     3     2     2     3
www.causalfunnel.com/blog/...       4     4     5     5
adver.tools/python/seo              5     6     4     8
sarataher.podia.com/...             6     5     6     6
www.youtube.com/watch?v=...         7     -     -     -
searchwilderness.com/free-seo...    8     7     7     9
serpapi.com/blog/python-seo-...     9     8     -     7
searchengineland.com/python-...     -     9     -     4
sourceforge.net/directory/seo       -     -     8     -
github.com/topics/seo-tools         -     -     9     -

- = 不在该市场 top-10。)

表格真正在说什么:

**三个域名是普适的。**Reddit 帖子、python.org、GitHub 仓库在四个市场都稳坐 1-3 位。头部 SERP 的现实是全局的——这就是为什么难度评分把强域名占据 top-3 当作核心信号。

位置 3 以下全是市场本地的。adver.tools 四个市场跑出 5 → 6 → 4 → 8。如果你的排名追踪器报了个不带市场标签的「第 5 位」,而上周跑的是美国、这周是印度——你刚刚「检测」到一次从未发生的下跌。

两个域名只存在于部分市场。searchengineland.com 在美国 top-10 缺席、在印度第 4。sourceforge 和 GitHub topic 页只在德国浮出来。「我们这个词在 top-10」这个说法,在说完哪里之前是不完整的——一个市场第 4、另一个市场隐身,是常态。

为什么会这样

本地化不是 Google 把结果翻译一遍。它是一个排名输入:

  1. **地理定向的相关性。**页面强度部分是市场专属的——外链、互动、新鲜度,每个地区评估的结果都不同。
  2. 语言过滤。de/de 那轮奖励德语页面、压英语-only 页面(反过来同理)。hlgl 一样重要。
  3. **市场专属竞争池。**试图排名的页面集合每个市场不同。印度的 SEO 内容池不是德国的。

市场层之上还有个性化层——IP、历史、设备——API 把它归一化掉了,但真实用户还背着。这就引出下面的注意事项。

数据中心注意事项

钉死 gl/hl 让你的数据可复现。不会让它等同于该市场真实用户看到的。

我们在做 Bing 搜索量工具时用不舒服的方式验证过这一点:从数据中心 IP 抓的 SERP,排名和目标市场真实用户拿到的对不上。同一引擎、同一关键词、不同观察点。你的出口 IP 本身就是一个位置信号,而数据中心 IP 是个非常反常的「用户」。

诚实的层级:

  1. API + 钉死 gl/hl——可复现、可比较,做评分和增量的正确仪器。关键词难度用这个。
  2. 同市场住宅核查——真实用户可能看到的;要花代理或手动抽查;在拿一个排名主张押一个季度之前值得做。
  3. 随便什么 IP 的裸抓——只有偶然才可复现。做实验行,做决策不行。

工作规则

从表格和注意事项里浓缩:

  1. **每次 SERP 调用钉死 gl/hl。**默认值是别人对你意图的猜测。
  2. **写进缓存 key。**美国响应当德国查询用是穿着效率外衣的数据污染——见缓存层文章
  3. 每个排名带市场标签。「第 5 位」不是事实;「第 5 位,gl=us, hl=en」才是。
  4. **同比比较。**周对周的增量只在同一市场内算数。跨市场比较是内容战略问题(「要不要打印度市场?」),不是追踪问题。
  5. **把排名当样本,不当真相。**每市场每周一次调用是一条趋势线,不是一次测量。一个数字要决定贵的事,就再跑一遍。

这套认知哪里不完美

  1. **一个关键词、一轮、四个市场。**同一市场设置下轮与轮之间也有方差——本测试隔离的是市场轴,不是时间轴。严格的方差研究要每市场重复 N 次。
  2. **API 归一化的 SERP。**这里的仪器是 SERP API,设计上就抹平了个性化。裸浏览器 SERP 的方差大概率比这张表更大,不是更小。
  3. **只测了 num=10。**深翻页(11-100 位)的市场差异本测试没碰。
  4. **四个市场不是全世界。**美英德印覆盖了英语轴的分裂和一个非英语市场。CJK 市场行为又不一样——所以我们的工具链有 --zh 旗标,带自己的 gl=cn, hl=zh-CN 默认值。

放进工作流

  1. 获取钉死市场的 SERP,走同一个缓存入口
  2. 按市场评分——一个词在一个市场容易、在另一个市场被锁死很正常;SERP 结构分析同样是市场本地的
  3. 查意图用同一批钉死的 SERP(意图分类
  4. 追踪每周按市场、新鲜调用、输出带市场标签

要点

「跨市场平均排名」和「不带市场的排名追踪」是同一个错误戴两顶帽子。上面这张表只是一个关键词加四次调用,里面已经装着一个「隐形的前 4」、一个 5 对 8、和唯一敢叫全局的 top-3。排名数据在你停止假装它普适的那一刻变得可信——钉死市场、给数字挂标签、同比比较。

FAQ

同一个关键词在不同国家的 Google 排名会不一样吗?

会,而且可测。在受控测试里——同一关键词、同一 SERP API、只改 gl/hl——美英德印四个市场的 top-10 有重叠但重排。14 个出现的域名里只有约 3 个在每个市场保持同一位置带;一个域名在位置 4 到 8 之间浮动,印度 top-10 里有两个域名在美国 top-10 完全不出现。本地化是排名输入,不是摆设性的平局决胜。

SERP API 里的 gl 和 hl 参数是什么?

gl 是 Google 用来给搜索定位的国家代码(如 us、gb、de、in),hl 是界面语言(如 en、de)。两者合起来定义你在采样哪个市场的排名。不传就由 API 或 Google 推断一个市场——通常从你的 IP——数据就不可复现。每次调用都钉死这两个参数,并写进缓存 key。

SERP API 能给出真实用户看到的准确排名吗?

不能,任何声称能的工具都在过度承诺。SERP API 返回的是从它自己基础设施出发的、确定性的、钉死市场的快照。做评分和对比它是正确的仪器,但真实用户的结果还会叠加 IP、搜索历史、个性化和设备的影响。把 API 排名当作分布的受控样本,不是分布本身。

为什么我的排名追踪显示大掉,真实用户却没感觉?

三个常见嫌疑:市场变了(这周跑的 gl/hl 和上周不同——要同比比较);SERP 形状变了(一个 PAA 框、视频轮播或新竞品进来,把自然位置整体下推,但真实流量没变);IP 层差异——数据中心出口 IP 看到的结果和住宅用户略有不同,这个错位我们在 Bing 上直接验证过。

想给自己的站点做同样的分析?

ZensInk Pro 把这个流程自动化了。一条命令,从种子词到内容计划。

查看 Pro →