Skip to content

Writing Posts

Baan gives you two workflows for writing — a browser-based editor built into the admin panel, and full support for writing in any external Markdown editor (Obsidian, VSCode, Typora) with sync via the CLI. Both workflows result in the same Markdown files stored in your chosen storage backend.


The built-in editor is a Markdown editor that lives entirely in your browser. No external tools or setup required.

  1. Go to Admin → Posts
  2. Click New Post
  3. Enter a title — Baan auto-generates a URL slug from it (you can customize it)
  4. Write your content in Markdown

Drawer mode — the editor opens as a side panel over the post list. Good for quick edits, checking frontmatter, and toggling publish status without leaving the list view.

Full-screen mode — the editor expands to fill the whole screen. Distraction-free writing with:

  • Live Markdown preview
  • AI assistant sidebar (if an AI provider is configured)
  • Media library access for inserting images

In full-screen mode, the AI sidebar lets you:

  • Generate a draft — describe what you want to write and get a starting point
  • Improve selected text — rewrite a paragraph for clarity, conciseness, or tone
  • Translate the article — draft a version in another locale with one click
  • Generate a description — create a description field for SEO from the article body

The assistant uses whichever AI provider you’ve configured in Admin → Settings → AI.

Set the post status to Published to make it visible on the public site. Draft posts are saved but not publicly accessible. You can toggle status from the post list (drawer mode) or from within the editor.


Write in any Markdown editor you prefer — Obsidian, VSCode, Typora, iA Writer — and sync to Baan using the Baan CLI.

This workflow is ideal if you:

  • Already have a writing workflow in Obsidian or another tool
  • Want to use Git to version-control your articles
  • Prefer writing locally without a browser

See External Editors & Baan CLI for full setup instructions.


Each post is a folder in storage. The folder name becomes the URL slug and the article ID.

my-article/
├── index.en.md # always index.{locale}.md — never index.md
└── images/
└── hero.jpg

URL: https://your-blog.com/posts/my-article

my-article/
├── index.ja.md
├── index.en.md
└── images/
└── hero.jpg ← shared across all locales

URLs:

  • https://your-blog.com/ja/posts/my-article
  • https://your-blog.com/en/posts/my-article

Admin → Posts shows all posts with:

  • Status (published / draft)
  • Category and tags
  • Last modified date
  • Quick publish/unpublish toggle

Posts synced from an external editor via the Baan CLI appear in a separate Vault section. You can publish/unpublish them from the admin panel, but the canonical source of truth is the external editor.

Go to the post settings and edit the ID field. This changes the URL — set up a redirect if the post is already published and indexed.

Delete from the post list. This removes both the admin record and the Markdown files from storage. This action is irreversible.


Static pages (About, Terms of Service, Contact, etc.) are separate from posts and managed at Admin → Pages. Pages support 4 templates:

TemplateUse Case
DefaultStandard content page with sidebar
Full WidthContent spans full width, no sidebar
BlankNo layout wrapper — full control over HTML
Posts ListShows a filtered list of posts

Any page can be set as the site homepage.