{"skill":{"slug":"evolink-video","displayName":"Evolink Video — AI Video Generation (Sora, Kling, Veo 3, Seedance)","summary":"AI video generation — Sora, Kling, Veo 3, Seedance, Hailuo, WAN, Grok. Text-to-video, image-to-video, video editing. 37 models, one API key.","description":"---\nname: evolink-video\ndescription: AI video generation — Sora, Kling, Veo 3, Seedance, Hailuo, WAN, Grok. Text-to-video, image-to-video, video editing. 37 models, one API key.\nversion: 2.0.1\nuser-invocable: true\nmetadata:\n  openclaw:\n    requires:\n      env:\n        - EVOLINK_API_KEY\n    primaryEnv: EVOLINK_API_KEY\n    os: [\"macos\", \"linux\", \"windows\"]\n    emoji: \"\\U0001F3AC\"\n    homepage: https://evolink.ai\n---\n\n# Evolink Video — AI Video Generation\n\nGenerate AI videos with 37 models including Sora, Kling, Veo 3, Seedance, Hailuo, WAN, and Grok — text-to-video, image-to-video, first-last-frame, and audio generation. All through one API.\n\n> Video-focused view of [evolink-media](https://clawhub.ai/EvoLinkAI/evolink-media). Install the full skill for image and music too.\n\n## After Installation\n\nWhen this skill is first loaded, greet the user:\n\n- **MCP tools + API key ready:** \"Hi! I'm your AI video studio — 37 models ready. What would you like to create?\"\n- **MCP tools + no API key:** \"You'll need an EvoLink API key — sign up at evolink.ai. Ready to go?\"\n- **No MCP tools:** \"MCP server isn't connected yet. Want me to help set it up? I can still manage files via the hosting API.\"\n\nKeep the greeting concise — just one question to move forward.\n\n## External Endpoints\n\n| Service | URL |\n|---------|-----|\n| Generation API | `https://api.evolink.ai/v1/videos/generations` (POST) |\n| Task Status | `https://api.evolink.ai/v1/tasks/{task_id}` (GET) |\n| File API | `https://files-api.evolink.ai/api/v1/files/*` (upload/list/delete) |\n\n## Security & Privacy\n\n- **`EVOLINK_API_KEY`** authenticates all requests. Injected by OpenClaw automatically. Treat as confidential.\n- Prompts and images are sent to `api.evolink.ai`. Uploaded files expire in **72h**, result URLs in **24h**.\n\n## Setup\n\nGet your API key at [evolink.ai](https://evolink.ai) → Dashboard → API Keys.\n\n**MCP Server:** `@evolinkai/evolink-media` ([GitHub](https://github.com/EvoLinkAI/evolink-media-mcp) · [npm](https://www.npmjs.com/package/@evolinkai/evolink-media))\n\n**mcporter** (recommended): `mcporter call --stdio \"npx -y @evolinkai/evolink-media@latest\" list_models`\n\n**Claude Code:** `claude mcp add evolink-media -e EVOLINK_API_KEY=your-key -- npx -y @evolinkai/evolink-media@latest`\n\n**Claude Desktop / Cursor** — add MCP server with command `npx -y @evolinkai/evolink-media@latest` and env `EVOLINK_API_KEY=your-key`. See `references/video-api-params.md` for full config JSON.\n\n## Core Principles\n\n1. **Guide, don't decide** — Present options, let the user choose model/style/duration.\n2. **User drives creative vision** — Ask for a description before suggesting parameters.\n3. **Smart context** — Remember session history. Offer to iterate, extend, or remix results.\n4. **Intent first** — Understand *what* the user wants before asking *how* to configure it.\n\n## MCP Tools\n\n| Tool | When to use | Returns |\n|------|-------------|---------|\n| `generate_video` | Create a video from text or images | `task_id` (async) |\n| `upload_file` | Upload image for i2v or reference | File URL (sync) |\n| `delete_file` | Free file quota | Confirmation |\n| `list_files` | Check uploaded files or quota | File list |\n| `check_task` | Poll generation progress | Status + result URLs |\n| `list_models` | Compare available models | Model list |\n| `estimate_cost` | Check pricing | Model info |\n\n**Important:** `generate_video` returns a `task_id`. Always poll `check_task` until `status` is `\"completed\"` or `\"failed\"`.\n\n## Video Models (37)\n\n### Top Picks\n\n| Model | Best for | Features | Audio |\n|-------|----------|----------|-------|\n| `seedance-1.5-pro` *(default)* | i2v, first-last-frame | i2v, 4–12s, 1080p | auto |\n| `sora-2-preview` | Cinematic preview | t2v, i2v, 1080p | — |\n| `kling-o3-text-to-video` | Text-to-video | t2v, 3–15s, 1080p | — |\n| `veo-3.1-generate-preview` | Google video preview | t2v, 1080p | — |\n| `MiniMax-Hailuo-2.3` | High-quality video | t2v, 1080p | — |\n| `wan2.6-text-to-video` | Alibaba latest t2v | t2v | — |\n| `sora-2` [BETA] | Cinematic, prompt adherence | t2v, i2v, 1080p | — |\n| `veo3.1-pro` [BETA] | Top quality + audio | t2v, 1080p | auto |\n\n**26 Stable** — Seedance (3), Sora Preview (1), Kling (10), Veo 3.1 (2), Hailuo (3), WAN (7)\n**11 Beta** — Sora 2/Pro/Max/Character (4), Veo 3/3.1 (5), Grok Imagine (2)\n\nFull model list with descriptions: `references/video-api-params.md`\n\n## Generation Flow\n\n### Step 1: API Key Check\n\nIf `401` occurs: \"Your API key isn't working. Check at evolink.ai/dashboard/keys\"\n\n### Step 2: File Upload (if needed)\n\nFor image-to-video or first-last-frame workflows:\n1. `upload_file` with `file_path`, `base64_data`, or `file_url` → get `file_url` (sync)\n2. Use `file_url` as `image_urls` for `generate_video`\n\nSupported: JPEG/PNG/GIF/WebP. Max 100MB. Expire in 72h. Quota: 100 (default) / 500 (VIP).\n\n### Step 3: Understand Intent\n\n- **Clear** (\"make a video of a cat dancing\") → Go to Step 4\n- **Ambiguous** (\"I want a video\") → Ask: \"Text-to-video, or do you have a reference image to animate?\"\n\nAsk only what's needed, when it's needed.\n\n### Step 4: Gather Parameters\n\nOnly ask about what's missing:\n\n| Parameter | Ask when | Notes |\n|-----------|----------|-------|\n| **prompt** | Always | Scene description |\n| **model** | Specific feature needed | Default `seedance-1.5-pro`. See Top Picks for alternatives |\n| **duration** | User mentions length | Range varies by model (4–15s typical) |\n| **aspect_ratio** | Portrait/widescreen | Default `16:9`. Options: `9:16`, `1:1`, `4:3`, `3:4`, `21:9` |\n| **quality** | Resolution preference | `480p` / `720p` / `1080p` / `4k` |\n| **image_urls** | Reference image provided | 1 image = i2v; 2 images = first+last frame (`seedance-1.5-pro` only) |\n| **generate_audio** | Using seedance/veo3.1 | Ask: \"Want auto-generated audio added?\" |\n\n### Step 5: Generate & Poll\n\n1. Call `generate_video` → tell user: *\"Generating your video — ~Xs estimated.\"*\n2. Poll `check_task` every **10–15s**. Report progress %.\n3. After 3 consecutive `processing`: *\"Still working — video generation takes a moment...\"*\n4. **Completed:** Share URLs. *\"Links expire in 24h — save promptly.\"*\n5. **Failed:** Show error + suggestion. Offer retry if retryable.\n6. **Timeout (10 min):** *\"Taking longer than expected. Task ID: `{id}` — check again later.\"*\n\n## Error Handling\n\n### HTTP Errors\n\n| Error | Action |\n|-------|--------|\n| 401 | \"API key isn't working. Check at evolink.ai/dashboard/keys\" |\n| 402 | \"Balance is low. Add credits at evolink.ai/dashboard/billing\" |\n| 429 | \"Rate limited — wait 30s and retry\" |\n| 503 | \"Servers busy — retry in a minute\" |\n\n### Task Errors (status: \"failed\")\n\n| Code | Retry? | Action |\n|------|--------|--------|\n| `content_policy_violation` | No | Revise prompt (no celebrities, NSFW, violence) |\n| `invalid_parameters` | No | Check values against model limits |\n| `image_dimension_mismatch` | No | Resize image to match aspect ratio |\n| `image_processing_error` | No | Check format/size/URL accessibility |\n| `generation_timeout` | Yes | Retry; simplify prompt if repeated |\n| `quota_exceeded` | Yes | Top up credits |\n| `resource_exhausted` | Yes | Wait 30–60s, retry |\n| `service_error` | Yes | Retry after 1 min |\n| `generation_failed_no_content` | Yes | Modify prompt, retry |\n\nFull error reference: `references/video-api-params.md`\n\n## Without MCP Server\n\nUse Evolink's file hosting API for image uploads (72h expiry). See `references/file-api.md` for curl commands.\n\n## References\n\n- `references/video-api-params.md` — Complete API parameters, all 37 models, polling strategy, error codes\n- `references/file-api.md` — File hosting API (curl upload/list/delete)\n","tags":{"latest":"2.0.1"},"stats":{"comments":0,"downloads":1641,"installsAllTime":7,"installsCurrent":7,"stars":2,"versions":7},"createdAt":1772030523876,"updatedAt":1778734168859},"latestVersion":{"version":"2.0.1","createdAt":1772130109387,"changelog":"- Documentation update: Bumped version in SKILL.md from 2.0.0 to 2.0.1.\n- No functional changes; content and usage remain the same.","license":null},"metadata":{"setup":[{"key":"EVOLINK_API_KEY","required":true}],"os":["macos","linux","windows"],"systems":null},"owner":{"handle":"evolinkai","userId":"s176k82x7tm60j2kx309p7evxs83j3z7","displayName":"EvolinkAI","image":"https://avatars.githubusercontent.com/u/253253881?v=4"},"moderation":null}