A tool to sync Obsidian notes to Notion via GitHub π¨βπ»...
Report a Bug/Issue | Request a Feature | View Project Status
pip install obsidian-notion-sync
>> obsidian-notion-sync
Usage: obsidian-notion-sync [OPTIONS] COMMAND [ARGS]...
Sync Obsidian notes to Notion via GitHub
Options:
--debug Enable debug logging
--help Show this message and exit.
Commands:
git-sync Sync Obsidian notes to GitHub
notion-sync Sync Github placed Obsidian notes with Notion (optional)
This automatically triggers the below mode for notion syncing with Github Action
>> obsidian-notion-sync git-sync
Note :
- Creates a clone for your Obsidian Vault
- Syncs it as a git repo
This only syncs the local Vault with Notion directly (if needed)
>> obsidian-notion-sync notion-sync
Note :
- To be done with the created git repo and Obsidian Vault by the above mode
- Syncs it with notion
Uses the vault path given in the env variable
Choose a place of invocation and it creates a directory named 'ObsidianClonedVault'.
You can supply the name for an existing repo or it would create a new one with the given name in the env variable.
Step 4 : Once the syncing is completed, it triggers a Github action that uploads these files to notion via Notion APIs.
A Github workflow runs in the Github action space. You will get a mail if it fails for some reason. Check the logs for more debugging on that front.
If everything goes well, it will update your notion page specified in the env variable.
Before using the tool, you need to set up the following environment variables:
Variable | Description | Example |
---|---|---|
GITHUB_TOKEN | Your GitHub personal access token | ghp_1234... |
NOTION_TOKEN | Your Notion integration token | secret_5678... |
OBSIDIAN_DIR | Path to your Obsidian vault | /Users/you/ObsidianVault |
REPO_NAME | Name for the GitHub repository | My-Second-Brain |
NOTION_PAGE_ID | ID of your Notion page | abc123... |
-
GitHub Token:
- Go to GitHub Settings β Developer Settings β Personal Access Tokens
- Create a new token with 'repo' permissions
-
Notion Token: (more details below on its access)
- Go to www.notion.so/my-integrations
- Create a new integration
- Copy the integration token
-
Notion page ID: (more details below on its access)
- Create a new page in Notion
- Copy the page ID from the URL (it's the part after the page name and after the last '-')
You can create a shell script to set up your environment:
#!/bin/bash
export GITHUB_TOKEN="your_github_token"
export NOTION_TOKEN="your_notion_token"
export OBSIDIAN_DIR="/path/to/your/obsidian/vault"
export REPO_NAME="your-repo-name"
export NOTION_PAGE_ID="your_page_id"
obsidian-notion-sync --debug
Save this as run-sync.sh
, make it executable (chmod +x run-sync.sh
), and run it with ./run-sync.sh
.
(Skip this section if you were able to set the notion api tokens and page access )
The red box highlighted is the Page Id - it is a 32 sized alphanumeric unique ID for the page which starts after the name of your page.
Step 2 : Go to https://www.notion.so/profile/integrations
You can open it from the settings in your notion app as well.
You can use the API tokens of an existing integration as well. Make sure it has the permission to read + write content.
Set this token as your environment variable as mentioned above.
It will not have access to this connection by default.
If you encounter errors:
-
Check that all environment variables are set correctly:
echo $GITHUB_TOKEN echo $NOTION_TOKEN echo $OBSIDIAN_DIR echo $REPO_NAME echo $NOTION_PAGE_ID
-
Ensure your Obsidian vault path exists and is accessible
-
Verify that your GitHub token has the necessary permissions
-
Check that your Notion integration is properly configured and has access to the page
If you encounter any issues, please file them on our GitHub repository's issue tracker.
The agenda is to make this package as the easy and smooth package (with lesser bugs ;) for syncing a multitude for note taking applications but firstly achieve a robust two way sync between notion and obsidian.
Please refer to the for more details. (TBD with more implementation and design considerations)
# obsidian_notion_sync/
# βββ .github/
# β βββ workflows/
# β βββ sync.yml
# βββ src/
# β βββ obsidian_notion_sync/
# β βββ __init__.py
# β βββ __about__.py
# β βββ _version.py
# β βββ cli.py
# β βββ config.py
# β βββ sync.py
# β βββ sync_to_notion.py
# β βββ exceptions.py
# βββ tests/
# β βββ __init__.py
# βββ .gitignore
# βββ LICENSE
# βββ README.md
# βββ pyproject.toml
obisidian-notion-sync
is distributed under the terms of the MIT license.