O que cli-anything-inkscape faz?
Uma interface de linha de comando com estado para edição de gráficos vetoriais, seguindo os mesmos padrões dos harnesses CLI para GIMP e Blender. Manipula diretamente documentos SVG (XML) com um formato de projeto JSON para rastreamento de estado.
Instalação
Esta CLI é instalada como parte do pacote cli-anything-inkscape:
pip install cli-anything-inkscape
Pré-requisitos:
- Python 3.10+
- O Inkscape deve estar instalado no seu sistema
Uso
Comandos Básicos
# Mostrar ajuda
cli-anything-inkscape --help
# Iniciar modo REPL interativo
cli-anything-inkscape
# Criar um novo documento
cli-anything-inkscape document new -o project.json
# Executar com saída JSON (para consumo por agentes)
cli-anything-inkscape --json document info -p project.json
Modo REPL
Quando invocado sem um subcomando, a CLI entra em uma sessão REPL interativa:
cli-anything-inkscape
# Digite comandos interativamente com preenchimento por tabulação e histórico
Você também pode iniciar o REPL com um caminho de projeto inexistente. A CLI agora cria um novo documento em memória em vez de falhar imediatamente:
cli-anything-inkscape --project /abs/path/new-title.inkscape-cli.json
Grupos de Comandos
Documento
Comandos de gerenciamento de documentos.
| Comando | Descrição |
|---|---|
new | Criar um novo documento |
open | Abrir um projeto existente |
save | Salvar o projeto atual |
info | Mostrar informações do documento |
profiles | Listar perfis de documento disponíveis |
canvas-size | Definir o tamanho da tela |
units | Definir as unidades do documento |
json | Imprimir o JSON bruto do projeto |
Formas
Comandos de gerenciamento de formas.
| Comando | Descrição |
|---|---|
add-rect | Adicionar um retângulo |
add-circle | Adicionar um círculo |
add-ellipse | Adicionar uma elipse |
add-line | Adicionar uma linha |
add-polygon | Adicionar um polígono |
add-path | Adicionar um caminho |
add-star | Adicionar uma estrela |
remove | Remover uma forma por índice |
duplicate | Duplicar uma forma |
list | Listar todas as formas/objetos |
get | Obter informações detalhadas sobre uma forma |
Texto
Comandos de gerenciamento de texto.
| Comando | Descrição |
|---|---|
add | Adicionar um elemento de texto; suporta --box-width, --box-height e --line-height para layouts com quebra automática |
set | Definir uma propriedade de texto (texto, família da fonte, tamanho da fonte, preenchimento, largura da caixa, altura da caixa, altura da linha, etc.) |
list | Listar todos os objetos de texto |
Estilo
Comandos de gerenciamento de estilo.
| Comando | Descrição |
|---|---|
set-fill | Definir a cor de preenchimento de um objeto |
set-stroke | Definir a cor do contorno (e opcionalmente a espessura) de um objeto |
set-opacity | Definir a opacidade de um objeto (0.0-1.0) |
set | Definir uma propriedade de estilo arbitrária em um objeto |
get | Obter as propriedades de estilo de um objeto |
list-properties | Listar todas as propriedades de estilo disponíveis |
Transformar
Operações de transformação (translação, rotação, escala, cisalhamento).
| Comando | Descrição |
|---|---|
translate | Transladar (mover) um objeto |
rotate | Rotacionar um objeto |
scale | Escalar um objeto |
skew-x | Cisalhar um objeto horizontalmente |
skew-y | Cisalhar um objeto verticalmente |
get | Obter a transformação atual de um objeto |
clear | Limpar todas as transformações de um objeto |
Camada
Comandos de gerenciamento de camadas.
| Comando | Descrição |
|---|---|
add | Adicionar uma nova camada |
remove | Remover uma camada por índice |
move-object | Mover um objeto para uma camada diferente |
set | Definir uma propriedade de camada (nome, visível, bloqueada, opacidade) |
list | Listar todas as camadas |
reorder | Mover uma camada de uma posição para outra |
get | Obter informações detalhadas sobre uma camada |
Grupo de Caminhos
Operações booleanas de caminhos.
| Comando | Descrição |
|---|---|
union | União de dois objetos |
intersection | Interseção de dois objetos |
difference | Diferença de dois objetos (A menos B) |
exclusion | Exclusão (XOR) de dois objetos |
convert | Converter uma forma em um caminho |
list-operations | Listar operações booleanas de caminho disponíveis |
Gradiente
Comandos de gerenciamento de gradiente.
| Comando | Descrição |
|---|---|
add-linear | Adicionar um gradiente linear |
add-radial | Adicionar um gradiente radial |
apply | Aplicar um gradiente a um objeto |
list | Listar todos os gradientes |
Grupo de Exportação
Comandos de exportação/renderização.
| Comando | Descrição |
|---|---|
png | Renderizar o documento para PNG |
svg | Exportar o documento como SVG |
pdf | Exportar o documento como PDF (requer Inkscape) |
presets | Listar predefinições de exportação |
Sessão
Comandos de gerenciamento de sessão.
| Comando | Descrição |
|---|---|
status | Mostrar status da sessão |
undo | Desfazer a última operação |
redo | Refazer a última operação desfeita |
history | Mostrar histórico de desfazer |
Exemplos
Criar um Novo Projeto
Crie um novo arquivo de projeto Inkscape.
cli-anything-inkscape document new -o meoprojeto.json
# Ou com saída JSON para uso programático
cli-anything-inkscape --json document new -o meoprojeto.json
Sessão REPL Interativa
Inicie uma sessão interativa com suporte a desfazer/refazer.
cli-anything-inkscape
# Digite comandos interativamente
# Use 'help' para ver os comandos disponíveis
# Use 'undo' e 'redo' para navegar pelo histórico
Exportar Projeto
Exporte o projeto para um formato de saída final.
cli-anything-inkscape --project meoprojeto.json export pdf saida.pdf --overwrite
Layout de Texto com Quebra Automática
Para cartões de título, chips e painéis seguros para retrato, prefira caixas de texto com quebra automática em vez de inserir quebras de linha manualmente:
cli-anything-inkscape --project titulo.json text add \
--text "Captura real + abertura a frio Veo + pontuação Gemini + placa de miniatura" \
--x 180 --y 470 --font-size 118 \
--box-width 1180 --box-height 260 --line-height 1.05
cli-anything-inkscape --project titulo.json text set 0 box-width 980
cli-anything-inkscape --project titulo.json text set 0 line-height 1.15
Notas:
box-widthquebra textos longos em várias linhastspanexportadas pelo SVG.box-heightpermite que textos longos falhem com segurança, em vez de ultrapassar a tela.- Use caixas de texto com quebra automática para gráficos com texto longo antes de recorrer a quebras de linha manuais.
Gerenciamento de Estado
A CLI mantém o estado da sessão com:
- Desfazer/Refazer: Até 50 níveis de histórico
- Persistência de projeto: Salva/carrega o estado do projeto como JSON
- Rastreamento de sessão: Rastreia modificações e alterações
Formatos de Saída
Todos os comandos suportam modos de saída duplos:
- Legível por humanos (padrão): Tabelas, cores, texto formatado
- Legível por máquina (flag
--json): JSON estruturado para consumo por agentes
# Saída humana
cli-anything-inkscape project info -p project.json
# Saída JSON para agentes
cli-anything-inkscape --json project info -p project.json
Para Agentes de IA
Ao usar esta CLI programaticamente:
- Sempre use a flag
--jsonpara saída analisável - Verifique os códigos de retorno - 0 para sucesso, diferente de zero para erros
- Analise o stderr para mensagens de erro em caso de falha
- Use caminhos absolutos para todas as operações de arquivo
- Verifique se as saídas existem após operações de exportação
- Prefira caixas de texto com quebra automática para títulos e textos de comprimento variável, para que os layouts permaneçam estáveis durante edições
Mais Informações
- Documentação completa: Consulte o README.md no pacote
- Cobertura de testes: Consulte o TEST.md no pacote
- Metodologia: Consulte o HARNESS.md no cli-anything-plugin
Versão
1.0.1