Dogfooding Showcase: Building & Publishing This Manual with qwiki-builder
This manual (home.qwiki.wiki/manual/) is itself a live demonstration of eating our own dogfood: every category, nested folder, Markdown chapter, Mermaid diagram, and UI screenshot you are reading is managed and published by qwiki-builder against Standalone Qwiki's api/publish.php.
End-to-End qwiki-builder Pipeline
flowchart LR
Init["1. qwiki-builder init . --template blank"] --> Author["2. Author docs/ & docs/assets/images/"]
Author --> Validate["3. qwiki-builder validate"]
Validate -->|"Zero errors/warnings"| DryRun["4. qwiki-builder publish --dry-run"]
DryRun --> Publish["5. qwiki-builder publish"]
Publish --> Categories["Create top & nested categories (parentId)"]
Publish --> Assets["Upload PNG/SVG/MP4 & rewrite paths"]
Publish --> Chapters["Upsert chapters with stable slugs"]
How This Manual Is Structured (qwiki-project.json)
The project manifest declares top-level categories (manual-welcome, manual-user-guide, manual-admin-guide, manual-technical-reference, manual-ai-automation), nested sub-categories via "parent", and all 37 chapters:
{
"name": "Standalone Qwiki Manual",
"slug": "manual",
"docs_dir": "docs",
"assets_dir": "docs/assets",
"default_status": "published",
"categories": [
{ "id": "manual-user-guide", "title": "User Guide" },
{
"id": "manual-user-authoring",
"title": "Authoring & Content Formats",
"parent": "manual-user-guide"
}
],
"documents": [
{
"file": "02-user-guide/authoring/01-markdown-and-editor.md",
"category": "manual-user-authoring",
"slug": "user-markdown-and-editor",
"title": "Writing Markdown & Using the Inline Editor",
"type": "markdown",
"status": "published"
}
]
}
Step-by-Step Workflow Commands
- Scaffold cleanly:
qwiki-builder init standalone-qwiki-user-manual --template blank --name "Standalone Qwiki Manual" - Validate before touching the server:
qwiki-builder validateVerifies every file exists, slugs are unique, categories are declared, local screenshots/videos exist on disk, and Mermaid labels with parentheses are properly quoted.
- Configure target sub-wiki credentials:
qwiki-builder config --url https://home.qwiki.wiki/manual --key qwk_llm_your_token - Preview and publish:
qwiki-builder publish --dry-run qwiki-builder publishDuring
publish,qwiki-builderautomatically:- Calls
create_category(passingparentIdfor nested folders). - Uploads screenshots from
docs/assets/images/viaupload_assetand rewrites relative Markdown paths (../assets/images/...) to live remote URLs. - Rewrites relative
.mdcross-links into canonical<category>/<slug>links. - Upserts every chapter in place (
update_doc) while preserving slugs and share keys.
- Calls
Ongoing Maintenance Commands
| Command | Purpose |
|---|---|
qwiki-builder update <file-or-slug> |
Update a single edited chapter in place without re-publishing the whole manual |
qwiki-builder list |
Inspect remote chapters and spot duplicate titles or suffixed slugs |
qwiki-builder dedup |
Clean up accidental duplicate remote chapters safely |
qwiki-builder reload |
Purge canonical project chapters and perform a clean reload from local Markdown |
Because qwiki-builder uses only the Python 3.8+ Standard Library (zero external pip dependencies), you can run qwiki-builder validate and qwiki-builder publish directly inside GitHub Actions or any CI runner using QWIKI_URL and QWIKI_API_KEY environment variables.