這篇日誌記錄的是一次很小、但很典型的 SEO / Ops 問題:aDict landing page 的 sitemap 在 Google Search Console 裡長時間顯示無法擷取。問題本身不大,只有三個 URL;但它暴露的是另一件事:Search Console 是黑箱系統,當 UI 只給出模糊狀態時,工程判斷必須回到可驗證的控制變量。
最後有效的方向,不是繼續改 GitHub Pages 上的 sitemap 檔名,也不是等待 .cc 自定義域名自然恢復,而是把 sitemap 交給 Cloudflare Worker,並用 workers.dev URL prefix property 在 GSC 裡驗證 Googlebot 是否真的能讀到。
aDict landing page 部署在 GitHub Pages,使用自定義域名 adict.ronniewong.cc。正常情況下,這種靜態站只需要 robots.txt 指向 sitemap.xml,然後把 sitemap 提交到 Search Console。
但實際情況是,GSC 對多個 sitemap 變體都顯示無法擷取。嘗試過的方向包括:標準 /sitemap.xml、/sitemap-gsc.xml、/sitemap.txt、巢狀 /sitemap/sitemap.xml、sitemap index,以及後來的 sitemaps.ronniewong.cc 自定義域名。這些在瀏覽器與 curl 看起來都不是明顯壞檔案,但 GSC UI 仍然無法給出有用原因。
這裡最麻煩的不是 sitemap XML 格式本身,而是 UI 訊號太弱。它看起來像一個需要等待的狀態,但等待兩天後仍沒有進展,繼續把它解釋成「Google 需要時間」已經不再可靠。
後來用 Search Console API 讀 sitemap 狀態時,看到的不是明確錯誤,而是 isPending: true、errors: 0、warnings: 0,並且沒有 lastDownloaded。這表示 UI 的「無法擷取」不一定等於 XML 壞掉,也不一定等於 HTTP 404 / 500。更像是:GSC 沒有成功完成一次有效下載,但也沒有把原因分類成錯誤。
這個差異改變了排查方式。若 API 已經顯示沒有 errors/warnings,繼續微調 XML 內容的收益就很低;更應該改變 host、property、提交路徑,測試 Googlebot 是否能通過另一條完全不同的入口讀取同一份 URL 清單。
一開始的自然反應,是把 sitemap 做成更多 Search Console 可能接受的形狀。於是出現了 sitemap-gsc.xml、純文字 sitemap、巢狀 sitemap、sitemap index 等變體。這些做法本身不是錯,但它們其實還在同一個假設裡:問題來自 sitemap 檔案形態。
後來的實驗說明,這個假設很可能不是核心。因為不同形態在 GSC 裡都卡住,甚至換到 .cc 子域名 sitemaps.ronniewong.cc 也沒有立刻變成可靠答案。真正需要被隔離的變量,是 host 和 Google 對這個 host/property 的讀取行為。
最後建立了一個 Cloudflare Worker:ronniewong-sitemaps.ronnie.workers.dev。Worker 只做很小的事情:提供 /adict.xml,裡面列出 aDict landing page 的三個 URL:首頁、support、privacy。
接著在 GSC 裡新增 https://ronniewong-sitemaps.ronnie.workers.dev/ 的 URL-prefix property,透過 Worker 回傳 HTML verification file 完成驗證,再提交 https://ronniewong-sitemaps.ronnie.workers.dev/adict.xml。這一步的價值在於,它不再依賴 GitHub Pages,也不再依賴 .cc custom domain。
幾天後,GSC 狀態變成成功。API 也確認 isPending: false、errors: 0、warnings: 0,並出現 lastDownloaded: 2026-04-30T15:24:38.290Z。提交的 URL 數量是 3,這正好對上 Worker sitemap 內容。
這次經驗最重要的結論是:當 GSC 對 GitHub Pages custom domain 的 sitemap 長時間卡在無法擷取,而同一組 URL 透過 workers.dev sitemap 可以成功時,問題就不應該再被歸因為 sitemap XML 內容。更合理的判斷是,GSC 對原 host / custom domain / property 的下載路徑存在某種不可見問題。
這不代表 GitHub Pages 一定不能放 sitemap,也不代表 .cc domain 一定有系統性問題。它只說明在這個案例裡,繼續在原路徑上等待或改檔名,已經不是高收益行動。有效答案是把 sitemap 服務獨立出來,讓 Google 可以從另一個可驗證 host 讀取。