Obsidianator logo

Obsidianator

FinishedFeatured ProjectDocumentation
Updated 2026-04-23
By Fx64b
Version: 0.1.0-beta
5 mins

Obsidianator

Turn an Obsidian vault into a self-contained static website, or serve it directly in the browser without writing anything to disk.

History & Vision

I wanted an easy way to render my Obsidian notes into some kind of HTML output that can either be published on my own website or be used for private viewing with advanced search functionalities.

There is of course Obsidian Publish but I wanted to have a small challenge in creating my own tool.

How it works

There are two modes you can either export your vault as a vite build or serve it directly as a site. When running the obsidianator it will scan the files and folders in the provided path, takes the content of the markdown files to parse them and then write everything into a vault-data.json file, which will then be loaded by the vite build.

Installation

Currently you can either download the pre-compiled binaries from the latest release or you can build it from source:

Bash
1git clone https://github.com/Fx64b/obsidianator 2cd obsidianator 3make all # builds frontend then Go binary 4make install # adds to path

Requirements: Go 1.21+, Node 18+, pnpm.

Usage

Serve a vault in memory (no disk output)

Bash
1obsidianator serve ./my-vault 2obsidianator serve ./my-vault --watch # live reload on file changes 3obsidianator serve ./my-vault --port 8080

Export to a static site:

Bash
1obsidianator export ./my-vault 2obsidianator export ./my-vault --output ./dist 3obsidianator export ./my-vault --output ./dist --serve # export then serve 4obsidianator export ./my-vault --output ./dist --watch # export, watch, serve

Filter to specific folders or files:

Bash
obsidianator serve ./my-vault --include Notes --include Diary/2026.md

Other options

Bash
1obsidianator --version # print version 2obsidianator --help 3obsidianator serve --help 4obsidianator export --help

Important: The serve options primary purpose is for checking how the output looks and not for serving the site publicly! While some steps to secure the serve option were taken it is by far not ready to be used for public hosting. Instead you should do an export and host that using a real webserver.

Architecture

LayerLocationRole
Go CLImain.goserve / export commands via cobra
Vault parserinternal/vault/Walk filesystem, parse frontmatter, resolve wikilinks, build folder tree
Exporterinternal/export/Write static files to disk, serve in-memory, SSE live reload
Frontendweb/src/React + Vite app, embedded into the binary at build time

The Go binary embeds the compiled frontend (web/./static) via //go:embed. In serve mode nothing touches disk — vault data is served as JSON from memory and attachments are proxied directly from the vault directory.

Explore More Projects

View All Projects