Adding content
Posts and pages are each stored as a directory containing a meta.yml file and a content file.
The content file can be HTML (index.html), Markdown (index.md), or reStructuredText
(index.rst). An optional images/ subdirectory holds image files used within the content.
The directory name is used as the slug for both posts and pages.
Posts
Post directories can be organised in any hierarchy inside posts_dir — by year, year/month, or
flat. Beemo finds them by searching recursively for meta.yml files.
Example layout:
posts/
└── 2026/
└── 04/
└── my-first-post/
├── meta.yml
├── index.md
└── images/
└── photo.jpg
meta.yml fields:
Field |
Required |
Description |
|---|---|---|
|
Yes |
Post title |
|
Yes |
Publication date/time (e.g. |
|
No |
Last-modified date/time (defaults to |
|
No |
List of tag strings (lowercase alphanumeric and hyphens only) |
|
No |
Meta description (defaults to auto-derived |
|
No |
Short summary (auto-derived from content if omitted) |
|
No |
Author name |
|
No |
Filename of cover image (from |
|
No |
Filename of Open Graph image (from |
|
No |
Custom template name to use instead of |
Example meta.yml for a post:
title: My first post
published: 2026-04-17
tags:
- python
- beemo
cover_image: images/photo.jpg
Pages
Page directories sit directly inside pages_dir. There is one special directory named home
which provides the content for the site homepage — it is served at / and does not use the
directory name as a slug. All other directories become individual pages, served at /{dirname}/.
Example layout:
pages/
├── home/
│ ├── meta.yml
│ └── index.html
└── about/
├── meta.yml
└── index.md
meta.yml fields:
Field |
Required |
Description |
|---|---|---|
|
Yes |
Page title |
|
No |
Meta description (defaults to auto-derived |
|
No |
Short summary (auto-derived from content if omitted) |
|
No |
Author name |
|
No |
Filename of cover image (from |
|
No |
Filename of Open Graph image (from |
|
No |
Custom template name to use instead of |
Example meta.yml for a page:
title: About