Jekyll Blogging Workflow: Link Posts

I wanted a way to write blog posts digesting the links I come across on a regular basis, much in the style of Waxy.org/links, Mike Gunderloy’s A Fresh Cup, and numerous others that I follow.

I use Pinboard to collect links throughout each day. It has a really simple interface, can be posted to from all kinds of apps I use everyday (Reeder, TweetBot, etc.), and is run by a really cool dude.

Naturally I wanted something that could read my Pinboard bookmarks and automatically post to the blog. However, since I’m using GitHub Pages it can’t quite be as automated as a new post everytime I bookmark because I have to create a Markdown file and then push it to GitHub to publish. This is OK, since a digest is probably a better format anyway.

Luckily Pinboard offers feeds of your bookmarks in various formats. We can combine these feeds with a little Ruby magic I whipped up I call pinboard2md:

#!/usr/bin/env ruby
require 'nokogiri'

doc = Nokogiri::XML(ARGF)

doc.search('post').each do |post|
  url = post.attr('href')
  title = post.attr('description')
  description = post.attr('extended')

  output = "* [#{title}](#{url})"
  output << " - #{description}" if description.to_s.strip != ""
  puts output
end

I run it from the command line with:

curl "https://foo:[MY_PINBOARD_PASSWORD]@api.pinboard.in/v1/posts/all?fromdt=2014-10-17" | pinboard2md

It grabs the feed via curl (with some additional options to only fetch links I posted within the last week) and pipes to our Ruby script that does some simple parsing and converts it to a bulleted list of links in Markdown format that I can copy and paste into a new post or just pipe to a new file. It’s nice because it gives me a bit of time to truly “digest” the links and add additional commentary, although any descriptive text that I entered into Pinboard when I bookmarked will natually be included there as well.

This is a good example of why a Jekyll static page blog is so appealing to developers like me and why command-line workflows should be desirable to anyone who works with text.