Built with Chinaski

Features

Everything Chinaski does

A static-site CMS with a real editing experience: block-based content, multilingual publishing, themes you can actually program, and an agent-native API — all producing flat HTML.

View on GitHub

Core capabilities

Block-based content

Fifteen block types: hero, columns, accordion, stat, image, gallery, quote, table, video, embed, form, newsletter, CTA, promo, and testimonial. Every page is an ordered list of blocks — no raw HTML required.

Multilingual publishing

Language is a first-class field on every page, post, and block. Build parallel English, Spanish, and Portuguese versions from a single install, with shared taxonomy and cross-linking handled automatically.

Template Toolkit themes

Themes are Template Toolkit templates — a mature, stable templating language with conditionals, loops, and includes. Every site element is expressed in text you can read, version-control, and modify without learning a proprietary system.

Static HTML output

Every build produces a folder of plain HTML, CSS, and assets. The live site serves static files from nginx or any CDN. There is no application layer to maintain, scale, or secure.

MCP server included

Chinaski ships a Model Context Protocol server. Any MCP client — Claude, Cursor, or your own agent — can create and update content, run translations, and trigger builds through a typed tool interface.

Forms with server-side handling

Chinaski handles form submissions server-side on the admin host. No third-party form service, no JavaScript required for submission. Responses are stored in the database and optionally forwarded by email.

Explore in depth

Content blocks in detail

Each block type has a dedicated editor view and a dedicated template. Blocks store structured JSON — headings, body text, image URLs, button targets — and the template decides how to render it. Swap the theme; the content is untouched.

The translation pipeline

Translations are drafted by an LLM (Claude, Qwen, or a local Ollama model) and queued for human review before publishing. The pipeline handles block-level parsing, so structure is preserved across languages.

The build system

A build reads every published page and post, renders each through the active theme, and writes output to a directory. Incremental builds only re-render changed content. Build time on typical sites is under two seconds.

Sitemaps, hreflang, and SEO

Chinaski generates sitemaps and hreflang link tags automatically from the content graph. Per-page meta titles, descriptions, and Open Graph fields are editable fields in the admin — not an afterthought plugin.

Progressive Web App support

Enable the PWA flag and Chinaski generates a service worker and offline fallback page. Works with the static output model — no server-side rendering required for offline support.

See how it all works

Complete setup, theming, and API documentation lives at docs.chinaski.net.

Read the documentation