Blocks reference

A page is a title plus a list of blocks. There are 8 block types.

Your AI tool sends blocks as JSON through the MCP server. This page shows what each block takes.

The title is the H1

  • title is a field of the page. It is not a block.
  • It is the one H1 of the page.
  • A page has exactly one H1. So there is no H1 block.
  • Blocks start at H2 (see heading).

Markdown rich text

Some fields are rich text. They use inline Markdown only:

You writeYou get
**bold**bold
*italic*italic
`code`code
[Flocon AI](https://flocon-ai.com)a link

Not allowed in rich text:

  • Raw HTML. It is never stored.
  • Headings, lists and images. Use blocks for those.

Rich text fields: content of description and text, items of list, answer of faq.

Plain text fields (no Markdown): content of heading, table headers and rows.

description

The answer-first intro. Put it first. AI search tools often quote it.

  • content: rich text.
{
  "type": "description",
  "content": "Notion costs **$10 per user per month**. Obsidian is free for personal use."
}

text

A paragraph.

  • content: rich text.
{
  "type": "text",
  "content": "Obsidian stores notes as local `.md` files. Read the [docs](https://help.obsidian.md)."
}

heading

A section title.

  • level: 2 or 3.
  • content: plain text.
{ "type": "heading", "level": 2, "content": "Pricing" }

list

A bullet list or a numbered list.

  • ordered: true for numbers, false for bullets.
  • items: a list of rich text.
{
  "type": "list",
  "ordered": true,
  "items": ["Export your notes", "Import them in **Obsidian**", "Check your links"]
}

faq

Questions and answers. Flocon AI also builds the FAQPage JSON-LD from these blocks. You do nothing for that.

  • items: a list of question (plain text) and answer (rich text).
{
  "type": "faq",
  "items": [
    {
      "question": "Is Obsidian free?",
      "answer": "Yes, for personal use. See the [pricing page](https://obsidian.md/pricing)."
    }
  ]
}

table

A table. Good for comparisons.

  • headers: optional list of plain text.
  • rows: a list of rows. Each row is a list of plain text cells.
{
  "type": "table",
  "headers": ["", "Notion", "Obsidian"],
  "rows": [
    ["Price", "$10 / user / month", "Free"],
    ["Storage", "Cloud", "Local files"]
  ]
}

Links to other pages of your website.

  • paths: a list of page paths. Same locale as the page.
  • Paths are not checked when you save. You must give correct paths.
  • Pages that are not published are dropped when the page is shown. A draft or a typo shows nothing.
  • Each link shows the title of the page.
{ "type": "related", "paths": ["/vs/notion-vs-obsidian", "/alternatives/notion"] }

space

Empty room between two blocks. It has no field.

{ "type": "space" }

Full example

{
  "title": "Notion vs Obsidian",
  "blocks": [
    { "type": "description", "content": "Notion is **online and shared**. Obsidian is **local and free**." },
    { "type": "heading", "level": 2, "content": "Quick comparison" },
    {
      "type": "table",
      "headers": ["", "Notion", "Obsidian"],
      "rows": [["Price", "$10 / user / month", "Free"]]
    },
    { "type": "space" },
    { "type": "related", "paths": ["/alternatives/notion"] }
  ]
}

Limits

  • Up to 100 blocks per page.
  • About 50 KB per page.
  • blocks is replaced as a whole when your AI updates a page.

See also Writing good pages.

Updated