Docs
Jede Funktion ist über GUI, CLI und MCP-Server erreichbar. Die folgende Referenz deckt alle drei ab.
Befehlsnamen, Flags und JSON-Keys bleiben auf Englisch — sie entsprechen dem, was du tatsächlich tippst. Die umgebenden Erklärungen sind übersetzt.
Erzeugt aus unflick v0.15.0
Schnellstart
Installation
Eine Zeile auf jeder Plattform (siehe Startseite), Homebrew auf macOS oder ein Installer aus dem Download-Bereich. Die Windows-AI-Edition bringt zusätzlich ein Offline-Whisper-Modell für Untertitel ohne Einrichtung mit.
Im Terminal ausprobieren
# Open a file (or a YouTube URL)
unflick play movie.mp4
# Jump to the next chapter, then save a bookmark
unflick chapter next
unflick bookmark add --name "the good bit"
# Cut a 30-second GIF starting at 00:01:00
unflick clip 60 90 --file movie.mp4 --gif
# Find subtitles online, or generate them locally (AI edition: zero config)
unflick subtitle auto
unflick subtitle generate movie.mp4 In einen KI-Client einbinden
Füge dieses Snippet zu deiner MCP-Client-Konfiguration hinzu (Claude Desktop, Cursor, Codex CLI usw.) und der Agent erhält 101 Tools und 3 Live-Ressourcen für Wiedergabe, Untertitelgenerierung, Bibliotheksscan und mehr.
{
"mcpServers": {
"unflick": {
"command": "unflick",
"args": ["--mcp"]
}
}
} Unter Windows den vollständigen Pfad angeben: "command": "C:\\Users\\<you>\\AppData\\Local\\Programs\\unflick\\unflick.exe"
Claude-Code-Plugin
In Claude Code installieren diese zwei Befehle sieben unflick-Skills und richten den MCP-Server in einem Schritt ein.
/plugin marketplace add zhitongblog/unflick
/plugin install unflick CLI-Referenz
Das CLI gibt für jeden Befehl JSON auf stdout aus. Pipe es durch jq, parse es im Skript, automatisiere frei. Subcommands starten den Hintergrund-Daemon beim ersten Aufruf automatisch.
Playback
unflick play [--seek <SEEK>] [--volume <VOLUME>] [--speed <SPEED>] <FILE> | Play a video file |
unflick pause | Pause playback |
unflick resume | Resume playback |
unflick stop | Stop playback |
unflick seek <SECONDS> | Seek to position in seconds |
unflick volume <LEVEL> | Set volume (0-100) |
unflick speed [--relative] [RATE] | Get or set the playback speed |
unflick status | Get current playback status |
unflick chapter list | List all chapters of the current file |
unflick chapter seek <INDEX> | Jump to a chapter by 0-based index |
unflick chapter next | Jump to the next chapter |
unflick chapter prev | Jump to the previous chapter |
unflick chapter generate [--count <COUNT>] | Derive chapters from the transcript, for a file that has none |
unflick chapter set <JSON> | Set chapters explicitly from JSON: [{"time": 0, "title": "Intro"}, …] |
unflick chapter clear | Remove generated chapters (container chapters are untouched) |
unflick loop a [POSITION] | Set the loop start point (defaults to the current position) |
unflick loop b [POSITION] | Set the loop end point (defaults to the current position) |
unflick loop clear | Clear both loop points |
unflick loop status | Show the current loop points |
unflick frame next | Step forward one frame (pauses playback) |
unflick frame prev | Step back one frame (pauses playback) |
unflick frame thumbnail [--output <OUTPUT>] [--width <WIDTH>] <POSITION> | Save the timeline preview frame for a position (cached, keyframe-accurate) |
unflick frame capture [--output <OUTPUT>] [--position <POSITION>] [--max-edge <MAX_EDGE>] | Save the current frame as a downscaled JPEG |
unflick bookmark add [--name <NAME>] [--position <POSITION>] [--file <FILE>] | Save a position — where playback is now, unless told otherwise |
unflick bookmark list [--file <FILE>] [--key <KEY>] [--all] | Show bookmarks for the current file |
unflick bookmark goto <ID> | Jump to a bookmark, opening its file if it isn't the one playing |
unflick bookmark rename [--clear] <ID> [NAME] | Rename a bookmark, or drop its name with `--clear` |
unflick bookmark remove <ID> | Delete one bookmark |
unflick bookmark clear [--file <FILE>] [--key <KEY>] [--all] | Delete every bookmark for the current file |
unflick session show | Report what would be resumed (the default) |
unflick session restore | Reopen it, at the point it got to |
unflick session clear | Forget it |
unflick recent list [--limit <LIMIT>] | Show recently played files, newest first |
unflick recent clear | Forget the play history (scanned metadata is kept) |
unflick incognito [ENABLED] | Turn incognito on or off (nothing is written to the play history) |
Media tools
unflick info <FILE> | Get media file info |
unflick screenshot [--output <OUTPUT>] | Take a screenshot of the current frame |
unflick clip [--file <FILE>] [--output <OUTPUT>] [--gif] <START> <END> | Extract a video clip (requires ffmpeg) |
unflick transcript get | Print every cue of the current file's transcript |
unflick transcript search [--limit <LIMIT>] <QUERY> | Find lines containing a phrase |
unflick transcript seek [--occurrence <OCCURRENCE>] <QUERY> | Jump to where a phrase is spoken |
unflick nowplaying [--cover] | What is playing, as tags rather than a path |
Subtitles & audio
unflick subtitle load <FILE> | Load an external subtitle file |
unflick subtitle list | List subtitle tracks |
unflick subtitle select <ID> | Select a subtitle track by ID (0 to disable) |
unflick subtitle generate [--mode <MODE>] [--whisper <WHISPER>] [--model <MODEL>] [--api-key <API_KEY>] [--output-dir <OUTPUT_DIR>] <VIDEO> | Generate subtitles for a video using whisper (local or OpenAI API) |
unflick subtitle translate [--to <TARGET_LANG>] [--api-key <API_KEY>] [--output-dir <OUTPUT_DIR>] --to <TARGET_LANG> --api-key <API_KEY> <SRT> | Translate an SRT file to another language via OpenAI API |
unflick subtitle search [--file <FILE>] [--lang <LANGUAGES>] [--no-hash] [QUERY] | Find subtitles for the playing file on OpenSubtitles |
unflick subtitle download [--file <FILE>] [--lang <LANGUAGE>] [--name <NAME>] [--no-load] <FILE_ID> | Download a subtitle found by `subtitle search` and load it |
unflick subtitle auto [--file <FILE>] [--lang <LANGUAGES>] [--no-hash] [--no-load] [QUERY] | Search and download the best match in one step |
unflick subtitle delay [--relative] [SECONDS] | Get or set the subtitle delay. Positive values show subtitles later |
unflick subtitle style get | Print all subtitle style values |
unflick subtitle style set <NAME> <VALUE> | Set one style property |
unflick subtitle bilingual [--primary <PRIMARY>] [--secondary <SECONDARY>] [--layout <LAYOUT>] [STATE] | Show two subtitle tracks at once — the original and a translation |
unflick audio list | List all audio tracks |
unflick audio select <ID> | Select an audio track by ID (0 to disable) |
unflick audio delay [--relative] [SECONDS] | Get or set the audio delay. Positive values play audio later |
unflick audio eq get | Show the current curve, preamp and normalisation state |
unflick audio eq on | Turn the equaliser on or off without discarding the curve |
unflick audio eq off | |
unflick audio eq band <INDEX> <GAIN> | Set one band's gain in dB |
unflick audio eq curve [GAINS] [GAINS] [GAINS] [GAINS] [GAINS] [GAINS] [GAINS] [GAINS] [GAINS] [GAINS]... | Set the whole curve at once |
unflick audio eq preamp <DB> | Set the preamp in dB (negative makes headroom for boosted bands) |
unflick audio eq normalize <STATE> | Even out quiet dialogue against loud action |
unflick audio eq preset [NAME] | Apply a named preset |
unflick audio eq reset | Clear every audio filter |
unflick audio pitch [STATE] | Keep the original pitch when playback speed changes |
Picture & window
unflick video get | Show the current aspect, rotation, zoom, pan-scan and deinterlace |
unflick video set <NAME> <VALUE> | Set one: aspect | rotate | zoom | panscan | deinterlace |
unflick video reset | Back to the file's own geometry |
unflick filter list | Show all current filter values (brightness, contrast, saturation, gamma, hue) |
unflick filter set <NAME> <VALUE> | Set a filter to the given value (-100 to 100) |
unflick filter reset | Reset all filters to 0 (neutral) |
unflick window mode [MODE] | Read or set the window mode |
Playlist & library
unflick playlist add <FILE> | Add a file to the playlist |
unflick playlist remove <INDEX> | Remove entry at index |
unflick playlist list | List all playlist entries |
unflick playlist next | Play the next track |
unflick playlist prev | Play the previous track |
unflick playlist clear | Clear the playlist |
unflick playlist play <INDEX> | Play a specific entry by index |
unflick playlist repeat [MODE] | Get or set the repeat mode |
unflick playlist shuffle [ENABLED] | Get or set shuffle |
unflick library scan <DIR> | Scan a directory for video files and add them to the library |
unflick library search <QUERY> | Search the library by title or path |
unflick library list | List all media in the library |
unflick library remove <ID> | Remove an entry by ID |
Streams, discs & casting
unflick sponsor list <URL> | Fetch SponsorBlock segments for a YouTube URL and print them as JSON. 404 / no-segments returns an empty list (success) |
unflick sponsor enable | Turn SponsorBlock auto-skip on (writes settings) |
unflick sponsor disable | Turn SponsorBlock auto-skip off (writes settings) |
unflick sponsor categories <LIST> | Replace the SponsorBlock category list (comma-separated, e.g. `sponsor,selfpromo,intro,outro,interaction`) |
unflick disc [PATH] | Optical drives, and whether there is a video disc in them |
unflick cast list [--seconds <SECONDS>] | Find DLNA renderers on the network |
unflick cast to [--file <FILE>] [--seconds <SECONDS>] [RENDERER] | Send what is playing (or a named file) to a renderer |
unflick cast stop | Stop casting |
unflick cast status | Where the cast has got to |
unflick cast pause | |
unflick cast resume | |
unflick cast seek <SECONDS> | Seek the cast, in seconds |
Input
unflick keybind list | List every bindable action with its current key |
unflick keybind set <ACTION> <KEY> | Bind a key to an action, e.g. `keybind set play_pause k` |
unflick keybind reset [ACTION] | Restore defaults — one action, or all of them |
unflick mouse list | List every mouse trigger with the action it runs |
unflick mouse set <TRIGGER> <ACTION> | Point a trigger at an action, e.g. `mouse set wheel_up volume_up` |
unflick mouse reset [TRIGGER] | Restore defaults — one trigger, or all of them |
Settings
unflick settings path | Print the absolute path to the settings file |
unflick settings get [--key <KEY>] | Print all settings (or a single key with --key) |
unflick settings set <KEY> <VALUE> | Set a single key to the given JSON value |
unflick settings unset <KEY> | Remove a single key |
Daemon & diagnostics
unflick daemon | Start the background daemon (holds the player instance) |
unflick --mcp | Start the MCP server over stdio. See the MCP reference below. |
unflick shutdown | Shut down the daemon |
unflick startup | The last launch's startup timeline, phase by phase |
unflick cleanup [--apply] | Find (and optionally remove) files an older unflick left behind |
unflick dev eval [--timeout <TIMEOUT>] <SCRIPT> | Run JavaScript in the window and print what it evaluated to |
unflick dev click [--index <INDEX>] [--timeout <TIMEOUT>] <SELECTOR> | Click an element, after checking it is really the thing on top |
unflick dev text <SELECTOR> | Visible text of every element matching a selector |
unflick dev snapshot [--selector <SELECTOR>] [--depth <DEPTH>] | The accessibility tree of the window: role, name, state, selector |
unflick dev capture [--output <OUTPUT>] [--max-edge <MAX_EDGE>] | A PNG of the interface layer |
unflick dev wait [--gone] [--timeout <TIMEOUT>] <SELECTOR> | Wait for an element to appear — or, with --gone, to leave |
MCP-Referenz
Mit --mcp gestartet stellt unflick einen Model-Context-Protocol-Server über stdio bereit. Jede CLI-Fähigkeit ist auch ein Tool, plus drei abonnierbare Ressourcen für den Zustand.
Tools (101)
play | Play a video file or URL. |
pause | Pause playback. |
resume | Resume playback after a pause. |
stop | Stop playback and unload the file. |
seek | Seek to a position in seconds |
set_volume | Set volume level |
set_speed | Get or set the playback speed of the window the user is watching. |
get_status | Get current playback status including state, file, position, duration, volume, and speed. |
file_info | Get media file metadata (duration, resolution, codecs) without affecting current playback |
playlist_add | Add a file to the playlist |
playlist_remove | Remove a playlist entry by index |
playlist_list | List all playlist entries with index, path, and current track indicator |
playlist_next | Advance to and play the next track in the playlist |
playlist_prev | Go back to and play the previous track in the playlist |
playlist_clear | Clear all entries from the playlist |
playlist_play | Play a specific playlist entry by index |
load_subtitle | Load an external subtitle file |
subtitle_list | List all subtitle tracks (embedded and external) |
subtitle_select | Select a subtitle track by ID (0 to disable subtitles). |
audio_list | List all audio tracks (embedded) |
audio_select | Select an audio track by ID (0 to disable audio) |
generate_subtitles | Generate subtitles for a video using whisper. |
translate_subtitles | Translate an SRT file to another language using OpenAI. |
library_scan | Scan a directory for video files and add them to the library |
library_search | Search the media library by title or path |
library_list | List all media files in the library |
library_remove | Remove a media entry from the library by ID |
clip | Extract a video clip segment, optionally as GIF. |
screenshot | Take a screenshot of the current video frame |
save_position | Save playback position for a file (for resume playback) |
get_position | Get saved playback position for a file |
settings_path | Get the absolute path of the settings.json file |
settings_get | Read all settings, or a single key if provided |
settings_set | Set a single settings key to the given JSON value |
settings_unset | Remove a single settings key |
filter_list | List current video filter values (brightness, contrast, saturation, gamma, hue) |
filter_set | Set a video filter (brightness | contrast | saturation | gamma | hue) to a value in -100..100 |
filter_reset | Reset all video filters to 0 (neutral) |
sponsor_segments | Fetch SponsorBlock skip segments for a YouTube URL. |
subtitle_delay | Get or set the subtitle delay in seconds. |
audio_delay | Get or set the audio delay in seconds, for fixing lip-sync. |
subtitle_style_get | Read subtitle appearance: scale, vertical position, colour, border size, bold. |
subtitle_style_set | Set one subtitle appearance property. |
subtitle_bilingual | Show two subtitle tracks at once — typically the original plus a translation. |
chapter_list | List the chapters of the currently playing file: index, title, start time, and which one is playing. |
chapter_seek | Jump to a chapter by 0-based index. |
chapter_next | Jump to the next chapter. |
chapter_prev | Jump to the previous chapter. |
ab_loop | Control the A-B loop, which repeats a section of the current file. |
frame_step | Step forward exactly one frame. |
frame_back_step | Step back exactly one frame. |
playlist_repeat | Get or set the playlist repeat mode. |
playlist_shuffle | Get or set playlist shuffle. |
shutdown | Shut down the unflick daemon. |
get_subtitles | Find and load subtitles for the playing video from OpenSubtitles, in one step. |
find_subtitles | Search OpenSubtitles and return the candidates without downloading anything. |
download_subtitle | Download one subtitle chosen from find_subtitles and load it into the player. |
search_transcript | Search the currently playing file's subtitles for a phrase and return every match with its timestamp. |
seek_to_text | Jump playback to where a phrase is spoken. |
transcript_get | Return the full transcript of the currently playing file as timed cues, plus where it came from. |
generate_chapters | Give a file that has no chapters a set of them, derived from the pauses in its transcript. |
set_chapters | Set the chapter list for a file that has none, from your own reading of its content. |
clear_chapters | Remove chapters added by generate_chapters or set_chapters. |
keybind_list | List every keyboard shortcut: action id, label, current key, default, and whether the user has changed it. |
keybind_set | Rebind a keyboard shortcut. |
keybind_reset | Restore a shortcut to its default. |
video_transform_get | Read how the picture is fitted to the window: aspect override, rotation, zoom multiplier, pan-scan and deinterlace. |
video_transform_set | Fix a squashed aspect ratio, straighten a video recorded sideways, crop black bars, or deinterlace broadcast footage. |
video_transform_reset | Restore the file's own geometry — no aspect override, no rotation, no zoom or pan-scan, deinterlace off. |
incognito | Read or set incognito mode. |
recent_files | Recently played files, newest first, with how many times each was played and when. |
recent_clear | Forget the play history. |
bookmark_add | Save a named position in a file, so it can be jumped back to later. |
bookmark_list | Bookmarks for the file being watched, in timeline order. |
bookmark_goto | Jump to a bookmark by id. |
bookmark_rename | Give a bookmark a name, or drop the one it has by omitting name. |
bookmark_remove | Delete one bookmark by id. |
bookmark_clear | Delete every bookmark for the file being watched, or for the file named. |
mouse_list | List mouse bindings: wheel up/down, click, double click, middle click, and the four right-drag gestures, each with the action it runs. |
mouse_set | Point a mouse trigger at an action. |
mouse_reset | Restore a mouse trigger to its default. |
describe_frame | Return the frame showing right now as an image, so you can see what is on screen. |
equalizer_get | Read the 10-band equaliser: per-band gains in dB, the band centre frequencies they correspond to, the preamp, whether loudness normalisation is on, and the filter chain mpv is actually running. |
equalizer_set | Adjust the equaliser. |
equalizer_preset | Apply a named equaliser curve and switch the equaliser on. |
equalizer_presets | List the available equaliser presets with a description of what each is for and the curve it applies. |
equalizer_reset | Remove every audio filter: flat curve, no preamp, no normalisation. |
pitch_correction | Read or set whether changing playback speed keeps the original pitch. |
window_mode | Get or set the shape of the player window the user is looking at. |
cleanup | Find files an older unflick left behind — on Windows, upgrading from v0.9 moved the install directory and stranded roughly half a gigabyte with no uninstall entry. |
cast | Send what is playing to a television on the network over DLNA. |
disc_list | Optical drives on this machine and whether each holds a DVD or Blu-ray, plus whether this build can play them at all. |
session | What the user was last watching and how far in — and, with action "restore", reopen it there. |
startup | The last launch's startup timeline, phase by phase, in milliseconds from process start — process init, video pipeline, window shown, the launch file opening, React mounting, the control port. |
now_playing | What is playing, described the way a person would: title, artist, album, and whether there is any picture (an embedded cover is not video). |
dev_snapshot | The accessibility tree of the unflick window: every visible element with its role, accessible name, state and a CSS selector that feeds straight back into dev_click and dev_text. |
dev_click | Click an element in the unflick window. |
dev_text | Visible text of every element matching a selector, each with its index. |
dev_wait | Wait for an element to appear, or with `gone` for it to leave the page. |
dev_capture | A picture of the unflick interface. |
dev_eval | Run JavaScript in the unflick window and get back what it evaluated to. |
Ressourcen (3)
unflick://now-playing | Current playback state: file, position, duration, volume, speed |
unflick://playlist | Current playlist entries with current-track indicator |
unflick://library | All media files in the library |