命令列與線上 sitemap 產生器解決的是兩個不同的問題:CLI 工具通常會爬梳您的上線網站來探索 URL,而像 XML Sitemap Generator 這類線上 list-to-XML 工具,則是把您已整理好的 URL 清單轉換成符合標準格式的 sitemap.xml 檔案。這一句話所衍生的選擇,幾乎決定了本次比較中所有其他決策。當您的內容不需登入、位於單一主機之下,且規模小到可在一次處理中走完時,CLI 爬蟲就能派上用場。當您已經信任手中的 URL 清單(通常是從分析工具、CMS 匯出,或前一次的爬梳結果取得),而且只需要一份格式正確、可下載的 XML 檔案時,線上 list-to-XML 工具就能派上用場。由於兩種方法各自針對不同的起點,「命令列 vs 線上」這個問題很少是誰絕對比較好,幾乎總是看哪個更符合您手上實際擁有的資料。理解這個差異,就能避免最常見的錯誤:對一個 URL 清單早已明確的網站白白執行爬蟲,或是憑印象拼湊的網頁清單試圖產出 XML 檔案。

sitemap generator command line vs online
Sitemap Generator 命令列 vs 線上:如何抉擇

「命令列」與「線上」在 Sitemap 中的真正意涵

大多數搜尋「sitemap generator command line vs online」的人都已經用過終端機或網頁工具至少一次,想在兩者之間取得清楚的分工。命令列 sitemap 工具是一套安裝或執行在伺服器上的程式,例如專門的 Go 或 Node CLI、呼叫公開端點的 Python 指令稿,以及圍繞既有爬蟲函式庫撰寫的 shell 腳本。其決定性行為在於工具本身會主動請求頁面:它擷取首頁、循著找到的連結前進、將發現的內容正規化,並把最終的 XML 寫入磁碟上的檔案。許多 CLI 工具也能產生 sitemap index、將輸出 gzip 壓縮,並提供爬梳深度、user agent、請求延遲與排除路徑等旗標。

線上 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 URL 協定上限時將輸出切分為 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

使用 XML Sitemap Generator 將 list-to-XML 的作法付諸實踐,分成五個具體步驟。整個過程都不需要 shell 存取權、伺服器或測試環境。

  1. 開啟工具,將一筆完整的 HTTP 或 HTTPS 頁面 URL 逐行貼入 URL 清單。一個檔案只使用單一主機。如果網站對同一個主機同時提供兩種通訊協定,兩者皆可納入;如果使用非預設埠號,請在檔案中所有 URL 上保持一致的埠號。
  2. 如果只需要 loc 欄位,請將可選的 lastmod、changefreq 與 priority 欄位留白。否則,請提供一個對檔案中所有 URL 都適用的真實共用值——例如 URL 清單上次審核的日期、整個集合真正適用的單一更新頻率,或介於 0.0 與 1.0 之間的單一 priority 值。
  3. 點擊 Generate,並閱讀頁面上的結果。產生器會逐行驗證、使用瀏覽器的 URL parser 將每個 URL 正規化、在保留首次出現的情況下移除重複項目、轉義 XML 實體(&、'、"、>、<),並顯示完整檔案內容與行數。
  4. 檢視輸出內容中的重新導向、重複頁面、被封鎖的頁面、私密頁面以及缺漏的頁面。檔案的正確性完全取決於所提供 URL 與中介資料的品質,因此這個檢視步驟才是真正確保符合協定的環節。
  5. 從頁面上提供的臨時 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 的 建立並提交 sitemap 說明文件 也反映了同樣的限制。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 時差的完整日期時間;changeffreq 須為 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 速查表 已將驗證行為彙整在同一頁中。

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."

If you're weighing options, Open Graph Generator: Command Line vs Online Tradeoffs covers this in detail.