Based on PaperMod, requires Hugo Extended 0.166.0 or higher
hugo-theme-sigil — Hugo Starter Template
By ouatis
A Hugo literary theme based on PaperMod, using IBM Plex typography, offering Tufte-style sidenotes, a circular reveal dark mode toggle, full-text RSS and JSON Feed, with per-page opt-in for math formulas, Mermaid diagrams and image lightbox.
Explore the design
Compare the page layouts and mobile experience. Open any screenshot for a closer look.
Preview provided in the project README.
One original preview is available. Open the full image to inspect the design.
Screenshots show visual appearance; interactive behavior may differ.
What stands out
A quick read of the recorded project description.
Tufte-style sidenotes on wide screens, automatically converted to endnotes on narrow screens
Circular reveal dark mode toggle and ghost year archive index
Full-text RSS and JSON Feed 1.1 output
Math formulas, Mermaid diagrams and image lightbox loaded selectively per page
Supports llms.txt and llms-full.txt output for AI agents to read
Template Details
Sigil is a literary-style theme for Hugo, built on PaperMod, emphasizing restrained typography and reading experience. It requires Hugo Extended 0.166.0 or higher, because OG card generation relies on the images.Text feature in the extended version. The theme presents annotations as Tufte-style sidenotes on wide screens, switching to endnotes on narrow screens; it provides a ghost year archive index, a circular reveal dark mode toggle, full-text RSS and JSON Feed 1.1. It uses IBM Plex fonts by default, with optional subsetting for CJK text.
Features load on demand: math formulas (KaTeX), Mermaid diagrams and image lightbox (glightbox) must be explicitly enabled in page frontmatter or site configuration; pages that do not enable them will not load the related resources. The theme also supports search, taxonomies, breadcrumbs, table of contents, code copy buttons and multilingual strings. External links are marked with a gate icon via a render hook, without hardcoding domains.
The theme provides llms.txt and optional llms-full.txt output, making it easier for AI agents to read the site index. The public contract (parameter names, sg-* class names, output formats, data structures and extension partials) has been frozen since v0.9.0; renames require a deprecation window, and removals must wait for a major version. Installation supports either git submodule or Hugo module, and both modes are verified in CI.
The font subsetting script supports three modes: latin, corpus and full. latin contains only Latin characters, with CJK falling back to system fonts; corpus additionally scans the example site characters, generating a Simplified Chinese subset of about 30 KB; full provides complete Simplified, Traditional and Japanese glyphs, about 3 MB. The theme includes 47 language translations, but most are machine-made, and native speakers are welcome to correct them.
Is it right for your project?
Use Cases
- Building a personal blog or literary site focused on long-form reading
- Publishing academic or review content that needs sidenotes, endnotes and an archive index
- Hugo sites that want to provide a machine-readable site index for AI agents
- Documentation-style blogs that need per-page enabling of math formulas or Mermaid diagrams
Suitable For
- Developers using Hugo Extended and preferring the PaperMod ecosystem
- Content creators who value typographic detail and reading experience
- Chinese-language sites needing multilingual interfaces and CJK font subsetting
- Sites that want on-demand loading of front-end resources and avoid global inclusion
Getting started & customization
Use these recorded setup notes alongside the repository instructions for your chosen version.
- 1
Requires Hugo Extended 0.166.0 or higher; the standard version cannot generate OG cards
- 2
Can be installed via git submodule or Hugo module, and set theme or module.imports in hugo.toml
- 3
Math formulas, Mermaid and lightbox are disabled by default and must be explicitly enabled in frontmatter or site configuration
- 4
CJK sites should run scripts/build-fonts.sh to generate font subsets, or specify a Chinese-supporting TTF via ogCardFont
- 5
The example site can be previewed with hugo server --themesDir ../.. in the exampleSite directory
License & source material
Usage conditions & limitations
Free to use · keep license noticeThis entry covers the free version under the MIT license in the public repository; the free scope is the code of that version and does not mean external services or third-party assets are free.
Must comply with when using
- Free use, modification, commercial use and distribution of this version's code are permitted.
- When distributing copies or substantial portions of the code, retain the original author's copyright notice and the full MIT license notice.
- The code is provided as is; warranties and limitations of liability are governed by the original license and applicable law.
Additional costs & items to verify
- Demo images, fonts, icons and other third-party assets must be checked against their respective licenses and cannot be judged solely by the code's MIT license.
- External services such as domains, hosting, databases, payments or AI may incur additional charges.
- Using this theme requires Hugo Extended 0.166.0 or higher; the standard Hugo version cannot generate OG cards.
- Math formulas, Mermaid diagrams and image lightbox are disabled by default and must be explicitly enabled in page frontmatter or site configuration; pages that do not enable them will not load the related resources.
- Mermaid diagrams load from a pinned CDN version, so pages that enable this feature require external network access.
- Enabling analytics requires configuring a third-party statistics service (Plausible, Umami, GoatCounter or Fathom), which may involve external accounts or service fees.
- The built-in Latin fonts cannot render CJK text; CJK sites need to prepare and specify a Chinese-supporting TTF font file.
- The corpus font subsetting mode is only supported by the Shell script; the Python script does not support this mode.
View Original Text Basis
Permission is hereby granted, free of charge
Original License Text
**Requires [Hugo Extended](https://gohugo.io/installation/) ≥ 0.166.0** (the theme uses `images.Text` for OG cards, which needs the extended build).
Original README
Opt-in per page: KaTeX math (vendored), Mermaid diagrams (pinned CDN), image lightbox (glightbox, vendored)
Original README
Diagrams: Mermaid, MIT (loaded from a pinned CDN on pages that ask for it).
Original README
`analytics.*` | hidden | Third-party stats, production only: `analytics.plausible.domain`, `analytics.umami` (`src` + `id`), `analytics.goatcounter.code`, `analytics.fathom.site`
Original README
The bundled Latin font cannot draw CJK — CJK sites should subset a TTF for their titles and point this at it
Original README
https://github.com/ouatis/hugo-theme-sigil/blob/main/LICENSEhttps://github.com/ouatis/hugo-theme-sigil/blob/main/README.md**Shell script only** — `scripts/build-fonts.py` covers `latin`/`full` but not `corpus`.
Original README
Compiled by DeepSeek based on repository license and README ·2026-10-10. Results only cover the materials read; dependencies, images, fonts, and subsequent term changes are subject to their respective original texts.
Project checks & description sources
Template Information
- Source platforms
- Hugo Themes
- Documentation and maintenance reference score
- Partly documented · 71 / 100
- Technologies
- Hugo
- Website type
- Starter
How this score is calculated
Our heuristic uses license records (up to 30), a demo link (12), a preview (10), stars (15), recorded maintenance (15), description completeness (8), feature records (5) and classification data (5). It is not a code, security or performance test, or a Google score. A link does not establish tested functionality.
What to verify for this project
- Repository update recorded
- 2026-10-10
- Screenshot last checked
- 2026-10-10
No demo link is recorded. Use the repository instructions to evaluate the project locally; the screenshot alone cannot establish interactive behavior.
The catalog identifies Hugo as the primary stack. Check the actual dependency manifest and lockfile for versions and hosting requirements. These notes use recorded metadata, not a code audit or a deployment test.
Use a selection guide →How this description was prepared
AI-assisted description based on catalog records and repository material. Repository authors are not automatically the reviewers of this description.
Review declaration: [email protected] · 2026-10-10
Inspect the recorded source material
SHA-256: 9ab592c4dc628b4b32f215ac93a2680ee152667dcf3324536cf5bec7ea4be9bf
2026-10-10T11:04:42.492Z
Source file / repository# hugo-theme-sigil
**English** | [中文](README.zh.md) | [日本語](README.ja.md)
<p>
<img src="https://img.shields.io/github/v/release/ouatis/hugo-theme-sigil?style=flat-square&label=version&color=ad3e32" alt="Latest release">
<img src="https://img.shields.io/github/downloads/ouatis/hugo-theme-sigil/total?style=flat-square&label=downloads&color=d0a85c" alt="Downloads">
<img src="https://img.shields.io/github/license/ouatis/hugo-theme-sigil?style=flat-square&label=license&color=2f6754" alt="MIT License">
</p>
A restrained literary theme for [Hugo](https://gohugo.io/), based on
[PaperMod](https://github.com/adityatelange/hugo-PaperMod).
Demo: <https://ouatis.com/hugo-theme-sigil/>

**Requires [Hugo Extended](https://gohugo.io/installation/) ≥ 0.166.0**
(the theme uses `images.Text` for OG cards, which needs the extended build).
> The version badge above reflects the latest **tagged release**; the
> [CHANGELOG](CHANGELOG.md) tracks every change up to the current `main`.
## Features
- Tufte-style sidenotes on wide screens, endnotes on narrow screens
- Ghost-year archive index
- Circular-reveal dark-mode toggle
- Full-text RSS
- IBM Plex typography with CJK font subsetting
- JSON Feed 1.1 (`/feed.json`, alongside RSS, generated at build)
- Search, taxonomies, breadcrumbs, TOC, code-copy buttons, and multilingual strings
- Opt-in per page: KaTeX math (vendored), Mermaid diagrams (pinned CDN), image lightbox (glightbox, vendored)
- Auto-generated OG card images from post titles (`images.Text`, build-time only)
- External links marked with a door glyph via a render hook (host-aware, no hardcoded domains)
- `llms.txt` (and optional `llms-full.txt`) — a machine-readable site index for AI agents
- Maintainers and agents: see [AGENTS.md](AGENTS.md) for build/verify commands and pitfalls; `scripts/check.sh` is the one-shot verification
## Install
As a git submodule:
```bash
git submodule add https://github.com/ouatis/hugo-theme-sigil themes/hugo-theme-sigil
```
```toml
# hugo.toml
theme = "hugo-theme-sigil"
```
Or as a [Hugo module](https://gohugo.io/hugo-modules/):
```bash
hugo mod init github.com/you/your-site # skip if the site already has go.mod
```
```toml
# hugo.toml
[module]
[[module.imports]]
path = "github.com/ouatis/hugo-theme-sigil"
```
Preview the example site:
```bash
git clone https://github.com/ouatis/hugo-theme-sigil
cd hugo-theme-sigil/exampleSite
hugo server --themesDir ../..
```
## Configuration
Common PaperMod options work as usual. Sigil-specific options:
| Parameter | Default | Purpose |
| --- | --- | --- |
| `sgKicker` | hidden | Text above the homepage title |
| `sgHomeTitle` | site title | Homepage title |
| `sgReading` / `sgListening` / `sgWatching` / `sgPlaying` / `sgWriting` / `sgExploring` / `sgMotto` | hidden | Homepage status line |
| `sgSealImage` | `∴` | Homepage seal image |
| `sgDaysInCage` | `false` | Status line day counter — "Day N in the Cage", counted from the earliest post |
| `ShowFullTextinRSS` | `false` | Include full articles in RSS |
| `ShowAllPagesInArchive` | `false` | Include all pages in archives |
| `homePageSize` | all | Homepage posts per page |
| `sgSeriesFrom` | hidden | Series navigation: points to a curation page whose body list defines the reading order; `sgSeriesTab` sets the tab label |
| `math` / `mermaid` / `lightbox` | `false` | Opt-in per page (frontmatter) or site-wide: KaTeX math, Mermaid diagrams, image lightbox. Nothing loads on pages that don't ask. `$$…$$` works out of the box; for inline `\(…\)` also enable goldmark passthrough as in [exampleSite/hugo.toml](exampleSite/hugo.toml) |
| `ogAutoCard` | `false` | Build-time 1200×630 OG card (title + site name on paper, ∴ mark) for pages without any cover/image |
| `ogCardFont` | built-in Plex Serif | `resources.Get` path to a TTF for OG cards. The bundled Latin font cannot draw CJK — CJK sites should subset a TTF for their titles and point this at it |
| `analytics.*` | hidden | Third-party stats, production only: `analytics.plausible.domain`, `analytics.umami` (`src` + `id`), `analytics.goatcounter.code`, `analytics.fathom.site` |
| `llmsTxtIntro` | hidden | Optional one-paragraph introduction inside `llms.txt` |
### Agent-readable output (llms.txt)
Add `LLMSTXT` (an index of pages and posts) and optionally `LLMSFULL` (the
same header, then every post's full text) to the home outputs:
```toml
[outputs]
home = ["HTML", "RSS", "JSONFeed", "LLMSTXT", "LLMSFULL"]
```
The key pages section detects About / Archives / taxonomies / RSS
automatically; override `layouts/home.llmstxt.txt` to curate it.
Frequently used inherited options include `defaultTheme`, `ShowToc`,
`TocOpen`, `ShowCodeCopyButtons`, `ShowBreadCrumbs`, `ShowReadingTime`,
`ShowWordCount`, `ShowPostNavLinks`, `showRelated`, and `socialIcons`.
See [exampleSite/hugo.toml](exampleSite/hugo.toml) for a complete example.
## Fonts
Font subsets (optional — the theme ships Latin and works out of the box):
```bash
bash scripts/build-fonts.sh corpus # or latin / full
```
- `latin` — Latin only; the bootstrap subset already committed to the repo
(CJK text falls back to system fonts). This is the clean-checkout default.
- `corpus` — additionally scans the example site's own characters and subsets
a small SC corpus so the demo's CJK renders in real Plex (~30 KB). **Shell
script only** — `scripts/build-fonts.py` covers `latin`/`full` but not
`corpus`.
- `full` — official SC + JP split shards (for CJK/JP sites that want full
coverage; ~3 MB on a text-heavy page)
## Performance
Measured on the example site, minified build:
- Homepage: ~78 KB total — 16 KB HTML + 57 KB CSS + 5 KB inline JS, **zero external JavaScript**
- Optional, opt-in only: search script 18 KB (search page), KaTeX 332 KB (`math = true`), GLightbox 56 KB (`lightbox = true`)
- Fonts: the demo runs the `corpus` pipeline, so its CJK renders in real Plex — ~104 KB first visit on a text-heavy page (Latin subsets + a small SC corpus). A `latin`-only site is ~85 KB (CJK falls back to system fonts). Sites needing full CJK/JP coverage run `full` (~3 MB, one file cached site-wide, `font-display: swap` covers the wait)
- No frameworks, no jQuery, no runtime CDN dependencies
## Stability
The public contract — parameter names, `sg-*` classes, output formats, data
shapes, extension partials — is **frozen as of v0.9.0**: renames require a
deprecation window and removals wait for a major release. The full contract
and deprecation policy live in [docs/api.md](docs/api.md). Both install modes
(submodule and Hugo module) are exercised in CI.
## Translations
The 47 bundled languages are largely machine-completed. Fixes from native
speakers are very welcome — open an issue or a PR touching `i18n/*.yaml`
only; new keys land in `en` first and fall back everywhere else.
## License
MIT. See [LICENSE](LICENSE).
Based on PaperMod. Fonts: IBM Plex, SIL OFL 1.1. Icons: Phosphor Icons, MIT.
Search: Fuse.js, Apache-2.0. Math: KaTeX, MIT (vendored). Lightbox: glightbox,
MIT (vendored). Diagrams: Mermaid, MIT (loaded from a pinned CDN on pages that
ask for it).
Explore similar templates
Compare previews and descriptions within the same stack and category.

hugo-xmin
hugo-xmin is an extremely minimal Hugo theme written by Yihui Xie for template beginners. HTML and CSS total about 140 lines, with no external dependencies, and it uses the MIT license.
Hugo · Starter

hugo-theme-gallery
A Hugo Extended photo gallery theme that organizes images with Page Bundles, automatically generating album lists and gallery pages with a Justified layout and PhotoSwipe lightbox.
Hugo · Starter

reveal-hugo
reveal-hugo is a Hugo theme that converts Markdown content into Reveal.js-based HTML presentations. It supports slide separation with `---`, shortcodes for fragments, slides, sections, notes, Markdown, and MathJax, and organizes content as root or section presentations with order controlled by weight.
Hugo · Starter

anatole
Anatole is a minimalistic two-column Hugo theme ported from farbox-theme-Anatole, featuring dark mode, multilingual and RTL support, and optional portfolio, comments, analytics, KaTeX, and Mermaid integrations. It suits personal blogs, portfolios, or documentation sites built with Hugo.
Hugo · Starter

hugo-theme-diary
A Hugo diary-style theme ported from the Hexo theme Journal, with a grid homepage for essays and daily notes. It supports six languages, dark mode, table-of-contents scroll positioning, reading time, code highlighting, and configurable sidebar, fonts, and colors.
Hugo · Starter

risotto
risotto is a minimalist, responsive Hugo theme inspired by terminal ricing aesthetics. It uses semantic HTML and pure CSS with no JavaScript, and its layout relies on CSS Grid for native responsiveness without manual breakpoints.
Hugo · Starter
