SuperAPI AI Directory

meitu-product-view

General & other

View repository

Updated 10-16 06:46

About this skill

Product Multi-Angle Display Image

Generate multi-angle display images from a single product image, supporting standard three-view, e-commerce five-view, and full-angle display.

Overview

The user uploads one product image, and display images from different angles are automatically generated. Supports white background/scene/transparent background, with optional super-resolution enhancement, and adapts to the specifications of e-commerce platforms such as Taobao, JD.com, Pinduoduo, and Amazon.

Dependencies

  • meitu-cli (≥2.0.6): npm install -g meitu-cli@latest
    • Preferred environment variable:MEITU_OPENAPI_ACCESS_KEY / MEITU_OPENAPI_SECRET_KEY
    • Or preset credential file:~/.meitu/credentials.json
    • If manual initialization of local credentials is needed, you can explicitly execute meitu config set-ak --value "..." + meitu config set-sk --value "..."(will write to a local file)
    • Verify: meitu auth verify --json
  • package references (bundled with this skill package):
    • references/prompts.md — fixed template and angle section
    • references/ecommerce-specs.md — platform specifications and viewpoint recommendations
    • These reference files are static materials within the package; in project mode, if DESIGN.md or openclaw.yaml explicitly references brand assets or platform rules, it may also additionally read the user-enabled $VISUAL/assets/brands/ and $VISUAL/rules/platforms/

Path alias: Below, $VISUAL = {OPENCLAW_HOME}/workspace/visual/

Core Workflow

Preflight → [Context] → Execute → Refine → Deliver → [Record]

Optional step: [Context] — skipped in one-off mode; [Record] — skipped when can_record=false.

Preflight

  1. meitu --version → if not installed, prompt npm install -g meitu-cli@latest
  2. meitu auth verify --json → if credentials are invalid, guide configuration
  3. Detect mode: cwd has openclaw.yaml → project mode; else → one-off Check $VISUAL directory → determine capabilities can_record = cwd has openclaw.yaml AND $VISUAL exists (if either is missing, false)
  4. output_dir resolution (MUST be completed within Preflight): Resolve output_dir: openclaw.yaml → ./output/ | else → $VISUAL/output/meitu-product-view/ mkdir -p {output_dir}

All --download-dir {output_dir} in Execute use the path resolved here.

Context (executed in project mode / skipped in one-off mode)

mode = one-off → skip this step and go directly to Execute.

mode = project → load in order (skip if missing at each step):

  1. Read ./DESIGN.md → obtain project decisions and Context References
    • Resolve references (e.g., brand: acme) → try to read $VISUAL/assets/brands/acme/
    • if read → use the latest version; if not read → fall back to the inline fallback value in DESIGN.md
  2. Read $VISUAL/rules/quality.yaml → obtain the forbidden list
  3. Read $VISUAL/memory/global.md → obtain cross-scenario preferences
  4. Read openclaw.yaml of project.types(array, preferred) or project.type(single value → treated as a single-element array) → for each type: look up $VISUAL/memory/scenes/{type}.md → if it exists, read and merge

→ quality forbidden list filters generated elements, preferences enhance the creative direction → $VISUAL does not exist → skip 2-4, read only DESIGN.md

Execute

Step 1: Receive product image

The user uploads one product image. If not uploaded, prompt:

"Please upload a product image (a front-facing photo works best; a clean background is better for generation quality)."

After receiving the image, analyze the following information (the Agent judges on its own, without calling external tools):

Analysis item Purpose
Product category Determines the recommendation angle and scenario
Subject shape/proportions Fills in the prompt's {product_description}
Current shooting angle Determines whether it can be used directly as a certain viewpoint
Background situation Determines whether cutout preprocessing is needed

If the user also provides a text description of the product information → prioritize the user's description.

Step 2: Choose a view plan

Display options:

Plan Included angles Applicable scenarios
Standard three views Front, right side, back Basic display, quick image generation
E-commerce five views Front, left front 45°, right front 45°, back, top view E-commerce main image set
Full-angle display Front, left front 45°, right front 45°, left side, right side, back, top view, close-up High-end product detail page
Combined three views Front + side + back arranged left, center, right in one image Social media, quick display
Custom User-selected angle combination Special requirements

When the user selects "Custom", display the complete angle list:

Angle Identifier Direction
Front front 0°
Left front 45° front-left-quarter 315°
Right front 45° front-right-quarter 45°
Left side left-side 270°
Right side right-side 90°
Left rear 45° back-left-quarter 225°
Right rear 45° back-right-quarter 135°
Back back 180°
Top view overhead 60° elevation angle
Slight top-down elevated 30° elevation angle
Bottom view low-angle -30° elevation angle
Close-up close-up Close-range detail

If user mentions specific e-commerce platform → read references/ecommerce-specs.md for platform-specific angle recommendations and size requirements → auto-select matching view preset + ratio + size.

