Skip to main content

Asteria

Asteria is a static site generator that builds your pages and blog posts straight from OpenDocument Text (.odt) files. Write in LibreOffice Writer, Word, or any ODT-compatible editor — Asteria converts it into a fast, themeable static site.

Looking for the full configuration reference? See MANUAL.md for a complete guide covering every setting, front matter field, and template variable.

Features

  • Write in ODT, not Markdown. Headings, lists, tables, and images convert automatically — no learning curve for non-technical writers.
  • Pages and posts, with tags, categories, pagination, and RSS/Atom feeds out of the box.
  • Multi-language content. Translate any page or post with a simple filename convention; Asteria handles URL prefixes, per-language blog indexes, feeds, and a ready-made language switcher.
  • Cache-safe by default. Static assets are automatically content-hashed, so browsers never serve a stale CSS/JS file during development or after a deploy.
  • Internal cross-references ([[page-id]]) between your own content, validated at build time.
  • Live-reloading dev server (asteria-ssg serve) that rebuilds on save.
  • Fully themeable with plain Jinja2 templates.

Requirements

  • Python 3.11+

Installation

pip install asteria-ssg[watch]

Quick start

# Scaffold a new project (defaults to ./my_site if no path is given)
asteria-ssg new my-blog
cd my-blog

# Serve locally with auto-rebuild on changes
asteria-ssg serve
# -> http://127.0.0.1:8000

# Build the final static site
asteria-ssg build

Project structure

my-blog/
└── source/
    ├── site.yaml            # site configuration
    ├── content/
    │   ├── pages/            # standalone pages (*.odt)
    │   └── posts/             # blog posts (*.odt)
    ├── static/                # copied as-is to the site root
    └── themes/
        └── minimal/             # the active theme

asteria-ssg build writes the generated site to my-blog/result/ by default.

Basic usage

Writing a page or post

Create an .odt file under content/pages/ or content/posts/. Start it with a front matter block, then write your content normally:

---
title: My First Post
date: 2024-03-15
author: Jane Doe
tags: hello, first-post
---

Welcome to my new blog! This is a regular paragraph, written like any
other document in your ODT editor.

The filename (without extension) becomes the page's unique ID and, by default, its URL slug — content/posts/my-first-post.odt becomes /blog/my-first-post/.

Configuring your site

Edit source/site.yaml:

site:
  title: "My Blog"
  description: "Thoughts on things I like."
  url: "https://myblog.example.com"
  home_page: "welcome"

blog:
  posts_per_page: 10

You only need to set the keys you want to change — everything else falls back to sensible defaults. See MANUAL.md for the full list of options (multi-language setup, feeds, sitemap, URL patterns, asset fingerprinting, and more).

Linking to your own content

See the [[getting-started]] guide for more details.

CLI commands

Command What it does
asteria-ssg new [path] Scaffold a new project (default: ./my_site)
asteria-ssg build Build the full static site
asteria-ssg serve Build and serve locally, rebuilding on changes
asteria-ssg check Validate content and configuration without writing any files
asteria-ssg clean Remove the generated output (and optionally the build cache)

Run asteria-ssg <command> --help for all available flags.

Documentation

The complete manual covers:

  • Every site.yaml option, with examples
  • Front matter reference
  • Multi-language content (i18n)
  • Internal references
  • Blog excerpts ([[more]])
  • Asset fingerprinting / cache busting
  • Theming: required templates, available context variables, filters
  • Known limitations

License

AGPL-3.0.

Contributing

Issues and pull requests are welcome.

Metadata

Release files for asteria-ssg 1.0.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for asteria-ssg 1.0.1
File Size Uploaded Provenance Actions
asteria_ssg-1.0.1.tar.gz 153.0 kB Without provenance Details for asteria_ssg-1.0.1.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for asteria-ssg 1.0.1
File Interpreter ABI Platform Actions
asteria_ssg-1.0.1-py3-none-any.whl Python 3 none any Details for asteria_ssg-1.0.1-py3-none-any.whl

Total release size: 321.6 kB

Release files / asteria_ssg-1.0.1.tar.gz

Download URL asteria_ssg-1.0.1.tar.gz
Size 153.0 kB
Tags Source
SHA-256 checksum
How to use checksums
63c8d5096344871bfce331b5b3682f8fe0c0b484eeed213b3903432965a9e0f8
BLAKE2b-256 checksum
How to use checksums
d25ac40a5ff27e33d6c58615805507257de3204badc2d9d65067bf9f29520b24
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.10

Release files / asteria_ssg-1.0.1-py3-none-any.whl

Download URL asteria_ssg-1.0.1-py3-none-any.whl
Size 168.6 kB
Tags Python 3
SHA-256 checksum
How to use checksums
8c15b4db1e4fe2169c12d37b07f99710056caf471c77adf778247aad65ebf5f0
BLAKE2b-256 checksum
How to use checksums
e1b5b881b66e66a64bab89ea039271cc198cb29b80f8b48e1c8d592ca57c323e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.10

Security for asteria-ssg 1.0.1

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release

1.0.1 This release

2 release files No provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page