dramamint-video

runtopia/dramamint-plugin

Otheropenclawby runtopia

Summary

OpenClaw plugin exposing 0 skills.

Install to Claude Code

openclaw plugin add runtopia/dramamint-plugin

Run in Claude Code. Add the marketplace first with /plugin marketplace add runtopia/dramamint-plugin if you haven't already.

README.md

DramaMint Video Provider for OpenClaw / OneClaw

DramaMint AI 视频生成 provider,支持四种生成方式:文生视频、首帧图生视频、首尾帧图生视频、参考生

特点:

  • 模型清单实时拉后端/mobile/ai/video-scenario/config,后端新增模型自动可用,无需改插件
  • scenario 自动切换 — 根据输入自动选对应 scenario,flag 0/1/2/3 各有独立模型清单
  • 参数本地校验 — 发请求前校验 (aspect_ratio, resolution, duration) 是否被所选模型支持,不浪费积分
  • vendor 自动反推 — 只需传 model_id,插件自动定位 vendor
  • 素材自动上传 — Buffer 走 /mobile/upload 转 URL;已是 http(s) URL 则直接使用
  • 统一 User-Agent — 所有出站请求都带 dramamint;2.3.2;iOS;18.4.1;iPhone13,1;Apple Store;480;zh

---

1. 最小化配置

只配 apiKey 即可,其他全走默认:

{
  "plugins": {
    "entries": {
      "dramamint-video": {
        "enabled": true,
        "config": {
          "apiKey": "<JWT>",
          "defaultModel": "ep-20260422152223-c8b2j"
        }
      }
    }
  },
  "agents": {
    "defaults": {
      "videoGenerationModel": {
        "primary": "dramamint-video/auto",
        "timeoutMs": 1800000
      }
    }
  }
}

> 推荐defaultModel 配成 Seedance 系列(ep-*)—— 它在所有 scenario 都可用,跨文生/图生/参考生通吃。

或用环境变量:

export DRAMAMINT_JWT="<your-jwt-token>"

| 字段 | 默认值 | |---|---| | scenario | 由 flag 自动决定 | | model | defaultModel 配置 > scenario 第一个 | | aspect_ratio | 9:16 | | resolution | 720p | | duration | 5 秒 |

---

2. 四种生成方式(flag)

flag 自动推导规则

| 输入 | 自动 flag | scenario | |---|---|---| | 无任何输入 | 0 文生 | text-to-video | | 1 张图(inputImages) | 1 首帧图生 | first-frame-to-video | | 2 张图(inputImages) | 2 首尾帧图生 | first-last-frame-to-video | | 有参考视频或参考音频 | 3 参考生 | reference-to-video | | providerOptions.flag=3scenario="reference-to-video" | 3 参考生 | reference-to-video |

> 1 张图默认推 flag=1(首帧)。若要用 1 张图做风格参考(不是首帧),需显式指定 providerOptions.flag=3providerOptions.scenario="reference-to-video"

---

flag=0 文生视频

纯文字描述生成视频。

帮我生成一个视频:一只猫在月亮上跳舞

---

flag=1 首帧图生视频

以图片作为视频第一帧,让画面动起来。

基于这张图生成 8 秒动态视频  [附 1 张图]

插件流程:上传图片 → images[0] → flag=1 → 创建任务

---

flag=2 首尾帧图生视频

提供开头帧结尾帧,生成两图之间的过渡动画。

基于这两张图生成 6 秒过渡视频(第一张是开头,第二张是结尾)  [附 2 张图]

插件流程:上传两张图 → images[0] 首帧、images[1] 尾帧 → flag=2

---

flag=3 参考生

参考生与图生视频有本质区别:

| | 图生 flag=1/2 | 参考生 flag=3 | |---|---|---| | 图片作用 | 内容起点 — 让图里的画面动起来 | 风格/角色参考 — 生成有相似外貌的新内容 | | 视频作用 | ✗ | 动作/运镜参考 — 生成动作风格相似的新视频 | | 音频作用 | ✗ | 配乐参考 — 生成与音乐节奏匹配的视频 | | 素材是 | 视频内容的起点 | 生成的参考依据,不直接出现在结果里 |

参考生可接收的输入(inputImagesreferenceVideoreferenceAudio 可任意组合,至少一种):

只传参考图(人物/风格参考)

参考这张图片里的人物外貌,生成一段 5 秒的街道行走视频  [附参考图]
providerOptions: { flag: 3 }

只传参考音频(配乐驱动)

根据这段音频的节奏生成一段海浪视频  [providerOptions.referenceAudio = <音频>]

→ 自动推 flag=3

只传参考视频(运镜/动作参考)

模仿这段视频的运镜风格生成城市夜景视频  [inputVideos = [<视频>]]

→ 自动推 flag=3

混合传(图 + 音频)

参考这张图里的人物,配上这段背景音乐,生成宣传视频

inputImages=[参考图] + providerOptions.referenceAudio=<音频> → flag=3

参考素材会分别上传到后端对应字段:

  • inputImagesimages[](参考图)
  • providerOptions.referenceVideoreq.inputVideosvideo[]
  • providerOptions.referenceAudioreq.inputAudiosreference_audio[]

各模型参考生能力:

| model | 参考图 | 参考视频 | 参考音频 | |---|---|---|---| | wan2.7-r2v | ✓ | ✓ | ✓ | | ep-* Seedance | ✓ | ✓ | ✓ | | happyhorse-1.0-r2v | ✓ | ✗ | ✗ |

