home / skills / wwwzhouhui / skills_collection / seedance-video-creator

seedance-video-creator skill

/seedance-video-creator

This skill helps you generate professional storyboard prompts and directly produce seedance videos with multi-modal inputs and automated downloads.

npx playbooks add skill wwwzhouhui/skills_collection --skill seedance-video-creator

Review the files below or copy the command above to add this skill to your agents.

Files (5)
SKILL.md
16.6 KB
---
name: seedance-video-creator
description: Seedance 2.0 专业分镜提示词生成 + 视频生成一体化工具。当用户想要创作分镜视频、使用 Seedance/即梦生成视频、需要专业分镜提示词并直接生成视频时调用。支持多图参考、分镜引导、API 调用生成视频、自动下载。
disable-model-invocation: false
---

# Seedance 2.0 分镜视频创作工具

将创意想法转化为专业分镜提示词,通过即梦 API 先生成参考图,再基于图片+提示词生成视频、自动下载。

---

## 前置条件

使用本技能前,确保以下服务可用:

1. **jimeng-free-api-all 服务运行中**(默认端口 8000)
   ```bash
   # Docker 部署
   docker run -it -d --init --name jimeng-free-api-all \
     -p 8000:8000 -e TZ=Asia/Shanghai \
     wwwzhouhui569/jimeng-free-api-all:latest
   ```

2. **获取 SessionID**:
   - 打开 https://jimeng.jianying.com 并登录
   - F12 → Application → Cookies → 复制 `sessionid` 值

3. **环境变量**(可选,也可在交互中指定):
   - `JIMENG_API_URL`:API 基础地址(默认 `http://127.0.0.1:8000`),**注意只填基础地址,不要包含路径部分**。如使用 duckcloud 服务则为 `https://jimeng.duckcloud.fun`
   - `JIMENG_SESSION_ID`:即梦 SessionID

---

## 核心能力

### Seedance 2.0 特性

**重要约束**:Seedance 2.0 **必须至少提供一张参考图片**,不支持纯文本生成视频。当用户没有提供图片时,需要先通过文生图 API 生成首帧参考图。

**多模态输入**(最多12个文件):
- 图片:≤9张(首帧/尾帧/角色/场景参考)
- 视频:≤3个,总时长≤15s(运镜/动作/特效参考)
- 音频:≤3个,总时长≤15s(配乐/音效/对白参考)
- 文本:自然语言描述

**视频参数**:
- 模型:`seedance-2.0`(推荐)
- 比例:`1:1` / `4:3` / `3:4` / `16:9` / `9:16`
- 时长:`4` - `15` 秒

**交互方式**:使用 `@1`、`@2`(或 `@图1`、`@image1`)指定素材用途

---

## 完整工作流(三阶段)

**核心流程**:分镜提示词 → 文生图生成首帧 → 图片+提示词生成视频

```
用户输入创意 → 第一阶段:生成分镜提示词
             → 第二阶段:调用文生图 API 生成首帧参考图 → 下载图片到本地
             → 第三阶段:用参考图 + 分镜提示词调用 Seedance 2.0 → 下载视频
```

---

## 第一阶段:分镜提示词生成

### 步骤一:理解用户想法

用友好的方式询问用户:
1. **你想讲什么故事?**(一句话概括核心内容)
2. **视频时长?**(4-15秒,默认4秒)
3. **有参考素材吗?**(图片/视频路径)
4. **是否需要直接生成视频?**(是→进入第二、三阶段 / 否→只输出提示词)

### 步骤二:深入挖掘细节

根据用户的初步回答,逐步引导完善以下维度:

#### 1. 内容叙事
- 故事的起承转合
- 关键情节和角色
- 对白/旁白内容

#### 2. 视觉风格
- 整体风格:写实/动画/水墨/科幻/复古/电影感
- 色调氛围:明亮/昏暗/暖色/冷色/黑白
- 画面比例:竖屏(9:16)/横屏(16:9)/标准(4:3)

#### 3. 镜头语言
- 景别变化:远景→全景→中景→近景→特写
- 运镜方式:推/拉/摇/移/跟/环绕/升降/希区柯克变焦
- 转场方式:硬切/渐变/匹配剪辑/特效转场

#### 4. 动作与节奏
- 主体动作:行走/奔跑/打斗/舞蹈/表情变化
- 动作节奏:舒缓/急促/有张有弛

#### 5. 声音设计
- 配乐风格:激昂/温馨/悬疑/欢快/史诗
- 音效需求:环境音/动作音效/特殊音效

