Skip to content
Draft Preview Unlisted preview synced from your Outline Drafts folder.
All Drafts →

VitePaper - An Outline Docs Based Blogging Platform

4 min read

Like many tech enthusiasts, I like maintaining a blog as both a portfolio and a sort of basic documentation for personal projects that I’ve worked on in the past. I was previously using the  Ghost blogging platform - but it was a bit like using a sledgehammer to crack a nut. It’s an amazing fully featured platform for a broad audience, but I wasn’t using its analytics dashboard, comments, accounts and subscriptions features. And most importantly, its WYSIWYG editor, while powerful, wasn’t really meeting my expectations.

What’s the problem? ​

Like most technical writers and devs, I gravitate towards writing Markdown - and while Ghost does support it via MD editor blocks - I would at least expect it to support all the features GitHub’s Markdown flavour does, like Mermaid Diagrams.

Finally, Ghost wants you to author posts directly within their interface. That wasn’t working for me, as the editor I have most familiarity with is Outline, a team knowledgebase app literally built around markdown documents, where I found myself drafting articles to then copy manually over to Ghost block by block. Changes were then going out of sync, and the whole thing was a mess.

What do I want? ​

What I wanted was a platform where I could author markdown articles in Outline, publish them to a collection, and have them automatically sync to my platform of choice. Hosted Outline instances do allow you to publish a vault or collection as a browsable wiki, but with limited customisation. In any case - my instance is self-hosted.

So what’s out there? ​

AFAIK no turnkey Outline-to-blog solutions exist yet, though browsing the Markdown Guide tools directory and neighbouring ecosystems shows plenty of close cousins:

  • Zero-Friction Markdown Publishers: Hosted platforms like Blot (which turns a synced Dropbox or Git folder of .md files directly into a blog), JotBird (one-click publishing for Markdown and Obsidian notes with callout/Mermaid support), and Markdown Space nail the "write Markdown, get a webpage" experience — but they are hosted services rather than self-hosted pipelines wired into Outline.
  • Vault & Workspace Bridges: Open-source tools like Quartz publish local  Obsidian vaults as interconnected digital gardens. However, it doesn’t speak Outline's RPC API, use webhooks, or private attachment redirects.
  • Static Frameworks & Styling: In the  Astro ecosystem, I love Sat Naing’s AstroPaper for it’s clean, single-column technical blog. Meanwhile,  VitePress is what I’m most familiar with and natively supports Outline's ::: callout blocks and Shiki syntax highlighting out of the box.

What’s the solution? ​

My solution, VitePaper, brings those ideas together into a self-updating, single-column technical blog purpose-built for Outline. It ports AstroPaper’s visual design and typography onto VitePress, pairing a minimal theme with an authenticated Outline attachment sync engine and webhook rebuild server in one published container. You’re looking at it right now!

How It Works: Architecture Overview ​

At a high level, VitePaper treats a single Outline collection as a headless CMS, split into Drafts and Published parent documents. Everything runs inside a single container: a lightweight HTTP server serves the compiled static site while listening for HMAC-signed webhooks from Outline whenever a document is created, updated, or moved into Published.

Rendering diagram...

When a webhook fires, the sync engine pulls the published document tree via the Outline API, caches any private attachments locally, transforms Outline-specific markdown quirks and frontmatter into clean .md files, and triggers a background VitePress build. Within seconds of hitting save in Outline, the updated static bundle is live with zero downtime.

Syncing Content & Authenticated Attachments from Outline ​

Bridging Outline Markdown to VitePress ​

The Minimal 4-Component Theme ​

Self-Updating Container & Webhook Rebuilds ​

Wrapping Up & What’s Next ​

\