The split announcement lists Markdown support in the DB version as open research — “treating each Markdown file as a single block” and “enabling reliable two-way sync with Markdown files” are named as the approaches being explored.
DB graphs solved real problems, but they left one thing behind: a text form of
your graph. Markdown export is readable but lossy; EDN export is lossless but
not something you’d read or edit. So today a DB graph can’t really be
git-versioned, diffed, reviewed, or safely edited by anything outside the app.
We’ve got a full, verified round trip working by introducing a middle ground with
GEML (an id-native, human-readable text
format), using only the official @logseq/cli tooling:
[Logseq DB]
└─ export-edn → readable .geml files (one per page)
└─ edit any block externally (git / scripts / agents)
└─ import-edn → [Logseq DB]
Coming from OG? The tree is laid out like your old vault — pages/<name>.geml, journals as journals/2025_02_20.geml, no database-dump filenames.
Passes logseq validate. Edits merge back in place by UUID — zero
duplicated blocks. A real exported block:
=== text {#aaaaaaaa-bbbb-4ccc-8ddd-eeeeeeeeeeee level=1}
hola, Logseq feels good with GEML!
===
Why this maps so cleanly
In Markdown, block identity (id::) is a fragile convention. In GEML it is
grammar, and Logseq DB’s model lines up almost 1:1:
| Logseq DB | GEML plain text | Status |
|---|---|---|
| Block UUID | {#uuid} on the block |
|
| Outline tree | flat blocks + level=N |
|
| Typed properties | carried losslessly in a companion metadata block | {key=val} attrs are the next step |
Block refs ((uuid)) |
[[#uuid]] checked references |
next step — one character away, then broken refs fail the build |
What this unlocks
Real git workflows: clean commits, readable diffs, version control
for your DB graph.
Agent & CLI tooling: read and write single blocks by UUID, app closed.
Data ownership: a plain-text escape hatch that stays yours.
Code & step-by-step demo: GitHub branch
Finally, we want to here real voice from you:
Would a plugin that does this be useful to you?
- Yes
- Maybe — depends on the features below
- No
Which features would matter to you? (pick any)
Continuous two-way sync (not just one-shot export/import)
Plain-text backup & data ownership
LLM / agent automation
Bulk text refactoring
Git versioning & diffs
Comments welcome — especially if you voted Maybe or No: what is missing?