Skip to main content
ClaudeWave
Skill1.5k repo starsupdated 5d ago

video-gen

|

Install in Claude Code
Copy
git clone --depth 1 https://github.com/0xsline/OpenChatCut /tmp/video-gen && cp -r /tmp/video-gen/src/agent/skills/video-gen ~/.claude/skills/video-gen
Then start a new Claude Code session; the skill loads automatically.

SKILL.md

# Video Gen

Submits one video generation job per call and returns a `jobId`. Job management (wait / status) belongs to `track_progress`; this skill does **not** place videos on the timeline automatically.

## When to Use

Any time the user wants to generate a video clip — text-to-video, image-to-video, first-last-frame transition, reference-based generation, multi-shot storyboard, or generatively editing / extending an existing video (producing new generated footage based on a source clip; not timeline trimming).

## Models

| Model | Reference | Strengths |
| --- | --- | --- |
| `seedance2` | [references/seedance2.md](references/seedance2.md) | Default when configured. Multimodal refs, first/last, edit/extend/bridge, 2–15s, 480p/720p/1080p/4k, audio/seed/camera/watermark/last-frame/task controls. |
| `kling` | [references/kling.md](references/kling.md) | Technical camera/performance; Omni multi-shot; images ≤7 (≤4 with one feature `refVideos`); std/pro; 3–15s. |
| `hailuo` | [references/hailuo.md](references/hailuo.md) | MiniMax 海螺. T2V / I2V / first+last; **6s or 10s**; 512P (Hailuo-02), 720p→768P, 1080P (6s); no multi-ref / multi-shot. |
| `grok-imagine-video` | [references/grok-imagine-video.md](references/grok-imagine-video.md) | xAI Grok Imagine. Text-to-video only; 1–15s; 480p/720p/1080p; audio track included. |

**IMPORTANT:** Before generating, READ the chosen model's reference for capabilities, input channels, modes, prompt structure, and model-specific behavior. Never invent params the reference forbids.

## Model Selection

Respect **configured vendors** from the capabilities prompt (only call a model whose key is on).

1. **User named a vendor** ("用海螺", "MiniMax", "Kling", "Seedance") → that `model`, if configured.
2. Else **default `seedance2`** when Seedance is configured.
3. Else if only Kling is on → `kling`. Else if only MiniMax is on → `hailuo`. Else if only xAI is on → `grok-imagine-video`.
4. Switch away from default when:
   - Need **multi-shot customize / intelligence** → `kling` (confirm if not user-named).
   - Need **rich multi-modal refs** (video/audio refs, edit/extend) → `seedance2`.
   - Need a **short single beat** and only MiniMax is available, or user wants Hailuo → `hailuo` with duration 6 or 10.

If the required model is **not configured**, say so and offer: another configured video vendor, upload, or Motion Graphic — do not pretend the API exists.

Briefly tell the user what you will generate before submitting.

## Tool Params

| Param | Values | Default |
| --- | --- | --- |
| `model` | `seedance2`, `kling`, `hailuo`, `grok-imagine-video` | seedance2 when available |
| `durationSeconds` | model-specific | seedance/kling ~5; **hailuo 6 or 10** (1080p → 6 only); **grok 1–15** |
| `ratio` | see model docs | 16:9 (seedance/kling/grok); **ignored on hailuo** |
| `resolution` | `480p`, `512p`, `720p`, `1080p`, `4k` | provider-specific; hailuo adds 512p for Hailuo-02; grok: 480p/720p/1080p |
| `refVideoMode` | `feature`, `base` | kling only, with `refVideos` |
| `promptOptimizer` / `fastPretreatment` | boolean | hailuo only |
| `generateAudio`, `seed`, `cameraFixed`, `watermark` | controls | seedance only |
| `returnLastFrame`, `executionExpiresAfter`, `priority` | controls | seedance only; requested last frame becomes another image asset |
| `name` | descriptive asset name | required for good pool UX |
| `firstFrame` | project image asset ref | optional |
| `lastFrame` | project image asset ref | seedance / kling / hailuo (requires firstFrame; not with multi-ref on seedance) |
| `refImages` / `refVideos` / `refAudios` | asset refs | seedance full; kling: images + **1** feature video (no audio); hailuo: none (frames / S2V subject) |
| `mode` / `shotType` / `multiPrompts` | Kling multi-shot | kling only |