### 步骤三:构建分镜结构

将故事拆解为时间轴上的镜头序列。

**示例结构(4秒视频)**:
```
0-1秒:开场镜头,建立场景
1-3秒:发展,核心动作/情感
3-4秒:结尾,画面定格
```

### 步骤四:生成两种提示词

根据收集的信息,分别生成:

#### A. 首帧图片提示词(用于文生图)

描述视频第一帧的静态画面,作为 Seedance 2.0 的首帧参考图。

**首帧提示词要求**:
- 描述一个静止的画面瞬间(不含动作、运镜等动态描述)
- 包含:场景、人物/主体外观、光影、色调、构图
- 画面比例应与视频比例一致
- 简洁精炼,100-200 字

**示例**:
```
日落时分的海边沙滩,一位穿着白色飘逸长裙的年轻女孩站在海边,面朝大海,夕阳逆光照射,金色光晕笼罩全身,长发和裙摆被海风轻轻吹动,远处海平线上的落日将天空染成橘红色,脚边浅浅的海浪泡沫
```

#### B. 视频分镜提示词(用于 Seedance 视频生成)

完整的分镜提示词,用 `@1` 引用首帧参考图。

**提示词结构模板**:
```
【整体描述】风格 + 时长 + 画面比例 + 整体氛围

@1 作为画面首帧参考

【分镜描述】
0-X秒:[镜头运动],[画面内容],[主体动作],[光影/特效]
X-Y秒:[镜头运动],[画面内容],[主体动作],[光影/特效]
...

【声音说明】配乐风格/音效/对白
```

**提示词书写原则**:
1. 时间轴清晰,标注每段的秒数范围
2. 镜头语言明确(推/拉/摇/移/跟/环绕等)
3. 动作描述具体,避免模糊词汇
4. **必须使用 `@1` 引用首帧图片**(首帧图片由第二阶段自动生成)
5. 如果用户提供了多张图片,使用 `@1`、`@2` 分别引用
6. 总长度控制在 500 字以内

### 步骤五:优化与确认

- 检查是否违反平台规则(写实人脸限制)
- 确认用户满意后进入第二阶段

---

## 第二阶段:文生图生成首帧参考图

**目的**:Seedance 2.0 必须有参考图片,当用户没有提供图片时,先通过文生图 API 生成首帧画面。

**如果用户已提供图片**:跳过此阶段,直接进入第三阶段。

### 步骤一:调用文生图 API

```bash
curl -s --max-time 120 -X POST "${API_URL}/v1/images/generations" \
  -H "Authorization: ${SESSION_ID}" \
  -H "Content-Type: application/json" \
  -d "{
    \"model\": \"jimeng-4.5\",
    \"prompt\": \"${首帧图片提示词}\",
    \"ratio\": \"${RATIO}\",
    \"resolution\": \"2k\"
  }"
```

**参数说明**:
| 参数 | 说明 | 推荐值 |
|------|------|--------|
| model | 图像生成模型 | `jimeng-4.5`(稳定高质量) |
| prompt | 首帧画面描述 | 第一阶段生成的首帧提示词 |
| ratio | 画面比例 | 与视频比例一致(如 `9:16`) |
| resolution | 图片分辨率 | `2k` |

**API 返回格式**:
```json
{
  "created": 1700000000,
  "data": [
    { "url": "https://p6-heycan-hgt.byteimg.com/..." }
  ]
}
```

### 步骤二:下载首帧图片到本地

```bash
IMAGE_URL=$(echo "${RESPONSE}" | jq -r '.data[0].url')
IMAGE_FILE="/tmp/seedance_frame_$(date +%Y%m%d_%H%M%S).png"
curl -sL -o "${IMAGE_FILE}" "${IMAGE_URL}"
```

### 步骤三:向用户展示首帧图片

报告生成结果,让用户确认首帧画面满意后进入第三阶段。

---

## 第三阶段:Seedance 2.0 视频生成与下载

### 步骤一:确认生成参数

| 参数 | 说明 | 默认值 |
|------|------|--------|
| API 地址 | jimeng-free-api-all 服务地址 | `http://127.0.0.1:8000` |
| SessionID | 即梦平台的 sessionid | 环境变量或用户提供 |
| 模型 | seedance-2.0 | `seedance-2.0` |
| 比例 | 视频画面比例 | 与首帧图片一致 |
| 时长 | 4-15 秒 | `4` |
| 参考图片 | 首帧图片路径(第二阶段生成或用户提供) | 必需 |

