A static site generator built around a tiny kernel and a webpack-style plugin + lifecycle-hook architecture. The kernel knows nothing about Markdown, HTML or templates: every feature is a plugin that taps into lifecycle hooks.
This very site is generated by pyssg itself, using the built-in docs() preset.
Tiny, dependency-free kernel
The core is pure standard library. It only orchestrates a lifecycle and lets plugins do the work.
Everything is a plugin
Reading files, parsing frontmatter, rendering Markdown, templating, writing to disk - all plugins you can swap or extend.
One shared content model
Permalinks, collections, listings and navigation speak the same vocabulary, so templates only learn site, page, collections and menus.
Friendly presets
docs(), blog() and site() give you a working setup in one line; power users assemble plugins by hand.
A taste
# pyssg.config.py
from pyssg.config import Config
from pyssg_cli.presets import docs
def config() -> Config:
return Config(src="content", out="public", plugins=docs())
pyssg build
That is the entire setup behind the site you are reading.
Where to next
- New here? Start with Getting started.
- Building pages? Learn Templating and the built-in plugins.
- Want the internals? Read the Architecture overview or learn about writing plugins.