你的RSS文章壽命可能只有別人的一半

收錄於新人作家成長紀錄專題

記錄我從零開始的寫作之旅,包括建立部落格、經營社群媒體、尋找自己的聲音,以及一路上的掙扎與成長。

約7分鐘

自架的靜態網站會有一個問題。

那就是你的發布日期通常都懶得加入當下發布的時間。

比如今天發布,就在markdown的frontmatter上寫上publishDate: 2026-04-10

省時省力。反正具體時間也沒有那麼重要。

但這對於RSS閱讀器來說卻是一個致命的錯誤。

為什麼?

閱讀RSS的人一般看的最多的就是Today。它就是這個「社群媒體」或「演算法」的首頁。

RSS閱讀器的Today演算法一般只能參考文章的發布時間(RSS格式中的pubDate),然後保留大約24小時。

如果你不做任何特殊處理的話,你的文章會是默認的UTC 0:00,也就是台灣時間的早上8點發布。

如果你真的是一個早上8點發布文章的人,那就無所謂。但是如果你像我一樣,發布時間不規律,常常拖到晚上才寫文章,並且不等到第二天就立即發布…這就會是一個大問題。

如果你晚上11點發布文章的話,那你的文章到了早上8點就得像灰姑娘那樣say goodbye,退居二線。

人家的文章都有整整24小時的時間來曝光,而因為你「謊報年齡」,你的文章在別人的Today Tab裡只有不到9個小時的曝光時間。

而且,如果你的讀者習慣在早上8點以後閱讀文章並且只看Today的話,你的文章永遠都不會進到對方的Today裡。因為到了早上8點,RSS閱讀器判定你的文章已經存在超過24小時了,下載文章的當下就會把它丟到跟其他上千篇不是Today的文章一起了。

解決方案

那應該怎麼解決呢?我們每次都要輸入發布時間嗎?那樣不是很麻煩?

不用。這裡有一個小技巧。用git的commit時間。

具體怎麼做?不是用什麼script去更新frontmatter,而是在建置網站的時候動態去查git紀錄。

我用Astro架站。Astro在build的時候會生成RSS的XML檔。在生成每一篇文章的<pubDate>時,我不直接用frontmatter裡的日期,而是呼叫一個function去問git:「這個檔案是什麼時候被commit的?」

git log --diff-filter=A --follow --format=%aI -1 -- "文章路徑"

這條指令會回傳這個檔案第一次被加入git的commit時間,精確到秒。

所以整個流程是這樣的:

  1. 你在markdown的frontmatter寫publishDate: 2026-04-10(只有日期,沒有時間)
  2. 你晚上11點寫完文章,git commit,然後部署
  3. 網站build的時候,RSS生成程式去查git,發現commit時間是2026-04-10T23:00:00+08:00
  4. 這個精確的時間就變成RSS裡面的<pubDate>

你不需要改任何習慣。你照常只寫日期,git幫你補上時間。

但有兩個例外要處理

草稿先提交,之後才發布

我有時候寫文章會先commit一個draft: true的版本,改個幾天後才把draft: true拿掉正式發布。

如果只看「檔案第一次加入」的時間,拿到的會是幾天前開始寫草稿的時間,不是正式發布的時間。

所以程式會先檢查:這個檔案有沒有被修改過draft: true這個字串?如果有,就用那次修改的commit時間——也就是你把draft: true刪掉、正式發布的那一刻。

git log -S "draft: true" --diff-filter=M --format=%aI -1 -- "文章路徑"

提前commit但還沒到發布日

有時候你會提前幾天把文章commit好,但publishDate設在未來。這時候git的commit日期跟發布日期對不上。

我的做法是:只有當commit日期跟publishDate是同一天的時候,才使用git的時間。 如果對不上就fallback。

預備方案

萬一有什麼問題,我們還是可以fallback到固定時間。但是如果你通常不是早上發布的話,我建議設置成中午11點或12點,甚至晚上11點,而不是默認的UTC 0:00。這樣早上9點閱讀的人才不會miss out。

在無聊研究NetNewsWire的演算法的時候,我發現它竟然會在Today顯示未來的文章。所以如果你真的想讓你的文章壽命最大化的話,可以選擇放晚上11:59,甚至放成未來某一天。這樣你的文章在Today裡的壽命可以從24小時提升到約40小時以上。

不過我自己不推薦這樣做,有點像是作弊,而且不一定所有的RSS閱讀器都會顯示未來的文章。還不如像我上面寫的那樣,給你的文章它應有的24小時曝光時間。

結語

我也是最近才發現這個問題。而且我的RSS Feed裡面有一半的人都有這個問題。比如MarcusJaronWenShuojen

我相信我們寫文章就像是父母一樣希望自己的孩子能夠好好過好人生並能有機會綻放他們的光芒。

但因為自己一個小小的疏忽,讓孩子的人生沒有得到他們應有的機會,很可惜。

不過也沒有真的像養小孩那麼嚴重啦。

趕快改過來,或是直接把這篇貼給你的AI,讓你未來的文章都擁有它們應有的人生!

(不過用RSS的人其實也沒那麼多XD)

Alex Hsu

Alex Hsu 斜槓少年

獨立開發者新手Youtuber盲盒音樂礦工,想成為作家ADHD
紀錄持續學習、創作和追求簡單的感悟。