Ver todos los artículos
n8nrevisión de códigoOllamaautomatizaciónDevOps

Automatiza la revisión de código con n8n y Ollama en seis nodos

JG
Jacobo Gonzalez Jaspe
|
Este artículo también está en inglés:Automate Code Reviews with AI: n8n + Ollama Workflow Tutorial

Al terminar, cada pull request de tu repositorio recibirá en menos de un minuto una primera revisión escrita por un modelo de código que corre en tu propia máquina, publicada en Discord o Slack. Sin clave de API, sin coste por revisión y sin que el código salga de tu red. El workflow tiene seis nodos y funciona en un portátil con 8 GB de RAM libres.

Workflow de automatización con IA en n8n

Qué necesitas

  • n8n, instalado en tu servidor o en su nube. En local: docker run -d --name n8n -p 5678:5678 -v n8n_data:/home/node/.n8n --add-host=host.docker.internal:host-gateway docker.n8n.io/n8nio/n8n.
  • Ollama con un modelo de código: ollama pull qwen2.5-coder:7b (4,7 GB, cuantización Q4_K_M).
  • Un repositorio en GitHub o GitLab donde puedas crear webhooks.
  • Una URL de webhook de Discord o de Slack.
  • Treinta minutos.

Si n8n corre en Docker y Ollama en el anfitrión, la URL de Ollama dentro de n8n es http://host.docker.internal:11434 y Ollama debe arrancar con OLLAMA_HOST=0.0.0.0. En los ejemplos escribimos localhost por claridad.

Qué hace el workflow

  1. Recibe un webhook cuando se abre un PR.
  2. Descarga el diff (los cambios de código).
  3. Envía el diff a Ollama para que lo revise.
  4. Formatea la revisión como un mensaje legible.
  5. La publica en Discord (o Slack, o correo).
  6. Responde al webhook confirmando que la revisión se publicó.
flowchart LR
    GH["PR en GitHub"] --> WH["Webhook n8n"]
    WH --> DIFF["Obtener diff"]
    DIFF --> AI["Revisión con Ollama"]
    AI --> FMT["Formatear"]
    FMT --> DC["Aviso en Discord"]
    style GH fill:#1E293B,color:#FAFAFA
    style AI fill:#059669,color:#FAFAFA
    style DC fill:#F5A623,color:#0B1628

Paso 1: el disparador

Crea un workflow nuevo y añade un nodo Webhook: método POST, ruta pr-review. n8n te muestra una URL del tipo https://tu-n8n.com/webhook/pr-review.

Regístrala en GitHub: Settings → Webhooks → Add webhook, tipo de contenido application/json, evento “Pull requests”. Abre un PR de prueba y comprueba en n8n que llega un objeto con pull_request.title, pull_request.user.login y pull_request.diff_url. Si no llega nada, GitHub muestra el motivo en la pestaña “Recent Deliveries” del webhook.

Paso 2: obtener el diff

Añade un nodo Code que descargue el diff y recorte lo que no cabe en el contexto del modelo:

const pr = $input.first().json.pull_request;
const diff = await this.helpers.httpRequest({ url: pr.diff_url, method: 'GET' });
return [{ json: {
  title: pr.title,
  author: pr.user.login,
  url: pr.html_url,
  diff: String(diff).slice(0, 12000),   // ~3.000 tokens
} }];

Para repositorios privados, añade la cabecera Authorization: Bearer <token> a la petición. El recorte a 12.000 caracteres es deliberado: un modelo de 7B revisa mejor un diff acotado que uno enorme.

Paso 3: enviar a Ollama

Añade un nodo HTTP Request: método POST, URL http://localhost:11434/api/generate, cuerpo JSON. Como el diff contiene saltos de línea y comillas, construye el cuerpo con una expresión en lugar de pegarlo a mano:

{{ JSON.stringify({
  model: "qwen2.5-coder:7b",
  stream: false,
  options: { num_ctx: 8192, num_predict: 600 },
  prompt: "Revisa este diff de código. Céntrate en bugs, seguridad, rendimiento y estilo. Sé concreto y cita las líneas afectadas.\n\nDiff:\n" + $json.diff
}) }}

La respuesta de Ollama trae la revisión en el campo response. Si el nodo devuelve un error de conexión, ejecuta curl localhost:11434/api/tags desde la máquina de n8n: si no responde, es la red entre contenedores del apartado anterior.

Paso 4: formatear la revisión

