☁️BizyAir Joy Caption
The plain, no-frills version of the LoRA community's favorite captioner
- image
- STRING
JoyCaption (credited in BizyAir's own README to fancyfeast's joy-caption-pre-alpha project) is the community's default answer to "what do I caption my LoRA dataset with" - an uncensored vision-language model that describes what's actually in an image instead of refusing or dancing around it, which is exactly where a captioner like BLIP falls apart on real training data. This node is the plain, earlier version in BizyAir's pack; BizyAir Joy Caption2 sitting elsewhere here is the same underlying idea with a much bigger preset menu bolted on.
What it does
image in, a caption STRING out - that's the whole shape of it. Beyond the image, you only get sampling controls: do_sample (enable/disable) toggles whether the model samples with some randomness or takes its most confident output every time, temperature (0–2, default 0.5) controls how much variation you get between runs on the same image when sampling is on, and max_tokens (16–512, step 16, default 256) caps how long the caption can run.
There's no caption_type preset menu, no caption_length target, no {name} placeholder trick for keeping a subject's identity out of the caption - all of that lives on the JoyCaption2 node instead. What you get here is JoyCaption's default framing, whatever that happens to be for this revision, with no way to steer it toward a specific format like Booru tags or a MidJourney-style prompt.
Where this fits versus JoyCaption2
If you're captioning a LoRA dataset and specifically need Booru-style tags for an Illustrious/Pony-lineage model, or you want the {name} placeholder trick to keep a character's identity from getting baked into the caption text, reach for JoyCaption2 instead - it's a strict superset of what this node offers. This plain node is the right pick when the default captioning style is already what you want and you don't need the extra knobs.
Installing it
ComfyUI Manager: search BizyAir, install, restart. Or:
cd ComfyUI/custom_nodes && git clone https://github.com/siliconflow/BizyAir.git
Restart after. No local model download - JoyCaption runs cloud-side through BizyAir. A BizyAir account with an API key set is required before this node captions anything.
Where people get burned
Expecting preset controls that live on the other node. If you go looking for a caption-type or caption-length option here and can't find one, you're not missing something in the UI - it genuinely isn't on this node. That's JoyCaption2.
Not spot-checking output before batch-captioning a dataset. Like any VL captioner, it can drift or occasionally describe something that isn't quite there - worth reading a handful of outputs manually before trusting it across an entire training set.
Treating captioning as a one-shot, no-review step. The standing advice for LoRA captions holds here too: describe what should stay changeable in the training data, leave what's meant to be permanent (a specific character's identity, a fixed style) out of the caption so the model actually learns it from the images rather than being told to ignore it in text.
Inputs (4)
| Name | Type | Default | Description |
|---|---|---|---|
| image | IMAGE | — | |
| do_sample | COMBO | 2 options: enable, disable | |
| temperature | FLOAT | 0.500–2 | — |
| max_tokens | INT | 25616–512 | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| STRING | STRING | — |