← 返回专栏
· 3 分钟阅读

SERP难度评分:不用Ahrefs,用Python给关键词难度打分

Ahrefs 关键词难度是基于 DR 的黑盒,恰好在最要命的地方失效——品牌词。本文拆解一个四层 SERP 难度评分模型:结构评分、品牌指纹、截流难度、外链预算。真实命令、真实输出、真实局限。

TL;DR

SERP 难度评分优于基于 DR 的关键词难度,因为它评的是实际参与排名的页面而不是域名。本文走读一个四层 Python 实现:SERP 结构评分(页面类型、位置权重、信号修正项)、品牌词检测(三重指纹)、截流难度(只对可竞争席位重算)、外链预算(你到底需要多少条引用域)。数据全部来自免费额度:Serper.dev SERP + RDAP 域名年龄。

每个关键词难度工具都卖给你一个数字。Ahrefs KD、SEMrush KD%。看起来很权威。它们也是 SEO 圈最贵的蒙眼布。

两种翻车方式最常见:

翻车一:DR 盲区。 Ahrefs KD 很大程度上派生自排名页面的引用域。一个 DR-90 网站 2019 年发的、零新增外链的博文,会被当成一堵 DR-90 的墙。你跳过了本可以赢的关键词。

翻车二:看起来容易的品牌词。 正好相反。像 “semrush pricing” 这种品牌查询,返回的是官方自己的薄页面——结构上看起来很弱。朴素的结构评分会说它极其容易。你花一个月写了一篇永远排不过官方页的内容,因为 Google 把这个查询当导航型意图处理。

一个有用的难度分必须同时处理这两种情况。这是我从终端跑的四层 SERP 难度评分模型——建立在免费数据上,并且对自己的错误之处保持诚实。

数据层:你在给什么打分

输入刻意保持朴素:

  • SERP 数据——关键词的 top-10 自然结果,经 Serper.dev(免费 2,500 次/月)
  • 域名年龄——经 RDAP 查注册年份(免费、不限量)
  • 已知平台清单——reddit.com、youtube.com、medium.com、wikipedia.org 等拿固定权威分

每个关键词一次 API 调用。不需要 Ahrefs 订阅。

从 SERP 出发,每条结果按页面类型分类:

  • homepage(首页)——根域名在排名(有人把整个网站押在这个查询上)
  • dedicated(专题页)——专门为这个主题建的页面
  • inner(内页)——顺带提到这个主题的页面(覆盖相邻话题的博文、论坛帖)

这一步很关键,因为哥飞式页面类型折价模型:首页按满强度计,专题页打 65 折,随便的内页打 45 折。满屏内页的 SERP 是一扇没关的门。满屏首页的 SERP 是一堵墙。

第一层:结构评分——基础分 + 信号修正项

核心分是结果强度的位置加权平均。前排位置权重更高(第 1 位计 1.00,第 10 位计 0.37)。每条结果的强度 = 权威分 × 类型乘数 × 位置权重,平均后的 SERP 强度构成基础分(上限 60)。

然后信号修正项调整——首页拥挤度、生态成熟度、top-5 里的弱域名:

信号条件修正
homepage_crowded7+ 首页+18
homepage_heavy5+ 首页+10
no_homepages0 首页-5
mature_niche5+ 成熟专题页+14
established_niche3+ 成熟专题页+7
brand_dominated品牌 sitelinks + 3+ 平台+12
old_domains平均域名年龄 15 年++6
weak_top5top-5 里有弱域名最多 -15
new_domain_proof有 2 年内新域名-5
top3_fortresstop-3 全强+6

来一次真实运行——best project management software,一个多数人会觉得没法赢的词:

python3 -m zens_ink.kd "best project management software" --markdown
# KD Analysis: best project management software

**Score: 13.3/100** — Very Easy (极易)
- Base: 20.3 / modifiers: -7
- Recommendation: 蓝海词,优先创建内容抢占先机

## Link Budget (estimate)

| Track | Low | Mid | High |
|---|---|---|---|
| Editorial (quality links) | 10 | 16 | 24 |
| Directory (easy links) | 34 | 56 | 84 |

## SERP Structure

- Homepages: 0/10 · Dedicated: 7/10 · Inner: 2/10
- Platforms: 2/10 · Avg domain age: 22.0yr
- Weak domains in top-5: 3 · New domains (<2yr): 0

## Signal Modifiers

- no_homepages: -5
- established_niche: +7
- old_domains: +6
- weak_top5: -15

## Top 10 Breakdown

| # | Domain | Type | Authority | Year |
|---|---|---|---|---|
| 1 | www.icagile.com | inner | 0.35 | — |
| 2 | project-management.com | dedicated | 0.66 | 2000 |
| 3 | www.reddit.com | inner | 0.90 | — |
| 4 | www.paymoapp.com | dedicated | 0.35 | — |
| 5 | www.wrike.com | dedicated | 0.35 | — |
...

