Communitygithub.com

cli-anything-shotcut

一个带状态管理的命令行视频编辑工具,基于MLT XML格式,专为AI智能体和高级用户设计,无需图形界面即可创建和编辑Shotcut项目。

cli-anything-shotcut 是什么?

cli-anything-shotcut 是一个有状态的命令行视频编辑接口,运行在 MLT XML 格式之上,专为需要以非图形方式创建和编辑 Shotcut 项目的 AI 智能体与高级用户打造。它提供交互式 REPL 会话、JSON 输出模式以及完整的项目、时间线、滤镜、过渡、合成和导出功能。该工具支持两步式媒体导入模型:先导入媒体文件获得 clip_id,再使用 add-clip 命令将剪辑放置到时间线上。它包含撤销/重做、实时预览、关键帧音量包络和音频闪避等高级功能。所有命令均支持人类可读的输出和结构化 JSON 输出(通过 --json 标志),方便 AI 智能体解析。适用于 macOS、Windows 和 Linux 系统,需安装 melt、ffmpeg/ffprobe 和 Shotcut 作为运行依赖。

兼容平台~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/HKUDS/CLI-Anything/tree/main/skills/cli-anything-shotcut

在你喜欢的 AI 中提问

打开一个已预加载此 Agent Skill 的新对话。

文档

cli-anything-shotcut 是做什么的?

一个有状态的命令行视频编辑接口,基于 MLT XML 格式。专为 AI 智能体和高级用户设计,无需图形界面即可创建和编辑 Shotcut 项目。

安装

该 CLI 作为 cli-anything-shotcut 包的一部分安装:

pip install cli-anything-shotcut

前提条件:

  • Python 3.10+
  • melt(MLT CLI)—— 用于渲染和回放
  • ffmpeg / ffprobe —— 用于媒体探测
  • 系统中必须安装 shotcut

用法

基本命令

# 显示帮助
cli-anything-shotcut --help

# 启动交互式 REPL 模式
cli-anything-shotcut

# 创建新项目
cli-anything-shotcut project new -o project.json

# 以 JSON 输出运行(供智能体使用)
cli-anything-shotcut --json project info -p project.json

REPL 模式

当未传入子命令时,CLI 会进入一个交互式 REPL 会话,支持撤销/重做:

cli-anything-shotcut
# 或带项目启动:
cli-anything-shotcut --project my_project.mlt

REPL 命令

工作流程: 始终先执行 media import 获取 clip_id,然后使用 add-clip 将其放置到时间线上。

项目与会话:

  • new [profile] —— 创建新项目(默认:hd1080p30)
  • open <path> —— 打开 .mlt 文件
  • save [path] —— 保存项目
  • info —— 显示项目信息
  • xml —— 输出原始 MLT XML
  • status —— 显示会话状态
  • undo / redo —— 浏览操作历史

媒体(两步模型):

  • media import <file> [--caption name] —— 将文件导入项目素材库,返回 clip_id(例如 clip0)
  • media —— 列出所有已导入的媒体
  • probe <file> —— 分析媒体文件

时间线:

  • add-track <video|audio> [name] —— 添加一个轨道
  • tracks —— 列出所有轨道
  • show —— 时间线可视化概览
  • add-clip <clip_id> <track> [in] [out] [--at time] —— 将已导入的剪辑放置到轨道上
  • clips <track> —— 列出轨道上的所有剪辑
  • remove-clip <track> <clip> —— 移除一个剪辑
  • trim <track> <clip> [--in tc] [--out tc] —— 修剪剪辑
  • split <track> <clip> <at> —— 在指定时间码处分割剪辑

滤镜:

  • list-filters [video|audio] —— 浏览可用滤镜
  • filter-info <name> —— 显示滤镜详情
  • add-filter <name> [--track n] [--clip n] [key=val ...] —— 为剪辑、轨道或全局添加滤镜
  • filters [--track n] [--clip n] —— 列出活动中的滤镜
  • remove-filter <idx> [--track n] [--clip n] —— 按索引移除滤镜
  • set-filter <idx> <param> <value> [--track n] [--clip n] —— 设置滤镜参数
  • volume-envelope [--track n] [--clip n] TIME=LEVEL ... —— 关键帧音量(例如 00:00:00.000=1.0 00:00:03.000=0.35)
  • duck [--track n] [--clip n] START..END ... —— 闪避包络(例如 00:00:06.000..00:00:09.000)

导出:

  • presets —— 列出导出预设
  • render <output> [--preset name] —— 渲染为视频文件

命令组

项目

项目管理:新建、打开、保存、信息。

命令描述
new创建一个新的空白项目
open打开现有的 .mlt 项目文件
save保存当前项目
info显示详细的项目信息
profiles列出可用的视频配置
xml输出当前项目的原始 MLT XML

时间线

时间线操作:轨道、剪辑、修剪。

