Volver

14. Automatización y tareas programadas en OpenClaw: Cron, Webhook y Gmail

Este artículo presenta las capacidades de automatización de OpenClaw, incluyendo tareas programadas Cron, disparadores Webhook, integración Gmail Pub/Sub y más, permitiendo que tu asistente IA trabaje proactivamente en lugar de solo responder pasivamente.

Aplica a OpenClaw v2026.2 | Este artículo es adecuado para usuarios que quieren que su asistente IA trabaje proactivamente en lugar de solo responder.

TL;DR: Tareas programadas Cron: "cron": [{"id": "daily", "schedule": "0 9 * * *", "message": "..."}]. Disparador Webhook: POST /webhook/your-path. Gmail Pub/Sub para procesar correos automáticamente. Heartbeat para verificaciones proactivas. Ejemplos de configuración: informe matutino diario 0 8 * * 1-5, notificaciones CI vía webhook, filtros de correo con gmail pub/sub.

Descripción general de automatización

Tipos de automatización

Tipo Método de disparo Caso de uso
Cron Disparo por tiempo Informes diarios, verificaciones periódicas
Webhook Solicitud HTTP Integración con sistemas externos
Gmail Pub/Sub Nuevo correo Automatización de email
Heartbeat Verificación periódica Recordatorios proactivos, sugerencias

Diagrama de arquitectura

flowchart TB
    subgraph Triggers["Fuentes de disparo"]
        CRON[Cron programado]
        WH[Webhook HTTP]
        GM[Gmail Pub/Sub]
        HB[Heartbeat]
    end
    
    subgraph Gateway["Gateway"]
        SCHED[Programador]
        ROUTE[Router]
        AGENT[Agent]
    end
    
    subgraph Actions["Acciones"]
        MSG[Enviar mensaje]
        EXEC[Ejecutar tarea]
        NOTIF[Enviar notificación]
    end
    
    CRON --> SCHED
    WH --> ROUTE
    GM --> ROUTE
    HB --> SCHED
    
    SCHED --> AGENT
    ROUTE --> AGENT
    AGENT --> MSG
    AGENT --> EXEC
    AGENT --> NOTIF

Tareas programadas Cron

Expresiones Cron

┌───────────── minuto (0 - 59)
│ ┌───────────── hora (0 - 23)
│ │ ┌───────────── día del mes (1 - 31)
│ │ │ ┌───────────── mes (1 - 12)
│ │ │ │ ┌───────────── día de la semana (0 - 6, 0 = domingo)
│ │ │ │ │
* * * * *

Expresiones comunes

Expresión Descripción
0 9 * * * Todos los días a las 9:00
0 18 * * 1-5 Días laborables a las 18:00
*/30 * * * * Cada 30 minutos
0 0 1 * * El día 1 de cada mes a las 0:00
0 9,18 * * * Todos los días a las 9:00 y 18:00
0 9 * * 1 Cada lunes a las 9:00

Configurar tareas Cron

{
  "cron": [
    {
      "id": "daily-briefing",
      "schedule": "0 9 * * *",
      "session": "main",
      "message": "Por favor, dame la agenda y las tareas pendientes de hoy",
      "enabled": true
    },
    {
      "id": "weekly-summary",
      "schedule": "0 18 * * 5",
      "session": "main",
      "message": "Genera el resumen de trabajo de esta semana",
      "enabled": true
    },
    {
      "id": "health-check",
      "schedule": "*/15 * * * *",
      "session": "main",
      "message": "Verifica el estado del sistema y reporta cualquier anomalía",
      "enabled": true
    }
  ]
}

Campos de configuración Cron

Campo Tipo Descripción
id string Identificador único de la tarea
schedule string Expresión Cron
session string Sesión de destino
message string Mensaje a enviar
enabled boolean Si está habilitada
timezone string Zona horaria (predeterminada: zona del sistema)

Gestionar tareas Cron

# Listar todas las tareas
openclaw cron list

