實戰手冊 · Field Manual 2026 春季號
github.com/0xMassi/webclaw · 1.5k ★
w
實戰手冊 · 網頁擷取 / LLM 資料管線

把網站,
轉成 LLM 讀得懂的
乾淨文本

webclaw 是以 Rust 寫成的本地優先網頁內容擷取工具,把網站轉換成乾淨的 Markdown、JSON 與結構化資料。它面向 AI agent、RAG 流程與 LLM 取用情境,提供單頁擷取、同源爬取、批次抓取、結構化資料萃取、品牌資產擷取與頁面快照比對,並可透過 CLI、REST API、MCP server 或 TypeScript / Python / Go SDK 呼叫。

1.5k
GitHub Stars
167
Forks
5
輸出格式
AGPL-3.0
開源授權
01
這是什麼

把網頁轉成
結構化資料的擷取引擎。

webclaw 是一支命令列工具與函式庫,把任意網址的內容抽取成結構化、適合 LLM 取用的格式。語言以 Rust 為主(95.4%),強調本地優先(local-first):預設在你自己的機器上執行,不需要把目標網址或抓取結果送往第三方服務,並提供可選的 hosted API。

問題出在輸入端。LLM 與 RAG 流程需要乾淨的文字,但原始 HTML 夾雜導覽列、頁尾、廣告與腳本。webclaw 負責把這些雜訊移除,輸出 Markdown、純文字、JSON、LLM 專用格式或精簡 HTML。你可以只保留主要內容(--only-main-content),或以 CSS selector 指定 --include / --exclude 範圍。

擷取之外,webclaw 能沿同源連結爬取(--crawl,可設 --depth--max-pages)、僅列出網址而不擷取(map)、並行批次抓取多個網址、萃取結構化資料與摘要、以 diff 工具比對頁面快照,以及擷取品牌資產(顏色、字型、logo)。整套工具拆成數個 Rust crate:webclaw-corewebclaw-fetchwebclaw-llmwebclaw-pdfwebclaw-mcpwebclaw-cli

webclaw 擷取流程 · 從網址到 LLM 輸入
Fetch Clean Convert Extract Output
Fast, local-first web content extraction for LLMs.
— webclaw 專案自述
02
安裝

四種安裝路徑,
最快的是 Homebrew

webclaw 提供四種安裝方式:Homebrew、npx、Cargo 與 Docker。在 macOS 或 Linux 上,Homebrew 是最直接的路徑。

# 加入 tap 後安裝 CLI brew tap 0xMassi/webclaw brew install webclaw

其他安裝方式

要在 AI agent 專案內初始化,用 npx create-webclaw。要從原始碼編譯,用 Cargo 分別安裝 CLI 與 MCP server。不想安裝在本機,可直接用 Docker 映像執行。

# Agent 專案初始化 npx create-webclaw # 從原始碼安裝 CLI 與 MCP server cargo install --git https://github.com/0xMassi/webclaw.git webclaw-cli cargo install --git https://github.com/0xMassi/webclaw.git webclaw-mcp # 用 Docker 直接執行(免安裝) docker run --rm ghcr.io/0xmassi/webclaw https://example.com
不只 CLI。webclaw 內建 MCP server(webclaw-mcp),可直接接到支援 Model Context Protocol 的 AI agent;另提供 REST API 與 TypeScript / Python / Go SDK。本地優先設計讓抓取預設在自有機器上完成,若有需要也可改用官方 hosted API。
03
能力總覽

從擷取到爬取,
一支工具包辦

webclaw 的能力可分成四層:單頁擷取、站內探索、內容分析,以及對外整合。下表把功能依這四層分組,每張卡片對應一個指令或旗標。最常用的入口是 webclaw <url> --format llm:取單頁、轉成 LLM 適用格式。

