Extra Options Set
Extra Options Set tells Auto Caption 2 what to describe
- ExtraOptionsSet
Out of the box, Auto Caption 2 writes a generic caption, and for LoRA training that's usually not what you want. Extra Options Set is the fix - and it's worth knowing that it's not a captioner at all. It never touches a model or an image. It's a switchboard of booleans that turns Auto Caption 2's output into something aimed at your specific job: keep the NSFW stuff out, force camera angle and lighting detail, make the model refer to your character by name.
It earns its keep because captioning is the highest-leverage thing in the LoRA recipe - the community rule is "caption what you want to remain variable, leave what should be fixed undescribed." This node is how you nudge a generic VLM caption toward that rule without hand-editing every line.
How it works
The node loads a JSON file that ships with the pack (lib/extra_option.json). Each entry maps a friendly option name to a single instruction sentence - include_lighting_details becomes "Include information about lighting." When you flip a toggle on, that sentence gets collected; at run time the node joins all enabled sentences into one string and returns it. Auto Caption 2 then tacks that string onto the caption prompt it builds. It's prompt engineering, mechanized, and it's exactly the "extra options" feature from the original fancyfeast Joy Caption demo, exposed as a node.
The inputs that matter
The full list is 17 booleans plus a text field, but a beginner really touches these:
- enable_extra_options - the master switch. Off means the node returns an empty string and does nothing.
- replace_character_names with character_name - the pair you actually want for a character LoRA. With both set, the model is told to refer to the person in the image as your
character_name(a trigger word or character name).character_namedoes nothing on its own; you must also flip the replace toggle. - exclude_sexual_content / classify_image_as_sfw_nsfw - the content-filter knobs, if your dataset (or your use) needs them.
- The rest are self-explanatory flavor switches:
include_lighting_details,include_camera_angle,specify_depth_of_field,include_composition_style,exclude_text_elements,mention_watermark_presence, and friends. Flip them on, get that detail in the captions.
Output and wiring
The single output, ExtraOptionsSet, is a plain STRING. Wire it into Auto Caption 2's optional ExtraOptionsSet input (the slot is force-input, so it shows up as a connection point). Forget that wire and the whole node is a no-op - that's the classic "why is nothing happening" moment.
Install
It ships inside the ComfyUI_Auto_Caption pack, so:
cd ComfyUI/custom_nodes
git clone https://github.com/Cyber-BlackCat/ComfyUI_Auto_Caption
or install via ComfyUI Manager (search "ComfyUI_Auto_Caption"), then restart. Note this node itself loads nothing - no LLM, no VRAM - but it lives in a pack whose other nodes absolutely do, so the pack's model setup (see the Auto Caption articles) still applies if you want the captioners to run.
Gotchas
Because the option list is read from extra_option.json at widget-build time, if that file is missing or mangled you'll get a node with no toggles - reinstall the pack to restore it. And one honest warning: more toggles doesn't mean better captions. Piling on ten instructions makes the 8B model try to obey all of them and usually waters everything down. Pick the two or three that match your training goal.
Inputs (19)
| Name | Type | Default | Description |
|---|---|---|---|
| enable_extra_options | BOOLEAN | true | — |
| replace_character_names | BOOLEAN | false | — |
| exclude_unchangeable_attributes | BOOLEAN | false | — |
| include_lighting_details | BOOLEAN | false | — |
| include_camera_angle | BOOLEAN | false | — |
| mention_watermark_presence | BOOLEAN | false | — |
| note_jpeg_artifacts | BOOLEAN | false | — |
| include_exif_data | BOOLEAN | false | — |
| exclude_sexual_content | BOOLEAN | false | — |
| exclude_image_resolution | BOOLEAN | false | — |
| describe_aesthetic_quality | BOOLEAN | false | — |
| include_composition_style | BOOLEAN | false | — |
| exclude_text_elements | BOOLEAN | false | — |
| specify_depth_of_field | BOOLEAN | false | — |
| specify_lighting_sources | BOOLEAN | false | — |
| avoid_ambiguous_language | BOOLEAN | false | — |
| classify_image_as_sfw_nsfw | BOOLEAN | false | — |
| describe_key_elements_only | BOOLEAN | false | — |
| character_name | STRING | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| ExtraOptionsSet | STRING | — |