### 步骤二:调用 Seedance 视频生成 API

**使用本地图片(multipart/form-data)**:

```bash
curl -s --max-time 300 -X POST "${API_URL}/v1/videos/generations" \
  -H "Authorization: ${SESSION_ID}" \
  -F "model=seedance-2.0" \
  -F "prompt=${VIDEO_PROMPT}" \
  -F "ratio=${RATIO}" \
  -F "duration=${DURATION}" \
  -F "files=@${IMAGE_FILE}"
```

**多张图片时**:

```bash
curl -s --max-time 300 -X POST "${API_URL}/v1/videos/generations" \
  -H "Authorization: ${SESSION_ID}" \
  -F "model=seedance-2.0" \
  -F "prompt=${VIDEO_PROMPT}" \
  -F "ratio=${RATIO}" \
  -F "duration=${DURATION}" \
  -F "files=@/path/to/image1.jpg" \
  -F "files=@/path/to/image2.jpg"
```

**重要**:
- **Seedance 2.0 必须至少上传一张图片**,否则返回错误 `{"code":-2001,"message":"Seedance 2.0 需要至少一张图片"}`
- API 是同步阻塞的,会自动轮询直到视频生成完成(通常 60-120 秒)
- curl 超时建议设置为 300 秒:`--max-time 300`
- 提示词中的 `@1`、`@2` 对应 `files` 参数中图片的上传顺序
- Authorization 头**不需要** `Bearer` 前缀,直接传 SessionID

### 步骤三:解析结果

API 返回 OpenAI 兼容格式:

```json
{
  "created": 1700000000,
  "data": [
    {
      "url": "https://v3-dreamnia.jimeng.com/...",
      "revised_prompt": "原始提示词"
    }
  ]
}
```

### 步骤四:下载视频

```bash
VIDEO_URL=$(echo "${RESPONSE}" | jq -r '.data[0].url')
OUTPUT_FILE="seedance_$(date +%Y%m%d_%H%M%S).mp4"
curl -L -o "${OUTPUT_FILE}" "${VIDEO_URL}"
echo "视频已下载到: $(pwd)/${OUTPUT_FILE}"
```

### 步骤五:展示结果

向用户报告:
1. 视频生成成功/失败
2. 视频文件路径和大小
3. 使用的首帧图片和分镜提示词(方便用户微调重试)

---

## 错误处理

### API 错误码

| 错误 | 含义 | 处理方式 |
|------|------|----------|
| `code: -2001` | Seedance 需要至少一张图片 | 先调文生图 API 生成首帧,再重试 |
| HTTP 200 | 成功 | 提取 data[0].url |
| HTTP 401 | SessionID 过期 | 提示用户重新获取 |
| HTTP 400 | 参数错误 | 检查 model/ratio/duration |
| HTTP 429 | 积分不足 | 提示用户等待或充值 |
| HTTP 500 | 服务器错误 | 重试或检查服务状态 |

### 常见问题

| 问题 | 解决方案 |
|------|----------|
| Seedance 报错需要图片 | 必须先通过文生图生成首帧,再用图片调 Seedance |
| 连接拒绝 | 检查 jimeng-free-api-all 容器是否运行 |
| 生成超时 | 增加 curl --max-time,或降低时长 |
| 内容被过滤 | 修改提示词,避免敏感内容 |
| 视频 URL 失效 | URL 有时效性,及时下载 |
| 积分不足 | 每日免费积分有限,次日刷新 |

---

## 完整示例对话

### 示例一:纯文本创作(无用户图片 → 自动生成首帧)

**用户**:帮我生成一个橘猫在海边捉螃蟹的视频,9:16竖屏,4秒

**第一阶段 - 生成提示词**:

首帧图片提示词:
```
阳光明媚的海边沙滩,一只圆滚滚的橘色猫咪蹲在潮湿的沙滩上,好奇地盯着面前一只小螃蟹,金色阳光照射,海浪轻轻拍打岸边,色彩鲜明活泼,3D动画风格
```

视频分镜提示词:
```
可爱3D动画风格,4秒,9:16竖屏,阳光明媚的海边

@1 作为画面首帧参考

0-1秒:中景,画面中的橘猫好奇地盯着沙滩上的小螃蟹,海浪轻拍岸边
1-3秒:近景跟随,橘猫伸出爪子试探性地去抓螃蟹,螃蟹举起钳子反击,橘猫被吓得往后一跳,表情夸张可爱
3-4秒:中景微拉远,橘猫和螃蟹对峙,背景碧蓝大海和白色浪花

背景音效:欢快俏皮卡通配乐 + 海浪声
```

