Install
openclaw skills install @chancipher/motu-color-engineAI portrait grading, skin-tone correction, identity-preserving smoothing, mask export, approved clothing replacement, professional AI Headshots generation, and ID/passport/headshot/avatar production through the MotuArt Color Engine HTTP API. Use for retouching portraits, normalizing skin tone, expor
openclaw skills install @chancipher/motu-color-engineUse Motu Color Engine to process portrait images through the hosted HTTP API. Prefer the bundled scripts in scripts/ over hand-written curl calls unless the user explicitly needs raw API details.
The engine preserves identity. Do not describe it as slimming, reshaping, face swapping, or changing facial structure. Skin smoothing only softens pores and blemishes inside detected skin regions. Cropping repositions and pads to a spec; it never stretches or compresses the face.
curl and python3.MCE_API_BASE from the environment; default is https://mce.motu.art.MCE_API_KEY from the environment; send it only as X-API-Key.https://mce.motu.art/account (English: /en/account) to sign in by email and create one. Ask them to export it securely in their own environment; do not ask them to paste the full key into chat.catalog:read for portrait/ID discovery, portrait:process for grading/smoothing/masks, id-photo:process for ID-photo workflows, outfit:process for outfit replacement, and headshot:process for private AI Headshots projects and generation. An ID package with an outfit needs both id-photo:process and outfit:process.402 insufficient_credits instead of retrying.curl -sS "${MCE_API_BASE:-https://mce.motu.art}/v1/health" when diagnosing connectivity.scripts/grade.sh when the user wants color grading, skin-tone correction, a film/commercial look, or grading plus optional crop.scripts/smooth.sh when the user wants smoothing only with no color or white-balance change.scripts/portrait-lighting.sh when the user wants visibly more dimensional portrait lighting, a brighter facial plane, readable dark clothing, or a focused background without changing identity or geometry.scripts/mask.sh when the user wants a skin, valid-skin, face, or person mask/matte.scripts/crop.sh when the user wants crop-only ID/passport/visa/headshot/avatar output, optionally with a solid background color.scripts/outfit.sh when the user wants clothing replacement only. The outfit id must come from the approved catalog; never accept or invent a custom prompt or outfit id.scripts/outfits.sh before clothing replacement to discover currently enabled outfit ids. Do not infer an id from a garment name.scripts/id-pack.sh when the user wants a complete ID/passport photo delivery package: one graded/smoothed master, multiple specs, upload-ready files, compliance report, and optional print sheets.scripts/id-check.sh when the user wants to validate an ID photo against a spec or understand compliance warnings.scripts/optimize.sh when the user needs a website/upload-ready file with format, pixel size, DPI, or maximum KB constraints.scripts/print-sheet.sh when the user wants cropped ID photos laid out on photo paper for printing.scripts/headshots.sh when the user wants AI-generated professional, business, corporate, LinkedIn, or studio headshots. Keep reference preparation, confirmation, generation, candidate download, post-processing, and export as explicit stages; do not turn them into one automatic operation.scripts/styles.sh to discover live style ids. Read references/styles.md only when the user needs style-selection guidance or offline context.scripts/crop-specs.sh to discover live crop specs. Read references/crop-specs.md only when choosing specs or background palettes without live discovery.references/api.md for endpoint parameters, response fields, headers, limits, and error codes.references/headshots-api.md before operating the AI Headshots workflow or when the user needs its raw API details.scripts/grade.sh <input-image> <output-image> [style-id] [strength] [smooth-strength] [smooth-texture-retain] [crop-spec] [bg-color] [pad-color] [lighting-style] [lighting-strength]
style-id for the default skin base, or choose a style from scripts/styles.sh.strength for look intensity; default is 1.0, 0 disables the look, and values up to about 1.5 are stronger.smooth-strength from 0 to 1 only when the user asks for softened pores or blemishes. Omit it, or pass 0, to preserve natural texture.smooth-texture-retain from 0 to 1 to keep natural texture over smoothing; default is 0.35.crop-spec when the same output should be graded and cropped in one API call.bg-color only with crop-spec; use an allowed palette name such as white, blue, or red, default, or explicit #RRGGBB.pad-color only with crop-spec when a specific padding color is needed; otherwise let the API edge-replicate.lighting-style only when the same output should also receive portrait light sculpting; choose natural_dimension, soft_luminous, or studio_definition. Omit it to preserve the existing grading result.lighting-strength from 0 to 1 to override that preset's calibrated strength.skin_dE from script output when summarizing quality; lower means closer skin color to the target.For a folder, run the script once per image. Keep batch loops serial unless the user asks for parallelism and accepts API/load implications.
scripts/smooth.sh <input-image> <output.png> [strength] [texture-retain]
strength is 0.6.texture-retain is 0.35; raise it to preserve more natural texture.scripts/portrait-lighting.sh <input-image> <output.png> [style] [strength]
natural_dimension (default), soft_luminous, and studio_definition.strength to use the calibrated default for the selected style; otherwise use 0–1.soft_luminous prioritizes a luminous face and open dark midtones; natural_dimension balances face, wardrobe and background; studio_definition adds the strongest background focus and local definition.scripts/mask.sh <input-image> <output.png> [mask-kind]
skin by default.valid_skin, face, and person.scripts/crop.sh <input-image> <output-image> [spec-id] [bg-color] [pad-color]
spec-id is one_inch.scripts/crop-specs.sh to list supported specs and allowed background colors.bg-color only when the spec declares a background palette, mostly ID-photo specs.pad-color only when a source image lacks required margins and the user wants a specific fill.grade.sh with crop arguments when the user wants grading and crop in one output.scripts/id-pack.sh <input-image> <output-dir> [specs] [style-id] [smooth-strength] [bg-color] [upload] [print-sheet] [outfit-id] [outfit-long-edge]
grade.sh once per spec. The API generates one graded/smoothed master first, then crops multiple specs from that master so colour and retouching stay consistent.specs is comma-separated, e.g. passport_cn,one_inch,us_visa; default is passport_cn. School/enrollment specs include shanghai_compulsory_education_cn, college_graduation_image_cn, and national_k12_student_status_cn.motu_business_neutral; pass smooth-strength from 0 to 1 only when the user asks for smoothing.bg-color defaults to default, which applies each spec's standard background palette. Use white, blue, light_blue, red, or #RRGGBB when the user asks and the spec allows it.upload defaults to true, writing upload-optimized JPG files using the spec's upload rules from crop_specs.json.print-sheet is optional, e.g. 6x4 or a4; when specs have different sizes, separate sheets may be generated.outfit-id is optional. When present, it must be an id returned by scripts/outfits.sh; omitted keeps the original clothing.outfit-long-edge controls the upstream outfit result size, defaults to 1536, and is bounded by the service to 512–2048px.master.png, single/, upload/, print/, and report.json. Surface compliance status and warnings from the report.Discover the approved catalog first:
scripts/outfits.sh
Select only an id returned by that command, then replace clothing:
scripts/outfit.sh <input-image> <output.png> <approved-outfit-id> [long-edge]
GET /v1/outfits; the API maps each approved id to its controlled generation prompt and rejects custom prompts or arbitrary ids.male, female, kids, or unisex; use the category and localized name/description to help select a suitable style.Use one work directory for the whole staged workflow. The script stores non-secret ids,
responses, and configuration in headshots.json; it never stores MCE_API_KEY.
Discover current options:
scripts/headshots.sh catalog [locale]
List reusable confirmed people:
scripts/headshots.sh people [limit]
Prepare a graded, optionally smoothed, purpose-cropped identity reference:
scripts/headshots.sh prepare <input-image> <work-dir> \
[--scene ID] [--garment male|female] [--skin-base ID] [--smoothing 0..1] \
[--crop-spec ID] [--crop-anchor auto|center|manual] \
[--crop-rect X,Y,W,H] [--rotation DEG]
source-check.json and reference-preview.png before continuing.skin-base performs colour/skin-tone preparation; smoothing=0 preserves natural texture.After approval, freeze that preview as the identity reference:
scripts/headshots.sh confirm <work-dir>
Confirmation automatically adds the approved person to the account library, deduplicated by the confirmed reference image. To start a separate project from a saved person, or switch the active person inside an existing project while preserving its history:
scripts/headshots.sh start-person <person-reference-id> <new-work-dir> [--scene ID]
scripts/headshots.sh use-person <existing-work-dir> <person-reference-id>
use-person appends a new immutable reference to the same project. Existing jobs, candidates,
favorites, and prior references remain available. Removing a person is a library-only soft delete:
scripts/headshots.sh remove-person <person-reference-id>
Submit a compatible generation plan without waiting for the asynchronous worker:
scripts/headshots.sh generate <work-dir> [--scene ID] [--batch-size 1|2|4] \
[--style ID] [--pose ID] [--outfit ID] [--background ID] \
[--ratio 1:1|4:5|3:4] [--framing auto|close_up|half_body|three_quarter]
402 and do not retry unchanged.Check and download results explicitly:
scripts/headshots.sh status <work-dir>
scripts/headshots.sh download <work-dir>
Download after the job is completed or partially_completed. For a partial result, surface the
failure reason and download every ready candidate rather than discarding successful outputs.
Post-process a user-selected candidate and optionally export that render:
scripts/headshots.sh render <work-dir> --candidate ID-or-ordinal --style ID [--locale LOCALE]
scripts/headshots.sh light <work-dir> --candidate ID-or-ordinal [--style ID] [--strength 0..1] [--render]
scripts/headshots.sh export <work-dir> --candidate ID-or-ordinal [--render] \
[--crop SPEC] [--format jpeg|png|webp] [--quality 70..100]
light without --render creates an immutable lighting Render from the Candidate master. With --render, it uses the latest saved Render as its source, allowing an explicit grade → light chain without overwriting either version.--render, export the generated master candidate. With --render, use the latest explicit render saved in the work directory.project_id, reference_id, job_id, and derivative ids so an interrupted workflow can resume.scripts/id-check.sh <input-image> [spec-id] [report-json]
report-json, the input is treated as a source portrait: the API crop-checks it against the spec and reports practical compliance.report-json, the input is treated as the already-cropped ID photo and the supplied crop metrics are checked.scripts/optimize.sh <input-image> <output-image> [format] [max-kb] [quality] [resize] [dpi]
format is jpg, png, or webp; resize is WIDTHxHEIGHT; lossy formats search quality down to the server default floor when max-kb is set.scripts/print-sheet.sh <output-image> <paper> <input1> [input2 ...]
paper supports common values such as 6x4, 4x6, 5x7, and a4. Inputs on a single sheet must have the same pixel size; use id-pack.sh for automatic grouping by size.bg_colors.