Nodes/ComfyUI-VULCA/VULCA Evaluate (L1-L5)
ComfyUI Node

VULCA Evaluate (L1-L5)

An art critic (AI) grades your image on five levels — try it free in mock mode

By vulca-org·Created 5 months ago·Updated 2 months ago· 1
VULCA Evaluate (L1-L5)
    • scores_json
    • L1
    • L2
    • L3
    • L4
    • L5
    image_path
    brief_path
    traditionchinese_xieyi
    mocktrue

    This is the marquee node of ComfyUI-VULCA - the one the whole pack is built around. Drop any image in, and it grades it on five cultural dimensions (L1 through L5) against one of thirteen art traditions, then hands you both a JSON dump and the individual scores as floats. The point isn't "is it pretty," it's "does this image land as Chinese xieyi rather than a western imitation of it." If you've ever wanted a second opinion on whether your AI art is culturally coherent, this is the closest thing to a reviewer with a rubric.

    The five levels come from the VULCA framework (an EMNLP 2025 Findings paper, if you want the academic pedigree): L1 Visual Perception, L2 Technical Execution, L3 Cultural Context, L4 Critical Interpretation, L5 Philosophical Aesthetics. You get a percentage-style score for each.

    How it works

    Two modes, and they behave differently. If you leave brief_path empty, it does a plain tradition-based evaluation via the SDK - grade this image against chinese_xieyi, say. If you supply a brief_path, it switches to brief-based evaluation, comparing the image against the intent and constraints you recorded earlier. That's the full loop: Brief → Generate → Evaluate against the brief.

    The other switch that matters is mock. It defaults to true, and in mock mode you get deterministic placeholder scores with no API key and no network calls - perfect for testing your workflow. For real scores you turn mock off and export a Google API key (export GOOGLE_API_KEY=your-key per the pack README). The evaluation is done by a vision-language model, so it's a real critique with reasoning, not a classifier score.

    The inputs and outputs that matter

    • image_path (required) - any image on disk.
    • brief_path (optional) - include it for brief-based grading; omit for tradition-only.
    • tradition - defaults to chinese_xieyi. Set it to whichever of the 13 traditions you're working in.
    • mock - true by default; flip it off for real evaluation.

    Outputs: scores_json (the full structured result), plus L1, L2, L3, L4, L5 as separate floats. Those individual floats are the reason this node is fun in ComfyUI - you can wire L3 into a comparison node and auto-route: "if Cultural Context under 70, send back to VULCA Update, else save."

    Install and troubleshooting

    cd ComfyUI/custom_nodes/
    git clone https://github.com/vulca-org/comfyui-vulca
    pip install "vulca>=0.12.0"
    

    Restart, or just use ComfyUI Manager (search "VULCA"). No model files to fetch - the vulca SDK does the work.

    Where people get confused: if every score comes back looking flat or zero-ish, you're almost certainly still in mock mode - that's the placeholder behavior, and it's working as designed. Turn mock off and export the key. And the usual pack trap: if a node dies with ModuleNotFoundError: vulca, the SDK pip install was skipped. One more thing to know - this node, like its siblings, works on file paths and JSON, not tensor types, so the float outputs are what you route with.

    CategoryVULCA

    Inputs (4)

    NameTypeDefaultDescription
    image_pathSTRING
    brief_pathoptSTRING
    traditionoptSTRINGchinese_xieyi
    mockoptBOOLEANtrue

    Outputs (6)

    NameTypeDescription
    scores_jsonSTRING
    L1FLOAT
    L2FLOAT
    L3FLOAT
    L4FLOAT
    L5FLOAT