Step 3: Choose a background mode

Mode Description CLI processing method
White background Pure white background Add a white background description to the prompt
Scene AI-generated product usage scene Add a scene description to the prompt
Keep original background Keep the background of the uploaded image Use the Chinese angle instruction prompt
Transparent background Transparent PNG Generate with a white background first, then cutout

When "Scene" is selected → recommend 3 scene descriptions based on the product category and ask the user for their preference. Scene recommendation principles:

Category Recommended scene direction
Electronics Minimalist desktop, tech-style space, office scene
Apparel/bags Fashion street photography scene, walk-in closet, travel scene
Food/drinks Dining table scene, kitchen, picnic/outdoors
Home furnishing/home appliances Living room, bedroom, modern home space
Beauty/skincare Vanity table, bathroom, floral/natural elements
Sports/outdoors Gym, track, outdoor nature

Step 4: Pre-processing cutout (conditional execution)

Trigger conditions: The original image background is cluttered AND the user selected white background or scene mode.

meitu image-cutout \
  --skill_name skill_meitu-product-view \
  --image_url {image_url} \
  --model_type 1 \
  --json

The cutout result serves as reference input for subsequent generation. If cutout fails → skip and use the original image directly.

Step 5: Generate per angle

This is the core generation step. For each angle selected by the user, call meitu image-edit。

Tool call template:

meitu image-edit \
  --skill_name skill_meitu-product-view \
  --image_list {source_image_url} \
  --prompt "{angle_prompt}" \
  --model praline_pro \
  --ratio {target_ratio} \
  --json \
  --download-dir {output_dir}

