From Office
Generate 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 first frame, or two stills are morphed start-to-end. Triggers include "generate a video", "make a clip", "animate this image", "turn this storyboard into video", "生成视频", "做个视频", "让这张图动起来", "图生视频", "首尾帧生成视频". Prefer this skill over describing a video in text.
How this skill is triggered — by the user, by Claude, or both
Slash command
/office:generate-video "PROMPT" [-o out.mp4] [--first-frame img] [--last-frame img] [--duration 5] [--resolution 720p] [--ratio 16:9] [--no-audio] [--seed N]"PROMPT" [-o out.mp4] [--first-frame img] [--last-frame img] [--duration 5] [--resolution 720p] [--ratio 16:9] [--no-audio] [--seed N]This skill is limited to the following tools:
The summary Claude sees in its skill listing — used to decide when to auto-load this skill
Turn a text prompt — optionally anchored by a first frame, a last frame, or reference
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.npx claudepluginhub daisycatts/dotclaude --plugin officeCreates structured, bite-sized implementation plans from specs or requirements before writing code. Useful for breaking down multi-step tasks into testable steps with file structure and task boundaries.