End-to-end AI video generation from storyboard concept to final output.
Works with
Supports both MCP and standalone Python script modes; automatically detects availability and switches gracefully if MCP is unavailable
Generates reference images with Seedream 4.5 (text-to-image and image editing), then submits video tasks to Seedance 2.0 with configurable aspect ratios (16:9, 9:16, 1:1, 21:9, 4:3, 3:4) and durations (4–15 seconds)
Offers two video generation modes: omni reference (up to 9 images
AI-first code editor with Composer
Before installing skills in Cursor, ensure your development environment meets these requirements:
node --versionseedance2-apiExecute the skills CLI command in your project's root directory to begin installation:
Fetches seedance2-api from hexiaochun/seedance2-api and configures it for Cursor.
The CLI shows a list of agents. Use arrow keys and space to select Cursor:
Confirm successful installation by checking the skill directory location:
Restart Cursor to activate seedance2-api. Access via /seedance2-api in your agent's command palette.
We perform automated surface-level scans (Gen AI Scanner, Socket, Snyk) during installation. These checks detect common vulnerabilities but do not guarantee complete security. Always review skill source code and verify the publisher's reputation before production use.
Skills execute code in your environment. Always review source, verify the publisher, and test in isolation before production.
Submit your Claude Code skill and start earning
Automate repetitive workflows and reduce manual effort
Example
Generate reports, summarize documents, draft communications
Save 3-5 hours per week on routine tasks
Learn new skills, understand complex topics, get expert guidance
Example
Explain concepts, provide examples, suggest learning resources
Accelerate learning and skill development by 2x
Enhance output quality through reviews, suggestions, and refinements
Example
Review drafts, suggest improvements, catch errors
Improve work quality by 30-40% with less effort
1
total installs
1
this week
31
GitHub stars
0
upvotes
Run in your terminal
1
installs
1
this week
31
stars
End-to-end workflow from concept to final video: Storyboard → Reference images → Submit video task → Get results.
Check MCP availability first:
xskill-ai MCP service status (read mcps/user-xskill-ai/STATUS.md)submit_task / get_task and other MCP toolsScript mode prerequisites:
XSKILL_API_KEY environment variable is set (run echo $XSKILL_API_KEY | head -c 10)export XSKILL_API_KEY=sk-your-api-key
Get your API Key: https://www.xskill.ai/#/v2/api-keys
requests is installed (pip install requests)Script path: Located under this skill's directory at scripts/seedance_api.py:
# Find via Glob tool
glob: .cursor/skills/seedance2-api/scripts/seedance_api.py
In the following steps, each API call provides both MCP method and Script method. Choose one based on the Step 0 result.
Collect the following information (proactively ask if anything is missing):
first_last_frames) or default omni mode (omni_reference)Guide the user through each dimension for richer detail:
Break down shots along the timeline using this formula:
[Style] _____ style, _____ seconds, _____ ratio, _____ mood
0-Xs: [Camera movement] + [Visual content] + [Action description]
X-Ys: [Camera movement] + [Visual content] + [Action description]
...
[Audio] _____ music + _____ SFX + _____ dialogue
[References] @image_file_1 _____, @video_file_1 _____
See reference.md for detailed templates and examples.
If the user has no existing assets, use Seedream 4.5 to generate character art, scenes, first/last frames, etc.
Call submit_task tool:
fal-ai/bytedance/seedream/v4.5/text-to-imagepython .cursor/skills/seedance2-api/scripts/seedance_api.py submit \
--model "fal-ai/bytedance/seedream/v4.5/text-to-image" \
--params '{"prompt":"An astronaut in a white spacesuit...","image_size":"landscape_16_9","num_images":1}'
Call submit_task tool:
fal-ai/bytedance/seedream/v4.5/editpython .cursor/skills/seedance2-api/scripts/seedance_api.py submit \
--model "fal-ai/bytedance/seedream/v4.5/edit" \
--params '{"prompt":"Change the background to a forest","image_urls":["https://..."],"image_size":"landscape_16_9"}'
Images typically complete in 1–2 minutes.
Call get_task tool to check status:
completedSingle query:
python .cursor/skills/seedance2-api/scripts/seedance_api.py query \
--task-id "TASK_ID_HERE"
Auto-poll (recommended for images, interval 10s, timeout 180s):
python .cursor/skills/seedance2-api/scripts/seedance_api.py poll \
--task-id "TASK_ID_HERE" --interval 10 --timeout 180
| Aspect Ratio | Recommended image_size | Note |
|---|---|---|
| 16:9 | landscape_16_9 | Landscape |
| 9:16 | portrait_16_9 | Portrait |
| 4:3 | landscape_4_3 | Landscape |
| 3:4 | portrait_4_3 | Portrait |
| 1:1 | square_hd | Square |
| 21:9 | landscape_16_9 | Approximate ultrawide |
Merge the storyboard structure and reference images into the final prompt:
@image_file_1, @image_file_2, etc. to reference images in the image_files array@video_file_1, etc. to reference videos in the video_files array@audio_file_1, etc. to reference audio in the audio_files arrayReference syntax example:
@image_file_1 as character reference, follow @video_file_1 camera movement, with @audio_file_1 as background music
Important: The Nth URL in image_files maps to @image_file_N. video_files and audio_files are independently numbered.
Handle asset URLs:
Call upload_image tool: image_url or image_data
# Upload from URL
python .cursor/skills/seedance2-api/scripts/seedance_api.py upload \
--image-url "https://example.com/image.png"
# Upload local file
python .cursor/skills/seedance2-api/scripts/seedance_api.py upload \
--image-path "/path/to/local/image.png"
Call submit_task tool:
st-ai/super-seed2omni_reference (default, can be omitted)16:9 / 9:16 / 1:1 / 21:9 / 4:3 / 3:4)4–15)seedance_2.0_fast (default, faster) or seedance_2.0 (standard quality)python .cursor/skills/seedance2-api/scripts/seedance_api.py submit \
--model "st-ai/super-seed2" \
--params '{
"prompt": "Cinematic realistic sci-fi style, 15 seconds, 16:9...",
"functionMode": "omni_reference",
"image_files": ["https://img1.png", "https://img2.png"],
"ratio": "16:9",
"duration": 15,
"model": "seedance_2.0_fast"
}'
Call submit_task tool:
st-ai/super-seed2first_last_framesseedance_2.0_fast or seedance_2.0python .cursor/skills/seedance2-api/scripts/seedance_api.py submit \
--model "st-ai/super-seed2" \
--params '{
"prompt": "Camera smoothly transitions from first frame to last frame, fluid motion",
"functionMode": "first_last_frames",
"filePaths": ["https://first-frame.png", "https://last-frame.png"],
"ratio": "16:9",
"duration": 5,
"model": "seedance_2.0_fast"
}'
Video generation takes approximately 10 minutes.
Polling strategy:
get_taskRecommended: auto-poll (runs in foreground, interval 30s, timeout 600s):
python .cursor/skills/seedance2-api/scripts/seedance_api.py poll \
--task-id "TASK_ID_HERE" --interval 30 --timeout 600
Progress is printed to stderr; final JSON result is printed to stdout when complete.
Manual single query:
python .cursor/skills/seedance2-api/scripts/seedance_api.py query \
--task-id "TASK_ID_HERE"
Status reference:
pending → "Queued..."processing → "Generating..."completed → Extract the video URL and present to the userfailed → Report the error; suggest adjusting the prompt and retryingUser says: "Make a video of an astronaut walking on Mars"
1. Gather info → 15s, 16:9, cinematic sci-fi style, no existing assets
2. Generate astronaut + Mars scene images with Seedream 4.5
submit_task("fal-ai/bytedance/seedream/v4.5/text-to-image", {...})
→ poll get_task → get image URLs
3. Compose prompt → submit video task
submit_task("st-ai/super-seed2", {...})
4. Poll get_task, ~10 min later → get video URL
1. Gather info → 15s, 16:9, cinematic sci-fi style
2. Generate reference images:
python scripts/seedance_api.py submit \
--model "fal-ai/bytedance/seedream/v4.5/text-to-image" \
--params '{"prompt":"An astronaut in white spacesuit on Mars...","image_size":"landscape_16_9"}'
→ get task_id
3. Poll for image results:
python scripts/seedance_api.py poll --task-id "xxx" --interval 10 --timeout 180
→ get image URL
4. Submit video task:
python scripts/seedance_api.py submit \
--model "st-ai/super-seed2" \
--params '{"prompt":"...storyboard prompt...","functionMode":"omni_reference","image_files":["IMAGE_URL"],"ratio":"16:9","duration":15,"model":"seedance_2.0_fast"}'
→ get task_id
5. Poll for video results:
python scripts/seedance_api.py poll --task-id "xxx" --interval 30 --timeout 600
→ get video URL
| Parameter | Type | Required | Description |
|---|---|---|---|
| prompt | string | Yes | Image description |
| image_size | string | No | auto_2K / auto_4K / square_hd / portrait_4_3 / portrait_16_9 / landscape_4_3 / landscape_16_9 |
| num_images | int | No | 1–6, default 1 |
| Parameter | Type | Required | Description |
|---|---|---|---|
| prompt | string | Yes | Editing instructions, reference images as Figure 1/2/3 |
| image_urls | array | Yes | Input image URL list |
| image_size | string | No | Same as above |
| num_images | int | No | 1–6, default 1 |
| Parameter | Type | Required | Description |
|---|---|---|---|
| prompt | string | Yes | Storyboard prompt, use @image_file_N/@video_file_N/@audio_file_N |
| functionMode | string | No | omni_reference (default) |
| image_files | array | No | Reference image URL array (up to 9) |
| video_files | array | No | Reference video URL array (up to 3, total ≤ 15s) |
| audio_files | array | No | Reference audio URL array (up to 3) |
| ratio | string | No | 21:9 / 16:9 / 4:3 / 1:1 / 3:4 / 9:16 |
| duration | integer | No | 4–15, default 5 |
| model | string | No | seedance_2.0_fast (default) / seedance_2.0 |
| Parameter | Type | Required | Description |
|---|---|---|---|
| prompt | string | Yes | Video description prompt |
| functionMode | string | Yes | first_last_frames |
| filePaths | array | No | Image URL array (0 = text-to-video, 1 = first frame, 2 = first & last) |
| ratio | string | No | 21:9 / 16:9 / 4:3 / 1:1 / 3:4 / 9:16 |
| duration | integer | No | 4–15, default 5 |
| model | string | No | seedance_2.0_fast (default) / seedance_2.0 |
| Action | Tool | Key Parameters |
|---|---|---|
| Submit task | submit_task | model_id, parameters |
| Query result | get_task | task_id |
| Upload image | upload_image | image_url or image_data |
| Check balance | get_balance | (none) |
| Action | Command | Description |
|---|---|---|
| Submit task | python scripts/seedance_api.py submit --model MODEL --params '{...}' |
Returns task_id |
| Single query | python scripts/seedance_api.py query --task-id ID |
Returns current status |
| Auto-poll | python scripts/seedance_api.py poll --task-id ID --interval N --timeout N |
Blocks until done |
| Check balance | python scripts/seedance_api.py balance |
Returns account balance |
| Upload image | python scripts/seedance_api.py upload --image-url URL or --image-path PATH |
Returns image URL |
Script path note: The
scripts/seedance_api.pypath above is relative to.cursor/skills/seedance2-api/. Use the full path.cursor/skills/seedance2-api/scripts/seedance_api.pywhen executing, orcdinto the skill directory first.
See reference.md for detailed storyboard templates, full examples, and camera movement glossary.
Prerequisites
Time Estimate
15-45 minutes depending on use case complexity
Steps
Common Pitfalls
✓ Do
✗ Don't
💡 Pro Tips
✓ Use when
Use when skill capabilities match your task, clear ROI on time saved, and you can validate outputs. Best for repetitive tasks, learning, and quality improvement.
✗ Avoid when
Avoid when task requires deep expertise you can't validate, involves sensitive decisions, or when learning process is more valuable than speed of completion.
jwynia/agent-skills
mindrally/skills
kostja94/marketing-skills
github/awesome-copilot
wispbit-ai/skills
shubhamsaboo/awesome-llm-apps
I recommend seedance2-api for anyone iterating fast on agent tooling; clear intent and a small, reviewable surface area.
Useful defaults in seedance2-api — fewer surprises than typical one-off scripts, and it plays nicely with `npx skills` flows.
seedance2-api has been reliable in day-to-day use. Documentation quality is above average for community skills.
seedance2-api fits our agent workflows well — practical, well scoped, and easy to wire into existing repos.
seedance2-api reduced setup friction for our internal harness; good balance of opinion and flexibility.
Keeps context tight: seedance2-api is the kind of skill you can hand to a new teammate without a long onboarding doc.
seedance2-api is among the better-maintained entries we tried; worth keeping pinned for repeat workflows.
We added seedance2-api from the explainx registry; install was straightforward and the SKILL.md answered most questions upfront.
Solid pick for teams standardizing on skills: seedance2-api is focused, and the summary matches what you get after install.
seedance2-api has been reliable in day-to-day use. Documentation quality is above average for community skills.
showing 1-10 of 55