Chat with Youtube Tool
Introduction
Chat with YouTube: a cutting-edge tool designed to enhance your YouTube experience. Effortlessly generate concise summaries of your favorite videos and engage with their content like never before. With advanced AI at your fingertips, asking questions related to the video is just as easy. Elevate your YouTube journey with Chat with YouTube
Quickstart Guide
Installation
-
Clone the repository:
terminalgit clone https://github.com/1811-Labs-LLC/BuilderKit-Pro.git [YOUR_APP_NAME] cd [YOUR_APP_NAME] git checkout chat-with-youtube
Remove the
origin remote
to ensure that you can work locally without pushing the changes back to the original repository.terminalgit remote remove origin
However, note that after removing the remote, you won't be able to switch between the branches, so you'll need to clone the repository again if you want to work on another branch.
-
Install dependencies:
terminalnpm install
-
Environment Variables:
Copy the required variables from
.env.example
to.env.local
as mentioned and update the values.terminalcp .env.example .env.local
Or, manually create a
.env.local
file in the root directory with the following env variables (make sure to update the values with your actual keys):.env.local# Host NEXT_PUBLIC_APP_URL=<your-app-url> # Supabase NEXT_PUBLIC_SUPABASE_URL=<your-supabase-url> NEXT_PUBLIC_SUPABASE_ANON_KEY=<your-supabase-anon-key> # OpenAI OPENAI_API_KEY=<your-openai-api-key> OPENAI_MODEL=<openai-chat-model> # Pinecone PINECONE_API_KEY=<your-pinecone-api-key> PINECONE_INDEX_NAME=<your-pinecode-index-name> # Google Analytics NEXT_PUBLIC_GOOGLE_ANALYTICS_KEY=<your-google-analytics-key>
Setup Supabase
If you have not setup the supabase yet, go through the detailed documentation to set up the supabase for BuilderKit.ai. Make sure that you are creating the user table as mentioned in the supabase setup doc as it is required for the tool.
-
Create Chat with Youtube Table in Supabase:
sql-- Create a table for Chat with Youtube create table chat_with_youtube ( id uuid not null default uuid_generate_v4 (), created_at timestamp with time zone not null default now(), user_id uuid null, video_title text not null, url text not null, tone text not null, style text not null, transcription text not null, summary text null, chat_history jsonb null, history_metadata text null, ingestion_done boolean default false, constraint chat_with_youtube_pkey primary key (id), constraint chat_with_youtube_user_id_fkey foreign key (user_id) references users (id) ); -- Set up Row Level Security (RLS) alter table chat_with_youtube enable row level security; create policy "Users can insert their own row." on chat_with_youtube for insert with check (auth.uid () = user_id); create policy "Users can update own row" on chat_with_youtube for update using (auth.uid () = user_id); create policy "Users can read own row" on chat_with_youtube for select using (auth.uid () = user_id); create policy "Users can delete own row" on chat_with_youtube for delete using (auth.uid() = user_id);
For all the tables, we enable the RLS policy by default with necessary permissions as mentioned in the script.
-
Sync Supabase Types:
To sync the supabase table schema with your project follow the steps here.
Setup Cookies
This is a manadatory step. Cookies are essential for retrieving the YouTube subtitles and content that may be restricted or unavailable without proper authentication. If you do not use cookies, YouTube will block you from accessing the subtitle for the available YouTube videos.
Follow the detailed steps to retrieve and setup cookies in your project - https://docs.builderkit.ai/setup/youtube-cookies (opens in a new tab)
Running the Application
-
Run the development server:
terminalnpm run dev
This will start the development server on http://localhost:3000 (opens in a new tab).
-
Build for production:
terminalnpm run build
This command compiles the application for production usage.
-
Start the production server:
terminalnpm start
This will start the application in production mode.
Additional Scripts
-
Prepare Husky for Git hooks:
terminalnpm run prepare
-
Validate the code with Linting, Formatting & Typecheck:
terminalnpm run validate
Make the tool publicly accessible by removing the login process
-
Go to
src/app/(dashboard)/layout.tsx
and comment the following sectionfrom line:15 to line:20
as shown in the image below: -
Go to
src/app/api/summary/route.ts
and comment the following sectionfrom line:11 to line:15
as shown in the image below: -
Now, go to
src/app/api/chat/route.tsx
and comment the following sectionfrom line:19 to line:22
as shown in the image below:
These sections reads the user data and checks if the user is signed in or not. By commenting this section it does not check the user validation.
Requirements
- Node.js: Download and install from here (opens in a new tab).
- Supabase: Check out Supabase Setup Documentation to get all the required details.
- OpenAI API Key: Sign up for an API key on OpenAI (opens in a new tab).
- Pinecone: Create an account in Pinecone (opens in a new tab) to create an API key and Index name.