Nodes/saya-comfy-couple-plus/Saya Couple Prompt Bundle UNPACK
ComfyUI Node

Saya Couple Prompt Bundle UNPACK

The other half of the envelope, and it does the thinking

By alphaziod·Created 3 months ago·Updated about 15 hours ago· 3
Saya Couple Prompt Bundle UNPACK
    • base_prompt
    • person_1_prompt
    • person_2_prompt
    • negative_prompt
    • combined_positive_prompt
    • couple_config
    prompt_bundle_json

    Where SayaCouplePromptBundlePack is the envelope, this is the person who opens it - and unlike the pack side, it does a little useful work on the way out. Feed it the JSON string a Pack node produced (or that you recovered from a saved workflow or a text file), and it hands you back the four original prompts plus a combined_positive_prompt and a ready-to-use couple_config. It's how an isolated later phase rebuilds the couple prompt block without a human re-typing it.

    The single required input, prompt_bundle_json, is a multiline string marked forceInput, which just means ComfyUI treats it as a wired value rather than a box you type in - you're expected to connect it from somewhere, typically the Pack node or a stored-string node.

    What comes out

    • base_prompt, person_1_prompt, person_2_prompt, negative_prompt - the four originals, restored.
    • combined_positive_prompt - the three positive blocks joined into one comma-separated string (empty pieces skipped). Handy when a downstream branch just wants a single positive and doesn't care about the region split.
    • couple_config - the normalized SAYA_COUPLE_CONFIG, ready to feed straight into a SayaComfyCoupleCopy node so the phase rebuilds the same mask geometry and binding.

    The unpack side is also where solo vs. duo is enforced. The bundle's config carries a person_2_enabled flag, and if it says person 2 is off, this node blanks person_2_prompt before it leaves - so a later phase can't accidentally resurrect a second character that the base generation never drew.

    The fallback behavior (this is the clever bit)

    If the input isn't valid JSON at all - say something mangled it, or you pasted a raw prompt in by mistake - it doesn't throw. The whole string is treated as the base_prompt and everything else comes back empty, with a default solo config. You get a degraded but runnable result instead of a hard failure in the middle of an expensive pipeline. Given that this node sits at phase boundaries where errors are annoying, that's the right design call. Worth knowing though: a typo'd bundle will silently produce "everything became the base prompt," so if a phase suddenly looks wrong, check what actually came out of prompt_bundle_json.

    If you're only running a single couple pass in one graph, you don't need this node - the prompts already exist on their encode nodes, and the master SayaComfyCouple node exports its own couple_config directly. Unpack earns its place when prompts have to survive a trip through disk, metadata, or a separate saved graph.

    Same install as the rest of the pack: ComfyUI Manager search saya-comfy-couple-plus, or clone https://github.com/alphaziod/saya-comfy-couple-plus into custom_nodes and restart. No model downloads, no heavy deps - and remember the whole pack is explicitly work-in-progress, so the bundle schema version exists for a reason: back up anything you care about before updating.

    Categorysaya/image phases

    Inputs (1)

    NameTypeDefaultDescription
    prompt_bundle_jsonSTRING

    Outputs (6)

    NameTypeDescription
    base_promptSTRING
    person_1_promptSTRING
    person_2_promptSTRING
    negative_promptSTRING
    combined_positive_promptSTRING
    couple_configSAYA_COUPLE_CONFIG