Jekyll & HiFi10.22.15 · ruby
After publishing the first episode of The Commit, Devpost’s new video podcast on YouTube, Richard and I went all out with new mics, a mixer, pro lights, and some awesome guests. But, we we’ve dependent entirely on our weekly newsletter to bring in subscribers.
What we really need is distribution, aka iTunes syndication.
The last time I setup a podcast in iTunes was 8 years ago and it was a hack job using WordPress + half-maintained plugins. This time around, I’m doing it right: setting up 2 individual podcasts, one for audio and one for video. It’ll mirror our growing YouTube channel and open up The Commit to a bigger audience.
The mechanics of publishing a podcast iTunes are fairly simple:
- Host your audio files somewhere (easy, S3 + CloudFront!)
- Create an iTunes compliant RSS feed (UGH, this part sucks)
- Validate the feed (google it)
- Submit feed to iTunes (like 3 clicks)
- Once approved, tell people to subscribe (you’re shameless, right?)
Ok, the feed specs aren’t that complicated, but writing RSS XML is awful and I’d prefer not to. It’d be more efficient to use a CMS, like Jekyll, (the static site generator which powers [email protected]), to create the markup.
And thanks to a template I found on GitHub, itunes-jekyll-template, that’s exactly what I’m doing!
Written by Rishat Muhametshin, itunes-jekyll-template creates iTunes feeds using three ingredients:
config.yml, a YAML file which contains general details about the podcast (URL, name, author, license, cover art URL, etc.)
_posts, a directory of markdown files with details on each specific podcast episode (name, summary, date, filename, file type, etc.)
itunes-feed-layout.xml, a layout file which contains all the tags / logic necessary for Jekyll to write out the feed code.
First things first, the itunes-jekyll-template repo isn’t very well organized. After reviewing the README, I forked the repo and created the following (working) directory structure:
_layouts contains my (renamed)
feed.md is a dummy page which instructs Jekyll to process all the individual posts according to the
feed.xml layout. FYI, you should edit
feed.xml as necessary for your podcast. The default configuration assumes that your podcast contains explicit content and that you’re serving MP3s.
Next up, add each episode’s info to an individual file in
_posts. Here’s an example from
title: “Input / Output” subtitle: “New stuff!” date: 2015-10-15 12:00:00 category: podcast number: 14 duration: 6:16 length: 578027337 media: https://s3.amazonaws.com/devpostcommit/media/Episode14.mp4 — First up, we’ve got a new product announcement for all the hackathon hackers. Next, nostalgia for our favorite mice, keyboards, and PS/2 input devices of yore (er, 1998). And as usual, staff picks: Sahara and Project SAOUI. ```
Up top, we we YAML (between the
---s) for episode specific details, and below, HTML to describe the episode, (although you’re probably better off with plaintext).
After you compile the ‘site’ with Jekyll, open up
_site/index.html to see your feed. If it looks good (and validates!), upload it on s3, submit it to the iTunes store, and start working on your next episode!
First up, we’ve got a new product announcement for all the hackathon hackers. Next, nostalgia for our favorite mice, keyboards, and PS/2 input devices of yore (er, 1998). And as usual, staff picks: Sahara and Project SAOUI.]]>
Bonus: with a couple extra properties, some creative naming (
video_file_size), and an additional layout file, I could actually generate both my audio & video feeds using one set of
_posts files. 2 feeds, 1 stone!