brainstorming
brainstorming
You MUST use this before any creative work - creating features, building components, adding functionality, modifying behavior, or planning anything new, in software or out of it (a talk, a business, a renovation).
generate-videoGenerate short videos from a text prompt or from still images using ByteDance Seedance on Volcengine Ark. Use this skill whenever the user wants to create, generate, render, or animate a video, clip, animation, motion graphic, or product demo — including text-to-video ("a drone shot over a forest at sunrise") and image-to-video, where a still becomes the fi…
Independent GitHub snapshot · Automated classification · Original documentation governs
Turn a text prompt — optionally anchored by a first frame, a last frame, or reference
images — into a short video. The script submits an async task, polls until it finishes,
and downloads the .mp4. Generation takes a few minutes, so set expectations and let it run.
uv available (self-contained uv run script; deps install on first run).
A Volcengine Ark key. Resolved progressively, so any one works:
export ARK_API_KEY=... in the shell, or.env file (checked in order: $PWD/.env, then ${CLAUDE_PLUGIN_ROOT}/.env), or--api-key ... on the command line.CRITICAL -- Never paste the API key into chat or commit a .env. If the key is missing,
the script prints exactly how to set it — relay that instead of guessing.
--first-frame img.png. The still becomes the opening frame and
the model adds motion. This is the right mode for animating a storyboard panel or product render.--first-frame a.png and --last-frame b.png to interpolate
a transition between two stills.--image path:reference_image (repeatable) to steer style/composition.If the user attached an image, default to image-to-video unless they clearly want a fresh scene.
Read references/prompting.md before writing a non-trivial prompt. Seedance responds well to
prompts that describe the shot over time (beats like [0s-2s] … [2s-5s] …), the camera move,
and what must stay fixed. For image-to-video, explicitly state which traits of the source to
preserve (style, framing, colors) so the clip does not drift.
Invoke it directly (the shebang runs it through uv):
${CLAUDE_PLUGIN_ROOT}/skills/generate-video/scripts/generate_video.py "PROMPT" -o OUT.mp4 [flags]
Flags:
| Flag | Purpose | Default |
|---|---|---|
-o, --output | Output .mp4 path | output.mp4 |
--first-frame | Start-frame image (image-to-video) | none |
--last-frame | End-frame image (morph start→end) | none |
--image | PATH or PATH:ROLE (first_frame/last_frame/reference_image); repeatable | none |
--ratio | Aspect ratio: 16:9, 9:16, 1:1, … | 16:9 |
--resolution | 480p / 720p / 1080p (no 2K/4K on Ark) | 720p |
--duration | seconds, 4–15 for Seedance 2.0 | 5 |
--watermark | Keep the provider watermark | off |
--no-audio | Disable native audio (2.0 generates synced audio by default) | audio on |
--seed | Integer seed for reproducibility | random |
--model | pro, fast, mini, or a raw id (else SEEDANCE_MODEL) | pro |
Models (pass the alias to --model or set SEEDANCE_MODEL):
| Alias | Model id | Use for |
|---|---|---|
pro (default) | doubao-seedance-2-0-260128 | full quality, up to 1080p |
fast | doubao-seedance-2-0-fast-260128 | cheaper / faster, 720p max |
mini | doubao-seedance-2-0-mini-260615 | lightest / cheapest |
The script blocks while polling (status prints to stderr). For batch work, prefer longer single runs over many tiny ones — each task has fixed overhead, and the API bills per task.
Tell the user the saved path and the settings used (duration, resolution). The output is an
.mp4: reference it by path. If a task fails, relay the provider's error message and suggest
a fix (often a softer prompt, a different ratio, or a valid source image).
API key, model id, AND base URL are each resolved by lib/progressive_env.py in this order,
stopping at the first hit: CLI flag → process env → .env chain → built-in default.
Two consequences worth knowing:
doubao-seedance-2-0-260128; to use a different/newer Seedance build, set
export SEEDANCE_MODEL=<id> (or pass --model). Confirm the exact id in the Ark console —
do not assume a marketing name like "Seedance 3" maps to a literal model id.export ARK_BASE_URL=... for another Ark region.scripts/generate_video.py — the generator (Seedance via Ark REST, async + poll + download).references/prompting.md — prompt-writing guide and full parameter reference.${CLAUDE_PLUGIN_ROOT}/lib/progressive_env.py — shared progressive config resolver.