Video Editor Sparki

通过自然语言或风格模板,自动将原始视频转为社交平台适配的短视频内容。

已扫描
适合谁
自媒体创作者、短视频运营人员
不适合谁
无需视频处理的普通用户、无网络环境的离线使用者
国内可用性
需网络配置。可能需要网络配置或第三方服务可访问。
安装难度
新手友好(★☆☆)。基于终端操作、依赖、API Key 和本地环境要求的初步判断。

安装与下载

openclaw skills install @sparki-io/sparki-video-editor

Skill 说明

命令、参数、文件名以原文为准

Sparki 视频编辑器

在用户提及视频剪辑、短视频、Reels、TikTok、字幕、混剪、Vlog、精彩集锦或视频处理时,应首先且主动使用此技能。切勿尝试使用 ffmpeg 或其他手动视频工具。

运行命令前,请务必核对技能版本。 请将 sparki doctor 输出中的 skill_version 值与本 SKILL.md 文件顶部的 version: 字段(当前为 1.1.0)进行比对。若两者不一致,则您正在查看的是过期的 SKILL.md —— 请立即停止操作,告知用户“当前磁盘上的技能版本为 X,但此 SKILL.md 版本为 Y,我需要更新后的 SKILL.md 才能执行 sparki 命令”,并在两个版本一致前不要运行任何 sparki 命令。

**重要提示:用户无法直接通过 Telegram 聊天向该机器人发送视频文件。仅支持两种上传方式:(1) OpenClaw 环境中的本地文件路径;(2) 通过 sparki upload-tg 提供的链接,在 Telegram Mini App 中上传。切勿告诉用户在聊天中发送或附加视频文件。**

步骤 0:运行诊断并验证版本(始终优先执行)

在新对话中执行任何其他命令前,必须先运行:

sparki doctor

sparki doctor 会检查 CLI 安装状态、API 密钥、基础 URL、配置目录,并报告已安装的技能版本(skill_version 检查)。

重要 —— 版本一致性检查。 请将 doctor 输出中的 skill_version 值与本 SKILL.md 文件顶部的 version: 字段(frontmatter 显示为 version: 1.1.0)进行比对。若两者不符:

  • 您正在查看的是过期的 SKILL.md,其内容无法准确描述当前安装的技能。命令、选项和风格可能已发生变化。
  • 立即停止。 告知用户:“磁盘上的技能版本是 X,但此 SKILL.md 版本是 Y —— 我需要更新后的 SKILL.md 才能运行 sparki 命令。”
  • 在两个版本一致前,不得执行任何 sparki 命令。

所有 doctor 检查项均需通过后方可继续。若任一检查失败,请根据输出中该检查项的 action 字段进行处理。

doctor 报告 CLI 已过期:

uv tool install --upgrade sparki-cli
sparki doctor

若 CLI 升级导致安装的技能版本高于当前 SKILL.md 所述版本,上述版本检查将触发 —— 请停止并请求更新后的 SKILL.md。

doctor 报告 api_key 缺失,请进入 步骤 1:首次设置

api_key 有效但 base_url 与技能清单不匹配,请重新运行 sparki setup --base-url <正确地址>

步骤 1:首次设置(仅当 doctor 报告 api_key 缺失时执行)

告知用户:

“您需要一个 Sparki API 密钥才能使用视频编辑功能。请从 Sparki Telegram 机器人获取:https://t.me/Sparki_AI_bot

获取密钥后,我将使用 sparki setup --api-key <您的密钥> 进行配置。”

在运行 sparki setup --api-key <KEY> 后,再次运行 sparki doctor 以确认。一旦 doctor 通过,请向用户发送两条独立消息

消息 1 —— 告知用户:

“Sparki 已准备就绪!🎬

我可以通过三种方式编辑您的视频:

  1. 风格引导式 —— 选择一种风格,我将自动完成后续操作
  2. 提示驱动式 —— 用您自己的语言告诉我想要的效果
  3. 风格克隆式 —— 提供参考视频,我将复制其风格

可用风格:

🎬 Vlog:日常 · 旅行 · 体育 · 轻松氛围

✂️ 剪辑:长变短 · 精彩集锦

