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

Rastreie um site para gerar arquivos de conhecimento e criar seu próprio GPT personalizado a partir de uma ou várias URLs

GIF mostrando a execução do rastreamento

Exemplo

Aqui está um GPT personalizado que criei rapidamente para ajudar a responder perguntas sobre como usar e integrar o Builder.io simplesmente fornecendo a URL da documentação do Builder.

Este projeto rastreou a documentação e gerou o arquivo que enviei como base para o GPT personalizado.

Experimente você mesmo fazendo perguntas sobre como integrar o Builder.io em um site.

Observação: pode ser necessário um plano pago do ChatGPT para acessar esse recurso

Começando

Executando localmente

Clonar o repositório

Certifique-se de ter o Node.js >= 16 instalado.

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

Instalar dependências

npm i

Configurar o rastreador

Abra config.ts e edite as propriedades url e selector de acordo com suas necessidades.

Por exemplo, para rastrear a documentação do Builder.io e criar nosso GPT personalizado, você pode usar:

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

Consulte config.ts para todas as opções disponíveis. Aqui está uma amostra das opções de configuração comuns:

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

Executar seu rastreador

npm start

Métodos alternativos

Executando em um contêiner com Docker

Para obter o output.json com uma execução em contêiner, vá para o diretório containerapp e modifique o config.ts conforme mostrado acima. O arquivo output.json deve ser gerado na pasta data. Observação: a propriedade outputFileName no arquivo config.ts no diretório containerapp está configurada para funcionar com o contêiner.

Executando como uma API

Para executar o aplicativo como um servidor de API, você precisará fazer um npm install para instalar as dependências. O servidor é escrito em Express JS.

Para executar o servidor:

npm run start:server para iniciar o servidor. O servidor é executado por padrão na porta 3000.

Você pode usar o endpoint /crawl com o corpo da requisição POST contendo o JSON de configuração para executar o rastreador. A documentação da API é servida no endpoint /api-docs e é exibida usando o Swagger.

Para modificar o ambiente, você pode copiar o arquivo .env.example para .env e definir seus valores, como porta, etc., para substituir as variáveis do servidor.

Enviar seus dados para a OpenAI

O rastreamento gerará um arquivo chamado output.json na raiz deste projeto. Envie esse arquivo para a OpenAI para criar seu assistente personalizado ou GPT personalizado.

Criar um GPT personalizado

Use esta opção para acesso via interface ao conhecimento gerado, que pode ser facilmente compartilhado com outras pessoas

Observação: pode ser necessário um plano pago do ChatGPT para criar e usar GPTs personalizados no momento

  1. Acesse https://chat.openai.com/
  2. Clique no seu nome no canto inferior esquerdo
  3. Escolha "My GPTs" no menu
  4. Escolha "Create a GPT"
  5. Escolha "Configure"
  6. Em "Knowledge", escolha "Upload a file" e envie o arquivo gerado
  7. Se receber um erro sobre o arquivo ser muito grande, você pode tentar dividi-lo em vários arquivos e enviá-los separadamente usando a opção maxFileSize no arquivo config.ts ou também usar tokenização para reduzir o tamanho do arquivo com a opção maxTokens no arquivo config.ts

GIF mostrando como enviar um GPT personalizado

Criar um assistente personalizado

Use esta opção para acesso via API ao conhecimento gerado, que pode ser integrado ao seu produto.

  1. Acesse https://platform.openai.com/assistants
  2. Clique em "+ Create"
  3. Escolha "upload" e envie o arquivo gerado

GIF mostrando como enviar para um assistente

Contribuindo

Sabe como melhorar este projeto? Envie um PR!



Made with love by Builder.io