Prompt construction:

  1. From references/prompts.md select the template for the corresponding angle (locate by ## {angle}-view section)
  2. Fill in variables:
    • {product_description} ← Step 1 analysis result
    • {background} ← Step 3 select the corresponding background suffix (see prompts.md ## Background Suffixes)
    • {scene_description} ← Step 3 scene description (scene mode only)
  3. Prompt uses English (better model results)
  4. Strictly prohibited to use -ar、--no、(keyword:1.5)、<lora:xxx> and other platform-specific syntax

Angle → prompts.md section mapping:

Angle identifier Prompt template section
front ## front-view
right-side ## right-side-view
left-side ## left-side-view
back ## back-view
front-right-quarter ## front-right-quarter-view
front-left-quarter ## front-left-quarter-view
back-right-quarter ## back-right-quarter-view
back-left-quarter ## back-left-quarter-view
overhead ## overhead-view
elevated ## elevated-view
low-angle ## low-angle-view
close-up ## close-up-view
Combined three-view ## combo-three-view

Special case — preserve original background mode:

Use Chinese prompt (different from the English template; this is an empirically validated formulation):

Angle Prompt (apply as-is, do not modify)
Front Rotate the product in the image to a front-facing angle toward the camera. Keep the product upright, do not change the product's appearance, and ensure background consistency.
Side Rotate the product in the image to an angle viewed from the right side, showing the product's side profile. Keep the product upright, do not change the product's appearance, and ensure background consistency.
Back Rotate the product in the image to a back-facing angle toward the camera, showing the product's back details. Keep the product upright, do not change the product's appearance, and ensure background consistency.
45° Rotate the product in the image to a 45-degree oblique viewing angle. Keep the product upright, do not change the product's appearance, and ensure background consistency.
Top view Shoot the product in the image from a top-down viewing angle, showing the top of the product. Keep the product upright, do not change the product's appearance, and ensure background consistency.
Close-up Enlarge and show the details of the product in the image. Keep the product consistent, do not change the product's appearance, and ensure background consistency.

Special case — combined three-view:

Generate three viewpoints in the same image at once. From references/prompts.md ## combo-three-view take the template, fill in {product_description} and {background}:

meitu image-edit \
  --skill_name skill_meitu-product-view \
  --image_list {source_image_url} \
  --prompt "{combo_three_view_prompt}" \
  --model praline_pro \
  --ratio 4:3 \
  --json \
  --download-dir {output_dir}

Generation order strategy:

  1. If the original image is front → use the original image directly as the front view, and start generation from the remaining angles
  2. If the original image is not front → generate the front first, then use the front image as the anchor to generate the remaining angles
  3. Background replacement mode → generate the front scene image first, then use the front scene image as reference to generate the remaining angles (to ensure scene consistency)

In background replacement mode, the reference image for side and back uses the front scene image (not the original image):

# 先生成正面场景图
meitu image-edit \
  --skill_name skill_meitu-product-view \
  --image_list {original_image_url} \
  --prompt "{front_view_scene_prompt}" \
  --model praline_pro \
  --ratio 1:1 \
  --json \
  --download-dir {output_dir}
# 以正面场景图为参考,生成其余角度
meitu image-edit \
  --skill_name skill_meitu-product-view \
  --image_list {front_scene_result_url} \
  --prompt "将图中的商品旋转到从右侧面观看的角度,展示商品的侧面轮廓。保持商品直立,不要改变商品外观,保证背景一致性。" \
  --model praline_pro \
  --ratio 1:1 \
  --json \
  --download-dir {output_dir}

--ratio Select:

Scene ratio
Default 1:1
Specify e-commerce platform According to references/ecommerce-specs.md requirements
Combined three-view 4:3
User-defined As specified by the user

Step 6: Super-resolution enhancement (optional)

Trigger condition: The user explicitly requests it OR the target platform requires ≥2000px (e.g., Amazon).

meitu image-superres-enhance \
  --skill_name skill_meitu-product-view \
  --image_url {generated_url} \
  --prompt "e-commerce product image" \
  --json \
  --download-dir {output_dir}

Upscale each angle image one by one.

Step 7: Transparent background processing (conditional)

Trigger condition: "Transparent background" was selected in Step 3.

For each generated angle image, execute:

meitu image-cutout \
  --skill_name skill_meitu-product-view \
  --image_url {generated_url} \
  --model_type 1 \
  --json \
  --download-dir {output_dir}

Error degradation strategy:

Level Action Trigger condition
L1 Remove modifiers from the prompt (lighting, material descriptions), keep the core angle + product First generation fails
L2 Change ratio to auto Still fails after L1
L3 Skip cutout preprocessing, generate directly from the original image Still fails after L2
L4 Simplify to the most core description: only "A {angle} view of the product. White background." Still fails after L3
L5 Stop, report an error and show the code and hint 2 consecutive L4 failures

Refine

Display all generated angle images and explain the viewpoint of each.

Feedback classification and response:

User feedback Adjustment method
"The angle is wrong" / "Shift it a bit more" Adjust the angle description words in the prompt
"The product is distorted" / "It doesn't look like the original image" Append "Proportions and every detail exactly matching the uploaded photo" to the end of the prompt
"The background doesn't look good" Replace the scene description or switch the background mode
"The color is off" Append "Color accuracy strictly consistent with the original photo"
"I want more angles" Add from the angle list, generate incrementally (do not regenerate completed ones)
"Change to a different style/atmosphere" Adjust the lighting/mood description words
"The resolution is not enough" Append upscale processing

Iteration pace: A maximum of 3 rounds is recommended. More than 3 rounds → recommend:

  1. Replace the original product image (better shooting angle/lighting)
  2. Split into single angles and optimize one by one
  3. Try a different background mode

Deliver

output_dir has already been resolved in Preflight, Execute's --download-dir has already downloaded the file to {output_dir}. Deliver only renames:

mv {output_dir}/{task_id_file} {output_dir}/{date}_{product}_{angle}.{ext}

{ext} taken from downloaded_files[0].saved_path 's actual extension.

Naming rules:{date}_{product}_{angle}.{ext} Example:2026-03-23_sneaker_front.png、2026-03-23_sneaker_back.jpg、2026-03-23_sneaker_quarter-right.png

Record (project mode MUST / one-time mode skip)

Precondition: can_record = cwd has openclaw.yaml AND $VISUAL exists (if either is missing, false). Not satisfied → skip all recording, feedback is only valid for the current conversation.

No feedback → Completely skip, do not read observations.yaml, zero overhead.

User approved style → read $VISUAL/memory/observations/observations.yaml → scan similar key → merge or append → write back. len(projects) >= 2 → propose promotion (non-blocking). Propose (mention at the end of the reply, do not interrupt the main flow):

"By the way, you prefer X in N projects. Save it? → Save to product-photography scenario [default] → Save to global preferences → Don't save" User confirms → write to $VISUAL/memory/scenes/{scope}.md or global.md,then delete observation entry User ignores → do nothing

User rejected ("don't XX") → has openclaw.yaml → ask scope: "Only this project shouldn't use XX, or never again?" → Only this project → append to ./DESIGN.md Constraints → Never again → append to $VISUAL/rules/quality.yaml(requires user confirmation) no openclaw.yaml → current task only, write nothing


Output

  • Format: PNG (white background/scene) / PNG with alpha (transparent background)
  • Aspect ratio: default 1:1, adjustable per platform requirements (see references/ecommerce-specs.md)
  • Resolution: default 2K, optional upscale
  • Naming:{date}_{product}_{angle}.{ext}

Constraints

  • Do not display the full prompt content in the conversation (unless the user actively requests to view it)
  • Apply the prompt template as-is, replacing only the {variable} part
  • Keep the original background mode's Chinese prompt without any modification
  • If the user's language is English, translate all interaction options into English
  • Generate each angle with an independent call to ensure consistency with the original product
  • --download-dir always points to the output_dir resolved by Preflight, not to the directory containing the source files