Hi everyone! This project started with me manually doing the following process:
Step 1: Get the transcript from youtube by clicking "show transcript" inside the description box
Step 2: The transcript usually won't have any punctuation and have lots of mistakes, so paste it into ChatGPT to clean it up or summarize it.
The idea here is to make this process as seamless as possible. What I ended up with was a Chrome extension [0] that adds a button in the YouTube UI that does all of this. Automating it allowed me to do a lot of cool things that would be hard to do manually:
1. I use the sponsorblock database to remove sponsorhsip segments from the video before passing it into ChatGPT.
2. There's also a global cache, so if anyone else has done this process for a video, you see it instantly (rather than having to wait for ChatGPT to type out its response).
3. You can click on any part of the generated summary to jump to the corresponding part of the video
4. When cleaning up the transcript of long videos, I make it faster by breaking the video into chunks and feeding all the chunks into ChatGPT in parallel.
I mostly did this project to learn more about web development. I ended up learning how to use AWS Lambda, DynamoDB, and Supabase. (All my past experience with backend web development involved SSHing into digitalocean droplets and whatnot, so just being able to focus on the code was a real joy.) But in the process I realized I had created something genuinely useful, that I was using all the time and that my friends were asking to download. So last night I implemented ratelimiting and decided to share it on HN!
Generating a summary for a 10min video costs me about $0.10, which I'm happy to subsidize for now. It uses my OpenAI API key, so if a ton of people start using it I guess I'll need to add a way for people to submit their own API key to use for their requests haha.
[0]: https://chromewebstore.google.com/u/1/detail/ireadfaster/anf...
PS: About personal information: I get your email address when you log in with Google (needed for ratelimiting). Then I store the video IDs of the videos you generate summaries or transcripts for (also for ratelimiting). No other information about you is retained. If you just look at a youtube video and don't interact with the chrome extension, nothing is stored. EDIT: actually I think Supabase stores the last time you logged in, and you log in every time you open youtube. I'll see if I can disable this behavior
Otherwise great job. I've been doing this manually. Does it really cost that much to summarize a video? I've been using free online summerizer services to do 2-3 hour youtube talks and now I feel bad if I'm costing them a couple bucks each video.