Nodes/Comfyui_JC2/TTP_ExtraOptionsNode
ComfyUI Node Runs on cloud

TTP_ExtraOptionsNode

Turn caption instructions on and off without a wall of toggles

By TTPlanetPig·Created 2 years ago·Updated about a year ago· 216
TTP_ExtraOptionsNode
    • extra_options_str
    enable_extra_optionstrue
    replace_character_namesfalse
    exclude_unchangeable_attributesfalse
    include_lighting_detailsfalse
    include_camera_anglefalse
    mention_watermark_presencefalse
    note_jpeg_artifactsfalse
    include_exif_datafalse
    exclude_sexual_contentfalse
    exclude_image_resolutionfalse
    describe_aesthetic_qualityfalse
    include_composition_stylefalse
    exclude_text_elementsfalse
    specify_depth_of_fieldfalse
    specify_lighting_sourcesfalse
    avoid_ambiguous_languagefalse
    classify_image_as_sfw_nsfwfalse
    describe_key_elements_onlyfalse
    character_name

    ExtraOptionsNode (shown as TTP_ExtraOptionsNode) doesn't caption anything. It's the remote control for the pack's Alpha Two captioner: a small node that compiles a bundle of instruction sentences into a single string you feed into JoyCaption2_simple. If you've used the Full JoyCaption2 node, every one of these booleans is already familiar - this just moves them somewhere tidier.

    What it does

    Under the hood the pack ships a JSON file (extra_option.json) mapping each option name to a prompt sentence - "Include information about lighting", "Do NOT mention the image's resolution", "If it is a photo you MUST include information about what camera was likely used…", and so on. This node reads that file, shows you each option as a boolean input, and for every one you check it appends the matching sentence to its output. enable_extra_options is the master switch: flip it off and the output is empty, which is handy for bypassing the whole extras concept in one click.

    Two things make it more than a dumb toggle rack. First, character_name - when you enable replace_character_names and type a name, the node substitutes it into the "refer to them as {name}" instruction before sending. Second, the output extra_options_str is a plain STRING, so you can inspect it, log it, or feed in a completely custom string instead of using the booleans at all.

    Why bother, when Full exists

    The Full node has these same 17 toggles baked in. The standalone version wins when you have more than one captioning setup, or you're captioning in a loop and want the options somewhere you can reach without un-collapsing a giant node. Pair it like this:

    image → JoyCaption2_simple (text out)
    ExtraOptionsNode (extra_options_str) → JoyCaption2_simple.extra_options_node
    

    That's the intended wiring: the caption node stays clean, and the extras live on a node you can collapse to a dot. One trap - don't feed ExtraOptionsNode into JoyCaption2 (the Full node) too, because the Full node already applies those same options internally and you'll get doubled instructions in the prompt.

    Install

    It's part of the same pack, so no separate install:

    cd ComfyUI/custom_nodes
    git clone https://github.com/TTPlanetPig/Comfyui_JC2
    

    (Or ComfyUI Manager → search Comfyui_JC2.) It's pure Python - no models, no weights, no heavy dependencies beyond the pack's requirements. The inputs are all optional in practice: enable_extra_options defaults on, everything else defaults off. If you're using the Beta One captioner instead, grab ExtraOptionsNode_Beta - it's this idea, updated for the newer model's longer option list.

    CategoryTTP_Toolset

    Inputs (19)

    NameTypeDefaultDescription
    enable_extra_optionsBOOLEANtrue
    replace_character_namesBOOLEANfalse
    exclude_unchangeable_attributesBOOLEANfalse
    include_lighting_detailsBOOLEANfalse
    include_camera_angleBOOLEANfalse
    mention_watermark_presenceBOOLEANfalse
    note_jpeg_artifactsBOOLEANfalse
    include_exif_dataBOOLEANfalse
    exclude_sexual_contentBOOLEANfalse
    exclude_image_resolutionBOOLEANfalse
    describe_aesthetic_qualityBOOLEANfalse
    include_composition_styleBOOLEANfalse
    exclude_text_elementsBOOLEANfalse
    specify_depth_of_fieldBOOLEANfalse
    specify_lighting_sourcesBOOLEANfalse
    avoid_ambiguous_languageBOOLEANfalse
    classify_image_as_sfw_nsfwBOOLEANfalse
    describe_key_elements_onlyBOOLEANfalse
    character_nameSTRING

    Outputs (1)

    NameTypeDescription
    extra_options_strSTRING