/SKILL.md
Seedance 2.0 AI video generation via EvoLink API. Three modes — text-to-video, image-to-video (1-2 images), reference-to-video (images + videos + audio). Auto audio (voice, SFX, BGM). Works with OpenClaw, Claude Code, Cursor. Powered by ByteDance Seedance 2.0.
npx skillsauth add evolinkai/evolink-skills seedance-2-video-genInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
An interactive AI video generation assistant powered by the Seedance 2.0 model via EvoLink API.
When this skill is first loaded, proactively greet the user and start the setup:
Check if EVOLINK_API_KEY is set
That's it. One question. The user is now in the flow.
Do NOT list features, show a menu, or dump instructions. Just ask one question to move forward.
If the user hasn't provided an API key or set EVOLINK_API_KEY:
If the key is already set or provided, skip directly to Step 2.
Assess what the user wants based on their message:
Check what the user has already provided and only ask about what's missing:
| Parameter | What to tell the user | Required? | |-----------|----------------------|-----------| | Mode / intent | Three modes available: (1) Text-to-video — describe a scene, get a video; (2) Image-to-video — animate from 1-2 reference photos; (3) Reference-to-video — remix/edit/extend using images, video clips, and audio. Determine which mode fits from context, or ask if unclear. | Yes | | Video content (prompt) | Ask what they'd like to see. If they need inspiration, suggest a few ideas for them to pick from or build on. | Yes | | Duration | Supported: 4–15 seconds. Ask how long they want. | Yes | | Resolution | Supported: 480p / 720p. Ask their preference. | Yes | | Audio | The model can auto-generate voice, sound effects, and background music matching the video. Ask if they want audio enabled. | Yes | | Aspect ratio | Supported: 16:9, 9:16, 1:1, 4:3, 3:4, 21:9, adaptive (model chooses best fit). Only mention if relevant or if user asks. | Optional | | Reference images | Image-to-video: 1–2 images (JPEG/PNG/WebP, ≤30MB each). 1 image = first-frame animation; 2 images = first+last frame interpolation. Reference mode: 0–9 images. | Conditional | | Reference videos | Reference mode only: 0–3 videos (.mp4/.mov, 2–15s each, total ≤15s, ≤50MB each). Use for camera reference, motion reference, or as source video for editing/extension. | Conditional | | Reference audio | Reference mode only: 0–3 audio files (.wav/.mp3, 2–15s each, total ≤15s, ≤15MB each). Use for background music, sound effects, or voice reference. | Conditional | | Web search | Text mode only: enables the model to search the web for enhanced timeliness (e.g., current weather, trending topics). Only mention if the user's prompt involves time-sensitive content. | Optional |
Smart gathering rules — STRICT:
5s / 720p / audio on / 16:9. If the user says "default" or "just go", use these values immediately.Once all required information is confirmed:
TASK_SUBMITTED: → send: "✅ Task submitted! Generation has started."STATUS_UPDATE: line → immediately send it to the user as a natural message, e.g. "Still generating... about 45 seconds remaining, hang tight!" — do not buffer these until the end. The user should never wait more than 30 seconds without hearing from you.# Set API key
export EVOLINK_API_KEY=your_key_here
# Text-to-video (basic)
./scripts/seedance-gen.sh "A serene sunset over ocean waves" --duration 5 --quality 720p
# Text-to-video with web search (time-sensitive content)
./scripts/seedance-gen.sh "Today's weather in Tokyo with animated forecast" --duration 8 --quality 720p --web-search
# Image-to-video: 1 image (animate from first frame)
./scripts/seedance-gen.sh "The camera slowly zooms in, the scene comes to life" --image "https://example.com/scene.jpg" --duration 6 --quality 720p
# Image-to-video: 2 images (first + last frame interpolation)
./scripts/seedance-gen.sh "A smooth transition between day and night" --image "https://example.com/day.jpg,https://example.com/night.jpg" --duration 8 --quality 720p
# Reference-to-video: edit a video clip
./scripts/seedance-gen.sh "Replace the item in the box with the product from image 1" --image "https://example.com/product.jpg" --video "https://example.com/original.mp4" --duration 5 --quality 720p
# Reference-to-video: extend/remix with audio
./scripts/seedance-gen.sh "Continue the scene with this background music" --video "https://example.com/clip.mp4" --audio "https://example.com/bgm.mp3" --duration 10 --quality 720p
# Adaptive aspect ratio (model chooses best fit)
./scripts/seedance-gen.sh "A tall waterfall in a narrow canyon" --aspect-ratio adaptive --duration 5 --quality 720p
# Without audio
./scripts/seedance-gen.sh "Abstract art animation" --duration 6 --quality 720p --no-audio
# Force specific mode
./scripts/seedance-gen.sh "Remix these elements" --mode reference --image "url1" --video "url2" --duration 8 --quality 720p
The script writes structured lines to stdout that you must parse and act on:
| Line format | When | Your action |
|-------------|------|-------------|
| TASK_SUBMITTED: task_id=<id> estimated=<Ns> | Right after submission | Confirm to the user that generation has started. This means the API call succeeded — do NOT retry. |
| STATUS_UPDATE: <message> | Every ~30s during generation | Relay to the user — e.g., "Still working on your video, about 45 seconds remaining..." |
| VIDEO_URL=<url> | On success | Extract the URL and present the video to the user |
| ELAPSED=<Ns> | On success | Optionally mention how long it took |
| POLL_TIMEOUT: task_id=<id> | Polling exceeded 10 min | Tell user: "Your video may already be done — check https://evolink.ai/dashboard (task: <id>)" |
| WARNING: ... | On timeout (>10 min) | Inform user generation may still be running, suggest checking back |
| ERROR: ... (stderr) | On failure | Surface the error message to the user |
Critical: Once you see TASK_SUBMITTED:, the task is queued on the server. Do NOT run the script again. Retrying wastes the user's API credits. If the script times out locally, the video may still complete — tell the user to check their dashboard at https://evolink.ai/dashboard.
Provide friendly, actionable messages:
| Error | What to tell the user | |-------|----------------------| | Invalid/missing key (401) | "Your API key doesn't seem to work. You can check it at https://evolink.ai/dashboard?utm_source=github&utm_medium=readme&utm_campaign=seedance2-video-gen-skill-for-openclaw" | | Insufficient balance (402) | "Your account balance is low. You can add credits at https://evolink.ai/dashboard?utm_source=github&utm_medium=readme&utm_campaign=seedance2-video-gen-skill-for-openclaw" | | Rate limited (429) | "Too many requests — let's wait a moment and try again" | | Content blocked (400) | "This prompt was flagged (realistic human faces are restricted). Try adjusting the description" | | Video file too large (400) | "One of the video files is too large. Each video must be ≤50MB and total video duration ≤15 seconds" | | Image file too large (400) | "One of the images is too large. Each image must be ≤30MB" | | Service unavailable (503) | "The service is temporarily busy. Let's try again in a minute" |
Use this when the user asks what the model can do:
seedance-2.0-text-to-video): Describe a scene, get a video. Optional web search for time-sensitive content.seedance-2.0-image-to-video): 1 image = animate from first frame; 2 images = first+last frame interpolation.seedance-2.0-reference-to-video): Multimodal — combine images (0–9), video clips (0–3), audio (0–3), and a text prompt to create, edit, or extend video. Use natural language in the prompt to reference inputs by number.references/api-params.md: Complete API parameter reference for all three modelsscripts/seedance-gen.sh: Generation script with automatic model selection, polling, and error handlingdevelopment
AI image generation & editing — GPT Image, GPT-4o, Seedream, Qwen, WAN, Gemini. Text-to-image, image-to-image, inpainting. 19 models, one API key.
development
Read, write, and analyze Google Sheets with AI-powered insights, formula generation, and data summarization. Powered by evolink.ai
development
Read, write, and analyze Google Sheets with AI-powered insights, formula generation, and data summarization. Powered by evolink.ai
development
Gmail API integration with smart AI features — read, send, search, and manage emails with Claude-powered summarization and drafting. Powered by evolink.ai