photo-editor
MPSTATS Photo Editor API. Use when generating product photos, photoshoots, infographics, recolors, in-action scenes, background removal/replacement, upscaling, prompt-based image edits for marketplace sellers (Wildberries, Ozon, YM).
By mpstats-io · 534 installs
npx skills add mpstats-io/claude-code-skills --skill photo-editor
Source repository · Upstream listing
MPSTATS Photo Editor
Internal MPSTATS service for AI generated visuals for marketplace product cards: background removal/replacement, upscaling, recolor, "product in action", prompt edit, photoshoots, infographics.
All requests go through the ready made scripts in scripts/ (Bash tool, do not rewrite the code ). Endpoints are asynchronous: each script handles submit → polling → saving files. Images are base64 encoded inside the scripts.
Two modes of operation
Choose deliberately — it changes all downstream behavior.
A. Technical operations (single step) — remove background , upscale , replace background , in action , recolor , freeform . Run the script → get the result → deliver. No research/brief. Use when a concrete action is requested ("remove the background", "upscale", "recolor to blue").
B. Design tasks (multi stage) — infographics and photoshoot . Full design work: think like a marketplace designer. Use when the request is about buyer value ("make an infographic", "refresh the card", "I need a photoshoot"). Use the stage guides in references/ — these are thinking guides, not checklists:
Stage File When
1. Research [references/01 research.md](references/01 research.md) Default for mode B unless the user chose "no research".
2. Brief [references/02 brief.md](references/02 brief.md) Always before generating in mode B. Also covers all prompt craft: prompt structure, slide series, length limit, content filter.
3. Generate [references/03 generate.md](references/03 generate.md) Always. Before running, ask: "the full batch right away, or a test frame first?".
4. Deliver [references/04 deliver.md](references/04 deliver.md) Mandatory, read BEFORE showing the result. Show every frame via Read with an anchor caption, not a list of paths.
Mode B start — mandatory question
When a task is identified as mode B, the first thing to do is ask a single question:
Run full research (competitor analysis, reviews, visual benchmark) or generate right away from your prompt / description?
Possible answers and what to do:
User answer Action
"with research" / "full analysis" / silence (no explicit refusal) Run Stage 1 → 2 → 3 → 4 in full
"no research" / "generate right away" / "from my prompt" Skip Stage 1, go straight to Stage 2 (brief from the user's description) → 3 → 4. State explicitly: "Skipping research — quality may be lower, but it's faster."
User provides a ready prompt in the message Clarify: use it as is or run it through the brief (length check, block structure, product lock)?
Exception: if the user already explicitly stated "no analysis" / "no research" in the first message — don't ask, go straight to Stage 2.
Config
Credentials in config/.env (gitignored): PHOTO EDITOR TOKEN (header X Mpstats TOKEN ) and optional PHOTO EDITOR BASE URL (default https://mpstats.io/api/big data/proxy ). Setup and variables: [config/README.md](config/README.md).
If the token is missing (or it is your token here ), the agent must ask:
Output location
Do NOT put results in the skill folder — the skill is code, output is data. Default ~/.claude/output/photo editor/<event id / , override via PHOTO EDITOR OUTPUT DIR .
For mode B, after generation copy the files into a clean per SKU folder with meaningful names ( slide 1 hero.png , etc.) — event id contains : , which breaks image rendering in some UI clients, and per SKU is easier for the user to navigate.
Multi angle input: wb:<sku
In infographics.sh and photoshoot.sh the first argument can be wb:<sku or wb:<wb url instead of a file path. The skill downloads all product photos from the WB CDN ( wb fetch photos.sh , cached in ~/.claude/cache/photo editor/wb photos/<sku / ): the first → main image , the rest → reference images (max 5, the API won't accept more).
For multi angle input, in the product lock instruction write "preserve product identity ", NOT "preserve same orientation" — otherwise the model copies the first photo's angle onto every slide. More on the prompt — references/02 brief.md .
Infographics: a series of N slides
infographics.sh generate <img "<prompt " <count creates a series of count slides (1..6) in a single call. Flow: test (a trial frame) → approve → generate <N ; or auto (test + generate at once).
Minimum output is 4 frames. The endpoint always returns max(4, image count) images — requesting count=1..3 still yields 4. Photoshoot has no such limit.
The prompt sets the high level direction + frame themes , not the layout of each slide — otherwise you get a 2×3 collage on a single canvas. Prompt craft details — references/02 brief.md .
Models
Mask Tier Default Aspect ratios Available for
model 1 Standard ✅ all except infographics 1:1, 3:4, 4:3, 2:3, 3:2 all endpoints
model 2 PRO ✅ infographics 1:1, 3:4, 4:3, 2:3, 3:2 all endpoints
model 3 PRO — 1:1, 3:4, 4:3, 2:3, 3:2 all endpoints
model 4 PRO — 1:1, 3:4, 4:3, 2:3, 3:2 all endpoints
model 5 PRO — 1:1, 3:4, 4:3 freeform, photoshoot
The backend does not accept model=auto — the skill resolves it to model 1 (Standard). For infographics the default is hard wired to model 2 (PRO) — best Cyrillic quality. Specify an explicit model only if you have a hypothesis why.
Scripts
Script When to use
remove background.sh <img Remove the background
upscale.sh <img Increase resolution
replace background.sh <img <template key Place the product on a stock background
in action.sh <img <template key Product in a ready usage scene
recolor.sh <img < hex Recolor the product
freeform.sh <img "<prompt " [model] [ar] [refs] Freeform edit (single step)
photoshoot.sh auto <img "<prompt " <count Photoshoot (test → generate in one command)
photoshoot.sh test \ generate When you need to approve the test frame separately
infographics.sh auto <img "<prompt " <count Infographics (test → generate)
infographics.sh test \ generate Same as photoshoot
templates.sh backgrounds [key] List template key for replace background
templates.sh in action [key] List template key for in action
wb fetch photos.sh <sku or url [max=8] Download WB product photos. Called automatically on wb:<sku input
health.sh Check the service
run.sh <endpoint <body json Universal submit + poll
poll.sh <event id Wait for a ready event id
Decision Guide
"clean up the background" → A, remove background.sh
"make it bigger/sharper" → A, upscale.sh
"change the background to a studio/marble" → A, templates.sh backgrounds → replace background.sh
"show the product in use" → A, templates.sh in action → in action.sh
"recolor to hex" → A, recolor.sh
"fix the lighting / remove the glare / add a shadow" → A, freeform.sh
"make an infographic / photoshoot", "refresh product card X" → B, start with references/01 research.md
Errors
msg What to do
process completed Done, files saved
process completed + output.image: [] Content filter → rephrase the prompt ( references/02 brief.md )
process error Read error.message , show it to the user
process timeout The server didn't finish in time; reduce count or change the model
Prompt size exceeds maximum allowed length Most often the cause is line breaks ( \n ) in the prompt , not an actual limit overflow. Pass the prompt as a single line. If the error persists after that — shorten the prompt: references/02 brief.md → Technical limits.
AUTH ERROR Invalid credentials — see the Config section
Local poll timeout The script stopped polling; the event id remains — poll.sh <event id