你大概率已经很多年没见过 RSS 这个词了。如果你是在 2013 年之后才开始用互联网,你可能从来没见过它。这篇文章不打算劝你转回 RSS——它不是更好的选择,它只是一个不同的选择。而且是互联网最重要的被遗忘的选择。RSS 是一个协议,一份 XML 文件,一种不问你"你是谁"就能让你获取内容的方式。以下是它从哪来、怎么工作、为什么退场,以及它还活在哪。

1. RSS 从哪里来

1999 年,Netscape 的工程师为 My Netscape 门户页面设计了一个 XML 格式,用来让外部网站内容自动汇聚到门户上。这个格式叫 RDF Site Summary,后来被称为 RSS 0.90。

RSS 的一个关键设计选择从第一天就定了:它是纯客户端拉取的。 网站把一个 XML 文件放在某个 URL 上,客户端定时去访问。没有中心服务器,没有用户注册,没有身份认证。这就是互联网早期默认的去中心化模型。

但标准的演变不是一条直线。RSS 0.90 之后 Netscape 放弃了它,另一群人接手推出了 RSS 0.91 到 2.0。同时另一个社区认为 RSS 需要更严格的语义,推出了 RSS 1.0。尴尬的是——RSS 1.0 和 RSS 2.0 没有任何继承关系。它们是两个互不兼容的格式,名字却都叫 RSS。

这场分裂最终被一个外部方案收场。2005 年,Google 提出了 Atom——一个设计更干净的 syndication 格式,由 IETF 标准化(RFC 4287),避免了版本混乱的所有坑。现在大多数阅读器同时支持 RSS 2.0 和 Atom,新系统基本都选 Atom。

同一年,Google 发布了 Google Reader。一个基于 Web 的 RSS 聚合器,极其简洁好用。RSS 从一个需要专用客户端才能用的协议,变成了浏览器里的一个网页。RSS 的黄金时代到了:主流新闻门户、个人博客和学术网站在页面显眼位置挂上那个橙色的小方块图标,feed 订阅成了默认配置。

然后 2013 年 7 月 1 日,Google 关闭了 Google Reader。用户有三个月时间导出自己的订阅列表。

2. 拆开协议:RSS 到底长什么样

RSS 的核心就是一份 XML 文件。一份放在某个公开 URL 上的、结构固定的 XML 文件。

一个典型的 RSS 2.0 feed 长这样:

<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>My Blog</title>
    <link>https://example.com</link>
    <description>关于技术和其它</description>
    <lastBuildDate>Mon, 19 May 2026 08:00:00 GMT</lastBuildDate>
    <item>
      <title>一篇新文章</title>
      <link>https://example.com/posts/new-post</link>
      <guid>https://example.com/posts/new-post</guid>
      <pubDate>Sun, 18 May 2026 12:00:00 GMT</pubDate>
      <description>文章的摘要或全文</description>
    </item>
  </channel>
</rss>

结构非常扁平。<channel> 描述 feed 的元信息,<item> 是逐条内容。每个 item 有标题、链接、唯一标识(guid)、发布时间和摘要。

Atom 的版本语义更明确:

<feed xmlns="http://www.w3.org/2005/Atom">
  <title>My Blog</title>
  <link href="https://example.com" rel="alternate"/>
  <updated>2026-05-19T08:00:00Z</updated>
  <entry>
    <title>一篇新文章</title>
    <link href="https://example.com/posts/new-post" rel="alternate"/>
    <id>https://example.com/posts/new-post</id>
    <published>2026-05-18T12:00:00Z</published>
    <summary>文章的摘要或全文</summary>
  </entry>
</feed>

核心差别:Atom 用 <entry> 而不是 <item>,要求 id 必须是 URI,时间格式是 RFC 3339 而不是 RSS 的 RFC 822;Atom 的 <content> 可以携带完整 HTML 正文,RSS 2.0 的 <description> 只是可选的摘要字段。

但重点不在这里。重点是:整个机制就这么多。 没有握手,没有认证,没有 session。一个客户端访问一个 URL,得到一个 XML,解析出内容。从协议设计的角度看,它的复杂度接近于零。

XML 在今天看起来像是遗老遗少,但 RSS 用 XML 有两个硬理由:内容的富文本(HTML)可以直接塞进 CDATA 不需要转义;扩展命名空间(播客的 <enclosure> 标签就是通过 namespace 加进来的)是 RSS 生态的自然需求。换成 JSON Feed(确实有人试过),这些问题会重新找上门来。

3. RSS 阅读器在做什么

理解了 feed 格式,理解阅读器的原理就简单了。

一个 RSS 阅读器只有四个核心步骤,在一个循环里反复执行:

抓取。 对用户订阅的每个 feed URL 发起 HTTP GET 请求。关键优化:带上 If-None-Match(匹配 ETag)或 If-Modified-Since(对比 Last-Modified),feed 没更新则服务器返回 304 Not Modified,阅读器跳过。一个几千订阅的阅读器实例,一轮轮询可能只有几十个 feed 真正返回了新内容。

