Wiki.js Publish Plan
Legacy - Superseded proposal. Reconciled on 2026-06-12. ADR-0015 establishes generated
site/index.htmlas the supported Chronicle reader. No Wiki.js synchronization implementation is approved by this document.
This document details the plan to automatically synchronize static markdown files from the local Git repository to the operational Wiki.js database.
1. Verified Facts
- Wiki.js Endpoint: The active internal endpoint is
https://qiserver-1.cerberus-sirius.ts.net:9448(Tailscale Serve route). - Public Domain:
https://wiki.qially.comexists but suffers from degraded tunnel routing (needs repair). - API Availability: Wiki.js exposes a GraphQL API for page creations, updates, and indexing.
2. Target Hierarchy
- This file is situated in:
docs/60_qiapps/qiaccess_start/wiki_publish_plan.md. - Interacts with system rebuild scripts in
docs/10_qicore/(e.g.rebuild.bat).
3. Actual Runtime / Storage Locations
- Sync script: Planned to run under
_QiAccess_Start/scripts/publish_wiki.pyor as an n8n workflow. - Source Files: Static markdown folders (
10_qicore,20_qinexus,30_qiarchive) underdocs/. - Target Database: PostgreSQL instances feeding the Wiki.js container on
qiserver.
4. Unknowns
- How Wiki.js GraphQL mutations handle page assets (images, pdfs) when referencing local relative directories.
- Best formatting style to map custom front-matter tags (YAML blocks) to Wiki.js tags.
5. Needs Cody Confirmation
- Do we write a custom python synchronization script using requests, or do we implement this as an n8n webhook workflow?
- How frequently should the sync run (e.g. on every Git push or hourly)?
6. Wiki.js-Ready Summary
Wiki.js Publish Plan establishes the requirements and architecture for importing markdown blueprint documents into Wiki.js. It details the GraphQL payload structures, path resolution logic, and edge proxy mappings required to publish governance, schemas, and operational checklists automatically.
7. Implementation Notes
- API Authentication: Requires a Wiki.js API Token with
write:pagespermission scope. - Path Translation:
- Local path
docs/10_qicore/10_governance/10_principles/_index.md - Maps to Wiki.js route
/qicore/governance/principles - Payload Structure:
- Query:
mutation ($title: String!, $content: String!, $path: String!) { pages { create(title: $title, content: $content, path: $path, description: "Synced doc", editor: "markdown", locale: "en") { page { id } } } }