Skip to content

A python-populated Notion template to help you keep track of the papers you read 📜, their authors 👤, your notes 📝, and more 🔥

drprojects/nora

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

66 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

NoRA - Notion Research Assistant

python node.js license

A Notion template to help you keep track of the papers you read 📜, their authors 👤, your notes 📝, and more 🔥

If you ❤️ or simply use this project, don't forget to give the repository a ⭐, it means a lot to us !


📌  Introduction

This project was built as a Notion-based alternative to reference management software such as Zotero and Mendeley.

It is composed of the NoRA Notion template for you to build on top of, as well as NoRA-Tools to programmatically:

  • 🔥 upload papers to your NoRA library as easily as with Zotero Connector from a simple URL or an identifier
  • 🔥 move all your already-existing Zotero library to NoRA

🧪  NoRA template

The NoRA Notion template provides you with a structure of interconnected databases to keep track of your research papers and notes. More specifically, the template contains the following databases:

  • 🏗️ Projects
  • 📜 Papers
  • 👤 People
  • 🏢 Affiliations
  • 🤹 Conferences & journals
  • 🧲 Key topics

The inner workings of the template are quite straightforward, the best way to get familiar with it is probably to play with it 😉 !

🛠  NoRA-Tools

The NoRA-Tools provide functionalities to programmatically upload data to your NoRA template. The main functionalities are:

  • uploading a paper and associated metadata to NoRA from a URL or from an identifier (DOI, ISBN, PMID, arXiv ID), exactly like with Zotero Connector
  • uploading your whole Zotero library to NoRA

🧱  Installation

Requirements

Note: We have experienced issues with too-recent node.js versions such as node 23 so we recommend making sure you use node 20 for now. You can check your version by running node -v.

Installing the template in Notion

Simply duplicate the NoRA template to your personal Notion account.

Note: You can freely modify or extend the NoRA template. However, keep in mind that if you want to use NoRA-Tools after modifying some sensitive page fields, you may need to adjust your Notion configuration accordingly.

Getting your Notion API keys

Next, you will need to prepare some private keys needed to upload data to your NoRA. To this end, do the following:

Once you have recovered your API secret token and the database IDs, you should have something like this:

notion:
    token: your_api_secret_token
    papers_db_id: your_papers_database_id
    people_db_id: your_people_database_id
    affiliations_db_id: your_affiliations_database_id
    venues_db_id: your_venues_database_id
    topics_db_id: your_topics_database_id

Keep these safe somewhere, we will need these in a bit!

Getting your Zotero API keys (optional)

If you intend to move your whole Zotero library to Notion, you will need to get some private keys to download your library. To this end, you will need to:

You should then have something like this:

zotero:
    library_id: your_library_id
    api_token: your_api_key

Keep these safe somewhere, we will need these in a bit!

Installing NoRA-Tools on your machine

Open a terminal and run

pip install git+https://github.com/drprojects/nora.git
👩‍💻 NoRA from source for developers

If you want to extend NoRA-Tools to your need, you can install from source:

# Get the source code
git clone --recurse-submodules https://github.com/drprojects/nora

# Install the python dependencies
cd nora
pip install -e .

# Install the node.js server
cd src/nora/translation_server
npm install
cd ../..

then configure you API keys

nora configure

this will prompt you to pass your secret keys, which will be saved in ~/.nora/user.yaml.

⚠️ Are you using a `.netrc` file with a `default` configuration?

If you are using a ~/.netrc file to keep track of your passwords locally, and have declared a default account among your configurations, the requests library will crash when trying to connect to Notion. Please remove your default account and all should be fine 😉

Uninstalling NoRA-Tools from your machine

Open a terminal and run

pip uninstall nora

⚡  Using NoRA-Tools

Uploading a paper to NoRA

NoRA-Tools mimics the behavior of the Zotero Connector, which has two mechanisms for uploading a paper.

From a URL:

nora url https://arxiv.org/abs/2204.07548

From an identifier (DOI, ISBN, PMID, arXiv ID):

nora id 2204.07548

Uploading your entire Zotero library to NoRA

nora zotero-upload

Advanced usage

You can further customize the behavior of NoRA-Tools by manually editing your personal config file located at ~/.nora/user.yaml.

Modifying database names in NoRA️

By default, NoRA-Tools expect the attribute fields (e.g. column names in Notion) of your papers, people, etc. to have specific values. If you want to adjust those, you can do so by overwriting the keys in your personal config file ~/.nora/user.yaml:

# If you happen to modify your field names in Notion, update the
# following database-specific keys
person_keys:
    name: 'Name'
    affiliations: '🏢 Affiliations'
    papers: '📜 Papers'
    website: 'Website'

paper_keys:
    name: 'Name'
    authors: '👤 Authors'
    abstract:  'Abstract'
    topics: '🧲 Key topics'
    url: 'URL'
    to_read: 'Reading status'
    year: 'Year'
    venue:  '🤹 Venue'

affiliation_keys:
    name: 'Name'

venue_keys:
    name: 'Name'
Parsing of `🤹 Conferences & journals` from metadata

By default, when parsing a paper from a remote database, NoRA-Tools will try to figure out which 🤹 Conferences & journals to place it under. To this end, the metadata of the searched article will be parsed and matched against a list of pre-defined conferences and papers. If a match is found, the corresponding acronym will be attached to the paper in NoRA.

NORA-Tools comes with a predefined set of venue-acronyms matches which can be found in the venues parameter of your ~/.nora/user.yaml like so:

venues:
    "text to be matched when searching the conference/journal": 'name used in NoRA'

When searching for a match, we use the following procedure: 1. Exact matches of full-text keys (longer first) 2. Exact matches of acronyms (longer first) 3. Fuzzy fallback if nothing matches 4. None if no sufficiently satisfying match is found

Feel free to edit or extend the venues of your ~/.nora/user.yaml to suit your need and domain of research.

Skipping Zotero collections when migrating Zotero library to Notion

By default, when calling nora zotero-upload, the collections (i.e. folders) in your Zotero library will be used to populate the Key Topics field of your papers in NoRA. If you want to exclude some of your collections from this behavior, your may do so by specifying them in your ~/.nora/user.yaml:

zotero:
    ignored_collections: ['collection name 1', 'collection name 2']

License

NoRA is released under the MIT License.

MIT License

Copyright (c) 2023-2025 Damien Robert

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

About

A python-populated Notion template to help you keep track of the papers you read 📜, their authors 👤, your notes 📝, and more 🔥

Topics

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages