SliteML is Slite's hybrid format combining standard Markdown with XML tags. It gives humans, APIs, and AI models a compact, readable syntax to create and edit rich documents without losing structure.
Why SliteML?
Standard Markdown is excellent for simple text formatting, but it cannot natively represent modern collaborative workspace features:
- Rich block containers : Callouts, collapsible sections, and multi-column layouts.
- Structured databases : In-document tables with typed columns (selects, dates, user references).
- Workspace integrations : Interactive doc cards (
<note-link>), user mentions (<mention>), and comment anchors (<comment>). - Granular block addressing : Stable block IDs that enable surgical range replacements and targeted edits without rewriting the entire document.
While JSON document ASTs (like ProseMirror) are too verbose and token-heavy for AI workflows, and raw HTML is messy, SliteML provides the optimal hybrid: clean Markdown for natural text flow and lightweight XML tags for structural components.
Block Identity & Addressing
Slite documents are composed of blocks. When reading a document, blocks carry trailing block ID annotations:
Welcome to the team! {/* #block-abc123 */}
- Reading : Use block IDs to anchor targeted modifications (
modifyRange,appendBlocks,removeBlocks). - Writing : Omit block IDs when inserting new content — Slite automatically assigns IDs on save.
Full SliteML Reference
Structural & Container Blocks
<callout><callout type="note|tip|warning|caution">Highlighted callout box. Markdown works inside.
<collapsible><collapsible>\nHeader text\nBody...\n</collapsible>Expandable toggle accordion. First line is header title.
<columns><columns>\n<column width="50">...</column>\n<column width="50">...</column>\n</columns>Multi-column layout with percentage widths.
<code-block><code-block language="typescript"> <code-line>...</code-line> </code-block>Syntax-highlighted code block with literal text lines.
<database><database version="2" title="...">\n<columns>...</columns>\n<records>...</records>\n</database>In-document structured table/database with typed columns.
<separator></separator><separator></separator>Horizontal visual divider line.
<note-link><note-link note-id="..." title="...">text</note-link>Rich Slite doc preview card with status and title. Always use this instead of
<a> for workspace docs.<a><a url="https://...">text</a>External hyperlink (non-Slite URLs).
<mention><mention user-id="..." name="...">@Name</mention>Interactive user mention tag.
<comment><comment id="threadId">text</comment>Anchors inline comment threads. Must be preserved during edits.
<mark><mark color="yellow|blue|green|pink|purple">text</mark>Background highlight color.
<colored><colored color="red|blue|grey|...">text</colored>Foreground text color.
<u><u>underlined text</u>Underline text styling.
text<column key="col" name="Col" type="text"></column><field columnKey="col"><content>Markdown / rich text</content></field>select / multi-select<column key="st" name="Status" type="select">\n <option key="done" label="Done" bgColor="#BBF7D0"></option>\n</column><field columnKey="st" options="done"></field> (comma-separated for multi-select)date<column key="dt" name="Date" type="date"></column><field columnKey="dt">YYYY-MM-DD</field>number<column key="num" name="Count" type="number"></column><field columnKey="num">42</field>todo<column key="chk" name="Done?" type="todo"></column><field columnKey="chk">true</field> or falselink<column key="lk" name="URL" type="link"></column><field columnKey="lk">https://...</field>users<column key="usr" name="Assignee" type="users"></column><field columnKey="usr">[{"id":"...","displayName":"..."}]</field>notes<column key="ref" name="Related Doc" type="notes"></column><field columnKey="ref">[{"id":"...","title":"..."}]</field>