AI-powered full-stack application that converts YouTube videos into structured, study-ready markdown notes using agentic AI.
YT Notes AI solves the problem of time-consuming manual note-taking from YouTube videos. The application extracts video transcripts and processes them through an AI agent pipeline to generate comprehensive, educational markdown notes.
- Automated Note-Taking: Converts any YouTube video into structured notes in seconds
- AI-Powered Processing: Uses agentic AI to clean, segment, and summarize content intelligently
- User Management: Secure authentication and personal note storage via Supabase
- Usage Controls: Built-in quota management for free and premium users
- Multi-Format Support: Works with standard YouTube URLs, Shorts, and Embeds
- Agentic AI Pipeline: Powered by CrewAI for sophisticated task orchestration
- Structured Output: Generates notes with title, overview, key concepts, steps, examples, takeaways, and glossary
- Content Cleaning: Removes filler words, repetitions, and ads automatically
- User Authentication: Email/password and Google OAuth via Supabase
- Notes Management: Save, view, search, and delete notes per user
- Export Options: Copy to clipboard and download as Markdown file
- Usage Quotas: Daily/monthly limits with premium tier support
- Admin Dashboard: System control for administrators
- React 19 with Vite
- Tailwind CSS 4 for styling
- Supabase JS Client for authentication and database
- React Router DOM for navigation
- React Markdown with remark-gfm for rendering
- FastAPI (Python)
- SQLAlchemy for ORM
- Supabase PostgreSQL for database
- youtube-transcript-api for transcript extraction
- CrewAI for AI agent orchestration
- OpenRouter for LLM access
youtube_notes_generator/
├── frontend/ # React frontend application
│ ├── src/
│ │ ├── components/ # Reusable UI components
│ │ ├── context/ # React contexts (Auth)
│ │ ├── views/ # Page components
│ │ ├── lib/ # Utilities (Supabase client)
│ │ ├── App.tsx # Main app component
│ │ └── main.tsx # Entry point
│ ├── package.json
│ └── vite.config.ts
│
├── backend/ # FastAPI backend application
│ ├── app/
│ │ ├── api/ # API routes
│ │ ├── core/ # Core utilities
│ │ ├── models/ # SQLAlchemy models
│ │ ├── schemas/ # Pydantic schemas
│ │ ├── services/ # Business logic
│ │ └── main.py # FastAPI app
│ └── requirements.txt
│
├── .env # Environment variables (not tracked)
├── .gitignore # Git ignore rules
└── README.md # This file
- Node.js 18+
- Python 3.10+
- Supabase account
git clone https://github.com/Shrikanth70/YT-Notes-AI.git
cd YT-Notes-AIcd backend
python -m venv venv
source venv/bin/activate # Windows: venv\Scripts\activate
pip install -r requirements.txtcd frontend
npm installCreate .env in backend/:
DATABASE_URL=postgresql://user:password@host:5432/db
SUPABASE_URL=https://your-project.supabase.co
SUPABASE_ANON_KEY=your-anon-key
SUPABASE_JWT_SECRET=your-jwt-secret
OPENROUTER_API_KEY=sk-or-v1-xxxx
OPENROUTER_MODEL=nvidia/nemotron-3-super-120b-a12b:free
CORS_ORIGINS=http://localhost:5173Create .env in frontend/:
VITE_SUPABASE_URL=https://your-project.supabase.co
VITE_SUPABASE_ANON_KEY=your-anon-key
VITE_API_URL=http://localhost:8000# Backend
cd backend
uvicorn app.main:app --reload --port 8000
# Frontend (new terminal)
cd frontend
npm run devPOST /api/notes- Generate new notesGET /api/notes- List user notesGET /api/notes/{id}- Get specific noteDELETE /api/notes/{id}- Delete noteGET /api/profile- Get user profile
MIT License