Tuzuru static blog generator beta release
I’ve released the beta version (^1) of Tuzuru, a static blog generator (0.1.2). It’s a CLI for people who want to set up a simple blog on GitHub Pages. Since I built it, I’d like to introduce it briefly here.
https://github.com/ainame/tuzuru
Tuzuru is a CLI in the static site generator family, but as it doesn’t aim to support anything beyond blogs, I’m calling it a static blog generator. This post was generated with Tuzuru and is hosted on GitHub Pages with a custom domain.
If you’ve been thinking of hosting a blog on GitHub Pages, I’d appreciate it if you gave it a try. Feedback is very welcome.
(I generated the logo with Gemini)
(^1) Until now I’ve been developing quickly on the main branch, but from here I plan to switch to a lightweight PR-based workflow.
Features
I once tried to revive a Hugo-based blog and gave up, which led me to start building Tuzuru. I’ve designed it to be as simple to use as I can make it. In short:
- Write posts in plain Markdown; intuitive
- No need to learn or remember YAML front matter syntax
- Instead, post dates and author names are taken from
git log
- Works out of the box with minimal configuration
- Automatically generates the home page plus yearly and category lists
- Simple layout
- Written in Swift
- Reasonably fast (I haven’t benchmarked it; the places that call git commands may be the bottleneck)
- On Linux it’s a static binary via the Static Linux SDK, so installation is straightforward
Demo
Here’s a separate, random AI-generated demo page I’m hosting:
https://ainame.github.io/tuzuru-demo/
Main commands
At the moment the following subcommands are available:
tuzuru
- runstuzuru generate
tuzuru init
- initialises a project by creating the config file (tuzuru.json
) and templatestuzuru generate
- converts Markdown files undercontents/
to HTML and generates listing pagestuzuru amend
- a way to change a post’s date and author in Tuzuru later without rewriting Git history (creates a Git commit with a marker)tuzuru import
- a simple importer for Markdown written for Hugotuzuru serve
- a built-in HTTP server for previews
Also:
- You can create pages that aren’t listed automatically (like /about)
- Links to X are automatically converted into embedded HTML
- The built-in preview server supports hot reload
- CSS cache busting
- Open Graph tags
- Automatic generation of
sitemap.xml
- Installation via Homebrew or npm
Simple deployment to GitHub Pages
Enable GitHub Pages in your repository settings, then add this to .github/workflows/deploy.yml
to deploy.
The ainame/tuzuru
repository provides a reusable action for deployment, so you only need two steps: actions/checkout
and ainame/Tuzuru/.github/actions/tuzuru-deploy
.
name: Deploy
on:
push:
branches: [main]
workflow_dispatch:
permissions:
contents: read
pages: write
id-token: write
concurrency:
group: "pages"
cancel-in-progress: false
jobs:
deploy:
runs-on: ubuntu-latest
environment:
name: github-pages
url: ${{ steps.deployment.outputs.page_url }}
steps:
- uses: actions/checkout@v5
with:
fetch-depth: 0
- uses: ainame/Tuzuru/.github/actions/tuzuru-deploy@0.1.2
Summary
It’s simple, but it covers the features I wanted. If you try it and find it useful, a star would be appreciated.
👉 GitHub: ainame/tuzuru