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

Rastrea un sitio para generar archivos de conocimiento y crear tu propio GPT personalizado a partir de una o múltiples URLs

Gif mostrando la ejecución del rastreo

Ejemplo

Aquí hay un GPT personalizado que creé rápidamente para ayudar a responder preguntas sobre cómo usar e integrar Builder.io simplemente proporcionando la URL de la documentación de Builder.

Este proyecto rastreó los documentos y generó el archivo que subí como base para el GPT personalizado.

Pruébalo tú mismo haciendo preguntas sobre cómo integrar Builder.io en un sitio.

Nota: Es posible que necesites un plan de pago de ChatGPT para acceder a esta función

Comenzar

Ejecución local

Clonar el repositorio

Asegúrate de tener Node.js >= 16 instalado.

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

Instalar dependencias

npm i

Configurar el rastreador

Abre config.ts y edita las propiedades url y selector según tus necesidades.

Por ejemplo, para rastrear la documentación de Builder.io y crear nuestro GPT personalizado, puedes 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",
};

Consulta config.ts para ver todas las opciones disponibles. Aquí hay una muestra de las opciones de configuración comunes:

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

Ejecutar tu rastreador

npm start

Métodos alternativos

Ejecución en un contenedor con Docker

Para obtener el archivo output.json con una ejecución en contenedor, ve al directorio containerapp y modifica el archivo config.ts como se muestra arriba. El archivo output.json se generará en la carpeta data. Nota: la propiedad outputFileName en el archivo config.ts del directorio containerapp está configurada para funcionar con el contenedor.

Ejecución como API

Para ejecutar la aplicación como un servidor API, necesitarás hacer un npm install para instalar las dependencias. El servidor está escrito en Express JS.

Para ejecutar el servidor:

npm run start:server para iniciar el servidor. El servidor se ejecuta por defecto en el puerto 3000.

Puedes usar el endpoint /crawl con el cuerpo de la solicitud POST en formato JSON de configuración para ejecutar el rastreador. La documentación de la API se sirve en el endpoint /api-docs y se muestra usando Swagger.

Para modificar el entorno, puedes copiar el archivo .env.example a .env y establecer tus valores como el puerto, etc., para sobrescribir las variables del servidor.

Subir tus datos a OpenAI

El rastreo generará un archivo llamado output.json en la raíz de este proyecto. Sube ese archivo a OpenAI para crear tu asistente personalizado o GPT personalizado.

Crear un GPT personalizado

Usa esta opción para acceder desde la interfaz de usuario al conocimiento generado que puedes compartir fácilmente con otros.

Nota: Es posible que necesites un plan de pago de ChatGPT para crear y usar GPTs personalizados en este momento.

  1. Ve a https://chat.openai.com/
  2. Haz clic en tu nombre en la esquina inferior izquierda
  3. Elige "Mis GPTs" en el menú
  4. Selecciona "Crear un GPT"
  5. Elige "Configurar"
  6. En "Conocimiento", selecciona "Subir un archivo" y sube el archivo que generaste
  7. Si recibes un error sobre que el archivo es demasiado grande, puedes intentar dividirlo en varios archivos y subirlos por separado usando la opción maxFileSize en el archivo config.ts o también usar tokenización para reducir el tamaño del archivo con la opción maxTokens en el archivo config.ts

Gif mostrando cómo subir un GPT personalizado

Crear un asistente personalizado

Usa esta opción para acceder mediante API al conocimiento generado que puedes integrar en tu producto.

  1. Ve a https://platform.openai.com/assistants
  2. Haz clic en "+ Crear"
  3. Elige "Subir" y sube el archivo que generaste

Gif mostrando cómo subir a un asistente

Contribuir

¿Sabes cómo mejorar este proyecto? ¡Envía un PR!



Made with love by Builder.io