Extract · 01
webclaw <url> --format
多格式輸出
把單一網址輸出成 markdown、text、json、llm、html 其中一種格式。
Extract · 02
--only-main-content
主內容過濾
只保留正文,移除導覽列、頁尾、側欄與廣告等樣板區塊。
Extract · 03
--include / --exclude
選擇器控制
用 CSS selector 指定要保留或排除的 DOM 區塊,精準框定擷取範圍。
Discover · 04
--crawl --depth --max-pages
同源爬取
沿同源連結遞迴擷取,可設定爬取深度與頁數上限。
Discover · 05
map
URL 映射
列出站內可達網址而不執行擷取,適合先探勘再決定抓取範圍。
Discover · 06
batch
批次並行
同時並行擷取多個網址,適合大量頁面一次處理。
Analyze · 07
structured data
結構化萃取
從頁面萃取結構化資料,並可對內容產生摘要。
Analyze · 08
--diff-with
快照比對
比對前後兩次擷取結果以偵測頁面變動,適合定價或競品監看。
Analyze · 09
--brand
品牌資產
取出網站的顏色、字型與 logo 等品牌資產。
Integrate · 10
webclaw-mcp · REST · SDK
多種接法
內建 MCP server,並提供 REST API 與 TypeScript / Python / Go SDK。

要做這件事,用這個

你想做什麼 用哪個指令 / 旗標
取單一頁面餵給 LLM webclaw <url> --format llm
只要正文,不要導覽與廣告 --only-main-content
整個文件站全抓 --crawl --depth N --max-pages M
先看站內有哪些頁 map(僅列出網址)
監看頁面是否變動 --format json 存檔後再 --diff-with
接進 AI agent webclaw-mcp(MCP server)
04
輸出格式與架構

五種輸出格式,
對應不同取用場景

webclaw 的輸出不是單一格式,而是針對不同下游用途提供五種選擇。以下整理各格式的適用情境,以及工具的本地優先設計與 crate 架構。內容皆出自官方 README 與 repo 結構。

格式 01

Markdown

--format markdown 取得。把頁面轉成乾淨 Markdown,保留標題、清單與連結結構,適合直接貼進文件或 prompt。

來源 · 官方 README
格式 02

LLM 專用格式

--format llm 取得。針對模型取用最佳化的輸出,壓縮樣板、保留語意,減少送進 LLM 的雜訊。

來源 · 官方 README
格式 03

JSON

--format json 取得。機器可讀輸出,可存檔做後續處理,或作為 --diff-with 比對的基準快照。

來源 · 官方 README
格式 04

純文字 / HTML

--format text 取得最精簡的純文字,或 --format html 取得整理後的 HTML,視下游是否需要保留標記而定。

來源 · 官方 README
原則 05

本地優先(local-first)

抓取預設在自有機器上完成,目標網址與結果不必經過第三方服務;若有需要,另提供官方 hosted API。

來源 · 官方 README
架構 06

Crate 模組化

工具拆成獨立 Rust crate:webclaw-corewebclaw-fetchwebclaw-llmwebclaw-pdfwebclaw-mcpwebclaw-cli,可單獨取用作為函式庫。

來源 · repo crates/ 目錄
05
使用實例

用幾條指令,
把文件站變成 LLM 知識庫

以下示範一個常見任務:先把文件站爬取並轉成 LLM 可用的文字,接著對定價頁設定變動監看,最後取出網站品牌素材。指令皆為 webclaw 的實際語法。

