爬一遍站点: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」widget | Step 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/,回链就缺了。
5. tag cloud / footer 只链几个 tag
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 月,最快的路径:
- 用 Screaming Frog SEO Spider 爬站(免费版最多爬 500 个 URL,付费 license 去掉上限)。
- 打开
Internal标签,按Unique Inlinks列升序排——它把每个链接来源 URL 只算一次,正是你要的(忽略某页导航里指向同一目标的 10 条重复链接)。% of Total列显示每个 URL 占全站内链的比例,能直接看出歪斜。 - 运行
Crawl Analysis > Start(或先在Crawl Analysis > Configure > Links勾上)。这会填充Link Score(一个归一化的 0-100 站内权威估值)以及爬取深度和孤立页过滤器。 - 要抓真正的孤立页——有搜索曝光但没有任何内链的页——在
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),就能拿到分布而不落入垃圾模式。