write-post-event-highlight-reel-script
将活动笔记转化为社交平台用的简短回顾脚本。
通过自然语言或风格模板,自动将原始视频转为社交平台适配的短视频内容。
openclaw skills install @sparki-io/sparki-video-editor命令、参数、文件名以原文为准
在用户提及视频剪辑、短视频、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 中上传。切勿告诉用户在聊天中发送或附加视频文件。**
在新对话中执行任何其他命令前,必须先运行:
sparki doctorsparki doctor 会检查 CLI 安装状态、API 密钥、基础 URL、配置目录,并报告已安装的技能版本(skill_version 检查)。
重要 —— 版本一致性检查。 请将 doctor 输出中的 skill_version 值与本 SKILL.md 文件顶部的 version: 字段(frontmatter 显示为 version: 1.1.0)进行比对。若两者不符:
所有 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 <正确地址>。
告知用户:
“您需要一个 Sparki API 密钥才能使用视频编辑功能。请从 Sparki Telegram 机器人获取:https://t.me/Sparki_AI_bot
获取密钥后,我将使用
sparki setup --api-key <您的密钥>进行配置。”
在运行 sparki setup --api-key <KEY> 后,再次运行 sparki doctor 以确认。一旦 doctor 通过,请向用户发送两条独立消息:
消息 1 —— 告知用户:
“Sparki 已准备就绪!🎬
我可以通过三种方式编辑您的视频:
- 风格引导式 —— 选择一种风格,我将自动完成后续操作
- 提示驱动式 —— 用您自己的语言告诉我想要的效果
- 风格克隆式 —— 提供参考视频,我将复制其风格
可用风格:
🎬 Vlog:日常 · 旅行 · 体育 · 轻松氛围
✂️ 剪辑:长变短 · 精彩集锦
🎙 叙事类:播客访谈 · 幽默解说 · 故事大师
🛠 工具类:AI 字幕 · AI 翻译
开始前,请提供您的视频:
- 本地文件 —— 告诉我文件路径(OpenClaw 环境)
- Mini App 上传 —— 点击下方链接上传您的视频”
消息 2(必须为单独一条消息)—— 运行 sparki upload-tg,并将返回的 URL 发送给用户。此链接必须单独发送,以便用户在 Telegram 中轻松点击。
存在两种不同的上传模式。请判断适用哪一种:
sparki run)用户拥有本地机器上的视频文件。请使用 sparki run 完成端到端流程:上传 → 编辑 → 轮询 → 下载。
→ 请前往 多个文件处理 部分,然后进入 快速开始
用户希望通过 Telegram Mini App 上传文件。
sparki upload-tg 获取上传链接 —— 将其发送给用户sparki assets list 查找已上传资源的 object_keysparki edit <object_key> [<object_key2>...] --mode ... 创建项目(位置参数;详见多个文件 / 键值处理)sparki status --task-id <id> 轮询任务完成状态sparki download --task-id <id> 下载结果→ 请前往 其他命令
当用户提供了视频文件或表示上传已完成,但尚未指定编辑偏好时,请不要直接开始编辑。首先询问用户:
“您希望如何编辑这段视频?
- 风格引导式 —— 从上方列表中选择一种风格
- 提示驱动式 —— 用您自己的语言描述期望效果
- 风格克隆式 —— 提供参考视频,我将复制其风格”
在用户明确选择风格、提供提示或选择风格克隆前,不得运行 sparki edit 或 sparki run。
若用户选择 风格克隆式,请进一步询问参考视频的提供方式:
“您希望如何提供参考视频?
- 视频链接 —— 粘贴来自 TikTok、Instagram、X 或 Facebook 的链接
- Telegram 上传 —— 通过 Mini App 上传
- 本地文件 —— 提供文件路径”
| 用户说... | 执行操作 |
|---|---|
| 有本地视频文件且希望进行编辑 | 进入 处理多个文件(模式 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 —— 使用 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位置参数形式的文件键同样适用——所有文件都会作为单一项目的源资源。
当用户说“将每个视频分别编辑成一个日常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该规则统一适用于:sparki run 用于本地文件,sparki edit 用于来自 Telegram 小程序的已上传对象键。
每个文件都具备自动重试机制(最多 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-guided、prompt-driven 或 style-clone |
--style | 若为 style-guided | 来自下方风格参考的样式名称(例如 vlog/daily) |
--prompt | 若为 prompt-driven | 自然语言描述你期望的效果 |
--aspect-ratio | 否 | 9:16(默认,竖屏)、1:1(方形)、16:9(横屏) |
--duration-range | 否 | 目标时长:<30s、30s~60s、60s~90s、>90s、custom |
--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 "<他们的描述>"
用户提到了平台 → 推断画面比例:
--aspect-ratio 9:16--aspect-ratio 16:9--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 参数说明:**
| 参数 | 必填 | 说明 |
|---|---|---|
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>状态生命周期:
INIT → CHAT → PLAN → QUEUED → EXECUTOR → COMPLETED / FAILED注意:风格克隆项目使用更短的状态流程:
INIT→EXECUTOR→COMPLETED/FAILED/CANCEL(无CHAT/PLAN/QUEUED阶段)
sparki download — 下载已完成的结果sparki download --task-id <task_id> --output ~/output/my-video.mp4sparki history — 列出最近的项目sparki history --limit 10 --status completed若用户报告存储已满,或上传失败提示 STORAGE_FULL(资产存储配额超限):
sparki assets list --limit 50 查看当前存储内容。记录下需要删除的资产的 object_key 和 file_name。 - **按 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(请用户确认后再执行)
若任何命令返回 QUOTA_EXCEEDED(处理视频所需信用不足),请告知用户有两种方式可充值:
/topup。会直接在聊天中弹出信用购买窗口。充值完成后,请重新运行失败的命令。
下载完成后,检查输出中的 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-guided、prompt-driven 或 style-clone |
INVALID_REFERENCE | “风格克隆模式需要提供参考视频。请提供 URL、本地文件,或通过 Telegram 上传。” |
UPLOAD_FAILED | “上传失败。请检查网络连接后重试。” 若部分失败,可保留成功上传的 assets,仅重试失败项。若失败项中的 code 为 STORAGE_FULL 或 FILE_TOO_LARGE,请按对应条目处理。 |
RENDER_TIMEOUT | “处理超时。请尝试缩短视频片段或增加超时时间。” |
TASK_NOT_FOUND | “未找到该项目。请运行 sparki history 查看最近的项目列表。” |
NETWORK_ERROR | “无法连接到 Sparki 服务器。请检查网络连接。” |
CONFIRMATION_REQUIRED | “此操作具有破坏性,需添加 --yes 参数确认。请让用户确认后再重新运行。” |
NO_MATCH | 由 sparki assets delete --name <value> 触发,表示没有资产的 file_name 与指定值匹配。提醒用户:--name 接收的是后台存储的哈希 file_name(来自 sparki assets list),而非原始上传文件名。请运行 sparki assets list,展示真实 file_name 值,让用户从中选择。 |
DOCTOR_FAILED | 检查 checks 数组;每个失败的检查项都有对应的 action 建议。 |
当用户希望使用提示驱动但需要帮助时,可建议以下模板:
--timeout 7200如遇到任何问题或有功能需求,请通过 support@sparki.io 联系我们
已收录 1 个 Skill