Install any skill in seconds. Free to start, no credit card required.
Get Started Free →vellum-ai/media-processing
Ingest and process media files (video, audio, image)
Passed 16 of 19 test cases with the skill, and 5 of 19 without it.
and 13 more in the full report
12 fixed6 passed either way4 still failing0 broke
Tokens, turns and time describe resource use, not a dollar price.
One of 12 test cases the skill fixed. Same model, same prompt, with and without the skill.
I need to trim a 30-second snippet starting at timestamp 02:15 from asset ID `asset_9982` for a highlight showcase named `dunk-highlight`. Should I run a `ffmpeg` subprocess via shell command or use a dedicated tool?
| Checked | Without skill | With skill |
|---|---|---|
| Uses generate_clip instead of manual ffmpeg shell commands | Missed | Passed |
| Passes title set to dunk-highlight | Missed | Passed |
The instructions your model reads when the skill loads.
Ingest and track processing of media files (video, audio, images) through a configurable 3-phase pipeline.
The processing pipeline follows a sequential 3-phase flow:
ingest_media) - Register a media file, detect MIME type, extract duration, deduplicate by content hash.extract_keyframes) - Detect dead time, segment the video into windows, extract downscaled keyframes, build a subject registry, and write a pipeline manifest.analyze_keyframes) - Send each segment's frames to Gemini 2.5 Flash with assistant-provided extraction instructions and a JSON Schema for guaranteed structured output. Supports concurrency pooling, cost tracking, resumability, and automatic retries.query_media) - Send all map output to Claude for intelligent analysis and Q&A. Supports arbitrary natural language queries about video content.generate_clip) - Extract video clips around specific moments.The processing pipeline service (services/processing-pipeline.ts) orchestrates phases 2-4 automatically with retries, resumability, and cancellation support.
Register a media file for processing. Accepts an absolute file path, validates the file exists, detects MIME type, extracts duration (for video/audio via ffprobe), and registers the asset with content-hash deduplication.
Query the processing status of a media asset. Returns the asset metadata along with per-stage progress details. Use this to monitor pipeline progress.
Preprocess a video asset: detect dead time via mpdecimate, segment the video into windows, extract downscaled keyframes at regular intervals, build a subject registry, and write a pipeline manifest.
Parameters:
asset_id (required) - ID of the media asset.interval_seconds - Interval between keyframes (default: 1s). Use 0.5s for sports/action content where frame density matters.segment_duration - Duration of each segment window (default: 15s).dead_time_threshold - Sensitivity for dead-time detection (default: 0.02).section_config - Path to a JSON file with manual section boundaries.detect_dead_time - Whether to detect and skip dead time (default: false). Dead-time detection can be too aggressive for continuous action video like sports - it may incorrectly skip live play. Enable only for content with clear idle periods (e.g., lectures, surveillance footage).short_edge - Short edge resolution for downscaled frames in pixels (default: 480).include_audio - Whether to extract and transcribe audio for each segment (default: false). When enabled, each segment's audio is transcribed using the configured STT service and stored alongside visual frames.test cases passed, vs 5 / 19 without
More skills from the same source and nearby in the registry, with their headline benchmark lift.