CivArchive
    Forge Neo Extension - Two Character Composer - v1.0
    NSFW
    Preview 134752942

    Still in Test Phase - You Need Forge Couple installed (https://github.com/Haoming02/sd-forge-couple)

    I was a bit annoyed by needing to change my prompt or loosing the layout of it, when using Forge Couple or Regional Prompt, so i tried to make an own extension for better avoiding of character bleeding. Also Forge Couple had problems with batch generations. This extension works not perfect, but it helps.

    It is pretty simple. Instead of writing one long mixed prompt, you get three prompt fields:

    • Global Prompt (replaces the positive prompt field, when the extension is not enabled)
      For the scene, style, lighting, camera, and shared action
      Interaction should be prompted here

    • Character 1 Prompt for the first character’s look, outfit, LoRA, and details
      Action of the Character here, helps to get pose right

    • Character 2 Prompt for the second character’s look, outfit, LoRA, and details
      Action of the Character here, helps to get pose right

    Each character also has a simple position grid. You click or drag on the grid to mark where that character should appear in the image. The extension then uses regional attention masking through Forge Couple to guide each character prompt toward its own area. If you want to add to the area later, hold down strg.

    It can help with:

    • keeping outfits separated

    • reducing character feature mixing

    • making two LoRAs easier to use together

    • giving each character a rough position

    • making batch generation easier than manual Forge Couple setup


    Basic Usage

    1. Enable Two Character Composer.

    2. Write shared scene/style text in Global Prompt.

    3. Write Character's details in Character 1/2 Prompt.

    4. Mark each character’s rough area on the position grids.

    5. Generate normally.

    If you click only one grid cell, it is treated like the character’s rough body center.
    If you drag over multiple cells, it becomes a simple body/region mask.

    Controls

    Position Strength
    Controls roughly how strongly each character follows its selected region.

    Spread
    Makes single-cell positions looser or tighter.

    Batch Jitter
    Adds slight random movement between batch images, so positions do not stay too rigid.

    Global Weight
    Controls how much the global prompt affects the whole image.

    If you have any problems, please tell me, so that i can have a look on it. Thanks :)

    Description

    First Upload - Testphase, not perfect haha

    FAQ

    Comments (11)

    WrackerRioterJun 24, 2026
    CivitAI

    The canvas is almost completely destroyed... I don't know, maybe my 27-inch monitor is affecting that. It works with Illustrious but not in Anima. Forge Couple is compatible with Anima. I guess I'll have to forgo using it.

    wo_character_composer.py", line 119, in text_to_cond

    raise NotImplementedError("Two Character Composer currently supports SD1 and SDXL-style checkpoints.")

    NotImplementedError: Two Character Composer currently supports SD1 and SDXL-style checkpoints.

    furyon
    Author
    Jun 24, 2026

    So far i don't use Anima - as i dont see much benefit in it for me yet. Thats why i did not tested it. I will add it.

    What do you mean with it destroys your canvas?

    BMTZZJun 24, 2026
    CivitAI

    thats goated, any chance that it would be possible to "randomize" it a bit. Flip it horizontally or vertically . I do a lot of batchgens with random resolution and wildcards it would be really cool if the extension could just Flip itself horizontally or vertically between every gen 👀

    furyon
    Author
    Jun 24, 2026

    It already should be able to adapt to batch genning and wildcards, when you put the placements for the Characters and swap the resolution afterwards, the position should adapt to it. (I dont have a way to batch gen in random resolutions, as i dont use agent scheduler or something similar)

    To randomize it a bit, you can increase the batch jitter (but it is experimental so far). But it is only a rough help for character locations, and more there to prevent character bleeding.

    But i can add a randomizing option so characters swap places in between, if you mean this.

    furyon
    Author
    Jun 25, 2026

    I just uploaded a new Version

    BMTZZJun 25, 2026

    @furyon ooo thank you,. ill try it out once im off work !

    BIG_AJun 25, 2026
    CivitAI

    How do I install this? Do I just extract the files and overwrite the Forge Couple folder?

    furyon
    Author
    Jun 25, 2026· 1 reaction

    No, just extract the files and put it in your extension folder. Update Forge Couple as well if you use Anima, as the newest version supports it.

    BIG_AJun 25, 2026

    @furyon thx,bro

    burnable53Jun 26, 2026· 1 reaction
    CivitAI

    This is an amazing extension! It works perfectly fine on reForge as well.

    However, due to a conflict with another tagcomplete extension, previews for features like wildcards do not work properly. I found that modifying the following parts makes it work much better:

    Line 189: classList.add(...) → classList.toggle(..., enabled) — Fixed a bug where the original prompt field remains hidden even when TCC is disabled.

    Line 197: syncPrompt(); → window.setTimeout(syncPrompt, 0); — Fixed an issue where syncPrompt interrupts synchronously before Tab completion for wildcards consumes the tacSelfTrigger flag.

    // Before function updateEnabledState() { const enabled = isEnabled(); const prompt = wrapper("txt2img_prompt"); if (prompt) prompt.classList.add("tcc-hidden-positive-prompt"); setVisible("tcc_char1_row", enabled); setVisible("tcc_char2_row", enabled); setVisible("tcc_tuning_row", enabled); setVisible("tcc_randomize_row", enabled); setVisible("tcc_background_tools", enabled); syncPrompt(); } // After function updateEnabledState() { const enabled = isEnabled(); const prompt = wrapper("txt2img_prompt"); if (prompt) prompt.classList.toggle("tcc-hidden-positive-prompt", enabled); setVisible("tcc_char1_row", enabled); setVisible("tcc_char2_row", enabled); setVisible("tcc_tuning_row", enabled); setVisible("tcc_randomize_row", enabled); setVisible("tcc_background_tools", enabled); window.setTimeout(syncPrompt, 0); }

    furyon
    Author
    Jun 26, 2026

    I will have a look on it. :)

    Other
    Illustrious

    Details

    Downloads
    32
    Platform
    CivitAI
    Platform Status
    Available
    Created
    6/24/2026
    Updated
    6/28/2026
    Deleted
    -

    Files

    forgeNeoExtensionTwo_v10.zip

    Mirrors

    CivitAI (1 mirrors)

    forgeNeoExtensionTwo_v10.zip

    Mirrors

    CivitAI (1 mirrors)