解析。 得到 XML 后,解析出 channel 级别的元信息和 item 列表。需要同时处理 RSS 2.0 和 Atom,以及各种野生 feed(缺少 guid、pubDate 格式错误、把 <description><content> 用)。一个健壮的解析器不是解析标准,是容错。

去重。 用 guid(或 Atom 的 id)判断哪些条目是新的、哪些已经读过。如果 feed 本身不给 guid,退一步用 link 做唯一标识。这是 RSS 协议中最脆弱的一环——没有强制的唯一标识语义,不同 feed 生成器的 guid 策略差异巨大。

展示。 新条目按时间倒序排列,标记已读/未读。

这就是一个 RSS 阅读器的完整主循环。如果你动手写过,你会发现 200 行以内可以实现一个基本可用的版本——抓取用 http.Get,解析用 encoding/xml,去重用 map,展示用 HTML。协议简单到这种程度,不是偶然的。它真的被设计成"简单"。

高级功能(全文检索、关键词过滤、跨 feed 聚合、文件夹分类)都是在这条主线上的叠加。核心逻辑没有变。

4. 为什么 RSS 输了

到 2013 年,Google Reader 已经是最有代表性的 RSS 阅读器之一。然后它关了。

Google 给出的理由是"用户数在下降"。这个理由可能是真的,也可能不完全是。但 Google Reader 的关闭只是更大的趋势的结果,不是原因。

RSS 被边缘化的根本原因是:平台掌控 vs 用户掌控的冲突。

RSS 给读者完全的掌控权——你选择订阅什么,你看什么,你什么时候看。没有算法插队,没有推荐干扰,一切按时间倒序排列。

这对读者友好,但对平台不利。

以 Facebook 和 Twitter 为代表的社交平台,商业模式的基石是控制流量分发。算法决定你看到什么、在什么顺序下看到、中间插多少广告。RSS 完全绕过这一层:你不需要打开它的网站,不需要登录,甚至不需要让它知道你是谁。广告商付了钱要买的 feed 广告位,RSS 里根本不存在。没有商业利益驱动,就没有足够多的团队会持续投入开发更好的阅读器和工具。这是一个自我加速的螺旋。

RSS 自身有三个结构性问题:

  • 没有用户身份层。 RSS 不知道谁在读。无法个性化,无法社交——你看不到朋友推荐了什么。
  • 没有反馈回路。 内容创作者只能看到一个约数:订阅数。没有阅读量、停留时长、分享数。创作者不知道谁在阅读。
  • 内容是单向的。 发布 → 订阅 → 阅读。没有互动,没有评论。

但这些问题不是协议的疏忽——它们是 RSS 设计哲学的自然结果。RSS 选择了极致的简单,代价就是不解决身份、反馈和互动。这不是 bug,是 tradeoff。如果你给 RSS 加上 OAuth 登录、阅读回执和评论协议,它就是另一个东西了。

RSS 还有一个常被忽略的障碍:使用门槛。订阅一个 feed 需要用户手动找到 XML URL、粘贴到阅读器里、管理订阅列表。Twitter 的做法相反——注册即用,算法替你填充内容。对于一个不熟悉 URL 的普通用户,这已经是劝退级别的复杂度。这不是协议问题,但它很可能是比商业模式更大的人口过滤因素。

此外,内容创作者自己在选择上也参与了 RSS 的衰退。有些博客为了把读者拉回网站获取广告收入,只提供标题或摘要而不提供全文 RSS。这不是平台逼迫的,而是创作者在商业压力下的自主选择。

5. 它还活着

说 RSS 死了是不准确的。它只是不在大众视野里了。

播客是 RSS 最成功的幸存场景。你今天在 Apple Podcasts、小宇宙、Spotify 上听的任何一个播客节目,后端分发协议就是 RSS。主播把音频文件链接放进 RSS feed 的 <enclosure> 标签,各大客户端抓取、下载、播放。RSS 的开放性为播客提供了一种底层分发机制,任何客户端都可以平等获取内容。当然,它不是播客未被垄断的充分条件——但它是必要的基础设施。

独立博客圈也还在用 RSS。技术博客、学术博客、个人独立作者不需要平台的流量分发,RSS 直接连接作者和读者,不依赖任何平台的功能更新和算法变动。

Hacker News、Reddit、GitHub Release、arXiv 论文——这些平台至今仍然提供 RSS feed。你不需要每天打开它们各自的 app 或网页,一个 RSS 阅读器可以把所有这些源的更新汇聚到一个时间线里。

新一代阅读器也在冒出来:Inoreader、Feedly、NewsBlur、Miniflux、NetNewsWire、Readwise Reader。它们有的商业有的开源,没有一个能达到 Google Reader 的体量——但这本来就是正常的状态。一个去中心化的协议不需要一个大一统的客户端。

RSS 不会复兴。它不会成为下一个风口,不会有资本涌入,不会出现在任何人的年度关键词榜单上。

但它也不会死。只要还有人写博客、录播客、用静态网站、拒绝算法推荐的登录墙——RSS 就会在那里,安静地跑着。一份 XML 文件挂在一个 URL 上,一次 HTTP GET 请求带上 If-None-Match,服务器返回 304 或者返回新条目。

一个协议能做到的技术上限,它都做到了。剩下的事,不是技术问题。

参考资料