**第二阶段 - 生成首帧参考图**:
```bash
# 1. 调用文生图 API 生成首帧
curl -s --max-time 120 -X POST "${API_URL}/v1/images/generations" \
  -H "Authorization: ${SESSION_ID}" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "jimeng-4.5",
    "prompt": "阳光明媚的海边沙滩,一只圆滚滚的橘色猫咪蹲在潮湿的沙滩上,好奇地盯着面前一只小螃蟹,金色阳光照射,海浪轻轻拍打岸边,色彩鲜明活泼,3D动画风格",
    "ratio": "9:16",
    "resolution": "2k"
  }'

# 2. 下载图片
IMAGE_URL=$(echo "${RESPONSE}" | jq -r '.data[0].url')
curl -sL -o /tmp/seedance_frame.png "${IMAGE_URL}"
```

**第三阶段 - 生成视频**:
```bash
curl -s --max-time 300 -X POST "${API_URL}/v1/videos/generations" \
  -H "Authorization: ${SESSION_ID}" \
  -F "model=seedance-2.0" \
  -F "prompt=可爱3D动画风格,4秒,9:16竖屏,阳光明媚的海边

@1 作为画面首帧参考

0-1秒:中景,画面中的橘猫好奇地盯着沙滩上的小螃蟹,海浪轻拍岸边
1-3秒:近景跟随,橘猫伸出爪子试探性地去抓螃蟹,螃蟹举起钳子反击,橘猫被吓得往后一跳,表情夸张可爱
3-4秒:中景微拉远,橘猫和螃蟹对峙,背景碧蓝大海和白色浪花

背景音效:欢快俏皮卡通配乐 + 海浪声" \
  -F "ratio=9:16" \
  -F "duration=4" \
  -F "files=@/tmp/seedance_frame.png"
```

### 示例二:用户提供图片(跳过第二阶段)

**用户**:用这两张图片生成一个两人跳舞的视频
- 图片1:/home/user/dancer1.jpg
- 图片2:/home/user/dancer2.jpg

**跳过第二阶段**,直接进入第三阶段:
```bash
curl -s --max-time 300 -X POST "${API_URL}/v1/videos/generations" \
  -H "Authorization: ${SESSION_ID}" \
  -F "model=seedance-2.0" \
  -F "prompt=电影级写实风格,10秒,4:3画幅,舞台灯光氛围

@1 和 @2 面对面站立,两人开始双人舞,镜头缓慢环绕,动作优雅协调,光影交错" \
  -F "ratio=4:3" \
  -F "duration=10" \
  -F "files=@/home/user/dancer1.jpg" \
  -F "files=@/home/user/dancer2.jpg"
```

---

## 分镜模板速查

### 模板一:叙事故事类

```
【风格】电影级写实/动画/水墨/科幻风格
【时长】4-15秒
【画幅】16:9

@1 作为画面首帧参考

0-X秒:[镜头运动],[场景建立],[主体引入]
X-Y秒:[镜头运动],[情节发展],[动作描述]
Y-Z秒:[镜头运动],[高潮/结尾]

【声音】配乐风格 + 音效 + 对白
```

### 模板二:产品展示类

```
【风格】商业广告/极简/高端/科技感
【时长】4-15秒

@1 作为产品首帧参考

0-X秒:产品展示,运镜环绕/推拉
X-Y秒:产品细节特写,材质/工艺展示
Y-Z秒:品牌落版,slogan展示

【声音】大气恢宏/轻快时尚/科技感配乐
```

### 模板三:角色动作类

```
【风格】根据角色设定(武侠/科幻/现代/奇幻)
【时长】4-15秒

@1 作为角色参考

0-X秒:角色亮相,定格或缓慢展示造型
X-Y秒:核心动作展示(打斗/舞蹈/特技)
Y-Z秒:动作收尾,pose定格

【声音】动作音效 + 氛围配乐
```

### 模板四:风景旅拍类

```
【风格】电影级纪录片/治愈系/史诗感
【时长】4-15秒

@1 作为场景首帧参考

0-X秒:大景别建立镜头,展示环境全貌
X-Y秒:中景推进,引入人物或细节
Y-Z秒:回到大景别或意境落版

【声音】环境音 + 氛围配乐
```

---

## 镜头语言速查

