MkDocs plugin for step-by-step assembly guides
Project description
zoduki
MkDocs plugin that turns assembly guides into step-by-step pages. Works with Material for MkDocs with no theme overrides required.
Each step shows one action at a time: images and thumbnails on the left, instructions on the right, with Previous/Next navigation pinned to the bottom of the viewport.
Install
In your MkDocs project:
uv add mkdocs-zoduki mkdocs-material
Add to mkdocs.yml:
plugins:
- search
- zoduki:
enabled_by_default: true
step_heading_level: 3
Run the site:
uv run mkdocs serve
Writing a guide
Structure your Markdown like this:
- The page title (
#or Setext) is the guide name shown in the breadcrumb bar. ##headings group steps into subsections in the left nav.###headings each become one step. Everything under a###(bullets, images, text) stays in that step.
# X Gantry Assembly
## Prepare back plate
### Install fasteners
* Insert 4x `m5-hex-lock-nut` into the pockets shown.

* Add a drop of `blue-loctite` to each pocket.
### Inspect alignment
* Verify the plate sits flush against the datum surface.
Images
Put images under the bullet they illustrate (indented under the list item). Images are moved to the left-side gallery for that step. The Next button cycles through all images in the current step before advancing to the next step.
Bullet colors
Bullets that contain an image get a colored box and matching image border automatically. Override with an inline note:
* Install the bracket {color=blue}

* Text-only note with no image gets a neutral box.
* Disable coloring explicitly {color=none}
Named colors: blue, green, orange, purple, red, teal, yellow, pink. Hex values like #3b82f6 also work.
Per-page control
Disable zoduki on a specific page with front matter:
---
zoduki: false
---
Or leave enabled_by_default: false in the plugin config and opt in per page:
---
zoduki: true
---
Options
| Option | Default | Description |
|---|---|---|
enabled_by_default |
false |
Apply zoduki to every page unless overridden |
page_meta_key |
zoduki |
Front matter key for per-page enable/disable |
step_heading_level |
3 |
Heading level that starts a new step (###) |
min_steps |
2 |
Minimum steps required before transforming a page |
Deep links
Each step gets a stable URL hash from its heading, e.g. #install-fasteners. The left nav links directly to steps and stays in sync with Previous/Next navigation.
Development
Clone the repo and install everything with uv:
git clone https://github.com/sphawes/zoduki.git
cd zoduki
uv sync
Project details
Release history Release notifications | RSS feed
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 mkdocs_zoduki-0.1.0.tar.gz.
File metadata
- Download URL: mkdocs_zoduki-0.1.0.tar.gz
- Upload date:
- Size: 37.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: uv/0.11.26 {"installer":{"name":"uv","version":"0.11.26","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
80ee41d2b55221bcd069ce6ab5a5ef5da158f7b4654ac345d600488b62697189
|
|
| MD5 |
6ff52be098e1574f127d6f5788149ce4
|
|
| BLAKE2b-256 |
dd222f3c46ce857e6ec3e4db880309e5ad8800a0b18cccc42b373d3590a435e6
|
File details
Details for the file mkdocs_zoduki-0.1.0-py3-none-any.whl.
File metadata
- Download URL: mkdocs_zoduki-0.1.0-py3-none-any.whl
- Upload date:
- Size: 15.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: uv/0.11.26 {"installer":{"name":"uv","version":"0.11.26","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
de75b4e254aa2ea5560e15965c8cb805d976604d42f7835a601d2fec61349817
|
|
| MD5 |
3e5982e39489604fcb70c012dfdbe8ad
|
|
| BLAKE2b-256 |
a138e9898841c394da3d065bc9e3cb0f864fc55072f2a90374d434b908ccfc1e
|