Otro nodo Code:

const review = $input.first().json.response;
const pr = $('Obtener diff').first().json;
const texto = `**Revisión automática**\n**PR:** ${pr.title} (${pr.url})\n**Autor:** ${pr.author}\n\n${review}\n\n_Generada en local con Ollama + qwen2.5-coder:7b_`;
return [{ json: { content: texto.slice(0, 1900) } }];   // Discord admite 2.000 caracteres

Paso 5: publicar en Discord

Nodo HTTP Request: método POST, URL de tu webhook de Discord, cuerpo { "content": "{{ $json.content }}" }. Para Slack, el cuerpo es { "text": ... }.

Paso 6: responder al webhook

Nodo Respond to Webhook que devuelva { "status": "reviewed" }. Sin él, GitHub marca la entrega como fallida aunque todo haya funcionado.

Descarga el workflow

El workflow con estos seis nodos está listo para importar: ai_code_review.json. En n8n: Import from File. Sustituye la URL de Discord y, si hace falta, la dirección de Ollama.

Qué medimos

Medido el 09-09-2026 en nuestra estación (NVIDIA GB10, 128 GB de memoria unificada, compartida con otros servicios) con curl contra /api/generate.

ModeloTareaResultado
qwen2.5-coder:7bLeer un diff de 2.983 tokens1,7 s
qwen2.5-coder:7bGenerar 400 tokens de revisión, ventana de 8K17,2 tokens/s (unos 23 s)
qwen2.5-coder:7bGenerar 400 tokens, ventana por defecto33,2 tokens/s (12,0 s)
qwen2.5-coder:7bMemoria en GPU (ollama ps)4,7 GB

En un Mac mini M4 la generación de un modelo de 7B ronda los 35 tokens/s según Compute Market, así que una revisión tarda entre 15 y 30 segundos desde que se abre el PR.

Cuánto cuesta frente a la nube

Una revisión envía unos 3.000 tokens y recibe 400. Con los precios de OpenAI y de Anthropic de septiembre de 2026:

OpciónCoste por revisión20 PR al día, 22 días
Local (Ollama en un Mac mini)0~3,25 EUR de electricidad
GPT-5~0,008 $~3,50 $
Claude Sonnet 5~0,010 $~4,40 $

Seamos claros: a este volumen la nube también es barata. El motivo para hacerlo en local es que el código propietario no sale de tu red y que el revisor sigue funcionando cuando la API externa no.

Qué modelo elegir

ModeloPunto fuerteMejor paraTamaño en disco
qwen2.5-coder:7bSigue instrucciones, muchos lenguajesRevisión general4,7 GB (medido)
deepseek-r1:14bRazonamiento paso a pasoBugs lógicos complejos9,0 GB (medido)
phi4:14bRápido y concisoComprobaciones rápidas~9 GB (biblioteca de Ollama)
llama3.3:70bAnálisis profundoRevisiones de arquitectura~43 GB (biblioteca de Ollama)

Empieza por qwen2.5-coder:7b. Si tu máquina tiene 32 GB o más, prueba deepseek-r1:14b en diffs con lógica enrevesada. Un modelo de 7B detecta bien lo evidente (concatenar entrada de usuario en una consulta SQL, un None sin comprobar), pero no conoce tu arquitectura: trátalo como una primera pasada, no como sustituto de la revisión humana.

Siguientes pasos

Trabaja con nosotros

Montamos este tipo de automatizaciones en el hardware de nuestros clientes y las medimos antes de entregarlas. Si quieres que revisemos tu flujo de desarrollo, escríbenos o mira cómo trabajamos en consultoría.

Compartir: LinkedIn X
Newsletter

Acceda a recursos exclusivos

Suscríbase para desbloquear 230+ workflows, 43 agentes y 26 plantillas profesionales. Insights semanales sin spam.

Bonus: Checklist EU AI Act gratis al suscribirte
1x por semana Sin spam Cancela cuando quieras
EU AI Act en vigor — ¿Está su organización en cumplimiento?

Cuéntanos qué quieres ejecutar

Dinos qué quieres ejecutar y con qué presupuesto. Te decimos qué hardware necesitas, qué modelo encaja y qué puedes esperar de él — antes de que gastes nada.

Primera llamada gratis, 15 min Local-first: tus datos no salen de tu red Herramientas y guías abiertas

136 páginas de recursos gratuitos · 26 plantillas de compliance