Last translated: 13 Jun 2025

Translation Not Available Yet

This repository's README hasn't been translated yet. Once translated, it will be easier to read and understand in your native language (中文).

After translating, add the links to README so others can view it directly.

GPT 爬虫工具

通过爬取一个或多个网址生成知识文件,用于创建自定义 GPT 模型

展示爬虫运行的动图

示例

这是一个自定义 GPT,我通过简单提供 Builder 文档网址快速创建,用于解答关于如何使用和集成 Builder.io 的问题。

本项目爬取了文档并生成文件,作为自定义 GPT 的基础数据上传。

亲自尝试,询问如何将 Builder.io 集成到网站中的问题。

注意:您可能需要付费版 ChatGPT 计划才能使用此功能

快速开始

本地运行

克隆仓库

确保已安装 Node.js >= 16 版本。

git clone https://github.com/builderio/gpt-crawler

安装依赖

npm i

配置爬虫

打开 config.ts 文件,编辑 urlselector 属性以满足您的需求。

例如,要爬取 Builder.io 文档创建我们的自定义 GPT,可以使用:

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",
};

查看 config.ts 获取所有可用选项。以下是常见配置示例:

type Config = {
  /** URL to start the crawl, if sitemap is provided then it will be used instead and download all pages in the sitemap */
  url: string;
  /** Pattern to match against for links on a page to subsequently crawl */
  match: string;
  /** Selector to grab the inner text from */
  selector: string;
  /** Don't crawl more than this many pages */
  maxPagesToCrawl: number;
  /** File name for the finished data */
  outputFileName: string;
  /** Optional resources to exclude
   *
   * @example
   * ['png','jpg','jpeg','gif','svg','css','js','ico','woff','woff2','ttf','eot','otf','mp4','mp3','webm','ogg','wav','flac','aac','zip','tar','gz','rar','7z','exe','dmg','apk','csv','xls','xlsx','doc','docx','pdf','epub','iso','dmg','bin','ppt','pptx','odt','avi','mkv','xml','json','yml','yaml','rss','atom','swf','txt','dart','webp','bmp','tif','psd','ai','indd','eps','ps','zipx','srt','wasm','m4v','m4a','webp','weba','m4b','opus','ogv','ogm','oga','spx','ogx','flv','3gp','3g2','jxr','wdp','jng','hief','avif','apng','avifs','heif','heic','cur','ico','ani','jp2','jpm','jpx','mj2','wmv','wma','aac','tif','tiff','mpg','mpeg','mov','avi','wmv','flv','swf','mkv','m4v','m4p','m4b','m4r','m4a','mp3','wav','wma','ogg','oga','webm','3gp','3g2','flac','spx','amr','mid','midi','mka','dts','ac3','eac3','weba','m3u','m3u8','ts','wpl','pls','vob','ifo','bup','svcd','drc','dsm','dsv','dsa','dss','vivo','ivf','dvd','fli','flc','flic','flic','mng','asf','m2v','asx','ram','ra','rm','rpm','roq','smi','smil','wmf','wmz','wmd','wvx','wmx','movie','wri','ins','isp','acsm','djvu','fb2','xps','oxps','ps','eps','ai','prn','svg','dwg','dxf','ttf','fnt','fon','otf','cab']
   */
  resourceExclusions?: string[];
  /** Optional maximum file size in megabytes to include in the output file */
  maxFileSize?: number;
  /** Optional maximum number tokens to include in the output file */
  maxTokens?: number;
};

运行爬虫

npm start

替代方案

使用 Docker 容器运行

要通过容器化执行获取 output.json,进入 containerapp 目录并按上述方式修改 config.tsoutput.json 文件将在数据文件夹中生成。注意:containerapp 目录中 config.ts 文件的 outputFileName 属性已配置为与容器配合使用。

作为 API 运行

要将应用作为 API 服务器运行,需先执行 npm install 安装依赖。服务器使用 Express JS 编写。

运行服务器:

npm run start:server 启动服务器。默认运行在 3000 端口。

您可以使用 /crawl 端点,通过 POST 请求发送配置 JSON 来运行爬虫。API 文档通过 /api-docs 端点提供,使用 swagger 展示。

要修改环境变量,可复制 .env.example.env 并设置端口等值来覆盖服务器变量。

上传数据到 OpenAI

爬虫将在项目根目录生成名为 output.json 的文件。将其上传 至 OpenAI 以创建自定义助手或自定义 GPT。

创建自定义 GPT

此选项用于通过界面访问生成的知识,便于与他人共享

注意:当前创建和使用自定义 GPT 可能需要付费版 ChatGPT 计划

  1. 访问 https://chat.openai.com/
  2. 点击左下角您的姓名
  3. 选择菜单中的 "My GPTs"
  4. 选择 "Create a GPT"
  5. 选择 "Configure"
  6. 在 "Knowledge" 下选择 "Upload a file" 并上传生成的文件
  7. 如果收到文件过大的错误提示,可尝试通过 config.ts 文件中的 maxFileSize 选项将其拆分为多个文件分别上传,或使用 maxTokens 选项通过分词减小文件体积

上传自定义 GPT 的动图

创建自定义助手

此选项用于通过 API 访问生成的知识,便于集成到您的产品中

  1. 访问 https://platform.openai.com/assistants
  2. 点击 "+ Create"
  3. 选择 "upload" 并上传生成的文件

上传助手的动图

贡献指南

知道如何改进本项目?欢迎提交 PR!



Made with love by Builder.io