튜토리얼 카테고리 Skills 소개
ZH EN JA KO
고급 활용

OpenClaw 예약 메시지 및 자동화 워크플로우

· 12 분 소요

소개

AI Agent는 단순히 사용자 메시지를 수동적으로 기다리는 것에 그치지 않아야 합니다 — 선제적으로 행동할 수 있습니다. OpenClaw에는 cron 표현식 기반 스케줄링을 지원하는 내장 스케줄링 시스템이 있어, AI Agent가 지정된 시간에 자동으로 작업을 실행하거나, 메시지를 보내거나, 워크플로우를 트리거할 수 있습니다. 일일 날씨 보고서부터 정기적인 데이터 요약까지, 예약 메시지 기능은 Agent의 활용 범위를 크게 확장합니다.

이 문서에서는 예약 메시지 설정과 자동화 워크플로우 구축 기법을 다룹니다.

기본 예약 메시지

예약 작업 설정

openclaw.json5에서 Agent에 예약 작업을 추가합니다:

{
  agents: {
    "my-agent": {
      schedules: [
        {
          // 작업 이름
          name: "morning-greeting",
          // Cron 표현식 (분 시 일 월 요일)
          cron: "0 8 * * *",  // 매일 오전 8시
          // 시간대
          timezone: "Asia/Shanghai",
          // 대상 채널
          target: {
            platform: "telegram",
            chatId: "123456789"
          },
          // AI에 전송되는 메시지 (AI가 이를 기반으로 응답 생성)
          prompt: "오늘 날짜와 영감을 주는 명언을 포함한 아침 인사를 생성해 주세요."
        }
      ]
    }
  }
}

Cron 표현식 빠른 참조

표현식 의미
0 8 * * * 매일 08:00
0 8 * * 1-5 평일 08:00
*/30 * * * * 30분마다
0 9,18 * * * 매일 09:00과 18:00
0 0 1 * * 매월 1일 00:00
0 0 * * 0 매주 일요일 00:00
0 */4 * * * 4시간마다

일반적인 자동화 시나리오

시나리오 1: 일일 날씨 보고서

{
  schedules: [{
    name: "weather-report",
    cron: "0 7 * * *",
    timezone: "Asia/Shanghai",
    target: {
      platform: "telegram",
      chatId: "group_weather_123"
    },
    prompt: "날씨 도구를 사용하여 베이징, 상하이, 광저우의 오늘 날씨를 확인한 후 날씨 보고서를 생성해 주세요.",
    // 사용할 도구 지정
    tools: ["weather"],
    // 응답 형식
    format: "markdown"
  }]
}

시나리오 2: 평일 스탠드업 알림

{
  schedules: [{
    name: "standup-reminder",
    cron: "0 9 * * 1-5",
    timezone: "Asia/Shanghai",
    target: {
      platform: "slack",
      channelId: "#dev-team"
    },
    // 정적 메시지 (AI 처리 없음)
    staticMessage: "좋은 아침이에요, 팀! 스탠드업 시간입니다. 다음을 답변해 주세요:\n1. 어제 완료한 것\n2. 오늘 계획\n3. 차단 요소",
    // 전체 멘션
    mentionAll: true
  }]
}

시나리오 3: 정기 데이터 요약

{
  schedules: [{
    name: "weekly-summary",
    cron: "0 17 * * 5",  // 매주 금요일 오후 5시
    timezone: "Asia/Shanghai",
    target: {
      platform: "discord",
      channelId: "analytics-channel"
    },
    prompt: "이번 주 사용자 데이터를 조회하고 신규 사용자, 활성 사용자, 주요 메트릭 변화를 포함한 주간 요약 보고서를 생성해 주세요.",
    tools: ["sqlite", "http-fetch"]
  }]
}

시나리오 4: RSS 콘텐츠 푸시

{
  schedules: [{
    name: "rss-digest",
    cron: "0 12 * * *",  // 매일 정오
    target: {
      platform: "telegram",
      chatId: "tech_news_123"
    },
    prompt: "다음 RSS 피드에서 최신 10개 기사를 가져와 AI 관련 콘텐츠를 필터링한 후 요약 다이제스트를 생성해 주세요.",
    tools: ["rss", "http-fetch"],
    // 프롬프트에 전달되는 매개변수
    params: {
      feeds: [
        "https://news.ycombinator.com/rss",
        "https://techcrunch.com/feed/"
      ]
    }
  }]
}

워크플로우 체인 실행

OpenClaw은 여러 예약 작업을 워크플로우로 체인하여, 한 작업의 결과를 다음 작업에 전달하는 것을 지원합니다.

워크플로우 설정