读一下这个 SERP 到底在说什么:零首页,三个结构薄弱的域名坐在 top-5,Reddit 排第 3。分数落到 13.3。“best project management software” 真是蓝海词吗?未必完全——局限一节再谈——但这个结构确实比 DR 类工具愿意承认的多出不少空间。第 1 名是一家认证机构的内页。那个席位是可以争的。

第二层:品牌指纹——抓住陷阱词

第一层有个致命缺陷,就是开头说的翻车二。品牌查询返回品牌自己的页面,结构上看起来弱。分数塌掉。你一头撞墙。

解法是三重指纹品牌检查:

  • F1 official_domain——同名官方域名坐在 top-3(精确/前缀/近复数匹配)
  • F2 brand_dominance——同一品牌的域名家族占据 10 席中的 2+ 席
  • F3 platform_ecosystem——应用商店 + 平台密度,或 3+ 平台页

两个以上指纹 = 品牌词。 正面排名被标记为几乎不可能,工具转向告诉你什么才有效:衍生查询。

真实运行:

python3 -m zens_ink.kd "notion templates" --json
{
  "keyword": "notion templates",
  "kd": 43.4,
  "label_en": "Medium",
  "is_brand_keyword": true,
  "brand_fingerprints": ["official_domain", "brand_dominance", "platform_ecosystem"],
  "brand_domain": "notion.com",
  "domains": ["www.notion.com", "www.reddit.com", "www.notioneverything.com",
              "www.pinterest.com", "www.notion.com", "www.youtube.com"]
}

三个指纹全部命中。notion.com 直接占两席,一个模板市场占据生态邻位,平台填满其余。输出不只说「难」——它说为什么(notion.com 拥有这个意图)以及换什么打法notion templates alternativenotion vs [竞品]notion templates review

第一层的 brand_dominated 修正项也会用这个信号处理非品牌词。对比 notion vs obsidian——一个对比型查询,品牌页面拥有意图(论坛、评测站、Reddit 在排名):指纹不凑够两个,品牌标记保持 false,这个词按正常的 Easy 机会打分,只吃一个 brand_dominated: +12 的小幅上修。查询里出现同样的品牌名,竞争现实完全不同。

第三层:截流难度——你能行动的那个数字

检测到品牌词后,有一个比第一分更重要的第二分:截流难度(entry difficulty)。逻辑是:剔除品牌自己的页面和平台固定位(Reddit、YouTube 什么词都排,你永远挤不掉它们),然后只对可竞争席位重算——外部网站现实里能拿的槽。

我找到的最有教育意义的例子。看一个官方页面看起来毫无还手之力的品牌查询会发生什么:

python3 -m zens_ink.kd "semrush pricing" --json
{
  "keyword": "semrush pricing",
  "kd": 1,
  "label_en": "Very Easy",
  "is_brand_keyword": true,
  "brand_fingerprints": ["official_domain", "brand_dominance"],
  "brand_domain": "semrush.com",
  "kd_entry": 3.7,
  "kd_entry_label_en": "Very Easy"
}

朴素结构评分是 100 分里的 1 分。一分。没有指纹层的话,这是一个难度工具能打印出的最危险的数字——semrush.com 自己的定价页统治着 SERP,它们是薄专题页,纯结构模型把它们读成软柿子。你会自信满满地建一个永远排不上去的页面。

品牌检查抓住了它:两个指纹,命中。然后截流分给你真正的读数——第三方席位(评测站、回答「semrush 值不值」的对比页)在 3.7/100 确实可以赢。可执行的结论不是「容易词」也不是「不可能词」,而是**「正面不可能,侧面很容易」**。做 semrush pricing reviewsemrush vs [替代品] 内容,别做 semrush 定价克隆页。

这就是为什么单个数字从来不够。同一个关键词合理地拥有两个难度分,哪个适用取决于你打算写哪种页面。

第四层:外链预算——把分数翻译成工作量

难度分告诉你多难。外链预算告诉你多少。最后一层把分数对着 Ahrefs 公开的 KD→引用域(top-10 进入)曲线插值,双轨输出:

  • Editorial(编辑型)——用值得被链接的内容挣来的链接
  • Directory(目录型)——容易的链接(收录页、profile),曲线显示同等效果需要约 3.5 倍数量

对一个有真实预算的衍生词跑一次:

python3 -m zens_ink.kd "shopify alternatives" --json
{
  "keyword": "shopify alternatives",
  "kd": 48.3,
  "label_en": "Medium",
  "brand_fingerprints": ["platform_ecosystem"],
  "link_budget": {
    "editorial": {"low": 79, "mid": 132, "high": 198},
    "directory": "≈3.5x editorial(易得链接需要更多数量才有同等效果)"
  },
  "domains": ["www.reddit.com", "www.reddit.com", "www.quora.com",
              "www.bigcommerce.com", "lovable.dev", "www.youtube.com",
              "www.salesforce.com", "blog.shift4shop.com", "www.forbes.com"]
}

