mcpField
V
video-generation

video-generation

github.com/awesome-genmediaCreative & media4350 installsUpdated 32w ago
Repository

About video-generation

video-generation is a skill for creating videos from text prompts or reference images through each::sense. It is intended for creators who need model selection handled automatically and supports streaming or complete responses.

Key features

  1. 01Text-to-video generation
  2. 02Image-to-video from up to 4 images
  3. 03Automatic model selection
  4. 04Streaming and non-streaming responses
  5. 05Prompt guidance for motion and camera

Use cases

  1. 01Create cinematic landscape clips from text
  2. 02Animate portraits or product images
  3. 03Generate short social media videos

Install

Copy the command and run it in a terminal.

$npx skills add https://github.com/awesome-genmedia/skills --skill video-generation

After installing, type/video-generationin Claude Code to confirm it loaded.

Details

From the project README

Video Generation

Generate videos from text prompts or static images using each::sense — the intelligent AI agent that automatically selects the best model for your request.

Quick Start

Requires an each::labs API key. Get one at eachlabs.ai.

Using curl
curl -X POST https://eachsense-agent.core.eachlabs.run/v1/chat/completions \
  -H "Content-Type: application/json" \
  -H "X-API-Key: $EACHLABS_API_KEY" \
  -d '{
    "messages": [{"role": "user", "content": "A golden retriever running through a field of wildflowers in slow motion, cinematic, shallow depth of field, warm afternoon light"}],
    "stream": false
  }'
Using Python (OpenAI SDK)
from openai import OpenAI

client = OpenAI(
    api_key="YOUR_EACHLABS_API_KEY",
    base_url="https://eachsense-agent.core.eachlabs.run/v1"
)

response = client.chat.completions.create(
    model="eachsense/beta",
    messages=[{"role": "user", "content": "A golden retriever running through a field of wildflowers in slow motion, cinematic, shallow depth of field, warm afternoon light"}]
)

print(response.choices[0].message.content)
With Reference Image (Image-to-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" \
  -d '{
    "messages": [{"role": "user", "content": [
              {"type": "text", "text": "Animate this photo: the woman slowly turns her head toward the camera and smiles, her hair gently blowing in the breeze, natural movement"},
              {"type": "image_url", "image_url": {"url": "https://example.com/portrait-photo.jpg"}}
            ]
          }
    ],
    "stream": false
  }'

Images are sent inside messages using the OpenAI multimodal content format. Maximum 4 images per request.

Streaming

Set "stream": true for real-time SSE responses, or "stream": false for complete result in a single response. Streaming is useful for showing progress in UIs; non-streaming is simpler for scripts and automation.

Available Models

Text-to-Video
ModelStrengthsBest For
veo-3Best overall quality, generates synchronized audioCinematic clips, ads, content with sound
veo3-1-fastFast generation with good qualityQuick iterations, social media content
kling-3-0High quality with consistent motionCharacter animation, dynamic scenes
wan-v2-6-text-to-videoReliable text-to-video generationGeneral purpose video creation
pixverse-v4-1Stylized and artistic outputsAnimated content, creative videos
sora-2-proCinematic quality with natural physicsFilm-like scenes, professional content
Image-to-Video
ModelStrengthsBest For
kling-2-1-image-to-videoSmooth animation from still imagesProduct animations, portrait animations
wan-v2-6-image-to-videoConsistent with source image detailsExtending photos into motion

each::sense automatically picks the right model based on your prompt. Mention "animate this image" or provide an image_url to trigger image-to-video models.

Prompt Engineering Guide

Prompt Structure for Video
[subject] + [action/motion] + [environment] + [camera movement] + [style] + [mood/lighting]
Motion Keywords
Motion TypeKeywords
Camerapan left, dolly forward, orbit around, zoom in, crane shot, tracking shot
Subjectwalking, running, turning, dancing, gesturing, floating
Environmentwind blowing, rain falling, clouds moving, waves crashing, leaves drifting
Speedslow motion, timelapse, real-time, fast forward, bullet time
Cinematic Keywords
cinematic, 4K, film grain, anamorphic lens, letterbox,
shallow depth of field, bokeh, golden hour, dramatic lighting
Duration Guidance

