FYI Notes Developer Guide

Instructions for Creating .fyi Pages

This page is written for AI tools, scripts, and external automations that need to create FYI Notes `.fyi` files outside the FYI Notes app.

Goal

Create one complete `.fyi` file as valid JSON. A `.fyi` file has a top-level page id, a visible document section named `d`, and a paired blob/body section named `b`.

  • `d` stores visible note titles, labels, URLs, columns, order, and symbols.
  • `b` stores longer note body text for expandable notes.
  • Both sections must use matching note ids so FYI Notes can pair visible notes with body content.

Output Rules

  • Return only valid JSON when asked to create a `.fyi` file.
  • Do not wrap JSON in Markdown and do not include comments or trailing commas.
  • Use unique integer ids. Epoch milliseconds are preferred.
  • Set page `v` to `18`, pub `v` to `4`, and note `v` to `12`.
  • Set `d.uDocs.meta.typ` to `"d"` and `b.uDocs.meta.typ` to `"b"`.
  • Set `uDocs.meta.cat` and `uDocs.pub.cat` to `"General"` unless the app provides another approved category.
  • Set every note `alrm` to `0` unless the user explicitly asks for an alarm.

Safety Rules

  • Use safe, plain text whenever possible.
  • Do not include executable JavaScript, event handlers, script tags, iframes, embedded forms, or suspicious HTML.
  • Do not invent fake URLs. If a URL cannot be verified, omit it or mark it as needing verification in plain text.
  • If link checking is available, include only URLs that do not return `404` and whose response does not contain `404 - Page not found`.

Page Skeleton

{
  "id": 1777777777000,
  "d": {
    "uDocs": {
      "meta": {
        "id": 1777777777000,
        "name": "Page Title",
        "ty": "000000",
        "auth": "",
        "updt": 1777777777000,
        "vu": "",
        "clck": 0,
        "gclk": 0,
        "col": "3",
        "cols": "true",
        "cat": "General",
        "skey": "outside-model-1777777777000",
        "v": 18,
        "s": 0,
        "u": "",
        "u1": "",
        "u2": "",
        "u3": "",
        "fav": 0,
        "typ": "d"
      },
      "coltxt": [["0","1","2","3","4","5","6","7","8","9","10","11","12"], [], [], [], [], [], [], [], [], [], [], [], []],
      "zdata": [],
      "pub": {
        "v": 4,
        "title": "Page Title",
        "cat": "General",
        "id": 1777777777000,
        "wType": "",
        "signature": "",
        "pw": "",
        "sURL1": "",
        "sURL2": "",
        "sURL3": "",
        "sURL4": "",
        "pURL": "",
        "wURL": "",
        "cURL": "",
        "mURL": "",
        "Notes": ""
      },
      "tabs": ["", "", "", "", "", "", "", "", "", "", "", "", ""],
      "colb": [1, 1, 1, "eng"]
    }
  },
  "b": {
    "uDocs": {
      "meta": "deep-copy d.uDocs.meta, then set typ to b",
      "coltxt": "same as d.uDocs.coltxt",
      "zdata": [],
      "pub": "deep-copy d.uDocs.pub",
      "tabs": ["", "", "", "", "", "", "", "", "", "", "", "", ""],
      "colb": [1, 1, 1, "eng"]
    }
  }
}

Note Skeleton

{
  "id": 1777777777001,
  "col": 1,
  "css": "",
  "ty": "1",
  "t0": "Visible note title",
  "t1": "",
  "t2": "",
  "t3": "",
  "t4": "",
  "t5": "",
  "t6": "",
  "ordr": 100,
  "updt": 1777777777000,
  "bdt": 0,
  "clck": 0,
  "gclk": 0,
  "v": 12,
  "s": 0,
  "u": 0,
  "pre1": 0,
  "pre2": 2,
  "grp": 0,
  "lvl": 0,
  "pop": 0,
  "tab": 0,
  "pa": 0,
  "alrm": 0
}

For small or large notes, place the visible title in `d.uDocs.zdata[].t0` and the longer body in the matching `b.uDocs.zdata[].t1`. Use `ordr` values spaced by 100.

Note Types

`ty`Meaning
`"1"`Text note
`"2"`Small expandable note
`"3"`Large note
`"4"`URL-style item
`"5"`Horizontal rule
`"6"`Phone note
`"7"`Section header
`"8"`Email note
`"9"`Block note
`"10"`Container block note

Symbol Indexes

`pre2`Meaning
`0`No symbol
`1`Arrow / marker
`2`Bullet point
`3`Empty checkbox / todo
`4`Checked checkbox / completed
`5`Star / important
`6`Warning / caution
`7`Urgent marker
`8`Heart / favorite
`9`Flag / milestone

Suggested System Prompt

You create FYI Notes .fyi pages. Return only valid JSON. Use the FYI Notes .fyi schema exactly: top-level id, visible document d, and blob/body document b. Use unique epoch-millisecond-style ids. Use page meta version 18, note version 12, pub version 4, uDocs.meta.cat: "General", uDocs.pub.cat: "General", and note alrm: 0 unless alarms are requested. Use ty: "7" for section headers, ty: "1" for normal text, ty: "2" for expandable small notes, and ty: "3" for long notes. Use pre2 symbols: 0 none, 1 arrow, 2 bullet, 3 todo checkbox, 4 checked checkbox, 5 star, 6 warning, 7 urgent, 8 heart, 9 flag. Put visible titles in d.uDocs.zdata[].t0; put longer note body text in the matching b.uDocs.zdata[].t1; put URLs in d.uDocs.zdata[].t1 only when valid. Keep the JSON safe: no scripts, event handlers, iframes, forms, or invented links.

Validation Checklist

  • JSON parses successfully.
  • Top-level keys include `id`, `d`, and `b`.
  • `d.uDocs` and `b.uDocs` both exist.
  • `d.uDocs.meta.typ` is `"d"` and `b.uDocs.meta.typ` is `"b"`.
  • Both `zdata` arrays exist and use matching ids.
  • Every note has `id`, `col`, `ty`, `t0`, `ordr`, `updt`, `v`, `pre2`, `pa`, and `alrm`.
  • `pre2` is an integer from `0` through `9`.
  • `ordr` values are sorted and spaced.
  • No note contains unsafe HTML or executable code.
  • Any included URL has been verified when link checking is available.

Full Reference

The full Markdown reference is available in the project as `fyi-page-model-instructions.md`.

FYI
This is a custom alert-style popup.
This is a custom alert-style popup.