Every page ships as HTML for browsers, markdown for LLMs, and JSON-LD for search engines. Single binary. Zero config. Built with Rust.
|
&&
Why seite
Most static site generators produce HTML and stop there. seite builds for three audiences at once:
- Browsers get pages with full SEO metadata, Open Graph, Twitter Cards, and JSON-LD structured data
- LLMs get
llms.txt,llms-full.txt, and a.mdcopy of every page for direct consumption - AI tools get a built-in MCP server that exposes your entire site as structured resources
All from markdown + YAML frontmatter. No JavaScript runtime. No build dependencies. One binary does everything.
Features
- AI agent —
seite agentspawns Claude Code with full site context. Create posts, apply themes, and manage content conversationally - MCP server —
seite mcpexposes docs, config, content, and themes to any AI tool via the Model Context Protocol - 6 bundled themes — default, minimal, dark, docs, brutalist, bento — or generate a custom one with
seite theme create "coral brutalist with lime accents" - 6 collection presets — posts, docs, pages, changelog, roadmap, and trust center (compliance hub)
- Multi-language — filename-based i18n with per-language URLs, RSS feeds, sitemaps, search indexes, and hreflang tags
- Image pipeline — auto-resize, WebP conversion, srcset/
<picture>elements, lazy loading - Deploy anywhere — GitHub Pages, Cloudflare Pages, Netlify with guided setup, pre-flight checks, and
--dry-run - Analytics — Google Analytics, GTM, Plausible, Fathom, Umami with optional cookie consent banner
- Shortcodes —
youtube,vimeo,gist,callout,figurebuilt-in, plus user-defined templates - Multi-site workspaces — manage multiple sites from one directory with unified dev server
- Self-update —
seite self-updatefetches the latest release with SHA256 checksum verification
Install
macOS / Linux:
|
Windows (PowerShell):
irm https://seite.sh/install.ps1 | iex
From source (requires Rust toolchain):
Pin a specific version:
VERSION=v0.1.0 |
Quickstart
# Create a new site with blog posts, documentation, and static pages
# Start the dev server with live reload
Open http://localhost:3000. Edit content in content/, templates in templates/. The dev server live-reloads on every change.
# Create content
# Deploy
Build output
seite build runs a 13-step pipeline. For a site with posts and docs, it produces:
dist/
├── index.html # Homepage
├── posts/
│ ├── hello-world.html # HTML for browsers
│ └── hello-world.md # Markdown for LLMs
├── docs/
│ └── getting-started.html
├── feed.xml # RSS feed
├── sitemap.xml # XML sitemap with hreflang
├── search-index.json # Client-side search index
├── robots.txt
├── llms.txt # LLM discovery summary
├── llms-full.txt # Full markdown for LLM indexing
├── 404.html
└── static/
Every HTML page includes canonical URLs, Open Graph tags, Twitter Cards, JSON-LD structured data (BlogPosting/Article/WebSite), and links to its markdown alternate.
AI integration
Agent
seite agent spawns Claude Code as a subprocess with rich site context — config, content inventory, templates, and available commands. No API keys needed; it uses your Claude Code subscription directly.
MCP server
seite mcp runs a Model Context Protocol server over stdio. Claude Code auto-starts it via .claude/settings.json (created by seite init).
Resources — seite://docs, seite://config, seite://content, seite://themes, seite://trust
Tools — seite_build, seite_create_content, seite_search, seite_apply_theme, seite_lookup_docs
LLM discovery
Every build generates llms.txt (summary) and llms-full.txt (complete markdown) for LLM indexing, plus a .md copy of every page. Multilingual sites get per-language versions.
Collections
Six built-in presets, each with dedicated templates and theme CSS:
| Preset | Dated | RSS | Nested | Use case |
|---|---|---|---|---|
| posts | ✓ | ✓ | — | Blog posts, articles |
| docs | — | — | ✓ | Documentation with sidebar navigation |
| pages | — | — | — | Standalone pages (About, Contact) |
| changelog | ✓ | ✓ | — | Release notes with colored tag badges |
| roadmap | — | — | — | Public roadmap with status tracking |
| trust | — | — | ✓ | Compliance hub (SOC 2, ISO 27001, GDPR, ...) |
Themes
Six themes ship with the binary — no downloads, no CDNs:
| Theme | Description |
|---|---|
| default | Clean centered column, system fonts, blue links |
| minimal | Georgia serif, literary feel, generous whitespace |
| dark | True black #0a0a0a, violet accents, visible focus rings |
| docs | Fixed sidebar with auto-scrolling nav, GitHub-style |
| brutalist | Cream background, thick black borders, hard shadows, yellow accents |
| bento | CSS grid cards, rounded corners, mixed sizes, soft shadows |
All themes include: responsive design, accessibility (skip-to-main, ARIA labels, focus rings, prefers-reduced-motion), search, pagination, language switcher, and full SEO/structured data output.
Multi-language
Filename-based translations. Fully backward-compatible — single-language sites work identically.
content/posts/
├── hello-world.md → /posts/hello-world
├── hello-world.es.md → /es/posts/hello-world
└── hello-world.fr.md → /fr/posts/hello-world
# seite.toml
[]
= "Mi Sitio"
[]
= "Mon Site"
Each language gets its own index, RSS feed, search index, and LLM discovery files. The sitemap includes xhtml:link alternates for all translations.
Deployment
Three targets with pre-flight checks, auto-recovery on failures, and post-deploy verification:
[]
= "cloudflare" # or "github-pages" or "netlify"
seite init auto-generates the CI workflow for your chosen target.
Configuration
# seite.toml — minimal config (everything else is optional)
[]
= "My Site"
= "https://example.com"
[[]]
= "posts"
[]
= "My Site"
= "A site built with seite"
= "https://example.com"
= "en"
= "Your Name"
[[]]
= "posts"
# name = "docs" | "pages" | "changelog" | "roadmap" | "trust"
# paginate = 10 # enable pagination
[]
= "dist"
= "data" # YAML/JSON/TOML → {{ data.filename }} in templates
= true # strip CSS/JS comments, collapse whitespace
= true # name.<hash8>.ext + asset-manifest.json
[]
= "github-pages" # or "cloudflare" or "netlify"
= true
[]
= [480, 800, 1200]
= 80
= true
= true
[]
= "plausible" # or "google", "gtm", "fathom", "umami"
= "example.com"
= false # set true to show consent banner
# script_url = "..." # custom URL for self-hosted analytics
[]
= "Mi Sitio"
[]
= "Acme Corp"
= ["soc2", "iso27001"]
Data files
Drop YAML, JSON, or TOML files in data/ and access them in any template:
# data/nav.yaml
- title: Blog
url: /posts
- title: Docs
url: /docs
- title: GitHub
url: https://github.com/user/repo
external: true
<!-- Available as {{ data.nav }} in all templates -->
All bundled themes automatically render data.nav (header) and data.footer (footer links + copyright).
Workspaces
Manage multiple sites from a single directory:
Documentation
Full docs at seite.sh
- Getting Started
- Configuration
- Collections
- Templates
- Shortcodes
- Multi-language (i18n)
- Deployment
- CLI Reference
- Trust Center
Contributing
Contributions are welcome. Please open an issue to discuss larger changes before submitting a PR.