Nodes/ComfyUI.RaccoonAI/Raccoon Config 🦝
ComfyUI Node

Raccoon Config 🦝

The node that does nothing (on purpose)

By sayuno·Created 4 months ago·Updated 2 months ago· 1
Raccoon Config 🦝
  • checkpoint
  • positive
  • negative
  • ksampler
  • ksampler_advanced
    extra{}

    Look at this node's code and you'll think it's broken. Its execute() just returns {}. It has no outputs, no math, no model loading. And that's the entire point: RaccoonConfig is a hint, not a processor.

    It belongs to the ComfyUI.RaccoonAI pack, which adds two buttons to your top menu bar - Save Inspiration 🦝 and Save Character 🎭. Click one and it scrapes your current workflow (prompt, checkpoint, LoRAs, sampler settings, the last generated image) and POSTs it to a local RaccoonAI server running at http://localhost:6969, where it lands as an "inspiration" or a character prompt card you can reuse later.

    The scrape is automatic, and that's where things go wrong. The pack guesses which nodes matter by scanning for node types and titles: a CLIPTextEncode titled "POSITIVE", a CheckpointLoaderSimple, the first KSampler it finds. That works great on a simple one-KSampler graph. The moment you have two samplers, an advanced refiner pass, or a bunch of CLIP text encoders, the guess is as likely to grab the wrong one. RaccoonConfig exists to remove the guessing.

    What it actually does

    When you click a Save button, the pack's front-end JavaScript (raccoon_utils.js) looks for a RaccoonConfig node in your graph. For every input you've wired, it follows the connection back to the source node and records it - that node is now the authoritative checkpoint, prompt, or sampler, and the auto-detection is skipped for it. It even resolves GetNode→SetNode chains, so rgthree-style virtual wires work.

    No RaccoonConfig in the graph? It falls back, in order: a Note titled RACCOON_CONFIG with a JSON body, then a named entry in js/raccoon_config.json keyed by workflow name, then plain auto-detection. The node is just the most visible of three ways to say "read from here."

    The inputs that matter

    Only four wires are worth your time, and they're all optional:

    • checkpoint - drop your checkpoint loader in here.
    • positive / negative - wire the CONDITIONING outputs of the CLIP text encodes you actually want saved.
    • ksampler or ksampler_advanced - wire a KSampler to capture seed, steps, CFG, sampler, scheduler, denoise. If you connect both, the advanced one wins, since it carries the noise seed.

    There's one required input that's easy to miss: extra, a JSON text field. Default {} is fine. Its one documented use is {"facePrefix": "raccoon_char_"} - a filename prefix the Save Character button uses to find the face-crop image in your workflow's output. If you don't name your face crops, it falls back to the last temp image.

    Install

    ComfyUI Manager is the easy route: search "ComfyUI.RaccoonAI" and hit install. Or:

    cd ComfyUI/custom_nodes
    git clone https://github.com/sayuno/ComfyUI.RaccoonAI.git raccoon_utils
    

    Restart ComfyUI and the two buttons appear in the top bar next to the Manager button. Note the folder name: the front-end fetches its config from /extensions/raccoon_utils/raccoon_config.json, so don't rename the clone or the named-config file silently stops loading. There's no requirements.txt and no model download - the whole pack is browser-side JS plus a one-line Python stub. The only real dependency is the RaccoonAI server itself on port 6969; without it, the buttons just throw.

    Where people get burned

    The extra field must be valid JSON - a typo gets swallowed silently and the node acts like nothing was configured. And remember this node is a terminal marker (it's marked an output node with no outputs), so you can't wire anything out of it; that's not a bug. If a Save button grabs the wrong node, wire the right source into RaccoonConfig rather than renaming everything to fit the heuristics. Ten seconds of wiring beats chasing a renamer through a 200-node graph.

    CategoryRaccoonAI

    Inputs (6)

    NameTypeDefaultDescription
    extraSTRING{}JSON opcional: { "facePrefix": "raccoon_char_" }
    checkpointopt*
    positiveoptCONDITIONING
    negativeoptCONDITIONING
    ksampleropt*
    ksampler_advancedopt*

    Outputs (0)

    No outputs