Importing Unread articles from Raindrop to Readwise Reader
I'm trying out Readwise Reader, starting today. I've tried... almost all of the Read It Later services, but had kind of put off checking this one out because the marketing around their original product Readwise seemed very geared towards AGGRESSIVE SILICON VALLEY EXECUTIVES who need THE POWER OF MACHINE LEARNING AND MIND HACKS to ABSORB THE MOST KNOWLEDGE and CREATE LEARNINGS FOR THE FUTURE or whatever. But some really thoughtful people I know seem to dig it, and so I wanted to give it a fair shake.
I've been using Raindrop for both bookmarks and "Read it later" for a while. The mobile app is nice-but-not-amazing, the bookmark saving workflow is nice-but-not-amazing... but it does have one really killer feature I haven't seen in other services: the ability to mass-bookmark all tabs in a given browser window. (It's even window-specific, so if you have multiple windows you can shift tabs around to control exactly which ones you want to mass-bookmark without having to temporarily close any other tabs you happen to have open).
The only problem is that getting a real test of the system into place meant importing my real backlog into Readwise Reader. Their Raindrop integration is built around their main product (Readwise, instead of Readwise Reader), which is a highlighting/knowledge-base type thing, so it only works on bookmarks in Raindrop to which you've added an annotation using their highlighting tool.
Poking around a bit, I did notice that Readwise Reader does support CSV imports, but in an undocumented format that I guess you have to join a "community Discord" to be told about. I hate this practice and would sooner walk away from a service entirely than be forced to join a Discord just to look up information, something it is not good for, but was lucky to find that a few people on Reddit (lol) have shared a link to a Google Drive URL (lol) that outlines the CSV format, so I was able to learn that they require this series of columns:
URL,Title,Selection,Folder,Timestamp
the Folder can be "Unread" or "Archive", and the Timestamp must be in "Unix time", the number of seconds elapsed since 1970-01-01 00:00:00UTC.
Raindrop offers easy exporting of any given view to CSV (along with other formats), so I was able to quickly get access to that data. Unfortunately, it wasn't quite the right CSV format. So I wrote a quick Ruby script to reformat the files:
require 'csv'
require 'time'
unless ["Unread", "Archive"].include?(ARGV[2])
raise RuntimeError, "third argument must be \"Unread\" or \"Archive\", found #{ARGV[3]}"
end
rows = CSV.read(ARGV[0])
CSV.open(ARGV[1], "wb") do |csv|
csv << ["URL", "Title", "Selection", "Folder", "Timestamp"]
rows.drop(1).each do |row|
csv << [row[3], row[0], nil, ARGV[2], Time.parse(row[5]).to_i]
end
end
I generated two CSV files from Raindrop, one with just my "Unsorted" folder (which is where I put things when I bookmark them to read-later) and another with my "Misc" collection, which is the general-purpose collection I use for saving things that don't belong in some project-based set of bookmarks. Then I ran the command twice:
ruby csv-mutate.rb raindrop-later.csv readwise-inbox.csv Unread
ruby csv-mutate.rb raindrop-archive.csv readwise-archive.csv Archive
I imported both of these files via the "Upload file" option on Readwise Reader's Import Page and within ~5 minutes they had processed both files.
This process works as of Sep 4 2023; I can't guarantee that it will work even tomorrow. But it worked for me just now and it occurred to me that this is exactly the kind of thing I always wish would show up in search results when I have the same problem, so if that's you, good luck!
- Previous: they thought I was goofy and all…
- Next: Postmarks