# Ejemplo de salida:
# ID               Schedule       Status    Last Run
# daily-briefing   0 9 * * *     enabled   2026-02-26 09:00
# weekly-summary   0 18 * * 5    enabled   2026-02-23 18:00
# health-check    */15 * * * *   enabled   2026-02-26 10:30

# Disparar tarea manualmente
openclaw cron run daily-briefing

# Habilitar/deshabilitar tarea
openclaw cron enable daily-briefing
openclaw cron disable daily-briefing

# Ver registros de la tarea
openclaw cron logs daily-briefing

Disparadores Webhook

Configurar Webhooks

{
  "webhooks": [
    {
      "id": "github-push",
      "path": "/webhook/github",
      "secret": "your-webhook-secret",
      "session": "main",
      "handler": "github-push"
    },
    {
      "id": "custom-alert",
      "path": "/webhook/alert",
      "secret": "your-webhook-secret",
      "session": "main",
      "message": "Alerta recibida: {{data.message}}"
    }
  ]
}

Endpoints Webhook

POST http://your-gateway:18789/webhook/github-push
POST http://your-gateway:18789/webhook/alert

Ejemplo de Webhook de GitHub

{
  "webhooks": [
    {
      "id": "github-push",
      "path": "/webhook/github",
      "secret": "${GITHUB_WEBHOOK_SECRET}",
      "session": "work",
      "handler": "github-push"
    }
  ]
}

Script del handler:

// ~/.openclaw/handlers/github-push.js
module.exports = async (payload, session) => {
  if (payload.ref === 'refs/heads/main') {
    const commits = payload.commits.map(c => c.message).join('\n- ');
    return `Nuevo push detectado:\n\nRama: main\nCommits:\n- ${commits}\n\n¿Necesitas que haga algo?`;
  }
  return null;
};

Procesamiento personalizado de Webhooks

{
  "webhooks": [
    {
      "id": "monitoring-alert",
      "path": "/webhook/alert",
      "methods": ["POST"],
      "session": "main",
      "message": "🚨 Notificación de alerta\n\nNivel: {{data.level}}\nServicio: {{data.service}}\nMensaje: {{data.message}}\nHora: {{data.timestamp}}"
    }
  ]
}

Enviar Webhook:

curl -X POST http://localhost:18789/webhook/alert \
  -H "Content-Type: application/json" \
  -H "X-Webhook-Secret: your-secret" \
  -d '{
    "level": "critical",
    "service": "api-server",
    "message": "Uso de CPU superior al 90%",
    "timestamp": "2026-02-26T10:30:00Z"
  }'

Seguridad de Webhooks

{
  "webhooks": [
    {
      "id": "secure-webhook",
      "path": "/webhook/secure",
      "secret": "your-secret-key",
      "signatureHeader": "X-Signature",
      "signatureAlgorithm": "sha256",
      "ipWhitelist": ["192.168.1.0/24"]
    }
  ]
}

Integración Gmail Pub/Sub

Configurar Gmail Pub/Sub

{
  "gmail": {
    "pubsub": {
      "enabled": true,
      "projectId": "your-project-id",
      "subscription": "gmail-subscription",
      "credentials": {
        "type": "service_account",
        "project_id": "your-project-id",
        "private_key_id": "...",
        "private_key": "...",
        "client_email": "..."
      },
      "filters": [
        {
          "from": "[email protected]",
          "session": "main",
          "message": "Correo importante recibido:\nRemitente: {{sender}}\nAsunto: {{subject}}"
        }
      ]
    }
  }
}

Configurar Gmail Pub/Sub

  1. Crear proyecto en Google Cloud
  2. Habilitar Gmail API
  3. Crear tema Pub/Sub
  4. Crear cuenta de servicio
  5. Configurar Gmail watch
# Configurar Gmail watch
openclaw gmail watch --email [email protected]

Filtros de Gmail

