← 返回专栏
· 1 分钟阅读

不租 API,自己扫 Common Crawl 域图:一套自有的反链雷达

Ahrefs 的 DR 是按月租的一个数字。Common Crawl 域级图是 1.33 亿域、21.5 亿条边的公开数据,扫一次就永久归你。19 分钟扫完 10 个站的反链画像——零 API key、零订阅。

TL;DR

Common Crawl 最新域级图(cc-main-2026-jul-aug-sep)完全公开:1.33 亿域、21.5 亿边、约 9.6GB 下载量、每季度更新。一晚上 Python 就能把它变成自家站点的私有反链雷达——不用 Ahrefs、不吃 API 配额、不按次计费。这篇文章给出完整扫描管线、实测数字,以及一个关键陷阱:对小站点这张图是保守下界,不是真值。

所有反链 API 卖的都是同一种东西:一个按月租的数字,限速,退订即失。教程里没人提的另一条路:Common Crawl 基金会每季度把整个域级 web 图作为开放数据发布。下载一次,1.33 亿个域名的反链数、竞品对照、PageRank 就归你了——离线、永久、成本只有一块硬盘的时间。

这篇文章是我上周搭的管线。真实命令、真实输出,以及扫出来的十个站点的数字——包括两个我没预料到的发现。

下载的是什么

Common Crawl 每季度发布一张域级图。cc-main-2026-jul-aug-sep 这期:

  • 1.33 亿个域(vertices 文件,976MB)
  • 21.5 亿条边(压缩后 8.6GB)——每行一条 源域 → 目标域 关系,已去重
  • Host ranks(2.5GB)——预计算好的每域 PageRank,权威分一次到手

域名是反向域名记法(com.example.subdomain),第一次用的人都会被绊一下。扫描器匹配前把标签反转回来就行。

文件在 data.commoncrawl.org 的 projects/hyperlinkgraph/ 下。没有账号、没有 key、没有请求上限,curl 加耐心就是全部前置条件。

扫描管线

工具就三个命令。先拉图建索引(一次性,普通宽带约 30 分钟):

$ python3 cc_linkgraph.py init
Downloading cc-main-2026-jul-aug-sep vertices... 976MB done
Downloading edges... 8.6GB done
Loading vertices into SQLite... 133,080,311 domains
Building reverse-domain index... done

然后扫目标清单——纯文本文件,一行一个域名:

$ python3 cc_linkgraph.py scan --targets targets.txt
[1/13] zens.ink                → 5 个引域
[2/13] uzenlabs.com             → 5 个引域
[3/13] theonchaindiary.com      → 2 个引域
[4/13] rekt.news                → 635 个引域
[5/13] slowmist.com             → 365 个引域
...
Scan complete: 13 targets, 2.15B edges read, 19m 04s

一遍完整扫过边表用了 19 分钟,笔记本上跑的。结果全部落 SQLite 快照,之后再跑 report 是秒出:

$ python3 cc_linkgraph.py report
target              referring_domains   top_competitor_overlap
rekt.news           635                 slowmist.com (41 shared)
slowmist.com        365                 rekt.news (41 shared)
zens.ink            5                   uzenlabs.com (4 shared)

发现一:自家站群是个回音室

扫描给我自己的产品组合出了一张不太舒服的表。品牌主站显示 5 个引域——逐个列出来,5 个全是我自己的站。页脚互链、JSON-LD 里的 sameAs、GitHub org 主页回链。第三方引域:零。

这不是反链画像,这是一个加了几步操作的回音室。同一个域在 Ahrefs 里的 DR 是三十几,数字看着还行——直到边表把事实摆出来:权重几乎全是自引用堆出来的。DR 只数链接数,不问链接是谁的。

这件事指出的方向:不是继续互链更狠,而是去挣一个真实的第三方提及。一个我和我的站都控制不了的域名给的链接,比簇内再交叉二十条都值钱。

