JoyTag(NYJY)
Turn an image into a tag list, with a safety filter on top
- image
- tags
JoyCaption writes you a sentence. This is its exact opposite: feed an image in and get back a Danbooru-style tag list - 1girl, long hair, looking at viewer, outdoors, .... That distinction matters because the two feed different workflows. If you train a LoRA or prompt on a Danbooru-tag-based model, tag captions are the language the model actually learned; a natural-language captioner gives you richer prose but not the vocabulary the model was trained on. JoyTag is the tag side of that pair, and it's the right tool whenever your downstream model thinks in tags.
How it works
The node runs the joytag model (from the original fpgaminer/joytag project) locally. It's a vision model trained specifically for tag prediction, and the pack auto-downloads it on first use to models/joytag. The image goes through the model, each candidate tag gets a confidence score, and tags above a threshold come out. The outputs then pass through the node's two text filters and the optional safety filter.
The inputs that matter
- image - the IMAGE to tag.
- THRESHOLD - the confidence cutoff, range 0.1–1.0, default 0.4. This is the knob that matters: lower = more tags (more aggressive, noisier), higher = fewer, cleaner tags. Start at 0.4 and nudge down if you're missing things.
- positive - extra text appended to the tag list after analysis. The author's docs call it a way to force-add your own words or phrases to every result - e.g. a style tag you always want present.
- nagetive - yes, that's the actual spelling in the schema; it's the author's (typo'd) name for the negative filter. Tags listed here get filtered out of the output. If the model keeps spitting a tag you hate, put it here.
- safe_mode - default on. Auto-filters tags the author's wordlist flags as gore/NSFW ("词库逐步完善中" - the list is still being built out). Turn it off if you're tagging content where those tags are legitimate.
Output: tags, a single STRING with the comma-separated tag list.
Installing
Standard pack install: ComfyUI Manager → Install via Git URL → https://github.com/aidenli/ComfyUI_NYJY, restart. First run downloads the joytag model into the pack's models/joytag folder - a modest download. The docs note you can skip model.onnx if you download manually, since the pack uses the other weights.
Common issues & honest caveats
safe_mode is a blunt instrument. It's a growing wordlist, not a content policy - it can quietly strip tags you actually wanted. If your output looks thin, check whether safe_mode ate part of it before you fiddle with THRESHOLD.
It's a different vocabulary than your model might want. JoyTag speaks general Danbooru-ish tags; if you're captioning for a specific tag-trained model (Illustrious, NoobAI, Pony), its tag habits can differ from the model's training vocabulary. That's a dataset-cleanup consideration, not a node bug. And remember the spelling: nagetive will bite you if you go looking for the input in the docs - it's misspelled in the pack, on purpose as it shipped. Use it anyway; it does what you want.
Inputs (5)
| Name | Type | Default | Description |
|---|---|---|---|
| image | IMAGE | — | |
| THRESHOLD | FLOAT | 0.40.1–1 | — |
| positive | STRING | — | |
| nagetive | STRING | — | |
| safe_mode | BOOLEAN | true | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| tags | STRING | — |