A plugin that makes your tagged Pinboard bookmarks accessible as a template variable.
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.


Jekyll Pinboard Plugin

Access your Pinboard data in Jekyll.

This plugin that makes your tagged Pinboard bookmarks accessible as a template variable in Jekyll. Useful for managing general bookmark and recommendation pages on your Jekyll site. You can get more creative and use it to keep a portfolio page up to date or simply publish parts of your Pinboard bookmarks in a different format.

How it Works

This plugin registers a Hook that will load all of your Pinboard links for specified tags into a variable you can use in your templates. It's slightly similar to the way Jekly natively handles data files with two key differences:

  • It's loading the data remotely from Pinboard everytime you run a build
  • If you're running jekyll serve --watch locally the Pinboard data will not refresh as content is updated. This is to avoid making gratuitous API calls and bogging down the rebuild.

How to Install as a Gem

Add this line to your application's Gemfile:

gem 'jekyll-pinboard'

And then execute:

$ bundle

Or install it yourself as:

$ gem install jekyll-pinboard

Once it's installed into your evironment, add it to your _config.yml:

  - jekyll-pinboard

Then run jekyll --safe like normal.

Lazy Install

You can move lib/jekyll-pinboard.rb from this repository into your _plugins folder and you should be good to go.

How to Use

First, make sure you've specified your Pinboard token and the tags you want to pull data from in your _config.yml file. You can find your token at pinboard.in/settings/password.

   token: username:token
     - tag1
     - tag2
     - tag3


In your templates you can access your Pinboard bookmarks (referred to as posts in the API) like this:

site.pinboard.posts.all # An object containing all of your bookmarks  
site.pinboard.posts.tags.travel # An object containing all posts belonging to a specific tag

As an example, if you specified travel as one of your tags and want to iterate over all those bookmarks you could do something like this:

{% for item in site.pinboard.posts.tags.travel %} 
    <a href='{{ item.href }}'>{{ item.description }}</a> - {{ item.extended }}
{% endfor %}

If you wanted to iterate over all of the bookmarks in your account it would look something like this:

{% for item in site.pinboard.posts.all %} 
    <a href='{{ item.href }}'>{{ item.description }}</a> - {{ item.extended }}
{% endfor %}

You'll have access to all of the data associated with these bookmarks that you would normally see using the Pinboard API. A bookmark has the following attributes:

  • href
  • description
  • extended
  • meta
  • hash
  • time
  • shared
  • toread
  • tags

GitHub Pages

This is not supported by GitHub Pages. You will need to generate your site locally and push it if you want to host on GitHub.

Note: If you use this plugin and host your generated site on GitHub pages be mindful that your private API token for Pinboard is included in _config.yml. You probably don't want to publish that publicly!


It's a very minimal plugin, which I think is its strength, but pull requests and discussions are welcome.

If you're using this plugin on your own Jekyll site reach out and let me know!