Sitemap URL 擷取工具會解析貼上的 XML,並在瀏覽器內將直接的 loc 值以一列一個 URL 的去重複清單形式回傳,無需上傳檔案。Sitemaps 通訊協定定義了兩種結構:一個是包含頁面項目的 urlset,另一個是列出子級 sitemap 檔案的 sitemapindex。擷取工具僅讀取每個 url 或 sitemap 元素的 loc 子元素,會略過像 lastmod 這類選用欄位,也會忽略像 image:loc 這類擴充元素。結果會保留首次出現的順序,並回報偵測到的根類型、經過標準化後保留下多少個不重複的 URL,以及移除了多少個重複項目。由於每個解碼後的 loc 都必須序列化為長度低於 2,048 字元的絕對 HTTP 或 HTTPS URL,任何格式錯誤的項目會讓整次執行失敗,而不是被靜默略過。這會產生一份乾淨的證據清單,可用於稽核、遷移、爬蟲檢查表和試算表作業,但它並不能證明任何關於實際索引狀態、標準化或 HTTP 狀態碼的資訊 —— 那些檢查必須對線上網站執行,而不是對 XML 執行。

擷取工具從貼上的 XML 中讀取什麼
此工具作用於你貼到瀏覽器編輯器中的 XML 文字。它不會下載、解壓縮,或追蹤遠端 sitemap;在編輯器中貼上 URL 也同樣不會擷取任何內容。若要提供輸入,請開啟你儲存的 sitemap 檔案,複製原始 XML,再貼入工具中;若檔案是 gzip 壓縮的,請先在工具外部解壓縮,因為壓縮的 .gz 資料無法作為輸入。
貼上後,解析器會先移除選用的位元組順序記號、XML 宣告與註解,然後再走訪整個結構。它同時支援預設命名空間形式 (xmlns="http://www.sitemaps.org/schemas/sitemap/0.9") 與一致的命名空間前綴,例如 sm:urlset、sm:url 與 sm:loc。DTD 宣告與自訂實體宣告會刻意讓執行失敗 —— 解析器不想靜默展開它尚未審閱的實體,因為隱藏的展開可能會改變輸出的意義。拒絕 DTD 可讓這個小工具的行為保持小而可預期,也代表格式錯誤的來源會以明確的錯誤呈現,而不是以看似完成的局部清單呈現。
urlset vs. sitemapindex:不同的輸入,不同的輸出
許多人貼上 sitemap 後期待一種結果,卻得到另一種。通訊協定定義的兩種核心結構會產生不同的清單,在開始稽核或遷移之前,先知道你手上是哪一種很重要。
| 結構 | 每個 loc 的意義 | 從擷取工具取得的內容 |
|---|---|---|
| urlset | 應該可被探索的一個頁面 | 來自每個 url/loc 的直接頁面 URL |
| sitemapindex | 接著要擷取的子級 sitemap 檔案 | 來自每個 sitemap/loc 的直接 sitemap 檔案 URL |
Sitemap index 是 sitemap 檔案的目錄,而不是遞迴的包裹集合。擷取工具只會回傳 index 內部的檔案位置然後停止;它不會擷取那些檔案,也不會展開其中的頁面 URL。若要從 index 取得頁面 URL,請分別取得每個子檔案,再個別用工具執行一次。如果你需要協助組合反向工作流程的規則,從 URL 清單建立時的 sitemap 通訊協定規則從產生端涵蓋了相同的限制條件。
解析器會拒絕的輸入
解析器刻意保持嚴格。XML 文字以保守方式解碼:僅接受五個預先定義的 XML 具名實體,以及有效的十進位或十六進位數字字元參考,未知的實體會讓執行失敗。loc 內部的巢狀標記、缺少的 loc 子元素、不完整的 url 或 sitemap 項目,以及格式錯誤的根元素,都會讓整個作業失敗,而不是產生局部清單。
解碼後,每個值會透過瀏覽器的 WHATWG URL 實作進行解析。僅有短於 2,048 字元的絕對 HTTP 與 HTTPS URL 可以通過。這代表含有認證資訊、片段、原始空白字元、格式錯誤的百分比編碼、反斜線、相對路徑,以及其他協定的項目都會被拒絕。像 image:loc 這類擴充位置永遠不會被用來取代缺少的頁面 loc,因為它們描述的是不同的資源角色。如果執行失敗,錯誤訊息會刻意對應到編號的 loc 或項目,以便修正來源,而不是被靜默略過。
三步驟從 Sitemap 擷取 URL
- 貼上完整的 XML 文字:從一個 urlset 或 sitemapindex 文件複製到編輯器。不要貼上 URL —— 這個小工具不會下載任何東西。
- 擷取直接的 loc 值並檢視摘要:偵測到的根類型、不重複數量、重複數量,以及完整輸出。清單依照首次出現的順序排列,因此你可以逐行與來源 XML 進行比對。
- 複製一列一個 URL 的清單到剪貼簿,然後依需要對這些 URL 執行個別的線上狀態、標準化、robots 與索引檢查。清單僅作為證據,無法取代對線上網站進行爬取的過程。
若需要同一個工作流程的完整逐步說明與範例,請參閱 Sitemap URL 擷取工具工具頁面。如果你的 sitemap 已接近通訊協定未壓縮的大小上限,且執行因為大小限制而失敗,請將來源拆成較小的檔案,並以 sitemap index 參考這些檔案,然後個別處理每一個。
硬性限制:大小、字元數與重複項目
兩項硬性限制規範著整個執行。瀏覽器工具最多接受 50,000 個不重複的 URL 與 500 萬個 UTF-16 輸入碼位。超過任一上限時會直接失敗而不截斷,因此不會把半解析的清單當作已完成結果呈現。每個序列化後的 URL 也必須少於 2,048 字元,符合通訊協定對 loc 的限制;較長的項目會與其餘執行一起被捨棄。
另一項需要考量的限制是標準化。瀏覽器標準的序列化會將主機名稱轉為小寫並加以驗證、移除預設埠號,並在必要時對非 ASCII 路徑字元進行百分比編碼。序列化為相同值的 URL 會被視為重複,僅會回傳首次出現的那一個。摘要中的重複計數會告訴你這次合併了多少項目。非預期的重複通常代表預設埠號或主機大小寫變體 —— 舉例來說,https://example.com/ 與 https://Example.com:443/ 會序列化為相同的值,僅有一個會保留下來。如果重複數量很多,這是一個有用的訊號,代表你的來源存在值得修正的格式漂移,再重新提交 sitemap。
擷取到的 URL 能證明什麼、無法證明什麼
擷取到的 URL 僅能確認該位置曾出現在貼上的結構中,且通過本工具所揭露的驗證。這並不代表該 URL 可被爬取、是標準化的、有價值的、已被索引或排名。Sitemaps 通訊協定與 Google 的文件將 sitemap 描述為探索提示,而非索引保證,因此任何超出「此 loc 出現在有效的 XML 中」的說法,都需要額外的線上檢查來支持。
請將這份清單作為大型稽核中的證據,而不是索引的證明。請與你資料庫中的標準化 URL、爬取結果、分析工具中的到達頁面,或前一版釋出進行比對。如需進一步了解更廣泛的稽核模式,從 sitemap 擷取連結以進行稽核與遷移指南會逐步說明工作流程中的比對部分。
由於這個小工具僅在用戶端執行,私密的 staging 位置或上線前的 URL 清單會保留在你的裝置上,除非你另行複製。使用這份清單後,請分別檢查實際 sitemap 的回應以及相關頁面 —— 狀態碼、重新導向、robots 指令、noindex 標記與標準化選擇,這些全部都存在於 XML 之外,必須依據 Google 的 sitemap 文件與 WHATWG URL 標準對線上網站進行測試。