发现二:这张图是下界,不是真值

我那个 Ahrefs DR 17 的内容站在 Common Crawl 图里只有 2 个引域,Ahrefs 看到的是几十个。两个数都没错:

  • Common Crawl 采样 web 时偏向高 PageRank 页面,爬虫没抓过的页面上的外链,图里就不存在。
  • Ahrefs 为外链爬得很凶,但也是采样。它对小站的索引同样不全——只是不全的方式不同。

我落地的使用法则:图用来做相对的、竞品级的对照;自家站点的真值用 Google Search Console 外链导出。 GSC 的数据来自 Google 本人——唯一一个它的外链观点会影响你排名的爬虫。图的优势是覆盖 GSC 永远不会给你看的竞品。

竞品情报层面下界就够了:rekt.news 635 个引域、slowmist.com 365 个对我方 2 个,这个差距不是采样误差能解释的。天花板才是故事,不是小数点。

发现三:GSC 导出 + 域图 = 机会雷达

最后一块拼图是两个免费源的合体。Google Search Console 导出所有链向你站的域;域图告诉你 web 上哪些页面提及你的竞品。你关心的交叠是:链了竞品但没链你的域。

自动化这条管线:

  1. 从搜索结果拉候选页面(“best X”、“alternatives to Y” 类聚合页、curated 目录)
  2. 逐页 fetch,验证它真的链到了具名竞品——不是正文里出现过品牌词就算
  3. 打分分诊:页面权重、主题相关性、是否已经链了你
  4. 输出排序后的 outreach 清单,按金/养/审三档分流

第 2 步比听上去重要。我测试集里大约三分之一的 “alternatives” 聚合页,对竞品只是正文提及或图片说明——没有真链接。那些是未链提及(unlinked mentions),是完全不同(而且说实话更容易)的一种 pitch。验证这一步,是把「链接雷达」和「抓取即群发名单」区分开的东西。

什么时候该直接用免费 API

诚实环节。这些场景下图是错的工具:

  • 现在就要单个域的新数据。 免费 API 一次查询 30 秒;下载图要一晚上。查单域用 CrawlGraph 免费层(每月 15 次)或 Ahrefs 免费 API 都比图快。
  • 你的站很新。 季度快照天然滞后,上周挣的链接不在里面。
  • 只追踪两三个域。 图的优势是几十上百域的批量和可复跑。低于这个量级,搭建成本占大头。

追踪一个产品组合、想做季度对季度 diff、或者想要任何 API 档位都不会给你的数字(比如你的「引域」里有多少其实是你自己)——图就是对的工具。

整套东西的账单

  • Common Crawl 域图:免费,每季度
  • GSC 外链导出:免费,随取
  • 扫描器 + 雷达管线:约 300 行 Python,纯标准库
  • API 预算合计:$0

这就是全部要点。不是说付费工具是智商税——它们的索引比任何公开数据集更深更新。但对独立站点,边际决策从来不是「Ahrefs vs 免费数据」,而是「有数据 vs 没数据」——而这张公开图一直在那里放着。

FAQ

Common Crawl 域图真的免费吗?

真的。它是 AWS S3 和 Common Crawl 自己镜像上的公开数据集,vertices、edges、host-ranks 三个文件不需要账号就能下载。唯一成本是带宽和自己的计算时间——完整边表压缩后 8.6GB。

为什么我站点的数字比 Ahrefs 少很多?

构建图用的爬虫是对 web 的采样,偏向高 PageRank 页面。DR 20 以下小站的很多外链所在的页面,爬虫根本没抓过。把 Common Crawl 当下界用;自家站点的真值用 Google Search Console 的外链导出。

图多久更新一次?

每季度一次。2026 年 7–9 月的域图(cc-main-2026-jul-aug-sep)在 10 月发布。查单个域的时效数据用免费 API 更实际;图的优势是批量、竞品级的对照分析。

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

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

查看 Pro →