---
name: product-photoshoot-batch
description: Batch product photography for e-commerce. Cuts out the product (remove_background), generates studio and lifestyle scenes with Kenerate keeping the product exact, optional extra angles, then packs every shot to marketplace specs (Amazon 2000x2000 pure white with 85% fill, Shopify, Etsy, Instagram, story) with checks and a contact sheet. Use when the user wants product photos, a photoshoot, packshots, listing images, Amazon / Shopify / Etsy images or lifestyle scenes for a product.
compatibility: Needs the Kenerate MCP server and Python 3.9+ with Pillow (ffmpeg not needed).
metadata:
  author: kenerate
  version: "1.0"
  kenerate-tools: "upload_media remove_background generate_image change_camera_angle upscale_image estimate_cost wait_for_generation"
---

# Product photoshoot (batch)

Rules: [references/KENERATE.md](references/KENERATE.md) (models and voices: [references/MODELS.md](references/MODELS.md), or the free `pick_model` / `pick_voice` tools). For a single scene, the MCP prompt `product_photoshoot` is enough;
this skill is for batches and marketplace-ready files.

## Ask the user
Product photo(s) (upload_media), product name and what must stay exact (label, colour), number of scenes (default 4),
scene ideas, and target marketplaces (amazon, shopify, etsy, instagram, square, story).

## 1. Cut-out (Kenerate)
`remove_background(image_url=product, mode="cutout")`. Use `cutout-hd` for glass, hair or smoke; `mode="extract", keep="<the product>"` when other things are in the photo. Wait with kind `"remove-bg"`.

## 2. Scenes (Kenerate)
For each scene, call `generate_image(prompt="<product> on <scene>, <light>, professional product photography, keep the product exactly as in the reference", reference_image_urls=[cut-out], model="kenerate/nano-banana-2", aspect_ratio="4:5")`.
Use `model="kenerate/nano-banana-2.1"` (keeps the product exact; `kenerate/gpt-image-2.5-sunburst` for small label text). For 4K, `upscale_image(model="image-upscaler", resolution="4k")` the keepers (MCP image calls have no size switch). List the scenes and the cost (list_models price x scenes), confirm,
start them all, then wait for each one.
Optional: `change_camera_angle(image_url=best, presets=["left-45","right-45","close-up"])` (7.5 credits per view);
`upscale_image(image_url=chosen, model="image-upscaler", resolution="4k")` for hero shots.

## 3. Pack for marketplaces (local)
```
python <skill-dir>/scripts/pack.py --inputs "<cut-out url>" "<scene1 url>" "<scene2 url>" \
  --presets amazon,shopify,instagram --name <project> --out-dir kenerate-out/product-photoshoot-batch
```
- The cut-out (transparent) becomes the Amazon main image: centred on pure #FFFFFF, product filling ~85%. The result
  reports `pure_white_background` and `fill_85pct` checks.
- Scene shots keep their scene (`keep`) and get a blurred fill if the ratio differs. `--bg "#F4F1EA"` forces a colour,
  `--fill 0.8` changes the fill.
- Output: one folder per preset, plus `<project>_sheet.jpg` and `<project>_report.json`.

## If something fails
"no plain background" warning → cut the product out first. A scene that changes the product (wrong label): retry with a
stronger "keep the product exactly" prompt or `kenerate/gpt-image-2.5-sunburst`. Ask first; failed jobs are refunded, retries are charged.
