Node blocks
A Node file is an automation drawn as blocks: notes flow from left to right — from where they come from, through filters, to what happens to them. Here is every block and how they connect. Bold is a name as it reads on screen. The rest of Voidless is in the Guide.
01 The shape of every automation
Source
Where notes come from, and when the automation runs: a note was saved, a time came, you ran a command.
Filter
Splits the notes in two: the ones that match go out of yes, the rest out of no. Optional, and any number in a row.
Action
What happens to the notes that reach it: moved, renamed, a field set, listed in a note…
The smallest automation is a source linked straight to an action. A filter only decides which notes go on.
02 Links
- Drag from a dot on the right of a block (an output) to the dot on the left of another (its input). A source has one output, notes; a filter has two, yes and no; an action has none — it's where notes end up (all but Create note, which passes the note it made on to the blocks that fill it).
- Which output you link matters. From yes go the notes that match the filter, from no the ones that don't. Linked from the wrong one, the action gets the opposite notes.
- Filters in a row mean “and”: Tag work yes → Date changed more than 30 days ago — notes tagged work untouched for over 30 days.
- Several links into one block mean “or”: notes from both reach it, each once.
- One output can feed several blocks: the same notes go to each of them.
- The number on an output is how many notes Run now would send through it right now. To remove a link, point at it and click its × (or select it and press Delete).
- Building a chain fast: select a block, then click the next one in the palette — it comes in after it, already linked. Or let a link go on the empty canvas: a short list of the blocks that take it opens there — type, Enter, and the block comes in linked.
/or a double click on the canvas opens it with every block. - Like any canvas: right-click a block, a link or the canvas for its commands;
⌘C/⌘X/⌘V/⌘Dcopy, cut, paste and duplicate blocks with the links between them (into another automation too); the arrows nudge the selected blocks;⌘Zselects what came back. - Getting around: drag on the empty canvas to select; two fingers, the middle button or Space + drag move the view;
⇧1fits all blocks on screen,⇧2the selected ones.
03 When it runs
- Off / On in the bar turns the automation on. A new one starts off, so a half-built one can't touch your notes.
- Then the sources start it on their own — each says at its foot when: On save and Made today two seconds after you stop typing, On schedule at its time, From ⌘P on a note you run it on (even when the automation is off).
- Run now runs it at once, on or off — a good way to try it. Then On save and On schedule pass on every note of their folder, Made today the ones made today, Ticked links every ticked link; an automation started only From ⌘P runs on a note, so Run now is off for it.
- More than 20 changes in one run → it asks first. To Trash asks every time.
- Every run can be undone: Undo in the notice, or Report → History. A run that touched one note names it in the notice (“Meeting” → Archive); in History a run opens up to its notes — what moved where, what changed. Report → Preview shows what Run now would do, note by note (status: done, +#project), before you run it.
04 Sources — where notes come from
Every source but Ticked links watches a folder (empty = the whole vault) and can leave folders out with Except.
The note you just saved, if it's in the folder.
Every note of the folder, once a day at the time set (HH:MM, empty = as soon as the app is open), on the days picked (none = every day).
A note made today, when it's saved — for setting new notes up.
A note you run the automation on: the open one from ⌘P, where each one with this block is listed by its name — Run “Inbox” on this note — or any note from its right-click menu in the sidebar. Works even when the automation is off.
The notes linked from ticked tasks of one note: tick - [x] [[Some note]] → Some note goes on. With In any note — the ticks of whichever note you save.
05 Filters — which notes go on
Each one sends the matching notes to yes and the rest to no. A filter with nothing filled in sends nothing anywhere.
A field of the note: is, is not, contains, is empty, is not empty. status is done.
The note has the tag, in YAML tags or as #tag in the text. project also matches project/web.
The note's name (or text) contains the words — or matches a pattern (regex). Case doesn't matter.
The note is inside the folder or its subfolders.
Made or last changed more (or fewer) than N days ago.
All its tasks are ticked — or some are still open. Notes without tasks go to no.
No other note links to it.
More (or fewer) words than N.
Sorts the notes (by date changed, by date created or by name) and sends the first N to yes, the rest to no.
06 Actions — what happens to them
Blocks marked once per note do their thing to a note only once — saving it again doesn't rename it again or add a second line, and a reminder you removed by hand doesn't come back. Their footer says how many notes they did before; again lets them do those once more. An action with an empty field does nothing (Rename, Reminder and AI come filled in, ready to go).
Every text of an action takes the same variables: {{name}}, {{folder}}, {{created}}, {{date}}, {{time}} and any field of the note, like {{status}}. The { } button by the field lists them; a name that's neither is pointed out on the block.
Makes a note — folder, a name pattern, an F1 template if you like — and hands it on, so the blocks after it fill it. {{date}} in the name: one note a day; {{name}} or a field: one per incoming note. A note that's there already goes on as it is, never written over.
Adds a block of text at the end of each note it gets. After Create note it fills the new one. A text that starts with a YAML block (between --- lines) puts those fields into the note's YAML — fields the note has stay, tags join its own — and adds the rest at the end.
Into a folder (made if it's not there). Links to the notes follow them.
Writes field: value as a line at the end of the note — one line, updated in place on the next run — or removes it. set if empty leaves a value that's already there. Switch it to in YAML for a field that filters, boards and variables read (status). {{date}} in the value is today.
Adds a tag to the YAML tags — or takes it off there; a #tag in the text stays. {{folder}} tags each note with its folder.
Adds the YAML fields of a template (F1) the note doesn't have yet. Fields it has stay as they are.
By a pattern: {{name}}, {{created}}, {{date}}, {{folder}} or a field like {{status}}. A note whose field is still empty waits until it's filled. Links follow.
Adds a line about each note to another note (a log): {{link}}, {{name}}, {{folder}}, {{date}}, {{time}}.
Puts a reminder in the note, N days from the run at the time set.
Claude reworks the note as you ask and puts its version below it (or in a copy). Your text stays; ⌘P → Apply AI suggestion takes what you pick. Runs only on Run now and ⌘P — each note is a paid request.
Writes the notes into a List note as a checklist of links (or a table with fields as columns). The block makes that note itself and keeps it up to date; ticks you make there stay. It never writes over a note of yours.
Puts the notes in the system Trash. Asks every time.
07 Ready chains
The first five come with the app: on an empty canvas they're the buttons in its middle, once it has blocks — under Examples on the bar. They come in with the folder of a move (or the field name) left empty — or the name of the note to make — so nothing happens until you fill it in. The review list is ready at once: Run now writes it.
Done notes go to the archive
Review notes untouched for a month
Two chains in one file: the list fills up on its own; tick a note in it → it moves to the archive and leaves the list.
New notes get a field
“If empty”: a status you change by hand later that day stays. “In YAML”: filters and boards see it.
A daily note
One note a day: once it's there, the next runs that day leave it be.
A log of finished notes
A live list by tag
Run now builds the list once; after that every save adds or removes just that note — the rest of the list and your ticks stay.
Ten latest notes
Both ways out of one filter
Finished notes leave for the archive, the rest are listed in one note.
08 If nothing happens
- The bar says Off — a new automation starts off. (Run now works anyway.)
- The action is linked from no instead of yes (or the other way round).
- A block has an empty field — it says so at its foot (“…until then it does nothing”).
- Nothing is linked into the block — its foot says “Not connected”.
- List points at a note you already have, with text of your own — it won't write over it (“That note has your own text — it stays as it is”). Give it a new name; the block makes the note.
- The list's own note never comes out of a source, so it doesn't list itself.
- On schedule with a time like
9— it wants09:00; the field is outlined until then. - AI doesn't run on save or on a schedule — only on Run now and ⌘P.
- A variable with a typo (
{{today}}) — the block says so (“Not a variable or a field of any note”).