Модуль 3.3 · Урок 3
Урок 3: Автоматизация: cron, webhooks, Gmail
Содержание
- Чему вы научитесь
- Cron-задачи
- Формат cron-выражений
- Создание cron-задачи
- Что происходит
- Примеры cron-задач
- Управление cron-задачами
- Webhooks
- Создание webhook
- Как это работает
- URL для внешнего доступа
- Безопасность webhooks
- Примеры webhook-сценариев
- Gmail Pub/Sub
- Как это работает
- Настройка
- Правила обработки
- Пример сценария
- Построение автоматических сценариев
- Сценарий 1: Утренний дайджест
- Сценарий 2: Мониторинг конкурентов
- Сценарий 3: RSS-мониторинг
- Мониторинг и отладка
- Просмотр истории
- Логи
- Ручной запуск для тестирования
- Попробуйте сами
- Ключевые выводы
- Следующий модуль
Чему вы научитесь
- Создавать cron-задачи для регулярного выполнения действий
- Настраивать webhooks для реакции на внешние события
- Интегрировать Gmail через Pub/Sub для автоматической обработки почты
- Строить автоматические сценарии (workflows)
- Мониторить и отлаживать автоматизации
Cron-задачи
Cron — это планировщик задач. Вы указываете расписание, и OpenClaw выполняет задачу автоматически в заданное время.
Формат cron-выражений
┌──── минуты (0-59)
│ ┌──── часы (0-23)
│ │ ┌──── день месяца (1-31)
│ │ │ ┌──── месяц (1-12)
│ │ │ │ ┌──── день недели (0-7, 0 и 7 = воскресенье)
│ │ │ │ │
* * * * *
Примеры:
| Выражение | Когда |
|---|---|
0 8 * * * | Каждый день в 08:00 |
0 9 * * 1-5 | Понедельник-пятница в 09:00 |
*/30 * * * * | Каждые 30 минут |
0 0 1 * * | Первый день каждого месяца в полночь |
0 20 * * 5 | Каждую пятницу в 20:00 |
Создание cron-задачи
В ~/.openclaw/openclaw.json:
{
"cron": [
{
"name": "morning-briefing",
"schedule": "0 8 * * *",
"prompt": "Проверь мою почту, календарь на сегодня и последние новости по AI. Отправь мне сводку в Telegram.",
"agent": "default",
"channel": "telegram",
"peer": "123456789"
}
]
}
Что происходит
- В 08:00 каждое утро OpenClaw просыпается.
- Выполняет промпт как будто вы отправили сообщение.
- Агент использует доступные инструменты (Gmail, Calendar, Search).
- Результат отправляется в указанный канал (Telegram) указанному пользователю (peer).
Примеры cron-задач
Утренний брифинг:
{
"name": "morning-briefing",
"schedule": "0 8 * * 1-5",
"prompt": "Доброе утро! Покажи: 1) непрочитанные письма (резюме) 2) встречи на сегодня 3) погоду в Москве",
"agent": "default",
"channel": "telegram",
"peer": "123456789"
}
Еженедельный отчёт:
{
"name": "weekly-report",
"schedule": "0 18 * * 5",
"prompt": "Подведи итоги недели: сколько сессий было, сколько токенов использовано, какие задачи выполнялись чаще всего.",
"agent": "default",
"channel": "telegram",
"peer": "123456789"
}
Мониторинг сервера:
{
"name": "server-check",
"schedule": "*/30 * * * *",
"prompt": "Проверь использование CPU и RAM. Если CPU > 80% или RAM > 90%, напиши предупреждение.",
"agent": "default",
"channel": "telegram",
"peer": "123456789",
"silent": true
}
Чтобы бот отправлял сообщение только при выполнении условия, добавьте в промпт инструкцию: «Отправь сообщение только если CPU > 80% или RAM > 90%, иначе ничего не делай». Либо используйте логику агента для условной доставки.
Управление cron-задачами
# Список всех cron-задач
openclaw cron list
# Запустить задачу вручную (для тестирования)
openclaw cron run morning-briefing
# Временно отключить
openclaw cron edit morning-briefing --no-deliver
# Включить обратно
openclaw cron edit morning-briefing --announce
# Посмотреть историю выполнения
openclaw cron runs --id morning-briefing --limit 10
Webhooks
Webhook — это URL, на который внешний сервис отправляет HTTP-запрос. OpenClaw может принимать webhooks и выполнять действия в ответ.
Создание webhook
{
"webhooks": [
{
"name": "github-pr",
"path": "/webhook/github-pr",
"secret": "my-webhook-secret-123",
"prompt": "Получен webhook от GitHub. Данные: {{payload}}. Сделай краткое резюме PR и отправь мне в Telegram.",
"agent": "default",
"channel": "telegram",
"peer": "123456789"
}
]
}
Как это работает
- OpenClaw создаёт endpoint:
http://localhost:18789/webhook/github-pr - Вы настраиваете GitHub webhook на этот URL
- Когда создаётся PR, GitHub отправляет данные на этот URL
- OpenClaw получает payload и выполняет промпт
- Результат отправляется в Telegram
URL для внешнего доступа
Если OpenClaw работает на VPS с публичным IP:
https://your-vps.com:18789/webhook/github-pr
Если OpenClaw работает локально, используйте туннель (ngrok, cloudflared):
# Через cloudflared
cloudflared tunnel --url http://localhost:18789
Безопасность webhooks
- Всегда используйте
secretдля верификации запросов - Не открывайте Gateway порт напрямую в интернет без HTTPS
- Проверяйте
User-AgentиX-Hub-Signatureдля GitHub webhooks
Примеры webhook-сценариев
Оповещение о новом issue на GitHub:
{
"name": "github-issue",
"path": "/webhook/github-issue",
"secret": "secret123",
"prompt": "Новый issue на GitHub: {{payload.issue.title}}. Автор: {{payload.issue.user.login}}. Описание: {{payload.issue.body}}. Классифицируй по приоритету (высокий/средний/низкий) и отправь мне.",
"agent": "default",
"channel": "telegram",
"peer": "123456789"
}
Оповещение о деплое:
{
"name": "deploy-notification",
"path": "/webhook/deploy",
"prompt": "Деплой завершён. Детали: {{payload}}. Проверь, что сайт доступен (curl), и сообщи результат.",
"agent": "default",
"channel": "telegram",
"peer": "123456789"
}
Gmail Pub/Sub
OpenClaw поддерживает интеграцию с Gmail через Google Pub/Sub с помощью навыков (skills). Это позволяет обрабатывать входящие письма в реальном времени.
Как это работает
- Gmail отправляет уведомление в Google Pub/Sub при получении нового письма
- OpenClaw подписывается на Pub/Sub через навык (например,
gogили специализированный Pub/Sub webhook) и получает уведомления - При получении уведомления агент читает письмо и выполняет действие согласно правилам
Настройка
Настройка включает создание Google Cloud проекта, topic и subscription, а затем подключение через навык или webhook-обработчик. Конкретная структура конфигурации зависит от используемого навыка — см. документацию конкретного skill.
Правила обработки
| Правило | Что делает |
|---|---|
summarize | Агент делает резюме письма и отправляет в канал |
notify | Агент отправляет уведомление с темой и отправителем |
reply | Агент генерирует черновик ответа |
forward | Агент пересылает письмо |
label | Агент классифицирует и добавляет ярлык |
Пример сценария
Вы получаете письмо от клиента с темой “Коммерческое предложение”. OpenClaw:
- Читает письмо
- Определяет, что это от клиента (по домену)
- Делает резюме в 3 пунктах
- Отправляет вам в Telegram: “Новое КП от client@company.com: [резюме]”
- Создаёт черновик ответа
Всё это — без вашего участия.
Построение автоматических сценариев
Настоящая сила автоматизации — в комбинации cron, webhooks и навыков.
Сценарий 1: Утренний дайджест
Каждое утро в 8:00:
- Проверить Gmail — резюме непрочитанных
- Проверить Calendar — встречи на сегодня
- Поиск новостей по заданным темам
- Проверить погоду
- Собрать всё в один дайджест
- Отправить в Telegram
{
"cron": [
{
"name": "daily-digest",
"schedule": "0 8 * * *",
"prompt": "Собери утренний дайджест:\n1. Непрочитанные письма (резюме каждого)\n2. Встречи на сегодня (время, участники, тема)\n3. Новости по темам: AI, TypeScript, open source\n4. Погода в Москве на сегодня\n\nОформи красиво, с заголовками. Отправь в Telegram.",
"agent": "default",
"channel": "telegram",
"peer": "123456789"
}
]
}
Сценарий 2: Мониторинг конкурентов
Каждую пятницу в 17:00:
- Поиск упоминаний конкурентов в интернете
- Анализ их обновлений (GitHub, блоги)
- Сравнительный отчёт
- Отправка в Slack
{
"name": "competitor-analysis",
"schedule": "0 17 * * 5",
"prompt": "Проведи анализ конкурентов за неделю:\n- Competitor A: новости, обновления, блог-посты\n- Competitor B: то же\n- Competitor C: то же\n\nСделай таблицу: что нового у каждого. Выдели ключевые угрозы и возможности.",
"agent": "work",
"channel": "slack",
"peer": "#marketing"
}
Сценарий 3: RSS-мониторинг
Каждые 2 часа:
- Проверить RSS-ленты
- Отфильтровать по ключевым словам
- Отправить новые статьи
{
"name": "rss-monitor",
"schedule": "0 */2 * * *",
"prompt": "Проверь RSS-ленты:\n- https://hnrss.org/frontpage\n- https://dev.to/feed\n\nНайди статьи со словами: AI, agents, LLM, automation.\nЕсли есть новые (за последние 2 часа), отправь заголовок + ссылку.",
"agent": "default",
"channel": "telegram",
"peer": "123456789",
"silent": true
}
Мониторинг и отладка
Просмотр истории
# Все выполненные автоматизации
openclaw cron history
# Конкретная задача
openclaw cron history daily-digest --limit 7
Логи
# Логи в реальном времени (фильтр по cron)
openclaw logs -f --filter cron
# Логи webhooks
openclaw logs -f --filter webhook
Ручной запуск для тестирования
Перед тем как ставить задачу на расписание, протестируйте её вручную:
# Запустить cron-задачу без ожидания расписания
openclaw cron run daily-digest
# Симулировать webhook
curl -X POST http://localhost:18789/webhook/github-pr \
-H "Content-Type: application/json" \
-d '{"action":"opened","pull_request":{"title":"Test PR"}}'
Попробуйте сами
- Создайте первую cron-задачу. Добавьте задачу, которая каждый час проверяет время и отправляет его в Telegram (для проверки работоспособности):
{
"cron": [
{
"name": "hourly-ping",
"schedule": "0 * * * *",
"prompt": "Скажи текущее время и дату. Одно предложение.",
"agent": "default",
"channel": "telegram",
"peer": "ваш-telegram-id"
}
]
}
- Протестируйте вручную:
openclaw cron run hourly-ping
-
Создайте полезную автоматизацию. Выберите один из сценариев:
- Утренний дайджест (если подключена почта)
- Мониторинг сервера (если OpenClaw на VPS)
- RSS-мониторинг (для новостей)
-
Проверьте историю через 24 часа:
openclaw cron history --limit 10
Ключевые выводы
- Cron-задачи выполняют действия по расписанию — от ежедневных дайджестов до мониторинга каждые 30 минут
- Webhooks позволяют реагировать на внешние события (GitHub, деплой, платёжные системы)
- Gmail Pub/Sub обрабатывает входящие письма в реальном времени с правилами маршрутизации
- Сила автоматизации — в комбинации: cron + навыки + каналы доставки
- Для условной доставки добавьте в промпт инструкцию «отправь только если…» или используйте логику агента
- Всегда тестируйте автоматизации вручную перед включением расписания
Следующий модуль
Модуль 3.4: Мультиагентная архитектура — создадим несколько изолированных агентов, настроим routing между каналами и построим полноценную систему.