Metadata
Start a line with $ to attach metadata to a note: tags, a source link, a due date, a priority, and more. Mudlark collects every $ line and shows them together as a block at the top of the rendered pane. On export, the keys it recognizes route to each destination’s native fields.
In the capture bar, typing the prefix and a space shows a faint key=value hint, so the shape is there without you having to remember it.
Two shapes
A metadata line is one of two things. With an = sign it is a key/value pair. Without one it is a free-form note.
$ tags=lisbon, trip ← a pair: key “tags”, value “lisbon, trip”
$ remember the shipping address ← no equals sign, so a free-form note kept as written
The first = splits the key from the value, so a value can contain its own = (a URL with a query string stays intact). Both sides are trimmed. If the same key appears twice, the last line wins.
Metadata lines do not form blocks. Each $ stands on its own line, and a doubled $$ is just plain text. Write as many $ lines as you need, anywhere in the note.
Reserved keys
Most keys carry meaning beyond a plain row. Mudlark gives the keys below a typed value, a styled chip, and a known slot at each export destination. Key names and aliases are case-insensitive. An alias behaves exactly like its canonical key.
| Key | Value | What it does |
|---|---|---|
tags | comma list | Note tags. Render as pills, match in the note browser filter, and flow into export frontmatter or native tag fields. |
aliases | comma list | Alternate names for the note. Each one is searched alongside the title, so a note titled “Roadmap” also turns up under an alias you give it. |
source | URL or text | Where the note came from. Clickable in the chip when it is an http(s) link, plain text otherwise. |
status | text | A short state like active, blocked, or done. Renders with a colored dot. |
priority | p1 / p2 / p3 | Three levels. Also accepts 1 / 2 / 3 and high / medium / low. Drives the sort order inside a section in the note browser. |
due | date | Scheduled work date. Accepts an ISO date, an ISO datetime, or today / tomorrow / yesterday. Unrecognized text is kept as typed. |
archived | true / false | Hides the note from the browser by default. A toggle reveals archived notes. Accepts true, yes, 1, on and their negatives. |
whenalias: start | date | When to start working on this, distinct from the due date. |
deadline | date | A hard deadline, kept separate from due. Some task apps carry both at once. |
duration | duration | Estimated time, written as 30m, 1h 30min, or 2d. |
remindalias: alarm | offset or date | An alarm. Accepts an absolute time or a signed offset from the due date, like -1h or +30m. |
repeat | recurrence | A recurrence rule: daily, weekly, monthly, yearly, with optional every <n> and until <date>. |
location | text | A place. Free text, no geocoding. |
url | URL | A link tied to the note. Clickable in the chip when it is http(s). |
imagealias: cover | URL or path | A cover image for the note. |
icon | emoji or URL | A note icon, written as an emoji or an image link. |
description | text | A short summary of the note. |
Dates keep what you typed even when they cannot be parsed, so $ due=next Tuesday survives a round-trip while a clean ISO date also gets a real calendar value. A few examples:
$ priority=p1 ← top priority, sorts to the front
$ due=2026-05-15 ← a scheduled date
$ remind=-1h ← alarm one hour before the due date
$ repeat=every monday ← a weekly recurrence
How it renders
The metadata block sits at the top of the rendered pane and reads as part of the document rather than a floating card. A chevron on the title row hides or shows it. The block always shows when the note was created, then the metadata you wrote.
Reserved keys render as labeled rows in a consistent order, each with its own treatment: tags become pills, a source or url shows as a clickable link, a due date reads as “Due May 15, 2026”, priority and status carry a tint, archived dims the block. Keys that are not reserved render as plain key: value rows in the order you wrote them, and free-form lines render verbatim below.
Free-form notes
A $ line without an = is a free-form note. It shows in the metadata block as you wrote it, which makes it a good place for a reminder to yourself that belongs with the note but is not a real field. On export, free-form lines are kept only where the destination has room for them (Obsidian-style frontmatter, a Notion callout) and dropped elsewhere.
Any other key
You are not limited to the reserved set. Any key=value pair round-trips through the note and renders as a generic row. On export it is written wherever the destination carries arbitrary pairs, such as Obsidian, iA Writer, a custom folder, or a Notion page. Where a destination has nowhere to put it, the key shows up in that export’s drop summary so you can see what did not land.
$ project=Q3 launch ← an arbitrary pair, kept as a generic row
Destination-scoped pairs
Put a destination’s short name right after the prefix to send a pair to that destination only. The scope is matched against the destination name, so $bear, $obsidian, $ia, and $craft each target one app.
$bear pin=true
$obsidian publish=true
$ia author=Jane Doe
$craft daily=true
A scoped pair emits only at its destination. An unknown scope round-trips through the note but emits nowhere. The metadata block groups scoped pairs under their destination name so you can see which app will receive them. When a scoped pair and a universal pair set the same key, the scoped one wins at its destination and the universal one applies everywhere else.
On export
Each destination has its own idea of where a key belongs: a Reminders alarm, a Things deadline, a Notion date column, a YAML key, a URL parameter. The export guide has the full per-destination map, plus how tags, dates, and the drop summary behave at each one.