PTT Prism - PTT 網頁版閱讀增強工具箱

​ 話說最近可能是 AI 大時代的來臨,PTT 在手機上的 apps 客戶端變得突然很多很多 還有很久沒有更新的 PTT 軟體,也都憑靠著 AI 直接原地復活了 🔥 例如:PTT+ https://pttplus.cc PTT+ 開發者最近回歸也在 PTT 發了一篇文章 https://www.ptt.cc/bbs/iOS/M.1793762028.A.02C.html ​ 我自己最近是都在用 BanaPTT https://banaptt.com BanaPTT 開發者在 PTT 也有發過一篇介紹 https://www.ptt.cc/bbs/iOS/M.1791277390.A.26F.html 比較驚艷的是這套除了常見的 iOS/iPadOS 以外,還有另外支援 macOS 所以我已經用這套取代掉原本會在 Mac 電腦上面使用的 Welly ​ 雖然手機跟電腦在逛 PTT 的時候可以透過各種 apps 來逛 但也會有時候是通過 Telegram Bot 機器人推播新聞或者是網路上分享來的 PTT 網頁版網址 這時候點開就還是會回到瀏覽器上 之前瀏覽器常用的幾個增強腳本也因為時間比較久沒有更新 同時一起啟用,在使用起來會有點衝突跟小毛病 這次就讓 AI 幫我把幾個常用的腳本照著我想要使用的樣子修正並整合為一個新的工具箱 ​ PTT Prism 項目開源地址: https://github.com/jkgtw/PTT-Prism 主要是將 PTT 推文樓層、作者與推文辨識、ID/標題搜尋、圖片收合、imgur/X(Twitter)/meee/YouTube 媒體預覽,以及公開發文/推文 IP 的國家旗幟整合為一套 Userscript 瀏覽器可以使用 Tampermonkey 或者暴力猴之類的工具安裝 Safari 也可以試試看免費開源的 userscripts ​ 整合與新增的功能很多,大致如下: 📝 推文閱讀增強 推文樓層顯示:自動為每則推文標示樓層,滑鼠移至樓層時可查看推、噓、箭頭的個別累計數量。 原 PO 推文高亮:自動辨識文章作者的推文,使用不同背景顏色標示,方便辨認原作者回覆。 相同 ID 推文高亮:點擊推文 ID 或推文內容,即可選取並高亮該使用者的所有推文;再次點擊可取消選取。 動態推文支援:自動處理新載入的推文,持續更新樓層、作者辨識與其他增強功能。 🔎 作者與文章快速搜尋 點擊作者 ID:顯示搜尋選單,可快速查詢該使用者在目前看板、PTT 全站(ALLPOST)及 Google 的相關內容。 點擊推文 ID:提供相同搜尋功能,快速查找特定使用者的歷史文章。 點擊文章標題:使用 PTT 同主題搜尋功能,快速尋找相關討論串。 快捷操作:支援 Ctrl/Command 搭配點擊,在新分頁開啟相關搜尋結果。 🖼️ 圖片與影音預覽 Imgur 圖片支援:自動嵌入 Imgur 圖片,並修正部分圖片無法正常預覽的問題。 Imgur GIF/GIFV 優化:支援使用 MP4 格式播放動圖,減少不必要的流量消耗。 Imgur 相簿預覽:支援相簿圖片載入,可設定初次顯示數量,並按需展開剩餘圖片。 X(Twitter)圖片預覽:自動辨識並嵌入 X/Twitter 圖片連結。 meee 圖片預覽:支援 meee.com.tw 圖片連結的自動嵌入。 YouTube 影片嵌入:直接在文章中顯示 YouTube 影片播放器,支援一般影片、Shorts 與直播連結。 其他媒體支援:支援常見圖片格式,以及 MP4、WebM、Ogg 影片。 圖片點擊收合:點擊圖片即可收合,並以簡潔的佔位按鈕替代;再次點擊即可展開。 延遲載入(Lazy Loading):圖片與影音預覽接近可視區域時才開始載入,降低不必要的資源使用。 PTT 終端機閱讀模式:支援 term.ptt.cc 輕鬆閱讀模式中的部分媒體嵌入功能。 🌍 IP 國家旗幟與地理資訊 發文 IP 國旗:自動辨識文章底部公開的發文 IP,顯示所屬國家/地區的 Emoji 國旗。 推文 IP 國旗:支援顯示公開推文 IP 的國旗;未公開 IP 的推文不會額外顯示標記。 IPv4/IPv6 支援:同時辨識兩種 IP 地址格式。 IPinfo 快速查詢:點擊 IP 地址,即可在新分頁開啟對應的 IPinfo 詳細資訊頁面。 IPinfo Lite API 整合:可自行設定免費 Token,優先使用 IPinfo Lite 查詢國家/地區資訊。 免 Token 查詢:未設定 IPinfo Token 時,自動使用 Free IP API,必要時使用備援服務。 智慧並行查詢:支援多筆 IP 同時查詢,並優先處理目前可視區域附近的推文。 查詢結果快取:相同 IP 不重複查詢,成功結果預設快取 30 天,減少 API 請求。 查詢失敗手動重試:API 查詢失敗時顯示 🌐 圖示,點擊即可重新查詢,並遵守服務端的頻率限制。 國旗位置自訂:可選擇將國旗顯示於 IP 地址左側或右側。 國家資訊提示:滑鼠移至國旗時,可查看國家/地區、IP 及資料來源等相關資訊。 ⚙️ 介面與使用體驗優化 頂部導覽列自動淡化:向下捲動文章時降低頂部導覽列的不透明度,滑鼠移入後恢復顯示。 隱藏底部導覽列:移除文章下方的導覽操作區域,讓閱讀畫面更簡潔。 隱藏頁尾提示:可選擇移除 PTT 頁面底部的提示訊息。 低調文字顯示:自動解除部分低調文字的隱藏樣式,減少額外操作。 自動確認年齡限制:可選擇自動通過 PTT 的 18 歲確認頁面。 推文自動更新:可自行啟用文章推文輪詢功能。 繁體中文設定註解:主要功能均可透過腳本開頭的 CONFIG 調整,並附有繁體中文說明。 注意事項 PTT Prism 主要針對 www.ptt.cc 網頁版設計;term.ptt.cc 僅支援部分媒體預覽功能。 IP 國旗依第三方地理位置資料庫判定,不代表使用者的真實位置或國籍。 部分媒體預覽可能受來源網站的存取限制、跨網域政策或 API 變動影響。 所有功能均可依腳本內的設定參數調整,部分功能預設為停用。 ...

