验证你的 RSS/Atom feed 是否有效
作者在修改订阅流后发现无法拉取更新,通过Feed Validation Service检查发现问题并修复。主要问题包括id格式错误、<follow_challenge>非法元素以及<iframe>和部分CSS属性不被允许。最终调整后成功解决问题,并建议他人校验订阅流。 2025-4-15 00:0:0 Author: taxodium.ink(查看原文) 阅读量:7 收藏

最近改了订阅流,发现之前提交到 VXNA 的订阅流失效了,一直无法拉取更新。

和 Livid 沟通后,他给了我 一个链接,是 Feed Validation Service 这个网站,你可以给它一个订阅流 URL,或者把整个订阅流的 XML 复制进去,然后校验你的订阅流是否有效。

如果是有效的,你会看到 “This is a valid Atom 1.0 feed.” 或者 “This is a valid RSS feed.” 等类似的提示。

如果是不符合规范的,你会看到 “This feed does not validate.”

我去校验了一下我的订阅流,确实存在一些不符合规范的地方:

  • id 不符合 canonical form

    - feedId: 'https://taxodium.ink',
    + feedId: 'https://taxodium.ink/',
    
    
  • <follow_challenge> 不是合法的 feed 元素。1我将它移除了,移动到了 <subtitle> 中声明。

    Folo 声明自己的订阅流有三种办法:

    1. 写一篇文章,包含 feedId 和 userId,并且文章始终包含到订阅流中
    2. 在 <description> (RSS) 或者 <subtitle> (Atom) 中声明 feedId:xxxx+userId:xxxx
    3. 使用 <follow_challenge>
    <follow_challenge>
        <feedId>xxxx</feedId>
        <userId>xxxx</userId>
    </follow_challenge>
    

    其中第 3 种是最好的,不会污染文章内容,也不会在 description 中显示出来。

    但遗憾的是 <follow_challenge> 不属于合法的 feed 元素,会导致 feed 校验失败。

  • 订阅流中不允许包含 <iframe> 标签 2,部分 CSS 属性也不允许写在 style 中3

    我的订阅流包含一些用 <iframe> 写的代码示例,以及为了实现标题的 view-transition 效果,标题我都添加了 style="view-transition-name: xxx"。

    但是它们目前都是不允许被包含在订阅流的 XML 中的,所以我在生成订阅流的时候将它们移除了。

目前我已经都调整好了,如果你是自己生成的订阅流,生成完之后,可以用 Feed Validation Service 验证一下~

Happy hacking (ノ>ω<)ノ

Date: 2025-04-15 Tue 00:00

Last Modified: 2025-04-16 Wed 00:33

License: CC BY-NC 4.0


文章来源: https://taxodium.ink//valid-your-feed.html
如有侵权请联系:admin#unsafe.sh