Skip to content

Milkshiift/YouTubeTLDR

Repository files navigation

🎬 YouTubeTLDR

Rust GitHub license

⚡ A lightweight, self-hosted YouTube video summarizer with Gemini AI
Demo: https://tldr.milkshift.dedyn.io/

New summary page screenshot Summary screenshot

✨ Features

  • 🎯 Customizable Prompts: Tailor the AI's instructions to get summaries in the format you prefer
  • ⚙️ Model Selection: Choose any available Gemini model
  • 📝 View Transcript: Access the full, raw video transcript
  • 📚 History: Your summaries are saved locally in your browser for future reference
  • 🔒 Privacy-Focused: Simple Rust server that runs on your own machine. Your data stays yours
  • 🎨 Modern UI: Clean and beautiful user interface

🏗️ Philosophy: Minimal by Design

YouTubeTLDR embraces simplicity — maximum functionality with minimal overhead.

  • 🪶 Featherweight & Zero Bloat: Single binary ~0.6MB. No databases, no Tokio, no frameworks
  • Lightning Fast: Pure Rust + vanilla HTML/JS
  • 🔑 BYOK: Bring Your Own Key. Uses your Google Gemini API directly — no proxies, no data collection
  • 🎯 Single Purpose: Just generates and saves summaries, that's it

Note: This server is optimized for personal use and utilizes a multithreaded worker pool for concurrency. It is not designed to support hundreds of concurrent users.

🚀 Getting Started

Prerequisites

Running the Application

  1. Download the latest release and run the executable from console:
    ./YouTubeTLDR
  2. Open http://localhost:8000 in your browser
  3. Click "Advanced Settings" and enter your API key
  4. Paste a YouTube URL and click "Summarize"

You can change the IP and port with TLDR_IP and TLDR_PORT environment variables.
The amount of workers can be changed with TLDR_WORKERS, set it to the amount of concurrent users you expect.

🔨 Building from Source

  1. Install the nightly Rust toolchain
  2. Clone the repository:
    git clone https://github.com/Milkshiift/YouTubeTLDR.git
    cd YouTubeTLDR
  3. Build the release binary:
    cargo build --release
  4. Find your executable at target/release/YouTubeTLDR

By default, the native TLS implementation (like openssl) is used. If you want to use rustls build with --no-default-features --features rustls-tls