ComfyUI Node

Generate Comic

Generate Comic – ComfyUI Node Guide

By blob8·Created 2 years ago·Updated 11 months ago· 17
Generate Comic
  • model
  • clip
  • vae
  • latent_image
    story
    add_to_positive
    add_to_negative
    seed0
    steps20
    cfg8.00
    sampler_name
    scheduler
    num_columns2

    If you've ever wanted ComfyUI to spit out an actual laid-out comic page - panels, captions, the works - instead of one lonely image you then assemble in Photoshop, this is the node for that. It comes from a tiny pack called ComfyUI_sloppy-comic, and the name is honest self-deprecation: a one-person side project that does one weird, specific thing without ceremony.

    What it actually does

    Generate Comic is a terminal node. You don't wire an image out of it into more nodes - it takes your story, your model, and your sampler settings, runs the diffusion loop panel by panel, tiles the results into a comic page, and writes the page out directly. Under the hood it's basically a KSampler that learned to lay out a magazine: same model / clip / vae / latent_image inputs you'd feed a stock KSampler, same seed / steps / cfg / sampler_name / scheduler controls, wired the exact same way - checkpoint loader into model/clip/vae, an Empty Latent Image sized to your target resolution into latent_image. The twist is the story field: instead of one prompt, you write alternating narrative text and {bracketed} image prompts - text {prompt} text {prompt} and so on - and the node slices that into one prompt per panel, generates each one, then assembles the page and burns your narrative text in as captions.

    One real constraint, stated plainly by the author: it only supports SDXL-derived checkpoints right now. Point it at SD 1.5 or a Flux model and don't expect it to behave.

    Inputs and outputs that matter

    • story - the whole script, in the text {prompt} text {prompt} format. This is the one field where formatting actually matters; get it wrong and your panels won't split the way you expect.
    • add_to_positive / add_to_negative - text appended to every panel's prompt automatically, so your shared style tags and quality-negative boilerplate don't have to live inside every {bracket}.
    • model / clip / vae - the usual trio from your checkpoint loader.
    • seed / steps / cfg / sampler_name / scheduler - standard sampler knobs. Defaults are steps 20, cfg 8, which lines up with the safe general default for SD 1.5/SDXL-era models (DPM++ 2M Karras territory) - nothing exotic needed here.
    • latent_image - an Empty Latent Image at whatever page resolution you want.
    • num_columns - how many panels sit in a row before wrapping (default 2).

    There's no image output socket to wire elsewhere - is_output_node is true, so this is where the graph ends. If you're chasing an editable output further downstream, this isn't your node; it's meant to be the last stop.

    One thing worth flagging: the README's own parameter list (width, squares_per_row, bg_color, caption_positioning, shear) doesn't match what's currently on the node - the live schema has num_columns instead. Either the README is describing an earlier build or the layout controls got consolidated since it was written. Trust what's actually on the node in your install over the README's prose description.

    Installing it

    Easiest path is ComfyUI Manager - search for ComfyUI_sloppy-comic and install. Manually, it's the standard cd ComfyUI/custom_nodes && git clone https://github.com/blob8/ComfyUI_sloppy-comic then restart. The README also asks for pip install playwright opencv-python - don't skip this. And a heads-up the README doesn't give you: pip install playwright alone doesn't get you a browser. Playwright needs its binaries fetched separately (playwright install chromium), so if generation errors out looking for a missing browser executable, that's almost certainly it.

    For nicer panel-to-panel style consistency, the author suggests bolting on cubiq's ComfyUI_IPAdapter_plus with the ip-adapter-plus_sdxl_vit-h.safetensors model - the standard no-training way to hold a look across generations, typically run around 0.6–0.8 weight for style transfer. It's optional; skip it and just delete the three IPAdapter nodes at the top of the provided example workflow.

    Troubleshooting

    If the provided workflow loads with missing-node errors, that's most likely the text-preview node the author used to inspect the story field - ComfyUI Manager's "Install Missing Custom Nodes" resolves it in one pass. If your panels don't split the way you expect, check your story string against the text {prompt} text {prompt} format character by character - this node doesn't do anything clever with malformed input, it just breaks. And if you're pairing this with the pack's own LLM API Request node to auto-write the story: its seed field is a documented no-op, so don't burn time trying to lock a script in place with it.

    Worth setting expectations honestly - this is a small hobby pack with no real community track record behind it, so if something breaks in a way this guide doesn't cover, the README and the GitHub issues page are genuinely your whole support surface.

    CategoryComic generation

    Inputs (13)

    NameTypeDefaultDescription
    storySTRING
    add_to_positiveSTRING
    add_to_negativeSTRING
    modelMODEL
    clipCLIP
    vaeVAE
    seedINT00–18446744073709550000
    stepsINT201–10000
    cfgFLOAT8.000–100
    sampler_nameCOMBO34 options: euler, euler_cfg_pp, euler_ancestral, euler_ancestral_cfg_pp, heun, heunpp2, +28
    schedulerCOMBO9 options: normal, karras, exponential, sgm_uniform, simple, ddim_uniform, +3
    latent_imageLATENT
    num_columnsINT20–10

    Outputs (0)

    No outputs