教程
给博客加 RSS:订阅入口和中英文 Feed 怎么安排
从读者如何订阅讲起,再说明 RSS 自动发现、中文与英文 Feed 的分工,以及文章更新和下线时真正会发生什么。

看到“订阅 RSS”时,读者真正需要的不是一段协议历史,而是三个答案:地址在哪里、放进什么工具、之后会收到什么。
Knowhy Lab 的中文订阅地址是:
https://lab.knowhy.net/rss.xml
把它复制到 Feedly、Inoreader、NetNewsWire 或其他支持 RSS 的阅读器中即可。也可以先打开站内的订阅页,再复制页面提供的地址。
英文内容使用另一条 Feed:
https://lab.knowhy.net/en/rss.xml
两条地址不是重复入口。中文 Feed 只收录已发布的中文稿,英文 Feed 只收录已发布的英文稿。本批文章只发布中文,因此英文 Feed 不会为了显得“有内容”而混入中文文章。
订阅之后会发生什么
RSS 是一种基于 XML 的内容分发格式。网站把频道信息和文章条目写进 Feed,阅读器再定期请求这个地址,比较哪些条目是新的或发生了变化。
对读者来说,过程通常只有两步:
- 复制 Feed 地址并添加到阅读器。
- 之后在阅读器里查看它定期取得的更新。
这不是邮件订阅:网站不会因为你添加了 RSS 地址就获得邮箱,也不会主动发邮件。它也不是实时通知系统;多久检查一次、是否保留全文、如何标记更新,由具体阅读器决定。
RSS 2.0 规范将 RSS 定义为 Web 内容分发格式,并用 channel 描述频道、用 item 描述条目。Knowhy Lab 为每篇文章输出标题、摘要、发布日期、文章链接和稳定标识,阅读器据此展示订阅内容。
为什么还要做一个订阅页
直接提供 XML 地址在技术上已经可用,但普通读者未必知道该怎样处理一个以 .xml 结尾的链接。因此站内保留 /subscribe:它用正常网页解释 RSS 是什么,给出可复制的中文 Feed 地址,并提供直接打开 Feed 的按钮。
英文站对应 /en/subscribe,显示英文 Feed 地址。页面语言和 Feed 语言保持一致,避免读者在英文页面复制到中文订阅。
除了可见的订阅页,网站 HTML 的 <head> 里还放了 RSS 自动发现链接:
<link rel="alternate" type="application/rss+xml" href="https://lab.knowhy.net/rss.xml">
MDN 对 rel="alternate" 的说明指出,当它与 application/rss+xml 或 application/atom+xml 类型配合时,链接可以指向一个内容订阅 Feed。支持自动发现的浏览器工具或阅读器因此可以从页面找到相应语言的订阅地址。
可见入口解决“人怎么订阅”,自动发现解决“工具怎么找到”。两者作用不同,最好都保留。
中文和英文为什么分开
把所有语言混进同一条 Feed 并非技术上做不到,但会把筛选成本转嫁给读者。只想读中文的人会反复遇到英文条目,只想关注英文内容的人也一样。
Knowhy Lab 已经为文章设置语言字段和独立 URL,所以构建 Feed 时直接复用同一条件:
zh-CN的公开文章进入/rss.xml;en的公开文章进入/en/rss.xml;- 草稿、已下线文章和未到发布时间的文章不进入任一 Feed。
Astro 官方 RSS 教程也采用从内容集合取得条目,再把标题、描述、链接和发布日期映射到 Feed 的方式。这样网页列表、搜索索引和 RSS 都基于同一份内容状态,不需要编辑者再维护一张订阅清单。
更新文章时,阅读器会怎样处理
文章合并到生产分支后,Cloudflare Pages 会重新构建站点,RSS 文件也随之重新生成。新增文章会成为新条目;更新旧文章时,站点仍使用同一篇文章的稳定标识和链接。
但阅读器如何提示“旧文章被修改”,不是网站可以完全控制的。有的阅读器会更新摘要或内容,有的只按发布日期和标识判断是否需要提示。因此不应把一次内容修订描述成必然的“再次推送”。
下线不等于从所有阅读器里消失
文章被标记为下线后,下一次成功构建会把它从公开页面、搜索索引、中文 RSS 和 sitemap 中排除。这能控制网站当前对外提供的内容。
它不能召回阅读器已经保存的副本。有些阅读器会继续保留用户曾经下载的标题、摘要甚至正文;RSS 协议也没有提供远程删除读者本地存档的保证。敏感信息一旦公开,正确做法仍然是尽快修复源内容并评估缓存,而不是把“从 Feed 移除”当成彻底撤回。
最后做一次实际检查
发布 RSS 时,不要只看订阅页按钮。至少分别打开中文和英文 Feed,确认语言、链接和条目符合预期;再查看任一文章页面源代码,确认自动发现链接指向同一语言的 Feed。
如果站点采用和本文相同的 Git 驱动发布方式,用 GitHub 存文章,发布博客还需要电脑一直开着吗?进一步解释了 Feed 更新为什么发生在云端构建,而不是依赖个人电脑持续运行。