--- name: lifestyle-product-scene description: Place a real product photo into a believable real-world scene, such as a cafe counter, bathroom shelf, desk or garden table, with matched light direction, colour temperature, shadows and reflections, while the product's shape, colour, label and logo stay exactly as photographed. Ten scene recipes with light notes, a draft-then-final workflow and a side-by-side fidelity check. 4:5, 1:1 or 16:9. metadata: type: image version: 1.0.0 category: Product photos tagline: Use this Skill to put your real product into a believable lifestyle scene without a photoshoot. made-for: Brands, E-commerce sellers, Creators, Agencies generates-with: Still image, 4:5, 1:1 or 16:9, from a product photo (openai/gpt-image-2/edit) requires: Node.js 20.9 or newer (sharp needs it); run `npm install sharp` in the Skill folder for scripts/compare.mjs outside-costs: None in the Skill. The image model you send the request to may charge about 2 cents per draft and 30 cents per final image. updated: 2026-10-16 title: Lifestyle product scene availability: live summary: Place your real product into a believable scene with matched light, shadows and reflections, keeping label and shape exact. command: /lifestyle-product-scene my coffee bag on a morning cafe counter with steam, 4:5 output: JPEG ยท 4:5, 1:1 or 16:9 scene required-input: Product photo creator: meleon --- # Lifestyle product scene Use this skill when someone has a plain photo of a real product and wants it to look as if it was shot in the real world: on a cafe counter in morning light, on a bathroom shelf, on a desk. The product stays the same. The room, the light and the shadows are new. ## What you need - The product name. - One product photo, as a public URL. The whole product in frame, in focus, label readable. - A scene: one of the ten recipes in `references/scenes.md`, or the person's own description. - The ratio: 4:5 (default), 1:1 or 16:9. - Props, as a short list. Optional. If the photo is missing, ask for it. Do not invent the product. If the photo shows several objects, say which one is the product. ## What you make One still image of the same product in a real scene: 4:5 (1600 x 2000), 1:1 (2048 x 2048) or 16:9 (2048 x 1152), as a JPEG, with a side-by-side comparison against the original photo. ## How to run it 1. Read `references/scenes.md` and pick the scene recipe that fits the product and the channel. 2. If the photo is a local file, upload it to a temporary host you control to get a public https URL, and delete it afterwards. Run `node scripts/build-input.mjs --product "" --image --scene --ratio 4:5 --draft` to print a cheap draft request. Add `--props "..."` for details such as steam or a lemon. The preview used `--scene cafe-counter --props "fresh coffee in the mug with a clearly visible soft curl of steam rising, backlit by the window"`. POST the printed JSON `input` to fal model `openai/gpt-image-2/edit` with the person's own `FAL_KEY` (this Skill never stores keys). Without a key, paste the printed prompt and the product photo into any GPT-Image-class editor that takes a reference image (the fallback model `fal-ai/nano-banana-pro/edit`, about $0.15 per image, also works: run the script with `--model fallback` to print its fields, which are `aspect_ratio` and `resolution` instead of `image_size` and `quality`). If you uploaded the photo to a public URL for this, delete it afterwards. 3. Look at the draft. Check composition, light direction and the label. 4. Run the same command without `--draft` and send it. This is the final. The defaults (4:5, 1600 x 2000, high quality) produced `assets/preview.webp`. 5. Run `node scripts/compare.mjs --input --scene --output compare.jpg` and look at it. Work through `references/output-spec.md`. The product must match the photo. 6. If a check fails: max 3 attempts, change one thing per attempt (a simpler scene, one prop fewer, the fallback model via `--model fallback`; say which), view each output beside the input, then return the best one and say what still differs. Never return a scene that misrepresents the product. 7. Return the final image and the prompt you used. ## Files - `references/scenes.md` and `references/scenes.json`: ten scene recipes with light and camera notes, and how to write a custom one. - `references/lighting-and-fidelity.md`: matching light, keeping the product unchanged, failure modes and fixes. - `references/output-spec.md`: sizes, format and the checklist. - `assets/prompt-template.md`: the prompt to fill in. - `assets/generation-input.json`: the model, sizes for each ratio, draft sizes (not below the model's minimum pixel count) and the fallback model. - `assets/example-input.webp` and `assets/preview.webp`: a real input photo and the scene made from it. - `scripts/build-input.mjs`: prints the full model request. It does not call any API. - `scripts/compare.mjs`: builds the original-versus-scene side by side. Needs `sharp`.