왜 실시간 알림이 필요한가
홈페이지를 운영하다 보면 새 문의나 후기가 언제 들어왔는지 모르는 경우가 많다. 하루에 한 번 관리자 페이지를 열어보는 게 전부라면, 고객 응대가 늦어지고 기회를 놓칠 수 있다. OpenClaw의 cron 기능과 DB 모니터링을 조합하면 새 후기나 문의가 등록된 즉시 텔레그램으로 알림을 받을 수 있다.
이 가이드에서는 WordPress 기반 홈페이지를 예시로, 새 댓글(후기)이나 Contact Form 7 문의가 등록될 때마다 텔레그램으로 즉시 알림을 보내는 시스템을 구축한다.
준비물
- OpenClaw 설치 및 실행 중인 환경 (Mac, Linux, NAS 등)
- 텔레그램 봇 연동 완료
- WordPress 사이트 (DB 접근 가능)
- MySQL 접속 정보 (host, user, password, dbname)
- Python 3 (MySQL 쿼리 실행용)
단계별 실습
1단계: 마지막 확인 시점 추적 파일 만들기
DB를 주기적으로 조회해서 “지난번 이후로 새로 생긴 것”을 찾으려면 마지막 확인 시점을 저장해야 한다. 간단한 JSON 파일을 사용한다.
# 파일 위치 예시
~/.openclaw/workspace/data/alert_state.json
# 초기 내용
{
"last_comment_id": 0,
"last_cf7_id": 0
}
2단계: 모니터링 Python 스크립트 작성
새 댓글과 Contact Form 7 제출을 감지하는 스크립트를 작성한다.
#!/usr/bin/env python3
# ~/.openclaw/workspace/scripts/check_new_feedback.py
import json
import subprocess
import sys
from datetime import datetime
STATE_FILE = '/root/.openclaw/workspace/data/alert_state.json'
TELEGRAM_TO = '본인의_텔레그램_ID'
def run_mysql(query):
cmd = [
'mysql',
'-S', '/run/mysqld/mysqld10.sock',
'-u', 'root',
'-pPASSWORD',
'wordpress_db',
'-e', query,
'-s', '--skip-column-names'
]
result = subprocess.run(cmd, capture_output=True, text=True)
return result.stdout.strip()
def send_telegram(message):
cmd = [
'openclaw', 'message', 'send',
'--channel', 'telegram',
'--to', TELEGRAM_TO,
'--message', message
]
subprocess.run(cmd)
# 상태 파일 로드
with open(STATE_FILE, 'r') as f:
state = json.load(f)
# 새 댓글 확인
last_id = state['last_comment_id']
query = (
"SELECT comment_ID, comment_author, comment_content, comment_post_ID "
"FROM wp_comments "
f"WHERE comment_ID > {last_id} AND comment_approved = '1' "
"ORDER BY comment_ID ASC LIMIT 10"
)
rows = run_mysql(query)
if rows:
for line in rows.split('\n'):
parts = line.split('\t')
if len(parts) >= 4:
cid, author, content, post_id = parts[0], parts[1], parts[2], parts[3]
msg = f"[새 댓글] #{cid}\n작성자: {author}\n내용: {content[:100]}\n글 ID: {post_id}"
send_telegram(msg)
state['last_comment_id'] = int(cid)
# 상태 저장
with open(STATE_FILE, 'w') as f:
json.dump(state, f, ensure_ascii=False, indent=2)
print(f"체크 완료: {datetime.now()}")
3단계: 스크립트 실행 권한 설정
chmod +x ~/.openclaw/workspace/scripts/check_new_feedback.py
# 직접 실행 테스트
python3 ~/.openclaw/workspace/scripts/check_new_feedback.py
4단계: OpenClaw cron으로 자동 실행 등록
5분마다 스크립트를 실행하도록 cron을 등록한다.
openclaw cron add \
--cron '*/5 * * * *' \
--tz Asia/Seoul \
--session isolated \
--agent main \
--message 'check_new_feedback.py 를 실행하고 결과 반환'
또는 AI 에이전트 없이 직접 system-event 방식으로 실행할 수도 있다.
openclaw cron add \
--cron '*/5 * * * *' \
--tz Asia/Seoul \
--session main \
--system-event 'check_new_feedback 실행'
5단계: cron 등록 확인 및 관리
openclaw cron list
# 등록된 job 목록 확인
openclaw cron edit [id] --cron '*/10 * * * *'
# 필요 시 주기 변경 (10분마다로 변경 예시)
openclaw cron rm [id]
# 삭제
실제 활용 예시
홈페이지에 새 문의가 등록되면 5분 이내에 이런 메시지가 텔레그램으로 온다.
[새 댓글] #847
작성자: 김민준
내용: 초등 수학 교재 문의드립니다. 3학년 아이가 있는데...
글 ID: 312
관리자 페이지를 열어볼 필요 없이, 폰에서 바로 확인하고 빠르게 답변할 수 있다. 고객 응대 속도가 크게 개선된다.
응용 아이디어
- Contact Form 7 연동: cf7 제출 데이터가 저장되는 테이블을 추가 모니터링하면 문의 폼도 실시간 알림 가능
- WooCommerce 주문 알림: wp_posts에서 post_type이 shop_order인 신규 주문 감지
- 회원가입 알림: wp_users 테이블에서 신규 사용자 감지 후 알림
- 알림 필터링: 스팸성 댓글은 건너뛰고 approved 상태만 알림 전송
- Discord 연동: –channel discord 로 변경하면 Discord 서버에도 동일 알림 전송 가능
- AI 자동 분류: cron –session isolated 로 AI가 문의 내용을 분석해 카테고리별로 분류해주는 것도 가능