A KOReader plugin that syncs Notion databases to your eReader for offline reading.
- Sync multiple Notion databases to KOReader folder
- Support for both Markdown (.md) and EPUB (.epub) output formats
- Preserve rich text formatting (bold, italic, strikethrough, code, links)
- Embed images in EPUB files for full offline reading
- Image download caching to avoid redundant downloads
- Automatic sync history tracking to avoid re-syncing unchanged pages
- Sync highlights and annotations from KOReader back to Notion
- Automatic synchronization on schedule or other trigger
- sync reading completion percent to notion
- set/create custom tag or prop on notion page when 100% read complete
- An eReader with KOReader installed (tested on Kobo, should work on other devices)
- A Notion account with API access
- Notion Integration set up with appropriate permissions
- Go to the Releases page
- Download the latest
notionsync.koplugin-X.X.X.tar.gz - Connect your eReader to your computer
- Extract the plugin to your KOReader plugins directory:
tar -xzf notionsync.koplugin-X.X.X.tar.gz -C /path/to/ereader/.adds/koreader/plugins/
- Eject your eReader safely
- Restart KOReader
- Go to Notion Integrations
- Create a new integration
- Copy your Integration Token (Internal Integration Secret)
- Share your target Notion databases with your integration
- Only shared databases will appear in the plugin's database selector
- Open KOReader on your eReader
- Go to Tools → NotionSync
- Tap Set Notion Token and enter your Integration Token
- Tap Select Databases and choose which databases to sync
- (Optional) Change Output Format between EPUB (prefered, richest experience) or Markdown
- (Optional) Change Save Directory to customize where files are saved
- Open KOReader
- Navigate to Tools → NotionSync
- Tap Sync Now
- Wait for the sync to complete
- Your Notion pages will be saved to the configured directory (default:
/mnt/onboard/notion_sync/)
- Markdown (.md): Plain text with formatting, external image URLs
- EPUB (.epub): Rich formatted ebooks with embedded images for offline viewing
Note: The deployment script is for development only. End users should install from releases. I have also only tested on kobo but this should work on other devices.
The deployment script requires you to set the path to your mounted device.
Bash/Zsh:
# For current session:
export KOBO_MOUNT_PATH="/path/to/your/kobo"
# Permanent (add to ~/.bashrc or ~/.zshrc):
echo 'export KOBO_MOUNT_PATH="/path/to/your/kobo"' >> ~/.bashrc
source ~/.bashrcFish:
# For current session:
set -x KOBO_MOUNT_PATH "/path/to/your/kobo"
# Permanent (add to ~/.config/fish/config.fish):
echo 'set -x KOBO_MOUNT_PATH "/path/to/your/kobo"' >> ~/.config/fish/config.fishCommon paths:
- Linux:
/run/media/$USER/KOBOeReader - macOS:
/Volumes/KOBOeReader - Windows (WSL):
/mnt/d/KOBOeReader
- Connect your device to your computer
- Wait for it to mount
- Run the deployment script:
./deploy.sh
- The script will:
- ✓ Verify your device is connected
- ✓ Check for KOReader installation
- ✓ Copy plugin files to the correct location
- ✓ Sync the filesystem
- Eject your device safely
- Restart KOReader to load the updated plugin
luarocks install luacheck
luacheck notionsync.koplugin/- Make your changes to the plugin code
- Test locally using
./deploy.sh - Ensure code passes linting:
luacheck notionsync.koplugin/ - Update
CHANGELOG.mdwith your changes - Commit and push to
main(CI will lint and create dev build) - Submit a pull request
See RELEASE.md for detailed instructions on creating releases.
- Verify KOReader is properly installed on your device
- Check that the plugin files are in the correct location:
/path/to/device/.adds/koreader/plugins/notionsync.koplugin/ - Ensure all
.luafiles are present in the plugin directory - Restart KOReader
- Verify your Notion API token is correct
- Ensure your target databases are shared with your integration
- Check your internet connection (plugin requires network access)
- Review KOReader logs for detailed error messages
- Ensure you're using EPUB format (not Markdown)
- Check that images are present in the original Notion page
- Verify your device has internet access during sync
- Check the sync completion message for failed image downloads
This error only affects developers using the deployment script. End users should install from releases and won't encounter this error.
Make sure you've set the environment variable correctly for your shell. See the Development section.
- KOReader: Must be installed on your eReader
- Internet Connection: Required during sync to fetch Notion data
- Notion Integration: API token with access to your databases
Contributions are welcome! Please feel free to submit pull requests or open issues.
See the Development section for information on setting up your development environment.