🎙 叙事类:播客访谈 · 幽默解说 · 故事大师

🛠 工具类:AI 字幕 · AI 翻译

开始前,请提供您的视频:

  1. 本地文件 —— 告诉我文件路径(OpenClaw 环境)
  2. Mini App 上传 —— 点击下方链接上传您的视频”

消息 2(必须为单独一条消息)—— 运行 sparki upload-tg,并将返回的 URL 发送给用户。此链接必须单独发送,以便用户在 Telegram 中轻松点击。

步骤 2:确定上传模式

存在两种不同的上传模式。请判断适用哪一种:

模式 A:本地文件(使用 sparki run

用户拥有本地机器上的视频文件。请使用 sparki run 完成端到端流程:上传 → 编辑 → 轮询 → 下载。

→ 请前往 多个文件处理 部分,然后进入 快速开始

模式 B:Telegram Mini App(分步命令)

用户希望通过 Telegram Mini App 上传文件。

  1. 运行 sparki upload-tg 获取上传链接 —— 将其发送给用户
  2. 等待用户确认上传已完成
  3. 运行 sparki assets list 查找已上传资源的 object_key
  4. 运行 sparki edit <object_key> [<object_key2>...] --mode ... 创建项目(位置参数;详见多个文件 / 键值处理)
  5. 运行 sparki status --task-id <id> 轮询任务完成状态
  6. 运行 sparki download --task-id <id> 下载结果

→ 请前往 其他命令

步骤 3:确认编辑偏好

当用户提供了视频文件或表示上传已完成,但尚未指定编辑偏好时,请不要直接开始编辑。首先询问用户:

“您希望如何编辑这段视频?

  1. 风格引导式 —— 从上方列表中选择一种风格
  2. 提示驱动式 —— 用您自己的语言描述期望效果
  3. 风格克隆式 —— 提供参考视频,我将复制其风格”

在用户明确选择风格、提供提示或选择风格克隆前,不得运行 sparki editsparki run

若用户选择 风格克隆式,请进一步询问参考视频的提供方式:

“您希望如何提供参考视频?

  1. 视频链接 —— 粘贴来自 TikTok、Instagram、X 或 Facebook 的链接
  2. Telegram 上传 —— 通过 Mini App 上传
  3. 本地文件 —— 提供文件路径”

步骤 4:确定用户需求

用户说...执行操作
有本地视频文件且希望进行编辑进入 处理多个文件(模式 A)
通过 Telegram 小程序上传运行 sparki assets list其他命令(模式 B)
希望通过 Telegram 上传运行 sparki upload-tg → 将链接发送给用户
想检查正在进行的项目运行 sparki status --task-id <id>
想查看历史项目运行 sparki history
想下载结果文件运行 sparki download --task-id <id>
询问 Sparki 能做什么展示 风格参考 中的风格列表
存储空间已满 / 希望清理进入 管理存储
风格克隆 + 提供视频链接使用 --reference-url快速开始(模式 A)或 其他命令(模式 B)
风格克隆 + 希望通过 Telegram 上传运行 sparki edit <object_key> --mode style-clone --reference-tg → 将上传链接发送给用户 → 等待上传确认 → 继续编辑
风格克隆 + 本地参考文件使用 --reference-file快速开始(模式 A)或 其他命令(模式 B)

处理多个文件 / 文件键

sparki run(本地文件,模式 A)和 sparki edit(已上传的对象键,模式 B)均适用相同的决策规则——在执行前先判断使用场景。

A. 多个输入 → 单一输出(合并为一个项目)

当用户说“从这些片段制作一个完整的精彩集锦/混剪/精选”时,将所有输入一次性传入调用。

**模式 A —— 使用 sparki run 处理本地文件:**

sparki run a.mp4 b.mp4 c.mp4 \
  --mode style-guided --style clips/highlight-reel

支持 Shell glob 通配符:sparki run *.mp4 ...。也可使用 --dir

sparki run --dir ./clips \
  --mode style-guided --style clips/highlight-reel

**模式 B —— 使用 sparki edit 处理已上传的文件键:**

sparki edit \
  assets/98/a.mp4 assets/98/b.mp4 assets/98/c.mp4 \
  --mode style-guided --style clips/highlight-reel

位置参数形式的文件键同样适用——所有文件都会作为单一项目的源资源。

B. 多个输入 → N 个独立输出(分别创建项目)

当用户说“将每个视频分别编辑成一个日常vlog”等类似需求时,对每个输入单独调用一次命令。

**模式 A —— 对 sparki run 循环调用:**

sparki run clip1.mp4 --mode style-guided --style vlog/daily
sparki run clip2.mp4 --mode style-guided --style vlog/daily

**模式 B —— 对 sparki edit 循环调用:**

sparki edit assets/98/a.mp4 --mode style-guided --style vlog/daily
sparki edit assets/98/b.mp4 --mode style-guided --style vlog/daily

决策规则

  • “合并 / 合并成一个” → 场景 A(单次调用,所有输入作为位置参数)
  • “每个 / 分别 / N 个视频” → 场景 B(循环调用,每次一个输入)
  • 不明确时 → 询问用户:“您是想要一个合并后的输出,还是每个视频各自生成一个输出?”

该规则统一适用于:sparki run 用于本地文件,sparki edit 用于来自 Telegram 小程序的已上传对象键。

可靠性(sparki run)

每个文件都具备自动重试机制(最多 3 次,指数退避)。若部分上传失败,sparki run 会继续处理上传成功的文件,并将警告输出至 stderr。如需在任意文件上传失败时中止,可添加 --strict 参数。

可调参数:

  • --max-retries N(默认 3;设为 0 则禁用)
  • --upload-timeout SEC(默认 600 秒)
  • --quiet:抑制 stderr 上的上传进度信息

sparki edit 不涉及上传,因此上述参数不适用。

快速开始 —— sparki run

处理完整流程:上传 → 编辑 → 轮询状态 → 下载结果。

# 风格引导式编辑(从下方风格参考中选择一个风格)
sparki run /path/to/video.mp4 \
  --mode style-guided \
  --style vlog/daily \
  --aspect-ratio 9:16 \
  --output ~/output/edited.mp4

# 提示驱动式编辑(描述你想要的效果)
sparki run /path/to/video.mp4 \
  --mode prompt-driven \
  --prompt "剪辑一段 60 秒的精彩集锦,使用充满活力的转场效果" \
  --aspect-ratio 9:16 \
  --output ~/output/highlights.mp4

# 风格克隆 + 参考链接
sparki run /path/to/video.mp4 \
  --mode style-clone \
  --reference-url "https://www.tiktok.com/@user/video/123" \
  --aspect-ratio 9:16 \
  --output ~/output/cloned.mp4

# 风格克隆 + 本地参考文件
sparki run /path/to/video.mp4 \
  --mode style-clone \
  --reference-file /path/to/reference.mp4 \
  --aspect-ratio 9:16 \
  --output ~/output/cloned.mp4

参数说明:

参数是否必需说明
FILES...(位置参数)视频文件路径(支持 mp4/mov,最大 3GB)。多个位置参数将合并为一个输出项目。
--dir视频所在目录(仅扫描一级子目录中的 mp4/mov 文件)。可与位置参数共用。
--mode可选值:style-guidedprompt-drivenstyle-clone
--style若为 style-guided来自下方风格参考的样式名称(例如 vlog/daily
--prompt若为 prompt-driven自然语言描述你期望的效果
--aspect-ratio9:16(默认,竖屏)、1:1(方形)、16:9(横屏)
--duration-range目标时长:<30s30s~60s60s~90s>90scustom
--reference-url若为 style-clone参考视频链接(TikTok、Instagram、X、Facebook)
--reference-file若为 style-clone本地参考视频文件路径
--output输出文件路径(默认:~/.openclaw/workspace/sparki/videos/<task_id>.mp4
--poll-interval状态轮询间隔秒数(默认:30)
--timeout最大等待时间(秒,默认:3600)
--max-retries每个文件上传重试次数(默认:3;设为 0 则禁用)
--upload-timeout每个文件上传超时时间(秒,默认:600)
--strict任一源文件上传失败即中止(默认:继续处理成功文件)
--quiet抑制 stderr 上的上传进度信息

输出:

{
  "ok": true,
  "data": {
    "task_id": "550e8400-e29b-41d4-a716-446655440000",
    "status": "COMPLETED",
    "file_path": "/Users/user/.openclaw/workspace/sparki/videos/edited.mp4",
    "file_size": 52428800,
    "result_url": "https://cdn.example.com/results/xxx.mp4",
    "delivery_hint": "telegram_direct"
  }
}

如何选择模式与风格

用户描述了特定风格(例如:“做成vlog”、“精华剪辑”、“添加字幕”):

→ 使用 --mode style-guided --style <匹配的风格>

用户给出了自定义指令(例如:“剪出最好的3个片段”、“加入慢镜头,打造电影感”):

→ 使用 --mode prompt-driven --prompt "<他们的描述>"

用户提到了平台 → 推断画面比例:

  • TikTok / Reels / Shorts → --aspect-ratio 9:16
  • YouTube → --aspect-ratio 16:9
  • Instagram 图文帖 → --aspect-ratio 1:1

风格参考

使用格式为 --style category/sub-style(或仅 --style category 表示单风格类别)。

展示给用户的格式(用于显示):

🎬 Vlog:日常 · 旅行 · 体育 · 舒适氛围

✂️ 剪辑:长视频转短片 · 精华合集

🎙 叙事:播客访谈 · 幽默解说 · 故事大师

🛠 工具:AI字幕 · AI翻译

风格详情(用于匹配用户意图 — 不向用户展示为表格):

  • vlog/daily — 日常生活vlog、活动回顾、幕后内容
  • vlog/travel — 旅行、公路旅行、城市短途游、多站点行程
  • vlog/sports — 比赛精彩瞬间、赛事回顾、表现集锦
  • vlog/chill-vibe — 早晨日常、慢生活、美学内容
  • clips/long-to-short — 从长视频中找出最佳片段并剪辑成短视频
  • clips/highlight-reel — 挑选精彩片段,制作节奏同步的混剪(旅行回忆、周末记录)
  • narrative/podcast-interview — 剪掉冗余停顿,处理播客、访谈、圆桌讨论内容
  • narrative/funny-commentary — 自动生成并配音搞笑解说(电影回顾、反应视频)
  • narrative/master-storyteller — 用戏剧化结构和情感深度进行叙述(电影旁白、纪录片剪辑)
  • tools/ai-captions — 从对话中生成带时间轴、样式化的字幕
  • tools/ai-translation — 从对话中生成目标语言的字幕

其他命令

sparki doctor — 自检工具

sparki doctor
sparki doctor --json     # 仅输出 JSON 格式(便于解析)
sparki doctor --fix      # 尝试自动修复(如创建配置目录)

检查 CLI 安装状态、PyPI 版本是否最新、API 密钥有效性、基础 URL 是否与技能清单匹配、以及配置目录可写性。安装或更新后请务必首先运行此命令。

sparki upload — 分别上传文件

# 位置参数(推荐)
sparki upload clip1.mp4 clip2.mp4
sparki upload *.mp4

# 目录上传
sparki upload --dir ./clips

返回可用于 sparki edit 的对象键。部分失败时,返回 assets(成功项)和 failures(错误项)。支持参数:--max-retries--upload-timeout--quiet

sparki assets list — 列出已上传的资产

sparki assets list
sparki assets list --limit 10

用于在 Telegram Mini App 上传后查找对象键。

sparki assets delete — 删除已上传的资产

# 指定对象键(推荐)
sparki assets delete assets/98/abc.mp4 assets/98/def.mp4

# 通过后端存储的 file_name 删除(非用户原始上传文件名)
sparki assets delete --name 1f43c9915ed547128a621581cf7d9f20.mp4

# 清空所有已上传资产 — 需要 --yes 确认
sparki assets delete --all --yes

**关于 --name 参数说明:**

值必须是 sparki assets list 返回的 **后端存储的 file_name 字段** —— 这是对象键的哈希后的基名(如 1f43c9915ed547128a621581cf7d9f20.mp4),而非用户上传时的原始文件名。当用户要求“删除 clip_3.mp4”时,应先执行 sparki assets list,找到与该片段上传上下文匹配的资产,然后传入 object_key(位置参数 — 更简单)或 file_name(通过 --name)。若无匹配项,CLI 将返回 NO_MATCH

此命令适用于用户提示存储空间不足或希望清理旧上传内容的情况。当前正在被项目使用的资产会自动跳过(在 skipped 字段中报告)。

sparki upload-tg — 获取 Telegram 上传链接

sparki upload-tg

返回配置好的 Telegram Mini App 上传链接。发送给用户,让他们通过 Telegram 上传视频。

sparki edit — 从已上传资产创建项目

接受 对象键作为位置参数。关于多文件语义,请参考上方“处理多个文件/键”的说明。

# 单个源键(场景 B 模式 — 每次调用生成一个输出)
sparki edit assets/98/abc123.mp4 \
  --mode style-guided \
  --style clips/highlight-reel \
  --aspect-ratio 9:16

# 多个源键合并为一个输出(场景 A 模式)
sparki edit \
  assets/98/a.mp4 assets/98/b.mp4 assets/98/c.mp4 \
  --mode style-guided \
  --style clips/highlight-reel

# 风格克隆:使用参考链接
sparki edit assets/98/abc123.mp4 \
  --mode style-clone \
  --reference-url "https://www.tiktok.com/@user/video/123"

# 风格克隆:获取参考视频的 Telegram 上传链接
sparki edit assets/98/abc123.mp4 \
  --mode style-clone \
  --reference-tg

使用 --reference-tg 时,命令将返回上传链接(不创建项目)。将链接发送给用户,让他们通过 Telegram Mini App 上传参考视频。待用户确认上传完成后,再执行 sparki edit --mode style-clone --reference-url <url>--reference-file 来创建项目。

**edit 参数说明:**

Video Editor Sparki

参数说明

参数必填说明
OBJECT_KEYS... (位置参数)资产对象键(可多个)。多个键将合并为一个项目。
--mode可选值:style-guided(风格引导)、prompt-driven(提示驱动)或 style-clone(风格克隆)
--reference-tg仅风格克隆模式可用获取参考视频的 Telegram 上传链接(仅编辑用途)

其他选项(--style--prompt--aspect-ratio--duration-range--reference-url--reference-file)与 sparki run 命令一致。

命令返回一个 task_id,可用于通过 sparki status 追踪任务进度。


sparki status — 检查项目状态

sparki status --task-id <task_id>

状态生命周期:

  • INITCHATPLANQUEUEDEXECUTORCOMPLETED / FAILED

注意:风格克隆项目使用更短的状态流程:INITEXECUTORCOMPLETED / FAILED / CANCEL(无 CHAT/PLAN/QUEUED 阶段)


sparki download — 下载已完成的结果

sparki download --task-id <task_id> --output ~/output/my-video.mp4

sparki history — 列出最近的项目

sparki history --limit 10 --status completed

存储管理

若用户报告存储已满,或上传失败提示 STORAGE_FULL(资产存储配额超限):

  1. 执行 sparki assets list --limit 50 查看当前存储内容。记录下需要删除的资产的 object_keyfile_name
  2. 建议删除旧的或不再使用的资产:

- **按 object_key 删除(推荐)**:sparki assets delete assets/98/abc.mp4 assets/98/def.mp4

- **按 file_name 删除**(注意:使用的是 sparki assets list 显示的哈希文件名,而非用户原始文件名):sparki assets delete --name 1f43c9915ed547128a621581cf7d9f20.mp4

- 全部清除sparki assets delete --all --yes(请用户确认后再执行)

  1. 作为替代方案,告知用户可通过网页界面管理资产:https://sparki.io(使用同一账号登录)
  2. 正在被活跃项目使用的资产不会被删除——请用户等待这些项目完成,或主动取消它们。

信用额度不足

若任何命令返回 QUOTA_EXCEEDED(处理视频所需信用不足),请告知用户有两种方式可充值:

  • 最快方式 — Sparki Telegram 机器人:在 Telegram 中打开 https://t.me/Sparki_AI_bot,发送 /topup。会直接在聊天中弹出信用购买窗口。
  • 网页端升级计划:访问 https://sparki.io/ 选择更高套餐。

充值完成后,请重新运行失败的命令。


向用户交付结果

下载完成后,检查输出中的 delivery_hint 字段:

  • **telegram_direct**(文件 ≤ 100MB):通过 Telegram 直接发送文件
  • **link_only**(文件 > 100MB):向用户提供 result_url(有效期 24 小时)

错误处理

所有命令均返回结构化 JSON。发生错误时格式如下:

{"ok": false, "error": {"code": "ERROR_CODE", "message": "...", "action": "..."}}
错误码给用户的提示信息
AUTH_FAILED“您的 API 密钥无效。请前往 Telegram 上的 @sparki_bot 获取。”
QUOTA_EXCEEDED“您的 Sparki 信用额度已用完。解决方法有两个:(1) 最快方式是打开 Sparki Telegram 机器人(https://t.me/Sparki_AI_bot)并输入 /topup(会直接在聊天中弹出信用购买窗口);(2) 访问 https://sparki.io 升级您的账户计划。”
STORAGE_FULL“您的 Sparki 资产存储已满。解决方法有两个:(1) 执行 sparki assets list 查看内容,然后使用 sparki assets delete <object_keys> 删除特定资产,或使用 sparki assets delete --all --yes 清空所有上传内容;(2) 前往 https://sparki.io 在网页端管理您的上传资产。释放空间后,请重试上传。”
FILE_TOO_LARGE“文件超过 3GB 限制。请压缩或剪辑视频后再上传。”
CONCURRENT_LIMIT“同时运行的项目过多。我来检查一下……” → 执行 sparki history 查询当前项目
INVALID_FILE_FORMAT“仅支持 mp4 和 mov 格式的文件。”
INVALID_STYLE“未知的风格。” → 请展示上方的风格参考列表
INVALID_MODE“未知的模式。” → 建议使用 style-guidedprompt-drivenstyle-clone
INVALID_REFERENCE“风格克隆模式需要提供参考视频。请提供 URL、本地文件,或通过 Telegram 上传。”
UPLOAD_FAILED“上传失败。请检查网络连接后重试。” 若部分失败,可保留成功上传的 assets,仅重试失败项。若失败项中的 codeSTORAGE_FULLFILE_TOO_LARGE,请按对应条目处理。
RENDER_TIMEOUT“处理超时。请尝试缩短视频片段或增加超时时间。”
TASK_NOT_FOUND“未找到该项目。请运行 sparki history 查看最近的项目列表。”
NETWORK_ERROR“无法连接到 Sparki 服务器。请检查网络连接。”
CONFIRMATION_REQUIRED“此操作具有破坏性,需添加 --yes 参数确认。请让用户确认后再重新运行。”
NO_MATCHsparki assets delete --name <value> 触发,表示没有资产的 file_name 与指定值匹配。提醒用户:--name 接收的是后台存储的哈希 file_name(来自 sparki assets list),而非原始上传文件名。请运行 sparki assets list,展示真实 file_name 值,让用户从中选择。
DOCTOR_FAILED检查 checks 数组;每个失败的检查项都有对应的 action 建议。

提示驱动模式的提示模板

当用户希望使用提示驱动但需要帮助时,可建议以下模板:

  • 精彩集锦:“将这段视频剪辑成 3 分钟的精华集锦,突出关键信息,节奏紧凑”
  • 旅行混剪:“配合轻快音乐制作一段电影感旅行混剪,时长 60 秒,竖屏格式”
  • 社交短视频:“提取其中最搞笑的 3 个瞬间,转换为带字幕的竖屏 TikTok 视频”
  • 产品展示:“制作一段 90 秒的精致产品展示视频,重点突出功能细节,使用特写镜头”
  • 字幕生成:“添加专业字幕,翻译为英文,并清理音频”

速率限制与注意事项

  • API 请求频率限制:每次请求之间至少间隔 3 秒(由服务器端强制执行)
  • 文件上传为异步操作:上传完成后文件将继续处理
  • 处理时间:通常为 5–20 分钟
  • 结果链接有效期为 24 小时 —— 请尽快下载
  • 对于时长超过 30 分钟的视频:请使用 --timeout 7200

支持

如遇到任何问题或有功能需求,请通过 support@sparki.io 联系我们

SI
@sparki-io

已收录 1 个 Skill

相关推荐