Migrate your data from Readwise Reader to Omnivore
Tags: rust, tutorial
Published: 2024-01-10 21:31:35

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](https://github.com/duncanlew/Readwise-to-Omnivore-Importer).

<hr />

## 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](https://blog.readwise.io/p/f8c0f71c-fe5f-4025-af57-f9f65c53fed7/#howdoigenerateacsvofallmysaveddocuments) for the steps.
- [API key](https://docs.omnivore.app/integrations/api.html#getting-an-api-token) 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](https://github.com/duncanlew/readwise-to-omnivore-importer/releases) of this project.  
  
#### 1. Download the binary
Navigate to the [Release](https://github.com/duncanlew/readwise-to-omnivore-importer/releases) 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    
```bash  
./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](https://www.rust-lang.org/tools/install) 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
```bash  
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.
```bash  
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](https://github.com/duncanlew/Readwise-to-Omnivore-Importer) inspires you to embark on your own journey of continuous learning. Happy coding! 😎

{% embed https://github.com/duncanlew/Readwise-to-Omnivore-Importer %}

<hr />
If the content was helpful, feel free to support me [here](https://www.buymeacoffee.com/duncanlew):
<a href="https://www.buymeacoffee.com/duncanlew" target="_blank"><img src="https://cdn.buymeacoffee.com/buttons/default-orange.png" alt="Buy Me A Coffee" height="41" width="174"></a>