Condición de filtro Descripción
from Correo del remitente
to Correo del destinatario
subject Palabras clave en el asunto
hasAttachment Si tiene adjuntos
label Etiqueta de Gmail
{
  "filters": [
    {
      "from": "[email protected]",
      "session": "work",
      "message": "Notificación de GitHub recibida: {{subject}}"
    },
    {
      "from": "[email protected]",
      "hasAttachment": true,
      "session": "main",
      "message": "Documento de Stripe recibido, por favor procesar"
    }
  ]
}

Verificación proactiva Heartbeat

Configurar Heartbeat

{
  "heartbeat": {
    "enabled": true,
    "interval": 3600000,
    "session": "main",
    "message": "Heartbeat: por favor verifica si hay asuntos que requieran mi atención"
  }
}

Usos de Heartbeat

Uso Descripción
Recordatorios proactivos Recordar al usuario periódicamente
Verificación de estado Verificar estado de sistemas o servicios
Sugerencias de tareas Ofrecer sugerencias basadas en el contexto
Mantenimiento de contexto Mantener la sesión activa

Ejemplo de Heartbeat

{
  "heartbeat": {
    "enabled": true,
    "interval": 1800000,
    "conditions": [
      {
        "type": "time",
        "start": "09:00",
        "end": "18:00"
      },
      {
        "type": "active",
        "session": "main"
      }
    ],
    "message": "Según la hora actual, sugiero verificar lo siguiente:\n1. Tareas pendientes del día\n2. Recordatorios de correo\n3. Agenda programada"
  }
}

Ejemplos prácticos de automatización

Ejemplo uno: Informe matutino diario

{
  "cron": [
    {
      "id": "morning-briefing",
      "schedule": "0 8 * * 1-5",
      "session": "main",
      "message": "¡Buenos días! Por favor dame el informe matutino:\n1. Pronóstico del tiempo\n2. Agenda de hoy\n3. Tareas pendientes\n4. Resumen de correos importantes"
    }
  ]
}

Ejemplo dos: Notificaciones CI/CD

{
  "webhooks": [
    {
      "id": "ci-failure",
      "path": "/webhook/ci",
      "session": "dev",
      "message": "⚠️ Fallo en CI\n\nProyecto: {{data.repository}}\nRama: {{data.branch}}\nCommit: {{data.commit}}\nError: {{data.error}}\n\n¿Necesitas que analice el problema?"
    }
  ]
}

Ejemplo tres: Procesamiento automático de correos

{
  "gmail": {
    "pubsub": {
      "filters": [
        {
          "from": "[email protected]",
          "hasAttachment": true,
          "session": "main",
          "message": "Correo de factura recibido, procesando...\nPor favor guarda el adjunto en la carpeta de finanzas"
        }
      ]
    }
  }
}

Ejemplo cuatro: Monitoreo del sistema

{
  "cron": [
    {
      "id": "system-monitor",
      "schedule": "*/5 * * * *",
      "session": "main",
      "message": "Verificar estado del sistema",
      "skills": ["system-monitor"]
    }
  ]
}

Solución de problemas

La tarea Cron no se ejecuta

# Verificar estado de la tarea
openclaw cron list

# Verificar registros
openclaw logs --filter cron

# Disparar manualmente para probar
openclaw cron run task-id

El Webhook no responde

# Verificar endpoint del Webhook
curl -X POST http://localhost:18789/webhook/test \
  -H "Content-Type: application/json" \
  -d '{"test": true}'

# Ver registros
openclaw logs --filter webhook

Gmail Pub/Sub no funciona

# Verificar estado de la suscripción
openclaw gmail status

# Reconfigurar
openclaw gmail setup

# Verificar permisos
openclaw gmail check-permissions

Resumen

La automatización transforma OpenClaw de respuesta pasiva a trabajo proactivo:

  • Cron: Ejecutar tareas programadas
  • Webhook: Disparar por eventos externos
  • Gmail Pub/Sub: Automatización de correos
  • Heartbeat: Recordatorios proactivos y sugerencias

Registro de actualizaciones:

  • 2026-02-26: Publicación inicial

Navegación de la serie: