内链分布严重不均:审计入链 + 正文内链 + 智能 related 再平衡

Top 10 页吃 80% 内链、200 页只有 0-2 条。用 Screaming Frog 审入链,给饿着的底 20% 补正文内链,再把「最新 5」换成智能 related widget。

爬一遍站点:top 10 个 URL 各有 500+ 入链,bottom 200 页只有 0-2 条。Top 10 是首页、主分类页、4-5 篇被精选的文章——其余都饿着。所以 Google 几乎不爬它们、它们永远不排,而你「发更多内容」也动不了表。

最快修复: 用 Screaming Frog 爬一遍,在 Internal 标签按 Unique Inlinks 列升序排,取入链最少的那约 20% URL,从同话题的老文里给每篇补 2-5 条描述性正文内链。这一遍就能把饿着的页从 0-2 条入链拉到 5-7 条,一个字新内容都不用写。下面的 widget 替换和编辑 checklist 负责防止歪斜再漂回去。

内链是权威(以及 crawl budget)在站内流动的方式。严重歪斜意味着你大部分目录对 Google 排名实际上是不可见的:它靠 sitemap 知道这些页存在,却几乎不给权重。重平衡是 ROI 最高的 SEO 动作,因为不需要新内容——你只是把已有的连起来。

你属于哪一桶

先爬一遍,再把症状对到最可能的成因,对应修复在下一节。

爬虫里的症状最可能成因主要修复
入链最多的文章也是最新的站内重复的「最新 5」widgetStep 3(智能 related widget)
多数文章正文链接 0-2 条(不算导航 / widget)根本没有正文内链Step 2 + Step 5
老的「终极指南」有 80 入链,却不链任何更新的内容强页是权威死端Step 4
某分类的文章从不回链分类 URL分类单向流Step 5 checklist
tag 页孤立;footer 只显示 100 个 tag 中的 20 个tag cloud 被截断太多稀薄 tag 归档页
30 天内的文章入链为 0「发了就走」工作流Step 5(发布闸门)

常见原因

按命中率从高到低。

1. 每页「最新文章」widget 都链同 5 篇新文章

每个文章详情页的 sidebar 显示最新 5 篇——那 5 篇拿到 N 个入链(站上每篇文章给一个)。超过两周的文章不再出现在任何 widget 里,于是被孤立。

如何判断:你入链最多的也是最新的——入链数和发布日期相关,这就是 widget 模式。

2. 没有正文内链——只有导航链接

作者孤立地写文章。任一文章的入链 / 出链都只来自自动生成的导航(related widget、分类页、面包屑),正文本身不链向任何地方。

如何判断:随机打开 5 篇文章,数正文内容里的内链(排除 nav、footer、widget)。多数只有 0-2 条 = 正文内链缺失。

3. 老的强文从不链向更新的相关内容

你 2024 年那篇「Ultimate Guide to X」有 80 入链,却从不链向你 2026 年写的 12 篇 X 子话题。权威停在老文里,不往下流。

如何判断:按入链抽出 Top 10,看它们有没有链到比自己发的文章。没有——它们就是权威死端。

4. 分类页列文章,但文章不回链分类

X 分类里的文章从分类页(自动生成)被链接,但它们正文里不链回分类页。权威只单向流。

如何判断:在文章正文里 grep 分类 URL。如果 X 分类里多数文章正文从不引用 /category/x/,回链就缺了。

footer 的 tag cloud 只显示最常用的 20 个 tag,其余 80 个没有 footer 链,于是那 80 个 tag 页被孤立。关联的稀薄归档问题见 太多稀薄 tag 归档页

如何判断:总 tag 数 vs footer / sidebar 里出现的 tag 数。footer 显示 100 中的 20 个——80 个没有全局链。

6. 新文章发布时不审内链

作者写、发、走人。没有人补 2-3 条「已有文章 → 新文章」或「新文章 → 已有文章」的链接。每篇新文章孤立起步——这也是 Google 发现不了的内链 背后的同一根因。

