Oatda generate video
Skill devcsde/oatda-openclaw-skills/skills/oatda-generate-video
OpenClaw skills for OATDA's unified LLM API gateway — text, vision, image, video, audio (TTS/STT/translation). 10+ providers, 100+ models, 1 API key.
npx -y skills add devcsde/oatda-openclaw-skills --skill oatda-generate-videoAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
2 things to look at
- no licenseNo license file was found in the repository. Code published without one is not open source by default, so using it at work is a question for whoever answers licensing questions where you are.
- 0 stars0 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
What its author says it does
Copied from the file, not written here
Generate videos from text descriptions using AI models through OATDA's unified API. Triggers when the user wants to generate, create, or produce AI video clips or animations using MiniMax, Google Veo, Alibaba Wan, Bytedance Seedance, ZAI, OpenAI Sora, xAI Grok video, or other video generation models via OATDA. Video generation is asynchronous — submit a request and poll for status.
SKILL.md
7.4 KB, as published. Nobody here has run it
OATDA Video Generation
Generate videos from text descriptions via OATDA. Video generation is asynchronous — submit a request, receive a task ID, then poll for completion.
API Key Resolution
All commands need the OATDA API key. Resolve it inline for each exec call:
export OATDA_API_KEY="${OATDA_API_KEY:-$(cat ~/.oatda/credentials.json 2>/dev/null | jq -r '.profiles[.defaultProfile].apiKey' 2>/dev/null)}"
If the key is empty or null, tell the user to get one at https://oatda.com and configure it.
Security: Never print the full API key. Only verify existence or show first 8 chars.
Model Mapping
| User says | Provider | Model |
|---|---|---|
| seedance, bytedance (default) | bytedance | seedance-1-5-pro-251215 |
| minimax, hailuo | minimax | T2V-01-Director |
| veo, google veo | veo-3.0-generate-001 | |
| wan, alibaba | alibaba | wan2.6-t2v |
| grok video, grok imagine | xai | grok-imagine-video |
| cogvideo | zai | cogvideox-3 |
Default: bytedance / seedance-1-5-pro-251215 if no model specified.
⚠️ Video models change fast. Run
oatda-list-modelswithtype=videoto see the latest. | cogvideo, glm video | zai | cogvideox-3 |
Default: bytedance / seedance-1-5-pro-251215 if no model specified.
⚠️ Models update frequently. If a model ID fails, query
oatda-list-modelswith?type=videofor the latest available models.
Discovering Model-Specific Parameters
Different models support different parameters. Query before generating:
export OATDA_API_KEY="${OATDA_API_KEY:-$(cat ~/.oatda/credentials.json 2>/dev/null | jq -r '.profiles[.defaultProfile].apiKey' 2>/dev/null)}" && \
curl -s -X GET "https://oatda.com/api/v1/llm/models?type=video" \
-H "Authorization: Bearer $OATDA_API_KEY" | jq '.video_models[] | {id, supported_params}'
File-type parameters (like first_frame_image, last_frame_image) require public URLs.
API Call
CRITICAL: The endpoint URL must include ?async=true.
export OATDA_API_KEY="${OATDA_API_KEY:-$(cat ~/.oatda/credentials.json 2>/dev/null | jq -r '.profiles[.defaultProfile].apiKey' 2>/dev/null)}" && \
curl -s -X POST "https://oatda.com/api/v1/llm/generate-video?async=true" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $OATDA_API_KEY" \
-d '{
"provider": "<PROVIDER>",
"model": "<MODEL>",
"prompt": "<VIDEO_DESCRIPTION>"
}'
Optional Parameters (add to body)
duration: Video duration in secondsresolution:"720P"or"1080P"aspectRatio:"16:9","9:16","1:1"quality: Quality setting (model-dependent)style: Style setting (model-dependent)width/height: Explicit pixel dimensionsmodel_params: Model-specific key-value pairs
model_params Examples
- Seedance:
{"ratio": "16:9", "duration": "5", "generate_audio": true, "camera_fixed": false} - Seedance I2V:
{"first_frame_image": "https://...", "last_frame_image": "https://..."} - MiniMax:
{"first_frame_image": "https://...", "resolution": "720P"} - xAI:
{"resolution": "720p"}
Response Format
{
"taskId": "minimax-T2V01-abc123def456",
"status": "pending",
"provider": "minimax",
"model": "T2V-01",
"message": "Video generation task created",
"pollUrl": "/api/v1/llm/video-status/minimax-T2V01-abc123def456"
}
Note the taskId — this is needed to check status later.
After Submitting
Tell the user:
Video generation started! Task ID:
<taskId>Video generation typically takes 30 seconds to 5 minutes. Useoatda-video-statusto check when your video is ready.
Error Handling
| HTTP Status | Meaning | Action |
|---|---|---|
| 401 | Invalid API key | Tell user to check their key |
| 400 | Bad request / prompt too long | Keep prompt under 4000 chars |
| 429 | Rate limited | Wait and retry |
| 400 + content_policy | Content policy violation | Ask user to adjust description |
Examples
Seedance (default)
export OATDA_API_KEY="${OATDA_API_KEY:-$(cat ~/.oatda/credentials.json 2>/dev/null | jq -r '.profiles[.defaultProfile].apiKey' 2>/dev/null)}" && \
curl -s -X POST "https://oatda.com/api/v1/llm/generate-video?async=true" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $OATDA_API_KEY" \
-d '{
"provider": "bytedance",
"model": "seedance-1-5-pro-251215",
"prompt": "Ocean waves crashing on a beach at sunset, golden hour lighting, cinematic",
"model_params": {"ratio": "16:9", "duration": "5", "generate_audio": true, "camera_fixed": false}
}'
Seedance Image-to-Video
export OATDA_API_KEY="${OATDA_API_KEY:-$(cat ~/.oatda/credentials.json 2>/dev/null | jq -r '.profiles[.defaultProfile].apiKey' 2>/dev/null)}" && \
curl -s -X POST "https://oatda.com/api/v1/llm/generate-video?async=true" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $OATDA_API_KEY" \
-d '{
"provider": "bytedance",
"model": "seedance-1-5-pro-251215",
"prompt": "Smooth transition from day to night",
"model_params": {
"ratio": "16:9",
"first_frame_image": "https://example.com/daytime.jpg",
"last_frame_image": "https://example.com/nighttime.jpg"
}
}'
MiniMax with Reference Image
export OATDA_API_KEY="${OATDA_API_KEY:-$(cat ~/.oatda/credentials.json 2>/dev/null | jq -r '.profiles[.defaultProfile].apiKey' 2>/dev/null)}" && \
curl -s -X POST "https://oatda.com/api/v1/llm/generate-video?async=true" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $OATDA_API_KEY" \
-d '{
"provider": "minimax",
"model": "T2V-01",
"prompt": "The character starts walking forward slowly",
"model_params": {"first_frame_image": "https://example.com/character.png", "resolution": "720P"}
}'
Google Veo
export OATDA_API_KEY="${OATDA_API_KEY:-$(cat ~/.oatda/credentials.json 2>/dev/null | jq -r '.profiles[.defaultProfile].apiKey' 2>/dev/null)}" && \
curl -s -X POST "https://oatda.com/api/v1/llm/generate-video?async=true" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $OATDA_API_KEY" \
-d '{
"provider": "google",
"model": "veo-3.0-generate-preview",
"prompt": "A drone shot flying over a misty mountain range at sunrise",
"duration": 5,
"aspectRatio": "16:9"
}'
Notes
- Always use
?async=truein the URL - Generation takes 30 seconds to 5+ minutes depending on model
- Always give the user the task ID and suggest
oatda-video-statusto check progress - For image-to-video: provide
first_frame_imageand optionallylast_frame_imageas public URLs - Max prompt: 4000 characters
- Use
oatda-video-statusto check task completion - Use
oatda-list-modelsfor available video models