| 中文 | 效果 | 适用场景 |
|------|------|----------|
| 推镜头 | 强调主体,营造紧张感 | 情感爆发、细节展示 |
| 拉镜头 | 展现场景,营造疏离感 | 开场建立、结尾收束 |
| 摇镜头 | 左右/上下展示环境 | 环境介绍、角色关系 |
| 移镜头 | 平行移动,跟随主体 | 行走、追逐 |
| 跟镜头 | 跟随主体移动 | 动作跟拍 |
| 环绕镜头 | 360度展示主体 | 产品展示、角色亮相 |
| 升降镜头 | 从上往下或从下往上 | 场景全貌、气势展示 |
| 希区柯克变焦 | 背景压缩/拉伸效果 | 悬疑、心理变化 |
| 手持晃动 | 纪实感/紧张感 | 纪录片、追逐 |
| 一镜到底 | 不切镜头,连续拍摄 | 沉浸感、长叙事 |

## 氛围关键词速查

**光影**:逆光、侧光、顶光、伦勃朗光、剪影、轮廓光、体积光、丁达尔效应
**色调**:暖色调、冷色调、高饱和、低饱和、黑白、赛博朋克、复古胶片
**质感**:电影级、纪录片风格、广告质感、MV风格、油画感、水墨感
**情绪**:温馨、紧张、悬疑、欢快、忧伤、史诗、治愈、惊悚

---

## 注意事项

- **Seedance 2.0 必须至少提供一张图片**,纯文本会返回错误
- 没有用户图片时,必须先通过文生图 API 生成首帧参考图
- 暂不支持上传包含写实真人脸部的素材
- 混合输入总上限是12个文件
- API 调用是同步阻塞的,生成视频通常需要 60-120 秒
- 视频下载 URL 有时效性,生成后应立即下载
- 每日免费积分有限(约66积分),文生图和视频生成都消耗积分,合理规划
- Authorization 头**不需要** `Bearer` 前缀,直接传 SessionID

---

## 输出格式

最终输出应包含:
1. **理解确认**:确认理解的故事内容
2. **首帧提示词**:用于文生图的首帧画面描述
3. **分镜提示词**:用于 Seedance 视频生成的完整提示词(含 @1 引用)
4. **首帧图片**:文生图生成的参考图路径(如果调用了 API)
5. **生成参数**:model/ratio/duration
6. **生成结果**:视频文件路径(如果调用了 API)

Overview

This skill converts creative ideas into professional storyboard prompts and can directly generate videos using the Seedance 2.0 family via a jimeng-compatible API. It supports multimodal references (images, short videos, audio), guided or quick workflows, and automatic download of generated video files. Use it to get concise Seedance-ready prompts or to produce finished short videos with minimal manual steps.

How this skill works

I ask focused questions to capture story, duration, style, camera actions, and reference files, then produce a time-coded storyboard prompt formatted for Seedance 2.0. If the user opts in, I call a jimeng-free-api-all endpoint with the prompt and uploaded files, poll until completion, extract the returned video URL, and optionally download the video to a local path. The tool handles text-only, local file multipart uploads, and URL-based file references.

When to use it

  • You want a professional, time-coded storyboard prompt tailored to Seedance 2.0 syntax.
  • You have reference images/videos and want them integrated into a short generated video.
  • You prefer step-by-step guided creation when you are unsure about visual details.
  • You already have a clear prompt and want fast generation with minimal interaction.
  • You need automatic download and a ready-to-share MP4 file after generation.

Best practices

  • Provide a one-sentence story summary and preferred duration (4/5/10s) up front.
  • Upload prioritized references (max 12 files total; images ≤9, videos ≤3, audio ≤3).
  • Use @1/@2 placeholders in prompts to map to uploaded files in order.
  • Keep prompts under ~500 Chinese characters (or equivalent) to avoid degradation.
  • Set curl timeout to 300s when calling the API and download generated URLs promptly.

Example use cases

  • Create a 10s cinematic promo from concept to final MP4 using two reference photos.
  • Generate a quick 5s vertical social clip from a short text storyboard (text-only).
  • Produce a dance scene using a reference video for camera movement replication.
  • Build a product teaser with closeups and brand splash using product images.
  • Extend or edit an existing video by referencing @video1 and specifying modifications.

FAQ

What API setup is required before generating videos?

Run the jimeng-free-api-all service (default port 8000) and obtain a sessionid from jimeng.jianying.com cookies or provide it as JIMENG_SESSION_ID.

Why did generation fail or return 401/429?

401 means session expired—get a fresh sessionid. 429 indicates quota limitations; wait, reduce usage, or top up credits.