Migrate your data from Readwise Reader to Omnivore

Duncan Lew
3 min readJan 10, 2024

Readwise Reader and Omnivore are both great read-later services. Each offers unique features and experiences. Although I was an avid user of Readwise Reader, I didn’t use all of its features to their fullest. Omnivore, with its open-sourced nature, catered more closely to my needs. In situations where your needs change, migrating your saved content from Readwise Reader to Omnivore could become a necessity. Facing this issue myself, I decided to write my own tool to facilitate this process.

I had two main reasons for developing this tool. Firstly, I wanted to address this need that I have to seamlessly transfer my content between these two services. Fortunately, Omnivore provides a very extensive API to achieve this. Secondly, this project served as an opportunity for me to learn Rust, a programming language popular for its performance and memory safety.

This blog post will describe the steps you need to perform to import your data into Omnivore. The GitHub project with the source code can be found here.

Prerequisites

To get started with the data migration tool, you will need the following:

  • Exported CSV file from Readwise Reader using the web interface. Check Readwise’s FAQ for the steps
  • API key from Omnivore

Running the importer tool

There are two ways to run the importer tool. The easiest way without requiring to install Rust is by using the binary. For those who would like to explore the repository or make changes to the source code, it’s also possible to run the tool with the Rust build tools.

Running it with the binary

A compiled binary is available for download in the project GitHub Releases of this project.

  1. Download the binary
    Navigate to the Release page and download the latest version for your operating system
  2. Run the binary
    Open a terminal and navigate to the directory where you downloaded the binary. Add your CSV file in that directory and then run the following command with the two parameters replaced
./readwise_to_omnivore_importer --key YOUR_API_KEY --file-path PATH_TO_CSV

Running it locally

To run the project locally, make sure to first install Rust on your local machine. This should only take a few minutes. When that is done, open up a terminal and follow these steps:

  1. Clone the repository
git clone git@github.com:duncanlew/readwise-to-omnivore-importer.git   
cd readwise-to-omnivore-importer

2. Add your CSV file
Add your exported CSV file from Readwise Reader into the directory called readwise-to-omnivore-importer.

3. Run the importer
In the following command replace YOUR_API_KEY and PATH_TO_CSV with your api key and file path to your CSV, respectively.

cargo run -- --key YOUR_API_KEY --file-path PATH_TO_CSV 

Takeaway

Transitioning your reading list from Readwise Reader to Omnivore is a streamlined process thanks to their easy export and import tools and APIs. Moreover, creating your own tool using an unfamiliar tech can be both rewarding and educational. I hope this guide, along with the provided source code in the GitHub project inspires you to embark on your own journey of continuous learning. Happy coding! 😎

If the content was helpful, feel free to support me here:

Buy me a coffee link for Duncan Lew

--

--