Skip to main content

Supynote CLI

A simple, clean CLI tool to interact with your Supernote device.

Requirements

  • Python 3.8.1+
  • Supernote device connected to same local network
  • Device must have "Export via LAN" enabled (Settings → System → Export via LAN)

System Dependencies (for PDF conversion)

PDF conversion requires the Cairo graphics library. Install it before installing supynote:

macOS:

brew install cairo pkg-config

Ubuntu/Debian:

sudo apt-get update
sudo apt-get install -y libcairo2-dev pkg-config python3-dev

Windows: No additional dependencies needed (pre-built wheels available)

Optional Features

  • OCR: Requires additional dependencies (transformers, torch) - see Installation
  • Apple Silicon: OCR automatically uses MPS acceleration on M1/M2/M3/M4 Macs

Features

  • 🔍 Auto-discovery: Automatically find your Supernote on the network
  • 📂 File listing: Browse files and directories on your device
  • ⬇️ Download: Download individual files or entire directories
  • 📄 PDF conversion: Convert .note files to high-quality vector PDFs
  • 🌐 Web interface: Open the device web interface in your browser
  • ⚡ Fast downloads: Multithreaded downloads for speed

Installation

From PyPI (Recommended)

# Basic installation
pip install supynote

# With OCR features
pip install supynote[ocr]

From Source (Development)

# Clone and install
git clone https://github.com/thopiax/supynote.git
cd supynote
pip install -e .

# With OCR features
pip install -e .[ocr]

Using uv (For Development)

uv sync  # Installs all dependencies including dev tools

Quick Start

# Find your Supernote device
supynote find

# List all files
supynote list

# List files in Note directory
supynote list Note

# Download Note directory
supynote download Note

# Download a specific file
supynote download Note/my-note.note

# Convert .note file to PDF (vector format)
supynote convert my-note.note

# Convert all .note files in a directory
supynote convert Note/

# Open device web interface
supynote browse

# Show device info
supynote info

Device Setup

Before using supynote, ensure your Supernote device is ready:

  1. On your Supernote: Swipe down from the top to open the menu
  2. Activate "Browse & Access" (middle top icon)
  3. Ensure your computer is connected to the same network
  4. Only one Supernote device should have "Browse & Access" active

Now you can run supynote find to locate your device.

Tips

  • Use default note names: Supernote's automatic timestamp naming (YYYYMMDD_HHMMSS) allows notes to be grouped by day, creating a journal-like structure
  • Markdown extraction: Structure your notes with specific patterns for better markdown output (see Markdown Integration)

Commands

supynote find

Scan the local network to find your Supernote device.

  • --open: Open the device web interface after finding it

supynote list [directory]

List files and directories on the device.

supynote download <path>

Download files or directories from the device.

  • --workers N: Number of parallel download workers (default: 4)
  • --convert-pdf: Automatically convert downloaded .note files to PDF

supynote convert <path>

Convert .note files to PDF format (vector by default).

  • --output DIR: Output directory or specific file path
  • --no-vector: Use raster format instead of vector
  • --no-links: Disable hyperlinks in PDF output
  • --recursive: Process subdirectories (default: true)

supynote browse

Open the device web interface in your default browser.

supynote info

Show device connection information.

Options

  • --ip IP: Manually specify device IP address
  • --port PORT: Device port (default: 8089)
  • --output DIR: Local output directory for downloads

Environment Variables

Configure supynote-cli behavior with these environment variables:

  • SUPYNOTE_JOURNALS_DIR: Default directory for markdown journal exports (used by merge command)
  • SUPYNOTE_IP: Default device IP (alternative to --ip flag)
  • SUPYNOTE_OUTPUT_DIR: Default output directory (alternative to --output flag)

Example .env file:

SUPYNOTE_JOURNALS_DIR=$HOME/Documents/journals
SUPYNOTE_IP=192.168.1.100

Load with: export $(cat .env | xargs)

See examples/automation/.env.example for more configuration options.

Examples

# Find device and open in browser
supynote find --open

# Download with custom output directory
supynote download Note --output ~/my-notes

# Use specific IP address
supynote --ip 192.168.1.100 list

# Download with more workers for speed
supynote download EXPORT --workers 8

# Download and convert to PDF in one step  
supynote download Note --convert-pdf

# Convert with custom output directory
supynote convert Note/ --output ~/my-pdfs

# Convert single file with specific output name
supynote convert my-note.note --output my-document.pdf

Markdown Integration

