Kirby
The Orimora Sync Kirby plugin imports the published documents of a shared folder into Kirby pages, following the same browse-import (pull) pattern as the WordPress plugin: a read-only folder-share token authenticates read-only calls to Orimora, and you map each Orimora collection to a Kirby parent page + template. Orimora stays the source; the Kirby-specific knowledge (field format, escaping) lives in the plugin.
Orimora ──Pull-API (Bearer kb_…)──▶ Kirby plugin ──▶ Kirby pages (source) (adapter)How it works
Section titled “How it works”- In Orimora, share a collection (collection menu → “Connect to a service”, target
CMS) to mint a read-only, published-only token (
kb_…). - In Kirby, set the connection in
site/config/config.php— the token is a secret, so it lives in config, never in Panel-editable content:return ['orimora.sync.url' => 'https://wiki.example.com','orimora.sync.token' => 'kb_…','orimora.sync.routeKey' => '…random…', // optional: enables the cron route]; - In the Panel, open Orimora in the menu: load the shared collections, map each to a Kirby parent page + template + status, and Save mapping. The target parent pages and templates must already exist in your Kirby site.
- Hit Sync now — or run it headless. Each published document becomes a page under its mapped parent; a re-sync overwrites title + body of the pages it owns, and documents removed or unpublished in Orimora are set to unlisted (never deleted).
Headless sync (cron)
Section titled “Headless sync (cron)”Either the Kirby CLI command:
kirby orimora:syncor the secret-gated route (after setting orimora.sync.routeKey):
curl -fsS "https://your-site.example/orimora/sync?key=<routeKey>"Install (from source)
Section titled “Install (from source)”Clone the orimora-kirby-importer
repository into site/plugins/orimora-sync (or clone it elsewhere and symlink it there):
git clone https://github.com/Orimora-app/orimora-kirby-importer site/plugins/orimora-syncThe built Panel asset is committed, so it works as-is — no build or composer install needed to run it.
Security
Section titled “Security”- The token lives in
config.php, never in a Panel-editable content file — it stays out of backups and version control. The Panel only ever sees whether a connection is configured. - The trust boundary is outbound: the plugin only calls Orimora with the read-only, published-only token. It can neither write to Orimora nor expose drafts.
- Field-separator safety. Content is written through Kirby’s Page API, whose serializer
escapes the
----field separator automatically — a Markdown body containing----(thematic breaks, tables, Setext headings) can never inject foreign Kirby fields (the class of advisory GHSA-x5mr-p6v4-wp93). - Panel API routes are guarded by Kirby (an authenticated Panel user); the cron route by a timing-safe key comparison.
Source of truth (vs. WordPress)
Section titled “Source of truth (vs. WordPress)”Unlike the WordPress plugin — where the CMS owns slug/status/SEO — here Orimora owns title + body and a re-sync overwrites them. Treat imported Kirby pages as read-only mirrors and tell your editors so.
v1 limits (by design)
Section titled “v1 limits (by design)”- Flat tree — a folder’s documents land at one level under the parent (nesting is v2).
- Images stay as absolute URLs in the Markdown (local sideload is v2).
- Full pull each sync (not incremental) — this keeps orphan detection correct.
- One folder share, connection configured in
config.php(Panel-editable connection is v2).
See also
Section titled “See also”- WordPress — the same browse-import pattern for WordPress
- Static sites via Pull-API — pull a folder into any Markdown SSG
- REST API overview — the Pull-API contract