Skip to content
SPA 渲染CDP3 CommandsNode.jsv0.0.1

Web Scraper

系统 Chrome + CDP 网页抓取引擎

完整 SPA 渲染、框架检测、深度爬取、批量下载合并、OpenAPI 提取。复用系统 Chrome,零浏览器下载,仅 55KB npm 依赖。read_url_content 的完美替代方案。

Web Scraper
$./scrape discover https://cn.vuejs.org/api/
Framework: VitePress (detected via meta)
Links: 61 internal
$./scrape fetch https://open.feishu.cn/document/... --summary-only
OK 发送消息 | 20,853 chars | ~5,213 tokens
$./scrape fetch https://docs.example.com --auto --merge -o docs.md
OK ✅ Merged 42 pages → docs.md (156,280 chars)

核心能力

SPA 完美渲染

基于系统 Chrome + CDP 协议,完整执行 JavaScript。React、Vue、Angular 页面内容零遗漏。

框架检测

自动识别 Docusaurus、VuePress、VitePress、GitBook、Next.js、Nuxt.js 等主流框架。

深度爬取

从入口页自动发现所有链接,递归爬取整站。可视化 sitemap 目录树。

批量下载合并

批量抓取多页面,合并为单个 Markdown 文件。支持 URL 列表文件输入。

OpenAPI 提取

从 Swagger UI / Redoc 页面自动发现 spec URL,转换为结构化 Markdown。

极简依赖

仅 55KB npm 依赖(turndown),复用系统已安装的 Chrome,零浏览器下载。

命令参考

分析 (discover)

站点结构分析、框架检测、链接提取

命令说明示例
discover完整站点分析./scrape discover https://docs.example.com
--framework-only仅检测框架./scrape discover https://docusaurus.io --framework-only
--deep深度爬取./scrape discover https://docs.example.com --deep --max-pages 100
--sitemap目录树./scrape discover https://docs.example.com --sitemap
--links-only仅列出链接./scrape discover https://docs.example.com --links-only

抓取 (fetch)

页面抓取与 Markdown 转换

命令说明示例
fetch单页抓取./scrape fetch https://open.feishu.cn/...
--auto自动发现+抓取./scrape fetch https://docs.example.com --auto -o docs/
--merge合并为单文件./scrape fetch https://docs.example.com --auto --merge -o all.md
--from-file从 URL 列表抓取./scrape fetch --from-file urls.txt -o docs/
--summary-only仅显示摘要./scrape fetch https://example.com --summary-only

API 文档 (openapi)

OpenAPI/Swagger 规范提取与转换

命令说明示例
openapi提取 API 文档./scrape openapi https://petstore.swagger.io/v2/swagger.json -o api.md
openapi (UI)从 Swagger UI 发现./scrape openapi https://api.example.com/swagger-ui/ -o api.md

何时使用

Agent 内置的 read_url_content 适用于简单静态页面,但在以下场景完全失败

  • SPA 页面(React、Vue、Angular — 内容由 JavaScript 渲染)
  • 现代文档站(Docusaurus、VuePress、VitePress、GitBook)
  • API 门户(飞书开放平台、Swagger UI、Redoc)

read_url_content 返回空白或残缺内容时,这是 SPA 页面的强信号 — 此时应切换到本技能。

使用场景

抓取 SPA 页面

Agent 尝试 read_url_content 失败后,自动切换到本技能:

bash
./scrape fetch https://open.feishu.cn/document/server-docs/im-v1/message/create

输出完整的 Markdown 文档,包含 API 参数、请求示例、响应说明。

批量下载文档站

"把这个文档站的所有页面下载下来,合成一个文件":

bash
./scrape fetch https://docs.example.com --auto --merge -o /tmp/docs/all.md

自动发现所有导航链接,逐页抓取并合并为单个 Markdown。

分析站点结构

"看看这个网站用了什么框架":

bash
./scrape discover https://docusaurus.io/docs --framework-only
# → Framework: Docusaurus (detected via meta)

深度爬取站点地图

bash
./scrape discover https://cn.vuejs.org --deep --max-pages 100 --sitemap

递归爬取所有链接,输出可视化目录树。

提取 API 文档

从 Swagger UI 页面自动发现 spec URL 并转换:

bash
./scrape openapi https://petstore.swagger.io -o /tmp/api.md

前置条件

  • Node.js 18+(用于 CDP 引擎和内置 WebSocket)
  • Google Chrome 或 Chromium(使用系统已安装的浏览器,无需下载)

首次运行时自动安装 npm 依赖(仅 turndown,~55KB)。

架构

web-scraper/
├── scrape               ← Bash CLI 入口
├── SKILL.md             ← Agent 指令文件
└── scripts/
    ├── cdp_client.mjs   ← 零依赖 CDP 客户端 (WebSocket → Chrome)
    ├── md_converter.mjs ← HTML→Markdown (Turndown + GFM)
    ├── fetch.mjs        ← fetch 命令(单页/批量/自动发现)
    ├── discover.mjs     ← discover 命令(分析/爬取/sitemap)
    └── openapi.mjs      ← openapi 命令(spec 提取+转换)

快速开始

Install
via skills.sh (推荐)
$npx skills add northseadl/norix-skills/web-scraper
或手动安装
$git clone https://github.com/northseadl/norix-skills.git
$ln -s norix-skills/web-scraper <SKILLS_DIR>/web-scraper
验证
$./scrape help
OK Skill ready.

Built for AI Agents, by Norix