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.