auto-editor
A command-line video and audio editor that automatically cuts silence, motionless footage, and other dead space using loudness, motion, and scene-detection analysis, then exports directly to Premiere, Final Cut Pro, DaVinci Resolve, and more.
Repository Health
Technical Analysis
Auto-Editor is a command-line tool that automates the most tedious part of video editing: cutting out the dead space before the real editing begins. Point it at a video or audio file and it analyzes loudness, motion, or black-frame detection to decide which sections are “active” and which are “silent,” then cuts, speeds up, or otherwise transforms each section according to configurable rules.
Under the hood, auto-editor is written in Nim and links directly against libav (FFmpeg’s underlying libraries) instead of shelling out to the ffmpeg binary, giving it tight control over decoding, filtering, and encoding. Its editing model goes well beyond a binary cut/keep: sections can be assigned integer labels (0-255) driven by combinable conditions like audio threshold, motion percentage, or black-frame detection, with per-label actions such as speed changes, and the results can be previewed before any rendering happens.
Rather than only producing a rendered output file, auto-editor can export an edit decision list directly into Adobe Premiere Pro, Final Cut Pro, DaVinci Resolve, ShotCut, Kdenlive, or OpenTimelineIO project formats, so an automatic first pass can be refined by hand in a full NLE. It also supports local, offline transcription via whisper.cpp and Parakeet models (plus native OS speech APIs on macOS), microphone recording and auto-trimming (:mic), and compiles to WebAssembly for a fully in-browser version at app.auto-editor.com.
The project is released into the public domain (Unlicense) and has been under continuous, active development since 2020, with cross-platform builds for macOS, Windows, Linux, and ARM, and a companion suite of Claude Skills shipped in the repository for agent-driven editing workflows.
What You Get
- A single CLI command (
auto-editor path/to/video.mp4) that produces an edited file with dead space removed, no manual scrubbing required - Multiple detection methods (audio loudness, motion percentage, black-frame/scene detection, and combinations via boolean expressions) to decide what counts as “active” footage
- A multi-label action system (up to 255 labels) so different sections can get different treatments, such as cutting silence while speeding up quieter-but-not-silent parts
- Direct export to Adobe Premiere Pro, Final Cut Pro, DaVinci Resolve, ShotCut, Kdenlive, and OpenTimelineIO so the automatic cut can be finished by hand in a real editor
- Local, offline speech transcription via whisper.cpp/Parakeet and native OS speech APIs, with no audio ever leaving the machine
- Microphone capture and auto-trimming (
:mic) that records and edits in one step, plus a WebAssembly build that runs entirely in the browser
Common Use Cases
- Removing silence and dead air from talking-head, tutorial, or podcast-style video before publishing
- Trimming long screen recordings or lecture captures down to just the moments where something is happening
- Auto-cutting motionless security or lock-off camera footage down to segments with actual movement
- Generating a rough first-pass edit that gets exported into Premiere/Resolve/FCP for a human editor to polish
- Recording and auto-trimming microphone-only audio (voiceovers, dictation) without post-processing in a separate tool
Under The Hood
Architecture
Auto-Editor is organized as a clear analyze-decide-render-export pipeline: main.nim parses arguments via cli.nim and hands off to conductor.nim, which orchestrates the run; src/analyze/ (audio, motion, blackdetect, subtitle) produces per-frame activity signals; edit.nim and action.nim turn those signals plus user-specified rules into a labeled timeline.nim structure; src/render/ (video, audio, h264, hevc, smart, partialplan) turns the timeline into rendered media, while src/exports/ (fcp7, fcp11, kdenlive, mlt, otio, shotcut, json) turns the same timeline into edit-decision-list files for external NLEs. This separation means a single internal timeline representation can drive either a rendered file or a professional-editor handoff without duplicating cut logic.
Tech Stack
The project is written in Nim (>=2.2.2) and links directly against libav (the FFmpeg libraries) through hand-written bindings in ffmpeg.nim/av.nim rather than shelling out to the ffmpeg CLI, giving it low-level control over decode/filter/encode without needing FFmpeg installed separately in a compiled binary. It builds and cross-compiles for macOS, Windows, Linux, and ARM via a custom ae.nimble task pipeline (including building FFmpeg itself from source per target), compiles to WebAssembly via Emscripten with C/JS glue for a browser build, includes a Swift file for native macOS speech recognition, and embeds whisper.cpp/Parakeet/ggml for local speech-to-text.
Code Quality
Error handling is explicit and typed: parsing functions declare {.raises: [ActionParseError].} effect annotations and raise a dedicated exception type rather than relying on generic errors, which Nim’s compiler enforces at compile time. Functional and end-to-end tests live in a separate, private companion repository (auto-editor-tests) that CI checks out and runs via nimble test plus a Python end-to-end script; CI itself is extensive, covering macOS, Linux x64/ARM, and Windows cross-compilation with dependency caching and a dedicated 32-bit type-check pass. Comment density inside core modules is moderate, leaning on descriptive naming and Nim’s static typing over inline prose.
What Makes It Unique Most “auto-editing” tools stop at producing a rendered file; auto-editor’s timeline model is designed to also export directly into the project formats of major professional editors, letting an automatic first pass become the starting point for manual refinement rather than the end of the pipeline. Its labeling system goes beyond a binary active/silent cut, allowing many overlapping detection methods and per-label actions (including variable-speed sections) driven by a small boolean expression language. Combined with direct libav linkage, a from-scratch WebAssembly browser build, and fully local/offline speech transcription, it covers CLI, browser, and agent-driven (via bundled Claude Skills) editing without depending on cloud services.
Self-Hosting
Licensing Model Unlicense (public domain) — all features in this repository are available with no restrictions or license keys required. A separately hosted web/desktop application at app.auto-editor.com reuses these assets but ships its own additional proprietary components under a separate license; the CLI tool covered here is fully open.
Related Apps
deepseek-harness
AI Agents · AI Development · Developer Tools
An open-source, plugin-based agent harness from DeepSeek AI that runs coding and automation agents across web, desktop, CLI, and SDK surfaces.
Ollama
AI Development · Developer Tools
Run Llama, Gemma, DeepSeek, and other open LLMs on your own machine with one command and an OpenAI-compatible API.
Firecrawl
AI Development · Developer Tools
Turn any website into clean, LLM-ready data with a single API call — no proxy headaches, no scraping complexity.