CommunityEscrita e Ediçãogithub.com

ubie-oss/n8n-cli

Uma ferramenta CLI independente para gerenciar workflows do n8n.

O que é n8n-cli?

Este é um conjunto de habilidades para o n8n-cli, uma ferramenta de linha de comando autônoma construída com TypeScript/Bun, projetada para ajudar desenvolvedores e agentes de IA a gerenciar workflows do n8n de forma eficiente. A habilidade fornece funcionalidades essenciais como importação, aplicação (deploy), linting, formatação, conversão entre formatos JSON/YAML, e execução de testes em workflows, tudo sem a necessidade de uma interface web. Ela é útil para cenários de integração contínua, automação de deploy e desenvolvimento local, permitindo que os usuários versionem e gerenciem workflows como código. A ferramenta suporta múltiplas plataformas (Linux, macOS) e arquiteturas (x64, arm64), e pode ser obtida via GitHub Releases ou construída a partir do código-fonte. Comandos como `apply` e `import` sincronizam workflows entre o ambiente local e remoto, enquanto o linter integrado (com 11 regras) e o formatador garantem a qualidade e consistência dos arquivos de definição. A habilidade também oferece um fluxo de trabalho de depuração, permitindo listar e inspecionar execuções com detalhes de erros.

Funciona com✓Claude Code~Codex CLI~Cursor
npx skills add ubie-oss/n8n-cli

Installed? Explore more Escrita e Edição skills: steipete/notion, langchain-ai/langchain, bytedance/podcast-generation · View all 6 →

Perguntar na sua IA favorita

Abre um novo chat com esta habilidade de agente já pré-carregada.

Documentação

Habilidade de Operações do n8n-cli

Uma habilidade para auxiliar no gerenciamento de workflows usando o n8n-cli (TypeScript/Bun).

Inicialização da Sessão (Importante)

Para novas sessões, sempre execute o seguinte primeiro para garantir que o n8n-cli esteja atualizado.

Prioridade 1: Construir a partir da Fonte Local (Desenvolvimento)

Se o repositório fonte do n8n-cli estiver disponível via add-dir (por exemplo, /caminho/para/n8n-cli/Makefile existe), construa a partir da fonte local em vez de usar uma versão pré-compilada. Isso garante que as últimas alterações de desenvolvimento sejam refletidas imediatamente.

# Se o repositório n8n-cli estiver visível via add-dir
N8N_CLI_REPO="/caminho/para/n8n-cli"  # Substitua pelo caminho do add-dir
if [ -f "$N8N_CLI_REPO/Makefile" ]; then
  echo "Construindo n8n-cli a partir da fonte local: $N8N_CLI_REPO"
  cd "$N8N_CLI_REPO" && bun install && make build
  cp "$N8N_CLI_REPO/n8n-cli" /caminho/para/destino/n8n-cli
  cd /caminho/para/destino
  echo "Construído a partir da fonte local: $(./n8n-cli version 2>/dev/null | head -1)"
fi

Prioridade 2: Atualização Automática a partir de GitHub Releases (Preferido)

Binários pré-compilados estão disponíveis no GitHub Releases. Isso é mais rápido do que compilar a partir do código fonte e garante que você esteja executando a versão oficial.

# 1. Verifique a versão do último release
LATEST_TAG=$(gh release view --repo ubie-oss/n8n-cli --json tagName -q '.tagName' 2>/dev/null)

# 2. Verifique a versão local atual (se o binário existir)
CURRENT_VERSION=""
if [ -x ./n8n-cli ]; then
  CURRENT_VERSION=$(./n8n-cli version 2>/dev/null | head -1 | grep -oE 'v[0-9]+\.[0-9]+\.[0-9]+' || echo "")
fi

# 3. Compare e baixe se necessário
if [ -z "$CURRENT_VERSION" ] || [ "$CURRENT_VERSION" != "$LATEST_TAG" ]; then
  echo "Atualizando n8n-cli: ${CURRENT_VERSION:-nenhuma} -> ${LATEST_TAG}"

  # Detecta plataforma
  ARCH=$(uname -m)
  OS=$(uname -s | tr '[:upper:]' '[:lower:]')
  case "$ARCH" in
    arm64|aarch64) ASSET_NAME="n8n-cli-${OS}-arm64" ;;
    x86_64)        ASSET_NAME="n8n-cli-${OS}-x64" ;;
    *)             echo "Arquitetura não suportada: $ARCH"; exit 1 ;;
  esac

  # Baixa o binário
  gh release download "$LATEST_TAG" --repo ubie-oss/n8n-cli --pattern "$ASSET_NAME" --output n8n-cli --clobber
  chmod +x ./n8n-cli
  echo "Atualizado para $(./n8n-cli version 2>/dev/null | head -1)"
