The easiest way to sync Kindle highlights to Obsidian: Readwise to Obsidian Redux
Almost exactly six months ago, I wrote a blog post detailing my workflow for processing content. Specifically, I wrote about how I used a python script to take my highlights from Instapaper, Kindle, Twitter, and Airr and automatically put them into Obsidian.
That method worked, and you can read the original article in the link above. However, today, Readwise announced that they now have an official Obsidian community plugin, and I disabled my trusty old python script for good.
You see, although my old script worked, there were quirks– not the least of which was that making changes to it meant programming in Python. I’m not a developer, so while I made do, it was never a painless experience. I also ran into issues with time zones and invalid characters being used in titles. So I’m thrilled to have something significantly better from Readwise itself! Here’s a video from the Readwise team, or read on for instructions on how to get started.
From Readwise on YouTube
Install the Obsidian plugin.
In your Obsidian vault, go to Settings > Community plugins. You’ll need to turn Safe mode off for community plugins if you haven’t already.
Then, click Browse and search for Readwise Official.
Install it, and then enable it.
Connect your Readwise account to the Obsidian plugin
Head back to the Settings menu and scroll down to the “Plugin Options” section, and then click Readwise Official.
Click connect as highlighted in orange above, and a browser window will open, showing the Obsidian Export options. You’ll need to sign into your Readwise account if you haven’t already.
At this point, your Readwise account will have been connected to the Readwise Official plugin, but you won’t have triggered any syncs yet. If you don’t want to change any of the configuration settings, you can then skip ahead to triggering the sync on Obsidian, but let’s run through the options anyway.
Modifying configuration settings
On the Obsidian Exports page, you’ll be presented with a few options.
Group Files in Category Folders
By default, this will be enabled. When enabled, Readwise will put your highlights in different folders depending on its source. For example, Kindle highlights will appear in the folder Books
. Disabling this option means all new notes will be created in the directory specified in the Obsidian plugin settings, which we’ll cover later. I left this enabled in case I read a book that has the same name as a blog post about the book, for example.
Use Custom Formatting
Custom formatting is disabled by default, and lets you choose how the final note looks. Here are the things you can change in this section
- Page title
- Page metadata
- Highlights header
- Highlight
- YAML front matter
- Sync notification
I did make some changes in this section just to tweak how I want information to be displayed.
Page metadata
I don’t see the need for Page metadata since this is what I use YAML front matter for, so I removed the matadata section and the document tags (I never use those either). So my Page metadata section looks like this:
{% if image_url -%}
![rw-book-cover]({{image_url}})
{% endif -%}
{% if url -%}
URL: {{url}}
{% endif -%}
Highlight
By default, highlights are entered in bullet-point form. That’s fine when I’m taking notes, but when I’m highlighting someone else’s words, I like to be very careful to use blockquotes. I frequently do block searches in Obsidian, and I do NOT want to accidentally pass off a quote as something I said.
To this end, I added a >
before each highlight and two newlines (carriage returns) at the end to delineate each highlight. That way, I can quote just one highlight at a time.
> {{ highlight_text }}{% if highlight_location and highlight_location_url %} ([{{highlight_location}}]({{highlight_location_url}})){% elif highlight_location %} ({{highlight_location}}){% endif %}{% if highlight_note %}
- Note: {{ highlight_note }}{% endif %}
As you can see above, I also removed highlight tags, which I never use.
YAML front matter
Metadata has to be quite specific, so I added parameters I already use for other notes in this section. The TVZ
is a tag I use that means “To Verzettelen”, meaning pages that I need to process further.
Title: {{full_title}}
Author: {{author}}
Tags: TVZ, readwise, {{category}}
date: {{date}}
Sync notification
As someone who has worked on a syncing plugin for Readwise to Obsidian, I know that things go wrong sometimes. Enabling this outputs a synchronization log to a note, which has come in handy MANY times in the past. Has that book been synced, or did something go wrong? So I copied what the Readwise team suggested:
- [[{{date|date('Y-m-d')}}]] {{time}} — Synced {{num_highlights}} highlight{{num_highlights|pluralize}} from {{num_books}} document{{num_books|pluralize}}.
{% for book in books %} - {{ book.num_highlights_added}} highlights from {{ book.title }}
{%endfor %}
Select Items to be Exported
In this section, you can choose which books/podcasts/other content in Readwise you want to export. It is disabled by default. If you haven’t synced Readwise to Obsidian before, and you just want to pull in everything, leave it disabled.
In my case, I have already synchronized everything using the plugin I mentioned, and didn’t want to create another few hundred duplicate notes in my vault. So I enabled it and selected a few more recent books.
A weird thing about this Export settings page is that there is no saving– it just automatically saves it. Just a note, because I was scrolling up and down that page looking for an indication that it had been saved before I realized it is done automatically.
Initiate Sync from Obsidian
Head back to Obsidian and to the Readwise Official plugin options page. You should see a “Initiate Sync” button where the “Connect” one was before.
That’s a good sign - that means your Readwise account has been connected, and your configuration settings from the previous step will be fetched.
Before you click the button, note that the Customize base folder option is set to Readwise
. This is the directory that all your Readwise notes will be created. So if you enabled Group Files in Category Folders earlier, your Kindle highlights will be saved in Readwise/Books/booktitle.md
. You can change the base folder if you prefer, but I just kept the default.
Time to click the button!
You’ll see a few messages popping up on the upper right corner of your screen, and you’ll also see a Synced! message appear next to the button you just clicked.
Verifying results
In your Obsidian vault, search for one of the items you synced. Here’s what my note for Pat Flynn’s Superfans looks like:
Great! It looks exactly how I want it to look.
Set up automatic sync
If you leave it there, the plugin will only sync when you tell it to, so you’d need to go into the plugin options each time. That’s not particularly useful for me, because I want it to just happen.
If you feel similarly, head back into Plugin Options one more time and select your desired frequency in the Configure resync frequency dropdown menu. I chose 1 hour, the minimum. I also enabled the automatic sync when Obsidian opens.
Conclusion
I love this new plugin! It was very much needed, because existing options for accomplishing the same thing were flawed in some way, mainly because they were community-driven– meaning the people who created these workarounds (myself included) were “just” users who had other jobs. I’m grateful that the Readwise team has acknowledged the popularity of Obsidian and taken on the maintenance burden. I’ve experimented with the plugin quite a bit and haven’t found any major issues so far. It is a seamless way to get the best of the content I’ve consumed from various sources into one single source of truth: Obsidian. I highly recommend it to anyone looking to streamline content processing and creation processes.
Note: This post contains an affiliate link for Readwise. Clicking on that link will give you a two-month trial of Readwise, double the usual amount, and they give me a small percentage if you sign up for a plan. Check out My Ethics Statement to see my standards for promotions.