Model-specific params — see the model's reference.

## Input Resolution

`firstFrame` / `lastFrame` / `refImages` / `refVideos` / `refAudios` all take a project asset reference. Prefer a full UUID or short prefix from `read_project`; `asset://<id>` and same-project asset URLs returned by `read_project` are also accepted. Per-slot type: frame slots and `refImages` → image; `refVideos` → video; `refAudios` → audio.

External URLs and base64 are not accepted. If the source is a public URL, download it into the project first (`download_media` for video/audio, `submit_image` for images) and pass the resulting asset id.

## Workflow

Four-step loop. For each new generation, restart from Step 1 if the user's intent has shifted.

### Step 1 — Align scope with the user

Before writing any prompt, align on three dimensions:

1. **Duration & segments** — total length, how many shots, and whether they live in one clip or several.

   If the user has already stated a direction ("做一段", "in one video", "分别生成", "split into N shots", etc.), follow it — don't second-guess.

   Otherwise, surface the two paths and let the user pick:
   - **Multi-shot within one clip** (see model ref) — single inference, subject / lighting / style physically consistent across sub-shots; fits a coherent narrative within the per-clip duration cap.
   - **Multiple clips** — each clip is independently controllable and re-rollable, but identity and style continuity have to be carried by anchors; fits durations beyond the cap or hard scene breaks.

   Offer the trade-off; do not pick for the user.

2. **Content** — what each clip depicts. Summarize back what you understood, segment by segment. When content is vague (e.g. "generate a video of a girl dancing"), the user typically hasn't specified one or more of:
   - **Subject**: who / what is the main subject (appearance, outfit, defining features)?
   - **Action**: what are they doing? (For talking / emotional shots, what micro-expression?)
   - **Scene**: where — setting, time of day, environmental details?
   - **Lighting / color mood**: what atmosphere?
   - **Camera**: any shot-size / angle / movement preference?
   - **Style**: visual style o
openchatcutSkill

Connect an MCP-capable coding agent to OpenChatCut and edit local video projects. Use when the user asks to install, connect, or set up OpenChatCut; inspect or edit an OpenChatCut project; work with its timeline, transcript, captions, media, generation, motion graphics, audio, color, or export tools; or recover from an OpenChatCut MCP error.

ai-cinematic-short-filmSkill

Plan AI short films with story, shots, prompts, and continuity.

asset-importSkill

Use when acquiring or importing media into a OpenChatCut project asset library for video editing or creation, including local/attached videos, user-provided paths, public media URLs, web video/audio/image assets, upload fallback decisions, and deciding between import_media, download_media, or manual user action.

create-motion-graphicsSkill

Use whenever the agent needs to add, create, hand-author, patch, or place Motion Graphic JSX assets in a OpenChatCut project. This is the direct-authoring path: use create_motion_graphic_from_code / edit_asset / edit_item, not motion-graphic-gen or submit_motion_graphic. Covers project/timeline intake, project visual language, editable properties, asset binding, inline JSX authoring, existing asset updates, timeline placement, and verification.

explainer-videoSkill

Create finished explainer videos from a topic, script, outline, voiceover, product logic, data, technical concept, course material, or reference assets. Use when the user wants narration, motion graphics, stock footage, generated visuals, or mixed visuals to explain an idea.

exportSkill

Use when a OpenChatCut video editing or creation workflow needs export, render, download, share, final delivery, subtitle-file export, render choice, local-only asset handling, or export fallback explanation.

image-genSkill

|

known-errorsSkill

Use when a OpenChatCut tool call fails or returns an unexpected shape.