Exports a single Obsidian vault note and all its linked images into a portable zip or tar.gz archive. Paths inside the archive preserve vault-root-relative structure so the archive unpacks correctly anywhere.
This skill is slash-command only — it does not trigger on keywords:
/export-vault-note <vault-relative-path> [zip|tar] [output-dir]
Examples:
/export-vault-note projects/blog/my-post.md zip
/export-vault-note meeting-notes/2026-05-sprint.md tar ~/Desktop
/export-vault-note ai/research/summary.md zip /tmp
- Parses arguments — note path, format (
ziportar), and output directory; prompts for anything not supplied - Confirms output location — defaults to one directory above the vault root; asks the user before proceeding
- Detects the vault root — walks up the directory tree from CWD looking for a
.obsidianfolder; asks if not found - Resolves all linked images — handles both
![[wiki-links]]andlinks; bare filenames (no path separator) trigger a vault-wide search - Builds the archive — zip or tar.gz with vault-root-relative paths preserved; overwrites silently if the output already exists
- Reports results — full archive path, note path inside the archive, each image included, and any warnings for skipped or unresolved images
| Link style | Example | Resolution |
|---|---|---|
| Wiki bare | ![[diagram.png]] |
Vault-wide filename search |
| Wiki with path | ![[assets/diagram.png]] |
Vault-root-relative lookup |
| Inline Markdown |  |
Vault-root-relative, then note-relative |
| External URL |  |
Skipped with warning |
- Python 3 — standard library only (
zipfile,tarfile,pathlib,re); no packages to install - Must be invoked from within or near an Obsidian vault (directory containing
.obsidian/)
Eval files are in .workspace/evals/:
evals.json— 3 functional test cases: zip with inline images, tar with bare wiki-links, output-dir confirmation prompt
No trigger-evals.json — this skill is user-invocable only and intentionally does not auto-trigger on keywords.