Línea de comandos (jpgboost-cli)
jpgboost-cli comprime tus imágenes sin abrir la interfaz gráfica. Es la herramienta preferida para scripts, tareas programadas e integraciones continuas.
Tu licencia cubre hasta dos instalaciones que uses personalmente. La aplicación y la CLI cuentan cada una como una instalación distinta, incluso si ambas están instaladas en el mismo Mac. Aparecen como dispositivos en Ajustes > Licencia.
Un servidor que ejecuta solo la CLI para tus propias automatizaciones, como una integración continua o una tarea programada, puede por tanto ocupar una de esas dos instalaciones sin necesitar una licencia adicional. Para más información, consulta las secciones Licencia en un servidor y Una licencia por usuario.
Para qué sirve la línea de comandos
jpgboost-cli es un ejecutable autónomo, incluido dentro de JPGBoost.app. No depende ni de la API local ni de una instancia en ejecución de la aplicación: usa directamente el mismo motor de decodificación y codificación, por lo que produce exactamente los mismos archivos que la interfaz gráfica.
Es el punto de entrada preferido cuando no debe abrirse ninguna interfaz: un script de shell, una tarea programada, una integración continua, el procesamiento de un gran número de archivos.
jpgboost-cli está incluido en JPGBoost.app. No hace falta ninguna compilación ni instalación de bibliotecas, ya que usa los componentes ya integrados en la aplicación.
Hacer accesible el comando
El binario se encuentra dentro del paquete de la aplicación. Puedes llamarlo directamente por su ruta completa:
/Applications/JPGBoost.app/Contents/MacOS/jpgboost-cli --help
Para poder ejecutar jpgboost-cli desde cualquier carpeta, crea un enlace simbólico una sola vez:
sudo ln -s /Applications/JPGBoost.app/Contents/MacOS/jpgboost-cli \
/usr/local/bin/jpgboost-cli
jpgboost-cli --help
Como el enlace apunta al paquete, sigue siendo válido tras una actualización de la aplicación. Los ejemplos de esta página suponen esta instalación; sin ella, sustituye jpgboost-cli por la ruta completa anterior.
Puedes usar una carpeta personal en lugar de /usr/local/bin, por ejemplo ~/bin, siempre que figure en tu PATH. Una alternativa sencilla es añadir un alias a tu ~/.zshrc.
Licencia en un servidor
Una máquina que ejecuta solo la CLI, por ejemplo un servidor sin interfaz gráfica, puede activarse y gestionarse sin usar JPGBoost.app.
# Identificador de esta máquina, desde la CLI
jpgboost-cli --machine-id
# Primera activación, con el token recibido por correo tras la compra
jpgboost-cli --activate ACT-XXXX-XXXX-XXXX-XXXX-XXXX
# Desde este servidor ya activado, generar un código para añadir otro dispositivo
jpgboost-cli --add-device
# Unirse a una licencia mediante un código generado en otro lugar (app u otra CLI)
jpgboost-cli --pair XXXX-XXXX
# Obtener una versión más reciente de la licencia si el servidor tiene una
jpgboost-cli --sync
# Número de instalaciones usadas / límite, y su lista — lectura local, sin llamada de red
jpgboost-cli --devices
La aplicación y la CLI se consideran dos instalaciones distintas, incluso cuando se usan en el mismo Mac. Cada una tiene su propio identificador de instalación y por tanto ocupa una de las dos plazas permitidas por una licencia Pro.
Así puedes usar tu licencia de diferentes formas, por ejemplo con la app en tu Mac y la CLI en un servidor, con la app y la CLI en el mismo Mac, con la app en dos Mac diferentes, o con la CLI sola en un servidor que nunca abre la aplicación.
Sintaxis y opciones
jpgboost-cli <archivo...> --output <carpeta> [opciones]
| Opción | Función | Valor por defecto |
|---|---|---|
--output <carpeta> | Carpeta de destino, se crea si no existe | Obligatoria |
--quality <1-100> | Calidad de compresión | 75 |
--format <formato> | png, jpeg, heic, avif, webp o jxl | jpeg |
--profile <nombre> | Aplica un perfil de exportación con nombre | Ninguno |
--jobs <N> | Archivos procesados en paralelo | Número de núcleos |
--json | Salida JSON estructurada en lugar de texto legible | Desactivado |
--help | Muestra la ayuda | — |
Primeros ejemplos
# Dos archivos a WebP, calidad 60
jpgboost-cli foto1.jpg foto2.png --quality 60 --format webp --output ./comprimidas
# foto1.jpg: 4,2 MB -> 890 KB (-79%) -> ./comprimidas/foto1.webp
# foto2.png: 1,8 MB -> 620 KB (-66%) -> ./comprimidas/foto2.webp
#
# 2 archivo(s) procesado(s), 0 error(es).
# Una carpeta completa a AVIF
jpgboost-cli ~/Imagenes/exportar/*.png --format avif --quality 65 --output ~/Imagenes/web
Procesamiento por lotes y paralelismo
Para cientos o miles de archivos, la opción --jobs procesa varias imágenes a la vez. Cada archivo se decodifica, se codifica y se libera de forma independiente: el consumo de memoria no crece con el número de archivos pendientes, solo con el valor de --jobs.
# Ocho archivos procesados simultáneamente
jpgboost-cli ~/Fotos/lote/*.jpg --jobs 8 --format webp --output ~/Fotos/web
# Uno a la vez, para limitar la carga en una máquina compartida
jpgboost-cli ~/Fotos/lote/*.jpg --jobs 1 --format webp --output ~/Fotos/web
En un lote de 12 archivos, --jobs 8 resultó ser unas cuatro veces más rápido que --jobs 1. La mejora real depende del número de núcleos de tu Mac y del formato de destino: AVIF y JPEG XL son notablemente más lentos de codificar que JPEG o HEIC.
Usar un perfil de exportación
La opción --profile reutiliza un perfil creado en la aplicación o mediante la API. Solo completa lo que no hayas indicado explícitamente.
# El formato, la calidad y la carpeta vienen todos del perfil
jpgboost-cli --profile "Web JPEG" *.png
# La carpeta explícita prevalece, el resto viene del perfil
jpgboost-cli --profile "Web JPEG" --output ./entrega *.png
La CLI también puede crear o actualizar un perfil directamente, sin pasar por Ajustes ni por la API local:
jpgboost-cli --create-profile "Web JPEG" --format jpeg --quality 70 --output ./comprimidas
--format y --quality son obligatorios, --output es opcional (la carpeta indicada debe existir ya). Un nombre ya usado sobrescribe el perfil existente en lugar de crear un duplicado, el mismo comportamiento que la pestaña Perfiles de la app y que la API local. Requiere JPGBoost Pro, como el resto de la CLI.
Salida JSON
Con --json, la salida es un array JSON en el que cada archivo procesado corresponde a un objeto JSON, con la misma forma que las respuestas de la API local, lo que facilita el encadenamiento con jq o cualquier otra herramienta.
jpgboost-cli *.png --format webp --output ./salida --json
# Encadenar con jq: quedarse solo con los archivos con error
jpgboost-cli *.png --format webp --output ./salida --json \
| jq '.[] | select(.error != null)'
Campos disponibles: path, originalSizeBytes, compressedSizeBytes, ratio, destination y error.
Códigos de salida
| Código | Significado |
|---|---|
0 | Todos los archivos se procesaron correctamente |
77 | Ninguna licencia Pro válida en esta máquina |
| Distinto de cero | Al menos un archivo ha fallado; puede usarse directamente en un script o en integración continua |
Archivos con el mismo nombre
Dos archivos de entrada con el mismo nombre base apuntan de forma natural a la misma salida. a/foto.jpg y b/foto.png convertidos a WebP producirían ambos foto.webp.
JPGBoost no los sobrescribe: el segundo recibe un nombre distinto.
a/foto.jpg -> foto.webp
b/foto.png -> foto-2.webp
Los nombres se asignan en el orden de los argumentos, con independencia del orden de ejecución con --jobs, por lo que el resultado es reproducible. La misma regla se aplica en la aplicación, los Atajos, AppleScript y las carpetas supervisadas.
Esta regla solo afecta a las colisiones entre archivos distintos. Volver a exportar el mismo archivo a la misma carpeta sí sobrescribe su salida anterior, sin acumular foto-2, foto-3, etc.
Comprobar la instalación
Comprueba en cualquier momento que el comando responde correctamente:
jpgboost-cli --help