About this project

escaping is an opinionated personal site generator whose core philosophy is to treat GitHub Issues as inputs for deterministic compilation rather than data for instant rendering. It compiles Issues into a complete static website through a staged pipeline involving content parsing, route allocation, HTML sanitization, and artifact validation. Key capabilities include: 1. Content Management: Supports extracting Blog, Ideas, and About page content from GitHub Issues with labels and front matter. 2. Site Model: Uniformly generates home pages, archive pages, detail pages, project pages, tag pages, as well as SEO artifacts such as Atom feeds, sitemaps, and robots.txt. 3. Theme System: Includes multiple built-in themes (such as geoqiao.me, Escape1, Escape2, Quiet) and supports loading local custom themes. 4. Security Mechanisms: Includes a Markdown HTML whitelist, strict URL validation, output directory restrictions, and Jinja auto-escaping. 5. Publishing Workflow: Employs a staged publishing mechanism where new artifacts are verified in a staging environment before replacing the official output via directory renaming, supporting rollbacks. The tool requires a Python 3.11+ environment and recommends using uv for dependency management. It separates generator logic from site configuration, allowing users to maintain site configurations and content in independent repositories.