豆包全家桶(视频图片生成) OpenClaw Skill

使用豆包(火山引擎 Ark)生成图片或视频,将结果保存到本地。当用户提到"豆包生图""豆包图片""豆包生视频""豆包视频""Doubao""Seedance""火山引擎图片""火山引擎视频"时引用。

v1.0.2 Recently Updated Updated 2 days ago

Installation

clawhub install doubao-all-in-one

Requires npm i -g clawhub

57

Downloads

1

Stars

0

current installs

0 all-time

2

Versions

EU EU-Hosted Inference API

Power your OpenClaw skills with the best open-source models.

Drop-in OpenAI-compatible API. No data leaves Europe.

Explore Inference API

GLM

GLM 5

$1.00 / $3.20

per M tokens

Kimi

Kimi K2.5

$0.60 / $2.80

per M tokens

MiniMax

MiniMax M2.5

$0.30 / $1.20

per M tokens

Qwen

Qwen3.5 122B

$0.40 / $3.00

per M tokens


name: doubao-all-in-one
description: 使用豆包(火山引擎 Ark)生成图片或视频,将结果保存到本地。当用户提到"豆包生图""豆包图片""豆包生视频""豆包视频""Doubao""Seedance""火山引擎图片""火山引擎视频"时引用。
metadata:
openclaw:
requires:
bins:
- uv
anyBins:
- python
- python3
- py
env:
- ARK_API_KEY
- OUTPUT_ROOT
primaryEnv: ARK_API_KEY
pythonDeps:
- "volcengine-python-sdk[ark]"


豆包图片与视频生成

这个 skill 提供豆包(火山引擎 Ark)的图片生成和视频生成能力,结果保存到本地。

适用场景:

  • 用户明确指定使用豆包生成图片或视频
  • 需要文生图、图生图、文生视频、首帧图生视频等

脚本位于 skill 目录内的 scripts/,运行时始终使用绝对路径。

DOUBAO_SKILL_DIR.claude/skills/doubao-all-in-one 的绝对路径:

图片

  • 文生图:uv run python $DOUBAO_SKILL_DIR/scripts/text_to_image.py
  • 图生图:uv run python $DOUBAO_SKILL_DIR/scripts/image_to_image.py

视频

  • 创建视频任务:uv run python $DOUBAO_SKILL_DIR/scripts/create_video_task.py
  • 查询视频任务:uv run python $DOUBAO_SKILL_DIR/scripts/query_video_task.py
  • 批量查询任务:uv run python $DOUBAO_SKILL_DIR/scripts/list_video_tasks.py
  • 取消/删除任务:uv run python $DOUBAO_SKILL_DIR/scripts/delete_video_task.py
  • 下载视频:uv run python $DOUBAO_SKILL_DIR/scripts/download_video.py
  • Webhook 回调服务器:uv run python $DOUBAO_SKILL_DIR/scripts/webhook_server.py

快速调用

文生图

uv run python $DOUBAO_SKILL_DIR/scripts/text_to_image.py \
  --prompt "一张电影感写实人像海报,光影强烈,构图干净" \
  --name "写实人像海报"

图生图

uv run python $DOUBAO_SKILL_DIR/scripts/image_to_image.py \
  --image resources/images/climb1.jpeg \
  --prompt "保留主体动作,改为日落暖光的写实摄影风格" \
  --name "日落暖光人像"

文生视频(创建 + 轮询 + 下载一步完成)

uv run python $DOUBAO_SKILL_DIR/scripts/create_video_task.py \
  --prompt "写实风格,晴朗的蓝天之下,一大片白色的雏菊花田,镜头逐渐拉近,最终定格在一朵雏菊花的特写上,花瓣上有几颗晶莹的露珠" \
  --name "雏菊花田特写" \
  --ratio 16:9 --duration 5 --poll

首帧图生视频

uv run python $DOUBAO_SKILL_DIR/scripts/create_video_task.py \
  --prompt "女孩抱着狐狸,女孩睁开眼,温柔地看向镜头" \
  --name "女孩抱狐狸" \
  --image-url "https://example.com/first_frame.png" \
  --role first_frame --ratio adaptive --duration 5 --poll

仅创建任务(异步工作流场景)

uv run python $DOUBAO_SKILL_DIR/scripts/create_video_task.py \
  --prompt "小猫对着镜头打哈欠" --name "猫咪打哈欠" --ratio 16:9 --duration 5

创建任务 + Webhook 回调(替代轮询)

# 先启动 Webhook 服务器
uv run python $DOUBAO_SKILL_DIR/scripts/webhook_server.py

