Crawl a site to generate knowledge files to create your own custom GPT from one or multiple URLs
Here is a custom GPTthat I quickly made to help answer questions about how to use and integrateBuilder.ioby simply providing the URL to the Builder docs.
This project crawled the docs and generated the file that I uploaded as the basis for the custom GPT.
Try it out yourselfby asking questions about how to integrate Builder.io into a site.
Note that you may need a paid ChatGPT plan to access this feature
Be sure you have Node.js >= 16 installed.
git clone https://github /builderio/gpt-crawler
npm i
Openconfig.tsand edit theurl
andselector
properties to match your needs.
E.g. to crawl the Builder.io docs to make our custom GPT you can use:
exportconstdefaultConfig:Config={
url:"https:// builder.io/c/docs/developers",
match:"https:// builder.io/c/docs/**",
selector:`.docs-builder-container`,
maxPagesToCrawl:50,
outputFileName:"output.json",
};
Seeconfig.tsfor all available options. Here is a sample of the common configuration options:
typeConfig={
/** 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
To obtain theoutput.json
with a containerized execution, go into thecontainerapp
directory and modify theconfig.ts
as shown above. Theoutput.json
file should be generated in the data folder. Note: theoutputFileName
property in theconfig.ts
file in thecontainerapp
directory is configured to work with the container.
To run the app as an API server you will need to do annpm install
to install the dependencies. The server is written in Express JS.
To run the server.
npm run start:server
to start the server. The server runs by default on port 3000.
You can use the endpoint/crawl
with the post request body of config json to run the crawler. The api docs are served on the endpoint/api-docs
and are served using swagger.
To modify the environment you can copy over the.env.example
to.env
and set your values like port, etc. to override the variables for the server.
The crawl will generate a file calledoutput.json
at the root of this project. Upload thatto OpenAIto create your custom assistant or custom GPT.
Use this option for UI access to your generated knowledge that you can easily share with others
Note: you may need a paid ChatGPT plan to create and use custom GPTs right now
- Go tohttps://chat.openai /
- Click your name in the bottom left corner
- Choose "My GPTs" in the menu
- Choose "Create a GPT"
- Choose "Configure"
- Under "Knowledge" choose "Upload a file" and upload the file you generated
- if you get an error about the file being too large, you can try to split it into multiple files and upload them separately using the option maxFileSize in the config.ts file or also use tokenization to reduce the size of the file with the option maxTokens in the config.ts file
Use this option for API access to your generated knowledge that you can integrate into your product.
- Go tohttps://platform.openai /assistants
- Click "+ Create"
- Choose "upload" and upload the file you generated
Know how to make this project better? Send a PR!