Nodes/cgem156-ComfyUI๐ŸŒ/Dart Prompt ๐ŸŒ
ComfyUI Node

Dart Prompt ๐ŸŒ

Build the structured seed string Dart actually expects

By laksjdjfยทCreated 2 years agoยทUpdated about a month agoยท 93
Dart Prompt ๐ŸŒ
    • STRING
    โ—„ratingโ–พโ–บ
    โ—„copyrightoriginalโ–บ
    โ—„characterโ–บ
    โ—„generalโ€”โ–บ
    โ—„longlongโ–บ

    Dart Generate takes a plain prompt string, but the Dart model itself was trained on a specific structured layout - rating, then copyright, then character, then general tags - not free-form text. This node builds that structured string for you from separate fields, so you're filling in a form instead of remembering the exact formatting Dart wants. Skip this and you can still hand DartGenerate a hand-typed string, but you're on your own for getting the format right.

    The fields, and what they map onto

    Danbooru's own tag taxonomy (Rating, Character, Copyright, General, Meta) is what this node mirrors, because that's the vocabulary Dart was trained on:

    • rating - a dropdown, Danbooru's content-rating axis (general/sensitive/questionable/explicit, in the board's own terms). This isn't decorative - Dart uses it to shape what kind of tags it predicts around your seed.
    • copyright - the series or franchise, e.g. genshin_impact. Defaults to original if you're not working from an existing IP.
    • character - a character name tag, e.g. hatsune_miku, if you're generating a known character.
    • general - your actual seed tags: pose, clothing, setting, whatever you already know you want. Multiline, so you can lay one tag per line if that's easier to read.
    • long - a combo controlling how long a tag list Dart should aim for. Defaults to long.

    Output is a single STRING - the assembled seed, ready to feed straight into DartGenerate's prompt input.

    Installing it

    ComfyUI Manager, search "cgem156-ComfyUI", or by hand:

    cd ComfyUI/custom_nodes
    git clone https://github.com/laksjdjf/cgem156-ComfyUI
    

    Restart ComfyUI. This node does no model work itself - it's a string formatter, so there's nothing to download for it specifically. It only matters in combination with LoadDart and DartGenerate downstream.

    Why bother with the structured fields instead of just typing tags

    The whole point of Danbooru-style prompting is that these categories aren't interchangeable window dressing - a character tag and a general tag pull different weight in a model trained on the real taxonomy, and Dart inherited that structure from its training data. Feeding rating, copyright, and character into their own slots rather than dumping everything into general gives Dart a cleaner signal to condition on, which tends to produce more coherent tag completions than an unstructured blob would.

    Common issues

    Leave character filled in with a name Dart's training data never saw much of, and you'll likely get thin, generic completions around it - the model can only extrapolate from tags it actually learned co-occurrence patterns for, same limitation any Danbooru-trained model has with obscure or brand-new characters. If your copyright and character don't actually belong to the same series, don't expect DartGenerate to reconcile that for you - it'll just predict tags around whatever conflicting signal you gave it. And if downstream output feels oddly generic regardless of what you put in general, check the rating field first - an unintended rating choice can quietly steer the whole tag distribution before your general tags even get a say. If you find yourself wanting more control over aspect ratio or a named identity axis, that's exactly what its sibling, Dart Prompt V2, adds.

    Categorycgem156 ๐ŸŒ/dart

    Inputs (5)

    NameTypeDefaultDescription
    ratingCOMBO6 options: general, sensitive, questionable, explicit, sfw, nsfw
    copyrightSTRINGoriginalโ€”
    characterSTRINGโ€”
    generalSTRINGโ€”
    longCOMBOlong4 options: very_short, short, long, very_long

    Outputs (1)

    NameTypeDescription
    STRINGSTRINGโ€”