中等难度,一个指纹(平台,但没有官方域名锁死),一个具体的决策取代了拍脑袋:你愿意为了进这个 top-10 建约 130 条引用域吗?对独立开发者,答案是不要——你刚省下一个季度。对有预算的团队,这是个周二下午。无论哪边,分数都终结了争论。

这个模型错在哪

诚实环节,因为每个难度工具都有错的地方,而大多数不会告诉你错在哪:

  1. 权威分是代理值,不是测量值。 没有外链数据。权威分来自已知平台清单和域名年龄。第一个例子里 Wrike 拿了 0.35(「未知」),因为 RDAP 没返回注册年份——wrike.com 是个主要 SaaS 品牌,模型低估了它。对商业大词的 20 分以下结果保持怀疑;RDAP 缺口叠加时,弱域名检测可能过度触发。

  2. 没有 sitelinks 信号。 Serper.dev 的自然结果不返回 sitelinks 字段,所以品牌检测用域名家族占位做代理。它有效(上面 semrush 和 notion 的案例都正确命中),但只有单一强官方页、无家族占位的品牌可能只靠 F1 漏网——这正是触发品牌标记需要两个指纹 companion 的原因。

  3. 搜索量是可选的且常为零。 Bing 搜索量查询对长尾开发者词经常返回无数据,所以量级修正项经常不生效。评分仍然可用——它建立在结构上,不在量级上——但超高量级检测是尽力而为。

  4. 它仍然是估算。 外链预算在每份报告里都印着「estimates for planning, not a ranking guarantee」,因为这是事实。Google 排名的是页面,不是表格。

放进工作流

难度评分是管线里的一站,不是整条火车:

  1. 发现——用 keyword_research 从 Google Autocomplete 挖长尾,或Reddit 蓝海挖掘
  2. 验证需求——经 Bing Webmaster API 查搜索量
  3. 评难度——本模型(zens_ink.kd),输出结构分、品牌检查、截流分、外链预算
  4. 归组赢家——把过关的词聚类成主题权威地图
  5. 查意图——确认 SERP 要的确实是你的内容类型(SERP 分析搜索意图

整条链跑在免费额度上、零依赖:

pip install git+https://github.com/respectevery01/zens-ink-seo-package.git
export SERPER_API_KEY="your_key"

python3 -m zens_ink.kd "你的关键词" --markdown

--markdown 输出你上面看到的自包含报告——设计来直接丢进 agent 上下文或归档。还有 --zh 跑中文 SERP(gl=cn, hl=zh-CN),这很重要,因为中文关键词工具和 Google SERP 对「什么在排名」的分歧极大。

要点

从品牌查询和页面类型结构进入视野的那一刻起,关键词难度就不再是一个数字了。“semrush pricing” 同时是一个 1/100 的词和一个不可能的词——两个答案对你可能写的不同页面都是对的。一个评分模型的价值在于告诉你该问哪个问题,而不是把模糊性藏在 DR 派生置信度的两位小数后面。

这就是难度分数和难度决策的区别。

FAQ

什么是 SERP 难度评分?

SERP 难度评分通过分析关键词当前 top-10 搜索结果的结构来评级——多少首页、多少专题页、多少内页在排名,平台密度、域名年龄、薄弱位置——而不是像 Ahrefs KD 那样平均域名权威分。因为它评的是你实际要竞争的页面,所以能抓到 DR 类工具漏掉的情况,比如 DR-90 网站一篇没有外链的 2019 年旧博文占据的薄弱席位。

SERP 分析如何检测品牌词?

三重指纹检测:F1——同名官方域名出现在 top-3;F2——同一品牌的域名家族占据 2+ 席位;F3——平台生态密度(应用商店、品牌社区页)。两个以上指纹即判定为品牌词,正面排名几乎不可能,工具会切换到给衍生词(alternative/vs/review 类页面)打截流难度分。

不用 Ahrefs,关键词难度准吗?

是不同,不是不准。Ahrefs KD 与排名页面的引用域相关;SERP 结构评分衡量的是这些席位在结构上是否可赢。主要弱点是权威分是代理值(域名年龄 + 已知平台清单,无外链数据),以及 RDAP 查不到时未知域名会按低权威分处理。任何难度数字——付费或免费——都应视为规划估算而非保证。

跑一次 SERP 难度分析要花多少钱?

每个关键词一次 SERP API 调用。Serper.dev 免费档每月 2,500 次搜索,约可评分 2,500 个关键词。RDAP 查域名年龄免费不限量。典型独立开发者的关键词研究量级下,整条管线月成本为 0。

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

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

查看 Pro →