Prompt Snippets

Prompt snippets are reusable inline text fragments — “Identity Lock”, “Golden Hour”, “Slow Dolly-In” — that you drop into a prompt while you write, either with a / slash menu or a snippets button next to the field. A snippet is just text: inserting one types its words into your prompt at the caret.

Snippets vs presets. A preset reconfigures the whole node — it sets the provider, resolution, aspect ratio, and other fields at once. A snippet changes nothing but the text you are writing: it composes inside the prompt (or negative prompt) you are already editing. Use a preset to set up a node; use a snippet to enrich the wording of a single field.

What you see is what runs

Snippets insert plain text into the prompt. There is no hidden marker, no template, no runtime lookup — the snippet’s words become part of prompt exactly as shown, and that exact string is what gets sent to the model. Because of this:

The / slash menu

Type / in any prompt field to open the snippet menu inline, without leaving the keyboard (it coexists with the @ mention and { variable triggers).

Insertion separator. A snippet is inserted at the caret with a smart leading separator so the result reads cleanly:

Pills

In a positive prompt field, an inserted snippet renders as a compact amber pill (a small </> icon plus the snippet’s name) instead of the raw words. The pill is purely a way to see and manage the fragment — it is not stored. The prompt behind it is always the snippet’s plain text:

Click a pill to open its menu:

Backspace at a pill deletes the whole pill in one keystroke (it is a single atomic unit, not character-by-character text).

Pills are a display layer over matching text. When a workflow loads, any plain text that exactly matches a snippet in your current pool is shown as a pill. Two consequences follow:

Negative-prompt fields stay text-only — no pills. Snippets you insert there (via the / menu or the button) are plain text exactly as shown, with the same separator rules.

The Snippets button

Next to the AI prompt-helper button on a prompt field’s label row there is a small </> snippets button. It opens the same searchable snippet menu as a popover anchored to the field. Selecting a snippet appends it to the end of the field’s current text (the / menu is what inserts at an arbitrary caret position), using the same separator rules.

The popover footer has two actions:

Negative-prompt fields

Negative-prompt fields get the same / menu, showing snippets whose target is negative (bare comma lists like morphing, warping, flickering — never “no X” phrasing, per current model guidance). Insertion is plain text with the same separator rules.

Some fields are audio-tag fields — the text fields on text-to-speech and Suno music nodes that use [tag] autocomplete. Those keep / for inserting audio tags and do not show prompt snippets.

Final-prompt view (per field)

Every prompt and negative-prompt field has its own Show final prompt toggle. In its label row, next to the </> snippets button, is a small Eye button. Click it and the field swaps from the editor to a read-only rendering of the assembled final prompt — exactly what the model will receive once the editor folds in everything around your words. The button becomes a Pencil (“Edit prompt”); click it again to swap back to editing. Editing is untouched: pills, the / menu, the snippets button, and the AI helper all work exactly as before in edit mode.

There is no separate “Final prompt” block anymore — this inline view per field replaces it, and the Copy button and legend now live inside it.

What the final view shows

In place of the editor, the field renders the assembled text read-only, with a Copy button (top-right) that copies the plain text — no color formatting ever reaches the clipboard or the model. If the field is empty, the editor’s placeholder shows muted and the toggle stays available.

On nodes with provider-aware assembly — the Generate Image and Modify Image config panels, plus the ⌘E quick-edit modal — the text is color-coded by where each piece came from, with a small legend underneath. Each color marks one origin:

Color Origin What it is
(no tint) Your text Exactly what you typed.
Sky blue Variable A resolved {Node Label} value pulled from an upstream node.
Indigo Picker A cinematography / parameter-picker fragment from a connected node (e.g. a Setting or Camera Motion node).
Amber Snippet An inserted snippet’s text (matched back to your snippet pool).
Teal Pre/post text The node’s promptPrefix / promptSuffix wrapped around the prompt (see Prompt pre & post text).
Violet References The identity / reference directive block added for connected character or reference images.
Grey Style The auto-appended Style: … suffix.
Rose Negative The negative-prompt content — either its own field, or an Avoid: … suffix folded into the prompt for providers that have no separate negative field.

The legend lists only the origins actually present (a prompt that is purely your own text shows no legend). The negative field on these surfaces gets the same variable- and snippet-highlighting.

On every other node (the video panels, audio, music, script, the text-input node, and the ⌘E modal for a provider-less node) the final view shows the same read-only assembled text with fewer provenance colors: your {variables} resolve to their upstream values (sky blue), inserted snippets are highlighted (amber), any connected cinematography / parameter-picker fragments are tinted (indigo), the node’s pre/post text is tinted (teal), a wired identity-lock clause reads as a References span (violet), and an appended Style: … suffix is greyed — exactly as on the provider-aware surfaces, for whichever of those are actually present. What these nodes don’t show is the full reference-directive block (the “Use these characters:” wrap) and byte-exact model assembly — both require the per-provider builder that only image generation runs today. Same toggle, same Copy button. (If a piece can’t be matched back cleanly, the field falls back to plain text rather than mis-tint.)

The video panels (Image to Video, Text to Video, Generate Video, Video to Video, Motion Transfer, Speech to Video, Extend Video, Video Retake, Kling 3.0 Studio) go one step further on the negative: their final view reports the true negative routing for the chosen video model. Kling and Wan family models accept a real negative parameter, so your negative is sent natively and the prompt is left untouched; every other video model has no native negative field, so your negative is folded into the prompt as a trailing Avoid: … clause (rose-tinted inside the prompt view). The routing matches exactly what the model receives at generation time.

Negative-prompt fields

A negative field’s final view shows the resolved negative — your text with {variables} expanded — and a one-line caption telling you how it is routed for the selected provider, because not every model has a separate negative input:

The resolved negative is shown in both routings — the caption is what tells you where it actually goes.

It’s a display layer, and the canvas remembers it

The colors and the assembled rendering never change the string sent to the model — Copy always yields the plain text. The per-field mode is remembered per node (saved with the workflow), so a field you flipped to the final view stays that way across closing and reopening the panel and across a reload, and each field’s mode is independent of the others.

Scoping: which snippets a field sees

Every snippet declares:

A node declares its modality once, so a field only ever shows snippets that match both its target and the node’s modality. A “Slow Dolly-In” video snippet never clutters an image prompt; a negative-only scrub never shows in a positive prompt field.

Factory catalog (v1)

Nodaro ships 67 built-in factory snippets covering image and video (positive and negative), mined from our factory presets and current model prompting guides. Audio and text catalogs are intentionally empty in v1 — those fields show your custom snippets only. The categories:

Category Count Examples
Identity & Consistency 5 Identity Lock (preserve the exact same face… do not alter identity), Wardrobe Lock
Quality 5 Cinematic Quality, Editorial Photo
Lighting 8 Golden Hour (warm golden-hour sunlight, long soft shadows…), Neon Noir
Camera & Lens 9 85mm Portrait (85mm lens at f/1.8, creamy bokeh…), Kodak Portra Look
Composition 6 Rule of Thirds, Full Body in Frame
Realism 5 Real Skin Texture (visible pores, fine lines… no airbrushing), Film Grain
Text Rendering 2 Legible Sign Text (a sign that reads “YOUR TEXT”…), Clean Typography
Camera Motion (video) 7 Slow Dolly-In (slow steady dolly-in toward the subject…), Orbit Shot
Motion Quality (video) 6 Natural Physics, I2V Fidelity Lock
Audio & Dialogue (video) 3 No Subtitles ((no subtitles, no on-screen text, no captions)), Silence Lock
Negative — Image (negative) 7 Anatomy Cleanup (deformed hands, extra fingers…), Watermark Scrub
Negative — Video (negative) 4 Artifact Scrub (morphing, warping, flickering…), Identity Drift Scrub

Factory snippets are built in and not editable.

Custom snippets

Create, edit, and delete your own snippets in the Manage dialog (reached from the snippets button footer). Each snippet has:

Text restrictions. Snippet text may not contain {, }, @, or line breaks. Those characters are reserved in the prompt editor — {} forms a {NodeLabel} variable token and @ starts an @mention — so a snippet containing them could be misread as a token rather than literal text. (Pasting multi-line text into the field collapses the line breaks to spaces.)

Your custom snippets always sort to the top of the menu, under “My snippets” or your own category name, ahead of the factory catalog.

Using snippets from code

Snippets are an editor-managed feature. The REST API exposes read-only access:

Creating, editing, and deleting snippets is done in the editor; those write endpoints reject programmatic (API-token / OAuth) callers. Because snippets land as plain text, no snippet-aware API is needed to run a workflow that uses them — the prompt already contains the words.

See also