Obsidian Note Bundler is a plugin for Obsidian that lets you bundle any note together with all its linked notes and embedded attachments into a self-contained folder or ZIP file. The plugin walks your vault’s link graph starting from the selected note, collecting every connected note and asset along the way.
I built this tool to solve a common problem: sharing a subset of an Obsidian vault without manually tracking down every linked file. Whether you’re handing off a project to a colleague, archiving a research thread, or moving notes between vaults, Note Bundler does the heavy lifting.
How it works
The core idea is simple: treat your vault as a directed graph where notes are nodes and [[wikilinks]] are edges. Starting from a root note, the plugin performs a breadth-first traversal up to a configurable depth (1–3 levels), collecting:
- Linked notes — any note referenced via
[[wikilink]]syntax - Embedded assets — files referenced via
![[embed]](images, PDFs, CSVs, etc.) - Frontmatter references — optionally, notes mentioned in YAML frontmatter properties
The result is a clean, portable bundle that preserves the relational structure of your notes.
Key features
- Recursive bundling — follow links up to 3 levels deep, capturing the full context around a note
- Batch export — select multiple notes in the file explorer and bundle them all at once
- Frontmatter link extraction — optionally scan YAML properties for note references, with regex-based exclusion patterns
- ZIP output — package everything into a single
.zipusing JSZip (cross-platform, no CLI dependencies) - Multi-language UI — English and Spanish, auto-detected from Obsidian’s language settings
- In-modal help — a
?button in the export modal explaining every option - Post-export summary — file counts, missing references, and a quick “Open folder” button
Architecture
The plugin is built with TypeScript and the Obsidian Plugin API. The codebase is intentionally small and focused:
src/
├── main.ts # Plugin entry: commands, ribbon icon, context menu, settings
├── export-engine.ts # Core logic: link/asset extraction, graph traversal, bundling
├── export-modal.ts # UI modals for single and batch exports
└── i18n.ts # Internationalization (EN/ES)
The export engine is the heart of the plugin. It uses regex-based extraction to identify wikilinks and embeds, classifies files by extension (markdown → note, everything else → asset), and builds the bundle following a consistent structure:
NoteName/
├── NoteName.md # Root note
├── _assets/ # Attachments from the root note
│ ├── image.png
│ └── document.pdf
└── _related/ # Linked notes (depth 1+)
├── LinkedNote1.md
├── LinkedNote2.md
└── _assets/ # Attachments from linked notes
└── diagram.svg
The export modal
The plugin provides a clean modal interface where users can configure every aspect of the export before running it:
The export modal showing output path, depth, and asset options
| Option | Default | Description |
|---|---|---|
| Output folder | ~/Desktop |
Absolute path for the export |
| Output name | Note name | Name of the folder/ZIP |
| Related assets | ON | Include assets from linked notes |
| Frontmatter links | OFF | Include notes referenced in frontmatter |
| Exclude properties | (empty) | Regex to skip frontmatter properties |
| Depth | 1 | Recursion depth (1–3) |
| ZIP | OFF | Package as .zip instead of folder |
Quick access
The plugin integrates naturally into Obsidian’s UI through multiple entry points:
Ribbon icon for quick access from the sidebar
- Command palette:
Cmd/Ctrl + P→ “Export Note” - Context menu: right-click any
.mdfile → “Export Note” - Batch mode: select multiple files → right-click → “Export Notes (N)”
- Ribbon icon: one-click access from the sidebar
Tech stack
- TypeScript 5.8 with the Obsidian Plugin API
- esbuild for fast, single-file builds
- JSZip for cross-platform ZIP generation (replaced the initial macOS-only
zipCLI approach) - Node.js
fsfor writing bundles outside the vault (desktop-only requirement)
Roadmap
The plugin is functional and stable at v1.0.0, with several features planned for future releases:
- Backlinks — include notes that link to the bundled note, not just outgoing links
- Dataview queries — extract note references from
dataview/dataviewjsblocks - Canvas support — bundle
.canvasfiles and the notes they contain - Configurable folder structure — customize
_related/and_assets/directory names - Export templates — transform note content during export (strip frontmatter, rewrite links, etc.)
Note Bundler is open source under the MIT license. You can install it from GitHub Releases or build it from source.