RSS 订阅源验证器

检查任意 RSS、Atom 或 JSON 订阅源的错误,了解每个错误的修复方法,并准确看到 Feeder 看到的内容。

试试示例订阅源:

验证器检查哪些内容

粘贴订阅源地址后,验证器会像订阅源阅读器一样获取它,然后按照 RSS、Atom 和 JSON Feed 的规则进行检查。完全免费,无需账户。每个问题都会标出所在行,并附上简短的修复说明。

  • 连接:HTTP 状态、重定向,以及服务器是否在 10 秒内响应。
  • 文件:Content-Type 标头、声明的编码和实际编码,以及 XML 是否格式正确。
  • 格式:RSS 2.0、RSS 1.0、Atom 1.0 或 JSON Feed,以及每种格式要求的元素,例如 RSS 的标题、链接和描述。
  • 每个条目:标题或描述、链接、唯一的 guid 和格式正确的日期。播客的 enclosure 需要 url、type 和 length。
  • 其他:订阅源的大小、节省带宽的缓存标头,以及用于即时更新的 WebSub hub。

错误违反了 RSS 或 XML 的规则。有些阅读器完全无法读取有错误的订阅源,另一些只能靠猜,所以文章可能显示不正确。警告不会让订阅源失效。订阅源可以正常使用,但有些阅读器可能会在这些细节上出问题。

在检查清单下方,Feeder 看到的内容会按照 Feeder 自己的爬虫读取的方式显示订阅源,包括每个条目、日期和链接。

常见订阅源错误及修复方法

格式不正确(无效的标记)

常见原因是标题或描述中有单独的 & 或 <,例如 Tom & Jerry。把 & 写成 &amp;,把 < 写成 &lt;,或者把 HTML 放进 CDATA 段:<![CDATA[ ... ]]>。

未定义的实体

像 &nbsp; 这样的 HTML 实体在 XML 中并不存在,XML 只认识五个实体。请改用数字形式,例如用 &#160; 表示不换行空格,或者把 HTML 放进 CDATA。

日期格式错误

RSS 日期的格式类似 Sat, 26 Sep 2026 09:00:00 GMT。大多数编程语言都能自动生成:PHP 用 date(DATE_RSS),Python 用 email.utils.format_datetime(dt),JavaScript 用 new Date().toUTCString()。Atom 和 JSON Feed 则使用 2026-09-26T09:00:00Z。

以 text/html 提供

你的服务器把订阅源标记为网页,所以有些阅读器可能认不出这是订阅源。请以 application/rss+xml 提供 RSS,以 application/atom+xml 提供 Atom。application/xml 也可以。

guid 缺失或重复

没有唯一 ID,阅读器只能猜测哪些文章是新的,编辑过的文章可能会再次出现。请为每个条目设置一个唯一且永不改变的 <guid>,例如文章的永久地址。

带重音的字母变成了奇怪的符号

文件中的字符与它声明的编码不一致,常见原因是 Windows-1252 文本被标记成了 UTF-8。请以 UTF-8 保存和提供订阅源,并让服务器发送 charset=utf-8。

XML 声明前面有内容

<?xml 前面哪怕只有一个空行或空格,也会让整个订阅源损坏。在 WordPress 中,常见原因是主题的 functions.php 或某个插件。

更多修复方法请参阅 如何验证 Feeder 的 RSS 订阅源。如果订阅源属于别人,RSS 订阅源无效怎么办? 介绍了你可以怎么做。

如何把订阅源添加到 Feeder

有效的订阅源在阅读器中也可能显示不正确,所以请像你的订阅者一样测试它:

  1. 在 Feeder 中点击 添加订阅源,然后粘贴订阅源地址。
  2. Feeder 会显示订阅源及其最新文章的预览。检查标题、日期和链接。
  3. 关注它,发布一篇新文章,然后检查它是否作为新文章只出现一次。

Feeder 是一款适用于网页、浏览器、iOS 和 Android 的 RSS 阅读器,你可以免费开始使用。

免费开始

常见问题

为什么我的订阅源在一个阅读器中正常,在另一个阅读器中却不行?

不同阅读器的严格程度不同。包括 Feeder 在内的许多阅读器都能读取有小错误的订阅源,并很好地推测其余部分。更严格的应用(比如一些播客应用)会放弃同一个订阅源。没有错误的订阅源在任何地方都能用,所以即使在你自己的阅读器中看起来没问题,也请修复错误。

订阅源必须有效才能用吗?

不一定。许多阅读器能读取有小错误的订阅源,但更严格的应用可能会拒绝它们,所以有效的订阅源才是稳妥的选择。

为什么旧文章会显示为新文章?

阅读器通过 guid 来识别文章,没有 guid 时则通过标题和日期。新的 guid、迁移到新域名或服务器时区发生变化,都可能让每篇文章在阅读器看来都是新的。

我能验证还没上线的订阅源吗?

这个验证器通过地址检查订阅源,且只检查公共互联网上的订阅源。对于尚未上线的文件,请把 XML 粘贴到 W3C Feed Validation Service 的 Validate by Direct Input 中。