自動化

情報雷達 Info Radar —— 全自動資訊蒐集儀表板

情報雷達 Info Radar —— 全自動資訊蒐集儀表板

追蹤一個主題的最新消息很花時間:要開新聞、開 YouTube、自己過濾重複的內容。 情報雷達把這整件事自動化 —— 每小時整點自動蒐集、去重、AI 摘要, 我只要打開一個網頁,就能看到「這小時的重點整理」,每一則都附原始出處連結。

(第一個追蹤的關鍵字是 TWICE —— 沒錯,跟我的 Discord 機器人 是同一個宇宙 😄)

架構

每小時整點 (Cron)


 Cloudflare Worker
   ├─ Google 新聞 RSS ─┐
   ├─ YouTube Data API ┤→ 去重 → Claude 摘要 → 存進 D1 → 產生重點整理
   └─ Claude API ──────┘


 D1 資料庫  ◀── 網頁前端讀取顯示

整套系統沒有一台自己的伺服器:排程、程式、資料庫、前端全部跑在 Cloudflare 上(免費方案),我的電腦關機它照樣工作。

設計上的關鍵決定

成本意識貫穿整個設計

  • AI 只在有新資料時才呼叫,沒新東西就不花錢
  • 摘要用 Claude Haiku(最便宜的模型),一個月通常幾塊美金內
  • 免費方案每次執行有 50 個子請求上限,所以每輪限制每個關鍵字的新資料處理量

沒有金鑰也能跑(優雅降級)

沒 YouTube 金鑰 → 只少一個來源;沒 Claude 金鑰 → 摘要退回原文片段。 每個外部依賴都是「加分項」而不是「單點故障」。

誠實面對做不到的事

X / Instagram / Threads 沒有接 —— 官方 API 不是太貴就是限制多,爬蟲不穩又違反條款。 與其硬做一個會壞的功能,不如把擴充點留好(collector 介面),等有可靠的資料來源再加。

技術細節

  • Cloudflare Workers(TypeScript):Cron 觸發 + API + 靜態前端
  • D1(SQLite):存所有蒐集到的資料,用內容雜湊去重
  • collector 模式:每個來源一個檔案,Promise.allSettled 並行抓取, 一個來源掛掉不影響其他來源
  • 金鑰全部用 wrangler secret 管理,不進程式碼

我學到的東西

  • Serverless + Cron 的架構:不用管伺服器也能做全天候自動化服務
  • 在免費額度的約束下設計系統(子請求上限、API 配額、模型成本)
  • Promise.allSettled 式的容錯思維:部分失敗不等於全部失敗

← 回到作品集