This was a holiday/advent weblog series which ran during December 2022, mostly documenting the creation of’s beta service. We’ll be back in December 2023 with more fun stuff for the holidays!

25 Days of

Day 5

Today’s update is all about Paths and Pages. Until now, the most control you could exercise over your post URLs was through your post titles—but those were the sad old days, and everything is awesome now. Let’s dig in.

Post paths

There’s a new configuration option in town, and its name is Post path format. Not a very sexy name, but we’re aiming for descriptive here. Here’s the default setup that you’d find in a brand new configuration file:

Post path format: /Y/m/

If your first thought in seeing this was “oh, that post path format uses the same date syntax that was introduced in yesterday’s update,” then you would be correct. This means that /Y/m/ actually turns into something like /2022/12/ (if your post’s date is in December 2022).

The format is flexible, so you could do just the year by itself, or something like year/month/day, or really whatever you’d like. If you omit the value entirely, you’ll get the same experience that you’ve had up to now — no path at all; just slugs right beside the domain.

Per-post paths

If you want one particular post to be accessible at a different path, you can now do that in the post metadata (unlike the post path format discussed above, which is a configuration item). Just specify a Path value at the top of your post (e.g. Path: /my/custom/path/) and your post will be accessible there. The post slug will be appended to the path.


Speaking of slugs: up to now, post slugs were automatically derived from the post title. Post titles were automatically identified as the first heading in your Markdown source (e.g. # How I Spent My Summer Vacation), or you could specify a Title in your post metadata (e.g. Title: Green Eggs and Ham).

Well, all of that still works as expected—only now you can define a custom slug entirely by using the new Slug post metadata (e.g. this-is-my-custom-slug). This is useful for times when you want an untitled post but still want a specific slug, or if your post title contains special characters that can’t be properly rendered in the default slug conversion, or really any other reason.


Blogs are all about chronologically-posted serial content, but sometimes you just need a standalone webpage (like an “About” page, or a “Now” page, or a page outlining your personal collection of pen nibs).

It’s easy to make a page now: just add Type: Page to your post metadata, and poof, your post is now a page.

Pages are essentially the same as posts, with a couple of exceptions:

  1. In the interface, they’ll appear in a separate area from posts.
  2. They’re excluded from your recent posts list on your weblog itself.

By default, they’ll inherit the same Post path format (introduced above), so you’ll probably want to specify a custom Path for them in their own metadata.

Here’s an example of an “About” page that would be served from the root path:

Date: December 5, 2022 12:00 AM
Type: Page
Title: About
Path: /

# About this totally radical weblog

Ientaculum tuum mox hic erit...


That’s all for now, but you know the drill: check back tomorrow for a new advent door and another update!

Your pal who doesn’t actually blog but is somehow writing a blogging thing anyway,

— Adam