Skip to content

Command line tool · open source · MIT

Turn a folder of Obsidian notes into one polished PDF

Wiki links, embeds, callouts, Mermaid, Dataview and more, rendered without Obsidian. Every folder becomes a numbered section, with a table of contents and your header and footer. Runs on your machine or in CI.

curl -LsSf uvx.sh/obsidian-pdf-exporter/install.sh | sh && ope setup --yes
powershell -ExecutionPolicy ByPass -c "irm https://uvx.sh/obsidian-pdf-exporter/install.ps1 | iex; ope setup --yes"
ope export ./MyVault/Handbook --title "Team handbook"

Handbook/Release process/Release process.md

Every release follows the same four steps. New team members start with [[Onboarding]].

```mermaid
flowchart LR
    A[Draft] --> B[Review] --> C[Approve] --> D[Publish]
```

> [!warning] Feature freeze
> No new features in the ==last week== before a release.

## Who signs off

| Step    | Who      | When                |
| ------- | -------- | ------------------- |
| Review  | Reviewer | Within three days   |
| Approve | Owner    | Before the release  |

![[Terms#Release]]
The note on page 2 of the exported PDF: the numbered section heading, the Mermaid flowchart, the callout, the table and the embedded glossary entry

The basics

A folder in, one finished PDF out

Point ope at a folder of your vault. Every subfolder becomes a numbered section, and the note inside it with the same name (Onboarding/Onboarding.md) its text. Links between notes, embeds and attachments are resolved across the whole vault.

Handbook/
├── Handbook.md         → first page
├── Onboarding/         → 1 Onboarding
├── Release process/    → 2 Release process
└── Terms/              → 3 Terms
ope export ./Handbook --title "Team handbook" --version 1.2.0
  • Title block, table of contents and numbered headings
  • Running header and footer with title, version, date and page numbers
  • The default template, or your own CSS
Page 1 of the exported handbook: title, version, date, table of contents and section 1
Page 1: title and table of contents
Page 2 of the exported handbook: section 2 with a diagram, a callout and a table
Page 2: header, footer, page number

Everything in your notes, on paper

  • A table of contents and numbered sections made from folders

    Folders become sections

    Numbered headings and a table of contents.

    Folder Notes

  • Callouts in the PDF, with titles, colours and a nested callout

    Callouts

    Every type, custom titles, nested and foldable.

    Callouts

  • A whole note, a heading and a block embedded into the PDF

    Embeds

    Notes, headings, blocks, images, SVG and PDF pages.

    Embeds

  • A Mermaid flowchart and a sequence diagram as vector graphics

    Mermaid diagrams

    Rendered to sharp vector graphics, without Node.js or a browser.

    Mermaid

  • A table with a header row and striped rows

    Tables

    Alignment, wide tables on landscape pages.

    Tables

  • Wiki links rendered as links inside the PDF

    Wiki links

    Links to notes, headings and blocks work in the PDF.

    Wiki links

Obsidian syntax and community plugins

Your plugins, rendered to static pages

The syntax of popular community plugins becomes tables, lists and drawings in the PDF, with no Obsidian running.

  • Dataview queries rendered as tables

    Dataview

    Queries, inline fields and DataviewJS.

    Dataview

  • An Obsidian Base rendered as a table

    Bases

    Table views of your notes.

    Bases

  • An Excalidraw drawing in the PDF

    Excalidraw

    Drawings, hand-drawn text included.

    Excalidraw

  • A draw.io diagram in the PDF

    draw.io

    Diagrams from .drawio.svg and .drawio.png.

    draw.io

  • Citations and a reference list

    Citations

    Pandoc citations and a bibliography.

    Citations

  • Inline and display math

    Math

    LaTeX math, inline and as blocks.

    Math

Also: highlights and comments, tasks, footnotes, properties, Meta Bind, Block Link Plus, and plugins you write yourself.

Redline

See every change between two versions

Two git commits of your notes become one tracked-changes PDF: inserted text underlined in blue, removed text struck through in red, a change bar in the margin and a summary of every changed section. Made for reviews, approvals, audits and release notes.

ope redline ./Policy --from-commit v1.0.0 --to-commit v1.1.0
The same policy before and after a change, and the redline PDF that shows inserted, removed and changed text
First page of a blackline redline with the change summary
Blackline with change summary
Side-by-side redline with the old and new version in two columns and a blame strip with author, date and commit message
Side by side, with --blame: who changed what, and when

Templates and styling

Make it look like your documents

A template is a folder with CSS, a running header and footer and page rules. Start from a recipe and change what you need.

How it works

Plain Markdown in, PDF out, anywhere

  1. Write in ObsidianYour notes stay plain Markdown files in a folder, in git or not.
  2. Run opeOn your machine or in CI. Obsidian does not need to be installed.
  3. Share the PDFOne numbered document, or a redline for the review.

Working with an AI agent? ope ships a Claude Code plugin with a skill, and an llms.txt for any other agent. Use with AI agents

Export your first folder in a minute

curl -LsSf uvx.sh/obsidian-pdf-exporter/install.sh | sh && ope setup --yes