Deprecated: Return type of I::current() should either be compatible with Iterator::current(): mixed, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /home/public/kirby/toolkit/lib/i.php on line 62

Deprecated: Return type of I::next() should either be compatible with Iterator::next(): void, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /home/public/kirby/toolkit/lib/i.php on line 91

Deprecated: Return type of I::key() should either be compatible with Iterator::key(): mixed, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /home/public/kirby/toolkit/lib/i.php on line 71

Deprecated: Return type of I::valid() should either be compatible with Iterator::valid(): bool, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /home/public/kirby/toolkit/lib/i.php on line 101

Deprecated: Return type of I::rewind() should either be compatible with Iterator::rewind(): void, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /home/public/kirby/toolkit/lib/i.php on line 53

Deprecated: Return type of Collection::count() should either be compatible with Countable::count(): int, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /home/public/kirby/toolkit/lib/collection.php on line 80

Deprecated: parse_str(): Passing null to parameter #1 ($string) of type string is deprecated in /home/public/kirby/toolkit/lib/url.php on line 135
One Tap Less | Send an entire feed to Pinboard

Send an entire feed to Pinboard


Deprecated: trim(): Passing null to parameter #1 ($string) of type string is deprecated in /home/public/kirby/toolkit/lib/str.php on line 506

Recently I’ve set an IFTTT action to send all my liked articles from Instapaper to Pinboard1. However, the action can’t cover the entries I liked in the past. Thinking about it, I wrote a python script you can run on Pythonista to send an entire feed to Pinboard.

Use this action carefully, I really meant when I said it will send the whole feed to Pinboard. Don’t blame me if it doesn’t run smoothly if you apply it to an enormous feed. It’s the kind of script you won’t have to use more than once for each feed you’d like to archive. Also, If you try to add a link already stored in Pinboard, it’ll be replaced. So be careful not to ruin your tag system.

import feedparser
import urllib
import bs4

# Get your token at:
# http://pinboard.in/settings/password
token = 'login:stringofnumbers'

# Add the link for the RSS you'd like to send to Pinboard
rss = 'https://onetapless.com/feed'

print 'Loading feed...'
feed = feedparser.parse(rss)
entries = feed['entries']

for entry in entries:
    query = 'https://api.pinboard.in/v1/posts/add?auth_token=' + token + '&url=' + urllib.quote(entry['link']) + '&description=' + urllib.quote(entry['title'].encode('utf-8')) + '&tags=starred' #replace the ‘starred’ with other tag you want, remember to apply a urllib.quote if it has spaces or anything. It would look like this '&tags=' + urllib.quote('new tag').
    pinboard = bs4.BeautifulSoup(urllib.urlopen(query))
    print 'Added to Pinboard: ' + entry['title']

You’ll probably find your way with the instructions in the script. You can grab your Pinboard API token here. Also replace the RSS placeholder, which contains this blog’s feed link2 with the feed you want to add. If you’re looking for your Liked articles’ feed on Instapaper, check the top right corner of the screen, as the image shows:

This workflow was made based on the scripts by Jack Bilbrey to post to Pinboard using your API token , and by Ole Zorn, introducing Pythonista users to the feedparser module.


  1. If you join Pinboard or upgrade your account in the next 2 days, you’ll support the Lavabit’s legal funding. If you praise a better web, the time to take action is now. 

  2. Or add all my articles to your Pinboard, I could appreciate that.