Video Enhancement

Other

AI Video Enhancement - Upscale video resolution, denoise, sharpen. Supports local files and YouTube/Bilibili URLs. HD/4K upscaling with real-time progress.

Install

openclaw skills install video-enhancement

video-enhancement - AI Video Enhancement

Upscale and enhance video quality using AI via verging.ai.

Command Format

/video-enhancement --video <video file or URL> [options]

Options

OptionShortDescriptionDefault
--video-vVideo file path or URL (YouTube/Bilibili)Required
--start-sStart time in seconds0
--end-eEnd time in secondsVideo end (max 30s)
--hdHD upscaling (5 credits/sec)false (3 credits/sec)
--api-key-kAPI Key$VERGING_API_KEY
--output-oSave path for resultCurrent directory
--download-dAuto download resultfalse

Authentication

Recommended: Authorization: ApiKey <your_key>

# ✅ Recommended (canonical form)
curl -H "Authorization: ApiKey vrg_sk_your_key_here" https://verging.ai/api/v1/auth/me

# ✅ Also works (Bearer with API key is supported)
curl -H "Authorization: Bearer vrg_sk_your_key_here" https://verging.ai/api/v1/auth/me

Get your API key: https://verging.ai → Login → Avatar → API Keys

API Reference (Exact Formats)

1. Check Credits

curl -H "Authorization: ApiKey $VERGING_API_KEY" \
  https://verging.ai/api/v1/auth/me

Response: {"email":"...","name":"...","credits":100}

2. Get Upload URL (Form Data - NOT JSON)

# ⚠️ MUST use -F (multipart form-data)
curl -X POST https://verging.ai/api/v1/upload-video \
  -H "Authorization: ApiKey $VERGING_API_KEY" \
  -F "video_file_name=video.mp4" \
  -F "job_type=video-enhance"

Response:

{
  "code": 100000,
  "result": {
    "url": "https://...presigned-url...",
    "public_url": "https://img.panpan8.com/video-enhance/..."
  }
}

3. Upload Video to R2

curl -X PUT -T /tmp/verging-video-enhancement/trimmed.mp4 \
  -H "Content-Type: video/mp4" \
  "<presigned_url_from_step_2>"

4. Create Enhancement Job (Form Data)

# ⚠️ Uses -F (form-data), NOT JSON
curl -X POST https://verging.ai/api/v1/video_enhance/create-job \
  -H "Authorization: ApiKey $VERGING_API_KEY" \
  -F "target_video_url=<public_url_from_step_2>" \
  -F "file_name=video.mp4" \
  -F "user_video_duration=30" \
  -F "job_type=video-enhance" \
  -F "is_hd=false"

Response: {"code":10000,"result":{"job_id":"123"},"message":{"en":"Request Success","zh":"提交任务成功"}}

5. Poll Job Status

curl -H "Authorization: ApiKey $VERGING_API_KEY" \
  "https://verging.ai/api/v1/jobs/list-jobs?job_ids=<job_id>"

Response: [{"id":123,"job_type":"video-enhance","status":"COMPLETED","progress":100,"result_url":"https://...","created_at":"...","updated_at":"..."}]

Status values: PENDINGPROCESSINGCOMPLETED (or FAILED)

Execution Flow (Follow Exactly)

  1. Parse args → extract video path/URL, options
  2. Download remote video (if URL): yt-dlp "URL" -o /tmp/verging-video-enhancement/input.mp4
  3. Get durationffprobe -v error -show_entries format=duration -of default=noprint_wrappers=1:nokey=1 video.mp4
  4. Trim if needed (--start/--end or duration > 30s):
    ffmpeg -i input.mp4 -ss <start> -to <end> -c:v libx264 -c:a aac /tmp/verging-video-enhancement/trimmed.mp4
    
  5. Check credits → GET /api/v1/auth/me (need duration × 3 normal or ×5 HD)
  6. Upload video → POST /upload-video (Form Data) → PUT to presigned URL
  7. Create job → POST /video_enhance/create-job (Form Data)
  8. Poll status → GET /jobs/list-jobs?job_ids=X every 5 seconds until COMPLETED
  9. Return/download result → show result_url, optionally curl download

Critical Notes

  • Use Authorization: ApiKey <key> (recommended)Bearer <key> also works
  • /upload-video uses Form Data (-F) — NOT JSON
  • /video_enhance/create-job uses Form Data (-F) — NOT JSON, no file upload needed
  • Max video duration: 30 seconds — trim longer videos first
  • Temp directory: /tmp/verging-video-enhancement/
  • If yt-dlp unavailable, ask user to download video manually

Credit Consumption

ModeCost
Normal3 credits/second
HD5 credits/second

Privacy & Security

  • Set key via env: export VERGING_API_KEY="your_key"
  • Never expose API key in public repos
  • Only process media you have rights to
  • Temp files cleaned up after use