else
  echo "n8n-cli está atualizado: $CURRENT_VERSION"
fi

Plano B: Construir a partir do Código Fonte

Se a CLI gh não estiver disponível ou você precisar de uma versão de desenvolvimento:

# Instalar dependências + construir CLI
bun install && make build

Verificação da construção:

./n8n-cli version

Configuração do Ambiente

Verificando o Arquivo .env

Se .env existir na raiz do projeto, o n8n-cli pode ser usado sem especificar parâmetros. Não leia o conteúdo.

# Apenas verifique a existência do .env (não leia o conteúdo)
test -f .env && echo ".env existe - n8n-cli pode ser usado sem parâmetros"

Se .env existir:

  • N8N_API_URL e N8N_API_KEY já estão configurados
  • ./n8n-cli pode ser executado sem parâmetros

Se .env não existir:

  • Peça ao usuário para criar um arquivo .env
  • Ou use as flags --api-url e --api-key

Criando .env (Apenas se Necessário)

cp .env.example .env
# Peça ao usuário para editar

Comandos Comuns

1. Verificando o Status de Workflows Remotos

Verificar um workflow específico:

# Obter informações do workflow por ID
./n8n-cli workflow get <workflow-id>

# Exibir em formato de tabela para legibilidade
./n8n-cli -o table workflow get <workflow-id>

# Salvar em arquivo (útil para comparação de diff)
./n8n-cli workflow get <workflow-id> > /tmp/remote-workflow.json

Listar workflows:

# Todos os workflows
./n8n-cli workflow list

# Formato de tabela
./n8n-cli -o table workflow list

# Apenas ativos
./n8n-cli workflow list --active

2. Importar Workflows (Remoto -> Local)

Verificar o Formato Local Antes de Importar

Ao puxar conteúdo remoto para local, siga sempre estes passos:

  1. Verifique o formato do arquivo local

    # Verifique se o arquivo existe e seu formato
    ls -la definitions/*<workflow-id>* definitions/**/*<workflow-id>*
    
  2. Use as opções de importação apropriadas com base no formato

    • Arquivos .json: use apenas --ids
    • Arquivos .yaml/.yml: use tanto --ids quanto --yaml

Importar um workflow específico:

# Workflow em formato JSON
./n8n-cli import --ids=<workflow-id>

# Workflow em formato YAML
./n8n-cli import --ids=<workflow-id> --yaml

# Para um diretório personalizado
./n8n-cli import --ids=<workflow-id> -d ./meu-dir

Importar múltiplos workflows:

# Lista separada por vírgulas
./n8n-cli import --ids=abc123,def456,ghi789

Importar todos os workflows:

./n8n-cli import

Opções adicionais:

OpçãoDescrição
--include-archivedIncluir workflows arquivados
--cleanup-orphansExcluir arquivos órfãos sem IDs correspondentes
-t, --threshold <int>Linhas mínimas para extração de arquivo externo (padrão: 0, configurável em CLAUDE.md)
--dry-runApenas pré-visualização (sem alterações em arquivos)
--tags <tags>Filtrar por nomes de tags separados por vírgulas (condição AND)

3. Dry-run (Pré-visualização de Alterações)

Sempre verifique com dry-run antes de aplicar:

# Pré-visualizar alterações para todos os workflows
./n8n-cli apply --dry-run

# Apenas workflow específico (por ID)
./n8n-cli apply --dry-run --ids=<workflow-id>

# Apenas arquivo específico
./n8n-cli apply --dry-run -d definitions/caminho/para/workflow.json

Exemplo de saída:

=== CREATE (1 workflow) ===
  + novo-workflow.json (nome: "Nova Automação")

=== UPDATE (2 workflows) ===
  ~ existente.json (id: R2cTI0LDzCJSnvNG)
    - nome: "Nome Antigo" -> "Novo Nome"
    - nodes: 3 -> 5 nodes

=== SKIP (1 workflow) ===
  = inalterado.json (sem alterações)

Resumo (dry-run): 1 para criar, 2 para atualizar, 1 inalterado

4. Apply (Implantar)

Assistentes de IA devem sempre usar --ids

# Aplicar apenas workflow específico (recomendado)
./n8n-cli apply --ids=<workflow-id>

# Aplicar apenas um arquivo específico
./n8n-cli apply -d definitions/caminho/para/workflow.json

# Forçar apply (sobrescrever alterações remotas)
./n8n-cli apply --ids=<workflow-id> --force

