n8n + Ollama : automatizar com IA 100 % locale
O n8n é a ferramenta de automação sem código mais convincente como alternativa ao Zapier ou ao Make, com um diferencial decisivo: pode ser hospedado por você. Combinado com o Ollama, você obtém uma cadeia completa em que os dados nunca saem da sua máquina — e-mails traduzidos, artigos resumidos, leads classificados, tudo sem chamadas a APIs externas. Este guia de automação com n8n e Ollama detalha a instalação, o nó nativo do Ollama e três fluxos de trabalho práticos prontos para copiar.
#Por que combinar n8n e Ollama?
n8n é um orquestrador visual: você conecta nós (trigger, HTTP, banco de dados, LLM…) sem escrever código, e o fluxo de trabalho roda em segundo plano por meio de um cron, um webhook ou uma caixa de e-mail. Todos os concorrentes voltados ao grande público (Zapier, Make, Power Automate) cobram por volume e exigem que seus dados passem pelos servidores deles.
Ollama, por sua vez, expõe um LLM local em http://localhost:11434 com uma API HTTP compatível. O n8n inclui desde o final de 2023 um nó Ollama nativo (e um nó compatível com OpenAI que também funciona). Resultado: um fluxo de trabalho que resume PDFs de clientes ou classifica e-mails de RH nunca faz um único byte sair da sua infraestrutura.
#Pré-requisitos
Agentes que agem na sua máquina: Cline agêntico, MCP, n8n + Ollama, automações locais.
- Espaço online vitalício
- PDF + arquivos
- Atualizações vitalícias
- Ollama instalado
- Daemon ativo na porta 11434. Verifique com curl http://localhost:11434. Se você estiver começando do zero, siga primeiro o guia de instalação do Ollama do site.
- Um modelo baixado
- ollama pull qwen3.5:9b para versatilidade, ou qwen3.5:4b se você quiser algo mais leve. Para fluxos de trabalho de classificação, granite4.2:8b é sólido e muito econômico em tokens.
- Docker + Docker Compose
- O n8n pode ser implantado em poucos segundos com Docker. Docker Desktop no Windows/macOS, Docker Engine no Linux.
- 8 GB de RAM livres
- n8n consome ~500 MB, e o Ollama carrega o modelo na VRAM (~6,6 GB para um 9B Q4). Reserve uma boa margem se quiser vários workflows simultâneos.
- Um pouco de paciência para o no-code
- O n8n é visual, mas não mágico: entender JSON e as expressões {{ $json.field }} continua útil.
#1. Instalar o n8n com hospedagem própria via Docker
O método oficial e mais simples é uma imagem Docker mantida pela equipe n8n. Crie uma pasta dedicada e um arquivo docker-compose.yml:
A linha extra_hosts é a chave: a partir do contêiner n8n, você chamará Ollama via http://host.docker.internal:11434 em vez de localhost (que apontaria para o próprio contêiner). Em sistemas Linux apenas, essa dica exige a diretiva host-gateway.
Abra http://localhost:5678. No primeiro acesso, o n8n pede que você crie uma conta de proprietário — ela permanece local, sem telemetria obrigatória. Após fazer login, você chega à área de trabalho vazia.
#2. Configurar o nó Ollama no n8n
O n8n oferece duas formas de chamar o Ollama: o nó dedicado "Ollama Chat Model" (integrado à parte LangChain do n8n) e uma chamada HTTP genérica. O nó dedicado é uma solução mais organizada para agentes e cadeias; a chamada HTTP oferece mais controle. Ambos funcionam.
- 01Adicionar um nó OllamaNo canvas, digite "/" e procure por "Ollama". Escolha "Ollama Chat Model" (em AI > Language Models).
- 02Criar uma credencialNo campo Credential, clique em "Create new". Base URL: http://host.docker.internal:11434 (do container Docker) ou http://localhost:11434 se o n8n estiver rodando nativamente. Sem chave API — é local.
- 03Testar a conexãon8n testa automaticamente e lista os modelos disponíveis. Se a lista estiver vazia, verifique com docker exec n8n curl http://host.docker.internal:11434/api/tags a partir do host.
- 04Escolher o modeloNo menu suspenso Model, selecione qwen3.5:9b (ou o modelo que você baixou). Mantenha Temperature no valor padrão de 0.7 e reduza para 0.2 para tarefas determinísticas (classificação, extração).
#3. Primeiro fluxo de trabalho: resumir um fluxo RSS
Caso típico: você acompanha 15 blogs de tecnologia e quer um resumo diário em francês sem ler tudo. O n8n recupera os novos artigos, o Ollama os resume e o resultado é enviado por e-mail ou gravado em um arquivo Markdown.
- 01Gatilho: Schedule TriggerConfigure-o para executar todos os dias às 7h. Modo Cron expression: 0 7 * * *.
- 02Recuperar o feed: RSS Feed Trigger ou RSS ReadURL do feed (ex.: https://blog.lemondeinformatique.fr/feed/). Ative "Return only new items" para não resumir os itens antigos novamente.
- 03Dividir se necessário: Split In BatchesSe o fluxo retornar 10 artigos, limite a 5 para evitar sobrecarregar o Ollama. Batch size: 1, para processar artigo por artigo.
- 04Chamar OllamaNó Ollama Chat Model com este prompt de sistema e o artigo como mensagem do usuário.
- 01Agrupar resumos: Merge ou CodeCombine as saídas artigo a artigo em um único corpo de e-mail. Um nó Code (JavaScript) com items.map(i => `**${i.json.title}**\n${i.json.response}`).join('\n\n') basta.
- 02Enviar: Send Email ou gravar um arquivoNó Email (SMTP) para seu endereço ou nó Write Binary File para /home/node/.n8n/daily-digest.md (persistido no volume do Docker).
#4. Fluxo de trabalho: tradução de e-mails recebidos
Caso típico: você recebe e-mails de fornecedores em inglês, alemão e espanhol. Você quer lê-los em francês sem o Google Translate (que coleta o conteúdo). O n8n monitora sua caixa de e-mails IMAP, o Ollama traduz, e o resultado vai para um marcador "Traduzido" ou para um rascunho de resposta.
- 01Gatilho: IMAP EmailConfigure suas credenciais IMAP (Gmail exige uma senha de aplicativo). Filtro: todos os e-mails não lidos da pasta INBOX. Polling a cada 10 minutos.
- 02Detectar o idioma: Ollama #1Primeira chamada ao Ollama com prompt de sistema: "Responda apenas com o código ISO 639-1 do idioma deste texto (fr, en, de, es...). Sem frases, apenas duas letras." Prompt: {{ $json.subject }} {{ $json.textPlain }}.
- 03Ramificar: nó IFCondição: {{ $json.response }} ≠ "fr". Se verdadeiro → traduzir. Se falso → ignorar (já está em francês).
- 04Traduzir: Ollama #2Prompt de sistema: "Traduza o texto seguinte para francês natural. Preserve a formatação (parágrafos, listas). Não comente, traduza diretamente." Prompt: o corpo do e-mail.
- 05Ação finalDuas opções: nó Gmail "Add Label" + inserção da tradução no início da mensagem via "Reply Draft", ou simplesmente envio de uma notificação pelo Slack/Telegram com a versão traduzida.
#5. Fluxo de trabalho: classificar os leads recebidos
Caso típico: um formulário de contato preenche uma base de dados Airtable / Notion / Postgres. Você quer classificar automaticamente cada lead: Hot / Warm / Cold, setor de atividade, urgência. O n8n monitora a base, o Ollama lê a mensagem em texto livre e escreve as tags estruturadas.
Esse fluxo utiliza o modo JSON do Ollama, que força a saída a seguir um esquema. Essencial sempre que se fala de dados estruturados.
- 01Trigger: Airtable/Postgres TriggerNo evento "New row in table Leads". Polling a cada 5 minutos, ou webhook se sua fonte permitir (mais responsivo).
- 02Chamada Ollama em modo JSONNó HTTP Request com método POST para http://host.docker.internal:11434/api/generate, com o corpo acima. A resposta chega em $json.response (string JSON).
- 03Fazer o parsing: nó Code ou SetJSON.parse($input.first().json.response) extrai temperature, secteur, urgence. Se a análise sintática falhar (modelo que alucina), tente novamente com a temperatura em 0.
- 04Escrever no CRMNó Airtable Update / Postgres Update com os três campos. Opcional: se temperature = Hot e urgence ≥ 4, acionar um nó Slack que envie uma notificação para commercial@boite.fr.
#Dicas e solução de problemas
- n8n não consegue se conectar ao Ollama
- Erro ECONNREFUSED em localhost:11434? Você está dentro do Docker — use host.docker.internal. No Linux, verifique se extra_hosts está presente no compose e se o Ollama está escutando em 0.0.0.0 (OLLAMA_HOST=0.0.0.0:11434).
- Workflow lento
- Ollama faz o carregamento a frio do modelo (5–15 segundos na primeira vez). Para mantê-lo carregado, execute em paralelo uma tarefa cron que faça ping em /api/generate a cada 4 minutos, ou aumente o tempo de permanência com OLLAMA_KEEP_ALIVE=30m.
- O modelo alucina na classificação
- Sempre usar format: "json" + um prompt de sistema que liste os valores permitidos. Se o 9B em Q4 continuar impreciso, passar para qwen3.5:9b-q8_0 melhora significativamente a robustez do JSON.
- Volumes Docker perdidos
- O workflow e as credenciais estão em ./n8n_data. Nunca remova esse diretório sem fazer backup. Exporte seus workflows em JSON pelo menu (Settings > Workflows > Download) para versionar no Git.
- Chamadas demais = saturação da VRAM
- Se um workflow disparar 20 chamadas ao Ollama em paralelo, a GPU fica saturada. Use Split In Batches com tamanho de lote 1 ou adicione OLLAMA_NUM_PARALLEL=1 para serializar as chamadas.
- Versões do n8n
- O n8n lança uma versão principal a cada ~10 dias. docker compose pull && docker compose up -d faz a atualização. O nó Ollama é estável desde a versão 1.18+.
#Para se aprofundar
Você tem um fluxo n8n + Ollama funcionando. Algumas sugestões de próximos passos:
- Conectar um RAG
- O guia de RAG com ChromaDB do site mostra como indexar seus PDFs e anotações. Você pode chamar esse pipeline RAG a partir do n8n por meio de um endpoint HTTP — seus workflows passam a usar o contexto da sua base de conhecimento.
- Otimizar o modelo
- Se seus fluxos de trabalho lidam com volume, leia o guia de quantização Q4/Q5/Q8: reduzir para Q4_K_M pode dividir a VRAM por dois sem perda visível em classificação.
- Escolher um GPU dedicado
- Se n8n + Ollama precisam rodar 24/7 em uma máquina, o guia de compra de GPU do site indica os patamares de 12/16/24 GB conforme os fluxos de trabalho que você pretende executar.
Um comentário, um erro ou uma observação? Avise-nos; isso ajuda a melhorar o guia para todos.