skills/hexiaochun/seedance2-api/SKILL.md
Out-of-the-box Seedance 2.0 API skill — just one API key to generate AI videos. Builds storyboards, generates reference images with Seedream 4.5, submits video tasks, and polls results. Supports both MCP and standalone Python script mode. Use when the user mentions seedance, AI video, storyboard, or video generation.
npx skillsauth add aiskillstore/marketplace seedance2-apiInstall 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.
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}'
</details>
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"}'
</details>
Images typically complete in 1–2 minutes.
<details> <summary><b>MCP Method</b></summary>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
</details>
| 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"
</details>
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"
}'
</details>
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"
}'
</details>
Video generation takes approximately 10 minutes.
<details> <summary><b>MCP Method</b></summary>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"
</details>
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.
development
Apple Human Interface Guidelines for content display components. Use this skill when the user asks about charts component, collection view, image view, web view, color well, image well, activity view, lockup, data visualization, content display, displaying images, rendering web content, color pickers, or presenting collections of items in Apple apps. Also use when the user says how should I display charts, what's the best way to show images, should I use a web view, how do I build a grid of items, what component shows media, or how do I present a share sheet. Cross-references: hig-foundations for color/typography/accessibility, hig-patterns for data visualization patterns, hig-components-layout for structural containers, hig-platforms for platform-specific component behavior.
tools
Automate HelpDesk tasks via Rube MCP (Composio): list tickets, manage views, use canned responses, and configure custom fields. Always search tools first for current schemas.
testing
Expert Haskell engineer specializing in advanced type systems, pure functional design, and high-reliability software. Use PROACTIVELY for type-level programming, concurrency, and architecture guidance.
tools
GraphQL gives clients exactly the data they need - no more, no less. One endpoint, typed schema, introspection. But the flexibility that makes it powerful also makes it dangerous. Without proper controls, clients can craft queries that bring down your server. This skill covers schema design, resolvers, DataLoader for N+1 prevention, federation for microservices, and client integration with Apollo/urql. Key insight: GraphQL is a contract. The schema is the API documentation. Design it carefully.