
CLI Anything Shotcut
FreeA command-line interface for Shotcut video editing.
Free · Opens the source repo
What CLI Anything Shotcut does
CLI Anything Shotcut provides a stateful command-line interface tailored for video editing using Shotcut. Built on the MLT XML format, this tool is particularly suited for AI agents and power users who prefer to manage their video projects without a graphical user interface. By leveraging the command line, users can create, edit, and render video projects efficiently, streamlining workflows that traditionally rely on GUI-based applications.
Installation is straightforward, requiring Python 3.10 or higher, along with necessary dependencies like melt from MLT and ffmpeg for media handling. Once set up, users can access a variety of commands to manage projects, import media, manipulate timelines, and apply filters. The interactive REPL mode enhances usability, allowing users to execute commands in a session that supports undo and redo operations, making it easier to manage complex editing tasks.
The tool's functionality includes project management commands for creating and saving projects, media operations for importing and analyzing files, and timeline management for adding and trimming clips. Users can also apply filters and transitions, providing a comprehensive set of features for video editing. The ability to output JSON for agent consumption further extends its applicability in automated workflows, making it a valuable asset for developers and designers looking to integrate video editing capabilities into their applications or scripts.
When to use it
Use this tool when you need to automate video editing tasks or prefer command-line operations over a GUI.
When not to use it
This is not suitable for users who are unfamiliar with command-line interfaces or who prefer a visual editing experience.
What you can build with it
Automate Video Editing Workflows
Integrate CLI Anything Shotcut into your scripts to automate repetitive video editing tasks, enhancing productivity.
Manage Video Projects without GUI
Use the command line to create and edit Shotcut projects when a graphical interface is not available or desired.
Interactive Editing Sessions
Leverage the REPL mode for an interactive video editing experience that allows for quick adjustments and real-time feedback.
How to install CLI Anything Shotcut
View source1. Install with the skills CLI
npx skills add hkuds/cli-anything/skills --agent claude-code2. Or install it manually
Download the skill folder and drop it into ~/.claude/skills/ for all projects, or .claude/skills/ to scope it to one repo. Restart Claude Code so it picks up the new skill.
Anthropic's agentic coding CLI, and the reference implementation of Agent Skills. Drop a skill folder into ~/.claude/skills and Claude Code loads it automatically whenever a task matches the skill's description. Claude Code docs
Inside SKILL.md
Written by hkudscli-anything-shotcut
A stateful command-line interface for video editing, built on the MLT XML format. Designed for AI agents and power users who need to create and edit Shotcut projects without a GUI.
Installation
This CLI is installed as part of the cli-anything-shotcut package:
pip install cli-anything-shotcut
Prerequisites:
- Python 3.10+
melt(MLT CLI) — required for rendering and playbackffmpeg/ffprobe— required for media probingshotcutmust be installed on your system
Usage
Basic Commands
# Show help
cli-anything-shotcut --help
# Start interactive REPL mode
cli-anything-shotcut
# Create a new project
cli-anything-shotcut project new -o project.json
# Run with JSON output (for agent consumption)
cli-anything-shotcut --json project info -p project.json
REPL Mode
When invoked without a subcommand, the CLI enters an interactive REPL session with undo/redo support:
cli-anything-shotcut
# or with a project:
cli-anything-shotcut --project my_project.mlt
REPL Commands
Workflow: Always media import first to get a clip_id, then use add-clip to place it on the timeline.
Project & Session:
new [profile]— Create new project (default:hd1080p30)open <path>— Open.mltfilesave [path]— Save projectinfo— Show project infoxml— Print raw MLT XMLstatus— Show session statusundo/redo— Navigate operation history
Media (two-step model):
media import <file> [--caption name]— Import file into project bin, returnsclip_id(e.g.,clip0)media— List all imported mediaprobe <file>— Analyze a media file
Timeline:
add-track <video|audio> [name]— Add a tracktracks— List all tracksshow— Visual timeline overviewadd-clip <clip_id> <track> [in] [out] [--at time]— Place imported clip on trackclips <track>— List clips on a trackremove-clip <track> <clip>— Remove a cliptrim <track> <clip> [--in tc] [--out tc]— Trim clipsplit <track> <clip> <at>— Split clip at timecode
Filters:
list-filters [video|audio]— Browse available filtersfilter-info <name>— Show filter detailsadd-filter <name> [--track n] [--clip n] [key=val ...]— Add filter to clip, track, or globalfilters [--track n] [--clip n]— List active filtersremove-filter <idx> [--track n] [--clip n]— Remove filter by indexset-filter <idx> <param> <value> [--track n] [--clip n]— Set filter parametervolume-envelope [--track n] [--clip n] TIME=LEVEL ...— Keyframed volume (e.g.,00:00:00.000=1.0 00:00:03.000=0.35)duck [--track n] [--clip n] START..END ...— Ducking envelope (e.g.,00:00:06.000..00:00:09.000)
Export:
presets— List export presetsrender <output> [--preset name]— Render to video file
Command Groups
Project
Project management: new, open, save, info.
| Command | Description |
|---|---|
new | Create a new blank project |
open | Open an existing .mlt project file |
save | Save the current project |
info | Show detailed project information |
profiles | List available video profiles |
xml | Print the raw MLT XML of the current project |
Timeline
Timeline operations: tracks, clips, trimming.
| Command | Description |
|---|---|
show | Show the timeline overview |
tracks | List all tracks |
add-track | Add a new track to the timeline |
remove-track | Remove a track by index |
add-clip | Add an imported clip to a track by clip_id; supports --at for absolute placement |
remove-clip | Remove a clip from a track |
move-clip | Move a clip between tracks or positions |
trim | Trim a clip's in/out points |
split | Split a clip into two at the given timecode |
clips | List all clips on a track |
add-blank | Add a blank gap to a track |
set-name | Set a track's display name |
mute | Mute or unmute a track |
hide | Hide or unhide a video track |
Filter Group
Filter operations: add, remove, configure effects.
| Command | Description |
|---|---|
list-available | List all available filters |
info | Show detailed info about a filter and its parameters |
add | Add a filter to a clip, track, or globally |
remove | Remove a filter by index |
set | Set a parameter on a filter |
list | List active filters on a target |
volume-envelope | Create or replace a keyframed volume envelope on a track or clip |
duck | Build a practical ducking envelope over one or more time windows |
Media
Media operations: probe, list, check files.
| Command | Description |
|---|---|
import | Import a media file into the project bin |
probe | Analyze a media file's properties |
list | List all media clips in the current project |
check | Check all media files for existence |
thumbnail | Generate a thumbnail from a video file |
Export
Export/render operations.
| Command | Description |
|---|---|
presets | List available export presets |
preset-info | Show details of an export preset |
render | Render the project to a video file |
Transition Group
Transition operations: dissolve, wipe, and other transitions.
| Command | Description |
|---|---|
list-available | List all available transition types |
info | Show detailed info about a transition type |
add | Add a transition between two tracks |
remove | Remove a transition by index |
set | Set a parameter on a transition |
list | List all transitions on the timeline |
Composite Group
Compositing: blend modes, PIP, opacity.
| Command | Description |
|---|---|
blend-modes | List all available blend modes |
set-blend | Set the blend mode for a track |
get-blend | Get the current blend mode for a track |
set-opacity | Set the opacity of a track (0.0-1.0) |
pip | Set picture-in-picture position for a clip |
Session
Session management: status, undo, redo.
| Command | Description |
|---|---|
status | Show current session status |
undo | Undo the last operation |
redo | Redo the last undone operation |
save | Save session state to disk |
list | List all saved sessions |
Preview
Preview bundles and live preview sessions for iterative editing review.
| Command | Description |
|---|---|
preview recipes | List preview recipes |
preview capture | Render a low-res preview bundle |
preview latest | Return the latest existing bundle |
preview live start | Start a live preview session and publish the first bundle |
preview live push | Publish a new bundle into the live session |
preview live status | Query current live-session state without rendering |
preview live stop | Stop the live session without deleting artifacts |
Typical quick bundle contents:
preview.mp4- several sampled frames
- midpoint
hero.png summary.jsonwith project facts
Poll mode is supported:
cli-anything-shotcut --json --project edit.mlt preview live start --recipe quick --mode poll --source-poll-ms 500
preview live status --json includes session refs and a compact
trajectory_summary so agents can cheaply understand the latest few publishes.
Viewer commands:
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
Examples
Create a New Project
Create a new shotcut project file.
cli-anything-shotcut project new -o myproject.json
# Or with JSON output for programmatic use
cli-anything-shotcut --json project new -o myproject.json
Interactive REPL Session
Start an interactive session with undo/redo support.
cli-anything-shotcut
# Enter commands interactively
# Use 'help' to see available commands
# Use 'undo' and 'redo' for history navigation
Export Project
Export the project to a final output format.
cli-anything-shotcut --project myproject.json export render output.mp4 --overwrite
Deterministic Timeline Reconstruction
For rebuilds, prefer absolute placement over append-only clip insertion:
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
--atinserts blanks automatically when the target time lands in empty space.- The CLI rejects overlap with an existing clip.
- Prefer explicit
--inand--outvalues so later absolute placement remains unambiguous.
Audio Automation
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
The CLI maintains session state with:
- Undo/Redo: Up to 50 levels of history
- Project persistence: Save/load project state as JSON
- Session tracking: Track modifications and changes
Output Formats
All commands support dual output modes:
- Human-readable (default): Tables, colors, formatted text
- Machine-readable (
--jsonflag): Structured JSON for agent consumption
# Human output
cli-anything-shotcut project info -p project.json
# JSON output for agents
cli-anything-shotcut --json project info -p project.json
For AI Agents
When using this CLI programmatically:
- Always use
--jsonflag for parseable output - Check return codes - 0 for success, non-zero for errors
- Parse stderr for error messages on failure
- Use absolute paths for all file operations
- Verify outputs exist after export operations
- Prefer
timeline add-clip --atwhen recreating a known edit - Review final renders after keyframed volume or ducking changes
- Use
preview captureorpreview live ...to validate pacing, cuts, and filter effects visually - Read returned artifact paths such as
hero.pngandpreview.mp4; JSON payloads reference files on disk - Use
preview live status --jsonbefore reading the fulltrajectory.json - Use
cli-hub previews ...only to inspect/open existing bundles or live sessions
More Information
- Full documentation: See README.md in the package
- Test coverage: See TEST.md in the package
- Methodology: See HARNESS.md in the cli-anything-plugin
Version
1.0.0
Frequently asked questions about CLI Anything Shotcut
Similar skills
HyperFrames
Create HTML-based video content with ease.
Gemini Omni Flash API
Generative video editing and creation with AI.
Talking Head Recut
Enhance videos with dynamic graphic overlays.
Product Launch Video
Create promotional videos from product details effortlessly.
Media Use
Streamline media handling in HyperFrames projects.
HyperFrames Creative
Design direction for HyperFrames video projects.
