Saya Couple Prompt Bundle UNPACK
The other half of the envelope, and it does the thinking
- base_prompt
- person_1_prompt
- person_2_prompt
- negative_prompt
- combined_positive_prompt
- couple_config
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 normalizedSAYA_COUPLE_CONFIG, ready to feed straight into aSayaComfyCoupleCopynode 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.
Inputs (1)
| Name | Type | Default | Description |
|---|---|---|---|
| prompt_bundle_json | STRING | — |
Outputs (6)
| Name | Type | Description |
|---|---|---|
| base_prompt | STRING | — |
| person_1_prompt | STRING | — |
| person_2_prompt | STRING | — |
| negative_prompt | STRING | — |
| combined_positive_prompt | STRING | — |
| couple_config | SAYA_COUPLE_CONFIG | — |