Overview
Call meitu video-motion-transfer to transfer the motion pose from the reference video onto the person in the image, preserving the person's appearance features in the image. Used for dance replication, motion imitation, pose driving, and virtual human driving.
Before execution, the user should be clearly informed that: this Skill will read Meitu credentials, call the local meitu CLI, send the user-provided person image, motion reference video, and generation prompt to the Meitu OpenAPI for processing, and write the results to ./output/ or $VISUAL/output/video-motion-transfer/. When portrait and motion materials are involved, it should be confirmed that authorization to process the people in the materials is held.
Not handled: pure text-to-video, reference video camera movement/style, face swap/person swap, video content editing.
API Mapping
| DAG tool | backend API |
|---|---|
| video-motion-transfer | video_motion_transfer |
Dependencies
- meitu-cli:
>=2.0.6 - credentials:CONFIG AKSK →
meitu tools update; EXEC AKSK → run command - environment variables:
MEITU_OPENAPI_TOOL_TASK_MODE=command
Path alias:
$VISUAL={OPENCLAW_HOME}/workspace/visual/
Core Workflow
Preflight → Execute → Deliver
Preflight
meitu --version≥ 2.0.6;meitu auth verify --json- Confirm that the Config Phase has been run;
MEITU_OPENAPI_TOOL_TASK_MODE=command - output_dir resolution: openclaw.yaml →
./output/| else →$VISUAL/output/video-motion-transfer/;mkdir -p {output_dir}
Execute
Trigger signals/routing
Match conditions: provide both an image (person reference image) + a video (motion reference video), and the intent is motion imitation. Signal words: "motion transfer, imitate motion, dance along, pose driving, make this person do this motion".
Decision order:
image_list/reference_video_listmissing → ask follow-up- Intent determination: motion imitation → this tool; camera movement/style reference → not this tool
- Unique route →
video_motion_transfer
Unclear intent (image + video but motion vs. camera movement not clearly stated) → default to this tool (motion transfer).
Parameter definitions
| Parameter | Type | Required | Range | Default value | Description |
|---|---|---|---|---|---|
prompt |
STRING | Yes | -- | -- | Motion/scene description; if missing, a brief description can be automatically generated based on the reference video |
image_list |
ARRAY | Yes | 1 image | -- | Person reference image URL |
reference_video_list |
ARRAY | Yes | 1, ≤15s | -- | Motion reference video URL |
video_duration |
NUMBER | No | 3–15 | 5 | Video duration (seconds) |
aspect_ratio |
STRING | No | 16:9 / 1:1 / 9:16 | adaptive | Aspect ratio |
Tool invocation
meitu video-motion-transfer \
--skill_name skill_video-motion-transfer \
--prompt "{prompt}" \
--image_list '["{person_image_url}"]' \
--reference_video_list '["{motion_video_url}"]' \
--video_duration 5 \
--aspect_ratio adaptive \
--json --download-dir {output_dir}
Error fallback
| Scenario | Handling |
|---|---|
image_list missing |
Prompt "Please provide a person reference image" |
reference_video_list missing |
Prompt "Please provide a motion reference video" |
video_duration > 15s |
Clamp to 15s, inform the user |
| No obvious human motion in the reference video | Call normally, inform that the result may be unsatisfactory |
prompt missing |
Automatically generate a brief description based on the reference video content |
| Image/video URL inaccessible | Do not retry, prompt "Please provide a valid link" |
| No person detected | Return error: the reference image must contain a clear person |
| Call failed | Retry once; if it still fails, return an error |
| Timeout (>600s) | Reduce duration and retry once; if it still fails, return an error |
| Content compliance interception | Return the compliance prompt directly without retrying |
Deliver
Parse --json → downloaded_files[0].saved_path or media_urls[0]。
mv {file} {output_dir}/{YYYY-MM-DD}_{name}_motion-transfer.mp4
Output
- Format:MP4
- Naming:
{YYYY-MM-DD}_{descriptive-name}_motion-transfer.mp4 - Location: Project →
./output/; One-time →$VISUAL/output/video-motion-transfer/
Baseline Task ID
t_mt1a3i5n7b5d0785f3-ea01-42a0-8e22-08a334d81361