Nodes/Symbiotica/Symbiotica Template Builder
ComfyUI Node

Symbiotica Template Builder

Packing a client's reference art into one template sheet — the job this node automates

By symbiotica-ai·Created 6 months ago·Updated about 13 hours ago· 2
Symbiotica Template Builder
  • spec
  • template
  • sheet
  • bundle_json
modeprefill_from_specs
preset_modelqwen-image
resolution1K
aspect_ratio1:1
algorithmshelf
distribute_by_foldertrue
group
assets_root
sheet_name
max_width2048
max_height2048
padding0
border0
grid_cell0
columns1
background#808080

If you landed here cold, know this up front: the Builder doesn't draw anything. It needs no API key, calls no model, and runs on nothing but Pillow. It's a layout machine for a very specific pipeline - Symbiotica's order workflow, where a client hands you a monthly .xlsx order plus a folder of reference images, and you have to produce game-art template sheets from it. If you don't have that problem, this node is probably not for you. If you do, it's the step that turns "which asset goes where" into an actual sheet you can edit, and it saves you the manual packing.

It sits between two other Symbiotica nodes. Upstream, an Order Read → Event Specs pair parses the month's order into an event spec - that's the spec input here, type SYMBIOTICA_EVENT_SPEC. Downstream, the template output feeds Symbiotica Template Prompt, which turns the sheet's regions into the edit prompt for the Nano Banana edit nodes. The Builder is where the reference art physically gets packed onto a canvas.

How it works

The mode combo picks the whole job:

  • prefill_from_specs (default) packs the client's reference images into reference strips. Single-reference assets get a flipped pair; multi-reference assets get one cell per stage. This is the mode you'll run every month.
  • catalog_grid instead grabs existing game art from your asset catalog, matched by category, for one template group. That's the "reuse what's already made" mode - you need group (the template group slug) and assets_root (the catalog folder) set, or it refuses.

Either way it packs onto a sheet using one of the algorithm options - shelf, maxrects, or grid - and saves the result to output/templates/<name>.png with a JSON region sidecar that records where every cell sits. That sidecar is what lets the editor, the prompt node, and the Regional Prompt node find the regions later.

The inputs that matter

For a beginner, most of this is "leave it alone." The ones you actually touch:

  • spec - the event spec wire from Event Specs. Non-negotiable.
  • mode, group, assets_root - mode and its two friends, described above.
  • preset_model, resolution, aspect_ratio - the model preset the sheet is sized for (qwen-image at 1K 1:1 by default). Pick custom to drive max_width/max_height yourself. Pick a resolution or aspect a preset doesn't support and the node raises, listing what it does support - that error is the feature, not the bug.
  • algorithm and distribute_by_folder - packing behavior; shelf with distribute-by-folder on is a sensible default.

Everything else (padding, border, grid_cell, columns, background) is advanced. background is a hex fill; leave it empty for transparency.

Outputs

  • template - the SYMBIOTICA_TEMPLATE wire. Feed it into Template Prompt or the Regional Prompt node.
  • sheet - the packed IMAGE. Wire it to a Preview or Save Image.
  • bundle_json - the same bundle as a JSON string, if you want to inspect or script it.

Install

This is one node of the Symbiotica pack, so you install the pack once:

cd ComfyUI/custom_nodes
git clone https://github.com/symbiotica-ai/comfyui-nodes.git symbiotica
pip install -r symbiotica/requirements.txt

Restart ComfyUI. Or skip all that: ComfyUI Manager → search Symbiotica → install. The pack's requirements.txt is just requests, pillow, and faster-whisper - nothing heavy, and no model files download for the template nodes.

Common issues

  • "no assets with reference files to prefill" - the month's reference folder is missing or empty. Check the Order Read project folder's month refs, not the node.
  • catalog_grid with no assets_root - it needs the catalog path; it can't guess.
  • A named group not in the spec - the node raises and helpfully lists what the spec actually holds. That's usually a stale slug, not a bug.

The name is a lie, it doesn't call any API and needs no key - you're just making sheets. That's the whole appeal: the boring layout work becomes a deterministic node you can re-run.

Categorysymbiotica/pipeline

Inputs (17)

NameTypeDefaultDescription
specSYMBIOTICA_EVENT_SPEC
modeCOMBOprefill_from_specs2 options: prefill_from_specs, catalog_grid
preset_modelCOMBOqwen-image5 options: nano-banana-pro, nano-banana-2, imagen-4, qwen-image, custom
resolutionCOMBO1K4 options: 0.5K, 1K, 2K, 4K
aspect_ratioCOMBO1:114 options: 1:1, 16:9, 9:16, 4:3, 3:4, 3:2, +8
algorithmCOMBOshelf3 options: shelf, maxrects, grid
distribute_by_folderBOOLEANtrue
groupoptSTRINGTemplate group slug (required for catalog_grid; filters prefill when set)
assets_rootoptSTRINGGame asset catalog folder (catalog_grid mode)
sheet_nameoptSTRINGSaved sheet name (defaults to the group / feature slug)
max_widthoptINT204864–8192Sheet width when preset_model=custom
max_heightoptINT204864–8192
paddingoptINT00–512
borderoptINT00–512
grid_celloptINT00–4096
columnsoptINT10–64
backgroundoptSTRING#808080Hex fill; empty = transparent

Outputs (3)

NameTypeDescription
templateSYMBIOTICA_TEMPLATE
sheetIMAGE
bundle_jsonSTRING