November 14, 2026 · 2 min · jkgtw

中華電信下載 GitHub 的東西超慢?那你有聽過科學上網嗎?

​ 在 2026 年這麼先進的年代,卻真實正在發生的網路慘劇 最近看到不少人在網路上哀嚎,明明家裡辦的是幾百 M、1G,甚至 2G 的中華電信光世代,平常 Speedtest 跑起來也是滿速,但只要從 GitHub 下載東西,速度突然就剩下幾十 KB/s。 滑個 X(Twitter)也是很有趣,文字一下就出來,圖片在那邊轉圈圈,影片更像是在考驗人生耐性 🐢 第一個直覺通常都是: 我家網路壞了嗎? 結果 Speedtest 一跑: 900 Mbps GitHub 再下載一次: 23 KB/s ????? 🤡 ​ 但其實網路上稍微爬一下,就會發現這根本也不是最近才突然冒出來的問題 早在之前就一直有人回報 HiNet 連往部分 GitHub、Fastly CDN 資源時,會發生異常緩慢的狀況 例如 2025 年就有人實測 objects.githubusercontent.com 在尖峰時間只剩下約 1 Mbps 左右 相關討論: 巴哈姆特:最近 HiNet 光纖固網連 Fastly CDN 速度是不是很慢啊 另一篇相關討論 ​ 而這次從大量使用者回報與實際測試的現象來看,問題同樣高度集中在: HiNet → Fastly CDN 這一段網路路徑。 截至本文撰寫時,GitHub 的 objects.githubusercontent.com 解析到的網路屬於 Fastly AS54113,而 X 的部分圖片資源,例如 pbs.twimg.com,同樣也會經過 Fastly。 這就可以解釋一個很奇妙的現象: 你的網路其實沒有「整條壞掉」。 Google 很快 YouTube 很快 ...

September 29, 2026 · 7 min · jkgtw

PTT 每日簽到 - n8n docker 版

