Nodes/ComfyUI-FunPack/FunPack Video Refiner V2
ComfyUI Node

FunPack Video Refiner V2

The Refiner that learns your taste — rate a clip, and the next one is closer

By digital-garbage·Created about a year ago·Updated a day ago· 18
FunPack Video Refiner V2
  • clip
  • advisor_clip
  • positive_conditioning
  • lora_stack
  • clip_vision_output
  • source_image
  • model
  • latent
  • modified_positive
  • status
  • training_info
  • loss_graph
  • encoded_prompts
  • model
  • video_latent
positive_prompt
ratingMissing action
modeRefine
advisor_modeOff
reset_sessionfalse
refinement_key_input
user_intent_prompt
im_feeling_luckyfalse
advisor_thinkingtrue
feedback_prompt
temporal_stylenatural
split_by_transitionsfalse
steer_moderelative
absolute_strength0.60

FunPack Video Refiner V2 is the heart of the pack's self-improving loop, and it's unlike anything you'll find in most custom node packs. It takes a prompt, encodes it through your CLIP, and learns from your ratings - "Missing action", "Wrong details", "Perfect" - then rewrites the prompt and steers the conditioning so the next generation gets closer to what you actually wanted. It's a feedback loop where your thumb is the training signal.

How it works

The required inputs are the two you'll touch every run: positive_prompt (the text to encode and refine) and rating (the 25-option feedback enum - the samples show the real labels: Perfect, Nailed it, Missing details, Missing action, Missing quality, Wrong details, Wrong action, Wrong appearance, -Just forget it-). The docs spell out the mapping: Missing details nudges detail phrases, Missing action boosts action/character phrases, Wrong appearance means the video got polluted by remembered character traits that weren't requested, Perfect reinforces what worked.

mode picks how much of the machinery runs: Refine (apply learned prompt shaping + conditioning adaptation - the default), Prompt only (shape the prompt, pass conditioning vectors through untouched), or Learning (record and update memory but pass everything through unchanged - the safe way to build memory before it starts steering).

advisor_mode (default Off) is the LLM advisor: Off, Only diagnostics, Only prompt, or Full. Full runs two passes - first analyze what's wrong, then repair the prompt - using the advisor_clip model (from FunPack Advisor LLM). The advisor gets four explicit inputs: original user intent, last prompt, your rating, and the feedback history. feedback_prompt is the "highest priority" override: "he was supposed to hold her hand, not her head" gets obeyed exactly, bypassing the axis logic.

The outputs that matter

  • modified_positive (CONDITIONING) - the refined conditioning. This is what feeds your sampler.
  • model (MODEL) - optional input/output: with an LTX-2/LTXAV model connected it does attn2 direction injection and temporal RoPE tricks. Wire it to a non-LTX model like Wan and it passes through unchanged - this feature is LTX-only.
  • loss_graph (IMAGE), training_info (STRING), encoded_prompts (STRING) - diagnostics. encoded_prompts shows the exact prompt used plus advisor output, and is where you see "Advisor suggestion (applied)".
  • video_latent, status, steer_mode/absolute_strength - steer_mode relative (default) finds the best conditioning for this prompt; absolute pulls toward a global learned taste; both layers them.

The details that matter

split_by_transitions (default off) is the scene-chain bridge: it detects transition words in the prompt and returns one conditioning entry per scene for FunPack LTXAV Scene Chain Sampler. Keep the character description before the first transition - it becomes the shared anchor prepended to every scene. im_feeling_lucky composes a prompt from the learned phrase memory instead of using your text. temporal_style (natural/auto/accelerate/decelerate/loop/freeze/pulse) manipulates frame-rate RoPE to change perceived motion timing - a genuinely unusual control. reset_session wipes the key's state.

Install

It's part of ComfyUI-FunPack:

cd ComfyUI/custom_nodes
git clone https://github.com/olivv-cs/ComfyUI-FunPack
pip install -r requirements.txt

or ComfyUI Manager → search "ComfyUI-FunPack". Needs transformers >= 5.0; avoid the optional hpsv3 package, which pins an older transformers and breaks the advisor.

The honest take