Proibido: Aplicar em um diretório inteiro

# Estes NÃO devem ser executados por IA
./n8n-cli apply -d definitions/
./n8n-cli apply

Opções adicionais:

OpçãoDescrição
--from-git-changes <spec>Aplicar apenas arquivos alterados no diff do Git
--yaml / --no-yamlAtivar/desativar processamento YAML
--allow-duplicatesPular a verificação de nome duplicado upstream (padrão: ativado; use --force para ignorar avisos em vez de desativar a verificação)
--no-auto-tagDesativar etiquetagem automática (managed-as-code)
-p, --project <id>Especificar ID do projeto alvo

Variáveis de ambiente:

  • APPLY_FILTER_BY_TAGS - Filtrar por nomes de tags separados por vírgulas (condição AND)

Modo Git diff:

# Aplicar apenas alterações de uma branch de funcionalidade
./n8n-cli apply --from-git-changes origin/main..HEAD

# Pré-visualização
./n8n-cli apply --from-git-changes origin/main..HEAD --dry-run

# Alterações dos últimos 3 commits
./n8n-cli apply --from-git-changes HEAD~3..HEAD

Detecção de conflito 3-way: Quando --from-git-changes é especificado, os conflitos são detectados comparando Base (ponto de referência), Local (atual) e Remoto (servidor) para identificar apenas conflitos verdadeiros.

5. Linter (Verificações de Qualidade)

O linter está integrado ao CLI. Nenhuma compilação separada é necessária.

Nota: Argumentos posicionais não são suportados. Sempre especifique arquivos/diretórios com -f ou -d.

# Verificar um arquivo específico (-f obrigatório)
./n8n-cli lint -f definitions/<nome-do-arquivo>

# Verificar um diretório específico
./n8n-cli lint -d ./definitions/exemplo-projeto

# Verificar todos os workflows
./n8n-cli lint -d ./definitions

# Saída JSON (para CI/CD)
./n8n-cli lint -d ./definitions -o json

Opções:

OpçãoDescrição
-d, --dir <caminho>Diretório de arquivos de definição
-f, --file <arquivos...>Arquivo(s) específico(s)
-c, --config <caminho>Caminho do arquivo de configuração (.n8nlintrc.json)
--disable-rule <nome>Desativar regra(s) específica(s)
--list-rulesListar todas as regras
-o, --output <formato>Formato de saída: text, json (padrão: text)

Regras (11 regras):

RegraSeveridadeDescrição
json-syntaxerroVerificação de sintaxe JSON
required-fieldserroVerificação de campos obrigatórios (name, nodes, connections)
connection-referenceerroVerificação de existência do nó alvo da conexão
webhook-id-requirederroVerificar se nós webhook e formTrigger têm o campo webhookId
orphaned-nodeavisoDetecção de nós órfãos
implicit-json-refavisoDetecção de referência implícita a $json
expression-mode-prefixavisoDetecção de prefixo = ausente
ai-agent-output-refavisoDetecção de referência incorreta à saída do Agente de IA
node-paramsavisoValidação de esquema de parâmetros do nó
node-ref-field-checkavisoValidação de existência de campo referenciado
node-ref-cardinalityavisoValidação de uso de .item/.first()

Arquivo de configuração (.n8nlintrc.json):

{
  "rules": {
    "json-syntax": "error",
    "required-fields": "error",
    "orphaned-node": "warning",
    "implicit-json-ref": "off"
  }
}

Ordem de pesquisa do arquivo de configuração:

  1. Caminho especificado com a flag --config
  2. .n8nlintrc.json / .n8nlintrc no diretório alvo
  3. .n8nlintrc.json / .n8nlintrc no diretório atual

6. Formatador (Auto-formatação)

Nota: fmt aceita argumentos posicionais para arquivos (sem opção -f).

# Formatar um arquivo específico (argumento posicional)
./n8n-cli fmt definitions/<nome-do-arquivo>

# Múltiplos arquivos
./n8n-cli fmt definitions/arquivo1.yaml definitions/arquivo2.yaml

# Formatar um diretório inteiro
./n8n-cli fmt -d ./definitions

# Apenas pré-visualização
./n8n-cli fmt -d ./definitions --dry-run

7. Teste (Execução)

Testar workflows via webhooks de teste:

# Teste básico
./n8n-cli test <workflow-id>

# Com dados de teste
./n8n-cli test <workflow-id> -d '{"email": "[email protected]"}'

# Aguardar a conclusão da execução (recomendado)
./n8n-cli test <workflow-id> --wait-execution

# Auto-ativar workflows inativos
./n8n-cli test <workflow-id> --activate