如何判断:30 天内的文章除了分类页外入链为 0,就是「发了就走」工作流。

最短修复路径

按收益从高到低。Step 1 审计,其余重平衡。

Step 1:审计每个 URL 的内链入度

用一个能报告 per-URL 入链的爬虫。截至 2026 年 6 月,最快的路径:

  1. Screaming Frog SEO Spider 爬站(免费版最多爬 500 个 URL,付费 license 去掉上限)。
  2. 打开 Internal 标签,按 Unique Inlinks 列升序排——它把每个链接来源 URL 只算一次,正是你要的(忽略某页导航里指向同一目标的 10 条重复链接)。% of Total 列显示每个 URL 占全站内链的比例,能直接看出歪斜。
  3. 运行 Crawl Analysis > Start(或先在 Crawl Analysis > Configure > Links 勾上)。这会填充 Link Score(一个归一化的 0-100 站内权威估值)以及爬取深度和孤立页过滤器。
  4. 要抓真正的孤立页——有搜索曝光但没有任何内链的页——在 Config > API Access > Google Search Console 连上 Search Console API,启用 Crawl New URLs Discovered In Search Console,爬完后导出 Bulk Export > Sitemaps > Orphan URLs Inlinks(或看 Search Console > Orphan URLs 这个 issue 过滤器)。

没有 license?手写:对每个文章 URL,在构建出的静态站里 grep -rl 这个 URL 并数匹配文件数。

# 从构建出的静态站粗算入链数(在构建输出目录里运行)
for url in $(cat all-urls.txt); do
  count=$(grep -rl "$url" . | wc -l)
  echo "$count  $url"
done | sort -n

输出:一份入度分布,分成 top 10%、中 70%、底 20%。

目标:每篇你想让它排名的文章都应该有 至少 3 条 unique 内链入度。底 20% 现在卡在 0-2 条。

Step 2:给底 20% 加 2-5 条来自相关文章的正文内链

每个饿着的文章:

1. 找 5-10 篇相关话题的已有文章(按话题关键词 grep)。
2. 在每篇里加 1 条正文 link 指向那篇饿着的文章。
3. anchor 用描述性文字(目标页的话题,而不是 "click here")。

每篇饿着的文章你加 ~5 条来自不同源的入链,从 0-2 升到 5-7。Google 明确把 anchor text 当作话题信号——它的 链接最佳实践文档 要求 anchor 要「descriptive, reasonably concise, and relevant」,所以 anchor 措辞是在做排名的活,不只是导航。

控制好每页的链接负载。截至 2026 年 6 月,常见建议是大约每 200-300 字一条正文内链,且整页链接总数(含导航)保持在 ~150 以下;远超这个数会稀释信号、读起来像 link farm。

Step 3:用「智能 related」widget 替代「最新 5」

「最新 5」widget 给每个文章详情页同样的 5 条出链。换成 per-article 的相关文章 widget,同时把归档深度也带出来:

// related-articles.ts
function getRelated(current: Article, all: Article[]): Article[] {
  return all
    .filter(a => a.slug !== current.slug)
    .map(a => ({
      article: a,
      score:
        sharedTags(current, a) * 3 +
        sameCategory(current, a) * 5 +
        (a.inboundCount < 3 ? 2 : 0)   // 给饿着的页加分
    }))
    .sort((x, y) => y.score - x.score)
    .slice(0, 6)
    .map(x => x.article);
}

现在 widget 按话题相关性给出文章,并给少入链的页加分,分布自动变均。注意 related widget 漏重复 这个坑——slice 之前先按 slug 去重。

Step 4:给 top 10 强文加下游链接

每个高入链文章:

1. 列出在它之后发布的相关子话题文章。
2. 加 2-3 条从强文指向新相关文章的正文内链。
3. 用描述性 anchor,自然嵌入话题出现的地方。

被困在强文里的权威向下游流。新内容、深内容受益,又不稀释强文自己的排名——这和 首页分不出权重 是同一个权威分配问题,只是下沉一层。

Step 5:把正文内链做成发布要求

