Centralizing your academic resources: how to sync Zotero and Notion through Make (Integromat)

Zotero is an excellent tool for managing references, thanks to its browser extension, which simplifies capturing resources for academic work. It also facilitates extracting references from resources. For writing academic papers, the combination of databases (tables) and free writing provided by tools like Notion, Coda, or Roam Research can be very useful. These tools also make it simple to reference resources in-text without disrupting the writing flow.

Syncing data between Zotero and Notion/Coda/Airtable can facilitate the process of producing your paper/thesis/academic work. However, it is important to note that it won't do the work for you. It can only assist you in organizing your knowledge. You can capture your references in Zotero and then write your thesis/paper/article in Notion/Coda, or a similar tool. In this article, we will focus on syncing data between Zotero and Notion using Make.

Make is an automation software with a user-friendly drag-and-drop interface and powerful API capabilities. There are other automation software options available, such as your custom script or alternative tools like n8n, Zapier, IFTTT, or similar.


What is Zotero

Zotero is a free reference management software that you can install on your computer. It's a powerful tool for managing academic references, allowing you to export and cite them directly in your Word document (if you use the Office suite) through its Word extension. While Word is a great option for using Zotero, this article explores syncing Zotero with cloud-based software Notion. In future articles, we will also cover syncing Zotero with Coda and Airtable.

What are Notion, Coda, and Airtable

Notion, Coda, and Airtable are three separate and distinct software tools. Notion is an "all-in-one workspace" for both individuals and companies, featuring a simple yet powerful interface that combines databases and free-text pages to manage various workflows.

Coda is a "one doc" solution that combines tables and text pages to create a connected, scalable document. Coda also includes a collaborative editing feature similar to Google Docs, which makes it a great tool for receiving feedback on papers, articles, and theses.

Airtable is an easy-to-use database management software that requires no coding knowledge. Airtable's "bases" (equivalent to Notion's databases and Coda's tables) are more scalable than those of Notion and Coda. Additionally, Airtable has native dashboards that make it easy to manage large databases with minimal effort. However, unlike Notion and Coda, Airtable does not allow for document creation, making it ideal for knowledge management but not for referencing knowledge during the writing and editing processes.

In this article (part 1), we will explore how to sync data between Zotero and Notion using Make. Future articles will cover syncing data between Zotero, Coda, and Airtable. To receive updates on when these articles are published, you can subscribe to my newsletter here.

How to sync data between Zotero and Notion through Make

This article explores the use case of syncing Zotero to Notion. The primary user story is that of a thesis writer who wants to save references in Zotero and sync them to a Notion database. This allows the writer to reference papers while writing their thesis in Notion. Zotero is the main source of truth, while Notion is a repository that lets you manipulate data, add notes and insights, and relate references to each other.

To automate this process, we will use Make and the Zotero API, and Notion API. We will use the HTTP module to make API calls to Zotero since it's not supported natively in Make. The Notion API is supported natively in Make, so we will use that for our API calls. You can find the API documentation for Zotero here, for Notion here, and for the HTTP module here. The automation involves adding a new resource to Notion when it's added to Zotero and deleting the resource in Notion when it's deleted in Zotero. The picture below shows what the entire scenario in Make can look like.

scenario flow in Make

Here are the steps we are following (you can watch the video for visual instructions).

  1. Set up Zotero web (follow API documentation instructions)

    If you haven’t already done so, you will need to set up your Zotero web account first. This is a web-based version of Zotero that syncs data from your desktop app automatically. Our automation will use this environment to get your new references in Zotero. You can follow these steps to activate your Zotero web account.

  2. Authenticate Zotero in Make through the HTTP module

    Once your Zotero web account is activated, you will authenticate it in Make on the HTTP “Make a request” module. This is your trigger (first module) in the automation. In the HTTP module, add a header with key: Authorization and value: Bearer {{yourToken}}. Replace {{yourToken}} with your API token. You can create your API token from the Zotero web app here. You can then copy your new private key and paste it after Bearer in your authentication header.

    The HTTP request is GET, and the endpoint URL is https://api.zotero.org/users/{{userID}}/collections/{{ID}}/items?dateModified=desc&limit=10. Replace {{userID}} and {{ID}} with your own user and collection ID. You can get your userID here. You can get the collection ID from the URL of your collection. The collection ID is the string at the end of the URL of your collection (highlighted in the screenshot below).

how to find zotero collection id

The collection ID is the string after the last slash in the web URL of your collection.

Use this API call to retrieve data from a designated collection in Zotero. This simplifies the process and aligns with our use case of syncing Zotero and Notion for a particular paper or thesis. By keeping all your references in one collection (folder) in Zotero, the process becomes more streamlined.

3. Set up a Notion database (after running a test Zotero call to see the fields you can retrieve via the API)

After setting up your HTTP module in Make, it is time to test it to ensure it works as expected and retrieves the necessary data. To do this, right-click on the HTTP module in Make and select "Run this module only". Then, click on the response data bubble to view a list of fields retrieved from Zotero. Use these fields (as needed) to generate your Notion database. Create the database in your Notion account and include any desired fields from the API response. Additionally, add any custom fields such as notes or a scoring system.

4. Connect your Notion workspace in Make

If you haven't already, it's time to link your Notion account in Make. To accomplish this, click on the Notion module in Make and select "Add" to connect your account. You will require your internal integration token, which you can generate by going to your Notion workspace, opening "Settings & Members", selecting "Connections", and clicking on "Develop or manage integrations". A new tab will open up, where you can select "New Integration" and enable all the toggles. Follow the prompts on the screen, and you will receive your token at the end. Copy and paste that token into Make to establish your Notion workspace connection.

To learn more about how connections work in Notion, visit this link. You can also watch a video tutorial of the above steps here. Once you have created your connection in Make, ensure that your Make bot has access to the Notion database you are using for automation. To do this, open the Notion database, select the three dots at the top right corner, open "Connections", search for your Make bot, and give it access to the database.

5. Create the scenario to send resources from Zotero to Notion

Let's create and finalize the scenario to send references from Zotero to Notion using Make. To better understand the process, you can watch the video. The scenario uses six modules in Make:

  • HTTP Make a Request module: This is the trigger that retrieves data from your Zotero collection.

  • Iterator module: This module helps us split the collection data into arrays that we can later reference in our Notion modules.

  • Notion Search Object module: This module searches if the reference already exists in our Notion database.

  • Router module: This module helps us follow the appropriate route based on whether the item is already in Notion.

  • Notion Update a Database Item module: This module updates our database item if it already exists in Notion.

  • Notion Create a Database Item module: This module creates a new database item if it doesn’t already exist in Notion.


Now, it's possible to automate the deletion of references in Notion when they're removed from Zotero. To do this, access the <userOrGroupPrefix>/items/trash Zotero API endpoint which retrieves trashed items in Zotero. Set up a new Make scenario to regularly trigger this endpoint and retrieve your deleted items. Then, search for the deleted items in Notion by their unique Zotero Key, which is stored in Notion. If the item is found in Notion, use the blocks/{block_id} endpoint with a DELETE request to remove it.

 
 



Similar Articles


Affiliate Links

Previous
Previous

How to not win a debate and more debate mental models

Next
Next

How Notion Pricing Plans Work - 2023 Notion Pricing Overview