使用手冊

實戰手冊 · 網頁擷取 / LLM 資料管線

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

0xMassi 開源的 Rust 網頁擷取工具 webclaw 完整實戰手冊。把網站轉成乾淨的 Markdown、JSON 與結構化資料,供 AI agent、RAG 流程與 LLM 取用。涵蓋安裝、指令總覽、爬取實例與注意事項。

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

0xmassi/webclaw
星標
—
分支
—
授權
—
資料截至
—
閱讀時間
7 分
更新日期
開啟原始報告
GitHub Stars
1.5k
Forks
167
輸出格式
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-core、webclaw-fetch、webclaw-llm、webclaw-pdf、webclaw-mcp、webclaw-cli。

  1. Fetch

  2. Clean

  3. Convert

  4. Extract

  5. Output

Fast, local-first web content extraction for LLMs.

— webclaw 專案自述

02安裝

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

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

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

其他安裝方式

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

bash
# 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

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。

要做這件事,用這個

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

原則 · 本地優先(local-first)

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

來源 · 官方 README

架構 06 · Crate 模組化

工具拆成獨立 Rust crate:webclaw-core、webclaw-fetch、webclaw-llm、webclaw-pdf、webclaw-mcp、webclaw-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]
  ok: ✓ 去除 nav / footer / script,轉為 LLM 最佳化文字
  ok: ✓ 每頁輸出一份結果到 ./out/


# 2) 單頁擷取,只保留正文
> webclaw https://docs.anthropic.com --format llm --only-main-content
  claude: Anthropic Docs
  claude: ...(乾淨、可直接餵給模型的文字)...


# 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
  hl: [diff] 與基準快照比對 → 列出新增 / 移除 / 變動的欄位


# 5) 取出網站品牌素材
> webclaw https://github.com --brand
  ok: ✓ 擷取 colors / fonts / logos

        

本地優先:抓取預設在你自己的機器上完成,網址與結果不必離開本機。

— webclaw 設計原則(local-first)

這段流程為什麼成立

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

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

06先看清楚這些

上手前, 先確認這些邊界。

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

— webclaw 專案說明