综合介绍
GPT-Crawler 是由 BuilderIO 团队开发的一个开源工具,托管在 GitHub 上。它通过输入一个或多个网站 URL,爬取页面内容,生成结构化的知识文件(output.json
),用于创建自定义 GPT 或 AI 助手。用户可以配置爬取规则,比如指定起始 URL 和内容选择器,工具会自动提取文本并整理成文件。这个工具简单易用,支持本地运行、Docker 容器部署和 API 调用,适合开发者快速从网站内容构建专属 AI 助手。截至目前,它在技术社区中受到关注,因其高效性和开源特性广受欢迎。
功能列表
- 从一个或多个 URL 爬取网站内容,生成
output.json
文件。 - 支持自定义爬取规则,包括起始 URL、链接匹配模式和 CSS 选择器。
- 能处理动态网页,使用无头浏览器抓取客户端渲染内容。
- 提供 API 接口,通过 POST 请求启动爬取任务。
- 支持设置最大页面数(
maxPagesToCrawl
)、文件大小(maxFileSize
)和令牌数(maxTokens
)。 - 生成的文件可直接上传到 OpenAI,用于创建自定义 GPT 或 AI 助手。
- 支持 Docker 容器运行,方便在不同环境中部署。
- 可排除特定资源类型(如图片、视频等),优化爬取效率。
使用帮助
安装与运行(本地方式)
GPT-Crawler 基于 Node.js 开发,需要安装相关环境才能运行。以下是详细步骤:
- 检查环境
确保电脑已安装 Node.js(版本 16 或更高)和 npm。运行以下命令确认:
node -v
npm -v
如果没有,请从 Node.js 官网 下载安装。
- 克隆项目
在终端输入命令,将项目下载到本地:
git clone https://github.com/BuilderIO/gpt-crawler.git
- 进入目录
下载完成后,进入项目文件夹:
cd gpt-crawler
- 安装依赖
运行以下命令安装所需软件包:
npm install
- 配置爬虫
打开config.ts
文件,修改爬取参数。例如,爬取 Builder.io 文档:
export const defaultConfig: Config = {
url: "https://www.builder.io/c/docs/developers",
match: "https://www.builder.io/c/docs/**",
selector: ".docs-builder-container",
maxPagesToCrawl: 50,
outputFileName: "output.json"
};
url
:起始爬取地址。match
:链接匹配模式,支持通配符。selector
:提取内容的 CSS 选择器。maxPagesToCrawl
:最大爬取页面数。outputFileName
:输出文件名。
- 运行爬虫
配置完成后,运行以下命令启动爬取:
npm start
完成后,output.json
文件会生成在项目根目录。
替代运行方式
使用 Docker 容器
- 确保已安装 Docker(从 Docker 官网 下载)。
- 进入
containerapp
文件夹,编辑config.ts
。 - 运行以下命令构建并启动容器:
docker build -t gpt-crawler .
docker run -v $(pwd)/data:/app/data gpt-crawler
- 输出文件会生成在
data
文件夹中。
使用 API 运行
- 安装依赖后,启动 API 服务:
npm run start:server
- 服务默认运行在
http://localhost:3000
。 - 发送 POST 请求到
/crawl
,示例:
curl -X POST http://localhost:3000/crawl -H "Content-Type: application/json" -d '{"url":"https://example.com","match":"https://example.com/**","selector":"body","maxPagesToCrawl":10,"outputFileName":"output.json"}'
- 可访问
/api-docs
查看 API 文档(基于 Swagger)。
上传到 OpenAI
- 创建自定义 GPT
- 打开 ChatGPT。
- 点击左下角姓名,选择“My GPTs”。
- 点击“Create a GPT” > “Configure” > “Knowledge”。
- 上传
output.json
文件。 - 如果文件过大,可在
config.ts
设置maxFileSize
或maxTokens
拆分文件。
- 创建自定义助手
- 打开 OpenAI 平台。
- 点击“+ Create” > “Upload”。
- 上传
output.json
文件。
功能操作详解
- 爬取内容
指定url
和selector
后,工具会提取页面文本。比如,.docs-builder-container
只抓取该区域内容。 - 生成文件
输出文件格式为:
[{"title": "页面标题", "url": "https://example.com/page", "html": "提取的文本"}, ...]
- 优化输出
使用resourceExclusions
排除无关资源(如png
、jpg
),减少文件体积。
注意事项
- 需要 OpenAI 付费账户才能创建自定义 GPT。
- 动态网页爬取依赖无头浏览器,确保依赖完整。
- 文件过大时,可调整配置拆分上传。
应用场景
- 技术支持助手
爬取产品文档网站,生成 AI 助手,帮助用户解答技术问题。 - 内容整理工具
从博客或新闻网站抓取文章,制作知识库或问答助手。 - 教育培训助手
爬取在线课程页面,生成学习助手,提供课程相关解答。
QA
- 可以爬取多个网站吗?
可以。在config.ts
中设置多个 URL 和匹配规则即可。 - 文件太大无法上传怎么办?
设置maxFileSize
或maxTokens
,将文件拆分为多个小文件。 - 支持中文网站吗?
支持。只要网站内容可被无头浏览器解析,就能正常爬取。