Export any Obsidian note as a PDF directly into your locally-synced Supernote folder. Once synced, the PDF appears on your Supernote device for annotation and reading.
This is the companion to the Supernote → Obsidian OCR workflow — completing the loop in the other direction.
- Converts any Markdown note to a clean, readable PDF
- Strips YAML frontmatter by default (toggle in settings)
- Renders headings, paragraphs, lists, blockquotes, code blocks, and horizontal rules
- Resolves
[[wikilinks]]to their display text (no broken links in the PDF) - Four ways to trigger export:
- Command palette →
Send to Supernote - Right-click a note in the file explorer
- Three-dot menu inside an open note
- Frontmatter checkbox — see below
- Command palette →
Instead of triggering export manually, you can mark notes for sync declaratively:
- Add
send_to_supernote: trueto a note's frontmatter (Properties panel or YAML). - As soon as it's checked, the note is exported automatically — no menu needed.
- The checkbox stays checked afterward. Editing the note later won't re-trigger a send; toggle it off and back on, or use the manual "Re-send to Supernote" option, to send again.
This is separate from sent_to_supernote, which the plugin writes automatically as a read-only history stamp (the date it was last sent) — don't edit that one by hand.
If you have a batch of notes already marked send_to_supernote: true (e.g. after importing a folder), you don't need to open each one:
- Command palette →
Sync marked notes to Supernote— scans the whole vault. - Right-click a folder in the file explorer →
Sync marked notes in this folder— scans just that folder (recursively).
Both skip notes that were already sent and haven't changed since, so re-running them is safe.
Auto-send can be turned off in Settings → Send to Supernote → Auto-send on checkbox if you'd rather only use the bulk sync commands.
- Node.js (v18 or later)
- npm
-
Copy the plugin folder into your vault's plugins directory:
<your-vault>/.obsidian/plugins/obsidian-to-supernote/ -
Install dependencies and build:
cd <your-vault>/.obsidian/plugins/obsidian-to-supernote npm install npm run build
This produces
main.jsin the same folder. -
Enable the plugin in Obsidian:
- Open Settings → Community plugins
- Turn off Safe Mode if prompted
- Find Send to Supernote and toggle it on
-
Configure your Supernote folder:
- Go to Settings → Send to Supernote
- Enter the full path to your locally-synced Supernote folder
- Example:
/Users/yourname/Supernote/Document/Obsidian
Open any note and use one of:
| Method | How |
|---|---|
| Command palette | Cmd+P → type Send to Supernote |
| Right-click | Right-click the note in the file explorer |
| Editor menu | Click ⋯ in the top-right of an open note |
| Frontmatter checkbox | Set send_to_supernote: true in the note's Properties |
For bulk sends, see Auto-send via frontmatter checkbox above.
The PDF is saved as <sanitized note name>.pdf in your configured Supernote folder — the title is stripped down to letters, numbers, spaces, and hyphens so Supernote doesn't choke on special characters (e.g. Q&A: Notes (v2)! → QA Notes v2.pdf). If Supernote's sync client is running, it will appear on your device automatically.
| Setting | Default | Description |
|---|---|---|
| Supernote sync folder | (empty) | Full local path to your Supernote sync folder |
| Include YAML frontmatter | Off | Include or strip the --- frontmatter block |
| Auto-send on checkbox | On | Auto-export when send_to_supernote: true is set in frontmatter. Turn off to require the manual bulk sync commands instead |
If you modify main.ts, rebuild with:
npm run buildThen reload Obsidian (or use the Reload app without saving command).
The PDF uses clean, unstyled output — Helvetica for body text, Courier for code blocks. It does not attempt to match your Obsidian theme. Obsidian callout syntax (> [!note]) is rendered as a plain blockquote.
Wikilinks ([[Note Name]] or [[Note Name|Alias]]) are rendered as their display text, since hyperlinks to Obsidian notes wouldn't be meaningful in a PDF on Supernote.
Images and embeds (![[image.png]], ) are stripped from the rendered PDF entirely — their file paths or data URIs aren't meaningful in a text PDF, so they're dropped rather than shown as raw text.