Generate a dated Updates (blog) section for zensical sites as plain Markdown
Project description
zensical-updates
Generate a dated "Updates" (blog) section for zensical sites as plain Markdown. zensical ships no blog plugin, so this CLI runs as a pre-build step. It reads your post files and writes an index listing, per-year archives, and tag and category pages that zensical then builds.
How it works
Writers keep posts in a source directory (default updates/), one Markdown file
per post. Each post carries a date and optional categories/tags in
block-list front matter:
---
date: 2026-06-11
categories:
- weekly-update
tags:
- epf
---
# Hello world
The first paragraph becomes the listing excerpt.
zensical-updates build copies each post to docs/<base>/<slug>.md and writes
the generated section around it (the index, archive/, tags/, categories/).
A post at docs/updates/hello.md renders at /updates/hello/, and every
generated link points there. Run it before zensical:
zensical-updates build # writes docs/updates/
zensical build --clean --strict
The generated docs/<base>/ tree is build output. Gitignore it. The source tree
stays under version control, and the generator never edits it.
Install
Not on PyPI yet. Pin from git:
uv add "zensical-updates @ git+https://github.com/IvanAnishchuk/zensical-updates"
Configure
Settings live in zensical.toml under [project.extra.zensical_updates], a
namespace zensical ignores:
[project.extra.zensical_updates]
base = "updates" # section dir under docs/ and the URL base
source = "updates" # where your post files live, outside docs/
emit_tags = true
emit_categories = true
emit_archive = true
Every key is optional. The defaults above apply when the table is absent.
CLI
zensical-updates build # generate the section into docs/<base>/
zensical-updates clean # remove the generated output
zensical-updates --help
Development
git clone https://github.com/IvanAnishchuk/zensical-updates.git
cd zensical-updates
uv sync
uv run pytest # tests + coverage (includes the zensical build)
uv run ruff check src/ tests/
uv run ruff format --check src/ tests/
uv run mypy
uv run pre-commit run --all-files
License
CC0-1.0. This is an original implementation inspired by the concept of
knu2xs/zensical-blog, written from this project's own analysis of how zensical
behaves.
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file zensical_updates-0.1.0.tar.gz.
File metadata
- Download URL: zensical_updates-0.1.0.tar.gz
- Upload date:
- Size: 19.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9868a6a8a83df49405d10dd5638c9a3904d677b1442e3c578260574a4899218a
|
|
| MD5 |
1b40d6950ce26da26a5c5385a9faae69
|
|
| BLAKE2b-256 |
1f9c99a6f62b8390d8152c39a2d9a5da3a81b9ade4864a5c1ac6eac1bfa8581c
|
Provenance
The following attestation bundles were made for zensical_updates-0.1.0.tar.gz:
Publisher:
release.yml on IvanAnishchuk/zensical-updates
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
zensical_updates-0.1.0.tar.gz -
Subject digest:
9868a6a8a83df49405d10dd5638c9a3904d677b1442e3c578260574a4899218a - Sigstore transparency entry: 1842860159
- Sigstore integration time:
-
Permalink:
IvanAnishchuk/zensical-updates@c96d418921a475e821ba8672ce2bbbe4de923136 -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/IvanAnishchuk
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@c96d418921a475e821ba8672ce2bbbe4de923136 -
Trigger Event:
push
-
Statement type:
File details
Details for the file zensical_updates-0.1.0-py3-none-any.whl.
File metadata
- Download URL: zensical_updates-0.1.0-py3-none-any.whl
- Upload date:
- Size: 14.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d4255701f6e30fccce9a4b79159b7787495e14ea346312117b973ed0aa331b43
|
|
| MD5 |
79211ab44d03b835a6bd39436bd23a07
|
|
| BLAKE2b-256 |
34524596e2f532b53604b918e5cd50ab1f8ec449ee076a70d6f8eaaa26a5ff4a
|
Provenance
The following attestation bundles were made for zensical_updates-0.1.0-py3-none-any.whl:
Publisher:
release.yml on IvanAnishchuk/zensical-updates
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
zensical_updates-0.1.0-py3-none-any.whl -
Subject digest:
d4255701f6e30fccce9a4b79159b7787495e14ea346312117b973ed0aa331b43 - Sigstore transparency entry: 1842860212
- Sigstore integration time:
-
Permalink:
IvanAnishchuk/zensical-updates@c96d418921a475e821ba8672ce2bbbe4de923136 -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/IvanAnishchuk
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@c96d418921a475e821ba8672ce2bbbe4de923136 -
Trigger Event:
push
-
Statement type: