Patrick Lewery Harris


Command line tools for working with Pinboard.



pip install pintools

Dev install

Requires pre-commit

$ git clone
$ cd pintools
$ make install


See requirements.txt


Pinboard Authentication

Pintools uses lionheart/ to connect with Pinboard. Authentication is completed using your Pinboard API token, which can be found in settings->password on Pinboard.

Pintools will by default look for your Pinboard API token in $PINBOARD_API_TOKEN. Alternatively it can be specified using the --pinboard_token argument if you do not want to use the environment variable.

Sync Github Stars

Pintools can be used to copy Github stars to your Pinboard account. Starred gists are not currently copied.


pintools github [-h] [--token TOKEN]

Github Authentication

Pintools uses PyGithub to connect to Github. In order to authenticate with Github, you will need to create a Personal Access Token in your Github account, with the read:user scope.

Pintools will look for this Personal Access Token in $PYGITHUB_ACCESS_TOKEN. Alternatively, this token can be specified using the --token arguement

Pintools can be used to copy Reddit saved items to your Pinboard account. Note that new saved items can be saved via IFTTT, but if you want to back up the entirety of your saved links, you need to use a script like this because IFTTT will only work on new saved items.

Saved comments are not currently copied.


pintools reddit [-h] [--secret SECRET] [--client_id CLIENT_ID] USERNAME PASSWORD

Reddit Authentication

Pintools uses PRAW to connect with Reddit. You will need to crate a developer application (personal use script) on Reddit in order to authenticate. Please follow the PRAW insructions on ‘Password Flow’ here.

Once you have created a personal use script application on Reddit, save the Client-ID and Client-Secret. By default, pintools will look for these in $REDDIT_CLIENT_ID and $REDDIT_CLIENT_SECRET. Alternatively, these can be specified using the --client_id and --secret arguments. Username and password for Reddit must also be provided on the command line.

Pintools can be used to tag each bookmark against the originating site, for easier organization. For example, any bookmark from will be tagged with github.


pintools tags [-h] [--config CONFIG_FILE]

This can be optionally customized using a config file. The config file can group several domains under one URL.

The config file uses YAML syntax like so:

domains: # list title must always be 'domains'
  utoronto: # Each key is the final tag you want on your bookmarks
    - utoronto # each item in the list is the base URL you want the tag associated with
    - cs.toronto # don't include .com or www.
    - t
    - twitter

There is an example config file here

Fix Titles

Pintools can fix bookmark titles for you, which sometimes get messed up when saving bookmarks automatically with IFTTT.


pintools titles [-h] [--tag TAG]

In order to prevent accidentally nuking all your bookmark titles, this feature operates on a single tag. For each bookmark with the tag specified, pintools will grab the title of the URL, and update the bookmark’s title in Pinboard.