Generate videos using OpenAI's Sora API. Use when the user asks to generate, create, or make videos from text prompts or reference images. Supports image-to-video generation with automatic resizing.
Scanned 9/7/2026
Install to Claude Code
npx -y skills add Demerzels-lab/elsamultiskillagent --skill sora-video-gen --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Sora Video Gen?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/demerzels-lab-sora-video-gen)More formats (shields.io, HTML) on the badges page.
---
name: sora
description: Generate videos using OpenAI's Sora API. Use when the user asks to generate, create, or make videos from text prompts or reference images. Supports image-to-video generation with automatic resizing.
---
# Sora Video Generation
Generate videos using OpenAI's Sora API.
## API Reference
**Endpoint:** `POST https://api.openai.com/v1/videos`
### Parameters
| Parameter | Values | Description |
|-----------|--------|-------------|
| `prompt` | string | Text description of the video (required) |
| `input_reference` | file | Optional image that guides generation |
| `model` | `sora-2`, `sora-2-pro` | Model to use (default: sora-2) |
| `seconds` | `4`, `8`, `12` | Video duration (default: 4) |
| `size` | `720x1280`, `1280x720`, `1024x1792`, `1792x1024` | Output resolution |
### Important Notes
- **Image dimensions must match video size exactly** - the script auto-resizes
- Video generation takes 1-3 minutes typically
- Videos expire after ~1 hour - download immediately
## Usage
```bash
# Basic text-to-video
uv run ~/.clawdbot/skills/sora/scripts/generate_video.py \
--prompt "A cat playing piano" \
--filename "output.mp4"
# Image-to-video (auto-resizes image)
uv run ~/.clawdbot/skills/sora/scripts/generate_video.py \
--prompt "Slow dolly shot, steam rising, warm lighting" \
--filename "output.mp4" \
--input-image "reference.png" \
--seconds 8 \
--size 720x1280
# With specific model
uv run ~/.clawdbot/skills/sora/scripts/generate_video.py \
--prompt "Cinematic scene" \
--filename "output.mp4" \
--model sora-2-pro \
--seconds 12
```
## Script Parameters
| Flag | Description | Default |
|------|-------------|---------|
| `--prompt`, `-p` | Video description (required) | - |
| `--filename`, `-f` | Output file path (required) | - |
| `--input-image`, `-i` | Reference image path | None |
| `--seconds`, `-s` | Duration: 4, 8, or 12 | 8 |
| `--size`, `-sz` | Resolution | 720x1280 |
| `--model`, `-m` | sora-2 or sora-2-pro | sora-2 |
| `--api-key`, `-k` | OpenAI API key | env var |
| `--poll-interval` | Check status every N seconds | 10 |
## API Key
Set `OPENAI_API_KEY` environment variable or pass `--api-key`.
## Prompt Engineering for Video
### Good prompts include:
1. **Camera movement**: dolly, pan, zoom, tracking shot
2. **Motion description**: swirling, rising, falling, shifting
3. **Lighting**: golden hour, candlelight, dramatic rim lighting
4. **Atmosphere**: steam, particles, bokeh, haze
5. **Mood/style**: cinematic, commercial, lifestyle, editorial
### Example prompts:
**Food commercial:**
```
Slow dolly shot of gourmet dish, soft morning sunlight streaming through window,
subtle steam rising, warm cozy atmosphere, premium food commercial aesthetic
```
**Lifestyle:**
```
Golden hour light slowly shifting across mountains, gentle breeze rustling leaves,
serene morning atmosphere, premium lifestyle commercial
```
**Product shot:**
```
Cinematic close-up, dramatic lighting with warm highlights,
slow reveal, luxury commercial style
```
## Workflow: Image → Video
1. Generate image with Nano Banana Pro (or use existing)
2. Pass image as `--input-image` to Sora
3. Write prompt describing desired motion/atmosphere
4. Script auto-resizes image to match video dimensions
## Output
- Videos saved as MP4
- Typical file size: 1.5-3MB for 8 seconds
- Resolution matches `--size` parameter
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!