A tiny static blog generator built with Python and Markdown.
This project is intentionally simple: write posts in Markdown, run one script, and publish the generated HTML from output/.
You can reuse the Reusable Materials listed in LICENSE to kick start your own blog.
At the time of writing, that includes:
build.pytemplates/style.css(located atstatic/style.cssin this repo)
Post content is not reusable. See LICENSE for the exact terms.
-
Copy the Reusable Materials into a new project.
-
Create a
posts/folder with your own.mdposts. -
Create a
static/folder and place your stylesheet/assets there. -
Install the Markdown dependency:
python -m pip install markdown
-
Build the site:
python build.py
Generated files are written to output/.
Use Markdown files in posts/.
Optional frontmatter:
---
title: My First Post
date: 2026-04-19
draft: false
---
Your post content here.If title is missing, the first # Heading is used.
If date is missing, file modification time is used.
- Edit site constants near the top of
build.py(SITE_TITLE,SITE_URL,SITE_DESCRIPTION). - Edit HTML in
templates/. - Style your blog in
static/style.css.
If you are working in this repository, use the local virtual environment:
./.venv/bin/python -m pip install -r requirements.txt
./.venv/bin/python build.pyThis repository already includes an automated GitHub Pages workflow at .github/workflows/deploy.yml.
- In your GitHub repository, go to Settings -> Pages.
- Set Source to GitHub Actions.
- Push to
main.
Each push to main runs the deploy workflow, which installs dependencies, builds the site, and publishes output/ to GitHub Pages.
If you are starting a new repo from the Reusable Materials, copy .github/workflows/deploy.yml into your new repo so deployment works the same way.