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
- Crear proyecto en Google Cloud
- Habilitar Gmail API
- Crear tema Pub/Sub
- Crear cuenta de servicio
- 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:
- ← Anterior: Acceso móvil
- → Siguiente: Práctica: Construir un asistente de gestión del conocimiento personal