Specify approximate duration in your prompt when needed:

"... 5-second clip of ..."
"... short loop, 3 seconds ..."
"... 10-second establishing shot ..."

Examples

Cinematic Landscape
curl -X POST https://eachsense-agent.core.eachlabs.run/v1/chat/completions \
  -H "Content-Type: application/json" \
  -H "X-API-Key: $EACHLABS_API_KEY" \
  -d '{
    "messages": [{"role": "user", "content": "Aerial drone shot slowly flying over a misty mountain range at sunrise, clouds weaving between peaks, golden light spilling across ridgelines, cinematic 4K, orchestral mood"}],
    "stream": false
  }'
Product Demo Animation
curl -X POST https://eachsense-agent.core.eachlabs.run/v1/chat/completions \
  -H "Content-Type: application/json" \
  -H "X-API-Key: $EACHLABS_API_KEY" \
  -d '{
    "messages": [{"role": "user", "content": "A sleek smartphone rotating slowly on a dark reflective surface, studio lighting revealing its design from all angles, subtle light reflections, product commercial style, 5 seconds"}],
    "stream": false
  }'
Image-to-Video (Portrait Animation)
curl -X POST https://eachsense-agent.core.eachlabs.run/v1/chat/completions \
  -H "Content-Type: application/json" \
  -H "X-API-Key: $EACHLABS_API_KEY" \
  -d '{
    "messages": [{"role": "user", "content": [
              {"type": "text", "text": "Animate this portrait: subtle breathing motion, a gentle blink, the person then looks slightly to the left and gives a warm smile. Natural and realistic movement."},
              {"type": "image_url", "image_url": {"url": "https://example.com/headshot.jpg"}}
            ]
          }
    ],
    "stream": false
  }'
Social Media Reel
curl -X POST https://eachsense-agent.core.eachlabs.run/v1/chat/completions \
  -H "Content-Type: application/json" \
  -H "X-API-Key: $EACHLABS_API_KEY" \
  -d '{
    "messages": [{"role": "user", "content": "A barista pouring latte art in a cozy coffee shop, close-up shot, steam rising from the cup, warm ambient lighting, 9:16 vertical format for Instagram Reels, satisfying and aesthetic"}],
    "stream": false
  }'
Video with Generated Audio (veo-3)
curl -X POST https://eachsense-agent.core.eachlabs.run/v1/chat/completions \
  -H "Content-Type: application/json" \
  -H "X-API-Key: $EACHLABS_API_KEY" \
  -d '{
    "messages": [{"role": "user", "content": "A thunderstorm rolling over a vast prairie, lightning bolts illuminating dark clouds, heavy rain sweeping across golden grass, with realistic thunder sounds and rain audio, cinematic wide shot"}],
    "stream": false
  }'

Common Pitfalls

  • Static descriptions produce still-looking videos. Always describe motion and action explicitly.
  • Too many scene changes in one prompt confuse the model. Focus on one continuous scene.
  • Ignoring camera movement produces locked-off shots. Specify pans, dollies, or tracking for dynamic feel.
  • Complex character interactions (two people talking) can produce inconsistent results. Keep interactions simple.
  • No temporal structure makes clips feel random. Describe what happens from start to end.

Text-to-Video vs. Image-to-Video

FeatureText-to-VideoImage-to-Video
InputText prompt onlyText prompt + source image
ControlFull creative freedomPreserves visual identity from image
ConsistencyModel interprets everythingAnchored to source image appearance
Best forOriginal content from scratchAnimating existing designs, photos, art
How to triggerJust describe the sceneInclude image_urls and say "animate this"

Related Skills

Documentation

Comments

Markdown supported