如何知道 GPTBot 有沒有在爬你的網站?weken.news 的即時追蹤系統
直接回答
在 Astro middleware 攔截所有 HTTP 請求,比對 User-Agent 辨識 13 種 AI 爬蟲(GPTBot、ClaudeBot、PerplexityBot 等),命中後寫入 Upstash Redis 的四個計數器(累積總數、每日、各爬蟲、各頁面),透過 /stats 頁面即時顯示。
AEO 最難的問題是:你不知道有沒有效。
Google 的排名你可以在 Search Console 看到。 但 ChatGPT 有沒有爬你的網站、有沒有在學你的內容——沒有官方工具。
所以我自己建了一個。
—
系統架構
四個 Redis 計數器,追蹤不同維度的數據:
wkn:ai:total — 累積 AI 到訪總數
wkn:ai:daily:YYYY-MM-DD — 每日到訪數(保留 30 天)
wkn:ai:bot:爬蟲名稱 — 各 AI 爬蟲分別計數 (GPTBot、ClaudeBot、PerplexityBot 各自獨立)
wkn:ai:page:路徑 — 各頁面被爬次數 (/articles/xxx 被哪些頁面吸引更多 AI 注意)
—
技術細節
Astro 的 Middleware 攔截所有 HTTP 請求,不影響頁面渲染。
偵測到 AI User-Agent 後,用 Promise.all 並行寫入四個計數器。
await Promise.all([
redis.incr('wkn:ai:total'),
redis.incr(`wkn:ai:daily:${date}`),
redis.incr(`wkn:ai:bot:${botName}`),
redis.incr(`wkn:ai:page:${path}`),
]);
四個寫入同時發出,延遲幾乎為零。 如果 Redis 寫入失敗,靜默處理不影響用戶請求。
—
建設時間
Astro middleware + Upstash Redis + /stats 頁面 + API route:
手動估計:8 小時(研究 Middleware、Redis 整合、debug、部署)
實際完成:約 1.5 小時(含修兩個 Vercel 部署 bug)
省下:約 6.5 小時
—
現在的數字
/stats 頁面即時顯示數據: https://weken.news/stats
截至 2026-04-14:累積 AI 到訪 0 次。 等第一隻爬蟲來的時候,這個數字就有意義了。