Skip to content

BlogMore

Warning

BlogMore is an experiment in using GitHub Copilot to develop a whole project from start to finish. As such, almost every part of this documentation was generated by Copilot and what it knows 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
  • Sidebar customisation - Optional logo, custom links, and social media icons
  • SEO optimisation - Proper meta tags, Open Graph tags, and Twitter Card support
  • 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.xml generation for search engine indexing (enable with --with-sitemap)
  • Flexible URL scheme for posts - Fully configurable post output paths and URLs via the post_path option; choose date-based paths, per-post directories, category-based layouts, and more
  • Blog statistics page — Optional stats page with histograms, word counts, reading times, lifespan, top linked domains, and more

Installation

BlogMore requires Python 3.12 or later.

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

Next Steps