GetOutline sync

I use Outline to collaborate with my team but really, I miss silverbullet flexibilty. That's why:

Outline-SilverBullet Sync

Space Lua plug that syncs a SilverBullet folder with GetOutline collections.

What it does

  • **Both directions** — pull (Outline → SB), push (SB → Outline), or full bidirectional sync with conflict detection.
  • **All files or one file** — sync the whole folder or just the current page.
  • **Images** — pulls Outline attachments into the space; pushes local images back to Outline (best-effort, see caveat).
  • **API key** — read from `config` (see CONFIG below).
  • **Father folder** — every synced page lives under one configurable SB folder.
  • **Collections** — choose which Outline collections to sync (or all).

Mapping & change detection

Each synced page stores sync state in its frontmatter — do not edit by hand:

  • `outlineId` — Outline document id
  • `outlineCollectionId` — owning collection
  • `outlineRev` — Outline `updatedAt` at last sync (remote-change detector)
  • `outlineHash` — hash of local body at last sync (local-change detector)

Page path = `//`. A new page placed under `//…`
(no `outlineId`) is created in that collection on push.

Conflict rule (bidirectional)

  • remote changed only → pull
  • local changed only → push
  • both changed → **no overwrite**; remote copy saved as `… (conflict )` + notification
  • neither → skip

Commands (Cmd/Ctrl-Shift-P → "Outline:")

  • **Outline: Sync All** — bidirectional, whole folder
  • **Outline: Pull All** — Outline → SB only
  • **Outline: Push All** — SB → Outline only
  • **Outline: Sync Current Page** — bidirectional, just this page

Image push caveat

Pull (download) is reliable. Push uploads a multipart body through the server proxy; binary
fidelity depends on your Outline storage backend. If an upload fails the local link is kept and
a warning is flashed — text sync still completes.

2 Likes