Audio to Markdown for Jekyll: Audio Content to Blog
Jekyll posts live in <code>_posts/</code> as Markdown files with date-prefixed names and YAML frontmatter. Podcast episodes naturally fit that shape: each episode has a publish date, a title, a guest list, and a body that wants to be the transcript. Convert audio to Markdown, drop into <code>_posts/</code>, run <code>jekyll build</code>: the audio archive joins your existing blog as searchable text content.
The episode-to-post workflow for Jekyll
For each episode: convert audio on Audio to Markdown, save as _posts/YYYY-MM-DD-episode-slug.md using the publish date and a slugified title. Prepend YAML frontmatter: layout: episode (or your theme's post layout), title, date, guests, tags, excerpt, audio_url. Jekyll's build picks up the new post on the next run.
For the layout, either use your theme's default post layout (works fine for most podcast themes) or create a custom episode layout that surfaces the audio player at the top, the transcript below, and per-episode metadata in a sidebar. Either approach takes the converted Markdown as the body content.
Filename conventions Jekyll requires
YYYY-MM-DD-title-slug.md with the date matching the actual publish date and the slug ASCII-only with hyphens. 2026-02-14-interview-with-sarah-chen.md is canonical. Jekyll uses the date prefix for ordering and URL generation; the slug becomes the URL path. Match the slug to the SEO-friendly form of the title for best discoverability.
Why publish full transcripts
Three benefits compound. SEO: Google indexes the page as a real text article and surfaces it for long-tail queries. Accessibility: deaf and hard-of-hearing visitors can access the content. Citation: listeners can quote specific passages with timestamps, link back to the source, drive new traffic. Pair with PDF to Markdown for Jekyll and URL to Markdown for Jekyll for non-audio content sources.
Frequently asked questions
Does the converter produce Jekyll-compatible Markdown?
Yes: the structured Markdown output works as-is in any Jekyll post. Add YAML frontmatter at the top, save with Jekyll's required filename convention, and jekyll build picks it up on the next run. The transcript renders through whatever post layout your theme provides.
How should I name files for the _posts directory?
Jekyll requires YYYY-MM-DD-title-slug.md. Use the publish date as the prefix (matches the post's sort order) and a hyphenated lowercase ASCII slug as the title portion. Most slugify libraries (jekyll-slugify, python-slugify) produce a Jekyll-safe slug from any string.
What about Liquid template tags in the transcript?
If the transcript happens to contain literal text that looks like Liquid ({{ ... }} or {% ... %}), Jekyll will try to evaluate it during build. Wrap such content in {% raw %} ... {% endraw %} blocks: usually only relevant for technical podcast episodes that quote Liquid syntax verbatim.
Can I add an audio player above the transcript?
Yes; in your post layout (_layouts/post.html or a custom _layouts/episode.html), include an HTML5 audio element pointing to the audio_url from frontmatter: <audio controls src="\{\{ page.audio_url \}\}"></audio>. The transcript renders below as the post body. Listeners can play and read in parallel.
How do I migrate a back catalogue of episodes?
For 5-30 episodes, the web tool plus copy-paste handles each in a few minutes: manageable in one sitting. For 100+ episodes, run a local OSS transcription pipeline (Whisper or faster-whisper) that emits structured Markdown, write each result into _posts/ with the right filename, commit. MDisBetter's web tool is designed for ongoing per-episode publication; bulk historical backfill is better served by OSS automation.