MYGA - make youtube great again
A clean and minimal youtube frontend, without all the ads and whistles. Supported by yt-dlp, and optionally your local AI model, to make your youtube experience local, mindful, succint and ad free.
- Channel management/Subscriptions
- Download videos from YouTube, using
yt-dlpbehind the scenes - Summarize video content using your local AI model
- Ignore videos you don't want to watch
- Play videos in background
- Offline media playback
- Subtitles using
<track>element and WebVTT API - No dependencies (except for
nano-spawn, which itself has no transient deps) - HTML/CSS only, no JS frameworks on client/server side
- Host it in your home network to playback videos on all your devices
- Just JSON files for persistence, stupid simple management and backup
Application runs on http://localhost:3000
git clone https://github.com/christian-fei/my-yt.git
cd my-yt
npm i
# install yt-dlp, please see https://github.com/yt-dlp/yt-dlp
npm startgit clone https://github.com/christian-fei/my-yt.git
cd my-yt
docker compose up --build -dor (currently wip)
docker run -p 3000:3000 -v /path/to/your/data/folder/for/persistence:/app/data christianfei/my-yt:latest- Why not??
- wanted to get back my chronological feed, instead of a "algorithmically curated" one
- you can just go to the "Subscriptions" page if you want to see your YouTube videos in chronological order, as gently pointed out on HN
- no distractions
- no clickbait thumbnails (using
mq2instead ofmqdefaultthumbnail, thanks @drcheap) - no comments
- no related videos, or any algorithmically determined videos pushed in your face
- no ads (in "just skip the sponsors")
- just videos and a clean UI
- wanted to try integrate the so much hyped AI in a personal project
- wanted to try out
yt-dlp - wanted to experiment with the HTML5
<track>element and WebVTT API - just wanted to make this, ok?
- I am even paying for YouTube Premium, so it's not a matter of money, but a matter of control over my attention and enhanced offline experience
- Make it possible to delete downloaded videos
- Have a way to view a video at a reasonable size in between the small preview and full screen
- Add a way to download a single video without subscribing to a channel
- Specify LLM server endpoint
- List and choose available model to use for summarization
- add some options for download quality (with webm merge for 4k support)
Here are some links to help you understand the project better:
Bare HTTP server
Handles SSE for client updates
Implements HTTP Ranged requests for video playback
Makes requests using the chat completions API of LMStudio.
Utility functions for Server-sent events
Summarizes video transcript using LMStudio API
yt-dlp wrapper to download videos, get channel videos and video information and transcript
Handles persistence of video information (set video as downloaded, summary, ignored, upserting videos, etc.)
dependency less, bare HTML5, CSS3 and JS for a basic frontend
Handles SSE updates, interacting with the API
Currently, on the LLM side of things:
- supports basic chat completions API (LMStudio right now)
- expects
lms serverto be running onhttp://localhost:1234
- expects
- works with
meta-llama-3.1-8b-instructmodel - customization will come in the future if there's enough interest (let me know by opening an issue or pull-request)
- handle clear search
- handle empty state /
- cta add channels if none
- handle no subtitles
- add app state (e.g. filtering)
Download the project while you can before I get striked with a DMCA takedown request
