Jekyll & HiFi

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:

  1. Host your audio files somewhere (easy, S3 + CloudFront!)
  2. Create an iTunes compliant RSS feed (UGH, this part sucks)
  3. Validate the feed (google it)
  4. Submit feed to iTunes (like 3 clicks)
  5. 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:

  1. config.yml, a YAML file which contains general details about the podcast (URL, name, author, license, cover art URL, etc.)
  2. _posts, a directory of markdown files with details on each specific podcast episode (name, summary, date, filename, file type, etc.)
  3. 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:

~/feed . _config.yml _layouts _posts feed.md

_layouts contains my (renamed) feed.xml file. 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 _config.yml & 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 2015-10-15-14.md:

```yaml

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!

```xml

The Devpost Commit http://commit.devpost.com Devpost Inc. © 2015 Devpost Inc. en-us Tue, 20 Oct 2015 00:10:26 -0400 Tue, 20 Oct 2015 00:10:26 -0400 No Hackers, hackathons, and assorted nerdery On The Commit, Devpost's weekly podcast, Richard and Neal talk about our favorite projects, interview leading hackers and evangelists, and keep you up to date developer news. New episodes hit the street every Thursday! On The Commit, Devpost's weekly podcast, Richard and Neal talk about our favorite projects, interview leading hackers and evangelists, and keep you up to date developer news. New episodes hit the street every Thursday! Devpost Inc. [email protected] Episode 14: Input / Output No Devpost Inc. 376.0 Thu, 15 Oct 2015 08:00:00 -0400 New stuff! <![CDATA[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. ]]> <![CDATA[

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.

]]>
https://s3.amazonaws.com/devpostcommit/media/Episode14.mp4 Technology

```

Bonus: with a couple extra properties, some creative naming (audio_file, audio_file_size, video_file, 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!

Comments :)
2017 Neal Shyam