Overview
YesExisting videoPerform element removal, covering 4 scenarios (only these 4, not handling arbitrary objects such as shoes/trash/random objects):
- Remove passersby / pedestrians: Remove background passersby and pedestrians, automatically handled based on content detection.
- Remove subtitles (time-varying): Remove time-varying subtitle bands (dialogue, Chinese subtitles, bottom text).
- Remove watermarks / Logos / corner badges (fixed position): Remove watermarks, Logos, platform corner badges, and Douyin IDs in fixed positions.
- One-click screen clearing: Remove all text in the frame at once (subtitles + watermarks + UI text).
Not handled: adding Logos/watermarks, video content replacement, image watermark removal, video quality enhancement.
API Mapping
| Scenario | API name |
|---|---|
| Remove passersby / pedestrians | video_content_remove |
| Remove subtitles (time-varying dialogue bands) | video_subtitle_remove |
| Remove watermarks / Logos / corner badges (fixed position) | video_watermark_remove |
| One-click screen clearing (remove all text) | video_allwords_remove |
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 --versionandmeitu auth verify --json- Detect
MEITU_OPENAPI_TOOL_TASK_MODE=command - output_dir: project →
./output/; one-time →$VISUAL/output/video-element-remove/;mkdir -p
Execute
Trigger signals and routing
Core judgment dimension:removal target type. Before calling, the Agent first identifies the video frame content and generates a prompt description (e.g., "there is a platform watermark in the top-right corner of the video, and Chinese subtitles at the bottom").
prompt → routing mapping:
prompt Signal words |
Routing API |
|---|---|
| Passersby / pedestrians / people in the background | video_content_remove |
| Subtitles / lines / dialogue / bottom text | video_subtitle_remove |
| Watermark / Logo / corner badge / platform mark / fixed-position identifier | video_watermark_remove |
| All text / every character / clear screen / remove all | video_allwords_remove |
| Remove subtitles + watermarks at the same time | video_subtitle_remove + video_watermark_remove called in parallel |
Scenario mutual exclusion boundaries
- "Remove all text" (all text) →
video_allwords_remove; "Remove subtitles" (subtitles only) →video_subtitle_remove - Fixed-position Logo →
video_watermark_remove; time-varying subtitles →video_subtitle_remove subtitle_remove+watermark_removecan be parallelized;allwords_removeis mutually exclusive with the others (screen clearing already includes it)
Parameter definitions
| Parameter | Type | Required | Range | Default | Description |
|---|---|---|---|---|---|
video_url |
STRING | Yes | — | — | Video address |
prompt |
STRING | Yes | — | — | The Agent's description of the video frame; the tool uses it to determine the removal type |
Note:
- When no signal word is recognized, default to
video_subtitle_remove(the most common removal request) - Screen clearing requires secondary confirmation (it will remove all text)
Tool invocation
meitu video-element-remove --video_url {url} --prompt "{画面描述}" --json --download-dir {output_dir} --skill_name skill_video-element-remove
Error fallback
| Scenario | Handling |
|---|---|
video_url missing |
Prompt "Please provide the video link", do not call |
video_url inaccessible |
Return error directly, do not retry |
prompt empty or no signal word |
Agent recognizes the video frame to generate a description, then re-evaluates |
| Ambiguous intent ("remove text") | Based on frame recognition: subtitles only→subtitle; subtitles+watermark+UI→allwords; fixed logo only→watermark |
| User wants "remove subtitles + remove all text" | Mutually exclusive, default to video_allwords_remove |
| API call failed / timed out | Retry once, if still fails return error |
| Content compliance interception | Return compliance prompt directly, do not retry |
Deliver
mv {file} {output_dir}/{date}_{name}_element-remove.mp4
Output
- Format:MP4
- Naming:
{YYYY-MM-DD}_{descriptive-name}_element-remove.mp4 - Location: project →
./output/; one-time →$VISUAL/output/video-element-remove/
Baseline Task ID
t_mt1a3i5n7b339aa95a-03dd-4f3e-9d31-786dc86b33aa