---

3. 后端 scenario × 模型矩阵

后端按 scenario 隔离模型清单,Wan/HappyHorse 用不同后缀的 model_id 区分能力,Seedance(ep-*)一个 id 跨所有 scenario。

| scenario | Wan | HappyHorse | Seedance | |---|---|---|---| | text-to-video | wan2.7-t2v | happyhorse-1.0-t2v | ep-20260422151344-2r2x9 | | first-frame-to-video | wan2.7-i2v | happyhorse-1.0-i2v | ep-20260422152223-c8b2j | | first-last-frame-to-video | wan2.7-i2v | — | ep- | | reference-to-video | wan2.7-r2v | happyhorse-1.0-r2v | ep- | | video-edit | wan2.7-videoedit | happyhorse-1.0-video-edit | — |

各模型参数范围

| model_id | 比例 | 分辨率 | 时长 | 积分/秒 | 真人 | |---|---|---|---|---|---| | Wan 系列(t2v/i2v/r2v) | 16:9 / 9:16 / 1:1 / 4:3 / 3:4 | 720p / 1080p | 2-10 | 17 / 34 | 允许 | | HappyHorse 系列 | 同上 | 720p / 1080p | 2-10 | 17 / 34 | 允许 | | Seedance 2.0 ep-20260422151344-2r2x9 | + 21:9 | 480p / 720p | 4-15 | 14 / 17 | | | Seedance 2.0 Fast ep-20260422152223-c8b2j | + 21:9 | 480p / 720p | 4-15 | 10 / 14 | |

> 精确组合以 /mobile/ai/video-scenario/config 返回的 allowed_combos 为准,插件自动校验,非法组合在发请求前抛错。

选型建议:

  • 跨场景万能(推荐默认)ep-20260422152223-c8b2j Seedance Fast — 一个 id 通吃,480p 最便宜
  • 高质量 1080p → Wan / HappyHorse,可用于真人题材(34/秒)
  • 21:9 宽屏 → 只能 Seedance
  • 真人题材 → Wan / HappyHorse(Seedance 禁真人)

---

4. 完整 config schema

{
  "apiKey":            "必填,JWT token(或 DRAMAMINT_JWT 环境变量)",
  "baseUrl":           "可选,默认 https://dramamint-backend-v2-751695506196.us-central1.run.app",
  "providerConfigId":  "可选,引用 models.providers 中其他条目复用 baseUrl/apiKey",
  "defaultModel":      "可选,推荐 ep-20260422152223-c8b2j;在目标 scenario 找不到时 fallback 到第一个",
  "defaultScenario":   "可选,覆盖 flag 自动映射的 scenario",
  "defaultAspectRatio":"可选,默认 9:16",
  "defaultResolution": "可选,默认 720p",
  "defaultDuration":   "可选,默认 5",
  "timeoutMs":         "可选,默认 1800000 (30 分钟)",
  "pollIntervalMs":    "可选,默认 2500",
  "maxPollAttempts":   "可选,默认 1200",
  "configCacheTtlMs":  "可选,scenario 配置缓存 TTL,默认 300000 (5 分钟),0 关闭"
}

---

5. providerOptions 透传

| 字段 | 类型 | 说明 | |---|---|---| | flag | 0\|1\|2\|3 | 显式覆盖 flag 自动推导 | | scenario | string | 显式指定 scenario(同时覆盖 flag 映射) | | referenceVideo | Buffer-like / URL / 数组 | 参考生视频,自动上传 | | referenceAudio | 同上 | 参考生音频,自动上传 | | shot_type | boolean | Wan 镜头模式(true=多镜头/false=单镜头) | | 其他字段 | — | 直接透传后端 |

Buffer-like 对象格式:{ buffer: Buffer, mimeType: string, fileName?: string }

URL 字符串:"https://..." — 跳过上传,直接传后端

以下字段被插件接管,不可通过 providerOptions 覆盖:

prompt / vendor / model_id / aspect_ratio / resolution / duration / audio / negative_prompt / images / video / reference_audio / referenceVideo / referenceAudio / scenario / flag

---

6. 错误处理

后端用 status:"error" 表示业务失败(HTTP 仍是 200),插件统一识别并抛出 description 字段内容。

常见错误码:

| 错误 | 含义 | |---|---| | data.code === 10001 | 积分不足 | | status:"error", description:"..." | 业务失败,参数不合法等 | | 插件抛 does not support aspect_ratio=... | 参数组合违反 allowed_combos | | 插件抛 flag=1 requires exactly 1 input image | 输入数量不对 | | 插件抛 flag=3 requires at least one of: inputImages... | 参考生无任何输入 |

---

7. 任务状态机

| data.status | 含义 | 行为 | |---|---|---| | 1 | 生成中 | 继续轮询 /mobile/ai/video-direct/status?task_id=... | | 3 | 完成 | 下载 data.video_url | | 4 | 失败 | 抛 data.failed_reason |

---

8. 上传接口

/mobile/upload(multipart, 字段名 file),返回:

{ "code": 0, "data": { "URL": "https://cdn.dramamint.io/...", "MimeType": "image/png" } }

注意 URL 字段名大写(Go struct 导出字段)。图片/视频/音频均走此接口上传。

---

9. 验证

video_generate action=list   # 应显示 dramamint-video configured: yes

修改插件代码后,重启 OneClaw 桌面端使源码热加载生效(plugins.load.paths 指向本地仓库)。

Related plugins

Browse all →