<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>码农明明桑</title><image><url>https://isming.me/tags/rss/avatar.png</url><title>码农明明桑</title><link>https://isming.me/tags/rss/</link></image><link>https://isming.me/tags/rss/?utm_source=rss</link><description>码农明明桑，一个程序员的生活和技术内容记录。</description><generator>Hugo -- gohugo.io</generator><language>zh</language><copyright>&lt;a href="https://isming.me">码农明明桑的博客&lt;/a>所有内容遵循&lt;a href="https://creativecommons.org/licenses/by-nc-sa/4.0/deed.zh-hans">「CC BY-NC-SA 4.0」&lt;/a>协议，转载请保留署名并注明来源。</copyright><lastBuildDate>Mon, 14 Oct 2024 21:32:37 +0800</lastBuildDate><atom:link href="https://isming.me/tags/rss/index.xml" rel="self" type="application/rss+xml"/><item><title>更优雅的RSS使用指南</title><link>https://isming.me/2024-10-14-rss-optimize/?utm_source=rss</link><pubDate>Mon, 14 Oct 2024 21:32:37 +0800</pubDate><guid>https://isming.me/2024-10-14-rss-optimize/</guid><description>
&lt;p>最近因为Follow的爆火，RSS的内容也跟着一起火了一把。笔者最近也优化了一下自己博客的RSS输出，在这里写一下博客如何更加 优雅的输出RSS，以及在订阅RSS的时候如何更好的发现RSS源。&lt;/p>
&lt;h3 id="rss20-与-atom">RSS2.0 与 ATOM&lt;/h3>
&lt;p>&lt;a href="https://en.wikipedia.org/wiki/RSS">RSS&lt;/a>是一种消息来源格式，用于方便的将一个站点的内容以一个指定的格式输出，方便订阅者聚合多个站点的内容。&lt;/p>
&lt;p>目前RSS的版本为2.0，而我们大家在使用博客输出RSS文件的时候，除了常用的RSS2.0格式，目前还有一个&lt;code>ATOM&lt;/code>格式，其目前的版本为&lt;code>1.0&lt;/code>。Atom发展的动机为了解决RSS2.0的问题，它解决了如下问题（&lt;a href="https://zh.wikipedia.org/wiki/Atom_(%E6%A8%99%E6%BA%96)">来源WikiPedia&lt;/a>）：&lt;/p>
&lt;blockquote>
&lt;ul>
&lt;li>RSS 2.0可能包含文本或经过编码的HTML内容，同时却没有提供明确的区分办法；相比之下，Atom则提供了明确的标签（也就是typed）。&lt;/li>
&lt;li>RSS 2.0的description标签可以包含全文或摘要（尽管该标签的英文含义为描述或摘要）。Atom则分别提供了summary和content标签，用以区分摘要和内容，同时Atom允许在summary中添加非文本内容。&lt;/li>
&lt;li>RSS 2.0存在多种非标准形式的应用，而Atom具有统一的标准，这便于内容的聚合和发现。&lt;/li>
&lt;li>Atom有符合XML标准的命名空间，RSS 2.0却没有。&lt;/li>
&lt;li>Atom通过XML内置的xml:base标签来指示相对地址URI，RSS2.0则无相应的机制区分相对地址和绝对地址。&lt;/li>
&lt;li>Atom通过XML内置的xml:lang，而RSS采用自己的language标签。&lt;/li>
&lt;li>Atom强制为每个条目设定唯一的ID，这将便于内容的跟踪和更新。&lt;/li>
&lt;li>Atom 1.0允许条目单独成为文档，RSS 2.0则只支持完整的种子文档，这可能产生不必要的复杂性和带宽消耗。&lt;/li>
&lt;li>Atom按照RFC3339标准表示时间 ，而RSS2.0中没有指定统一的时间格式。&lt;/li>
&lt;li>Atom 1.0具有在IANA注册了的MIME类型，而RSS 2.0所使用的application/rss+xml并未注册。&lt;/li>
&lt;li>Atom 1.0标准包括一个XML schema，RSS 2.0却没有。&lt;/li>
&lt;li>Atom是IETF组织标准化程序下的一个开放的发展中标准，RSS 2.0则不属于任何标准化组织，而且它不是开放版权的。&lt;/li>
&lt;/ul>
&lt;/blockquote>
&lt;p>相比之下ATOM协议是有更多的有点，如果你RSS生成程序已经支持了Atom那肯定是优先使用Atom。不过现在基本上99%以上的Rss订阅器或者工具对于两者都有很好的支持，因此如果你现在已经使用了RSS2.0也没必要替换成Atom了。&lt;/p>
&lt;h3 id="rss的自动发现">RSS的自动发现&lt;/h3>
&lt;p>对于提供Rss订阅的网站，最好的方式是提供相应的连接或者使用Rss图标，告诉访客当前网站的Rss地址。&lt;/p>
&lt;p>除了这样之外，我们还应该在网站的源码中添加RSS地址，这样对于一些浏览器插件或者订阅软件可以通过我们的网站页面自动发现RSS订阅地址。&lt;/p>
&lt;p>对于RSS2.0的订阅地址可以添加如下代码：&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-html" data-lang="html">&lt;span class="line">&lt;span class="cl">&lt;span class="p">&amp;lt;&lt;/span>&lt;span class="nt">link&lt;/span> &lt;span class="na">rel&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s">&amp;#34;alternate&amp;#34;&lt;/span> &lt;span class="na">type&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s">&amp;#34;application/rss+xml&amp;#34;&lt;/span> &lt;span class="na">href&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s">&amp;#34;/feed.xml&amp;#34;&lt;/span> &lt;span class="p">/&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>对于ATOM的订阅地址可以添加如下代码：&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-html" data-lang="html">&lt;span class="line">&lt;span class="cl">&lt;span class="p">&amp;lt;&lt;/span>&lt;span class="nt">link&lt;/span> &lt;span class="na">rel&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s">&amp;#34;alternate&amp;#34;&lt;/span> &lt;span class="na">type&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s">&amp;#34;application/atom+xml&amp;#34;&lt;/span> &lt;span class="na">href&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s">&amp;#34;atom.xml&amp;#34;&lt;/span> &lt;span class="na">title&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s">&amp;#34;Site title&amp;#34;&lt;/span> &lt;span class="p">/&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>如果你同时提供了ATOM和RSS2.0两种订阅文件，可以上面两行代码都添加。当然现在一些博客程序的模板文件中已经添加了上面的代码，检查一下即可。&lt;/p>
&lt;h3 id="rss输出的优化">RSS输出的优化&lt;/h3>
&lt;p>因为我的博客是以RSS2.0格式输出的订阅文件，因此这里我就按照我的优化内容来介绍一下输出相关的优化，对于ATtom可以参考其规范文档。&lt;/p>
&lt;p>首先区分介绍和全文的输出。对于只输出描述的网站只需要设置描述部分即可，对于输出了全部的博客，还是建议同时输出描述和全文的。 &lt;del>而RSS2.0不支持输出全文，我们可以用一下的标记来输出全文：&lt;/del>&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-xml" data-lang="xml">&lt;span class="line">&lt;span class="cl">&lt;span class="nt">&amp;lt;content:encoded&amp;gt;&lt;/span>全文内容&lt;span class="nt">&amp;lt;/content:encoded&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>&lt;del>其中的文章html，最好做一下转码。&lt;/del> （以上代码加的有问题，有的RSS识别失败，暂时回退了，有时间换Atom）&lt;/p>
&lt;p>其次可以补充一下网站的内容的元数据，比如作者的信息，网站的标题简介等等。&lt;/p>
&lt;p>对于文章，也可以在输出的时候输出相关的元数据，如标题，作者，标签等。标签支持设置多个，可以用如下的标记：&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-xml" data-lang="xml">&lt;span class="line">&lt;span class="cl">&lt;span class="nt">&amp;lt;category&lt;/span> &lt;span class="na">domain=&lt;/span>&lt;span class="s">&amp;#34;{{ .Permalink }}&amp;#34;&lt;/span>&lt;span class="nt">&amp;gt;&lt;/span>{{ .LinkTitle }}&lt;span class="nt">&amp;lt;/category&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>另外在我设置的过程，发现rss是提供了一个&lt;code>comments&lt;/code>标记的，设置这个标记后，如果RSS阅读器对此支持，理论上可以直接从RSS阅读器点击跳转到文章的评论页面。&lt;/p>
&lt;p>最后，我们可能想要检测要多少通过RSS点击跳转到我们博客的访问量，这个时候可以在输出的链接上面加上特定的参数，这样在我们的统计平台上面就可以看到有多少用户从这里打开页面的，我所加的参数如下：&lt;/p>
&lt;pre tabindex="0">&lt;code>?utm_source=rss
&lt;/code>&lt;/pre>&lt;h3 id="订阅rss">订阅RSS&lt;/h3>
&lt;p>目前最流行的订阅RSS的方式要属于Follow了，这里也推荐使用。&lt;/p>
&lt;p>除了Follow之外，我还自建了一个FreshRss来订阅一些内容，这个的使用要更早于Follow的出现。现在还不能抛弃它的原因是Follow目前不支持移动端，我使用Android的手机，在移动推荐使用&lt;code>FeedMe&lt;/code>来浏览FreshRss的订阅内容。&lt;/p>
&lt;p>另外，我们在浏览一些内容或者博客的时候，也需要一个工具来帮助我们方便的查看和订阅RSS源，这个时候就要推荐一下DIYgod大佬开发的浏览器插件&lt;a href="https://github.com/DIYgod/RSSHub-Radar">RSSHub-Radar&lt;/a>，对于我们的博客，如果已经加了我前面说的html代码，它可以自己发现订阅地址，如下图所示：
&lt;img loading='lazy' decoding="async" src="https://img.isming.me/image/rsshub-radar-blog.png" alt="" />
&lt;/p>
&lt;p>它还支持配置规则，则一些拥有RSSHub订阅的站点，比如b站，微博，小红书等，可以嗅探到RSShub的订阅地址，如下图所示：
&lt;img loading='lazy' decoding="async" src="https://img.isming.me/image/rsshub-radar-bilibili.png" alt="" />
&lt;/p>
&lt;p>另外，看上面弹出的窗口中是可以直接去预览对应的RSS内的，还可以直接跳转到Follow、FreshRss等订阅源去添加这个订阅源，这些可以在插件的设置中进行设置，如下图所示：
&lt;img loading='lazy' decoding="async" src="https://img.isming.me/image/rsshub-radar-setting.png" alt="" />
&lt;/p>
&lt;p>除了上面的设置，这个插件还支持一些其他的设置，读者朋友可以自行探索。&lt;/p>
&lt;h3 id="总结">总结&lt;/h3>
&lt;p>以上就是关于网站配置和rss订阅方面我的一些建议，而本文的标题也有一些标题党了，欢迎吐槽。&lt;/p>
&lt;h3 id="资料">资料&lt;/h3>
&lt;p>如果读者需要查阅ATOM和RSS的维基百科，请查看英文版本，中文版本内容比较简略，很多发展相关的内容都没有。&lt;/p>
&lt;ul>
&lt;li>ATOM 规范：&lt;a href="https://datatracker.ietf.org/doc/html/rfc4287">https://datatracker.ietf.org/doc/html/rfc4287&lt;/a>&lt;/li>
&lt;li>RSS2.0 协议：&lt;a href="https://www.rssboard.org/rss-specification">https://www.rssboard.org/rss-specification&lt;/a>&lt;/li>
&lt;li>RSSHub-Radar: &lt;a href="https://github.com/DIYgod/RSSHub-Radar">https://github.com/DIYgod/RSSHub-Radar&lt;/a>&lt;/li>
&lt;/ul>&lt;p>&lt;h4>&lt;a href="https://isming.me/2024-10-14-rss-optimize/?utm_source=rss#commentsanchor">看完评论一下吧&lt;a>&lt;/h4>&lt;/p></description><comments>https://isming.me/2024-10-14-rss-optimize/?utm_source=rss#commentsanchor</comments><category domain="https://isming.me/tags/rss/?utm_source=rss">RSS</category><category domain="https://isming.me/tags/%E6%8A%80%E6%9C%AF/?utm_source=rss">技术</category><category domain="https://isming.me/tags/%E6%8A%98%E8%85%BE/?utm_source=rss">折腾</category></item><follow_challenge><feedId>55157116408461322</feedId><userId>61227089652190208</userId></follow_challenge></channel></rss>