This is something I should have done a while ago, but recently I started using my reading list for managing more items than in the past. After finally searching I found they’re stored within Safari’s bookmarks data (~/Library/Safari/Bookmarks.plist
).
Using the plist library the reading list item urls can be extracted using python.
#!/usr/bin/env python
import os
import plistlib
# load bookmarks plist into dict
relpath = 'Library/Safari/Bookmarks.plist'
fullpath = os.path.join(os.environ['HOME'], relpath)
plist = plistlib.readPlist(fullpath)
# get the reading list node
for child in plist['Children']:
if child.get('Title', None) == 'com.apple.ReadingList':
bookmarks = child['Children']
# extract urls from each
urls = (bookmark['URLString'] for bookmark in bookmarks)
print('\n'.join(urls))
Then the urls can, for example, be opened in a different browser.
open /Applications/Google\ Chrome.app $(~/bin/readinglist-urls.py)
Why bother, use Pocket or Instapaper?
It’s a more universal “save url for later” because often the iPhone will open a share sheet with only a few options that includes saving to the reading list.
Pocket for me is for longer posts or articles that I save for times where I can lounge in a comfy chair or when travelling. My workflow with Safari’s reading list is odd, but its a temporary bookmark list that I can saveĀ links from any webview in any app I use on my iPhone and then I can take action when I’m back on my MacBook.