标签页被收录但文章页落后:原因 + 修复路径

Google 把所有标签归档页都收了,但文章页卡在 Discovered 或 Crawled - currently not indexed。原因在这里,还有链接分布的修复方法。

site:yourdomain.com inurl:/tag/ 能搜出几十个标签归档页,但你导出 Search Console 的 Pages 报告会发现:大部分 /articles/* 文章 URL 还卡在 Discovered - currently not indexedCrawled - currently not indexed

最快的修复: 别再让文章只靠标签页和”最新 3 篇”组件互链。给每篇文章 5-8 个主题相关的内链(用 tag 重叠度排序的相关文章块),加上正文里 2-3 个指向老文章的内链,再把薄标签页 noindex,让 crawl budget 转向文章。这样就把内链网络重新平衡了——这才是真正的原因,而不是标签页本身有 bug。

为什么标签页先被收录:每篇文章都自动反链到它带的所有 tag,于是标签页成了链接网络里的枢纽节点,被反复抓取。文章页只靠”其他文章的内链”,而大多数站点里这种链接很稀疏。这是链接分布问题。

第一步:看准确的状态,别信 site:

site: 操作符返回的只是一个粗略的估算值,经常多算或少算。要做真正的诊断,请看 Search Console,而不是搜索结果。

  1. 打开 Search Console -> Indexing -> Pages,看 Indexed 与 Not indexed 的比例。
  2. 点开 Not indexed 表格,逐组看 URL 的原因。这里关键的两个原因是两个完全不同的问题:
GSC 里的状态Google 做了什么根本原因修复在哪
Discovered - currently not indexed发现了 URL(来自 sitemap/链接),但还没抓取抓取预算 / 发现问题:这个 URL 内链太少或太弱,或整个 URL 模式看起来低价值内链 + 清理 crawl budget(步骤 1-4)
Crawled - currently not indexed抓取并评估过了,然后决定不收录质量 / 价值问题:内容薄、重复,或和更强的页面几乎一样改页面本身 + 合并;加内链有帮助但是次要
  1. URL Inspection 抽查 3-5 个文章 URL,确认原因并看最后抓取时间。

如果你的文章大多是 Discovered,这篇就是你要的修复方案。如果大多是 Crawled - currently not indexed,那就要在做内链的同时修页面质量——光加内链救不了一个真正薄的页面。

症状

  • site:yourdomain.com inurl:/tag/ 出几十条,inurl:/articles/ 远少于真实文章数
  • Search Console Pages:标签 URL 都在 Indexed,文章 URL 大多在 Not indexed
  • 文章的原因是 DiscoveredCrawled - currently not indexed,而不是硬错误(没有 noindex、没有 404、没被 robots.txt 拦)
  • 标签页本身几乎没流量(关键词竞争弱)

常见原因

1. 标签自动挂到每篇文章,形成厚密的 tag-to-article 网

<!-- 文章模板末尾 -->
<aside>
  <h3>标签</h3>
  <a href="/tag/seo">#seo</a>
  <a href="/tag/google">#google</a>
  <a href="/tag/sitemap">#sitemap</a>
</aside>

每篇文章大约指向 5 个标签页。Google 顺着抓,于是每个标签页都拿到强而重复的抓取信号。

2. 文章之间只通过通用”相关”组件互链,且只取最新 3 篇

const related = (await getCollection('posts')).slice(0, 3); // 最新 3

每篇文章只链到最新 3 篇 -> 老文章几乎没人链 -> 它们的链接信号很弱,滑进 Discovered。

3. 正文里没有跨文章内链

很多写手从不回链自己的老文章。正文里全是外链或干脆没链接,文章之间互链密度很低。

4. 标签页是纯卡片列表,没有独有内容

自动生成的标签页没有原创编辑文字。它们被收录了却什么关键词都排不上,白白消耗 crawl budget 也不带流量。

5. 标签数量爆炸

500 个标签、每个只有 1-3 篇文章,意味着几百个薄标签页在和你的文章争夺有限的 crawl budget。

最短修复路径

Step 1:把”相关文章”改成主题相关的,不只是最新

// 错:只取最新 3
const related = posts.slice(0, 3);

// 对:按 tag 重叠度计算相似度
function getRelated(currentPost, allPosts) {
  return allPosts
    .filter(p => p.slug !== currentPost.slug)
    .map(p => ({
      post: p,
      score: p.tags.filter(t => currentPost.tags.includes(t)).length
    }))
    .filter(x => x.score > 0)
    .sort((a, b) => b.score - a.score)
    .slice(0, 8) // 5-8 篇
    .map(x => x.post);
}

现在每篇文章会带出 5-8 篇真正相关的文章,文章集合之间形成密集内链网络,而不是把一切都汇到标签枢纽。

Step 2:每篇新文章正文里加 2-3 个指向老相关文章的内链

写作 SOP:

1. 草稿写完
2. 选 2-3 个关键论点位置
3. 找站内最相关的老文章,在上下文里加内链
4. 锚文本 = 话题词(绝不用"点这里")

例:

prompt 不奏效时,**先测试它在 [chat 模式](/articles/chatgpt-prompts/) vs API 调用下的差异**——这两种环境对 system message 的处理不一样。

Step 3:把薄标签页 noindex

先找出它们:

# 找出薄 tag(少于 5 篇文章)
ls src/tags/*.md | while read f; do
  tag=$(basename "$f" .md)
  count=$(grep -l "tags:.*$tag" src/articles/*.md | wc -l)
  [ "$count" -lt 5 ] && echo "$tag: $count posts"
done

然后在这些标签模板里加:

<meta name="robots" content="noindex,follow" />

有两个会改变思路的关键点(截至 2026 年 6 月已核实):

  • noindex 并不省 crawl budget。 Google 仍然必须抓取这个页面才能读到指令,抓取配额照样花掉。它带来的好处是索引质量:时间一长 Google 看到稳定的 noindex,就会降低对这些 URL 的重抓频率,从而间接腾出预算。如果某个标签 URL 是真的死了,就把它从 sitemap 删掉并返回 410 Gone(或在 robots.txt 里拦掉路径),让 Google 干脆不再请求它。
  • noindex,follow 会逐渐退化成 noindex,nofollow Google 的 John Mueller 说过:一个页面 noindex 的时间足够长之后,会被丢出索引,它上面的链接也不再被跟进——所以长期 noindex 的标签页最终会停止向你的文章传递任何信号。别把标签页当成永久的权重桥梁,真正的权重路径是文章对文章(步骤 1-2)。

Step 4:检查标签页是否比文章页内链还多

# 数标签页有多少内链
rg -c 'href="/tag/' src/ | sort -t: -k2 -nr | head

# 数文章页有多少内链
rg -c 'href="/articles/' src/ | sort -t: -k2 -nr | head

如果标签内链总数远超文章内链总数,说明你的结构把抓取信号都灌进了归档页而不是正文内容。步骤 1-2 会把它重新平衡。

Step 5:把强标签页升级成真正的 hub 页

不是所有 tag 都该删。一个需求高的标签(10+ 篇文章 + 真实搜索量)值得升级,而不是 noindex

  • 加 150-200 字的原创编辑导语
  • 加一个精选”必读 5 篇”,每篇配一句编辑点评
  • 加 self-canonical(指向自身的规范标签)

这样标签页就有了被收录的理由,也能自己带流量。

Step 6:主动触发重新评估,再观察速率

别被动等。部署完步骤 1-4 后:

  1. Search Console -> Pages -> 打开 Discovered / Crawled - currently not indexed 这一组 -> Validate Fix。 这会让 Google 重新评估整组 URL;验证通常要最多约 2 周,也可能更久。
  2. 对少数优先文章,用 URL Inspection -> Request Indexing(逐个 URL 的提速手段;属性级配额大约每天 10-12 次,所以要花在你最好的页面上)。
  3. 4-8 周后重新导出 Pages 报告:
Search Console -> Indexing -> Pages -> 过滤 URL 包含 /articles/
对比 Indexed 数字与 4 周前

内链网络重新平衡之后,接下来 4-8 周文章收录量出现明显提升是现实可期的结果——具体提升多少,取决于原先内链有多薄。

怎么确认修好了

  • 对之前是 Discovered 的文章做 URL Inspection,现在显示 URL is on Google(至少是 “Crawled” 且有较近的抓取时间)。
  • Pages 报告里 /articles/*Discovered / Crawled - currently not indexed 数量逐周下降
  • 修复后新发的文章在几天而非几周内进入 Indexed——这是内链管道开始正常工作的最快单一信号。

哪些情况可能不是你操作错了

新站或刚刚重构的站,标签先收、文章后收,几周延迟是常态——Google 还在构图,按 URL 模式分配抓取优先级。耐心等 4-8 周再判。(提醒:Search Console 自己的数据也出过波动——比如 2026 年 4 月 27 日上线的那次 impressions 日志修复——所以在断定哪里坏掉之前,先用 URL Inspection 去对照 Pages 报告。)

容易误判的情况

  • 删全部标签很少有用。 文章收录慢几乎都是文章之间内链太薄,而不是标签存在与否。
  • 被收录不等于有流量。 大多数标签页带不来点击,只花 crawl budget 不回本。
  • noindex 不是省 crawl budget 的手段。 它改善的是索引质量,不是抓取成本——那个页面照样被抓。要真正停止抓取,用 410 / robots.txt
  • noindex,follow 不是永久权重。 它会退化成 nofollow,请改用文章对文章的内链。

预防建议

  • 上一个真正的相关文章算法(话题相似度),不是”最新 N 条”
  • 把正文里 2-3 个文章内链设为编辑模板的必填项
  • tag 规划:一个 tag 要等到将有 5+ 篇文章用它再创建
  • 弱 tag 默认 noindex,强 tag 升级为带编辑层的 hub 页
  • 每月扫一次薄 tag(< 5 篇)并清理

FAQ

Q:我的文章显示 “Discovered”,这和 “Crawled - currently not indexed” 是同一个问题吗? A:不是。Discovered 表示 Google 发现了 URL 但还没抓取——通常是发现 / 抓取预算问题,靠内链能解决。Crawled - currently not indexed 表示 Google 抓了,然后判定它不值得收录——这是页面质量问题,所以你还得改进或合并页面,而不只是加内链。

Q:要不要 noindex 标签页来省 crawl budget? A:noindex 并不省 crawl budget——Google 仍然要抓页面才能读到这个标签。它能改善索引质量,时间一长也会降低重抓频率。要真正停止抓取,请返回 410 或在 robots.txt 里拦掉路径。强标签(10+ 篇 + 真实搜索量)保持收录。

Q:如果我给标签页用 noindex,follow,文章还能拿到权重吗? A:短期能,长期不能。Google 说过:一个页面 noindex 的时间足够长就会被丢出索引,它的链接也不再被跟进,所以 noindex,follow 会退化成 noindex,nofollow。别指望标签页当链接桥梁——让权重走文章对文章的内链。

Q:为什么标签页比文章页收录更快? A:每篇文章都反链到它的标签,所以标签页位于大量内链的交叉点,拿到强而重复的抓取信号。文章只能从其他文章拿链接,而那往往稀疏。

Q:修复后多久能看到文章进 Indexed? A:按 4-8 周来规划。对受影响的那一组用 Validate Fix,对少数优先 URL 用 Request Indexing 来加速重评估,但 Google 仍然按自己的节奏重抓、重判。

Q:用 category 替代 tag 会更好吗? A:通常会。category 数量更少、每个更深,更容易做成带原创内容的真正 hub。底层原则是一样的:更少、更好、内链更密的页面。

相关阅读

标签: #SEO #Google #Search Console #收录 #排查 #标签页