Paperpile Notion Integration
NOTE: This is not an official Paperpile product.
This is a TypeScript CLI to sync your articles from Paperpile to a Notion database. Optionally, you may sync an authors database as well.
NOTE: This will only be maintained as long as Paperpile doesn't develop their own integration with Notion. They have expressed interest, here.
While this project is at v1.x.x
, this should not be considered
production-ready. It follows semantic versioning, and the migration to
TypeScript, obviously, breaks compatability with the Python implementation.
🏗 Initial Setup
Prior to using paperpile-notion
, you'll need to setup a few things:
- Gather a BibTeX export (either manually exported from Paperpile or via their "Workflows & Integrations").
- A configuration file, similar to what you'll find in
docs/paperpile-notion.config.js
. - Your
Article
database UUID, which you can copy directly from your browser. (It's that 32-character long hexadecimal string – that looks likenotion.so/1234567890abcdef1234567890abcdef
.) - (Optional) Your
Author
database URL, copied in a similar manner as above. - Your Notion Integration Token. Follow
along these steps outlined by Notion. Copy the
Integration Token that starts with
secret_
, you'll need this later.
🧑💻 Usage
[Recommended] Automatically (via GitHub Workflows)
- Use the template laid out in Sync your Paperpile to Notion
- Create a new repository secret named
NOTION_INTEGRATION_TOKEN
by following this article. - Edit the
paperpile-notion.config.js
file you see in the repository root.
Manually
- Globally install
@jmuchovej/paperpile-notion
. (You should globally install so that you can access the CLI as a program.) You do not needsudo
access to correctly install this program.$ npm install -g @jmuchovej/paperpile-notion
- Ensure that your Notion Integration Token is added to your environment. I
recommend using a tool like
direnv
ordotenv
. (paperpile-notion
is purpose-built to run as a GitHub Workflow, so this method will receive little support.) - Run the sequence of commands that will perform your desired sync state. (To learn more, check out the commands detailed below.)
🛠 Commands
paperpile-notion articles:clean BIBTEXPATH [BIBTEXDIFF]
paperpile-notion articles:sync BIBTEXPATH [BIBTEXDIFF]
paperpile-notion authors:clean BIBTEXPATH [BIBTEXDIFF]
paperpile-notion authors:sync BIBTEXPATH [BIBTEXDIFF]
paperpile-notion articles:clean BIBTEXPATH [BIBTEXDIFF]
Cleans up your Articles Database.
USAGE
$ paperpile-notion articles:clean [BIBTEXPATH] [BIBTEXDIFF] -t <value> [-c <value>] [-h]
ARGUMENTS
BIBTEXPATH Path to the BibTeX file you would like to sync with Notion.
BIBTEXDIFF Path to the BibTeX file you would like to diff "bibtexPath" against.
FLAGS
-c, --config=<value> Path to your config file, if not in /Users/jmuchovej/.config/paperpile-notion/config.js.
-h, --help Show CLI help.
-t, --token=<value> (required) Your Notion Integration Token. (NOTE: If you specify an environment variable of
'NOTION_INTEGRATION_TOKEN', that may be used.)
DESCRIPTION
Cleans up your Articles Database.
1. Removes dangling articles without authors.
EXAMPLES
$ paperpile-notion articles:clean /path/to/references.bib
$ paperpile-notion articles:clean /path/to/references.bib -c /path/to/paperpile-notion.config.js
$ paperpile-notion articles:clean /path/to/references.bib -t <your-integration-token>
$ paperpile-notion articles:clean /path/to/references.bib -t <your-integration-token> -c /path/to/paperpile-notion.config.js
$ paperpile-notion articles:clean /path/to/references.bib /path/to/your/previous/references.bib
$ paperpile-notion articles:clean /path/to/references.bib /path/to/your/previous/references.bib -t <your-integration-token>
$ paperpile-notion articles:clean /path/to/references.bib /path/to/your/previous/references.bib -t <your-integration-token> -c /path/to/paperpile-notion.config.js
See code: dist/commands/articles/clean.ts
paperpile-notion articles:sync BIBTEXPATH [BIBTEXDIFF]
Syncs your Articles Database with the local BibTeX file.
USAGE
$ paperpile-notion articles:sync [BIBTEXPATH] [BIBTEXDIFF] -t <value> [-c <value>] [-h]
ARGUMENTS
BIBTEXPATH Path to the BibTeX file you would like to sync with Notion.
BIBTEXDIFF Path to the BibTeX file you would like to diff "bibtexPath" against.
FLAGS
-c, --config=<value> Path to your config file, if not in /Users/jmuchovej/.config/paperpile-notion/config.js.
-h, --help Show CLI help.
-t, --token=<value> (required) Your Notion Integration Token. (NOTE: If you specify an environment variable of
'NOTION_INTEGRATION_TOKEN', that may be used.)
DESCRIPTION
Syncs your Articles Database with the local BibTeX file.
Strictly creates or updates articles based on the ID assigned by Paperpile.
EXAMPLES
$ paperpile-notion articles:sync /path/to/references.bib
$ paperpile-notion articles:sync /path/to/references.bib -c /path/to/paperpile-notion.config.js
$ paperpile-notion articles:sync /path/to/references.bib -t <your-integration-token>
$ paperpile-notion articles:sync /path/to/references.bib -t <your-integration-token> -c /path/to/paperpile-notion.config.js
$ paperpile-notion articles:sync /path/to/references.bib /path/to/your/previous/references.bib
$ paperpile-notion articles:sync /path/to/references.bib /path/to/your/previous/references.bib -t <your-integration-token>
$ paperpile-notion articles:sync /path/to/references.bib /path/to/your/previous/references.bib -t <your-integration-token> -c /path/to/paperpile-notion.config.js
See code: dist/commands/articles/sync.ts
paperpile-notion authors:clean BIBTEXPATH [BIBTEXDIFF]
Cleans up your Authors Database.
USAGE
$ paperpile-notion authors:clean [BIBTEXPATH] [BIBTEXDIFF] -t <value> [-c <value>] [-h]
ARGUMENTS
BIBTEXPATH Path to the BibTeX file you would like to sync with Notion.
BIBTEXDIFF Path to the BibTeX file you would like to diff "bibtexPath" against.
FLAGS
-c, --config=<value> Path to your config file, if not in /Users/jmuchovej/.config/paperpile-notion/config.js.
-h, --help Show CLI help.
-t, --token=<value> (required) Your Notion Integration Token. (NOTE: If you specify an environment variable of
'NOTION_INTEGRATION_TOKEN', that may be used.)
DESCRIPTION
Cleans up your Authors Database.
1. Removes dangling authors with no articles.
2. Attempts to clean up and merge authors and aliases.
EXAMPLES
$ paperpile-notion authors:clean /path/to/references.bib
$ paperpile-notion authors:clean /path/to/references.bib -c /path/to/paperpile-notion.config.js
$ paperpile-notion authors:clean /path/to/references.bib -t <your-integration-token>
$ paperpile-notion authors:clean /path/to/references.bib -t <your-integration-token> -c /path/to/paperpile-notion.config.js
$ paperpile-notion authors:clean /path/to/references.bib /path/to/your/previous/references.bib
$ paperpile-notion authors:clean /path/to/references.bib /path/to/your/previous/references.bib -t <your-integration-token>
$ paperpile-notion authors:clean /path/to/references.bib /path/to/your/previous/references.bib -t <your-integration-token> -c /path/to/paperpile-notion.config.js
See code: dist/commands/authors/clean.ts
paperpile-notion authors:sync BIBTEXPATH [BIBTEXDIFF]
Syncs your Authors Database with the local BibTeX file.
USAGE
$ paperpile-notion authors:sync [BIBTEXPATH] [BIBTEXDIFF] -t <value> [-c <value>] [-h]
ARGUMENTS
BIBTEXPATH Path to the BibTeX file you would like to sync with Notion.
BIBTEXDIFF Path to the BibTeX file you would like to diff "bibtexPath" against.
FLAGS
-c, --config=<value> Path to your config file, if not in /Users/jmuchovej/.config/paperpile-notion/config.js.
-h, --help Show CLI help.
-t, --token=<value> (required) Your Notion Integration Token. (NOTE: If you specify an environment variable of
'NOTION_INTEGRATION_TOKEN', that may be used.)
DESCRIPTION
Syncs your Authors Database with the local BibTeX file.
Authors will be created if not present (or if they don't match a manually entered alias). Otherwise, Authors will have
their name stripped of whitespace and articles consolidation based on matching Aliases.
EXAMPLES
$ paperpile-notion authors:sync /path/to/references.bib
$ paperpile-notion authors:sync /path/to/references.bib -c /path/to/paperpile-notion.config.js
$ paperpile-notion authors:sync /path/to/references.bib -t <your-integration-token>
$ paperpile-notion authors:sync /path/to/references.bib -t <your-integration-token> -c /path/to/paperpile-notion.config.js
$ paperpile-notion authors:sync /path/to/references.bib /path/to/your/previous/references.bib
$ paperpile-notion authors:sync /path/to/references.bib /path/to/your/previous/references.bib -t <your-integration-token>
$ paperpile-notion authors:sync /path/to/references.bib /path/to/your/previous/references.bib -t <your-integration-token> -c /path/to/paperpile-notion.config.js
See code: dist/commands/authors/sync.ts