BlogMore
Warning
BlogMore is an experiment in using "AI" to develop a whole project from start to finish. As such, almost every part of this documentation was generated using agents and what they know about the project. Please keep this in mind.
From what I can see at the moment the documentation is broadly correct, and I will update and correct it as I work through it and check it myself. Of course, I will welcome reports of problems or fixes.
BlogMore is a blog-oriented static site generation engine built in Python. It transforms your Markdown files into a complete, modern blog website with a clean, responsive design.
What is BlogMore?
BlogMore focuses on simplicity and efficiency in creating blog-focused websites. Write your posts in Markdown with frontmatter metadata, and BlogMore handles the rest—generating a complete static site with post listings, tag pages, category pages, archives, and RSS/Atom feeds.
Key Features
- Markdown-based content - Write all your posts in Markdown with support for code highlighting, tables, footnotes, and GitHub-style admonitions
- Frontmatter metadata - Control all post metadata (title, date, tags, category, author) through YAML frontmatter
- Responsive design - Clean, modern interface that works beautifully on mobile, tablet, and desktop
- Jinja2 templating - Fully customisable templates for complete control over your site's appearance
- Automatic organisation - Generates tag pages, category pages, and chronological archives automatically
- RSS and Atom feeds - Built-in feed generation for syndication
- Live preview server - Local development server with automatic rebuilding on changes
- GitHub Pages integration - Simple publishing workflow to GitHub Pages (or any git branch)
- Configurable - Extensive configuration options via YAML config files or command-line arguments
- Built-in linter - Check your site for broken internal links, missing metadata, duplicate titles, and other common issues
- External link checking - Verify the reachability and HTTP status of all external links in your posts with delay options to avoid rate limits
- External link dumping - Extract all external URLs from your posts into a CSV list for easy auditing
- Sidebar customisation - Optional logo, custom links, and social media icons
- SEO optimisation - Proper meta tags, Open Graph tags, and Twitter Card support
- Automatic image optimisation - Optional multi-size "ladder" generation and next-gen WebP conversion for local images in Markdown posts; simple
<img>tags are replaced with stable, responsive<picture>elements - Automatic icon generation - Generate favicons and platform-specific icons (iOS, Android, Windows) from a single source image
- Client-side search - Optional full-text search across post titles and content, running entirely in the browser with no external services (enable with
--with-search) - XML sitemap - Optional
sitemap.xmlgeneration for search engine indexing (enable with--with-sitemap) - Flexible URL scheme for posts - Fully configurable post output paths and URLs via the
post_pathoption; choose date-based paths, per-post directories, category-based layouts, and more - URL redirection - Support for URL aliases and path redirects using a
redirect_fromlist in post or page frontmatter - Post series - Group multi-part articles into a cohesive series with automatic top and bottom navigation banners and paginated series archives
- Blog statistics page — Optional stats page with histograms, word counts, reading times, lifespan, top linked domains, and more
- Calendar view — Optional full-history year calendar view of all posts, with links to day, month, and year archives (enable with
--with-calendar) - Post graph — optional interactive force-directed graph connecting posts, tags, and categories via internal links
- Related posts - Automatically find and display contextually relevant posts for each entry using a build-time TF-IDF and cosine similarity engine (enable with
--with-related) - Diagrams (Mermaid) - Optional support for rendering Mermaid diagrams and flowcharts from fenced code blocks (enable with
with_mermaid: truein your configuration) - LaTeX Math Rendering - Optional support for rendering LaTeX equations and formulas using KaTeX or MathJax (enable with
with_maths: truein your configuration)
Installation
BlogMore requires Python 3.12 or later.
Using uv (recommended)
The fastest and most modern way to install BlogMore is with uv:
uv tool install blogmore
If you don't have uv installed you can use uvx.sh to
perform the installation. For GNU/Linux or macOS or similar:
curl -LsSf uvx.sh/blogmore/install.sh | sh
or on Windows:
powershell -ExecutionPolicy ByPass -c "irm https://uvx.sh/blogmore/install.ps1 | iex"
Using pipx
You can also install BlogMore using pipx:
pipx install blogmore
From source
To install from source for development:
git clone https://github.com/davep/blogmore.git
cd blogmore
uv sync
Quick Start
Once installed, creating a blog is straightforward:
Create a directory for your posts:
mkdir posts
Write your first post in posts/hello.md:
---
title: Hello World
date: 2024-01-15
tags: [welcome, meta]
---
Welcome to my new blog powered by BlogMore!
Generate your site:
blogmore build posts/
Preview locally:
blogmore serve posts/
Visit http://localhost:8000 to see your site.
For a comprehensive walkthrough, see the Setting Up Your Blog guide.
Getting Help
- Issues - Report bugs or request features on the GitHub issue tracker
- Discussions - Ask questions or share ideas in GitHub Discussions
- Source code - Browse the code at github.com/davep/blogmore
Next Steps
- Setting Up Your Blog - Detailed walkthrough for creating your blog
- Writing a Post - How to write and format posts
- Writing a Page - How to create static pages
- Metadata and Sidebar - Configure your site's identity and appearance
- Building and Publishing - Preview, build, and publish your site
- Templates - How to customise the site templates
- Command Line Reference - Complete command-line reference
- Configuration Reference - Configuration file options and examples