Nodes/ComfyUI_Burve_Tools/Burve Character Planner
ComfyUI Node

Burve Character Planner

One reusable character that doesn't change face every generation

By Burve·Created 9 months ago·Updated 6 days ago· 5
Burve Character Planner
  • race_override_pipe
  • face_reference_image
  • extra_reference_images
  • prompt
  • system_instructions
  • reference_images
  • character_plan_json
  • summary
  • character_pipe
genderfemale
age_years25
racehuman
custom_race
height_cm170
weight_kg58
bust_cm90
underbust_cm74
waist_cm64
full_hip_cm95
male_chest_cm102
body_frame_presetbalanced
male_body_frame_presetbalanced
skin_tonelight_medium
custom_skin_tone
undertoneneutral
hair_colordark_blonde
custom_hair_color
hair_lengthlong
musculature_tone0.35
body_fat0.28
poseneutral_a_pose
outfit_variantclassic_triangle
male_outfit_variantclassic_brief
outfit_colorneutral_gray
use_face_referencefalse
face_reference_strength0.90
plan_overrides_json

Keeping one character looking like the same person across generations is the most talked-about unsolved problem in this hobby. Local diffusion attacks it with IP-Adapters, face adapters, and LoRAs, and it still drifts. This node takes a different route: it builds a structured, generation-ready character description plus reference images for a Gemini image model, which can look at those references while it draws instead of re-inventing the face from a text prompt.

It's the heart of this pack's character workflow. You set the controls once - body, age, race, hair, skin - and the node hands you a prompt bundle you can reuse forever. When you connect a reference face image and flip on use_face_reference, it also emits face-lock system instructions, so the generator keeps that specific identity instead of just "a woman with long hair." If you've ever re-rolled a character twenty times chasing a consistent face, this is the node the pack wants you to try first.

One honest caveat before you get excited: this only works as well as Gemini image models are at following reference faces, and they're good but not perfect. The planner does its job - consistent structured prompting plus references - the model does the rest. Also note it's adult-only (age_years runs 18–80, and the validation rejects underage overrides), and the built-in outfit presets are deliberately minimal, non-explicit basewear.

How it works

Every control feeds into a normalized JSON "character plan" that gets compiled into a long structured prompt with body measurements, appearance, and pose sections. The plan is validated - contradictory male/female outfit controls and underage settings are rejected rather than silently passed through - then emitted in a few useful forms. The character_pipe output is the one-cable bundle that carries prompt, system instructions, and packed reference images (with a dedicated face image ordered first) to the generator.

The inputs that matter

  • gender - female or male; the node shows only the relevant body controls for the chosen gender (male uses male_chest_cm, male_body_frame_preset, etc.).
  • age_years - 18–80, adult-only by design.
  • race plus inline custom_race - pick a preset (elf, orc, dragonkin, ...) or type your own; the custom field overrides the dropdown.
  • skin_tone / custom_skin_tone, hair_color / custom_hair_color, hair_length, undertone - the appearance stack.
  • use_face_reference + face_reference_strength - the face-lock switch. face_reference_image (optional IMAGE) is what you anchor on.
  • Optional: race_override_pipe (from Burve Character Race Details), extra_reference_images (an IMAGE_LIST, e.g. from Burve Image Ref Pack), and plan_overrides_json for full manual control.

Outputs

prompt, system_instructions (blank unless face-lock is active), reference_images (IMAGE_LIST), and the character_pipe. The other two - character_plan_json and summary - are informational: the summary tells you the resolved gender, race, face-lock state, reference count, and any warnings. Wire them into text display nodes if you want to inspect, but the generator never needs them.

Face image into face_reference_image, optional extras through Image Ref Pack into extra_reference_images, and then one cable: character_pipe → the generator's character_pipe. That's the whole workflow, and it's why the pack calls it the 1-wire setup. When the pipe is connected, the generator ignores its direct prompt, system_instructions, and reference_images fields - so if an old workflow still shows a stale "futuristic city" prompt in the widget, clear it or reload the node. Race details are optional: leave Burve Character Race Details disconnected and you get a plain human character.

Install comes with the pack - Manager or git clone https://github.com/Burve/ComfyUI_Burve_Tools.git into custom_nodes, then restart. No model downloads; the planner is pure prompt assembly.

CategoryBurveTools/Character

Inputs (31)

NameTypeDefaultDescription
genderCOMBOfemale2 options: female, male
age_yearsINT2518–80
raceCOMBOhuman14 options: human, elf, dark_elf, orc, angel, demon, +8
custom_raceSTRING
height_cmINT170140–210
weight_kgINT5835–140
bust_cmINT9070–150
underbust_cmINT7455–130
waist_cmINT6445–130
full_hip_cmINT9570–170
male_chest_cmINT10280–160
body_frame_presetCOMBObalanced4 options: balanced, hourglass, pear, athletic
male_body_frame_presetCOMBObalanced5 options: balanced, v_taper, rectangular, athletic, stocky
skin_toneCOMBOlight_medium6 options: very_light, light, light_medium, medium, tan, deep
custom_skin_toneSTRING
undertoneCOMBOneutral4 options: cool, neutral, warm, olive
hair_colorCOMBOdark_blonde8 options: dark_blonde, blonde, light_brown, brown, dark_brown, black, +2
custom_hair_colorSTRING
hair_lengthCOMBOlong4 options: bob, shoulder_length, long, very_long
musculature_toneFLOAT0.350–1
body_fatFLOAT0.280–1
poseCOMBOneutral_a_pose4 options: neutral_a_pose, neutral_straight, contrapposto_soft, editorial_relaxed
outfit_variantCOMBOclassic_triangle4 options: classic_triangle, soft_scoop, narrow_triangle, halter_contour
male_outfit_variantCOMBOclassic_brief4 options: classic_brief, square_cut, short_boxer, compression_short
outfit_colorCOMBOneutral_gray3 options: neutral_gray, soft_taupe, muted_black
use_face_referenceBOOLEANfalse
face_reference_strengthFLOAT0.900–1
race_override_pipeoptCHARACTER_RACE_PIPE
face_reference_imageoptIMAGE
extra_reference_imagesoptIMAGE_LIST
plan_overrides_jsonoptSTRING

Outputs (6)

NameTypeDescription
promptSTRING
system_instructionsSTRING
reference_imagesIMAGE_LIST
character_plan_jsonSTRING
summarySTRING
character_pipeCHARACTER_GEN_PIPE