{
  agents: {
    "workflow-agent": {
      workflows: {
        "daily-ops": {
          // 워크플로우 트리거 시간
          cron: "0 9 * * 1-5",
          timezone: "Asia/Shanghai",
          // 단계 체인
          steps: [
            {
              name: "fetch-data",
              prompt: "데이터베이스에서 어제의 운영 데이터를 조회해 주세요",
              tools: ["sqlite"],
              // 출력을 변수로 저장
              outputVar: "dailyData"
            },
            {
              name: "analyze",
              prompt: "다음 운영 데이터를 분석하고 이상 메트릭을 식별해 주세요: {{dailyData}}",
              outputVar: "analysis"
            },
            {
              name: "report",
              prompt: "다음 분석을 기반으로 일일 운영 보고서를 생성해 주세요: {{analysis}}",
              // 대상 채널로 전송
              target: {
                platform: "slack",
                channelId: "#ops-daily"
              }
            }
          ],
          // 단계 실패 시 처리
          onError: {
            notify: {
              platform: "telegram",
              chatId: "admin_123",
              message: "워크플로우 daily-ops 실패: {{error}}"
            }
          }
        }
      }
    }
  }
}

조건부 분기

워크플로우 단계는 조건부 로직을 지원합니다:

{
  steps: [
    {
      name: "check-metrics",
      prompt: "핵심 시스템 메트릭이 정상인지 확인해 주세요",
      outputVar: "status"
    },
    {
      name: "alert",
      // 이전 단계 출력에 "anomaly"가 포함된 경우에만 실행
      condition: "{{status}} contains 'anomaly'",
      prompt: "이상 알림 보고서를 생성해 주세요: {{status}}",
      target: {
        platform: "telegram",
        chatId: "oncall_group"
      }
    },
    {
      name: "normal-log",
      condition: "{{status}} not contains 'anomaly'",
      staticMessage: "시스템 상태 점검을 통과했습니다.",
      target: {
        platform: "slack",
        channelId: "#monitoring"
      }
    }
  ]
}

작업 관리

명령줄 관리

# 모든 예약 작업 목록
openclaw schedules list

# 수동으로 작업 트리거 (cron 시간을 기다리지 않음)
openclaw schedules run morning-greeting

# 작업 일시 정지
openclaw schedules pause weekly-summary

# 작업 재개
openclaw schedules resume weekly-summary

# 작업 실행 이력 보기
openclaw schedules history morning-greeting --last 10

대시보드 관리

OpenClaw 웹 대시보드는 시각적 작업 관리 인터페이스를 제공합니다:

  • 모든 예약 작업의 상태 및 다음 실행 시간 보기
  • 수동으로 작업 실행 트리거
  • 실행 로그 및 출력 보기
  • 작업 일시 정지/재개/편집

오류 처리 및 재시도

{
  schedules: [{
    name: "critical-report",
    cron: "0 9 * * *",
    // 재시도 설정
    retry: {
      maxAttempts: 3,
      backoffMs: 5000,  // 재시도 간격
      // 모든 재시도 실패 후 알림
      onFailure: {
        platform: "telegram",
        chatId: "admin_123",
        message: "예약 작업 critical-report가 3회 연속 실패했습니다"
      }
    },
    // 타임아웃 설정 (초)
    timeout: 120,
    // ...기타 설정
  }]
}

외부 Cron과의 통합

기존 cron 시스템(예: Linux crontab 또는 Kubernetes CronJob)이 있다면 API를 통해 OpenClaw 작업을 트리거할 수 있습니다:

# 시스템 crontab에 설정
0 8 * * * curl -X POST http://localhost:3000/api/v1/schedules/morning-greeting/run \
  -H "Authorization: Bearer sk-openclaw-xxx"

이 방법으로 기존 cron 인프라를 활용하면서 OpenClaw의 작업 오케스트레이션 기능의 이점을 얻을 수 있습니다.

모범 사례

  1. 시간대 명시: 서버 시간대 설정으로 인한 혼란을 방지하기 위해 항상 timezone을 명시적으로 지정
  2. 오류 알림: 중요한 작업에 대해 실패 알림을 설정하여 조용한 실패 방지
  3. 실행 시간대: 시스템 피크 시간대에 대량의 작업 예약을 피함
  4. 멱등성 설계: 재시도로 인한 중복 작업을 방지하기 위해 안전하게 재실행 가능하도록 설계
  5. 로그 검토: 작업이 올바르게 실행되고 있는지 확인하기 위해 정기적으로 실행 이력 확인

요약

OpenClaw의 예약 메시지 및 자동화 워크플로우 기능은 AI Agent를 수동 응답에서 능동적 서비스로 업그레이드합니다. cron 스케줄링, 워크플로우 체인, 조건부 분기, 오류 처리를 통해 완전한 자동화 파이프라인을 구축할 수 있습니다 — 간단한 정시 알림부터 복잡한 다단계 데이터 처리 워크플로우까지, OpenClaw이 모두 처리합니다.

OpenClaw는 무료 오픈소스 개인 AI 어시스턴트로, WhatsApp, Telegram, Discord 등 다양한 플랫폼을 지원합니다