From eachlabs-skills
Convert videos between formats, codecs, and aspect ratios using each::sense AI. Support for MP4, WebM, GIF, ProRes, and social media optimized outputs.
npx claudepluginhub joshuarweaver/cascade-content-creation-misc-1 --plugin eachlabs-skillsThis skill uses the workspace's default tool permissions.
Convert videos between formats, codecs, and aspect ratios using each::sense. This skill handles format conversion, codec transcoding, aspect ratio changes, and optimization for various platforms and use cases.
Guides Next.js Cache Components and Partial Prerendering (PPR) with cacheComponents enabled. Implements 'use cache', cacheLife(), cacheTag(), revalidateTag(), static/dynamic optimization, and cache debugging.
Guides building MCP servers enabling LLMs to interact with external services via tools. Covers best practices, TypeScript/Node (MCP SDK), Python (FastMCP).
Generates original PNG/PDF visual art via design philosophy manifestos for posters, graphics, and static designs on user request.
Convert videos between formats, codecs, and aspect ratios using each::sense. This skill handles format conversion, codec transcoding, aspect ratio changes, and optimization for various platforms and use cases.
curl -X POST https://eachsense-agent.core.eachlabs.run/v1/chat/completions \
-H "Content-Type: application/json" \
-H "X-API-Key: $EACHLABS_API_KEY" \
-H "Accept: text/event-stream" \
-d '{
"messages": [{"role": "user", "content": "Convert this video to MP4 H.264 format optimized for web playback"}],
"model": "eachsense/beta",
"stream": true,
"mode": "max",
"image_urls": ["https://example.com/source-video.mov"]
}'
| Format | Codecs | Use Cases |
|---|---|---|
| MP4 | H.264, H.265/HEVC | Universal playback, web, mobile |
| WebM | VP9, VP8 | Web browsers, smaller file sizes |
| MOV | ProRes, H.264 | Professional editing, Apple ecosystem |
| GIF | - | Social media, previews, loops |
| MKV | H.264, H.265, VP9 | Archival, high quality |
| Ratio | Resolution | Use Case |
|---|---|---|
| 16:9 | 1920x1080 | YouTube, standard landscape |
| 9:16 | 1080x1920 | TikTok, Instagram Reels, Stories |
| 1:1 | 1080x1080 | Instagram feed, Twitter |
| 4:3 | 1440x1080 | Classic TV, presentations |
| 4:5 | 1080x1350 | Instagram portrait posts |
| 21:9 | 2560x1080 | Cinematic ultrawide |
Standard MP4 conversion with H.264 codec for maximum compatibility.
curl -X POST https://eachsense-agent.core.eachlabs.run/v1/chat/completions \
-H "Content-Type: application/json" \
-H "X-API-Key: $EACHLABS_API_KEY" \
-H "Accept: text/event-stream" \
-d '{
"messages": [{"role": "user", "content": "Convert this video to MP4 with H.264 codec. Use high quality settings with a bitrate suitable for 1080p playback. Maintain original aspect ratio."}],
"model": "eachsense/beta",
"stream": true,
"mode": "max",
"image_urls": ["https://example.com/source-video.mov"]
}'
WebM format with VP9 codec for efficient web delivery.
curl -X POST https://eachsense-agent.core.eachlabs.run/v1/chat/completions \
-H "Content-Type: application/json" \
-H "X-API-Key: $EACHLABS_API_KEY" \
-H "Accept: text/event-stream" \
-d '{
"messages": [{"role": "user", "content": "Convert this MP4 video to WebM format using VP9 codec. Optimize for web streaming with good quality at smaller file size. Target around 5 Mbps bitrate."}],
"model": "eachsense/beta",
"stream": true,
"mode": "max",
"image_urls": ["https://example.com/source-video.mp4"]
}'
Create animated GIF from video for social sharing and previews.
curl -X POST https://eachsense-agent.core.eachlabs.run/v1/chat/completions \
-H "Content-Type: application/json" \
-H "X-API-Key: $EACHLABS_API_KEY" \
-H "Accept: text/event-stream" \
-d '{
"messages": [{"role": "user", "content": "Convert this video to an animated GIF. Use the first 5 seconds, resize to 480px width, and optimize for file size under 10MB. Create a smooth loop if possible."}],
"model": "eachsense/beta",
"stream": true,
"mode": "eco",
"image_urls": ["https://example.com/source-video.mp4"]
}'
Transform landscape video to vertical format for mobile platforms.
curl -X POST https://eachsense-agent.core.eachlabs.run/v1/chat/completions \
-H "Content-Type: application/json" \
-H "X-API-Key: $EACHLABS_API_KEY" \
-H "Accept: text/event-stream" \
-d '{
"messages": [{"role": "user", "content": "Convert this 16:9 landscape video to 9:16 vertical format. Use smart cropping to keep the main subject centered. Output as MP4 H.264 at 1080x1920 resolution."}],
"model": "eachsense/beta",
"stream": true,
"mode": "max",
"image_urls": ["https://example.com/landscape-video.mp4"]
}'
Create square format video for Instagram feed and Twitter.
curl -X POST https://eachsense-agent.core.eachlabs.run/v1/chat/completions \
-H "Content-Type: application/json" \
-H "X-API-Key: $EACHLABS_API_KEY" \
-H "Accept: text/event-stream" \
-d '{
"messages": [{"role": "user", "content": "Convert this video to 1:1 square format at 1080x1080 resolution. Center crop the content and output as MP4 with H.264 codec optimized for social media."}],
"model": "eachsense/beta",
"stream": true,
"mode": "max",
"image_urls": ["https://example.com/widescreen-video.mp4"]
}'
Classic 4:3 aspect ratio for presentations and legacy displays.
curl -X POST https://eachsense-agent.core.eachlabs.run/v1/chat/completions \
-H "Content-Type: application/json" \
-H "X-API-Key: $EACHLABS_API_KEY" \
-H "Accept: text/event-stream" \
-d '{
"messages": [{"role": "user", "content": "Convert this 16:9 video to 4:3 aspect ratio. Add letterboxing or pillarboxing as needed rather than cropping. Output at 1440x1080 resolution in MP4 format."}],
"model": "eachsense/beta",
"stream": true,
"mode": "eco",
"image_urls": ["https://example.com/widescreen-video.mp4"]
}'
Create web-optimized video with fast start and adaptive quality.
curl -X POST https://eachsense-agent.core.eachlabs.run/v1/chat/completions \
-H "Content-Type: application/json" \
-H "X-API-Key: $EACHLABS_API_KEY" \
-H "Accept: text/event-stream" \
-d '{
"messages": [{"role": "user", "content": "Optimize this video for web streaming. Convert to MP4 H.264 with faststart enabled for progressive download. Use 2-pass encoding, target 3-5 Mbps bitrate, AAC audio at 128kbps. Ensure moov atom is at the beginning for instant playback."}],
"model": "eachsense/beta",
"stream": true,
"mode": "max",
"image_urls": ["https://example.com/raw-video.mov"]
}'
Professional ProRes format for video editing workflows.
curl -X POST https://eachsense-agent.core.eachlabs.run/v1/chat/completions \
-H "Content-Type: application/json" \
-H "X-API-Key: $EACHLABS_API_KEY" \
-H "Accept: text/event-stream" \
-d '{
"messages": [{"role": "user", "content": "Convert this video to Apple ProRes 422 format in a MOV container. Maintain original resolution and frame rate. This is for professional editing in Final Cut Pro and DaVinci Resolve."}],
"model": "eachsense/beta",
"stream": true,
"mode": "max",
"image_urls": ["https://example.com/compressed-video.mp4"]
}'
Platform-optimized video for Instagram Reels and TikTok.
curl -X POST https://eachsense-agent.core.eachlabs.run/v1/chat/completions \
-H "Content-Type: application/json" \
-H "X-API-Key: $EACHLABS_API_KEY" \
-H "Accept: text/event-stream" \
-d '{
"messages": [{"role": "user", "content": "Convert this video for Instagram Reels and TikTok. Use 9:16 aspect ratio at 1080x1920, MP4 H.264 codec, 30fps, and optimize for mobile playback. Keep file size under 100MB and duration under 60 seconds."}],
"model": "eachsense/beta",
"stream": true,
"mode": "max",
"image_urls": ["https://example.com/source-video.mov"]
}'
Process multiple videos in a single session with consistent settings.
# Start batch conversion session
curl -X POST https://eachsense-agent.core.eachlabs.run/v1/chat/completions \
-H "Content-Type: application/json" \
-H "X-API-Key: $EACHLABS_API_KEY" \
-H "Accept: text/event-stream" \
-d '{
"messages": [{"role": "user", "content": "I need to convert multiple videos to MP4 H.264 format at 1080p. All videos should use the same encoding settings: H.264 High Profile, 8 Mbps bitrate, AAC audio at 192kbps. Start with this first video."}],
"model": "eachsense/beta",
"stream": true,
"session_id": "batch-convert-001",
"mode": "eco",
"image_urls": ["https://example.com/video1.mov"]
}'
# Continue with second video (same session)
curl -X POST https://eachsense-agent.core.eachlabs.run/v1/chat/completions \
-H "Content-Type: application/json" \
-H "X-API-Key: $EACHLABS_API_KEY" \
-H "Accept: text/event-stream" \
-d '{
"messages": [{"role": "user", "content": "Convert the next video with the same settings."}],
"model": "eachsense/beta",
"stream": true,
"session_id": "batch-convert-001",
"mode": "eco",
"image_urls": ["https://example.com/video2.mov"]
}'
# Continue with third video
curl -X POST https://eachsense-agent.core.eachlabs.run/v1/chat/completions \
-H "Content-Type: application/json" \
-H "X-API-Key: $EACHLABS_API_KEY" \
-H "Accept: text/event-stream" \
-d '{
"messages": [{"role": "user", "content": "Convert this one too, same format."}],
"model": "eachsense/beta",
"stream": true,
"session_id": "batch-convert-001",
"mode": "eco",
"image_urls": ["https://example.com/video3.mov"]
}'
Ask your users before converting:
"Do you want fast & cheap, or high quality?"
| Mode | Best For | Speed | Quality |
|---|---|---|---|
max | Final deliverables, ProRes, professional workflows | Slower | Highest |
eco | Quick previews, batch processing, draft conversions | Faster | Good |
Use session_id to maintain context for iterative conversions:
# Initial conversion
curl -X POST https://eachsense-agent.core.eachlabs.run/v1/chat/completions \
-H "Content-Type: application/json" \
-H "X-API-Key: $EACHLABS_API_KEY" \
-H "Accept: text/event-stream" \
-d '{
"messages": [{"role": "user", "content": "Convert this video to MP4 for YouTube at 1080p"}],
"model": "eachsense/beta",
"stream": true,
"session_id": "youtube-upload-project",
"image_urls": ["https://example.com/raw-footage.mov"]
}'
# Request different format from same source
curl -X POST https://eachsense-agent.core.eachlabs.run/v1/chat/completions \
-H "Content-Type: application/json" \
-H "X-API-Key: $EACHLABS_API_KEY" \
-H "Accept: text/event-stream" \
-d '{
"messages": [{"role": "user", "content": "Now create a vertical version of that same video for YouTube Shorts at 9:16"}],
"model": "eachsense/beta",
"stream": true,
"session_id": "youtube-upload-project"
}'
# Request thumbnail extraction
curl -X POST https://eachsense-agent.core.eachlabs.run/v1/chat/completions \
-H "Content-Type: application/json" \
-H "X-API-Key: $EACHLABS_API_KEY" \
-H "Accept: text/event-stream" \
-d '{
"messages": [{"role": "user", "content": "Extract a thumbnail from the best frame of that video"}],
"model": "eachsense/beta",
"stream": true,
"session_id": "youtube-upload-project"
}'
| Error | Cause | Solution |
|---|---|---|
Failed to create prediction: HTTP 422 | Insufficient balance | Top up at eachlabs.ai |
| Timeout | Large video file or complex conversion | Set client timeout to minimum 10 minutes |
| Unsupported format | Source format not recognized | Convert to intermediate format first |
| File too large | Video exceeds size limits | Compress or split video before conversion |
max mode for final deliverables and professional outputseco mode for previews and batch processingeco mode for faster turnaround on large batcheseach-sense - Core API documentationvideo-generation - Generate videos from text/imagesvideo-editing - Edit and enhance existing videos