OpenClaw × 豆包模型:构建图像与视频生成 Skills 实践

暂时无法在飞书文档外展示此内容

引言

2026年初,AI Agent 领域迎来了一场革命性的变革。OpenClaw 作为开源 AI Agent 框架,在 GitHub 上发布不到一周便获得超过 10 万颗星,成为历史上增长最快的开源项目之一。与此同时,字节跳动旗下的豆包大模型家族持续进化,其视频生成模型 Seedance 2.0 更是被《黑神话:悟空》制作人冯骥评价为"地表最强视频生成模型"。

当 OpenClaw 的灵活编排能力遇上豆包模型的多模态生成能力,会碰撞出怎样的火花?本文将深入探讨如何基于 OpenClaw 构建图像与视频生成 Skills,实现从文字创意到视觉呈现的端到端自动化。

技术背景:OpenClaw 与豆包模型概览

1.1 OpenClaw:开源 AI Agent 的"操作系统"

OpenClaw(前身为 Clawdbot 和 Moltbot)是一款自主、开源的人工智能助手框架,其核心设计理念可以概括为三个关键词:本地优先技能驱动多渠道连接

核心架构特点:

  • Gateway 网关:作为持久运行的控制平面,支持 24×7 不间断运行,通过 WebSocket 与各消息渠道保持长连接
  • Session 会话管理:通过 SessionKey 机制实现多渠道、多会话的精准路由
  • Agent Loop:基于 ReAct 范式的智能体运行时,支持工具调用、上下文管理、故障转移
  • Skills 技能系统:模块化的功能扩展机制,通过 SKILL.md 文件定义,支持社区共享

Skills 技能系统是 OpenClaw 最具特色的设计之一。每个 Skill 都是一个独立的 Markdown 文件,包含 YAML 格式的元数据和自然语言指令。这种设计使得技能具有高度的可移植性和可读性,开发者可以轻松创建、分享和组合各种能力模块。

1.2 豆包模型:多模态生成的前沿探索

豆包大模型家族是字节跳动推出的大语言模型系列,日均 tokens 使用量已超过 1.3 万亿。其多模态能力尤为突出:

豆包 ·图像 生成模型

模型模型ID特点
Seedream 4.0doubao-seedream-4-0-250828组图生成、多模态输入、图像编辑
Seedream 4.5doubao-seedream-4-5-251128最新版本,效果最佳,支持4K
通用3.0high_aes_general_v30l_zt2i高清大图、逼真人像、文字响应
即梦3.0jimeng_t2i_v30即梦同源、文字排版、层次美感
即梦3.1jimeng_t2i_v31画面美感升级、风格多样

Seedance 视频 生成模型

模型模型ID特点
Seedance 1.0 Prodoubao-seedance-1-0-pro-250528专业级,支持文生视频、图生视频
Seedance 1.0 Pro Fastdoubao-seedance-1-0-pro-fast-250610速度提升3倍
Seedance 1.0 Lite T2Vdoubao-seedance-1-0-lite-t2v-250428性价比之选,文生视频
Seedance 1.0 Lite I2Vdoubao-seedance-1-0-lite-i2v-250428图生视频,支持首帧/首尾帧
Seedance 1.5 Prodoubao-seedance-1-5-pro-251215最新版本,支持有声视频生成
Seedance 2.0控制台可用地表最强视频生成模型

Seedance 2.0 核心能力:

  • 原声音画同步:自动生成与画面匹配的原生音轨
  • 多镜头长叙事:支持分镜设计与运镜,镜头序列在角色、光影、风格上保持高度统一
  • 多模态可控生成:支持文字、图片、音频、视频四种模态混合输入
  • 物理一致性:人物动作自然连贯,遵循现实世界运动规律

Skills 构建实践:基于OpenClaw实现

我们可以基于OpenClaw实现简单的 skill 创建。以下是具体的步骤:

❗️为了带上完整的上下文,在让OpenClaw做同一件事时可以引用前面的回答。

安装 Skill-Creator 技能

在和OpenClaw的飞书机器人中输入以下内容:

安装skill-creator 技能

创建文生图技能

在和OpenClaw的飞书机器人中输入以下内容:

基于火山的文本生成图像接口,调用 skill-creator 创建一个图像生成的skill。该Skill需要考虑成本精细化管理和错误处理与重试机制。

创建文生视频技能

在和OpenClaw的飞书机器人中输入以下内容:

基于火山的文本生成视频接口,调用 skill-creator 创建一个视频生成的skill。该Skill需要考虑成本精细化管理和错误处理与重试机制。

设置 ARK_API_KEY

在和OpenClaw的飞书机器人中输入以下内容:

设置环境变量ARK_API_KEY 并将值设置成xxxxx

设置模型名称

方舟大模型参数重,模型名称可以传入模型 ID 或者推理接入点名称

模型 ID 通常是由【模型名称-版本】构成,因此会随着版本变化而变化。我们可以通过 火山方舟模型列表获取模型 ID。推理接入点可以参考火山方舟模型列表

设置模型名称为xxxx

如何使用?

可以参考以下提示词:

请调用 volcengine-image-generate 技能生成一个小花狗的图片。输出思考过程。

如下是本地测试的输出:

