sunainapai

makesite: Build a Static Site Generator in Python

makesite is a small, magic-free static site generator written in Python. It gives Python coders a compact starting point to generate HTML pages, blogs, and RSS feeds, with the code serving as both configuration and documentation.

Stars
1.9k
Forks
307
Stars, last 16 days
+2
Last commit
3.6 years ago
Contributors
8

Our take

Inactiveno commits in over a year

Health score

25/100

How it is scored
Activity
20
Community
39
Issues
21
Pull requests
21

+2 stars in the last 16 days

makesite is a deliberately minimal and approachable Python starter, but its long inactivity makes it a better fit for projects willing to maintain or fork the generator than for teams seeking an actively developed platform.

Good fit if

  • You want a small Python codebase to understand and customize for pages, blogs, and RSS.
  • You are comfortable working within its simple template and content-header conventions.
  • You want to generate static files and host them separately from the generator.

Look elsewhere if

  • You need active upstream development: the project is marked inactive, with no recent commits or releases.
  • You require built-in Jinja templates, YAML front matter, or a broad feature set, which the README explicitly excludes from its scope.
  • Your team needs recent upstream issue resolution; no issues were closed in the measured recent period.
All health signals
Last commit2023-03-04 (3.6 years ago)
Commits, last 90 days0
Releases, last 12 months0
Contributors8 (top contributor: 74% of commits)
Issues closed, last 90 days0
Pull requests merged, last 90 days0
Project age8 years

Checked on 2026-10-17 with the GitHub API.

Overview

makesite is a lightweight static site generator built on Python, designed for coders who want to generate a website or blog without a larger framework's hidden conventions. Its central idea is that the generator's plain Python code is both the configuration and the documentation, so you can inspect and modify how the site is built.

The repository includes an example site with static pages, two blogs, and RSS feeds. Run the script to produce static files in _site, then publish those files with a web server or hosting service. The project aims to be a starter kit to customize, rather than a feature-rich generator with a broad configuration system.

Key Features

  • Generates static pages and blog posts from content files.
  • Builds blog listing pages with posts in reverse chronological order.
  • Produces RSS feeds from blog posts.
  • Uses simple {{ key }} placeholders and HTML-comment headers for template parameters.
  • Supports HTML content and Markdown rendering through the optional commonmark package.
  • Copies static assets into the generated _site directory.
  • Keeps the generator compact and directly editable in Python.

Use Cases

  • A Python coder who wants a small personal blog generator they can understand and adapt.
  • A developer making a basic static website who prefers editing Python and HTML over learning a larger generator's configuration system.
  • Someone learning how static site generators work, using the compact source as a starting point for a custom tool.
  • A site owner who wants generated files to host independently of the generator at deployment time.

What you need

Detected in the repository

  • Python (main language on GitHub)
  • A test suite

License in plain words

MITpermissive

  • Commercial use: yes
  • Modify and redistribute: yes
  • You must keep: the copyright and license notice
  • Share your changes: no

A summary, not legal advice: the LICENSE file is what applies.

Getting Started

Run make serve for the example site, or run python3 makesite.py and serve the generated _site directory. Install commonmark if you want the example Markdown posts rendered. See the README for setup and customization details.

Alternatives

  • pelican: Pelican is a fuller Python generator with themes, plugins, and support for Markdown and reStructuredText content.
  • hugo: Hugo is a Go-based generator with a template-driven workflow and fast builds for blogs, documentation, and multilingual sites.
  • lektor: Lektor adds a built-in admin interface and desktop app for managing content in a Python static-site workflow.
  • nikola: Nikola is a Python generator with broader content-format, theme, and plugin support for websites and blogs.
ProjectLanguageLicenseStarsStatus
makesitePythonMIT1.9kInactive
pelicanPythonAGPL-3.013.4kActive
hugoGoApache-2.090.1kActive
lektorPythonBSD-3-Clause3.9kActive
nikolaPythonMIT2.7kMaintained

Considerations

The repository has had no commits in over three years and no releases in the past year, and it is marked inactive. That means adopters should expect to handle compatibility fixes or feature changes themselves; the README also says the project does not plan to add features such as Jinja templates or YAML front matter. Markdown rendering depends on the optional commonmark package, while the core generator is plain Python. The MIT license permits modification and redistribution, subject to retaining its license text and original copyright notice.

Found this useful?

Share it with someone who would like makesite.

Comparisons