之前有位 PTT 網友開發的 PTT Alertor 服務蠻好用的,但是前幾年機器人突然掛了,原作者可能比較忙沒繼續維護就不能用了
所幸原作者有將整個服務開源,所以又有熱心的網友搭了另外的 PTT 新文章通知服務
同樣也是無償的服務所以也留了個但書,也就是不能保證服務能持續多久
我之前也有用 n8n 的 RSS Trigger 來訂閱新文章通知,但透過 RSS 的訂閱只能監測到標題與作者 ID
還缺少跟 PTT Alertor 一樣可以追蹤推文數的功能 🫣
只有監測標題的話,在特定版面特定功能還能使用,例如在遊戲版出現「限免」時就馬上發通知是沒有問題的
但在像是省錢版或者信用卡版,有時文章只是詢問或者沒有達到一定討論度跟推文次數,馬上發通知就太早了
有時會想看看其他網友在底下的留言與推薦達到一定數量之後再發通知,這時候推文數的監測也就很有用了
於是也就萌生自己用 n8n 也搭一個有類似功能的 PTT 新文章通知服務給自己用,另外在台灣蘋果同好群與日本旅遊群都有導入
目前已經正常穩定服役一段時間,也有不少群友在詢問,所以就整理一下,讓大家都能用 n8n 輕鬆搭一套自己的 PTT Monitor 服務 😁
PTT Monitor 有利用到 redis 來紀錄已發送過通知的網址,所以如果你是參考我之前一篇關於 n8n 來搭建的話
我們要改一下之前 docker compose 檔案,加個幾行把 redis 服務跟著 n8n 一起啟動
services:
n8n:
image: n8nio/n8n
container_name: n8n
restart: unless-stopped
environment:
- EXECUTIONS_DATA_PRUNE=true
- EXECUTIONS_DATA_MAX_AGE=168
- EXECUTIONS_DATA_PRUNE_MAX_COUNT=5000
- GENERIC_TIMEZONE=Asia/Taipei
- TZ=Asia/Taipei
ports:
- 5678:5678
volumes:
- n8n-data:/home/node/.n8n
depends_on:
- redis
redis:
image: redis
container_name: redis
restart: unless-stopped
volumes:
- redis-data:/data
volumes:
n8n-data:
redis-data:
正常啟用 n8n 以後,使用瀏覽器打開,接著新建一個 workflow,打開下面連結後拷貝所有內容,然後貼到 n8n 裡面
貼完以後沒意外就會看到下面圖片的內容,黃色 note 部分已經將需要手動設定的 node 標注
首先是「編輯 PTT 目標網址」,請雙擊點進去設定「URL」,要注意的是這邊要貼你要監測的 PTT 網頁版第一頁網址
如上圖,是 PTT 的省錢版網頁版第一頁網址 https://www.ptt.cc/bbs/Lifeismoney/index.html
如果是 iOS 版那就是 https://www.ptt.cc/bbs/iOS/index.html
要看帥哥美女的表特版 https://www.ptt.cc/bbs/Beauty/index.html
接著是 CheckRank 的 IF node,這裡可以設定你要多少推文讚數後以及過濾排除某人或者特定標題的地方
如上圖,第一個紅區塊就是設定推文讚數超過 15 時
第二個紅區塊是排除特定作者 ID 的文章,上圖這邊是排除版主的文章
第三個紅區塊是排除特定標題,上圖這樣設定是排除任何標題有出現 [公告] 的文章
如果還需要更多過濾選項也可以自己點下面的「Add condition」增加更多條件即可 ☺️
下一步設定一下你要推送的 Telegram Chat ID,可以是你個人 ID,就會是私訊的,或者是你要發到群組或頻道都可以
最後就是紅色 icon 的 redis node,這兩個 redis node 主要是拿來紀錄已經發送過的 link,這樣你才不會一直收到同一個 link 通知
如果你是用我上面的 docker compose 建立的 redis 服務,那麼在 n8n 裡面的設定就很簡單,如下圖就能搞定
以上設定完畢後,就能點看看 n8n 下面的紅色 Execute workflow 測試跑一次
沒意外的話,就能收到跟上面圖片類似的 Telegram 通知 🖖