09/16/2024, duration: 24:32
In this episode of Debugging Dan, I share my journey in automating my podcast process, which has saved me a significant amount of time. Additionally, I discuss my progress with SEO learning and improvements to my streaming setup. I delve into the tools and scripts I use, including Node.js, FFmpeg, Adobe Podcasts, OpenAI Whisper, Notion, and DaVinci Resolve. By automating various steps like generating transcripts, enhancing audio, and creating blog pages, I’ve streamlined my workflow and increased efficiency. I hope my insights inspire other podcasters to optimize their processes.
Sure! Here’s the transcript grouped into neat paragraphs:
In this episode of Debugging Dan, I'll be talking about the automation part that I did for my podcast, how I saved a lot of time doing so, and I also look back on the past week, what I've learned for SEO, and how I'm learning to stream better in a higher quality. So, get started. Welcome to Debugging Dan, where I share weekly my journey, balancing life, a full-time job and side project. I'm Dan, your host. Let's dive in.
Before we dive into the topic of podcast automation, I'd first like to do a little recap of the past week. So, in the accountability update of last week, I told myself I really need to focus on understanding search engine optimization SEO, and I want to improve my streaming setup, and that's also my recording setup for the podcast, but also create a live streaming setup so I can start doing live stream streams. So, the image you're seeing now is a result of that. So, I have a green screen behind me. I'm recording this using the camera of my phone, which should be a higher quality.
And, um, I've looked into a microphone, a podcast microphone. Hopefully, uh, I can get into that soon to improve the audio more. The audio I'm currently using is just a microphone from this Sony headset, which is okay-ish and not great. Um, so, that was the, I guess, the easy part. I created the backdrop and other things. I can show you the backdrop. So, I went.
If you're looking at this via YouTube, you can see the backdrop. If you're watching or listening to the podcast, visit YouTube and, uh, you can see the backdrop. Uh, I went for some kind of steampunk office vibe, I like it, and, um, uh, it also allows me to vary on the backdrop and I think that the green screen works pretty well, so that's good on the topic of SEO, I watched and listened to the beginner's course recording or a YouTube video from Ahrefs, um, and I already, I got a basic full understanding.
So I already had some understanding from SEO, but that's mostly we're mostly the technical basics. So how to create meta tags, uh, where to put the content in your site, header tags, um, stuff like that. But I, in the past when people started talking about SEO, I noticed there were a lot of words which I didn't understand. So if you're watching this, I've grouped them on a slide.
So there's abbreviations like SERP, DR, DAE, the search intent, CTR, a content gap. I didn't understand what those were. Now I know. So, SERP is the search engine result page. So that's basically the result page that you're looking at. And, um, SEO tools like HRFs have that in line in their tool and they enhance that. So they can show you the DR of a site. For example, that's a domain rating. So how trustworthy or how good it is, you try to get that up.
There's DA domain authority. You can have a content gap. So that means that you are aiming to have a certain keyword, um, but you're not able to, uh, but your content isn't really aligned. So you're missing some content still, um, for that specific keyword. There's the search intent. That's the reason why the user is searching. So you're trying to capture that. If the user is searching for, uh, the search intent is buying something, then it doesn't make sense to rank for that specific search intent.
If you're doing a blog page, which, which to inform people about a specific product and not, uh, get them to buy it. Uh, CTR is the click to click through rate. So on a search result page, uh, search results get shown. Your site might get shown and there's a click to rate of the people that actually click on a link to your site versus the total amount of people that have seen, uh, the link in the search results. So you try to get that as high as possible, uh, other than just directing for number one on, um, on the thing.
And I'm starting to realize that with SEO, um, I'm kind of getting into the same trap that I get when developing a product. So I develop a product because I have an ID, I have a problem, and I want to build something that fixes the problem, but I don't really think about my audience, who to sell it to, how to sell it, how to reach those people, where to find those people. And the same thing kind of applies with SEO. With SEO, you need to think about what keywords do I want to rank for?
And for that, you need to know what people am I trying to reach, um, and get to my page. So I think that's a gap that I have again, found with myself that I really need to address or start to address or do something about in the coming, uh, period. Uh, and, uh, I guess I'll, I'll also incorporate it in my next accountability update to set out some tasks to really work on that instead of, um, just going into it blindly and hoping that at the end, I will try to find something that correctly finds the audience or the people that, uh, that I'm looking for, uh, or in hindsight, I could also start creating those things for observalize, for example, or data store or other products that I have.
To think about the audience and maybe also create a data landing page. If I, for example, decide that I want to focus data store on app developers that want to store some external data, like Jason, um, because the landing page currently doesn't really, doesn't mention that or accommodate that. There's only a web example, so that's something, uh, for example, could be a result of that. But before I get to that, I need to, um, yeah, and firstly to think about it and prepare and, um, well, at least I feel that's more of a, uh, how boring is not the right word, but it's not something I really enjoy.
But I need to find a way to make that more enjoyable for myself, I guess, um, but I have learned more and I'm now in the first week of the two week period for the accountability, um, uh, for, for a period. And now I also need to start applying some of the SEO stuff that I learned, and I'm still listening to the videos from Roberto, which is a indie hacker. I already knew, uh, Roberto digital in the score at X and, um, he also has some interesting information and it's less corporate in the video from Ahrefs.
Uh, he is also, he is an SEO expert, uh, so I'm also listening to his videos, but for the sites that I'm running, for example, I need to add a canonical URL because I also noticed in the Google search console that that's missing and Google sometimes, uh, accesses those pages, pages via, with query parameters. And then it says, Hey, I've already found this content. You need to look at that. So that's something that I'm going to look at.
That was the past week. The topic I will now be diving into is how I automated my podcast. So this is the first, first podcast that I've created. I'm doing it all solo. And, um, I just dove into it and I started doing audio recordings and I started to, what I did is I miniaturiously edited the audio and removed the ums and the ahs and stuff like that. And later on, when I started adding video, I kind of dropped the diminished, the, the detailed audio editing, figuring I'll just do it in one take.
Hope it's okay. Uh, I don't have that many listeners, so I'm not really annoying a lot of people if the audio isn't that great. Um, uh, I do want to have good audio, but I also need to find the right balance between time and, um, recording this and doing other stuff. So, um, what I figured is I'll just, when I moved to video, when I moved to video, I just, I cut off the end and the beginning to properly, uh, align it.
And I'll let Adobe and Hans just take care of the rest. And if there are some ums and ahs, I guess that makes it more natural. Um, so I embraced it and, um, but it was still taking me a lot of time to, to a set of the podcast, uh, the video, do the, the rendering, the transcoding and stuff like that. So, uh, last week, Saturday, I sat down and I figured I have a checklist with all these steps. Let's see what I can automate and, um, no, it was already two weeks ago, Saturday.
So I've used the script twice and I'm really happy about it because it automates a lot of part. It can does stuff in parallel. Um, and, uh, I'm also sharing the script. I'll, I'll, I'll link that later on. The link is also in the description. Um, so I have a list of tooling that I'm using to create this script. So, uh, I use Node.js to build the script and to, to execute the shell commands.
I use FFmpeg to manipulate the video, the audio. I use Adobe Podcast to enhance the audio. I use OBS to record it. I use OpenAI Whisper, the Python package. I run that locally to do the, uh, to generate the transcript from the audio. I have a locally or a self-hosted installation of CustomPod from which I serve the podcast. The blog is using Notion blog, my internal tool, but the pages itself are stored in Notion.
I use JetGPT from OpenAI to generate a summary and the transcripts. Um, and I use DaVinci Resolve to do the video editing, which is very basic. DaVinci Resolve is a very powerful package. And I just use it to trim off the beginning and the end. And that's basically it. Um, but, uh, I figured it's free and it's a powerful package and I can grow into learning stuff from it. Um, so that's what I'm going for.
Those are the tools that I use and combine to record the podcast. Podcast, podcast, um, so you can find the tool here. It's, uh, it's at github.com. I abbreviated to gh.com. I don't even know if that works, but it's github.com slash 10 ships podcast dash tooling. And, um, um, at least that's what I'm doing or using and, uh, feel free to fork it. And if you're recording something, uh, apply it to your own process or get inspired by it.
Uh, you can just, uh, have a look at it. Um, for me, it really saves a lot of time in terms of hours, two hours or three hours. Even I record often the recording and setting up the recording takes me about 30 minutes to 45 minutes for a 15 minute recording often. Uh, and after that, uh, it takes more time. It likes two, three hours. And now it's like more like an hour, an hour and a half.
Um, so that's really beneficial for me. So that's the script, uh, the flow that it processes. So when I start, I record it, I stop OBS, then I have an, uh, an MKV file. Uh, it says recording in the, in, uh, in the flow here.
If you're looking via YouTube, watching via YouTube, but I have an MKV file and, uh, that's the output of OBS. I chose MKV because then what it says in the description is when OBS crashes, you still have the recording until then. And when you use a container format, like MP4, you don't, um, and what I then do, or often I created that before recording, I create the visuals. So that's the thumbnail of them and, um, I store that as cover video in the script.
I've already started it. I've pointed it to the recording and then it waits for the cover, cover video dot PNG file. Now, if it's there, um, uh, it then starts, uh, generating the introduction and the, uh, it's called an out-production or the ending of the podcast using the, uh, the cover video.
Um, so I have a audio recording for the introduction of the generic introduction and the, the, the, uh, ending it stitches the video on top of it as great as an MP4. And then in Davinci Resolve, I then merge the beginning, the middle part. I added that, uh, if needed.
Um, and for example, if I pause the video in between, I sometimes do that. I also need to cut it and align it. Um, and then I add the end and, uh, I save that and the script then takes over and it extracts the audio from the video.
Um, because in the next step, um, from the audio, um, I updated manually to Adobe Podcast Enhance and once that is done processing, I save it and the scripts script the wage for the, uh, for the Enhance file. That's a WAV file is the output from Adobe Podcast and then the flow splits into two parts.
Um, it converts it to MP3 and that MP3 file, I can then upload to Custopod because then it's done. Um, and it also replaces the audio in the video file. So the original audio from the video file has been enhanced by Adobe Podcast Enhance. I replaced that and then the video is also done and then I can start uploading the video to YouTube.
Um, but in a parallel track, now that I have the Enhanced WAV file, I, the script, not I, but the script creates a Notion blog page, um, with some of the, uh, metadata that I'm already able to generate, uh, like time and the date and stuff like that. And then, uh, the script starts to generate the transcripts.
So the transcripts are created using OpenAI Whisper, the local Python package. And, uh, it creates a TXT file with the, with the transcripts, but also a SRT and a VTT file, which are subtitle files, uh, that you can also, that I then also use in Custopod and in YouTube to show, um, subtitles. Because, uh, I want to have my podcast being accessible, people watching it without audio could do that, or, uh, people with a hearing impairment could still be able to read what I do, or people that prefer reading over podcasts could then also still be, be seeing or viewing what I, um, what I create.
So after generating the transcripts, I then let AI do two things. So ChatGPT, I give it the transcripts and ask it to generate a title, a summary, and some keywords. And I also ask it to fix the transcripts because the output from Whisper is just a big wall of text. And, um, um, I can't use that on the webpage, so I ask it to keep the text as is, but group it into different, um, paragraphs.
And what I've learned from the CEO thingy now is that I might also have to ask it to create headings for each paragraph or for some paragraphs. Um, because that will, um, will improve CEO for my page, uh, if somebody happens to be searching on it, something that I mentioned in my podcast, I don't, for the postcard itself, I don't do any CEO, SEO optimization because it's a moment in time, a capture of a moment in time.
So, um, and when the contents is, um, generated by AI, so I use, uh, GPT 4.0 mini, uh, I use that to set, also set the blog page contents using the fixed transcripts. Um, and then I go into the final manual process. So I've uploaded the YouTube video, but the summary also needs to be, um, stored in the YouTube video.
It needs to be, um, added to cost support. Um, and, uh, there are some manual steps there in, in the blog page. I need to set the slug correct for the embedding. Uh, I often add the link to the YouTube video, stuff like that. Uh, those are still manual steps that I do.
Um, and after that, the podcast is done and I normally publish on Monday morning at seven, uh, in the morning.
Uh, because it's Monday morning at central European time. And that's just a random time that I picked and figured that's okay. I could also decide to just, uh, publish immediately.
Uh, but I like to have a fixed publishing schedule. Some people, uh, know when to expect it. Um, and that, that's also things that I might revisit in the future.
So changing the schedule from a week to something else or publishing on a different time. Um, it all really depends on, uh, what's important or what works and what people want, I guess. Because I do this as a hobby. I like recording it and sharing it.
Um, but so far there are not really people giving feedback or letting me know that they've listened or things like that. So I'm kind of broadcasting into the ether. So the joy, I know that the joy that I'm getting out of this is mostly by recording it and putting it out there.
And knowing that some people listen to it and probably benefit from it. Uh, otherwise people won't be listening, I guess.
Um, and I hope that at some point my audience grows big enough that I can have interactions with people or, uh, at least get some feedback or comments.
So if you're watching this and like it, um, leave a comment on your podcast platform that you're listening or like and subscribe on YouTube. Uh, let me know that you're listening. And if you're enjoying it and if you have any feedback, um, also just let me know, but in terms of flow, that's it.
I do have some future enhancements that I'd like to make and enhancements is a really difficult word with a lot of SS, I guess.
So future enhancements are, I'd like to do the upload to YouTube automatically because it's a pretty big file and, uh, it often takes some time and it's already done halfway through the process. And then I could later on update the description automatically.
Um, so that's something that I want to look into, but the Google API is not that easily accessible. You can't just generate an API key and that's it, but you need to do, you need to, uh, do something on Google cloud platform, generate an API token, authenticate with your user, stuff like that.
So I figured let's, let's keep this off for now. I'll just do it manually. That's okay. And for CastorPod, the podcasting platform that I use, I don't believe they have an API available. So I still need to do that manually, but it's not that a lot of work. It's mostly copy, copying, pasting, and, and that's also okay.
And for the more distant future, I'd also like to do is use AI to, for example, feed AI the transcript or the VTT file and tell it, Hey, can you, based on this user profile or what, if you will profile, what would be interesting parts in this podcast to clip?
Uh, and perhaps even have it automatically select the time and, uh, create a video from it, uh, at a bumper in the front or in the back or at the end. And, um, so that, so that I can then easily upload that to YouTube shorts or Instagram.
I don't have an Instagram currently for debugging then because somebody, um, has the username, but it, it's not available. So it's not a user profile, it's just, this page is not available, so I cannot register that. So I need to figure out something for that, but regardless of that, uh, uploaded to TikTok and per platform, it could also be that there's a different audience.
So for TikTok might be, people might be interesting in different, different things than on Instagram or YouTube. Um, so I'd like to start doing more with that, with AI, um, but it's more for a distant future.
Um, and also depends on how complicated it is. I already know how to cut stuff from the video. I think that what I mentioned in the beginning, I don't really know what kind of content I want to clip. What's interesting.
Um, so that's something that I may be, uh, looking into. And after that, the technical stuff will probably be there, uh, right? So I even figured I might even just create an audio only version of my podcast, add some Minecraft video under it.
That's for example, what some, uh, automatic YouTube channels are doing. They use text-to-speech from a post from the Reddit, am I the a-hole, um, uh, threads, and then they pay, put some kind of Minecraft video below it.
And, uh, people watch that, um, but that's not something that fits me because I like to create content for having, for adding value and not really by, um, um. Doing it for the views or, or, or, or, or, uh, gamification of the algorithm and just create growing a channel and then selling it.
For example, I'm more about the content and about the, uh, number of subscribers, but, um, yeah, it is, it would be nice to automate some stuff to, uh, add value and, uh, have it be more efficient for, uh, for my time.
So, um, that's it for today. I hope you enjoyed this outing. It's not really about, uh, the core focus of the podcast, um, but I figured it saves me a lot of time. I'm proud of it.
And I figured I'd share it with you and I'll, um, speak. You'll, uh, you'll hear, uh, from me on the next one and let me know what you think. Bye.
Thanks for tuning in to Debugging Dan. If you enjoyed this episode, please subscribe and leave a review. Stay curious and see you next week.
Let me know if you need further assistance!