# 再创建任务,传入回调地址(不传则自动检测本机 8888 端口)
uv run python $DOUBAO_SKILL_DIR/scripts/create_video_task.py \
  --prompt "小猫对着镜头打哈欠" --name "猫咪打哈欠" --ratio 16:9 --duration 5

图片输入与输出

输入

参数 说明 文生图 图生图
--prompt 提示词
--name 文件名描述(不超过 10 个中文字)
--model 模型 ID,默认 doubao-seedream-5-0-260128
--image 输入图片路径或 URL,可多次传 -
--size 输出尺寸:2K / 3K / 4K / 2048x2048,默认 2K
--response-format 返回格式:b64_json / url,默认 b64_json
--output-format 输出文件格式:png / jpeg(仅 5.0 lite)
--guidance-scale 文本权重,范围 [1, 10](仅 3.0 系列)
--watermark 添加水印
--sequential-image-generation 组图模式:auto / disabled,默认 disabled
--max-images 组图最大数量,范围 [1, 15],默认 15
--optimize-prompt 提示词优化:standard / fast(仅 5.0 lite/4.5/4.0)
--web-search 启用联网搜索(仅 5.0 lite)
--output 输出文件路径

本地输出目录

所有路径相对于 OUTPUT_ROOT(由环境变量注入,兜底为用户主目录):

  • outputs/doubao/images/text_to_image/
  • outputs/doubao/images/image_to_image/

脚本输出 JSON

{
  "type": "image",
  "scene": "text_to_image",
  "provider": "doubao",
  "used_model": "doubao-seedream-5-0-260128",
  "local_path": "outputs/doubao/images/text_to_image/20260330_120000.png",
  "image_count": 1,
  "generated_images": 1,
  "usage": {"generated_images": 1, "output_tokens": 0, "total_tokens": 0}
}

视频输入与输出

输入

参数 说明 必需
--prompt 提示词
--name 文件名描述(不超过 10 个中文字)
--model 模型 ID,默认 doubao-seedance-1-5-pro-251215
--image-url 图片 URL(可多次传),配合 --role 使用
--role 图片角色:first_frame / last_frame
--ratio 宽高比:16:9, 4:3, 1:1, 3:4, 9:16, 21:9, adaptive 否,默认 16:9
--duration 视频时长(秒):2~12(1.5 pro 支持 -1 由模型自选) 否,默认 5
--resolution 分辨率:480p, 720p, 1080p(1.0 lite 参考图不支持 1080p) 否,默认 480p
--seed 随机种子,范围 [-1, 2^32-1]
--frames 视频帧数,格式 25+4n,范围 [29, 289](1.5 pro 暂不支持)
--generate-audio 生成有声视频(仅 1.5 pro,API 默认 true)
--watermark 添加水印
--camera-fixed 固定摄像头(参考图场景不支持)
--return-last-frame 返回视频尾帧图像(可用于连续视频拼接)
--draft 生成样片(仅 1.5 pro,固定 480p,不支持离线)
--execution-expires-after 任务超时秒数,范围 [3600, 259200],默认 172800(48h)
--service-tier 推理模式:default(在线)/ flex(离线,50% 价格)
--poll 创建后自动轮询直到完成并下载
--poll-interval 轮询间隔秒数,默认 10
--timeout 轮询超时秒数,默认 900
--callback-url Webhook 回调地址;不传时自动检测

本地输出目录

所有路径相对于 OUTPUT_ROOT(由环境变量注入,兜底为用户主目录):

  • outputs/doubao/videos/text_to_video/
  • outputs/doubao/videos/first_frame_to_video/
  • outputs/doubao/videos/first_last_frame_to_video/

视频脚本输出 JSON

创建任务返回:

{
  "type": "video",
  "scene": "text_to_video",
  "provider": "doubao",
  "task_id": "cgt-2025xxxx",
  "status": "queued"
}

轮询完成并下载后返回:

{
  "type": "video",
  "scene": "text_to_video",
  "provider": "doubao",
  "task_id": "cgt-2025xxxx",
  "used_model": "doubao-seedance-1-5-pro-251215",
  "local_path": "outputs/doubao/videos/text_to_video/20260330_120000_cgt-xxx.mp4",
  "source_url": "https://...",
  "resolution": "480p",
  "ratio": "16:9",
  "duration": 5
}

查询任务返回:

{
  "task_id": "cgt-2025xxxx",
  "model": "doubao-seedance-1-5-pro-251215",
  "status": "succeeded",
  "created_at": 1743300000,
  "updated_at": 1743300120,
  "video_url": "https://...",
  "last_frame_url": "https://...",
  "resolution": "480p",
  "ratio": "16:9",
  "duration": 5,
  "seed": 12345,
  "generate_audio": true,
  "draft": false,
  "service_tier": "default",
  "execution_expires_after": 172800,
  "usage": {"completion_tokens": 100, "total_tokens": 100}
}

