Media-skills video-upscaler

Intelligently upscale and enhance videos to cinematic quality using a multi-model backend (Topaz, SeedVR2).

install
source · Clone the upstream repo
git clone https://github.com/wells1137/media-skills
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/wells1137/media-skills "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/video-upscaler" ~/.claude/skills/wells1137-media-skills-video-upscaler && rm -rf "$T"
manifest: skills/video-upscaler/SKILL.md
source content

Summary

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.

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.

Features

  • Multi-Model Backend: Dynamically routes requests to the best model for the job (Topaz, SeedVR2, etc.) via a unified API.
  • 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.
  • Asynchronous by Design: Handles long-running video processing jobs without blocking the agent.
  • Simple Interface: Requires only a video URL and a profile name to start.

How It Works

The skill operates in a simple, two-step asynchronous workflow:

  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
    .

  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.

Available Profiles

Profile NameDescription
standard_x2
2x upscale using Topaz Proteus v4. Best all-around quality for live-action footage.
cinema_4k
Upscale to 4K (2160p) using SeedVR2. Best for cinematic content requiring temporal consistency.
frame_boost_60fps
2x upscale + frame interpolation to 60 FPS using Topaz Apollo v8. Best for sports and action.
ai_video_enhance
4x upscale using Topaz. Best for AI-generated videos that need resolution boosting.
web_optimized
Upscale to 1080p with web-optimized H264 output. Best for social media and web publishing.

End-to-End Example

User Request: "Enhance this video to 4K cinematic quality: [video_url]"

1. Agent -> Skill (Submit Job)

The agent identifies the user's intent and calls the

/upscale
endpoint with the
cinema_4k
profile.

curl -X POST http://<your_backend_url>/upscale \
  -H "Content-Type: application/json" \
  -d 
    "video_url": "[video_url]",
    "profile": "cinema_4k"
  }

Response:

{
  "task_id": "a1b2c3d4-e5f6-7890-1234-567890abcdef",
  "model_used": "fal-ai/seedvr/upscale/video",
  "profile": "cinema_4k"
}

2. Agent -> Skill (Poll for Status)

The agent waits and then polls the status endpoint.

curl http://<your_backend_url>/status/a1b2c3d4-e5f6-7890-1234-567890abcdef

Response (In Progress):

{
  "task_id": "a1b2c3d4-e5f6-7890-1234-567890abcdef",
  "status": "in_progress",
  "logs": ["Processing frame 100/1200..."]
}

Response (Completed):

{
  "task_id": "a1b2c3d4-e5f6-7890-1234-567890abcdef",
  "status": "completed",
  "result": {
    "video_url": "https://.../upscaled_video.mp4"
  }
}

3. Agent -> User

The agent delivers the final, upscaled video URL to the user.