實做 RSS/Atom feed 的最佳實踐

前陣子看到的文章,在講實做 RSS/Atom feed 的 best practice:「RSS Feed Best Practises」。

最簡單的當然還是丟個 Atom feed 就好,接下來就是一些延伸出來可以多做的事情。

首先有提到 discovery,可以讓 crawler 在抓到 HTML 頁面的時候知道 feed 在哪裡,這對於 user experience 來說蠻重要的,大多數的 feed reader 都可以透過這個方式抓到真正的 feed 位置。舉個例子來說,我丟 https://blog.gslin.org/ 進 feed reader,可以透過 discovery 的方式告訴 feed reader 我的 feed 位置在 https://blog.gslin.org/feed/

<link rel="alternate" type="application/rss+xml" title="Gea-Suan Lin&#039;s BLOG &raquo; Feed" href="https://blog.gslin.org/feed/" />

另外是常見的 cache 問題,這個設起來不算太難,主要是細節很多 XD

後面提到的 WebSub,以前叫做 PubSubHubbub,是一個在 feed 更新後主動通知讓 crawler 來抓的機制。不做的話也還好,現在的 crawler 現在都還蠻聰明的,會針對更新比較頻繁的 feed 常常去確認,但這樣總是會有一些時間差。

不過裡面好像沒提到 Update Services,這是比較早期的方法,走 XML-RPC,雖然也不知道現在有什麼用途了,大概就是這樣所以沒提...

多看兩個來源的整理:Ask Hacker News Weekly 與 Lobsters Daily

之前有訂起來的是「Hacker News Daily」,每天會整理 Hacker News 上的熱門資料。後來發現 Colin Percival 有針對 Ask 的部份另外整理出來,一週一次:「Ask Hacker News Weekly」。

另外是 Lobsters 這個站也還是有一些 active user,裡面的東西偏技術,然後也有人用程式整理出「Lobsters Daily」可以訂。

算是多一些東西可以看...

用 CSS Selector 產生 RSS feed

Hacker News 首頁看到「Show HN: RSS feeds for arbitrary websites using CSS selectors (vincenttunru.com)」這個,程式在 GitLab.com 上的「Feed me up, Scotty!」這邊,另外這個專案名稱是在玩 Star Trek 的梗:「Beam me up, Scotty」,然後這邊講的 RSS feed 已經算是通稱了,實際上大家都是輸出 Atom

他用的設定檔格式是 TOML,文章給的範例:

[funfacts]
title = "Wikipedia — did you know?"
url = "https://en.wikipedia.org/wiki/Main_Page"
entrySelector = "#mp-dyk > ul li"
titleSelector = "b"
linkSelector = "b a"

[wikivoyage]
title = "Wikivoyage recommendations"
url = "https://en.wikivoyage.org/wiki/Main_Page"
entrySelector = ".jcarousel-wrapper .jcarousel-item"
titleSelector = "h2"
linkSelector = "h2 a"

feed-me-up-scotty/src/index.ts 這邊看起來是 TypeScript 專案,然後用 browser 帶起 Firefox 來,可以預期會吃不少資源...

另外 Hacker News 的討論裡有另外提到「Feed Creator」,看起來也是個不錯的專案,有免費版與付費版...

這大慨是我在 2021 年最想不到的事情:Google Chrome 加入 RSS 功能

看到「Google revives RSS」這篇,這大概是我在 2021 年最想不到的事情了:Google Chrome 加入 RSS reader 功能 (雖然很陽春)。

Google 的說明文在「An experiment in helping users and web publishers create deeper connections on Chrome」這邊。

目前只有美國的 Google Chrome Canary 用戶才有機會看到這個功能,依照官方的截圖應該是行動版?

把當年的 Google Reader 吐出來啊...

路透社的 RSS feed

翻資料才發現路透社的 feed 已經不見了,大概是去年 2020 年六月的事情:「Returning the "killed" RSS of Reuters from the dead」。

不過文章裡面提到的替代方案還蠻有趣的,Google News 上可以透過 filter 條件輸出:

https://news.google.com/rss/search?q=when:24h+allinurl:reuters.com&ceid=US:en&hl=en-US&gl=US

不過測了一下台灣自家的新聞媒體網址,看起來不會動... 把網站改成 news.google.com.tw 也不行,如果沒有提供的還是得自己寫...

用事實查核中心的 RSS feed 加上 IFTTT 自動通知到 Line/Telegram/... 內

事實查核中心的澄清內容其實很有趣,可以看到有哪些假消息在流傳,所以想找找看有沒有比較簡單的方法可以設通知...

