20 October 2026, 20:00 (GMT+8)
2026年10月20日 20:00(东八区 / 北京时间)
RSS/Atom 订阅只见部分文章、刷不出新文:根因定位与修复方案
概述
本轮排查「订阅后仅获取部分文章、且无法刷新获取后续新增文章」的问题。结论是:不是订阅器不刷新,也不是 feed 没更新,而是站点没有全站 RSS/Atom,只有分板块 feed;而订阅入口只暴露了 Nanolog 和「Blog(01Write_blog)」两个板块,后者基本是空的,新文章都发在别的板块里,所以订阅者永远刷不到。
- 无全站 feed:
zola.toml只写了feed_filenames,缺generate_feeds = true,Zola 因此不生成根目录/atom.xml、/rss.xml(线上 404); - 只有分板块 feed:各板块
_index.md里generate_feeds = true,各自生成独立 feed;自动发现只暴露feed_sections里声明的 Nanolog 与 Blog 两个板块; - 「Blog」板块几乎没文章:
01Write_blog实际只有 2 篇 6 月的测试文,长文分散在 CXX20 / Share / Debug / Math 等十几个板块; - 新文都发在别的板块:最近新增文章全部落在
01Write_blog_CXX20与03Share_blog,不在被订阅的板块里; - 加密文章被过滤:
scripts/post-build.mjs会把encrypt = true的文章从 feed 与搜索索引中移除(当前约 8 篇)。
一、现象
- 订阅 RSS / Atom 之后,只能看到一部分文章;
- 之后站点持续更新,但订阅器刷新也拿不到新增文章。
二、根因定位
2.1 站点级 feed 从未生成(主因)
zola.toml 里只配置了:
feed_filenames = ["atom.xml", "rss.xml"]但全文件没有 generate_feeds = true。Zola 只有开了 generate_feeds 才会生成根目录的 atom.xml / rss.xml。实测同版本 Zola(0.23.6):不开该开关时构建产物里没有根 feed,线上 https://suchaharcan.github.io/atom.xml 返回 404。
2.2 实际存在的只有「分板块」feed,自动发现只暴露 2 个板块
主题 partials/head.html 会按 zola.toml 的 feed_sections 输出订阅链接,目前只有:
| 名称 | 板块 | feed 地址 |
|---|---|---|
| Nanolog | @/nanolog/_index.md | /nanolog/atom.xml |
| Blog | @/01Write_blog/_index.md | /01Write_blog/atom.xml |
于是从首页点订阅,只能选到这两个之一。而 generate_feeds = true 的板块其实有十几个,每个板块各自生成独立 feed。
2.3 被当作「Blog」的 01Write_blog 板块几乎没有文章
线上 /01Write_blog/atom.xml 实际只有 2 条,都是 6 月的测试文(One、Third)。真正的长文全部分散在:
| 板块 | 文章数 |
|---|---|
03Share_blog | 15 |
00Read_blog_Math | 8 |
00Read_blog_English | 7 |
02Engineer_blog_Debug | 7 |
01Write_blog_CXX20 | 5 |
01Write_blog_CMake / 01Write_blog_AlgorithmDesign | 各 5 |
| 其余写作子板块 | 各 1–2 |
2.4 新文章恰好都发在「没被订阅」的板块
最近一次提交 Create New Blogs And Update Old Blogs 的新增文章全部落在:
01Write_blog_CXX20/2026-10-15-CMake、2026-10-15-Markdown、2026-10-15-Zola-Blog03Share_blog/2026-10-15-ASCII-Mac
这些板块既不在自动发现列表里,也和用户订阅的 Nanolog / Blog 无关。所以即使部署成功、对应板块 feed 也更新了,订阅器刷新时依旧一个「新文章」都看不到。
2.5 加密文章被主动剔除
scripts/post-build.mjs 会把所有 encrypt = true 的文章从 feed 与搜索索引中过滤掉(约 8 篇),这是设计行为(正文加密,feed 不放明文),也让「部分文章缺失」更明显。
三、修复方案
方案 A(推荐,一步到位):生成全站 feed
在 zola.toml 顶层补一行:
generate_feeds = true
feed_filenames = ["atom.xml", "rss.xml"]这样根目录会生成 /atom.xml 与 /rss.xml,收录全站所有带 date 的文章(跨板块,按日期倒序)。本地已用同版本 Zola 验证:开启后根 feed 同时包含不同板块的文章。订阅者只需订阅这一个地址即可收到全站更新。
方案 B:扩充自动发现的板块
把真正在更新的板块补进 feed_sections,例如:
feed_sections = [
{ name = "Nanolog", path = "@/nanolog/_index.md" },
{ name = "Blog", path = "@/01Write_blog/_index.md" },
{ name = "CXX20", path = "@/01Write_blog_CXX20/_index.md" },
{ name = "Share", path = "@/03Share_blog/_index.md" },
]首页订阅入口会相应多出这些板块的 feed 链接,但订阅者仍需分别订阅每个关心的板块。
方案 C(订阅者侧临时办法)
直接订阅具体板块的 feed,例如:
https://suchaharcan.github.io/01Write_blog_CXX20/atom.xmlhttps://suchaharcan.github.io/03Share_blog/atom.xml
四、注意
- 全站 feed 只收录带
date字段、且未被include_in_feeds = false排除的文章;design、kanban等无date的页面不会进入 feed; encrypt = true的文章仍会被scripts/post-build.mjs过滤,这是加密功能的设计行为;- 新增文章后需触发一次构建/部署,feed 才会更新(CI 已在每次推送时自动构建部署)。
相关链接:首页 · Nanolog 列表 · Ametrine 主题
13 October 2026, 22:07 (GMT+8)