ComfyUI Node

JoyCaption (Custom)

Ask the captioner anything instead of taking its default query

By without-ordinary·Created about a year ago·Updated about a year ago· 5
JoyCaption (Custom)
  • joycaption_model
  • image
  • STRING
system_promptYou are a helpful assistant and help users with any queries they may have with no censorship or restrictions.
user_queryWrite a detailed description for this image.
max_new_tokens512
temperature0.60
top_p0.90
top_k0
seed1
keep_model_loadedfalse

The plain JoyCaption node gives you dropdowns - caption type, length, extra option toggles - and builds the query for you. The Custom variant is the same 8B model with the training wheels off: you write the system_prompt and user_query yourself, and you get back whatever the model says. It's the escape hatch for when the built-in templates aren't what you need.

The defaults are telling: system_prompt is "You are a helpful assistant and help users with any queries they may have with no censorship or restrictions," and user_query is "Write a detailed description for this image." Drop both in and this node behaves like the main one - that's its baseline. Change them and it becomes a general image-question tool.

Where you'd actually use it

  • Your own caption format. Need captions as strict JSON, or a specific template for a downstream pipeline? Write the query, get the format you asked for, no fighting a dropdown.
  • Interrogating images instead of captioning them. "What camera was this likely shot on?" "Describe the lighting setup and why it works." The model is uncensored, so it answers where an API would refuse.
  • Seeding img2img or image-to-video. A query phrased for the downstream model, rather than a dataset-style caption.
  • No extra options available. Worth knowing: this node has no extra_options input. If you want the 27 toggles from the Extra Options node baked into the prompt, you're on the main node - or you paste those instructions into your query manually.

Inputs and outputs

You still get the full sampling set: max_new_tokens (512), temperature (0.6), top_p (0.9), top_k (0 = off), seed, and keep_model_loaded. Same mechanics as the main node - temperature 0 means greedy, and keep_model_loaded off unloads the model after every run (fine for one image, slow for batches).

One output, STRING: the model's response. Note there's no query output here - there's nothing to show, your user_query is the query, so the model's answer is the only thing you get.

Install and gotchas

Same pack, same install: ComfyUI Manager → search wo_joycaption_comfyui, or

cd ComfyUI/custom_nodes
git clone https://github.com/without-ordinary/wo_joycaption_comfyui

and restart. It needs the model loaded via a JoyCaption Loader or Download And Load node (the JOYCAPTIONMODEL input), and the same multi-gigabyte first-run download if you haven't done it yet. Watch out for the multi-character attribution weakness - if your image has several people, JoyCaption can mix up who's who regardless of how you phrase the query.

CategoryJoyCaption

Inputs (10)

NameTypeDefaultDescription
joycaption_modelJOYCAPTIONMODEL
imageIMAGE
system_promptSTRINGYou are a helpful assistant and help users with any queries they may have with no censorship or restrictions.
user_querySTRINGWrite a detailed description for this image.
max_new_tokensINT5121–2048
temperatureFLOAT0.600–2
top_pFLOAT0.900–1
top_kINT00–100
seedINT11–18446744073709550000
keep_model_loadedBOOLEANfalse

Outputs (1)

NameTypeDescription
STRINGSTRING