Static blog generator powered by Emacs Org publish, with shell-based build scripts and GitHub Pages deployment.
- Emacs
- Node.js 16+ and npm
- Python 3 (for local preview server)
npm ci
cp .blogrc.example .blogrc
./build.sh
make serveOpen http://localhost:8000.
make buildornpm run build: Build site intopublic/make build-prodornpm run build:prod: Build and minify assetsmake serveornpm run serve: Build and preview locallymake dev: Watchposts/andstatic/, then rebuild on changenpm run format: Format JS/CSS/JSON/MD/YAMLnpm run format:check: Check formatting
posts/: Org source files for posts and pagesstatic/: CSS, JS, images, favicon, robotstemplates/: Post template(s)build.el: Org publish configurationbuild.sh,minify.sh,generate-sitemap.sh: Build pipeline scriptspublic/: Generated output (do not edit directly)
Create posts in posts/ using YYYY-MM-DD-slug.org naming. Include:
#+TITLE:#+AUTHOR:#+DATE:
Set #+DRAFT: true to keep a post unpublished.
Push to main to trigger .github/workflows/publish.yml and deploy to GitHub Pages.
For configuration, use .blogrc and/or repository secrets (BLOG_URL, BLOG_AUTHOR, BLOG_EMAIL).
PRs run .github/workflows/ci.yml, including:
- Org metadata validation
- Shell script linting
- Build verification
- Internal HTML link checks