Supynote can extract text from your .note files and organize them into markdown format for daily journaling workflows. The extraction recognizes specific patterns you can optionally use while writing:

Moment Markers (Section Headers)

As a personal preference, you can start pages with "moment markers" to create section headings:

  • Pattern: m. 1, M. 2, me 3 (case insensitive, with or without dot)
  • Can be preceded by - (e.g., - m. 5)

Example on Supernote:

m. 7 - Morning thoughts about the project

Becomes in markdown:

- ## m. 7
    - Morning thoughts about the project

This is entirely optional - use it if it fits your note-taking style.

Bullet Points

Lines starting with - or * are converted to indented bullet points.

Sub-bullets

Lines starting with ↳ become nested sub-bullets (indented one level deeper).

Daily Organization

Using the merge command with timestamp-named files (YYYYMMDD_HHMMSS):

  • Groups all notes from the same day
  • Creates one markdown file per day (e.g., 2024-01-15.md)
  • Orders moments chronologically within each day
  • Links to the corresponding merged PDF

This creates a date-based journal structure ideal for markdown-based note-taking tools.

Troubleshooting

PDF Conversion Errors

  • Error: "cairo not found" or "pycairo build failed"
    • Install Cairo system dependencies (see System Dependencies section above)
    • macOS: brew install cairo pkg-config
    • Linux: sudo apt-get install libcairo2-dev pkg-config python3-dev
  • After installing Cairo, reinstall supynote: pip install --force-reinstall supynote

Device Not Found

  • Ensure device is on same network as computer
  • Try manually specifying IP: supynote --ip YOUR_IP list
  • Some networks block device discovery - use --ip flag with your device's IP address

OCR Not Working

  • Install OCR dependencies: pip install -e .[ocr]
  • First run downloads ML models (~500MB) - may take time
  • Requires internet connection for initial model download
  • On Apple Silicon, ensure MPS is available (macOS 12.3+)

Slow Performance

  • Increase workers: supynote download --workers 30
  • Use async mode (default in v1.0+)
  • OCR is CPU/GPU intensive - fewer workers may help on older machines
  • Check network connection quality

Permission Errors

  • Ensure output directory is writable
  • On macOS, you may need to grant Terminal full disk access
  • Check firewall settings aren't blocking network discovery

For more help, see GitHub Issues

License

MIT License - see LICENSE file for details.

Contributing

Contributions welcome! See CONTRIBUTING.md for guidelines.

Steps:

  1. Fork the repository
  2. Create a feature branch
  3. Make your changes with tests
  4. Submit a pull request

Acknowledgments

  • Supernote Team: For creating excellent e-ink tablets that inspire tools like this
  • supernotelib: Unofficial library for .note file conversion - the foundation of PDF conversion in this tool
  • Claude Code: This project was built with significant assistance from Claude Code, which handled much of the heavy lifting in development and refactoring
  • TrOCR (Microsoft) and LLaVA: Powering the OCR capabilities for handwritten text recognition

Metadata

Release files for supynote 0.9.7

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for supynote 0.9.7
File Size Uploaded
supynote-0.9.7.tar.gz 366.9 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for supynote 0.9.7
File Interpreter ABI Platform
supynote-0.9.7-py3-none-any.whl Python 3 none any Details

Total release size: 451.1 kB

Release files / supynote-0.9.7.tar.gz

Download URL supynote-0.9.7.tar.gz
Size 366.9 kB
Tags Source
SHA-256 checksum
How to use checksums
5e3a3f1cfa91146e43966fa2415ae1135965da513a5d1aa7d1f08fd307cf0f2f
BLAKE2b-256 checksum
How to use checksums
033cd33b59efb2937d9ea0e920357a0123bc6050bb21a5bff8d1571146016ca8
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.6.14

Release files / supynote-0.9.7-py3-none-any.whl

Download URL supynote-0.9.7-py3-none-any.whl
Size 84.2 kB
Tags Python 3
SHA-256 checksum
How to use checksums
3fbfe9f16d71036b3b8b6bf0a49272e46883c56a5ab99d50a0b6d0dc16480682
BLAKE2b-256 checksum
How to use checksums
8f44f82f4f3517bd9f12e05d26c821a2a33ae6be9ad197f5c1d70c6a7583c053
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.6.14

Release history Release notifications | RSS feed

This release

0.9.7 This release

2 release files

0.9.4

2 release files

0.9.3

2 release files

0.9.2

2 release files

0.9.1

2 release files

0.9.0

2 release files

0.8.1

2 release files

0.8.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page