命令描述
show显示时间线概览
tracks列出所有轨道
add-track在时间线上添加新轨道
remove-track按索引移除轨道
add-clip通过 clip_id 将导入的剪辑添加到轨道;支持 --at 进行绝对定位
remove-clip从轨道上移除剪辑
move-clip在轨道之间或位置之间移动剪辑
trim修剪剪辑的入/出点
split在指定时间码处将剪辑一分为二
clips列出轨道上所有剪辑
add-blank在轨道上添加空白间隙
set-name设置轨道的显示名称
mute静音或取消静音轨道
hide隐藏或显示视频轨道

滤镜组

滤镜操作:添加、移除、配置效果。

命令描述
list-available列出所有可用的滤镜
info显示滤镜及其参数的详细信息
add为剪辑、轨道或全局添加滤镜
remove按索引移除滤镜
set设置滤镜上的参数
list列出目标上的活动滤镜
volume-envelope在轨道或剪辑上创建或替换关键帧音量包络
duck在一个或多个时间窗口内构建实用的闪避包络

媒体

媒体操作:探测、列出、检查文件。

命令描述
import将媒体文件导入项目素材库
probe分析媒体文件的属性
list列出当前项目中的所有媒体剪辑
check检查所有媒体文件是否存在
thumbnail从视频文件生成缩略图

导出

导出/渲染操作。

命令描述
presets列出可用的导出预设
preset-info显示导出预设的详细信息
render将项目渲染为视频文件

过渡组

过渡操作:溶解、擦除及其他过渡。

命令描述
list-available列出所有可用的过渡类型
info显示过渡类型的详细信息
add在两条轨道之间添加过渡
remove按索引移除过渡
set设置过渡上的参数
list列出时间线上的所有过渡

合成组

合成:混合模式、画中画、不透明度。

命令描述
blend-modes列出所有可用的混合模式
set-blend设置轨道的混合模式
get-blend获取轨道的当前混合模式
set-opacity设置轨道的不透明度(0.0-1.0)
pip设置剪辑的画中画位置

会话

会话管理:状态、撤销、重做。

命令描述
status显示当前会话状态
undo撤销上一步操作
redo重做上一步撤销的操作
save将会话状态保存到磁盘
list列出所有保存的会话

预览

预览捆绑包和实时预览会话,用于迭代式编辑审查。

命令描述
preview recipes列出预览配方
preview capture渲染低分辨率预览捆绑包
preview latest返回最新的已有捆绑包
preview live start启动实时预览会话并发布第一个捆绑包
preview live push将新的捆绑包发布到实时会话中
preview live status查询当前实时会话状态(无需渲染)
preview live stop停止实时会话(不删除产物)

典型的 quick 捆绑包内容:

  • preview.mp4
  • 若干采样帧
  • 中间帧 hero.png
  • 包含项目事实的 summary.json

支持轮询模式:

cli-anything-shotcut --json --project edit.mlt preview live start --recipe quick --mode poll --source-poll-ms 500

preview live status --json 包含会话引用和一个紧凑的 trajectory_summary,智能体可借此低成本地了解最近几次发布。

查看器命令:

cli-hub previews inspect /path/to/bundle-or-session
cli-hub previews html /path/to/bundle-or-session -o page.html
cli-hub previews watch /path/to/session --open
cli-hub previews open /path/to/bundle-or-session

示例

创建新项目

创建一个新的 Shotcut 项目文件。

cli-anything-shotcut project new -o myproject.json
# 或使用 JSON 输出进行程序化使用
cli-anything-shotcut --json project new -o myproject.json

交互式 REPL 会话

启动一个支持撤销/重做的交互式会话。

cli-anything-shotcut
# 交互式输入命令
# 使用 'help' 查看可用命令
# 使用 'undo' 和 'redo' 浏览历史

导出项目

将项目导出为最终输出格式。

cli-anything-shotcut --project myproject.json export render output.mp4 --overwrite

确定性时间线重建

对于重建,推荐使用绝对定位而非追加式剪辑插入:

cli-anything-shotcut --project myproject.mlt media import intro.mp4
cli-anything-shotcut --project myproject.mlt timeline add-clip clip0 \
  --track 1 --in 00:00:00.000 --out 00:00:04.000 --at 00:00:00.000

cli-anything-shotcut --project myproject.mlt media import broll.mp4
cli-anything-shotcut --project myproject.mlt timeline add-clip clip1 \
  --track 1 --in 00:00:10.000 --out 00:00:16.000 --at 00:00:08.000
  • 当目标时间落在空白区域时,--at 会自动插入空白。
  • CLI 会拒绝与现有剪辑重叠。
  • 建议使用显式的 --in 和 --out 值,以便后续的绝对定位保持无歧义。

音频自动化

cli-anything-shotcut --project myproject.mlt filter volume-envelope \
  --track 2 \
  --point 00:00:00.000=1.0 \
  --point 00:00:03.000=0.35 \
  --point 00:00:05.000=1.0

