Audio narration in

This feature went from idea to implementation quickly because it turns out we already have full podcast hosting in! How convenient. I’m going to use this post to break it all down.

AI is everywhere, including some places it probably shouldn’t be. If you’ve been following my blog you know that I see huge potential in generative AI. We’re using it in to improve photos search and accessibility text for photos. But like many tools, AI is going to be overused before we all find the right balance for what it’s good at.

When Jean and I were talking to Christina Warren at Micro Camp, I asked Christina about a talk she gave at Çingleton about 10 years ago. I actually blogged about it at the time. What struck me as particularly relevant now as we’re about to be swamped with AI-generated content is that there’s no substitute for the human voice. I don’t just mean that an actual recording is better than a synthetic voice. I also mean that things that are created by humans will increasingly be sought out.

We want to see the personal side of someone, not just the polished brand. We want to see the imperfect, the creative, the emotion. We want authenticity.

In, you can now upload an audio recording of one of your blog posts. Use the audio icon in the new post form on the web, which is available to everyone starting today, even at the standard $5 plan. Your blog readers can listen to the audio narration of the post if they don’t feel like reading the post. Of course it’s especially great for the visually impaired.

Here’s what it looks like on my blog, next to the posted date. Shout-out to Medium which I drew some inspiration from.

Play button screenshot.

I’m also adding audio narration to this very blog post, so you can click over to the web to try it out.

When there’s audio attached to a post, attempts to check if it is probably the narration for a post. If the number of words in the post and the audio duration is roughly comparable to how long it would take a human to read the post, it assumes it’s narration and not a podcast. Podcast episodes are more likely to be longer with very short “show notes” in the actual blog post text. checks this so that it can hide the default audio player and transcript link. These would add clutter to normal blog posts.

Blog themes will still need to be updated to support the play button. I’ve already updated the Alpine theme and will update others later. Themes can use a new API called Narration.js. Just plop this JavaScript anywhere you want the play button in your template, likely the layouts/post/single.html file. (Note that this currently needs to be on the permalink page. It won’t work correctly on the home page with a list of blog posts yet.)

{{ with }}
  <script type="text/javascript" src="{{ . }}"></script>
{{ end }}

If you’re using Premium, the audio narration will also be included in the podcast feed. Any blog can effectively be a podcast, even if you don’t think of it as a traditional podcast. Some of my favorite writers have had great success with a dual model of email newsletter plus podcast version of the same content, like Ben Thompson and Molly White.

I can’t wait to see how people use this. It’s totally optional. It’s more work, and not everyone is going to want to do that extra work. I’m imagining this would be used for selective, special blog posts, rather than everything. I’m also interested in working this functionality into our companion app Wavelength, which should cut down on the technical steps.

In some ways, this feature isn’t actually about what is possible. This feature is a statement: we make things for humans, so they can make the web a little better. Along the way there will be plenty to automate, plenty of AI tools that will be important shortcuts, but we’re not going to lose our voice.

Manton Reece @manton