V2 replaced the original FunPack Video Refiner and keeps fresh state - no migration, old histories are gone. It also dropped sigma/latent refinement and scheduler controls in favor of the automatic streak logic (good streaks make it gentler, bad streaks push harder). It's the most powerful single node in this pack and the most opinionated: read encoded_prompts when a result surprises you, keep one refinement key per project, and expect the first few runs to be mostly learning before the loop visibly pays off.

CategoryFunPack/Refinement

Inputs (22)

NameTypeDefaultDescription
positive_promptSTRING
ratingCOMBOMissing action25 options: -Just forget it-, Perfect, Nailed it, Missing details, Missing action, Missing quality, +19
modeCOMBORefineRefine applies learned prompt and conditioning changes. Prompt only shapes the prompt but passes conditioning vectors through unchanged. Learning records observations and ratings while passing everything through unchanged.
advisor_modeCOMBOOffCLIP text-generation advisor. Full: repair prompt + show diagnostic. Only prompt: repair prompt silently. Only diagnostics: report advice without changing the prompt. Off: disabled.
clipoptCLIPOptional text encoder. When connected, V2 encodes the prompt itself.
advisor_clipoptCLIPOptional separate CLIP/Gemma text generator for Advisor. If disconnected, Advisor falls back to the main CLIP.
positive_conditioningoptCONDITIONINGOptional pre-encoded Gemma3/LTX2 conditioning. Used only when CLIP is not connected.
reset_sessionoptBOOLEANfalse
lora_stackoptFUNPACK_LORA_STACKOptional stack from FunPack LoRA Loader. V2 writes prompt-specific suggested weights.
clip_vision_outputoptCLIP_VISION_OUTPUTOptional CLIP Vision output describing the source image. Stored as advisory context; it is not blended into positive conditioning.
source_imageoptIMAGEOptional original/source image or frame batch. V2 stores size, aspect ratio, and a simple fingerprint to notice changed inputs.
modeloptMODELOptional model. LTX-2 / LTXAV family only - attn2 direction injection, attention temperature, temporal RoPE, and anchor transfer all require LTX transformer internals. Connecting a non-LTX model (e.g. WAN) passes it through unchanged. Connect the model output to your sampler.
refinement_key_inputoptSTRINGOptional linked refinement key, for example from FunPack Refinement Key Loader. Overrides the refinement_key widget when connected.
user_intent_promptoptSTRINGOptional raw user/request prompt. V2 can use this as an intent source to repair missing action/detail/quality phrases if an enhancer omits them.
im_feeling_luckyoptBOOLEANfalseCompose a learned prompt from V2 phrase memory, then encode it through the connected CLIP.
advisor_thinkingoptBOOLEANtrueLet compatible CLIP text generators use thinking mode for advisor diagnostics and prompt repair.
feedback_promptoptSTRINGOptional user feedback describing what was specifically wrong with the previous output (e.g. 'he was supposed to hold her hand, not her head'). Has highest priority in the advisor system prompt.
temporal_styleoptCOMBOnaturalControls how the model perceives motion timing via frame_rate RoPE manipulation. natural=no change, auto=per-scene director picks motion energy from each scene's prompt (needs the Scene Chain Sampler), accelerate=faster motion, decelerate=heavier motion, loop=circular temporal coords, freeze=highly compressed time, pulse=repeated ease-down motion holds per scene (needs the Scene Chain Sampler), rapid_start=speeds up just the beginning of each scene then settles to natural, rapid_end=natural then speeds up just the ending, rapid_start_end=speeds up both ends with natural motion in the middle.
split_by_transitionsoptBOOLEANfalseDetect transition words and return one conditioning entry per scene for FunPack LTXAV Scene Chain Sampler. Leave off for normal single-conditioning workflows.
latentoptLATENTOptional video latent for creativity masking. Takes priority over any saved latent for this key. Connect your i2v or previous KSampler output here.
steer_modeoptCOMBOrelativeRelative: per-prompt steering (finds the best conditioning for THIS prompt — default). Absolute: pull conditioning toward the global learned taste, regardless of prompt. Both: layer them.
absolute_strengthoptFLOAT0.600–2How hard Absolute mode pulls toward the global taste direction. 0.6 is visible but non-destructive; raise for stronger override of the prompt.

Outputs (7)

NameTypeDescription
modified_positiveCONDITIONING
statusSTRING
training_infoSTRING
loss_graphIMAGE
encoded_promptsSTRING
modelMODEL
video_latentLATENT