# Verificar apenas URL do webhook
./n8n-cli test <workflow-id> --dry-run

# Verificar parâmetros de entrada
./n8n-cli test <workflow-id> --show-inputs

Opções:

OpçãoDescrição
-d, --data <json>Dados de teste (string JSON)
--timeout <duração>Timeout HTTP (padrão: 30s)
--wait-executionAguardar a conclusão da execução e mostrar resultados
--activateAuto-ativar workflows inativos
--dry-runVerificar apenas URL do webhook
--show-inputsExibir parâmetros de entrada
-o, --output <fmt>Formato de saída: json, table (padrão: json)

Testar a partir de um arquivo local:

# Especificar um arquivo JSON/YAML local
./n8n-cli test ./definitions/meu-workflow.json

8. Execução (Logs e Erros)

Listar execuções recentes:

# Listar todas as execuções recentes
./n8n-cli execution list

# Formato de tabela para legibilidade
./n8n-cli -o table execution list

# Filtrar por status
./n8n-cli execution list --status error
./n8n-cli execution list --status success

# Filtrar por workflow
./n8n-cli execution list --workflow <workflow-id>

# Limitar resultados
./n8n-cli execution list --limit 5

# Filtros combinados
./n8n-cli execution list --workflow <workflow-id> --status error --limit 10

Obter detalhes da execução:

# Obter execução por ID
./n8n-cli execution get <execution-id>

# Formato de tabela com detalhes do erro
./n8n-cli -o table execution get <execution-id>

# Incluir resumo de execução dos nós
./n8n-cli -o table execution get <execution-id> --show-data

Opções para execution list:

OpçãoDescrição
-w, --workflow <id>Filtrar por ID do workflow
-s, --status <status>Filtrar por status (success, error, running, waiting)
-l, --limit <n>Número máximo de execuções (padrão: 20)

Opções para execution get:

OpçãoDescrição
--show-dataIncluir resumo de execução dos nós na saída

Informações de erro exibidas:

CampoDescrição
Error NodeO nó onde o erro ocorreu
Error MessageA mensagem de erro
Error DetailsDescrição adicional do erro (se disponível)
Last NodeO último nó executado

Fluxo de trabalho típico de depuração:

# 1. Listar erros recentes
./n8n-cli -o table execution list --status error --limit 5

# 2. Obter detalhes de uma execução com falha específica
./n8n-cli -o table execution get <execution-id> --show-data

# 3. Revisar detalhes do erro e corrigir o workflow

9. Converter (Conversão de Formato)

Converter arquivos de workflow entre formatos JSON e YAML (apenas local, sem necessidade de API):

# Converter todos os workflows JSON para YAML
./n8n-cli convert -d ./definitions --format yaml

# Converter workflows específicos por ID
./n8n-cli convert -d ./definitions --format json --ids <workflow-id>

# Pré-visualização sem escrever
./n8n-cli convert -d ./definitions --format yaml --dry-run

# Manter arquivos originais
./n8n-cli convert -d ./definitions --format yaml --keep

# Converter um único arquivo
./n8n-cli convert --format yaml definitions/<nome-do-arquivo>.json

Opções:

OpçãoDescrição
--format <formato>Formato alvo: json, yaml (obrigatório)
-d, --directory <dir>Diretório para procurar arquivos de workflow
--ids <ids>IDs de workflow separados por vírgulas para converter
--tags <tags>Filtrar por tags (separadas por vírgulas, condição AND)
-t, --threshold <n>Linhas mínimas para externalização de código (JSON→YAML)
--dry-runApenas pré-visualização
--keepManter arquivos originais

Comportamento:

  • JSON→YAML: gera YAML + _subfiles/ com código externalizado
  • YAML→JSON: resolve referências !include e remove _subfiles/
  • Arquivos já no formato alvo são ignorados
  • Arquivos originais removidos após a conversão, a menos que --keep

10. Tabelas de Dados

Gerenciar tabelas de dados e linhas:

# Listar todas as tabelas de dados
./n8n-cli data-table list

# Formato de tabela
./n8n-cli -o table data-table list

# Obter detalhes de uma tabela
./n8n-cli data-table get <table-id>

# Listar linhas de uma tabela
./n8n-cli data-table list-rows <table-id>

# Apagar uma tabela
./n8n-cli data-table delete <table-id>

# Forçar apagar (sem confirmação)
./n8n-cli data-table delete <table-id> --force

Opções:

OpçãoDescrição
-o, --output <formato>Formato de saída (json, table; padrão: json)
--rawSaída bruta da API (sem processamento de status)

