서문
OpenClaw는 단순한 챗봇이 아니라 자동화 워크플로우의 핵심이 될 수 있습니다. 예약 작업, 이벤트 트리거, 서드파티 통합을 통해 OpenClaw가 일일 보고서 요약, 콘텐츠 모니터링, 메시지 전달 등의 작업을 자동으로 수행하게 할 수 있습니다. 본 글에서는 다양한 실용적인 자동화 방안을 소개합니다.
1. 예약 작업 (Cron 통합)
1.1 기본 원리
cron으로 OpenClaw의 API를 정기적으로 호출하여 AI 작업을 예약 실행합니다:
# OpenClaw Gateway API 메시지 전송
curl -X POST http://localhost:18789/api/v1/send \
-H "Content-Type: application/json" \
-d '{
"channel": "telegram",
"chatId": "YOUR_CHAT_ID",
"message": "오늘의 업무 요약을 생성해 주세요"
}'
1.2 매일 아침 뉴스 브리핑 발송
매일 아침 8시에 뉴스 요약을 발송하는 예약 작업을 만듭니다:
#!/bin/bash
# /usr/local/bin/openclaw-morning-brief.sh
API_URL="http://localhost:18789/api/v1/chat"
CHAT_ID="YOUR_TELEGRAM_CHAT_ID"
# OpenClaw에 아침 뉴스 브리핑 생성 요청
RESPONSE=$(curl -sf -X POST "$API_URL" \
-H "Content-Type: application/json" \
-d '{
"channel": "telegram",
"chatId": "'"$CHAT_ID"'",
"message": "오늘 날짜를 기준으로 다음 내용을 포함하는 아침 브리핑을 생성해 주세요: 1. 오늘은 어떤 날인지 2. 날씨 알림 3. 할 일 목록 리뷰 4. 명언 한마디",
"systemPrompt": "당신은 전문적인 일일 브리핑 어시스턴트입니다. 응답은 간결하고 체계적으로 하며, 이모지를 사용하여 가독성을 높여 주세요."
}')
echo "[$(date)] 아침 브리핑 발송 완료: $RESPONSE" >> /var/log/openclaw-cron.log
# cron 예약 작업 설정
chmod +x /usr/local/bin/openclaw-morning-brief.sh
crontab -e
# 다음 줄 추가 (매일 아침 8:00 실행)
# 0 8 * * * /usr/local/bin/openclaw-morning-brief.sh
1.3 정기 시스템 점검 보고서
#!/bin/bash
# /usr/local/bin/openclaw-system-report.sh
# 시스템 정보 수집
DISK_USAGE=$(df -h / | tail -1 | awk '{print $5}')
MEMORY_USAGE=$(free -m | awk 'NR==2{printf "%.1f%%", $3*100/$2}')
CPU_LOAD=$(uptime | awk -F'load average: ' '{print $2}')
OPENCLAW_STATUS=$(curl -sf http://localhost:18789/health | jq -r '.status')
UPTIME=$(uptime -p)
# 보고서 내용 구성
REPORT="서버 점검 보고서:
- 실행 시간: $UPTIME
- CPU 부하: $CPU_LOAD
- 메모리 사용률: $MEMORY_USAGE
- 디스크 사용률: $DISK_USAGE
- OpenClaw 상태: $OPENCLAW_STATUS
위 데이터를 분석하여 이상 지표가 있으면 최적화 방안을 제안해 주세요."
# 관리자에게 전송
curl -sf -X POST http://localhost:18789/api/v1/send \
-H "Content-Type: application/json" \
-d '{
"channel": "telegram",
"chatId": "ADMIN_CHAT_ID",
"message": "'"$(echo "$REPORT" | sed 's/"/\\"/g')"'"
}'
# 매일 밤 22:00에 점검 보고서 생성
# 0 22 * * * /usr/local/bin/openclaw-system-report.sh
2. 이벤트 트리거 방식의 워크플로우
2.1 파일 변경 기반 트리거
특정 디렉토리를 모니터링하여 새 파일이 있으면 자동 처리합니다:
#!/bin/bash
# /usr/local/bin/openclaw-file-watcher.sh
# inotifywait으로 파일 변경 모니터링
WATCH_DIR="/home/user/incoming-docs"
API_URL="http://localhost:18789/api/v1/chat"
inotifywait -m -e create "$WATCH_DIR" --format '%f' | while read filename; do
echo "[$(date)] 새 파일 감지: $filename"
# 파일 내용 읽기 (크기 제한)
CONTENT=$(head -c 5000 "$WATCH_DIR/$filename")
# OpenClaw에 처리 요청
curl -sf -X POST "$API_URL" \
-H "Content-Type: application/json" \
-d '{
"channel": "telegram",
"chatId": "ADMIN_CHAT_ID",
"message": "새 파일 '"$filename"'을(를) 수신했습니다. 주요 내용을 요약해 주세요:\n\n'"$(echo "$CONTENT" | jq -Rs .)"'"
}'
done
2.2 로그 키워드 기반 트리거
시스템 로그의 이상 항목을 모니터링하고 자동으로 알림 및 분석합니다:
#!/bin/bash
# /usr/local/bin/openclaw-log-monitor.sh
LOG_FILE="/var/log/syslog"
KEYWORDS="error|critical|failure|out of memory"
tail -F "$LOG_FILE" | grep --line-buffered -iE "$KEYWORDS" | while read logline; do
# 알림 폭주 방지: 같은 분 내에 최대 1회 전송
CURRENT_MINUTE=$(date +%Y%m%d%H%M)
if [ "$CURRENT_MINUTE" != "$LAST_ALERT_MINUTE" ]; then
curl -sf -X POST http://localhost:18789/api/v1/send \
-H "Content-Type: application/json" \
-d '{
"channel": "telegram",
"chatId": "ADMIN_CHAT_ID",
"message": "⚠️ 시스템 로그 이상:\n'"$(echo "$logline" | head -c 500)"'\n\n가능한 원인과 권장 처리 방법을 분석해 주세요."
}'
LAST_ALERT_MINUTE="$CURRENT_MINUTE"
fi
done
3. Webhook 수신기
3.1 OpenClaw 내장 Webhook 지원
OpenClaw Gateway는 외부 Webhook을 수신하여 해당하는 동작을 트리거할 수 있습니다:
// ~/.config/openclaw/openclaw.json5
{
"webhooks": {
"enabled": true,
"port": 18789,
"endpoints": {
"/webhook/github": {
"secret": "your-webhook-secret",
"action": "notify",
"channel": "telegram",
"chatId": "GROUP_CHAT_ID",
"template": "GitHub 이벤트: {{event}} - {{payload.action}}"
},
"/webhook/custom": {
"action": "process",
"handler": "custom-webhook-skill"
}
}
}
}
3.2 GitHub Webhook 통합
GitHub 리포지토리에 Webhook을 설정하면 OpenClaw가 푸시 알림을 수신할 수 있습니다:
# Webhook 수신 테스트
curl -X POST http://localhost:18789/webhook/github \
-H "Content-Type: application/json" \
-H "X-Hub-Signature-256: sha256=..." \
-d '{
"action": "opened",
"pull_request": {
"title": "Fix login bug",
"body": "Fixes the timeout issue on login page",
"user": {"login": "developer1"}
}
}'
3.3 커스텀 Webhook 스킬
Webhook을 처리하는 스킬 파일을 생성합니다:
<!-- ~/.openclaw/skills/webhook-handler.SKILL.md -->
# Webhook Handler
외부 Webhook 알림을 수신하면 다음을 수행해야 합니다:
1. Webhook 내용을 파싱
2. 핵심 정보를 추출
3. 간결한 한국어로 요약
4. 긴급 이벤트인 경우 "긴급"으로 표시
## 지원하는 Webhook 유형
- GitHub (PR, Issue, Push)
- 모니터링 알림 (서버 상태)
- 커스텀 비즈니스 이벤트
4. n8n 통합
n8n은 강력한 오픈소스 워크플로우 자동화 도구로, OpenClaw와 깊이 있게 통합할 수 있습니다.
4.1 n8n 설치
# Docker로 n8n 설치
docker run -d \
--name n8n \
--restart=always \
-p 5678:5678 \
-v n8n_data:/home/node/.n8n \
n8nio/n8n
4.2 n8n에서 OpenClaw를 호출하는 워크플로우
n8n에서 HTTP Request 노드로 OpenClaw에 연결합니다:
{
"nodes": [
{
"name": "Schedule Trigger",
"type": "n8n-nodes-base.scheduleTrigger",
"parameters": {
"rule": {
"interval": [{"field": "hours", "hoursInterval": 1}]
}
}
},
{
"name": "Call OpenClaw",
"type": "n8n-nodes-base.httpRequest",
"parameters": {
"url": "http://localhost:18789/api/v1/chat",
"method": "POST",
"body": {
"message": "최근 1시간의 시스템 상태를 점검하고 보고서를 생성해 주세요",
"channel": "internal"
}
}
},
{
"name": "Send to Slack",
"type": "n8n-nodes-base.slack",
"parameters": {
"channel": "#ops-alerts",
"text": "="
}
}
]
}
4.3 일반적인 n8n + OpenClaw 워크플로우
| 워크플로우 | 트리거 방식 | 설명 |
|---|---|---|
| 이메일 요약 | 새 이메일 수신 | AI로 이메일 핵심 내용을 요약하여 푸시 |
| RSS 모니터링 | 정기 폴링 | RSS를 모니터링하고 새 글이 있으면 요약 생성 |
| 폼 처리 | Webhook | 폼 제출 수신 후 AI 분석 및 응답 |
| 데이터 보고서 | 매일 정기 | 데이터베이스 조회 후 일일 보고서 생성 |
| 고객 서비스 분류 | 메시지 수신 | AI가 문의 유형을 판별하고 담당자 배정 |
5. Make (Integromat) 통합
Make는 워크플로우를 구축하기 위한 더 직관적인 시각적 인터페이스를 제공합니다.
5.1 OpenClaw API 모듈 생성
Make에서 HTTP 모듈을 사용하여 OpenClaw에 연결합니다:
트리거 (Schedule/Webhook)
↓
HTTP 모듈 → POST http://your-server:18789/api/v1/chat
↓
응답 파싱 (JSON Parse)
↓
결과 전송 (Email/Slack/Telegram)
6. 실용적인 워크플로우 예시
6.1 자동화된 일일 보고서 요약
매일 오후 6시에 당일 모든 채널의 대화를 자동으로 요약하여 일일 보고서를 생성합니다:
#!/bin/bash
# /usr/local/bin/openclaw-daily-summary.sh
# 당일 대화 통계 가져오기
STATS=$(curl -sf http://localhost:18789/api/v1/stats/today)
# OpenClaw에 요약 생성 요청
curl -sf -X POST http://localhost:18789/api/v1/chat \
-H "Content-Type: application/json" \
-d '{
"channel": "telegram",
"chatId": "ADMIN_CHAT_ID",
"message": "다음 오늘 통계 데이터를 기반으로 일일 보고서 요약을 생성해 주세요:\n\n'"$STATS"'\n\n형식 요구 사항: 1.전체 개요 2.인기 주제 3.주의 사항",
"systemPrompt": "당신은 전문 데이터 분석가로, 채팅 데이터에서 유용한 인사이트를 추출하는 것을 잘합니다."
}'
6.2 콘텐츠 모니터링 및 알림
특정 웹사이트의 콘텐츠 변경을 모니터링하고 업데이트가 발견되면 사용자에게 알립니다:
#!/bin/bash
# /usr/local/bin/openclaw-content-monitor.sh
URLS=(
"https://example.com/api/announcements"
"https://status.anthropic.com/api/v2/summary.json"
)
CACHE_DIR="/tmp/openclaw-monitor"
mkdir -p "$CACHE_DIR"
for url in "${URLS[@]}"; do
HASH_FILE="$CACHE_DIR/$(echo "$url" | md5sum | cut -d' ' -f1)"
CURRENT_CONTENT=$(curl -sf "$url")
CURRENT_HASH=$(echo "$CURRENT_CONTENT" | md5sum | cut -d' ' -f1)
if [ -f "$HASH_FILE" ]; then
OLD_HASH=$(cat "$HASH_FILE")
if [ "$CURRENT_HASH" != "$OLD_HASH" ]; then
echo "[$(date)] 콘텐츠 변경 감지: $url"
# OpenClaw에 변경 분석 알림
curl -sf -X POST http://localhost:18789/api/v1/send \
-H "Content-Type: application/json" \
-d '{
"channel": "telegram",
"chatId": "ADMIN_CHAT_ID",
"message": "콘텐츠 변경 감지:\nURL: '"$url"'\n\n새 콘텐츠 요약:\n'"$(echo "$CURRENT_CONTENT" | head -c 2000)"'"
}'
fi
fi
echo "$CURRENT_HASH" > "$HASH_FILE"
done
# 30분마다 확인
# */30 * * * * /usr/local/bin/openclaw-content-monitor.sh
6.3 다채널 메시지 동기화
한 채널의 중요 메시지를 다른 채널로 자동 전달합니다:
// ~/.config/openclaw/openclaw.json5
{
"automation": {
"messageForwarding": {
"rules": [
{
"from": {"channel": "telegram", "chatId": "GROUP_A"},
"to": [
{"channel": "discord", "chatId": "CHANNEL_ID"},
{"channel": "slack", "chatId": "#general"}
],
"filter": {
"keywords": ["공지", "중요", "긴급"],
"fromUsers": ["admin"]
}
}
]
}
}
}
7. 워크플로우 디버깅 팁
7.1 로그 확인
# 자동화 관련 로그 확인
openclaw logs | grep -i "automation\|webhook\|cron\|schedule"
# API 호출 테스트
curl -v -X POST http://localhost:18789/api/v1/chat \
-H "Content-Type: application/json" \
-d '{"message":"test","channel":"internal"}'
7.2 일반적인 문제
| 문제 | 원인 | 해결 방안 |
|---|---|---|
| Cron이 실행되지 않음 | 경로 또는 환경 변수 문제 | 절대 경로 사용, PATH 설정 |
| Webhook을 수신하지 못함 | 방화벽 또는 포트 미개방 | 방화벽 규칙 확인 |
| API가 401 반환 | 인증 미설정 | API Key 추가 |
| 응답 타임아웃 | 작업 처리 시간 과다 | 타임아웃 설정 증가 |
8. 보안 주의사항
- Webhook 서명 검증: Webhook Secret을 활성화하여 위조 요청 방지
- API 인증: OpenClaw API에 인증 Token 설정
- 입력 필터링: 외부 입력을 정리하여 프롬프트 인젝션 방지
- 빈도 제한: 자동화 작업에 적절한 실행 빈도 설정
- 로그 감사: 모든 자동화 작업을 기록하여 사후 검토 용이
위의 방안을 통해 OpenClaw를 강력한 자동화 워크플로우 센터로 구축하여 업무 효율성을 크게 향상시킬 수 있습니다.