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 Crawler

Сканируйте сайт для создания файлов знаний, чтобы создать собственный GPT на основе одной или нескольких URL-адресов.

GIF-демонстрация работы краулера

Пример

Вот кастомный GPT, который я быстро создал для ответов на вопросы об использовании и интеграции Builder.io, просто предоставив URL документации Builder.

Этот проект просканировал документацию и сгенерировал файл, который я загрузил в качестве основы для кастомного GPT.

Попробуйте сами, задавая вопросы о том, как интегрировать Builder.io на сайт.

Обратите внимание: для доступа к этой функции может потребоваться платная подписка ChatGPT.

Начало работы

Локальный запуск

Клонирование репозитория

Убедитесь, что у вас установлен Node.js >= 16.

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

Установка зависимостей

npm i

Настройка краулера

Откройте config.ts и измените свойства url и selector в соответствии с вашими потребностями.

Например, для сканирования документации 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.ts, как показано выше. Файл output.json будет сгенерирован в папке data. Примечание: свойство outputFileName в файле config.ts в директории containerapp настроено для работы с контейнером.

Запуск в качестве API

Для запуска приложения в качестве API-сервера необходимо выполнить npm install для установки зависимостей. Сервер написан на Express JS.

Для запуска сервера:

npm run start:server — запускает сервер. По умолчанию сервер работает на порту 3000.

Вы можете использовать эндпоинт /crawl с JSON-конфигурацией в теле POST-запроса для запуска краулера. Документация 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. Если возникнет ошибка о слишком большом размере файла, попробуйте разделить его на несколько частей и загрузить отдельно, используя опцию maxFileSize в config.ts, или уменьшите размер файла с помощью опции maxTokens в config.ts.

GIF-инструкция по загрузке кастомного GPT

Создание кастомного ассистента

Используйте этот вариант для API-доступа к сгенерированным знаниям, которые можно интегрировать в ваш продукт.

  1. Перейдите на https://platform.openai.com/assistants
  2. Нажмите "+ Create"
  3. Выберите "upload" и загрузите сгенерированный файл

GIF-инструкция по загрузке в ассистента

Участие в проекте

Знаете, как улучшить этот проект? Отправьте PR!



Made with love by Builder.io