11. Utilitário (Auditoria de Nó)

Verificar quais workflows usam um tipo específico de nó:

# Encontrar workflows que usam um tipo de nó
./n8n-cli util node-usage <node-type>

# Formato de tabela
./n8n-cli -o table util node-usage <node-type>

# Exemplos
./n8n-cli util node-usage n8n-nodes-base.httpRequest
./n8n-cli util node-usage n8n-nodes-base.webhook
./n8n-cli -o table util node-usage n8n-nodes-base.set

Opções:

OpçãoDescrição
-d, --dir <caminho>Caminho do diretório de definições (padrão: ./definitions)
-g, --globalPesquisar em todos os arquivos .json/.yaml no diretório de definições
-i, --inputPesquisar por tipo de nó em entradas em vez de tipo

Comportamento:

  • Pesquisa arquivos de definição no diretório especificado
  • Retorna nomes de arquivo e nomes de workflow onde o tipo de nó é encontrado
  • Útil para auditoria de dependências e análise de impacto

Guia de Referência Rápida de Comandos

ComandoDescriçãoUso Comum
workflow getObter detalhes do workflow remoto./n8n-cli workflow get <id>
workflow listListar workflows remotos./n8n-cli -o table workflow list
importPuxar workflows remotos para local./n8n-cli import --ids=<id>
applyEnviar workflows locais para remoto./n8n-cli apply --ids=<id> --dry-run
lintVerificar qualidade dos arquivos de definição./n8n-cli lint -d ./definitions
fmtAuto-formatar arquivos de definição./n8n-cli fmt definitions/*.yaml
testTestar workflow via webhook./n8n-cli test <id> --wait-execution
execution listListar execuções recentes./n8n-cli -o table execution list --status error
execution getObter detalhes de execução./n8n-cli -o table execution get <id>
convertConverter entre formatos JSON/YAML./n8n-cli convert -d . --format yaml
data-tableGerenciar tabelas de dados./n8n-cli data-table list
util node-usageAuditar uso de tipos de nó./n8n-cli util node-usage <tipo>

Variáveis de Ambiente

NomeDescrição
N8N_API_URLURL base da API n8n (ex: https://instancia-n8n.exemplo.com/api/v1)
N8N_API_KEYChave de API para autenticação
APPLY_FILTER_BY_TAGSFiltrar workflows a serem aplicados por tags (condição AND)

Resolução de Problemas

Aplicação:

  • Workflow não encontrado: Verifique o ID do workflow ou o caminho do arquivo
  • Erro de autenticação: Verifique N8N_API_URL e N8N_API_KEY no .env
  • Tag de erro: Se apply --ids ou deploy --ids falhar com "unable to tag", configure --no-auto-tag

Linter:

  • Saída estranha da CLI: O n8n-cli usa Node.js; vs. Bun mostra saída stderr adicional. Use 2>/dev/null se precisar de saída limpa, ou use o modo -o json que produz JSON válido para stdout
  • Posicional vs. Flag: lint requer -f <arquivo>; fmt usa argumentos posicionais (fmt <arquivo>)

Teste:

  • Execução em andamento: Use --wait-execution para aguardar a conclusão
  • Workflows inativos: Use --activate para ativá-los automaticamente antes do teste

Arquivos de Definição:

  • Workflows não encontrados pelo import: Verifique a estrutura do diretório definitions/
  • Entrada com nome inválido: Verifique se o nome não contém caracteres especiais não suportados pelo sistema de arquivos

Segurança e Boas Práticas

  • Nunca leia ou exiba valores de N8N_API_KEY ou tokens de autenticação
  • Sempre use --ids ao aplicar/implantar para evitar atualizações acidentais em massa
  • Use --dry-run antes de apply para revisar alterações
  • Prefira --from-git-changes para implantações controladas por versão
  • Use --no-auto-tag se você gerencia tags manualmente

Construção de Desenvolvimento

# Clonar o repositório
git clone https://github.com/ubie-oss/n8n-cli.git
cd n8n-cli

# Instalar dependências (usa Bun)
bun install

# Construir o binário
make build

# O binário está em ./n8n-cli

Pré-requisitos:

  • Bun (runtime JavaScript)
  • Make

Informações de Licenciamento

Copyright (c) 2025 Ubie, Inc. Lançado sob a Licença Apache 2.0. Veja o arquivo LICENSE para mais detalhes.

Este software contém código modificado de n8n (n8n-io/n8n), usado sob a Licença Pública Sustentável enquanto aplicável. Os componentes modificados são claramente indicados nos cabeçalhos dos arquivos de origem.

Habilidades Relacionadas