¿Qué hace cli-anything-inkscape?
Una interfaz de línea de comandos con estado para edición de gráficos vectoriales, siguiendo los mismos patrones que los entornos CLI de GIMP y Blender. Manipula directamente documentos SVG (XML) con un formato de proyecto JSON para seguimiento de estado.
Instalación
Este CLI se instala como parte del paquete cli-anything-inkscape:
pip install cli-anything-inkscape
Requisitos previos:
- Python 3.10+
- inkscape debe estar instalado en tu sistema
Uso
Comandos básicos
# Mostrar ayuda
cli-anything-inkscape --help
# Iniciar modo REPL interactivo
cli-anything-inkscape
# Crear un nuevo documento
cli-anything-inkscape document new -o project.json
# Ejecutar con salida JSON (para consumo de agentes)
cli-anything-inkscape --json document info -p project.json
Modo REPL
Cuando se invoca sin un subcomando, el CLI entra en una sesión REPL interactiva:
cli-anything-inkscape
# Ingresa comandos de forma interactiva con autocompletado e historial
También puedes iniciar el REPL con una ruta de proyecto inexistente. El CLI ahora inicializa un nuevo documento en memoria en lugar de fallar de inmediato:
cli-anything-inkscape --project /abs/path/new-title.inkscape-cli.json
Grupos de comandos
Documento
Comandos de gestión de documentos.
| Comando | Descripción |
|---|---|
new | Crear un nuevo documento |
open | Abrir un proyecto existente |
save | Guardar el proyecto actual |
info | Mostrar información del documento |
profiles | Listar perfiles de documento disponibles |
canvas-size | Establecer el tamaño del lienzo |
units | Establecer las unidades del documento |
json | Imprimir el JSON crudo del proyecto |
Formas
Comandos de gestión de formas.
| Comando | Descripción |
|---|---|
add-rect | Agregar un rectángulo |
add-circle | Agregar un círculo |
add-ellipse | Agregar una elipse |
add-line | Agregar una línea |
add-polygon | Agregar un polígono |
add-path | Agregar una ruta |
add-star | Agregar una estrella |
remove | Eliminar una forma por índice |
duplicate | Duplicar una forma |
list | Listar todas las formas/objetos |
get | Obtener información detallada de una forma |
Texto
Comandos de gestión de texto.
| Comando | Descripción |
|---|---|
add | Agregar un elemento de texto; admite --box-width, --box-height y --line-height para layouts ajustados |
set | Establecer una propiedad de texto (texto, font-family, font-size, fill, box-width, box-height, line-height, etc.) |
list | Listar todos los objetos de texto |
Estilo
Comandos de gestión de estilo.
| Comando | Descripción |
|---|---|
set-fill | Establecer el color de relleno de un objeto |
set-stroke | Establecer el color del trazo (y opcionalmente el ancho) de un objeto |
set-opacity | Establecer la opacidad de un objeto (0.0-1.0) |
set | Establecer una propiedad de estilo arbitraria en un objeto |
get | Obtener las propiedades de estilo de un objeto |
list-properties | Listar todas las propiedades de estilo disponibles |
Transformaciones
Operaciones de transformación (trasladar, rotar, escalar, inclinar).
| Comando | Descripción |
|---|---|
translate | Trasladar (mover) un objeto |
rotate | Rotar un objeto |
scale | Escalar un objeto |
skew-x | Inclinar un objeto horizontalmente |
skew-y | Inclinar un objeto verticalmente |
get | Obtener la transformación actual de un objeto |
clear | Limpiar todas las transformaciones de un objeto |
Capas
Comandos de gestión de capas.
| Comando | Descripción |
|---|---|
add | Agregar una nueva capa |
remove | Eliminar una capa por índice |
move-object | Mover un objeto a una capa diferente |
set | Establecer una propiedad de capa (nombre, visible, bloqueada, opacidad) |
list | Listar todas las capas |
reorder | Mover una capa de una posición a otra |
get | Obtener información detallada de una capa |
Grupo de rutas
Operaciones booleanas de rutas.
| Comando | Descripción |
|---|---|
union | Unión de dos objetos |
intersection | Intersección de dos objetos |
difference | Diferencia de dos objetos (A menos B) |
exclusion | Exclusión (XOR) de dos objetos |
convert | Convertir una forma en una ruta |
list-operations | Listar operaciones booleanas de rutas disponibles |
Gradientes
Comandos de gestión de gradientes.
| Comando | Descripción |
|---|---|
add-linear | Agregar un gradiente lineal |
add-radial | Agregar un gradiente radial |
apply | Aplicar un gradiente a un objeto |
list | Listar todos los gradientes |
Grupo de exportación
Comandos de exportación/renderizado.
| Comando | Descripción |
|---|---|
png | Renderizar el documento a PNG |
svg | Exportar el documento como SVG |
pdf | Exportar el documento como PDF (requiere Inkscape) |
presets | Listar preajustes de exportación |
Sesión
Comandos de gestión de sesión.
| Comando | Descripción |
|---|---|
status | Mostrar estado de la sesión |
undo | Deshacer la última operación |
redo | Rehacer la última operación deshecha |
history | Mostrar historial de deshacer |
Ejemplos
Crear un nuevo proyecto
Crear un nuevo archivo de proyecto de Inkscape.
cli-anything-inkscape document new -o myproject.json
# O con salida JSON para uso programático
cli-anything-inkscape --json document new -o myproject.json
Sesión REPL interactiva
Iniciar una sesión interactiva con soporte de deshacer/rehacer.
cli-anything-inkscape
# Ingresa comandos de forma interactiva
# Usa 'help' para ver comandos disponibles
# Usa 'undo' y 'redo' para navegación del historial
Exportar proyecto
Exportar el proyecto a un formato de salida final.
cli-anything-inkscape --project myproject.json export pdf output.pdf --overwrite
Layout de texto ajustado
Para tarjetas de título, chips y paneles seguros en modo retrato, prefiere cajas de texto ajustadas en lugar de insertar saltos de línea manualmente:
cli-anything-inkscape --project title.json text add \
--text "Real capture + Veo cold open + Gemini score + thumbnail plate" \
--x 180 --y 470 --font-size 118 \
--box-width 1180 --box-height 260 --line-height 1.05
cli-anything-inkscape --project title.json text set 0 box-width 980
cli-anything-inkscape --project title.json text set 0 line-height 1.15
Notas:
box-widthajusta el texto largo en múltiples líneastspanSVG exportadas.box-heightpermite que el texto largo falle de forma segura en lugar de salirse del lienzo.- Usa cajas de texto ajustadas para gráficos con texto largo antes de recurrir a saltos de línea manuales.
Gestión de estado
El CLI mantiene el estado de la sesión con:
- Deshacer/Rehacer: Hasta 50 niveles de historial
- Persistencia de proyecto: Guardar/cargar estado del proyecto como JSON
- Seguimiento de sesión: Rastrear modificaciones y cambios
Formatos de salida
Todos los comandos admiten modos de salida dual:
- Legible para humanos (predeterminado): Tablas, colores, texto formateado
- Legible para máquinas (flag
--json): JSON estructurado para consumo de agentes
# Salida humana
cli-anything-inkscape project info -p project.json
# Salida JSON para agentes
cli-anything-inkscape --json project info -p project.json
Para agentes de IA
Al usar este CLI de forma programática:
- Usa siempre el flag
--jsonpara obtener salida analizable - Verifica los códigos de retorno - 0 para éxito, distinto de cero para errores
- Analiza stderr para mensajes de error en caso de fallos
- Usa rutas absolutas para todas las operaciones de archivos
- Verifica que las salidas existan después de operaciones de exportación
- Prefiere cajas de texto ajustadas para titulares y texto de longitud variable, para que los layouts se mantengan estables entre ediciones
Más información
- Documentación completa: Consulta README.md en el paquete
- Cobertura de pruebas: Consulta TEST.md en el paquete
- Metodología: Consulta HARNESS.md en el complemento cli-anything-plugin
Versión
1.0.1