← All skills
spark-video-episode
65 / 100 · Review before installing
Check before installing. Some of what it can do is expected: a media skill usually calls an AI service over the internet.
By modelstudioai/skills (GitHub) · media · 59 stars · scanned at commit 39b4fcc
One-shot autopilot orchestrator — runs the full spark-video pipeline (screenwriter ↔ director per-scene parallel → render chain-DAG parallel + per-clip review → stitch). User confirms at 4 gates (+ 1 mode gate at start + 1 BGM gate when bgm/ folder detected). Use when the user wants "make me an episode" in one command.
Works with any agent that supports SKILL.md skills.
Partially scanned — some files couldn't be read; we'll retry on the next scan
What this skill can do
Runs commands on your computer
The author does not mention this.
Found in 33 places.
Show 17 more
- skills/spark-video/SKILL.md, line 36
export SPARK_VIDEO_PROJECT=<project_id> - skills/spark-video/SKILL.md, line 126
./scripts/doctor.sh # bl + ffmpeg + uv present - skills/spark-video/SKILL.md, line 170
test -d projects/$SPARK_VIDEO_PROJECT/bgm || \ - skills/spark-video/SKILL.md, line 181
uv run scripts/scaffold.py cast-init # build cast.json - skills/spark-video/SKILL.md, line 207
uv run scripts/storyboard.py compile --mode <drama|narration> - skills/spark-video/SKILL.md, line 215
uv run scripts/build_viewer.py # opens viewer.html in browser for review - skills/spark-video/SKILL.md, line 249
uv run scripts/build_viewer.py # opens viewer.html — now includes scenes + shots - skills/spark-video/SKILL.md, line 265
uv run scripts/render_all.py --reset --ratio 9:16 - skills/spark-video/SKILL.md, line 299
uv run scripts/build_viewer.py # opens viewer.html — all clips + reviews visible - skills/spark-video/SKILL.md, line 305
jq '.[] | {shot: .shot_id, ver: .winner_version, - skills/spark-video/SKILL.md, line 317
uv run scripts/stitch.py --crossfade 0.5 - skills/spark-video/SKILL.md, line 332
uv run scripts/build_viewer.py - skills/spark-video/references/spark-video-cast/SKILL.md, line 24
export SPARK_VIDEO_PROJECT=<project_id> - skills/spark-video/references/spark-video-cast/SKILL.md, line 72
uv run scripts/scaffold.py cast --name "陆辰" - skills/spark-video/references/spark-video-cast/SKILL.md, line 80
./scripts/bl image generate \ - skills/spark-video/references/spark-video-cast/SKILL.md, line 105
uv run scripts/scaffold.py cast --name "钱夫人" --episode - skills/spark-video/references/spark-video-cast/SKILL.md, line 117
uv run scripts/scaffold.py cast-init # merges project + episode tiers
and 13 more places
Downloads and installs other software
The author does not mention this.
Found in 6 places.
Show 3 more
Changes files outside its own folder
The author does not mention this.
Found in 2 places.
Sends data to these websites: dashscope.aliyuncs.com
The author does not mention this. Expected for a media skill.
Found in 23 places.
Show 17 more
- skills/spark-video/api-references/dashscope/image/wan-text2imageV2.md, line 413
status = ImageGeneration.fetch(task=task, api_key=api_key) - skills/spark-video/api-references/dashscope/image/wan-text2imageV2.md, line 566
f.write(requests.get(result.url).content) - skills/spark-video/api-references/dashscope/image/wan-text2imageV2.md, line 663
f.write(requests.get(result.url).content) - skills/spark-video/api-references/dashscope/image/wan-text2imageV2.md, line 671
status = ImageSynthesis.fetch(task=task, api_key=api_key) - skills/spark-video/api-references/dashscope/image/wan-text2imageV2.md, line 1104
ImageSynthesisResult result = is.fetch(taskId, apiKey); - skills/spark-video/api-references/dashscope/tts/cosyvoice-tts.md, line 17
| ## **请求体** | ## 非流式 ``` curl -X POST https://dashscope.aliyuncs.com/api/v1/services/audio/tts/SpeechSynthesizer \\ -H "Authorization: Bearer $DASHSCOPE_API_KE - skills/spark-video/api-references/dashscope/video/happyhorse/happyhorse-1.0-i2v.md, line 89
| #### 请求参数 | ## 查询任务结果 将`{task_id}`完整替换为上一步接口返回的`task_id`的值。`task_id`查询有效期为24小时。 ``` curl -X GET https://dashscope.aliyuncs.com/api/v1/tasks/{task_id} \\ --hea - skills/spark-video/api-references/dashscope/video/happyhorse/happyhorse-1.0-r2v.md, line 88
| #### 请求参数 | ## 查询任务结果 将`{task_id}`完整替换为上一步接口返回的`task_id`的值。`task_id`查询有效期为24小时。 ``` curl -X GET https://dashscope.aliyuncs.com/api/v1/tasks/{task_id} \\ --hea - skills/spark-video/api-references/dashscope/video/happyhorse/happyhorse-1.0-t2v.md, line 89
| #### 请求参数 | ## 查询任务结果 将`{task_id}`完整替换为上一步接口返回的`task_id`的值。`task_id`查询有效期为24小时。 ``` curl -X GET https://dashscope.aliyuncs.com/api/v1/tasks/{task_id} \\ --hea - skills/spark-video/api-references/dashscope/video/happyhorse/happyhorse-1.0-video-edit.md, line 88
| #### 请求参数 | ## 查询任务结果 将`{task_id}`完整替换为上一步接口返回的`task_id`的值。`task_id`查询有效期为24小时。 ``` curl -X GET https://dashscope.aliyuncs.com/api/v1/tasks/{task_id} \\ --hea - skills/spark-video/api-references/dashscope/video/wan/wan-image2video.md, line 95
| #### 请求参数 | ## 查询任务结果 将`{task_id}`完整替换为上一步接口返回的`task_id`的值。`task_id`查询有效期为24小时。 ``` curl -X GET https://dashscope.aliyuncs.com/api/v1/tasks/{task_id} \\ --hea - skills/spark-video/api-references/dashscope/video/wan/wan-image2video.md, line 264
status = VideoSynthesis.fetch(task=rsp, api_key=api_key) - skills/spark-video/api-references/dashscope/video/wan/wan-reference2video.md, line 88
| #### 请求参数 | ## 查询任务结果 将`{task_id}`完整替换为上一步接口返回的`task_id`的值。`task_id`查询有效期为24小时。 ``` curl -X GET https://dashscope.aliyuncs.com/api/v1/tasks/{task_id} \\ --hea - skills/spark-video/api-references/dashscope/video/wan/wan-reference2video.md, line 288
status = VideoSynthesis.fetch(task=rsp, api_key=api_key) - skills/spark-video/api-references/dashscope/video/wan/wan-text2video.md, line 90
| #### 请求参数 | ## 查询任务结果 将`{task_id}`完整替换为上一步接口返回的`task_id`的值。`task_id`查询有效期为24小时。 ``` curl -X GET https://dashscope.aliyuncs.com/api/v1/tasks/{task_id} \\ --hea - skills/spark-video/api-references/dashscope/video/wan/wan-text2video.md, line 243
status = VideoSynthesis.fetch(task=rsp, api_key=api_key) - skills/spark-video/api-references/dashscope/video/wan/wan-text2video.md, line 500
VideoSynthesisResult result = is.fetch(taskId, apiKey);
and 3 more places
Safer alternatives
Low-risk skills in the same category (media) that look related. Check that one does what you need.
Other copies in this repository
modelstudioai/skills has 1 more folder with a skill named spark-video-episode. This page shows the lowest-scoring copy.
Install
Paste this into your terminal. It downloads exactly the version we scanned, not whatever is newest.
if [ -e ~/.agents/skills/'spark-video-episode' ] || [ -L ~/.agents/skills/'spark-video-episode' ]; then echo 'A skill folder named spark-video-episode already exists — not replacing it' >&2; false; else d=$(mktemp -d) && git clone --quiet --filter=blob:none --no-checkout 'https://github.com/modelstudioai/skills' "$d" && git -C "$d" checkout --quiet '39b4fcc94df3072baa06d6431039e3a91716e61b' -- 'skills/spark-video' && mkdir -p ~/.agents/skills && cp -R "$d"/'skills/spark-video' ~/.agents/skills/'spark-video-episode' && rm -rf "$d"; fi
Codex reads ~/.agents/skills directly. For Claude Code, Cursor, Copilot, Gemini CLI, Antigravity or OpenCode, also link it. For Claude Code: ln -s ~/.agents/skills/'spark-video-episode' ~/.claude/skills/'spark-video-episode' (other agents: ~/.cursor/skills, ~/.copilot/skills, ~/.gemini/skills, ~/.gemini/config/skills, ~/.config/opencode/skills). Or install through the finder skill, which does both.
Badge for your README
The badge for modelstudioai/skills shows the score of its lowest-scoring skill.

[](https://zalavijaysinh.github.io/skilltrust/repos/modelstudioai/skills/)
Score history
| Date | Version | Score |
|---|
| 2026-11-13 | 39b4fcc | 65 |
| 2026-11-07 | 18d749e | 65 |