模型选择

图片模型

模型 Model ID 特点
Seedream 5.0 doubao-seedream-5-0-260128 默认首选
Seedream 4.5 doubao-seedream-4-5-251128 额度不足时自动 fallback

视频模型

模型 Model ID 特点
Seedance 1.5 Pro doubao-seedance-1-5-pro-251215 最高质量,支持有声视频、样片模式、返回尾帧、4~12秒

提示词最佳实践(图片,强制)

调用图片生成脚本前,必须先读取 references/seedream_prompt_guide.md,并对照以下检查清单审核用户的提示词。

执行规则

  1. 必须读取参考文档:每次生成图片前,先读取 references/seedream_prompt_guide.md
  2. 提示词公式:主体 + 行为(非必须)+ 环境(非必须)+ 风格/色彩/光影/构图(非必须)
  3. 使用自然语言:用简洁连贯的自然语言描述,不要用逗号分隔的关键词堆叠
  4. 质量检查与处理策略:对照检查清单逐项审核
    • 缺少主体必须拒绝执行,返回 JSON 格式的拒绝信息,自行优化后请用户确认再执行
    • 其他不合规项(关键词堆叠、模糊代词、缺少风格描述等):直接按最佳实践指南自动补充优化,向用户展示优化后的提示词并说明补充了哪些内容,然后直接执行
  5. 自动优化格式
    优化说明:
    - [具体补充了什么,如"补充了风格描述:莫奈油画风格"]
    
    文件名标题:[不超过 10 个中文字的内容简述,如"雪中小猫玩耍"]
    
    优化后提示词:
    [完整提示词]
    • 文件名标题:在优化提示词时同时生成一个简短标题,不超过 10 个中文字,调用脚本时必须通过 --name 参数传入。标题应概括画面核心内容,如"雪中小猫玩耍""金色麦田奔跑""日落海边漫步"

提示词质量检查清单

  • 使用自然语言:是否用简洁连贯的句子描述画面,而非逗号分隔的关键词堆叠?
  • 主体明确:是否清楚描述了画面中的主体是谁/什么?特征是否具体?
  • 编辑目标明确(图生图):是否准确指示了需要编辑的对象和变化要求?是否避免使用模糊代词?
  • 保持不变的部分(图生图):是否明确说明了希望保持不变的内容?
  • 文字内容加引号:如需生成文字,文字内容是否放在双引号中?
  • 简洁精确(5.0 lite/4.5/4.0):是否避免了不必要的华丽词汇堆叠?简洁精确优于重复冗余
  • 风格词精准:如有风格需求,是否使用了精准的风格词而非模糊描述?
  • 多图关系清晰(多图输入):是否清楚指明了不同图像间的编辑/参考关系?

必须拒绝的情况

  • 主体完全缺失(如"一张好看的图""生成一张图")

应自动补充的情况

  • 关键词堆砌 → 改写为自然语言
  • 缺少风格/美学描述 → 根据画面内容补充合适的风格
  • 图生图中使用模糊代词 → 替换为具体对象描述
  • 需要渲染文字但未加双引号 → 补充双引号
  • 多图输入但未指明图间关系 → 根据意图补充关系描述

图生图额外规则

  • 图像编辑(增加/删除/替换/修改):用简洁明确的指令,准确指示编辑对象
  • 参考图生图:提示词必须包含两部分——指明参考对象 + 描述生成画面
  • 多图输入:清楚指明不同图像需要编辑/参考的对象及操作(如"用图一的人物替换图二的人物")
  • 设计草图转高保真:注明"遵循图中文字内容进行生成",明确需与参考图保持一致的关键要求

提示词最佳实践(视频,强制)

调用视频生成脚本前,必须先读取 references/seedance_1_5_pro_prompt_guide.md,并对照其中的提示词质量检查清单审核用户的提示词。

参数约束

  • 分辨率默认 480p:除非用户明确要求更高分辨率(如"720p""1080p""高清"),否则不得--resolution 参数,直接使用脚本默认的 480p
  • 宽高比默认 16:9:除非用户明确要求其他比例(如"竖屏""正方形""9:16""1:1"等),否则不得--ratio 参数,直接使用脚本默认的 16:9。有首帧/尾帧参考图且用户未指定比例时也应使用 16:9,而非 adaptive

