Plugins
uniconv’s functionality comes from plugins. There are two types:
| Type | Language | Interface | Best for |
|---|---|---|---|
| Native | C/C++ | Shared library (.so/.dylib/.dll) | Performance-critical operations |
| CLI | Any | Subprocess + JSON protocol | Rapid development, scripting languages |
Managing plugins
# List installed plugins
uniconv plugin list
# Search the registry
uniconv plugin search image
# Install a plugin
uniconv plugin install data-convert
# Install a specific version
uniconv plugin install data-convert@1.0.0
# Install an entire collection
uniconv plugin install +essentials
# Update plugins
uniconv plugin update --all
# Remove a plugin
uniconv plugin remove data-convert
# Show plugin details
uniconv plugin info data-convert
Available plugins
| Plugin | Type | Targets | Description |
|---|---|---|---|
image-convert | Native (C++) | jpg, png, webp, gif, heic, … | Image format conversion via libvips |
video-convert | Native (C++) | mp4, mov, avi, webm, gif, … | Video format conversion via FFmpeg |
audio-convert | Native (C++) | mp3, aac, wav, flac, ogg, … | Audio format conversion via FFmpeg |
doc-convert | CLI (Python) | pdf, docx, odt, xlsx, md, … | Document conversion via LibreOffice |
data-convert | CLI (Python) | json, csv, yaml, xml, toml, … | Structured data format conversion |
Plugin specifier syntax
In pipelines, use [scope/plugin:]target[.extension] to specify plugins explicitly:
# Automatic plugin resolution
uniconv photo.heic "jpg"
# Explicit plugin
uniconv photo.heic "uniconv/image-convert:jpg --quality 90"
# Explicit output extension (when target != extension)
uniconv data.postgis "geo/postgis:extract.geojson"
Plugin manifest
Each plugin has a plugin.json manifest. Key fields:
| Field | Type | Default | Description |
|---|---|---|---|
targets | map or array | — | Supported targets. Array shortcut: ["jpg", "png"]. Map: {"extract": ["geojson", "csv"]} |
accepts | string[] (optional) | omit = accept all | Input formats accepted. Omitted = any, [] = none |
sink | bool | false | Terminal plugin that owns output (upload, save) |
Windows notes
All plugins support Windows. A few things to keep in mind:
- Native plugins (image-convert, video-convert, audio-convert) bundle their dependency DLLs alongside the plugin
.dll. These are loaded automatically. - doc-convert requires LibreOffice installed on your system. Pandoc is bundled automatically.
- CLI plugins (Python-based) require Python 3.8+ in your PATH. Plugin install creates a virtual environment and installs Python dependencies automatically.
Writing plugins
See the Contributing Guide for plugin authoring instructions.