​ 忘記在哪邊看到有人問,有沒有 PTT 每日簽到(登入)的 n8n 版? 於是就花了一點時間,讓 AI 寫了一段可以在 n8n JavaScript code node 跑起來的程式碼 但因為需要引入額外的庫,所以需要在 docker compose 還有設定上做一些小變動 😆 首先根據上一篇的 n8n v2 docker compose 為基礎,改為以下: services: n8n: image: n8nio/n8n container_name: n8n restart: always ports: - "5678:5678" # Web UI 端口 volumes: - n8n-data:/home/node/.n8n depends_on: n8n-redis: condition: service_healthy environment: # --- 基本設定 & 時區 --- - GENERIC_TIMEZONE=Asia/Taipei - TZ=Asia/Taipei # --- 資料庫維護 (SQLite) --- - DB_SQLITE_VACUUM_ON_STARTUP=true # 啟動時清理資料庫,用於防止 SQLite 資料庫過大導致效能下降 - DB_SQLITE_POOL_SIZE=1 # 啟用 SQLite WAL 模式效能較高較可靠 - EXECUTIONS_DATA_PRUNE=true - EXECUTIONS_DATA_MAX_AGE=168 # 保留 168 小時內的執行紀錄,視需求可上下調整 - EXECUTIONS_DATA_PRUNE_MAX_COUNT=5000 # 最多保留 5000 筆紀錄,視需求可上下調整 # --- 網路與安全 (反向代理設定) --- # 開啟後,必須透過 HTTPS 存取,否則無法登入,內網 HTTP 使用就設定為 false - N8N_SECURE_COOKIE=true - WEBHOOK_URL=https://n8n.example.com/ # 根據自己網域修改,內網無網域這行可以換成內網 IP - N8N_PROXY_HOPS=1 # 告訴 n8n 前面有一層 Proxy (如 Nginx/Caddy),如內網使用這行可以刪除 - N8N_TRUSTED_PROXIES=0.0.0.0/0 # 信任所有來源的 Proxy 標頭,如內網使用這行可以刪除 # --- 權限與安全性 --- - N8N_ENFORCE_SETTINGS_FILE_PERMISSIONS=true - N8N_GIT_NODE_DISABLE_BARE_REPOS=true - N8N_BLOCK_ENV_ACCESS_IN_NODE=false # false 代表允許 Node 節點讀取環境變數 # --- Task Runners 設定 --- # 這是主節點設定,負責派發任務給 task-runners - N8N_RUNNERS_ENABLED=true - N8N_RUNNERS_MODE=external # 使用外部 Runner 模式 - N8N_RUNNERS_BROKER_LISTEN_ADDRESS=0.0.0.0 # 監聽來自 Docker 內網的連線 - N8N_RUNNERS_AUTH_TOKEN=Your1-awEsome-P0ssWorD # 請務必更改為強密碼 - N8N_NATIVE_PYTHON_RUNNER=true # 啟用 Python 支援 task-runners: image: n8nio/runners # 如有指定版號,runners 版本需與 n8n 本體對齊 container_name: n8n-runners restart: always depends_on: - n8n environment: # --- Task Runners 設定 (Worker 端) --- # 設定主節點的連線位置 (Docker 內部通訊) - N8N_RUNNERS_TASK_BROKER_URI=http://n8n:5679 - N8N_RUNNERS_AUTH_TOKEN=Your1-awEsome-P0ssWorD # 需與上方 n8n 主節點內的一致 - N8N_RUNNERS_AUTO_SHUTDOWN_TIMEOUT=0 # 設定為 0 可避免冷啟動延遲 # 以下為新增的部分,將 runner-javascript 安裝的 modules 儲存下來,避免每次 pull 都要重新安裝 volumes: - ./n8n-task-runners.json:/etc/n8n-task-runners.json:ro - runners-js-node-modules:/opt/runners/task-runner-javascript/node_modules # 啟動後檢查本文章 PTT AutoCheckin JS 所需的庫在不在,不在的話就安裝 entrypoint: - /bin/sh - -lc - | cd /opt/runners/task-runner-javascript if [ ! -d node_modules/ssh2 ] || [ ! -d node_modules/iconv-lite ]; then pnpm add ssh2 iconv-lite fi exec /usr/local/bin/task-runner-launcher javascript redis: image: redis:alpine container_name: n8n-redis restart: always healthcheck: test: ["CMD", "redis-cli", "ping"] interval: 5s timeout: 3s retries: 5 volumes: - n8n-redis-data:/data volumes: n8n-data: n8n-redis-data: runners-js-node-modules: 主要是在 task-runners 做了一些之後 JS 執行環境的準備 ...

January 13, 2026 · 8 min · jkgtw

n8n 2.0 Self-host 實戰:Docker + Task Runners + Caddy 的完整設定筆記

​ 最近 n8n 正式推出 v2.0 大版本更新 🚀,這次更新在安全性、穩定性與整體效能上都有明顯提升 同時前端 Web UI 的 Canvas 介面也有一定幅度的視覺與互動變化 如果你想了解完整的官方更新細節,建議直接閱讀 n8n 官方 Blog 👉 Introducing n8n 2.0 ​ n8n Self‑host n8n 2.0 釋出時,官方依然維持 Self‑host 的彈性,這點對技術使用者來說非常重要 👍 官方也同步持續更新 Docker Image,讓升級流程相對平滑 這篇文章會分享我在升級到 n8n 2.0 之後,實際使用的: Docker Compose 架構 Task Runners 新架構設定 Redis 搭配使用方式 Caddy Server 反向代理與 HTTPS 設定 整體目標是:穩定、好維護、安全、設定不複雜 ​ Docker Compose 架構說明 本次的 Docker Compose 主要包含三個核心服務: n8n(主節點): 負責 Web UI、Webhook 接收、Workflow 管理 task‑runners(Worker 節點): 專門負責執行實際的 workflow 任務 Redis: 作為狀態儲存與跨 workflow / node 的輕量資料存取 這樣的拆分方式,是 n8n 近期引入的新一代執行架構 ...

December 23, 2025 · 3 min · jkgtw

PTT Monitor 新文章通知 - n8n 模版

​ 之前有位 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:alpine container_name: redis restart: unless-stopped volumes: - redis-data:/data volumes: n8n-data: redis-data: ​ ...

August 23, 2025 · 1 min · jkgtw