Projects

Project · 2025

NoteTube

A tool that pulls a YouTube transcript and turns it into notes for studying, step-by-step instructions, or a fast summary — depending on what you need from the same video.

Demo

The Problem

Watching a long video to extract a few key points is inefficient. The same tutorial needs different notes if you are learning from it versus skimming it later, and most tools do not make that distinction.

Why I Built It

I kept jumping between videos, pausing to take notes, and losing context. Most note-taking tools treat all content the same way. I wanted something that adapts to how I plan to use the information. I also used the project to practice building a complete, focused product and to treat AI as a learning partner — not a replacement for thinking through the problem.

The Solution

You paste a YouTube URL, choose Learn, Action, or Overview, and get formatted notes you can copy. The app extracts the transcript, sends it to OpenAI with an intent-specific prompt, and returns Markdown notes. There are no accounts, no database, and no extra features beyond that loop.

How It Works

The frontend is a single Next.js page for the form, intent selection, loading, errors, and note display. One API route extracts English captions with yt-dlp (with fallbacks and cleanup of temporary files), then generates notes with OpenAI. Notes are shown as Markdown and copied as plain text for use in other apps. User errors and system errors are returned separately so the UI can explain what went wrong.

  1. Next.js
  2. yt-dlp
  3. OpenAI

Challenges & Key Decisions

I left out accounts, saved notes, video metadata, model pickers, streaming, and custom prompts on purpose. Those would add databases, extra API calls, or inconsistent output without improving the core transformation. I prioritized a clear split between transcript extraction and note generation, explicit errors, and a UI that does not need an explanation.

Outcome

It is a working MVP: paste a URL, pick an intent, get notes. It includes rate limiting, environment checks for the OpenAI key, Docker/Railway deployment, and mapped HTTP errors. It does not include advanced monitoring or analytics.

What I Learned / What I'd Improve

If I continue it, I would add transcript caching, more robust VTT parsing, response streaming, light usage analytics without accounts, and timestamp mapping back into the video.

Tech Stack

  • Next.js
  • TypeScript
  • Tailwind CSS
  • OpenAI
  • yt-dlp