AOG (Act of Genius) is an Emacs Org-mode static site generator. It is based on the org-page lineage and is used here as an editor-first publishing engine for technical blogs.
Core behavior:
- Read Org source files from a repository.
- Render content with Mustache templates and a selected theme.
- Generate category pages, tag pages, and RSS/search artifacts.
- Publish HTML output to a target directory or a configured branch workflow.
- Org-native writing and export flow.
- Theme system with template/CSS/JS resources.
- Category and tag index generation.
- RSS generation.
- Incremental publication via git-aware workflows.
- Search index generation support in downstream pipelines.
- Highly scriptable Elisp integration.
Required:
- Emacs (batch mode).
- Org-mode.
- Git.
- Elisp libraries used by AOG internals:
mustache.el,htmlize.el,dash.el,ht.el,git.el.
Optional:
simple-httpdfor Emacs-side preview flows.
(add-to-list 'load-path "/path/to/AOG")
(require 'aog)Install via your preferred Emacs package manager and then:
(require 'aog)(setq aog/repository-directory "/path/to/blog-repo")
(setq aog/site-domain "https://example.com")
(setq aog/site-main-title "My Blog")
(setq aog/site-sub-title "Notes on systems and software")
(setq aog/theme 'selfdotsend) ; or any available themeOptional identity and integrations:
(setq aog/personal-github-link "https://github.com/your-user")
(setq aog/personal-disqus-shortname "your-disqus-id")
(setq aog/personal-google-analytics-id "G-XXXXXXX")(aog/do-publication)(aog/do-publication t nil "/tmp/aog-public" nil nil)Run:
M-x aog/do-publication
AOG ships a terminal CLI at bin/aog so users can scaffold and publish without
cloning a pre-made site repository. A complete guide is in docs/CLI.org.
Install to PATH (example):
git clone git@github.com:metacritical/AOG.git cd AOG export PATH="$PWD/bin:$PATH"
Quick overview of commands:
aog create <site_name> [target_dir] # scaffold a new site aog publish [repo_dir] [output_dir] # run AOG publication aog preview [repo_dir] [output_dir] [port] # publish and serve locally aog new [repo_dir] [--publish] "Title" # create a draft or post aog ls [repo_dir] # list drafts
Rails-like quick start:
aog create "My New Site" cd my-new-site ./publish.sh python -m http.server 8080 -d public
See docs/CLI.org for details on site configuration, slug generation,
git-aware publishing, environment variables, and downstream repository scripts.
Themes live under themes/ and typically include:
templates/(Mustache templates)resources/cssresources/js- optional images/fonts
For downstream blog repos, theme resources are copied into generated output directories by repository publish scripts.
- AOG publishes content; repository-level scripts usually handle extra steps like link normalization, syntax post-processing, static asset copy, and deployment-specific aliasing.
- If you rely on incremental git-aware publishing, keep repository history clean and commit source changes before publication.