askill
creating-zola-static-sites

creating-zola-static-sitesSafety 95Repository

Build static sites with the Zola generator (Rust-based SSG). Handles project initialization, config.toml configuration, Tera templates, Markdown content (sections via _index.md, pages via *.md), taxonomies, image processing, and deployment. Use for Zola project setup, Tera templating, _index.md structure, RSS/Atom feeds, syntax highlighting, or deployment to Netlify/Cloudflare/GitHub Pages/Vercel/Firebase. Also covers Zola+Astro hybrid architectures.

1 stars
1.2k downloads
Updated 1/17/2026

Package Files

Loading files...
SKILL.md

Creating Zola Static Sites

Single-binary static site generator. Built-in Sass, image processing, Tera templating.

Quick Start

New Project:
- [ ] zola init my-site && cd my-site
- [ ] Edit config.toml: set base_url
- [ ] IF using theme: skip next step (theme provides templates)
- [ ] IF no theme: copy templates from skill assets/
- [ ] zola serve → http://127.0.0.1:1111 loads
- [ ] zola check → exit code 0

Commands

CommandPurposeVerify Success
zola initCreate projectls config.toml exists
zola serveDev server :1111Browser loads site
zola buildOutput to public/ls public/index.html exists
zola checkValidate linksExit 0, no errors printed

Core: Sections vs Pages

_ prefix = section (listing); no prefix = page (content):

FilenameTypeTemplateExample URL
_index.mdsectionsection.html/blog/ (listing)
index.mdpagepage.html/about/ (with assets)
post.mdpagepage.html/blog/post/
content/
├── _index.md        # section: /
├── about.md         # page: /about/
└── blog/
    ├── _index.md    # section: /blog/
    └── post.md      # page: /blog/post/

Frontmatter

section (_index.md):

+++
title = "Blog"
sort_by = "date"        # date|title|weight|none
paginate_by = 10
+++

page (*.md):

+++
title = "My Post"
date = 2024-01-15       # NO QUOTES or sorting breaks
[taxonomies]
tags = ["rust"]
+++

Internal Links

Build-validated with @/ prefix:

[About](@/about.md)
[Blog](@/blog/_index.md)

Workflows

Create Blog

Blog Setup:
- [ ] Create content/blog/_index.md with sort_by="date"
- [ ] Create post: content/blog/2024-01-15-hello.md
- [ ] IF multilingual: add blog/_index.fr.md per language
- [ ] zola serve → /blog/ shows listing (empty if no posts yet)
- [ ] zola serve → /blog/hello/ shows post
- [ ] IF pagination: add more posts than paginate_by to test
- [ ] zola check → passes

Add Taxonomies

Taxonomy Setup:
- [ ] config.toml: taxonomies = [{name = "tags", feed = true}]
- [ ] Page frontmatter: [taxonomies] tags = ["value"]
- [ ] IF need categories: add {name = "categories"} to array
- [ ] IF term has spaces: use slugified URL (/tags/my-tag/)
- [ ] zola serve → /tags/ lists tags
- [ ] zola serve → /tags/rust/ shows posts

Deploy

Production Deploy:
- [ ] zola check → passes (use --skip-external-links if slow)
- [ ] zola build → no errors
- [ ] ls public/index.html → exists
- [ ] IF feeds enabled: ls public/atom.xml → exists

Reference Files

TaskReferenceLoad When User Asks About
Configconfig-reference.mdFeeds, taxonomies, highlighting, search, link checker
Templatestera-templates.mdFilters, loops, variables, macros, shortcodes
Contentcontent-organization.md_index.md vs index.md, frontmatter, multilingual
Deploydeployment-guides.mdNetlify, Cloudflare, GitHub Actions, Vercel, Firebase
Hybridastro-integration.mdZola+Astro, Firebase export, shared navigation

Assets

Copy from skill assets/ directory:

AssetUse For
templates/base.htmlBase layout
templates/section.htmlListings with pagination
templates/page.htmlArticles with TOC
templates/404.htmlError page
templates/shortcodes/youtube.html, figure.html
config-templates/blog.tomlBlog preset
config-templates/docs.tomlDocs preset

Common Mistakes

WrongRightWhy
date = "2024-01-15"date = 2024-01-15Quoted dates are strings, break sorting
[About](about.md)[About](@/about.md)Missing @/ means no build validation
index.md in blog/_index.md in blog/Without _ it's a page, not a section
templates/blog.htmltemplates/section.htmlZola looks for section.html by default

Troubleshooting

ErrorFixVerify
Template not foundCheck spelling; ensure templates/ existsls templates/*.html shows files
Dates not sortingUse date = 2024-01-15 (no quotes)Posts appear in date order
Broken @/ linksPath from content/, include .md extensionzola check passes
Slow checkSkip external: zola check --skip-external-linksCompletes in <10s

Debug: {{ __tera_context }} in template shows all variables.

Verbose: RUST_LOG=zola=info zola build

When Not to Use

  • Other SSGs: Hugo, Jekyll, Eleventy use different syntax
  • General Markdown: Questions without Zola context
  • Pure Astro: Projects without Zola integration

Install

Download ZIP
Requires askill CLI v1.0+

AI Quality Score

96/100Analyzed 2/12/2026

An exceptionally well-structured and comprehensive guide for Zola SSG, featuring actionable workflows, clear technical references, and troubleshooting. It provides high-density technical value for both beginners and advanced users.

95
100
90
98
95

Metadata

Licenseunknown
Version-
Updated1/17/2026
PublisherSpillwaveSolutions

Tags

apici-cdgithubgithub-actionstesting