cli-anything-shotcut --project myproject.mlt filter duck \
  --track 2 \
  --window 00:00:06.000..00:00:09.000 \
  --window 00:00:15.000..00:00:18.000 \
  --normal 1.0 --duck 0.25

CLI 通过以下方式维护会话状态:

  • 撤销/重做:最多 50 级历史记录
  • 项目持久化:以 JSON 格式保存/加载项目状态
  • 会话跟踪:记录修改和变更

输出格式

所有命令均支持双输出模式:

  • 人类可读(默认):表格、颜色、格式化文本
  • 机器可读(--json 标志):结构化 JSON,供智能体使用
# 人类可读输出
cli-anything-shotcut project info -p project.json

# 智能体专用 JSON 输出
cli-anything-shotcut --json project info -p project.json

供 AI 智能体参考

以编程方式使用此 CLI 时:

  1. 始终使用 --json 标志 以获得可解析的输出
  2. 检查返回码 —— 0 表示成功,非零表示错误
  3. 解析 stderr 以获取失败时的错误信息
  4. 对所有文件操作使用绝对路径
  5. 导出操作后验证输出文件是否存在
  6. 在重新创建已知编辑时优先使用 timeline add-clip --at
  7. 在关键帧音量或闪避修改后审查最终渲染结果
  8. 使用 preview capture 或 preview live ... 视觉验证节奏、剪辑点和滤镜效果
  9. 读取返回的产物路径,例如 hero.png 和 preview.mp4;JSON 载荷引用磁盘上的文件
  10. 在读取完整的 trajectory.json 之前,先使用 preview live status --json
  11. 仅在需要检查/打开已有捆绑包或实时会话时使用 cli-hub previews ...

更多信息

  • 完整文档:请参阅包中的 README.md
  • 测试覆盖:请参阅包中的 TEST.md
  • 方法论:请参阅 cli-anything-plugin 中的 HARNESS.md

版本

1.0.0

Individual skills in this repo

This repo contains 20 individual skills — each has its own dedicated page.

cli-anything-adguardhome

>-

cli-anything-anygen

>-

cli-anything-audacity

>-

cli-anything-blender

>-

cli-anything-browser

Browser automation CLI using DOMShell MCP server. Maps Chrome

cli-anything-calibre

>-

cli-anything-ccswitch

CLI interface for CC Switch — manage AI coding tool configurations from the terminal

cli-anything-chromadb

>-

cli-anything-cloudanalyzer

Command-line interface for CloudAnalyzer — Agent-friendly harness for CloudAnalyzer, a QA platform for mapping, localization, and perception outputs. Supports 27 commands across 8 groups: point cloud evaluation, trajectory evaluation, ground segmentation QA, config-driven quality gates, baseline evolution, processing, visualization, and interactive REPL.

cli-anything-cloudcompare

Command-line interface for CloudCompare — Agent-friendly harness for CloudCompare, the open-source 3D point cloud and mesh processing software. Supports 41 commands across 9 groups: project management, session control, point cloud operations (subsample, filter, segment, analyze), mesh operations, distance computation (C2C, C2M), transformations (ICP, matrix), export (LAS/LAZ/PLY/PCD/OBJ/STL/E57), and interactive REPL.

cli-anything-comfyui

>-

cli-anything-dify-workflow

Wrapper for the Dify workflow DSL CLI. Create, inspect, validate, edit, and export Dify workflow files through a CLI-Anything harness.

cli-anything-drawio

>-

cli-anything-eez-studio

Use EEZ Studio from the command line: inspect and modify native .eez-project files, edit LVGL screens/widgets, manage SCPI commands, and invoke the real EEZ Studio backend for LVGL builds.

cli-anything-eth2-quickstart

>-

cli-anything-exa

>-

cli-anything-firefly-iii

Firefly III CLI - Personal finance management via CLI-Anything

cli-anything-freecad

Complete CLI harness for FreeCAD parametric 3D CAD modeler (258 commands). Covers ALL workbenches: Part (29 primitives + boolean + mirror + loft + sweep), Sketcher (26 cmds: geometry + constraints + editing), PartDesign (38 cmds: pad/pocket/groove/fillet/chamfer/patterns/hole/datum), Assembly (11 cmds), Mesh (16 cmds), TechDraw (15 cmds: views + dimensions + PDF/SVG), Draft (33 cmds: 2D shapes + arrays + transforms), FEM (12 cmds), CAM/CNC (10 cmds), Surface (6 cmds), Spreadsheet (7 cmds), Import (13 formats), Export (17 formats), Measure (12 cmds), Materials (21 presets). Headless FreeCAD export to STEP/IGES/STL/OBJ/DXF/PDF/glTF/3MF.

cli-anything-gimp

>-

cli-anything-godot

>-

相关技能