命令列與線上 sitemap 產生器解決的是兩個不同的問題:CLI 工具通常會爬梳您的具體網站以探索 URL,而線上 list-to-XML 工具(例如 XML Sitemap Generator)則是把您已經整理好的 URL 清單,轉成符合標準格式的 sitemap.xml 檔案。從這一句話延伸出的選擇,幾乎決定了這次比較中所有其他決策。當您的內容不需要登入、集中在單一主機,並且規模小到能單次走完時,CLI 爬蟲就能發揮作用。當您已經信任手上的 URL 清單(通常是因為它來自分析工具、CMS 匯出或先前的爬梳結果),而您只需要一份格式正確、可下載的 XML 檔案時,線上 list-to-XML 產生器就能派上用場。由於兩種方法對應的起點不同,「命令列 vs 線上」這個問題,很少是問哪個全面比較好,幾乎總是在問哪個符合您手上實際準備好的資料。釐清這個差異,可以避免最常見的錯誤:對一個 URL 清單已經確定的網站執行爬蟲,或是試圖憑半記得的頁面清單去建立 XML 檔案。

「命令列」與「線上」對 Sitemap 而言實際代表什麼
大多數搜尋「sitemap generator command line vs online」的使用者,至少都用過終端機或網頁工具一次,並且希望在兩者之間有清楚的分工。命令列 sitemap 工具是您在伺服器上安裝或執行的程式。範例包括專門的 Go 或 Node CLI、會呼叫公開端點的 Python 腳本,以及包裝既有爬蟲函式庫的 shell 包裝腳本。它的核心行為是工具自行請求頁面:抓取首頁、追蹤找到的連結、標準化所發現的內容,並把結果 XML 寫入磁碟上的檔案。許多 CLI 工具也會產生 sitemap index、將輸出 gzip 壓縮,並提供爬蟲深度、使用者代理、請求延遲與排除路徑等旗標。
線上 sitemap 產生器是範圍更廣的一類,值得再分成兩種。第一種是代管的爬蟲:您在網站上輸入網域,由該網站從自己的伺服器爬取頁面,然後您下載結果。第二種是 list-to-XML 工具,也就是 XML Sitemap Generator 屬於的這類。list-to-XML 工具接受貼到頁面上的純文字 URL 清單,逐行依 sitemap 通訊協定驗證,使用瀏覽器的 URL parser 進行標準化與序列化,依首次出現去重,最後輸出一份可下載的 sitemap.xml,過程中完全不會對這些 URL 發出任何網路請求。
命令列 Sitemap 工具更合適的時機
當瓶頸在於「探索」而非「格式化」時,命令列工具就值得採用。CLI 合用的具體情境包括:全新的網站,內部連結剛重新設計、URL 尚未列舉完成的大型目錄;不這麼做就要耗時數天的探索工作;可在預備環境中限速並從主機本身追隨重新導向的階段環境;以及在每次部署時重新產生 sitemap 的 CI 管線整合。CLI 工具通常也提供線上工具難以匹敵的旗標:依路徑的包含與排除規則、從 HTTP Last-Modified 標頭取得的 lastmod,以及在 URL 數量超過通訊協定上限 50,000 條時,把輸出切分成 sitemap index 的選項。
執行 CLI 工具的代價是真實存在、值得明說的。它需要 shell 存取、需要設定一個能安裝相依套件的環境,並且需要確信伺服器被允許快速爬取自己的頁面,而不會觸發速率限制、WAF 規則或僅限預備環境的防火牆。CLI 爬蟲也可能抓到原本不打算發布的頁面:管理員路徑、內部搜尋結果、標籤彙整頁、帶分頁的留言 feed、由參數產生的重複頁,以及對爬蟲看起來像真實頁面的 soft-404 URL。list-to-XML 工具則永遠不會不小心納入這些,因為它只會收錄被輸入到編輯器的 URL。
線上 List-to-XML 工具更合適的時機
像 XML Sitemap Generator 這樣的線上 list-to-XML 工具,適用於探索已經完成、實際只需要那份檔案的情境。URL 清單可能來自 CMS 匯出、先前的爬梳、用於已建立索引到達頁的分析篩選器,或是行銷團隊核准過、手工整理的一組標準 URL。這種情況下,工具的工作範圍很窄、很明確:逐行驗證、以瀏覽器的 URL parser 序列化每一筆被接受的 URL、依首次出現去重、可選擇加入共用的 lastmod、changefreq 或 priority,並在官方 http://www.sitemaps.org/schemas/sitemap/0.9 命名空間下產生 XML 檔案。一切都在當前的瀏覽器分頁中執行,因此沒有任何 URL 或 XML 會被上傳到遠端伺服器。
list-to-XML 做法也適合敏感環境。處於合規審查中的網站、內部尚未上線的版本,以及預備鏡像,都可以在不安裝任何軟體、不執行會留下請求紀錄的爬蟲的情況下完成對應。編輯 URL 清單、更換主機,或修改可選的中介資料,都會立即撤銷先前的下載,不會留下任何過期的 XML 檔案。當某一行發生錯誤(片段、憑證、不同主機的非預設連接埠、格式錯誤的百分號跳脫、前後多餘的空白字元)時,整個產生程序會直接失敗,而非悄悄略過該行,這讓定位需要修正的特定 URL 變得更簡單。
如何從一份已審核的 URL 清單建立 sitemap.xml
把 list-to-XML 方法實際套用到 XML Sitemap Generator,只需五個具體步驟。整個過程都不需要 shell 存取、伺服器或預備環境。
- 開啟工具,在 URL 清單中每行貼上一個絕對的 HTTP 或 HTTPS 頁面 URL。同一個檔案只放同一個主機。如果網站在同一個主機上同時提供兩種協定,兩者都可以包含;若使用非預設連接埠,請讓檔案中每個 URL 都使用一致的連接埠。
- 如果只需要 loc 項目,請把選填的 lastmod、changefreq 和 priority 欄位留空。否則請提供一個對檔案中所有 URL 皆屬真實的共用值,例如 URL 清單上次審核的日期、一個確實適用於整組的單一變更頻率,或一個介於 0.0 到 1.0 之間的單一優先權。
- 點擊「Generate」並讀取頁面上的結果。產生器會逐行驗證、以瀏覽器的 URL parser 標準化每個 URL、移除重複項並保留首次出現、跳脫 XML 實體(和號(&)、單引號、雙引號、大於、小於),並顯示完整檔案與行數。
- 檢視輸出中的重新導向、重複頁、被封鎖的頁面、私密頁面與缺漏的頁面。檔案的準確度完全取決於所提供的 URL 與中介資料,因此這個檢視步驟才是真正確保符合通訊協定的地方。
- 從頁面上的暫存 Object URL 下載 sitemap.xml。將其發布到代表網站的慣用位置,接著若流程需要,可從 robots.txt 引用它。
下載之後,典型後續工作是把 sitemap 提交給對該網站重要的搜尋引擎。XML Sitemap Generator 不會代替使用者提交,也不會寫入 robots.txt 規則,因此這些步驟都在工具之外。檔案本身是一份完整、UTF-8、帶命名空間的 XML 文件,可透過 FTP 上傳、經由 CI 構件推送,或貼進靜態網站產生器中。
限制、驗證,以及兩種方法都無法解決的事
Sitemaps XML 通訊協定允許每個檔案最多 50,000 個 URL 以及最多 52,428,800 個未壓縮位元組。Google 的 build and submit a sitemap documentation 反映了相同的限制。XML Sitemap Generator 採用刻意較低的整檔上限:10,000 個不重複 URL、5,000,000 個 UTF-16 輸入碼元,以及 10,485,760 個 UTF-8 XML 位元組。較低的上限是用來限制解析、預覽、Blob 記憶體與瀏覽器分頁大小,讓工具在超出時明確失敗,而不是產生被截斷的檔案。每個上限都是全有或全無:第 10,000 個不重複 URL 會被接受、下一個不重複 URL 會被拒絕;剛好 10,485,760 位元組的檔案會被接受、多一個位元組就會被拒絕。重複的行不會佔用輸出名額,因此雜訊較多的清單不會悄悄縮減檔案。
驗證是通訊協定規則真正落實的地方,兩種方法都必須遵守。每個非空白行都必須是絕對的 HTTP 或 HTTPS URL,每個檔案只能有一個序列化的主機,並包含任何非預設的連接埠。裸網域、相對路徑、FTP URL、原始空白字元、控制字元、格式錯誤的百分號跳脫、嵌入式憑證、片段、非空白行的前後空白,以及非絕對的輸入,都會被拒絕。只要有一行失敗,整個產生程序就會失敗;不會略過、不會悄悄丟棄。若提供了選填的中介資料,必須是真實的:lastmod 必須是符合真實的西曆 YYYY-MM-DD 日期,或是包含秒與 Z 或有效 UTC 時區偏移的完整日期時間;changefreq 必須是 always、hourly、daily、weekly、monthly、yearly、never 之一;priority 必須是介於 0.0 到 1.0 之間的小數。無效的選填中介資料會讓整個產生程序失敗,而不只是失敗的那一筆。
無論是 CLI 爬蟲還是線上 list-to-XML 工具,都不會驗證 HTTP 狀態、檢查 canonical 標籤、追隨重新導向、檢查可索引性,或把結果提交到搜尋引擎。這些都是發布前的審查工作。Sitemap 的 priority 與 changefreq 只是通訊協定中的提示,既不是抓取指令,也不是排名訊號。XML Sitemap Generator 不會產生 sitemap index、image、video 或 news 擴充、hreflang 標記、gzip 檔案、robots.txt 規則,也不會提交到 Search Console。若需要快速查閱該工具強制執行的所有規則,XML Sitemap Generator cheat sheet 將驗證行為彙整在同一頁中。
Command Line vs Online Sitemap Generator at a Glance
The dimensions that most often decide between a CLI crawler and a list-to-XML utility can be read off a single table. None of these rows are computed from the tool; they describe the relationship between the two methods so the right choice is visible before any line is pasted or any flag is set.
| Dimension | Command Line Crawler | Online List-to-XML Tool |
|---|---|---|
| Starting input | A domain to crawl from scratch | A reviewed URL list already on hand |
| Network behavior | Requests every page from the host | No outbound requests; runs in the browser tab |
| Where data is processed | On the machine or server running the CLI | Inside the current browser tab |
| Discovery of new URLs | Yes, by following links | No, only the URLs pasted in |
| Typical use cases | New sites, large catalogs, staging audits, CI rebuilds | Existing URL lists, sensitive sites, quick republishes |
| Limits to watch | Crawl depth, request rate, host throttling | 10,000 unique URLs and 10 MiB per file |
| Failure mode | Often silent skips; results vary by tool | All-or-nothing rejection of bad lines and bad metadata |
Picking between the two comes down to one question: do you need to discover URLs, or do you already have them. If discovery is the bottleneck, install a CLI crawler and budget time for filtering the noisy output it inevitably produces. If the URL list is already trusted, the online list-to-XML path is faster, leaves no request logs behind, and fails loudly on every line that does not match the sitemap protocol. The XML Sitemap Generator sits firmly in that second category and is the right choice whenever the answer to that question is "I already have the list."