$npx -y skills add wells1137/media-skills --skill video-upscalerIntelligently upscale and enhance videos to cinematic quality using a multi-model backend (Topaz, SeedVR2).
| 1 | ## Summary |
| 2 | |
| 3 | The **Video Upscaler** skill provides professional-grade video quality enhancement by leveraging a powerful, multi-model backend. It intelligently selects the best AI model (Topaz, SeedVR2, etc.) based on the user-defined profile to achieve optimal results, transforming low-resolution or noisy footage into crisp, cinematic-quality video. |
| 4 | |
| 5 | This skill abstracts away the complexity of choosing and configuring different AI upscaling models. Instead of dealing with dozens of technical parameters, the user simply chooses a high-level goal, and the skill handles the rest. |
| 6 | |
| 7 | ## Features |
| 8 | |
| 9 | - **Multi-Model Backend**: Dynamically routes requests to the best model for the job (Topaz, SeedVR2, etc.) via a unified API. |
| 10 | - **Profile-Based Enhancement**: Offers a range of pre-configured profiles for common use cases, from standard 2x upscaling to 4K cinematic conversion and 60 FPS frame boosting. |
| 11 | - **Asynchronous by Design**: Handles long-running video processing jobs without blocking the agent. |
| 12 | - **Simple Interface**: Requires only a video URL and a profile name to start. |
| 13 | |
| 14 | ## How It Works |
| 15 | |
| 16 | The skill operates in a simple, two-step asynchronous workflow: |
| 17 | |
| 18 | 1. **Submit Job**: The agent calls the `/upscale` endpoint with a video URL and a profile name. The service validates the request, selects the appropriate AI model, and submits the job to the `fal.ai` backend. It immediately returns a `task_id`. |
| 19 | |
| 20 | 2. **Poll for Status**: The agent uses the `task_id` to periodically call the `/status/{task_id}` endpoint. The status will be `queued`, `in_progress`, or `completed`. Once completed, the response will contain the URL of the final, upscaled video. |
| 21 | |
| 22 | ## Available Profiles |
| 23 | |
| 24 | | Profile Name | Description | |
| 25 | | :--- | :--- | |
| 26 | | `standard_x2` | **2x upscale** using Topaz Proteus v4. Best all-around quality for live-action footage. | |
| 27 | | `cinema_4k` | Upscale to **4K (2160p)** using SeedVR2. Best for cinematic content requiring temporal consistency. | |
| 28 | | `frame_boost_60fps` | 2x upscale + **frame interpolation to 60 FPS** using Topaz Apollo v8. Best for sports and action. | |
| 29 | | `ai_video_enhance` | **4x upscale** using Topaz. Best for AI-generated videos that need resolution boosting. | |
| 30 | | `web_optimized` | Upscale to **1080p** with web-optimized H264 output. Best for social media and web publishing. | |
| 31 | |
| 32 | ## End-to-End Example |
| 33 | |
| 34 | **User Request:** "Enhance this video to 4K cinematic quality: [video_url]" |
| 35 | |
| 36 | **1. Agent -> Skill (Submit Job)** |
| 37 | |
| 38 | The agent identifies the user's intent and calls the `/upscale` endpoint with the `cinema_4k` profile. |
| 39 | |
| 40 | ```bash |
| 41 | curl -X POST http://<your_backend_url>/upscale \ |
| 42 | -H "Content-Type: application/json" \ |
| 43 | -d |
| 44 | "video_url": "[video_url]", |
| 45 | "profile": "cinema_4k" |
| 46 | } |
| 47 | ``` |
| 48 | |
| 49 | **Response:** |
| 50 | ```json |
| 51 | { |
| 52 | "task_id": "a1b2c3d4-e5f6-7890-1234-567890abcdef", |
| 53 | "model_used": "fal-ai/seedvr/upscale/video", |
| 54 | "profile": "cinema_4k" |
| 55 | } |
| 56 | ``` |
| 57 | |
| 58 | **2. Agent -> Skill (Poll for Status)** |
| 59 | |
| 60 | The agent waits and then polls the status endpoint. |
| 61 | |
| 62 | ```bash |
| 63 | curl http://<your_backend_url>/status/a1b2c3d4-e5f6-7890-1234-567890abcdef |
| 64 | ``` |
| 65 | |
| 66 | **Response (In Progress):** |
| 67 | ```json |
| 68 | { |
| 69 | "task_id": "a1b2c3d4-e5f6-7890-1234-567890abcdef", |
| 70 | "status": "in_progress", |
| 71 | "logs": ["Processing frame 100/1200..."] |
| 72 | } |
| 73 | ``` |
| 74 | |
| 75 | **Response (Completed):** |
| 76 | ```json |
| 77 | { |
| 78 | "task_id": "a1b2c3d4-e5f6-7890-1234-567890abcdef", |
| 79 | "status": "completed", |
| 80 | "result": { |
| 81 | "video_url": "https://.../upscaled_video.mp4" |
| 82 | } |
| 83 | } |
| 84 | ``` |
| 85 | |
| 86 | **3. Agent -> User** |
| 87 | |
| 88 | The agent delivers the final, upscaled video URL to the user. |