思考过程
需求确认:用户指定使用volcengine-image-generate技能生成小花狗图片,要求输出完整思考过程。
前置校验:
✅ 技能配置检查:推理端点、模型名称、API密钥均已正确配置,成本控制、自动重试机制正常运行
✅ 成本校验:今日已消耗0元,本次预计消耗0.08元,未超过10元的每日成本上限,允许调用
✅ 模型可用性校验:已通过之前的橘猫生成测试验证端点和模型可正常调用
参数设计:
提示词(prompt):优化为可爱的小花狗,黄白相间毛茸茸,耷拉着软耳朵,吐着粉色小舌头,蹲在绿油油的草地上,阳光洒在毛发上亮晶晶,治愈卡通风格,明亮柔和色彩,高清细节,无水印无多余文字,包含主体特征、场景、风格、画质要求,避免生成瑕疵
图片尺寸:使用已适配的1920x1920分辨率,符合模型像素要求
生成数量:默认1张,满足用户需求
执行逻辑:运行技能核心脚本,传入提示词参数,触发API调用;若遇到网络错误、限流、服务端错误会自动指数退避重试最多3次,保障生成成功率
结果处理:调用成功则返回图片URL和消耗统计,失败则返回错误原因和解决方案
执行调用: 
✅ 小花狗图片生成成功啦🥳
🖼️ 生成的图片链接:
点击查看可爱小花狗(这里实际是个引用链接)
链接有效期24小时,本次调用消耗0元,今日剩余可用额度10元~需要调整风格或者生成其他内容随时告诉我哦😉

Skills 构建实践:基于TRAE

上一章节讲解了如何使用OpenClaw来自动生成文生图和文生视频的技能。如果您对技能的要求较高并且希望看到具体技能实现逻辑,我们可以使用TRAE来生成和测试。

2.1 Skills 架构设计原则

在构建图像与视频生成 Skills 时,我们遵循以下设计原则:

  1. 单一职责原则 每个 Skill 应专注于一个明确的任务,如"生成图像"或"生成视频"。这有助于提高技能的可复用性和可维护性。
  2. 双API支持 火山引擎提供两种API接口:
  • 方舟API( Ark API) :使用 API Key 认证,支持 Seedream 图像模型和 Seedance 视频模型
  • 视觉API(Visual API) :使用 Access Key + Secret Key 签名认证,支持通用和即梦系列模型
  1. 成本精细化管理 图像和视频生成是高成本操作,需要内置:

    1. 预览机制:低分辨率预览,确认后再生成高清版本
    2. 批量优化:合并相似请求
    3. 缓存策略:缓存生成结果,相似提示词复用
  2. 错误处理与重试机制 多模态生成任务可能因网络、配额等原因失败,需要设计合理的重试策略和降级方案。

2.2 图像生成 Skill 实现

提示词

基于火山的文本生成图像接口,调用 skill-creator 创建一个图像生成的skill。该Skill需要考虑成本精细化管理和错误处理与重试机制。

请提前在TRAE 下安装 https://github.com/anthropics/skills/tree/main/skills/skill-creator

目录结构

volcano-image-generator/
├── SKILL.md                    # 技能定义文件
├── config.example.json         # 配置示例
└── scripts/
    ├── generate_image.py       # 主生成脚本
    ├── volcano_signer.py       # API签名工具
    └── cost_manager.py         # 成本管理模块

SKILL.md 定义

---
name: volcano-image-generator
description: 基于火山引擎豆包文生图模型的图像生成技能。支持多种模型(通用3.0、即梦3.0/3.1、Seedream 4.0/4.5),支持自定义分辨率、风格、文字渲染等。当用户需要生成图像、创建图片、AI绘画、文生图时使用此技能。
---

# 火山引擎图像生成技能

基于火山引擎豆包文生图模型的高质量图像生成能力。

## 快速开始

```bash
# 使用Seedream 4.0生成图像(推荐)
python scripts/generate_image.py --prompt "一只可爱的橘猫在阳光下打盹" --output cat.png

# 指定尺寸
python scripts/generate_image.py --prompt "壮丽的日落海边风景" --size 2K --output sunset.png

# 查看所有模型
python scripts/generate_image.py --list-models
```

## 认证配置

技能支持两种API,需要不同的认证方式:

### 方舟API(Seedream 4.0/4.5)

使用 API Key 认证,设置环境变量:

```bash
export ARK_API_KEY="your-api-key"
```

或在 `~/.volcengine/config.json` 中配置:
```json
{
  "ark_api_key": "your-api-key"
}
```

