把網頁轉成結構化資料的擷取引擎。
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-core、webclaw-fetch、webclaw-llm、webclaw-pdf、webclaw-mcp、webclaw-cli。
Fetch
Clean
Convert
Extract
Output
Fast, local-first web content extraction for LLMs.
四種安裝路徑, 最快的是 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從擷取到爬取, 一支工具包辦。
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) |
五種輸出格式, 對應不同取用場景。
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
原則 · 本地優先(local-first)
抓取預設在自有機器上完成,目標網址與結果不必經過第三方服務;若有需要,另提供官方 hosted API。
來源 · 官方 README
架構 06 · Crate 模組化
工具拆成獨立 Rust crate:webclaw-core、webclaw-fetch、webclaw-llm、webclaw-pdf、webclaw-mcp、webclaw-cli,可單獨取用作為函式庫。
來源 · repo crates/ 目錄
用幾條指令, 把文件站變成 LLM 知識庫。
以下示範一個常見任務:先把文件站爬取並轉成 LLM 可用的文字,接著對定價頁設定變動監看,最後取出網站品牌素材。指令皆為 webclaw 的實際語法。
> webclaw https://docs.rust-lang.org --crawl --depth 2 --max-pages 50 --format llm
ok: ✓ 去除 nav / footer / script,轉為 LLM 最佳化文字
ok: ✓ 每頁輸出一份結果到 ./out/
> webclaw https://docs.anthropic.com --format llm --only-main-content
claude: Anthropic Docs
claude: ...(乾淨、可直接餵給模型的文字)...
> webclaw https://example.com \
> --include "article, main, .content" \
> --exclude "nav, footer, .sidebar, .ad"
> webclaw https://example.com/pricing --format json > pricing-old.json
> webclaw https://example.com/pricing --diff-with pricing-old.json
hl: [diff] 與基準快照比對 → 列出新增 / 移除 / 變動的欄位
> webclaw https://github.com --brand
ok: ✓ 擷取 colors / fonts / logos
本地優先:抓取預設在你自己的機器上完成,網址與結果不必離開本機。
這段流程為什麼成立
webclaw 把「抓取」與「清理」綁在同一步:--crawl 沿連結展開,--format llm 與 --only-main-content 把每頁壓成模型讀得懂的文字。對 RAG 流程而言,輸入品質決定檢索品質,而大部分雜訊來自 HTML 樣板。
本地優先讓這件事可重複、可稽核:抓取在自有機器執行,輸出是純檔案,可進版本控制;再用 --diff-with 對同一頁做快照比對,就能把「定價或文件是否更動」變成一個可自動化的檢查。
上手前, 先確認這些邊界。
把 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-core 與 webclaw-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.