执行规则

  1. 必须读取参考文档:每次生成视频前,先读取 references/seedance_1_5_pro_prompt_guide.md
  2. 提示词公式:主体 + 运动 + 环境(非必须)+ 运镜/切镜(非必须)+ 美学描述(非必须)+ 声音(非必须)
  3. 质量检查与处理策略:对照检查清单逐项审核
    • 缺少主体必须拒绝执行,返回 JSON 格式的拒绝信息,自行优化后请用户确认再执行
    • 其他不合规项(缺少运动描述、缺少环境、切镜不清晰等):直接按最佳实践指南自动补充优化,向用户展示优化后的提示词并说明补充了哪些内容,然后直接执行
  4. 自动优化格式
    优化说明:
    - [具体补充了什么,如"补充了运动描述:金毛犬在麦田中快速奔跑"]
    - [具体补充了什么,如"补充了环境描述:金色麦田,阳光从侧面照射"]
    
    文件名标题:[不超过 10 个中文字的内容简述,如"金毛麦田奔跑"]
    
    优化后提示词:
    [完整提示词]
    • 文件名标题:在优化提示词时同时生成一个简短标题,不超过 10 个中文字,调用脚本时必须通过 --name 参数传入。标题应概括画面核心内容,如"金毛麦田奔跑""猫咪打哈欠""海边日落漫步"

必须拒绝的情况

  • 主体完全缺失(如"生成一个视频""做个动画")
  • 主体不明确且无法推断(如"一个东西在动")

应自动补充的情况

  • 缺少运动描述 → 根据主体特性补充合理的动作和运动方式
  • 缺少环境描述 → 根据主体和场景补充环境信息
  • 多人场景角色特征不可区分 → 为每个角色补充唯一标识特征
  • 包含切镜但未区分镜头编号或景别 → 补充镜头编号和景别描述
  • 包含对话但未指定语言类型或音色特征 → 补充音色和语言描述

配置

  • 环境变量:ARK_API_KEY(必需,未设置时直接报错)
  • 环境变量:OUTPUT_ROOT(可选,输出根目录,支持 ~ 展开,默认为用户主目录)

短剧批量视频生成

当用户请求为短剧的多个 clip(C01、C02…)批量生成视频时,遵循以下规则:

一 clip 一请求

  • 每个 clip(CXX)是一个完整的视频生成请求,不得按分镜(sub-shot)拆分为多次请求
  • 分镜仅用于提示词规划(描述运镜变化、景别切换等),最终合并为一条 prompt 提交给模型
  • 示例:C01 有 2 个分镜(C01-1、C01-2),仍只调用一次 create_video_task.py --duration 8

输出目录与文件名

  • 视频生成完成后,必须将文件从脚本默认输出目录复制到项目的视频生成目录
  • 输出路径:outputs/scripts/{项目名}/video_generation/{篇章}/CXX.MP4
    • 例如:outputs/scripts/chong_sheng_zhui_qi_20260401/video_generation/nightmare/C01.MP4
  • 项目名和篇章名从用户提供的视频生成指令文档路径中推断

协作方式

  • 图片生成可直接完成任务
  • 视频生成使用 --poll 模式可直接完成任务;异步工作流可分步操作
  • Webhook 模式:先启动 webhook_server.py(默认端口 8888),创建任务时自动检测回调地址(优先级:手动 --callback-url > 环境变量 VIDEO_CALLBACK_BASE_URL > 自动检测本机 IP + 8888 端口)
  • 如果用户还需要公网链接或临时下载链接,应由后续的交付环节继续处理

Statistics

Downloads 57
Stars 1
Current installs 0
All-time installs 0
Versions 2
Comments 0
Created Mar 31, 2026
Updated Apr 4, 2026

Latest Changes

v1.0.2 · Apr 4, 2026

- 新增 OUTPUT_ROOT 环境变量,所有本地输出目录均基于此路径(默认用户主目录)。 - 所有脚本支持并推荐通过 --name 参数指定文件名标题(不超过10个中文字),便于管理和检索生成内容。 - 调用示例、参数表与最佳实践流程增加文件名标题相关细则,突出"优化后生成标题并传递 --name"的执行要求。 - 视频相关参数移除对 reference_image、last_frame 角色的显式支持,仅保留 first_frame/last_frame。 - 进一步明确输出路径与环境变量作用范围,便于多用户环境下的目录隔离和结果追踪。

Quick Install

clawhub install doubao-all-in-one
EU Made in Europe

Chat with 100+ AI Models in one App.

Use Claude, ChatGPT, Gemini alongside with EU-Hosted Models like Deepseek, GLM-5, Kimi K2.5 and many more.