YiiPress is a fast, file-based static blog engine built on Yii3 and PHP 8.5. Write Markdown, run one command, get a fully static site — feeds, sitemaps, taxonomy pages, authors, search, and all.
- Markdown with 15+ configurable extensions (tables, footnotes, strikethrough, task lists, Mermaid diagrams, LaTeX math, wiki-links…)
- Collections — group entries into blogs, docs sections, portfolios, or any other set
- Standalone pages — about, contact, and other one-off pages outside collections
- Taxonomies — tags and categories with index and term pages
- Authors — per-author profile pages with bio and entry archives
- Date archives — yearly and monthly archive pages
- Drafts & scheduling —
draft: trueand future-dated entries excluded from production builds - Entry summaries — auto-generated or manual via
[cut]marker in body - Cross-references — link between entries by file path; permalinks can change without breaking links
- Parallel builds — configurable worker count; 10 000 entries built in ~1.2 s
- Incremental builds — only re-renders files that changed since last build
- Build cache — parsed Markdown and front matter cached between runs
- Dry-run mode — preview what would be generated without writing anything
- Build diagnostics — warns about broken internal links, missing images, invalid front matter
- RSS and Atom feeds per collection
- XML sitemap
- Open Graph and Twitter Card meta tags
- Canonical URLs
- Configurable
robots.txt - Redirect pages (for permalink migrations)
- Static
404.htmlfor Netlify, GitHub Pages, Vercel, Cloudflare Pages
- Syntax highlighting — server-side, via a Rust/syntect FFI library; zero client-side JavaScript
- Table of contents — auto-generated from headings, with
idinjection - Mermaid diagrams — flowcharts, sequence, Gantt, pie, and more
- YouTube & Vimeo shortcodes — responsive embeds with a single tag
- Client-side search — fuzzy search with modal UI; no external dependencies; opt-in
- Telegram import — import channel exports as Markdown entries
- Live-reload dev server (
make up) yiipress new— scaffold entries from archetypesyiipress clean— wipe output and caches- PHP template engine with partials — no new templating language to learn
- Theme system — installable and distributable themes
- Docker-based setup — one command to start
10 000 entries across 3 collections, OPcache on:
| Mode | Time |
|---|---|
| Sequential | ~1.49 s |
| 4 workers | ~1.18 s |
| Incremental (cached) | ~0.05 s |
1 000 realistic entries (large posts, images, tables, code blocks):
| Mode | Time |
|---|---|
| Sequential | ~252 ms |
| 4 workers | ~152 ms |
| 8 workers | ~135 ms |
composer create-project yiipress/engine myblog
cd myblogConfigure content/config.yaml:
title: My Blog
base_url: https://example.com
permalink: /:collection/:slug/
taxonomies:
- tags
- categoriesCreate a collection in content/blog/_collection.yaml:
title: Blog
sort_by: date
sort_direction: desc
feed: true
listing: trueWrite a post in content/blog/2024-01-15-hello-world.md:
---
title: Hello World
tags:
- general
---
Welcome to my blog!Build and preview:
make yii build
make up # dev server at http://localhost:8087Full documentation is available in the docs/ directory and rendered at yiipress.yiiframework.com.
| Guide | Description |
|---|---|
| Quickstart | Create your first site in minutes |
| Content | Collections, front matter, taxonomies, authors |
| Configuration | All config.yaml options |
| Commands | CLI reference |
| Templates | Template variables, partials, themes |
| Plugins | Content processors and importers |
| Deployment | GitHub Pages, Netlify, Vercel, Cloudflare Pages |