Scribpy
Scribpy assembles a directory of small Markdown notes into publishable output. It is for writers who want source files that stay easy to edit while manifests control their order. Scribpy validates the collection, rewrites cross-file links, renders diagrams, collects images, and can produce one Markdown file, one standalone HTML page, or a MkDocs input tree.
Scribpy is not a Markdown editor, web CMS, PDF renderer, or hosting service. It does not deploy a site. Network-backed diagram providers also remain external services.
Why a separate assembler at all
Most Markdown documentation tools force a choice: keep pages small and
independently navigable (a static-site generator like plain MkDocs), or
merge everything into one file for a single deliverable (manual copy-paste,
or a pandoc-style concatenation script). Scribpy keeps the source split
into small, independently editable files — the unit a writer actually
edits and reviews — while still producing whichever shape a reader needs:
one merged Markdown file, one standalone HTML page, or a page-per-file
MkDocs input tree, all from the same source and the same scribpy.yml
manifests. You write once; you choose the output shape per audience.
Documentation map
This site follows a fixed path, and each section builds on the last:
- Architecture — the domain model and pipeline design, useful before extending Scribpy or reasoning about its guarantees.
- Organizing a notes project — how to lay out a project on disk: source rules, links, manifests.
- Using the CLI — the
scribpycommand, for everyday authoring workflows and CI. - Using the Python API — the
scribpypackage, for programmatic workflows and custom rules/renderers. - Guides — task-oriented recipes and troubleshooting once you already know the concepts.
- Reference — exhaustive, example-backed lookup tables for every command and every public API name.
If you are new to Scribpy, read Installation and Core concepts next, then follow the smallest useful example below.
Smallest useful example
handbook/
├── scribpy.yml
├── intro.md
└── install.md
project:
title: Team Handbook
order: [intro.md, install.md]
# Welcome
Continue with [installation](install.md).
# Installation
Run `uv sync`.
scribpy validate handbook
scribpy build handbook build/handbook.md
The result is one document headed Team Handbook, followed by the shifted
source headings. The link to install.md becomes a link to the assembled
heading anchor.
Where to go next
- Follow the complete CLI tutorial to build Markdown, HTML, and MkDocs outputs step by step.
- Follow the complete Python tutorial for an executable application workflow.
- Read links and images before moving assets or pages.
- Use the CLI reference when you only need exact arguments and defaults.