GurYeaH: Youtube => Hashnode

Hello, fellow community of everyone passionate about learning and sharing knowledge! Today, I am thrilled to share the journey of creating GurYeaH, my workflow that transforms YouTube podcasts into engaging Hashnode blog posts.

As someone deeply passionate about learning myself, I continuously seek the most efficient ways to absorb information. Over the years, I found podcasts to be a treasure trove of wisdom, insights and diverse perspectives over recent news and relevant events. However, following my desire to keep on track with all of them, the library of subscriptions has grown to the moment where hundreds new episodes being added to my listening queue every week, raising a crucial question: how could I keep up with all this content and not feeling overwhelmed?

Determined to bridge this gap between my curiosity reaching to ever-growing number of videos while time available keeps shrinking, my first step to tackle the issue was convert video into text transcript. It was straightforward to do using Youtube Transcription API.

The next possible step seemed to be passing these transcripts to ChatGPT for summaries. However, I quickly realized that it was like trying to throw a whole watermelon into a juicer. The summaries couldn't capture the essence of the conversations. At best, they stripped away nuances, context, and the richness that made the podcasts valuable in the first place. At worst, ChatGPT would hallucinate and provide quotes that were not present in the transcript at all. Clearly, I needed a better approach.

Instead of passing the entire transcript to LLM directly, I decided to divide the transcripts into manageable "chapters" with a one-chapter overlap between each consecutive section. This overlap ensures that critical parts of the conversation are not cut off or lost in the process. Then I guided LLM to extract exact-specific quotes from the transcript, providing hyphothetical questions those quotes answering along with actual quotes, acting as proof of each quote significance. This process effectively separated the "juice" (valuable content) from the "skin" (advertisements and introductions).

With all quotes in place, the next challenge was combining them into a final article that was easy to read and follow. To achieve this, I passed the quotes of each section through another prompt to create "highlights" text. Then, I combined each two consequtive "highlights" to create "paragraphs" text, adding an "insight" title to each of them. Finally, I merged everything into a coherent blog post formatted with Markdown, then prefixed with frontmatter metadata. Ready to enjoy!

Now equipped with a script that could turn a YouTube video link into a blog post, it was time to create a more comprehensive automation workflow. This workflow can accept a playlist link, process all the videos in the playlist, and publish them in a hashnode series corresponding to the channel.

Checkout currently published posts in my blog, and in case if you like the way those are structured, but what you want that's to have your favorite podcast series to be in there too, - please let me know, and I will add it to my subscriptions. Every week I have all my subscriptions organized into playlists and then processed to be published into my blog: https://guryeah.hashnode.dev

Moreover, if you find the format of the final articles too verbose and want to improve them, or just want to publish posts into your own hashnode blog, feel free to fork my repository. It's all open-source with detailed documentation: https://github.com/7flash/guryeah
Happy reading with GurYeaH!
Gur