~/kb-pipeline · webclaw · zsh
# 1) 爬取文件站,直接輸出 LLM 格式 $ webclaw https://docs.rust-lang.org --crawl --depth 2 --max-pages 50 --format llm [local-first · 不經第三方轉送] [follow same-origin links · depth ≤ 2 · max 50 pages] ✓ 去除 nav / footer / script,轉為 LLM 最佳化文字 ✓ 每頁輸出一份結果到 ./out/
# 2) 單頁擷取,只保留正文 $ webclaw https://docs.anthropic.com --format llm --only-main-content # Anthropic Docs ...(乾淨、可直接餵給模型的文字)...
# 3) 用選擇器精準框定範圍 $ webclaw https://example.com \ --include "article, main, .content" \ --exclude "nav, footer, .sidebar, .ad"
# 4) 監看定價頁是否變動 $ webclaw https://example.com/pricing --format json > pricing-old.json $ webclaw https://example.com/pricing --diff-with pricing-old.json [diff] 與基準快照比對 → 列出新增 / 移除 / 變動的欄位
# 5) 取出網站品牌素材 $ webclaw https://github.com --brand ✓ 擷取 colors / fonts / logos
本地優先:抓取預設在你自己的機器上完成,網址與結果不必離開本機。
— webclaw 設計原則(local-first)

這段流程為什麼成立

webclaw 把「抓取」與「清理」綁在同一步:--crawl 沿連結展開,--format llm--only-main-content 把每頁壓成模型讀得懂的文字。對 RAG 流程而言,輸入品質決定檢索品質,而大部分雜訊來自 HTML 樣板。

本地優先讓這件事可重複、可稽核:抓取在自有機器執行,輸出是純檔案,可進版本控制;再用 --diff-with 對同一頁做快照比對,就能把「定價或文件是否更動」變成一個可自動化的檢查

06
先看清楚這些

上手前,
先確認這些邊界

  • AGPL-3.0 是 copyleft 授權。若把 webclaw 整合進對外提供的網路服務,AGPL 要求你向使用者公開對應原始碼。商用整合前先確認授權義務。
  • 抓取要尊重來源網站。擷取前確認你有權抓取該站內容,遵守其服務條款、robots.txt 與速率限制,避免對來源造成負擔。
  • --crawl 一定要設上限。同源爬取若不設 --depth--max-pages,可能抓到遠超預期的頁數。建議先用 map 探勘範圍再決定。
  • 輸出品質依頁面結構而定。--only-main-content 與選擇器屬啟發式判斷,版面特殊的頁面仍可能保留雜訊或漏掉正文,送進 LLM 前宜人工抽查。
  • 動態與登入內容不保證取得。README 未說明內建瀏覽器算繪能力,對重度 JavaScript 算繪或需登入的頁面,純擷取可能拿不到完整內容,勿假設。
  • hosted API 會改變資料邊界。本地優先是預設;一旦改用官方 hosted API,網址與內容會送往該服務。敏感來源請維持本地模式。
  • 旗標以實際版本為準。本手冊列出的旗標(--format--crawl--diff-with--brand 等)以目前 README 為準,升級後請以 webclaw --help 的輸出為準。
07
進階路徑

把 webclaw 接進你的管線。

webclaw 不只有 CLI。它同時是 MCP server、REST API、SDK 與一組 Rust crate,這讓它能從「手動抓單頁」一路擴展到「服務內的自動化擷取層」。

進階玩法地圖

1. 接進 AI agent。webclaw-mcp 起一個 MCP server,讓支援 Model Context Protocol 的 agent 直接呼叫擷取能力,把網頁納入工具集。

2. 程式化整合。用 REST API 或 TypeScript / Python / Go SDK,把擷取嵌進你既有的服務,不必透過命令列。

3. 當函式庫用。只取 webclaw-corewebclaw-fetch crate,在 Rust 專案裡直接調用核心邏輯,跳過 CLI 層。

4. 批次與監看。把 batch 與 --diff-with 包成排程任務,定期對一組網址做快照比對,變動時通知。

5. 容器化部署。ghcr.io/0xmassi/webclaw 映像在 CI 或伺服器上執行,免在每台機器個別安裝。

最該讀的三個位置

0xMassi/webclaw——主 README,安裝、旗標與輸出格式的完整說明。
examples/——實際呼叫範例。
crates/webclaw-mcp——MCP server 整合的程式碼。

Web scraping and content extraction designed specifically for AI agents, RAG pipelines, and LLM ingestion workflows.
— webclaw 專案說明