**获取方式:**
1. 访问 [火山方舟控制台](https://console.volcengine.com/ark)
2. 进入「API Key管理」
3. 创建或复制 API Key

### 视觉API(通用3.0、即梦3.0/3.1)

使用 Access Key 签名认证:

```bash
export VOLC_ACCESS_KEY="your-access-key"
export VOLC_SECRET_KEY="your-secret-key"
```

或在 `~/.volcengine/config.json` 中配置:
```json
{
  "access_key": "your-access-key",
  "secret_key": "your-secret-key"
}
```

**获取方式:**
1. 访问 [火山引擎控制台](https://console.volcengine.com/)
2. 点击右上角头像 → 「密钥管理」
3. 创建或查看 Access Key

## 支持的模型

### 方舟API模型(推荐)

| 模型名称 | 模型ID | 特点 |
|---------|--------|------|
| `seedream_v40` | doubao-seedream-4-0-250828 | 组图生成、多模态输入、图像编辑 |
| `seedream_v45` | doubao-seedream-4-5-251128 | 最新版本,效果最佳,支持4K |

### 视觉API模型

| 模型名称 | req_key | 特点 |
|---------|---------|------|
| `general_v30` | high_aes_general_v30l_zt2i | 高清大图、逼真人像、文字响应 |
| `jimeng_v30` | jimeng_t2i_v30 | 即梦同源、文字排版、层次美感 |
| `jimeng_v31` | jimeng_t2i_v31 | 画面美感升级、风格多样 |

## 使用示例

### 基础文生图

```bash
# 默认使用Seedream 4.0
python scripts/generate_image.py --prompt "一只可爱的橘猫" --output cat.png

# 使用Seedream 4.5(效果最佳)
python scripts/generate_image.py --prompt "一只可爱的橘猫" --model seedream_v45 --output cat.png
```

### 指定尺寸

```bash
# 使用预设比例
python scripts/generate_image.py --prompt "风景照" --ratio 16:9 --output landscape.png

# 使用预设尺寸
python scripts/generate_image.py --prompt "高清人像" --size 2K --output portrait.png

# 自定义尺寸
python scripts/generate_image.py --prompt "产品图" --size 1920x1080 --output product.png
```

### 参考图生图(方舟API)

```bash
# 使用参考图片
python scripts/generate_image.py --prompt "将这只猫变成水彩画风格" \
  --reference-images https://example.com/cat.jpg \
  --output watercolor_cat.png
```

### 使用视觉API模型

```bash
# 使用即梦3.1
python scripts/generate_image.py --prompt "动漫风格少女" \
  --model jimeng_v31 \
  --output anime.png

# 开启文本扩写优化
python scripts/generate_image.py --prompt "咖啡店" \
  --model jimeng_v31 \
  --use-pre-llm \
  --output coffee.png
```

## 成本管理

图像生成是高成本操作,本技能提供完整的成本精细化管理功能。

### 预览机制

先生成低分辨率预览,确认后再生成高清版本:

```bash
# 1. 生成预览图(512x512,低成本)
python scripts/generate_image.py --prompt "一只可爱的橘猫" --preview

# 2. 查看预览图,满意后生成高清版本
python scripts/generate_image.py --prompt "一只可爱的橘猫" --quality hd
```

### 质量级别

| 级别 | 分辨率 | 适用场景 |
|------|--------|----------|
| `preview` | 512×512 | 快速预览,成本最低 |
| `standard` | 1024×1024 | 标准使用(默认) |
| `hd` | 2048×2048 | 高清输出 |
| `4k` | 4096×4096 | 超高清输出 |

### 缓存策略

自动缓存生成结果,相似提示词复用缓存:

```bash
# 缓存默认开启,相同提示词直接返回缓存结果
python scripts/generate_image.py --prompt "一只可爱的橘猫"

# 禁用缓存,强制重新生成
python scripts/generate_image.py --prompt "一只可爱的橘猫" --no-cache

# 清理缓存
python scripts/generate_image.py --clear-cache
```

### 风格模板

保存常用配置为风格模板,快速复用:

```bash
# 保存风格模板
python scripts/generate_image.py --prompt "赛博朋克风格的城市夜景" \
  --save-style cyberpunk --model seedream_v45

# 使用风格模板
python scripts/generate_image.py --style cyberpunk --prompt "未来都市" --output city.png

# 列出所有模板
python scripts/generate_image.py --list-styles

# 删除模板
python scripts/generate_image.py --delete-style cyberpunk
```

### 批量生成

批量处理多个提示词,自动合并相似请求:

```bash
# 创建提示词文件 prompts.txt
echo "一只可爱的橘猫" > prompts.txt
echo "一只白色的波斯猫" >> prompts.txt
echo "一只黑色的英短猫" >> prompts.txt

# 批量生成
python scripts/generate_image.py --batch prompts.txt --output-dir ./output
```

### 成本估算

在实际生成前估算成本:

```bash
python scripts/generate_image.py --prompt "一只可爱的橘猫" --estimate-cost --quality hd
```

输出示例:
```
💰 成本估算
  模型: seedream_v40
  质量: hd
  预估费用: ¥0.08
  实际价格以火山引擎官方定价为准
```

## 参数说明

| 参数 | 说明 | 默认值 |
|------|------|--------|
| `--prompt, -p` | 图像描述提示词 | 必填 |
| `--output, -o` | 输出文件路径 | output.png |
| `--model, -m` | 生成模型 | seedream_v40 |
| `--size, -s` | 图像尺寸(如 1024x1024、2K、4K) | 1024x1024 |
| `--ratio, -r` | 预设比例(1:116:99:16等) | - |
| `--seed` | 随机种子(可复现结果) | 随机 |
| `--reference-images` | 参考图片URL列表 | - |
| `--watermark` | 添加水印 | False |
| `--use-pre-llm` | 开启文本扩写(视觉API) | False |
| `--scale` | 文本影响程度 1-10(视觉API) | 2.5 |

**成本管理参数:**

| 参数 | 说明 | 默认值 |
|------|------|--------|
| `--preview` | 预览模式(低分辨率) | False |
| `--quality, -q` | 质量级别:preview/standard/hd/4k | standard |
| `--use-cache` | 使用缓存结果 | True |
| `--no-cache` | 禁用缓存 | False |
| `--estimate-cost` | 仅估算成本,不生成 | False |
| `--save-style NAME` | 保存为风格模板 | - |
| `--style NAME` | 使用风格模板 | - |
| `--list-styles` | 列出所有风格模板 | - |
| `--delete-style NAME` | 删除风格模板 | - |
| `--clear-cache` | 清理缓存 | - |
| `--batch FILE` | 批量生成提示词文件 | - |
| `--output-dir DIR` | 批量输出目录 | - |

## 预设尺寸

| 比例 | 尺寸 |
|------|------|
| 1:1 | 1024×1024 |
| 4:3 | 1024×768 |
| 16:9 | 1024×576 |
| 9:16 | 576×1024 |
| 21:9 | 1024×439 |
| 2K | 2048×2048 |
| 4K | 4096×4096 |

## 提示词优化指南

### 结构化提示词

```
[主体描述] + [场景环境] + [动作/状态] + [风格修饰] + [技术参数]
```

### 示例

- **人物肖像** :`一位优雅的女性,半身照,柔和的自然光,电影质感,8k分辨率`
- **产品图** :`一台复古咖啡机,放在木质桌面上,暖色调背景,商业摄影风格`
- **风景** :`日落时分的海边悬崖,金色阳光洒在岩石上,壮丽景色,广角镜头`

### 文字渲染

在 prompt 中用引号包裹需要渲染的文字:

```
一张圣诞节海报,上面写着"Merry Christmas",红色和金色配色,节日氛围
```

## 错误处理

常见错误及解决方案:

| 错误 | 原因 | 解决方案 |
|------|------|----------|
| `InvalidEndpointOrModel.NotFound` | 模型未开通 | 在方舟控制台开通对应模型 |
| `SignatureDoesNotMatch` | 签名错误 | 检查 VOLC_ACCESS_KEY 和 VOLC_SECRET_KEY |
| `PermissionDenied` | 权限不足 | 检查服务是否开通 |
| `QuotaExceeded` | 配额不足 | 检查账户余额或申请扩容 |

## 参考文档

- [Seedream 4.0 教程](https://www.volcengine.com/docs/82379/1548482)
- [通用3.0文生图](https://www.volcengine.com/docs/85128/1526761)
- [即梦文生图3.1](https://www.volcengine.com/docs/85621/1756900)
- [签名机制](https://www.volcengine.com/docs/6461/1277764)

核心生成逻辑

MODEL_CONFIGS = {
    "seedream_v40": {
        "api_type": "ark",
        "model_id": "doubao-seedream-4-0-250828",
        "description": "Seedream 4.0,组图生成、多模态输入、图像编辑",
        "supports": ["t2i", "i2i", "edit", "multi_image"]
    },
    "seedream_v45": {
        "api_type": "ark",
        "model_id": "doubao-seedream-4-5-251128",
        "description": "Seedream 4.5,最新版本,效果最佳,支持4K",
        "supports": ["t2i", "i2i", "edit", "multi_image"]
    },
    "general_v30": {
        "api_type": "visual",
        "req_key": "high_aes_general_v30l_zt2i",
        "description": "通用3.0,高清大图、逼真人像、文字响应",
        "sync": True
    },
    "jimeng_v30": {
        "api_type": "visual",
        "req_key": "jimeng_t2i_v30",
        "description": "即梦3.0,即梦同源、文字排版、层次美感",
        "sync": False
    },
    "jimeng_v31": {
        "api_type": "visual",
        "req_key": "jimeng_t2i_v31",
        "description": "即梦3.1,画面美感升级、风格多样",
        "sync": False
    }
}

def generate_image_ark(api_key: str, prompt: str, model: str,
                       size: str = "1024x1024", **kwargs) -> dict:
    """使用方舟API生成图像(Seedream模型)"""
    model_config = MODEL_CONFIGS.get(model)
    
    body = {
        "model": model_config["model_id"],
        "prompt": prompt,
        "size": size,
        "response_format": "url"
    }
    
    url = "https://ark.cn-beijing.volces.com/api/v3/images/generations"
    headers = {
        "Content-Type": "application/json",
        "Authorization": f"Bearer {api_key}"
    }
    
    response = requests.post(url, headers=headers, json=body, timeout=120)
    return response.json()

成本管理功能

 # 预览模式:先生成低分辨率预览
python generate_image.py --prompt "一只猫" --preview

# 质量级别
python generate_image.py --prompt "一只猫" --quality hd

# 成本估算
python generate_image.py --prompt "一只猫" --estimate-cost --quality hd

# 风格模板
python generate_image.py --prompt "赛博朋克城市" --save-style cyberpunk
python generate_image.py --style cyberpunk --prompt "未来都市" # 批量生成
python generate_image.py --batch prompts.txt --output-dir ./output

2.3 视频生成 Skill 实现

提示词

基于火山的文本生成视频接口,调用 skill-creator 创建一个文生视频的skill。该Skill需要考虑成本精细化管理和错误处理与重试机制。

目录结构

volcano-video-generator/
├── SKILL.md                    # 技能定义文件
└── scripts/
    ├── generate_video.py       # 主生成脚本
    ├── volcano_signer.py       # API签名工具
    └── cost_manager.py         # 成本管理模块

支持的生成模式

模式说明支持模型
文生视频 (t2v)文字描述生成视频Seedance全系列、即梦视频系列
图生视频-首帧 (i2v_first_frame)指定视频起始画面Seedance Pro/Lite I2V、即梦Pro
图生视频-首尾帧 (i2v_first_last_frame)指定起始和结束画面Seedance Pro/Lite I2V
图生视频-参考图 (i2v_reference)使用参考图指导生成Seedance Lite I2V

SKILL.md定义

---
name: volcano-video-generator
description: 基于火山引擎豆包视频生成模型(Seedance和即梦系列)的视频生成技能。当用户需要从文本生成视频、从图片创建视频(图生视频),或使用AI视频生成API时使用此技能。支持文生视频、图生视频(首帧、首尾帧、参考图)以及多种宽高比和分辨率。
---

# 火山引擎视频生成器

基于火山引擎豆包视频生成模型生成视频,支持 Seedance 系列(方舟API)和即梦系列(视觉API)。

## 快速开始

```bash
# 文生视频(最简单)
python scripts/generate_video.py --prompt "一只橘猫在阳光下打哈欠" --output cat.mp4

# 指定模型和参数
python scripts/generate_video.py --prompt "城市夜景延时摄影" --model seedance_pro --ratio 16:9 --duration 5

# 图生视频(首帧)
python scripts/generate_video.py --prompt "猫咪慢慢睁开眼睛" --first-frame cat.jpg --output video.mp4

# 列出所有可用模型
python scripts/generate_video.py --list-models
```

## 认证配置

支持两种认证方式:

**1. 方舟API(Seedance模型)**
设置环境变量 `ARK_API_KEY` 或配置 `~/.volcengine/config.json````json
{
  "ark_api_key": "your-api-key"
}
```

**2. 视觉API(即梦模型)**
设置环境变量 `VOLC_ACCESS_KEY``VOLC_SECRET_KEY` 或配置:
```json
{
  "access_key": "your-access-key",
  "secret_key": "your-secret-key"
}
```

## 可用模型

### Seedance 系列(方舟API)

| 模型 | 模型ID | 描述 | 支持功能 |
|-------|----------|-------------|----------|
| `seedance_pro` | `doubao-seedance-1-0-pro-250528` | 专业级质量,支持所有生成模式 | t2v, i2v_first_frame, i2v_first_last_frame |
| `seedance_pro_fast` | `doubao-seedance-1-0-pro-fast-250610` | 速度提升3倍 | t2v, i2v_first_frame |
| `seedance_lite_t2v` | `doubao-seedance-1-0-lite-t2v-250428` | 性价比之选,文生视频 | t2v |
| `seedance_lite_i2v` | `doubao-seedance-1-0-lite-i2v-250428` | 性价比之选,图生视频 | i2v_reference, i2v_first_frame, i2v_first_last_frame |
| `seedance_15_pro` | `doubao-seedance-1-5-pro-251215` | 最新版本,支持音频生成 | t2v, i2v_first_frame, i2v_first_last_frame |

### 即梦系列(视觉API)

| 模型 | Req Key | 描述 | 支持功能 |
|-------|---------|-------------|----------|
| `jimeng_v30_1080p` | `jimeng_t2v_v30_1080p` | 1080P专业级质量 | t2v |
| `jimeng_v30_pro` | `jimeng_ti2v_v30_pro` | 多镜头叙事能力 | t2v, i2v_first_frame |
| `jimeng_s20_pro` | `jimeng_vgfm_t2v_l20` | 高语义遵循 | t2v |

## 生成模式

### 文生视频 (t2v)

仅通过文字描述生成视频。

```bash
python scripts/generate_video.py \
  --prompt "一位穿着宇航服的宇航员在月球表面漫步,背景是蓝色的地球" \
  --model seedance_lite_t2v \
  --ratio 16:9 \
  --duration 5 \
  --output astronaut.mp4
```

### 图生视频 - 首帧 (i2v _first_ frame)

从指定图片开始生成视频。

```bash
python scripts/generate_video.py \
  --prompt "人物慢慢转过头,微笑着看向镜头" \
  --first-frame portrait.jpg \
  --model seedance_pro \
  --output portrait_video.mp4
```

### 图生视频 - 首尾帧 (i2v _first_ last _frame)

控制视频的起始和结束画面。

```bash
python scripts/generate_video.py \
  --prompt "从站立姿势慢慢坐下" \
  --first-frame standing.jpg \
  --last-frame sitting.jpg \
  --model seedance_pro \
  --output transition.mp4
```

### 图生视频 - 参考图 (i2v_ reference)

使用1-4张参考图指导生成。

```bash
python scripts/generate_video.py \
  --prompt "[图1]戴着眼镜的男生和[图2]的柯基小狗在草坪上玩耍" \
  --reference-images boy.jpg dog.jpg \
  --model seedance_lite_i2v \
  --output playing.mp4
```

## 成本管理

视频生成是高成本操作,本技能提供完整的成本管理功能。

### 预览模式

先生成低分辨率、短时长的预览视频,确认后再生成高清版本:

```bash
# 1. 生成预览(480p,2秒,低成本)
python scripts/generate_video.py --prompt "一只猫在花园里奔跑" --preview

# 2. 查看预览后生成高清版本
python scripts/generate_video.py --prompt "一只猫在花园里奔跑" --quality hd --duration 5
```

### 质量级别

| 级别 | 分辨率 | 时长 | 适用场景 |
|-------|------------|----------|----------|
| `preview` | 480p | 2秒 | 快速预览,成本最低 |
| `standard` | 720p | 5秒 | 标准使用(默认) |
| `hd` | 1080p | 5秒 | 高清输出 |

### 缓存策略

自动缓存生成结果,相似提示词复用缓存:

```bash
# 缓存默认开启,相同提示词直接返回缓存结果
python scripts/generate_video.py --prompt "一只猫在奔跑"

# 禁用缓存,强制重新生成
python scripts/generate_video.py --prompt "一只猫在奔跑" --no-cache

# 清理缓存
python scripts/generate_video.py --clear-cache
```

### 风格模板

保存常用配置为风格模板,快速复用:

```bash
# 保存风格模板
python scripts/generate_video.py --prompt "电影质感的城市夜景" \
  --save-style cinematic --model seedance_pro --ratio 21:9

# 使用风格模板
python scripts/generate_video.py --style cinematic --prompt "日落海滩" --output beach.mp4

# 列出所有模板
python scripts/generate_video.py --list-styles

# 删除模板
python scripts/generate_video.py --delete-style cinematic
```

### 批量生成

批量处理多个提示词,自动合并相似请求:

```bash
# 创建提示词文件 prompts.txt
echo "一只猫在玩球" > prompts.txt
echo "一只狗在公园奔跑" >> prompts.txt
echo "一只鸟在天空中飞翔" >> prompts.txt

# 批量生成
python scripts/generate_video.py --batch prompts.txt --output-dir ./output
```

### 成本估算

在实际生成前估算成本:

```bash
python scripts/generate_video.py --prompt "一只猫在奔跑" --duration 5 --estimate-cost --quality hd
```

输出示例:
```
💰 成本估算
  模型: seedance_lite_t2v
  质量: hd
  时长: 5秒
  预估费用: ¥0.6
  实际价格以火山引擎官方定价为准
```

## 参数说明

| 参数 | 说明 | 默认值 |
|-----------|-------------|---------|
| `--prompt, -p` | 视频描述提示词 | 必填 |
| `--output, -o` | 输出文件路径 | output.mp4 |
| `--model, -m` | 生成模型 | seedance_lite_t2v |
| `--first-frame, -f` | 首帧图片URL或路径 | 无 |
| `--last-frame, -l` | 尾帧图片URL | 无 |
| `--reference-images, -r` | 参考图片URL(1-4张) | 无 |
| `--resolution` | 视频分辨率:480p, 720p, 1080p | 模型默认 |
| `--ratio` | 宽高比:16:9, 4:3, 1:1, 3:4, 9:16, 21:9, adaptive | 16:9 |
| `--duration, -d` | 视频时长(秒,2-12) | 5 |
| `--frames` | 视频帧数(仅视觉API) | 1215秒) |
| `--seed, -s` | 随机种子(可复现结果) | 随机 |
| `--generate-audio` | 生成音频(仅Seedance 1.5 Pro) | False |
| `--watermark` | 添加水印 | False |
| `--max-wait` | 最大等待时间(秒) | 600 |

**成本管理参数:**

| 参数 | 说明 | 默认值 |
|-----------|-------------|---------|
| `--preview` | 预览模式(低分辨率、短时长) | False |
| `--quality, -q` | 质量级别:preview/standard/hd | standard |
| `--use-cache` | 使用缓存结果 | True |
| `--no-cache` | 禁用缓存 | False |
| `--estimate-cost` | 仅估算成本,不生成 | False |
| `--save-style NAME` | 保存为风格模板 | - |
| `--style NAME` | 使用风格模板 | - |
| `--list-styles` | 列出所有风格模板 | - |
| `--delete-style NAME` | 删除风格模板 | - |
| `--clear-cache` | 清理缓存 | - |
| `--batch FILE` | 批量生成提示词文件 | - |
| `--output-dir DIR` | 批量输出目录 | - |

## 宽高比和分辨率

### 支持的宽高比
- `16:9` - 标准宽屏(默认)
- `4:3` - 标准画面
- `1:1` - 正方形
- `3:4` - 竖屏
- `9:16` - 竖屏视频(移动端)
- `21:9` - 超宽屏
- `adaptive` - 根据输入自动选择(Seedance 1.5 Pro)

### 各宽高比分辨率示例(720p)

| 宽高比 | 尺寸 |
|-------|------------|
| 16:9 | 1280×720 |
| 4:3 | 1112×834 |
| 1:1 | 960×960 |
| 3:4 | 834×1112 |
| 9:16 | 720×1280 |
| 21:9 | 1470×630 |

## 提示词技巧

1. **描述镜头运动** :"镜头360度环绕拍摄..."
2. **清晰的动作序列** :"首先...然后...接着..."
3. **多镜头叙事** :"第一个镜头-全景:...第二个镜头-近景:..."
4. **具体明确** :避免模糊描述,使用精确的动词和细节

## 注意事项

- 视频生成是异步的,典型等待时间为30-120秒
- 生成的视频为MP4格式,24帧/秒
- 视频URL在24小时后过期,请及时下载
- 任务历史保留7天
- **Seedance 2.0 目前仅控制台可用(API尚未开放)**
- **模型ID必须包含版本后缀** (如 `-250428`),否则API会返回"模型不存在"错误
- **使用前请确保已在火山引擎控制台开通对应模型**

## 资源

### scripts/
- `generate_video.py` - 主视频生成脚本
- `volcano_signer.py` - 视觉API签名工具
- `cost_manager.py` - 成本管理模块

核心生成逻辑

MODEL_CONFIGS = {
    "seedance_pro": {
        "api_type": "ark",
        "model_id": "doubao-seedance-1-0-pro-250528",
        "description": "Seedance 1.0 Pro,专业级视频生成",
        "supports": ["t2v", "i2v_first_frame", "i2v_first_last_frame"]
    },
    "seedance_lite_t2v": {
        "api_type": "ark",
        "model_id": "doubao-seedance-1-0-lite-t2v-250428",
        "description": "Seedance 1.0 Lite 文生视频,性价比之选",
        "supports": ["t2v"]
    },
    "seedance_lite_i2v": {
        "api_type": "ark",
        "model_id": "doubao-seedance-1-0-lite-i2v-250428",
        "description": "Seedance 1.0 Lite 图生视频",
        "supports": ["i2v_reference", "i2v_first_frame", "i2v_first_last_frame"]
    },
    "seedance_15_pro": {
        "api_type": "ark",
        "model_id": "doubao-seedance-1-5-pro-251215",
        "description": "Seedance 1.5 Pro,支持有声视频生成",
        "supports": ["t2v", "i2v_first_frame", "i2v_first_last_frame"],
        "features": ["audio"]
    }
}

def create_ark_video_task(api_key: str, prompt: str, model: str,
                          first_frame_url: str = None,
                          last_frame_url: str = None,
                          resolution: str = None,
                          duration: int = None,
                          generate_audio: bool = None) -> str:
    """创建视频生成任务(方舟API)"""
    model_config = MODEL_CONFIGS.get(model)
    
    content = [{"type": "text", "text": prompt}]
    
    if first_frame_url:
        content.append({
            "type": "image_url",
            "image_url": {"url": first_frame_url},
            "role": "first_frame"
        })
    
    if last_frame_url:
        content.append({
            "type": "image_url",
            "image_url": {"url": last_frame_url},
            "role": "last_frame"
        })
    
    body = {
        "model": model_config["model_id"],
        "content": content
    }
    
    if duration:
        body["duration"] = duration
    if generate_audio is not None:
        body["generate_audio"] = generate_audio
    
    url = "https://ark.cn-beijing.volces.com/api/v3/contents/generations/tasks"
    headers = {
        "Content-Type": "application/json",
        "Authorization": f"Bearer {api_key}"
    }
    
    response = requests.post(url, headers=headers, json=body, timeout=30)
    result = response.json()
    
    return result["id"]

使用示例

 # 文生视频
python generate_video.py --prompt "一只橘猫在阳光下打哈欠" --output cat.mp4

# 图生视频(首帧)
python generate_video.py --prompt "猫咪慢慢睁开眼睛" \
  --first-frame cat.jpg --output video.mp4

# 预览模式
python generate_video.py --prompt "一只猫在奔跑" --preview

# 成本估算
python generate_video.py --prompt "一只猫在奔跑" --duration 5 --estimate-cost

# 批量生成
python generate_video.py --batch prompts.txt --output-dir ./output

2.4 成本管理模块实现

成本管理模块 cost_manager.py 提供以下核心功能:

class CostManager:
    """成本管理核心类""" # 预览配置
    PREVIEW_CONFIGS = {
        "image": {
            "preview": {"size": "512x512"},
            "standard": {"size": "1024x1024"},
            "hd": {"size": "2048x2048"},
            "4k": {"size": "4096x4096"}
        },
        "video": {
            "preview": {"resolution": "480p", "duration": 2},
            "standard": {"resolution": "720p", "duration": 5},
            "hd": {"resolution": "1080p", "duration": 5}
        }
    }
    
    # 缓存管理def compute_prompt_hash(prompt: str, model: str, **kwargs) -> str:
        """计算提示词哈希,用于缓存键"""
        content = f"{prompt}|{model}"for k in sorted(kwargs.keys()):
            if kwargs[k] is not None:
                content += f"|{k}={kwargs[k]}"return hashlib.md5(content.encode()).hexdigest()[:16]
    
    def find_similar_cache(prompt: str, model: str, 
                           similarity_threshold: float = 0.8) -> Optional[Dict]:
        """查找相似提示词的缓存结果"""
        prompt_words = set(prompt.lower().split())
        
        for cache_file in CACHE_DIR.glob("*.json"):
            cached_prompt = cache_data.get("data", {}).get("prompt", "")
            cached_words = set(cached_prompt.lower().split())
            
            similarity = len(prompt_words & cached_words) / len(prompt_words | cached_words)
            if similarity >= similarity_threshold:
                return cache_data
        return None # 成本估算def estimate_cost(media_type: str, model: str, quality: str, 
                      duration: int = None) -> Dict:
        """估算生成成本"""
        costs = {
            "image": {
                "seedream_v40": {"preview": 0.02, "standard": 0.04, "hd": 0.08, "4k": 0.16},
                "seedream_v45": {"preview": 0.03, "standard": 0.06, "hd": 0.12, "4k": 0.24}
            },
            "video": {
                "seedance_lite_t2v": {"preview": 0.1, "standard": 0.3, "hd": 0.6},
                "seedance_pro": {"preview": 0.2, "standard": 0.6, "hd": 1.2}
            }
        }
        
        base_cost = costs.get(media_type, {}).get(model, {}).get(quality, 0)
        if media_type == "video" and duration:
            base_cost = base_cost * (duration / 5)
        
        return {"estimated_cost": round(base_cost, 4), "currency": "CNY"}

最佳实践与优化策略

3.1 提示词工程

多模态生成的质量很大程度上取决于提示词的质量:

结构化提示词模板

[主体描述] + [场景环境] + [动作/状态] + [风格修饰] + [技术参数]

示例:
A vintage espresso machine (主体) 
sitting on a marble countertop in a cozy morning kitchen (场景)
with steam gently rising from the cup (动作)
cinematic lighting, warm color grading, shallow depth of field (风格)
8k resolution, photorealistic, professional product photography (技术)

3.2 成本优化实践

预览机制

 # 先生成低分辨率预览(成本降低75%)
python generate_image.py --prompt "产品图" --preview

# 确认满意后再生成高清版本
python generate_image.py --prompt "产品图" --quality hd

批量优化

 # 批量生成时自动合并相似请求
python generate_image.py --batch prompts.txt --output-dir ./output
# 输出:✓ 合并了 3 个相似请求

缓存策略

 # 相同提示词直接返回缓存结果
python generate_image.py --prompt "一只猫" # 输出:✓ 使用缓存结果 (hash: a1b2c3d4e5f6)# 相似提示词复用缓存
python generate_image.py --prompt "一只可爱的小猫" # 输出:✓ 找到相似缓存结果

成本估算

python generate_video.py --prompt "一只猫在奔跑" --duration 5 --estimate-cost --quality hd
# 输出:# 💰 成本估算#   模型: seedance_lite_t2v#   质量: hd#   时长: 5秒#   预估费用: ¥0.6

3.3 错误处理

 # 完善的错误处理机制def generate_with_retry(prompt: str, model: str, max_retries: int = 3):
    for attempt in range(max_retries):
        try:
            result = generate_image_core(prompt, model)
            return result
        except requests.Timeout:
            if attempt < max_retries - 1:
                time.sleep(2 ** attempt)  # 指数退避continueraise Exception("请求超时,请稍后重试")
        except requests.HTTPError as e:
            if e.response.status_code == 429:
                time.sleep(60)  # 速率限制,等待后重试continueraise

应用场景与案例分析

4.1 电商内容自动化

场景:某电商平台需要为新上架的 1000 件商品生成营销素材。

解决方案

 # 创建商品描述文件cat > products.txt << EOF
复古咖啡机,暖色调背景,产品摄影风格
智能手表,科技感背景,商业摄影
蓝牙耳机,简约白色背景,产品特写
EOF # 批量生成
python generate_image.py --batch products.txt --output-dir ./product_images

# 效率提升:# - 传统方式:每件商品平均 2 小时# - AI 方式:每件商品平均 2 分钟# - 整体效率提升 60 倍

4.2 社交媒体内容创作

场景:内容创作者需要每日产出多条社交媒体内容。

解决方案

 # 保存常用风格模板
python generate_image.py --prompt "小红书风格美食图" --save-style xiaohongshu_food

# 使用模板快速生成
python generate_image.py --style xiaohongshu_food --prompt "一杯拿铁咖啡" # 生成视频内容
python generate_video.py --prompt "咖啡师制作拿铁的过程" --ratio 9:16 --duration 5

4.3 产品宣传视频

场景:企业需要制作产品宣传视频。

解决方案

 # 1. 先生成产品关键帧图像
python generate_image.py --prompt "产品主图" --output product_main.png

# 2. 使用首帧图生视频
python generate_video.py \
  --prompt "产品360度展示,专业灯光" \
  --first-frame product_main.png \
  --model seedance_lite_i2v \
  --duration 5 \
  --output product_video.mp4

# 3. 成本控制:先生成预览
python generate_video.py --prompt "产品展示" --preview
# 确认满意后生成高清版本
python generate_video.py --prompt "产品展示" --quality hd

结语

OpenClaw 与豆包模型的结合,代表了 AI Agent 从"对话"走向"创作"的重要一步。通过精心设计的 Skills,我们可以将强大的多模态生成能力转化为易用的工具,让每个人都能成为创意内容的制作者。

这不仅仅是技术的进步,更是创作民主化的体现。当图像和视频创作的门槛被大幅降低,更多人的创意将有机会被看见、被传播。而这,正是 AI 技术最令人期待的价值所在。


参考资源

0
0
0
0
评论
未登录
暂无评论