Creative Scene Edit
The paid node with no free fallback — and the one that makes lifestyle shots
- selected_image
- product_specification
- ranking
- edited_image
- scene_edit
- scene_edit_json
Every other paid node in this pack has a provider dropdown with a mock escape hatch. This one doesn't - its provider list is ["openai"], full stop. AFS_SceneEdit is the only stage you cannot rehearse for free, and that's because what it does is inherently a real-model job: it takes your selected on-model image and re-renders it in a new scene using gpt-image-2 (via OpenAI's images.edit), while pinning the garment to the specification. It's the difference between "here's the product on a model" and "here's the product on a model in a softly lit minimalist studio, garment unchanged."
The mechanism is the pack's guardrail design at its best. The node builds a prompt from your instruction and then appends the product specification's must_preserve and forbidden_changes lists as hard constraints - "six buttons, left chest logo" and "do not mirror logos or text" get wrapped around your creative direction. That prompt, plus the selected image encoded as PNG, goes to gpt-image-2 at 1024x1024, high quality. The response comes back as base64, decodes into a tensor, and lands in your graph as a normal IMAGE again. Cost is estimated from the image-edit token usage and charged against the per-run ceiling, and transient failures retry with bounded backoff. This is the textbook API-wrapper-node shape from the broader ecosystem - a closed model with no open weights, so there's no local alternative, and your data leaves the machine by design.
Inputs, briefly: selected_image (from Rank Candidates), product_specification (the guardrail source), ranking (for run provenance), instruction (multiline, defaults to "Place the model in a softly lit minimalist studio." - change this, it's the entire point), and provider (openai only). Outputs: edited_image, a scene_edit record (edit ID, model, latency, estimated_cost_usd), and scene_edit_json.
Requirements are the same live-node stack: pack installed with pip install -r requirements.txt, OPENAI_API_KEY in the ComfyUI launch environment, restart. Missing key → ConfigurationError at execution. Empty instruction → ValueError. Both fail before spending anything, which is decent manners.
The honest economics: image edits are the priciest calls in this pack - the pricing table it ships charges image output tokens on a separate, higher schedule, and it uses quality: "high". One edit is not four analysis calls, but it's not nothing either, and it's the first stage that will actually feel the $10 per-run ceiling if you iterate. Also worth knowing: the output is fixed at 1024x1024, so if your selected image has a different aspect ratio, expect letterboxing or a recomposed frame - that's the API's constraint, not a bug.
The one caveat that applies to the whole live stack: this is a brand-new pack with no community track record. It reads its key from the process environment and never writes secrets into workflows, which is the pattern you want - but for the most expensive node in the graph, sanity-check the source once before you point it at a real shoot. If it works as advertised, it's the node that turns a catalog flat into a campaign shot.
Inputs (5)
| Name | Type | Default | Description |
|---|---|---|---|
| selected_image | IMAGE | — | |
| product_specification | AFS_PRODUCT_SPEC | — | |
| ranking | AFS_RANKING_RESULT | — | |
| instruction | STRING | Place the model in a softly lit minimalist studio. | — |
| provider | COMBO | openai | 1 options: openai |
Outputs (3)
| Name | Type | Description |
|---|---|---|
| edited_image | IMAGE | — |
| scene_edit | AFS_SCENE_EDIT_RECORD | — |
| scene_edit_json | STRING | — |