Skip to content

Importing from Standard Notes

When to use

When a user imports a Standard Notes backup. It must be the decrypted JSON (the encrypted backup is unreadable ciphertext). You own it end to end. Read limestone-vault-conventions, working-with-collections, and importing-from-obsidian first.

Run the import (one tool call)

Call limestone_import_notebook(path, collection_name) with the decrypted .json. Returns the usual summary + unconverted list.

How the import works (what the tool does)

The backup is one JSON with an items array of Notes, Tags, and components:

Standard Notes Limestone
each Note item a record (title = content.title)
content.text the note body
tags (each Tag lists its Notes' UUIDs) real note tags (resolved via a two-pass join)
created_at / updated_at Created / Updated date properties

Trashed notes are skipped.

Finalizing (your job)

The importing-from-obsidian playbook applies. Standard-Notes-specific:

  1. Editor formats vary. Plaintext/Markdown notes import clean; legacy Rich Text notes store HTML and the Super editor stores a JSON/HTML document — both land in the body verbatim. Convert the important ones to Markdown.
  2. Nested tags (Standard Notes uses parent.child dotted titles) import as flat tag names — re-nest if the user relies on hierarchy.
  3. File attachments aren't in a notes backup (they're separate encrypted blobs); re-attach any the user needs with attaching-a-file.

Evolving this skill

If a backup shape recurs badly, work out the mapping and propose an update here or to importers/standard_notes.py. Keep the two in sync.