photo-editor

v2026.09.24

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).

GitHub
安装命令
npx skhub add mpstats-io/photo-editor
Markdown
SKILL.md

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:

StageFileWhen
1. Researchreferences/01-research.mdDefault for mode B unless the user chose "no research".
2. Briefreferences/02-brief.mdAlways before generating in mode B. Also covers all prompt-craft: prompt structure, slide series, length limit, content-filter.
3. Generatereferences/03-generate.mdAlways. Before running, ask: "the full batch right away, or a test frame first?".
4. Deliverreferences/04-deliver.mdMandatory, 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 answerAction
"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 messageClarify: 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.

If the token is missing (or it is your_token_here), the agent must ask:

I need an MPSTATS API token (X-Mpstats-TOKEN) for Photo Editor — get it from your MPSTATS account → API and send it over, I'll write it into config/.env.

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).

infographics.sh generate wb:164419278 "$PROMPT" 5

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

MaskTierDefaultAspect ratiosAvailable for
model_1Standard✅ all except infographics1:1, 3:4, 4:3, 2:3, 3:2all endpoints
model_2PRO✅ infographics1:1, 3:4, 4:3, 2:3, 3:2all endpoints
model_3PRO—1:1, 3:4, 4:3, 2:3, 3:2all endpoints
model_4PRO—1:1, 3:4, 4:3, 2:3, 3:2all endpoints
model_5PRO—1:1, 3:4, 4:3freeform, 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

ScriptWhen 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 | generateWhen you need to approve the test frame separately
infographics.sh auto <img> "<prompt>" <count>Infographics (test → generate)
infographics.sh test | generateSame 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.shCheck 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

msgWhat to do
process_completedDone, files saved
process_completed + output.image: []Content-filter → rephrase the prompt (references/02-brief.md)
process_errorRead error.message, show it to the user
process_timeoutThe server didn't finish in time; reduce count or change the model
Prompt size exceeds maximum allowed lengthMost 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_ERRORInvalid credentials — see the Config section
Local poll timeoutThe script stopped polling; the event_id remains — poll.sh <event_id>
发现
标签

此技能尚未发布标签。

版本
最新版本元数据

版本

v2026.09.24

发布时间

2026年9月24日

分类

未分类

许可证

MIT

源路径

photo-editor

默认分支

main

最新提交

1ef970e

Tree SHA

550eba3