ComfyUI Node

JoyCaption Ollama Extra Options

Steering your Ollama captioner without leaving ComfyUI

By judian17·Created about a year ago·Updated about a year ago· 7
JoyCaption Ollama Extra Options
    • extra_options_ollama
    refer_character_namefalse
    exclude_people_infofalse
    include_lightingfalse
    include_camera_anglefalse
    include_watermark_infofalse
    include_JPEG_artifactsfalse
    include_exiffalse
    exclude_sexualfalse
    exclude_image_resolutionfalse
    include_aesthetic_qualityfalse
    include_composition_stylefalse
    exclude_textfalse
    specify_depth_fieldfalse
    specify_lighting_sourcesfalse
    do_not_use_ambiguous_languagefalse
    include_nsfw_ratingfalse
    only_describe_most_important_elementsfalse
    do_not_include_artist_name_or_titlefalse
    identify_image_orientationfalse
    use_vulgar_slang_and_profanityfalse
    do_not_use_polite_euphemismsfalse
    include_character_agefalse
    include_camera_shot_typefalse
    exclude_mood_feelingfalse
    include_camera_vantage_heightfalse
    mention_watermark_explicitlyfalse
    avoid_meta_descriptive_phrasesfalse
    character_name

    JoyCaption Beta One is the community's favorite image captioner - the thing people reach for when they're building a LoRA dataset and want natural-language captions instead of tags. The catch has always been the plumbing: judian17's original node ran the model through llama-cpp-python, and building that with GPU support is a genuinely miserable afternoon. So the author's fix was to push the GGUF onto Ollama and split the prompt-building half out into this pack. The JoyCaption Ollama Extra Options node is that half's front panel: twenty-eight toggles, one name field, and no inference at all. It's a config bundle, nothing more.

    What it actually does

    Flip a switch, and the node tacks one instruction sentence onto an internal list. Flip include_lighting and the bundle carries "Include information about lighting." Flip include_camera_shot_type and the model gets told to say whether the image is an extreme close-up or a cowboy shot. Every toggle is the same trick - these are the exact instruction strings from fancyfeast's original JoyCaption prompt, preserved verbatim. The bundle leaves the node as a JJC_OLLAMA_EXTRA_OPTION output called extra_options_ollama, and the only thing that knows how to read it is the sibling JoyCaptionOllamaPrompter node in this same pack.

    That means the node does literally nothing on its own. Wire it to nothing and it silently builds a bundle nobody consumes. It's a steering wheel, not a car.

    The switches that actually matter

    All 28 default to off, so don't panic at the wall of booleans. The ones you'll realistically flip:

    • include_lighting and include_camera_angle - the two I'd turn on first for photography or realism LoRAs. Together they push captions toward the details a trained model can actually learn.
    • exclude_sexual - keeps the output PG. Worth knowing the model describes what's in the image; if your dataset has any spicy frames, flip this.
    • avoid_meta_descriptive_phrases - this is the anti-"This image shows…" switch, and it matters more than it sounds. Captions that start with meta commentary are worse training material for natural-language models.
    • refer_character_name + character_name - for character datasets. Turn on the toggle and type the name (placeholder example is Skywalker), and the model is instructed to call the character by name instead of describing generic "person."
    • identify_image_orientation, include_character_age, include_camera_vantage_height - niche but handy once you've run a few batches and realize the model keeps skipping exactly those details.

    Everything else - EXIF, JPEG artifacts, aesthetic quality, "use vulgar slang and profanity" (yes, that's a real toggle, no I won't use it) - is there because the original JoyCaption prompt had it. Flip one at a time to see what each actually changes in the output.

    Wiring it in

    The output plugs into the extra_options_input port on JoyCaptionOllamaPrompter, which then folds your instructions into the user prompt it sends downstream to OllamaGenerateV2. The pack ships a complete workflow file (ollama-joycaption-beta.json) showing the whole chain: LoadImage → OllamaConnectivityV2 → OllamaOptionsV2 → Extra Options → Prompter → OllamaGenerateV2. Load that and you can't get the wiring wrong.

    Install and gotchas

    Install via ComfyUI Manager (search "JoyCaption-beta-one-hf-llava-Prompt_node") or:

    cd ComfyUI/custom_nodes
    git clone https://github.com/judian17/ComfyUI-JoyCaption-beta-one-hf-llava-Prompt_node
    

    Then restart ComfyUI. Good news: this pack is pure Python, no dependencies, no model downloads of its own. The heavy lifting lives elsewhere - you still need Ollama running, the aha2025/llama-joycaption-beta-one-hf-llava model pulled, and stavsap's ComfyUI-Ollama nodes installed for the actual generation. This node just decides what the model gets told.

    The one trap: character_name only takes effect when refer_character_name is switched on. Type a name, forget the toggle, and you'll wonder why the captioner never uses it.

    CategoryJoyCaption/Ollama

    Inputs (28)

    NameTypeDefaultDescription
    refer_character_nameBOOLEANfalse
    exclude_people_infoBOOLEANfalse
    include_lightingBOOLEANfalse
    include_camera_angleBOOLEANfalse
    include_watermark_infoBOOLEANfalse
    include_JPEG_artifactsBOOLEANfalse
    include_exifBOOLEANfalse
    exclude_sexualBOOLEANfalse
    exclude_image_resolutionBOOLEANfalse
    include_aesthetic_qualityBOOLEANfalse
    include_composition_styleBOOLEANfalse
    exclude_textBOOLEANfalse
    specify_depth_fieldBOOLEANfalse
    specify_lighting_sourcesBOOLEANfalse
    do_not_use_ambiguous_languageBOOLEANfalse
    include_nsfw_ratingBOOLEANfalse
    only_describe_most_important_elementsBOOLEANfalse
    do_not_include_artist_name_or_titleBOOLEANfalse
    identify_image_orientationBOOLEANfalse
    use_vulgar_slang_and_profanityBOOLEANfalse
    do_not_use_polite_euphemismsBOOLEANfalse
    include_character_ageBOOLEANfalse
    include_camera_shot_typeBOOLEANfalse
    exclude_mood_feelingBOOLEANfalse
    include_camera_vantage_heightBOOLEANfalse
    mention_watermark_explicitlyBOOLEANfalse
    avoid_meta_descriptive_phrasesBOOLEANfalse
    character_nameSTRING

    Outputs (1)

    NameTypeDescription
    extra_options_ollamaJJC_OLLAMA_EXTRA_OPTION