编辑 checklist:

发任何文章前:
- [ ] 2-3 条正文内链指向已有相关文章
- [ ] 正文里 1 处引用父分类页
- [ ] 至少 1 条入链来自冷门区域(boost 饿着的内容)
- [ ] anchor 描述性,不要 "click here"

PR 缺这些就 block,或写一个 lint 脚本数正文内链数,低于阈值就让构建失败。

Step 6:两周后重审,确认歪斜变小

重跑和 Step 1 完全一样的爬,把新的 Unique Inlinks 分布和旧的对比:

  • 底 20% 现在应该是 3+ 入链,而不是 0-2。
  • top 10 个 URL 占的 % of Total 应该下降。
  • Bulk Export > Sitemaps > Orphan URLs Inlinks 导出应该更短(真孤立页更少)。

在 Search Console 里,一个被新加了链接的饿着 URL 应该在接下来几周从 Discovered – currently not indexed 往已索引移动;如果它一直卡着,见 爬了但当前未索引。内链重平衡是持续的——你一边发新文章它就一边漂回去,所以至少每季度重审一次。

怎么确认修好了

  • 爬虫检查:没有一篇要排名的文章 Unique Inlinks 少于 3。
  • 孤立检查Bulk Export > Sitemaps > Orphan URLs Inlinks 返回空或接近空。
  • 分布检查:前后两次爬之间,最高的那个 % of Total 明显下降(长尾不再饿着)。
  • 索引检查:Search Console 的 Pages 报告显示原先饿着的 URL 在几周内进入 Indexed;这些 URL 的曝光开始在 Performance 里出现。

预防建议

  • 每篇新文章发布时带 2-3 条正文内链,由编辑 checklist 或 lint 闸门强制。
  • related 文章 widget 包含归档深度并给饿着的内容加分——不只是「最新 5」。
  • 强文章刻意链向下游的新相关内容,让权威流动而不是滞留。
  • 文章在正文里链回它的父分类页,形成双向流。
  • 每季度:重审入链分布;底 20% 的重平衡是重复工作。
  • anchor 始终描述性;“click here” 不携带任何话题信号。

FAQ

每个页面应该有多少内链? 对每个你想让它被索引的页,目标是至少 3 条 unique 内链指向它;从它流出的话,大约每 200-300 字一条正文内链。整页链接总数(含导航)保持在 ~150 以下,避免信号被稀释。

导航、footer、widget 链接和正文内链算同等吗? 不太算。站内全局的 nav / footer 链接每页都有,所以搜索引擎会折扣它们的价值——它们帮助发现,但传递的区分性权威很少。相关内容里的正文内链才承载话题和排名权重,这也是上面修复专门盯正文链接的原因。

孤立页和饿着的页有什么区别? 孤立页是内链指向(只能靠 sitemap 或直接 URL 到达)。饿着的页有几条(1-2),但远低于全站其余。在 Screaming Frog 里,连上 Search Console 或 sitemap 源后用 Bulk Export > Sitemaps > Orphan URLs Inlinks 报告找真孤立页;零入链的情况见 孤立内容页

给一个已索引但不排名的页加内链有用吗? 可能有用,靠传递更多权威、用描述性 anchor 强化话题相关性,但它本身不是必中的修复。如果一个页已索引却毫无起色,加链接前也要查内容质量和搜索意图,别一上来就认定链接是瓶颈。

重平衡多久会反映到排名上? 发现和重新抓取可能要几天;被新加链接的页的排名变动通常要几周,因为 Google 要重新评估它们。第 2 周回审确认入链分布变了,再在接下来一个月里盯 Search Console。

我能不能直接自动生成几千条内链? 别对每个关键词无脑自动加链。批量自动链接会造出稀薄、重复、看着像操纵的 anchor,还会破坏导航。用一个按相关性打分的 related widget(Step 3)加上一遍有意识的正文补链(Step 2),就能拿到分布而不落入垃圾模式。

相关阅读

标签: #内容运营 #站点质量 #站点审计 #排查 #内链 #权重分配