事實查核中心的官網用的是 netiCRM 這個平台 (看起來底層是 Drupal),而在 HTML 頁面的開頭可以看到 RSS 1.0 的 xmlns 宣告:

  xmlns:content="http://purl.org/rss/1.0/modules/content/"

本來想說直接用 feed 接到 IFTTT 就好了,不過 HTML 頁面上沒有放 feed entry 讓閱讀器可以直接找到 feed 本身,也就是像這樣的標籤資訊:

<link rel="alternate" type="application/rss+xml" title="Gea-Suan Lin&#039;s BLOG &raquo; Feed" href="https://blog.gslin.org/feed/" />
<link rel="alternate" type="application/rss+xml" title="Gea-Suan Lin&#039;s BLOG &raquo; Comments Feed" href="https://blog.gslin.org/comments/feed/" />

找了一下 Drupal 的設定慣例,發現 feed 可能會放在 /rss.xml 這個位置,測了一下發現順利在 https://tfc-taiwan.org.tw/rss.xml 這邊看到 feed,接下來就可以加進 IFTTT 了:

給有興趣想要用 feed 做些事情的人參考看看,像是加到 Line 或是 Telegram 的群組裡面,或是放到 Slack channel 裡面 (Slack 裡應該可以直接在某個 channel 裡用 /feed add https://tfc-taiwan.org.tw/rss.xml 把這個 feed 加進去)。

AWS API Changes

Twitter 上看到 Jeff Barr 提到的,看 whois 資料是去年年底生出來的網域名稱,整理了 AWS 服務上 API 的改變說明:「AWS API Changes」。

有提供 RSS feed 可以訂閱,所以除了可以透過 reader 訂起來以外,也可以透過 IFTTT 這類服務轉到 Telegram 或是其他的 IM 上,不過好像不是官方的服務,但總是比較有系統的整理出來了...

使用 RSS 的呼籲

在「Please Add RSS Support To Your Site」這邊看到文章作者在呼籲使用 RSS (這邊應該是包括 Atom)。

主要是 RSS/Atom 算是很成熟的架構了,有很多工具可以閱讀 (RSS/Atom Reader),提昇閱讀的效率。像我是用 Bazqux,另外也有不少人在使用 Feedly... 而除了訂閱外,RSS/Atom 也可以再串出去接其他東西,像是串到 IFTTT 後就可以接上 IFTTT 上面的應用程式。

除了文章作者的呼籲以外,我自己也對我自己常用的網站操作 (在 GitHub 上的 hasname/feedgen 這邊),把網頁結果轉成 RSS/Atom (裡面大多就是去讀 search 相關功能了),這樣有新東西就可以透過 RSS/Atom Reader 讀到...

把只有標題的 feed 轉成有全文的 feed

中央社華視新聞網都有 feed 可以訂閱 (參考「中央社 RSS資訊服務 訂閱」與「華視新聞網 - RSS訂閱」),但都不是全文 (公視新聞網的反而就直接提供全文了,不需要另外處理),在 Bazqux (一個 feed reader) 裡面讀起來頗麻煩的,想要把這些 feed 轉成有全文的 feed...

這東西不算難寫 (最重要的部份用 Readability 當關鍵字,很多程式語言裡都有 library 可以用),但總是想看看有沒有現成的服務可以直接用,就找到「Free Full RSS」這個了,把本來的 feed 網址丟進去,出來的就是轉成全文的網址了...

目前看起來還 ok,不知道穩定性如何,用一陣子再說...

BazQux 提供 theme、font 的調整功能,與 image proxy

BazQux 是個付費的 RSS/Feed Reader,用了好幾年,難得有個久違的改版...

如同標題所寫的,前面兩個改變還好 (可以自己透過套件插 CSS 進去修改),這次主要是多了 image proxy 讓使用者選擇:「Themes, typography and image proxy」。

還是先回到前面兩個改變:theme 與 font 有不少可以調整的,我是把兩個與字型大小的設定都調到最小,然後把文字寬度調到最大,其他的就看順眼就好 :o

這次提供的 image proxy 對於隱私比較好,但目前的缺點是 img.bazqux.com 的主機在德國,有些圖檔讀起來就比直接連慢很多,這邊的 trade off 也讓使用者可以自己決定。

這次提供的設定是依照 per browser 而非 per account,對我來說這樣子的設計讓我在 UbuntuMac 的機器上可以用不同的設定:

All appearance settings are saved per browser.

這次的改版頗不賴...