스마트폰을 꺼내서 캘린더 앱을 열고, 날짜를 찾고, 새 일정 버튼을 누르고, 제목 입력하고… 이 과정이 귀찮다고 느낀 적 있는가? OpenClaw를 활용하면 텔레그램에서 “다음주 화요일 6시 팀 회의”라고 타이핑하는 것만으로 구글 캘린더에 일정이 자동 추가된다. AI가 자연어를 파싱해서 직접 처리하기 때문에 날짜 형식을 맞출 필요도 없다.
왜 이 방식이 유용한가
기존 캘린더 앱의 문제는 인터페이스 전환 비용이다. 업무 중에 일정이 생기면 하던 일을 멈추고 앱을 열어야 한다. 텔레그램 기반 일정 추가는 이미 대화가 이루어지는 공간에서 바로 처리하기 때문에 컨텍스트 전환이 없다. 회의 중 메모하듯이, 이동 중 떠오른 약속을 바로 저장할 수 있다.
OpenClaw는 Claude AI를 비서 엔진으로 사용하기 때문에 “다다음주 금요일 오전 중으로 치과 예약”처럼 모호한 표현도 정확히 해석한다. 또한 Google Calendar API와 직접 연동하므로 별도 앱 없이 작동한다.
준비물
- OpenClaw 설치된 서버 또는 Mac (Node.js 18+)
- 텔레그램 계정 및 봇 토큰
- Google Cloud 프로젝트 (Calendar API 활성화)
- Google OAuth2 자격증명 (credentials.json)
단계별 구현
1단계: Google Calendar API 설정
Google Cloud Console에서 프로젝트를 생성하고 Google Calendar API를 활성화한다.
- console.cloud.google.com 접속
- 새 프로젝트 생성
- API 및 서비스 > 라이브러리에서 “Google Calendar API” 검색 후 활성화
- 사용자 인증 정보 > OAuth 2.0 클라이언트 ID 생성 (데스크톱 앱 선택)
- credentials.json 다운로드
mkdir -p ~/.openclaw/workspace/gcal
mv ~/Downloads/credentials.json ~/.openclaw/workspace/gcal/
2단계: OAuth 인증 스크립트 작성
Google Calendar OAuth 인증을 처리하는 스크립트를 작성한다.
# ~/.openclaw/workspace/gcal/auth.py
from google_auth_oauthlib.flow import InstalledAppFlow
import json
SCOPES = ['https://www.googleapis.com/auth/calendar']
flow = InstalledAppFlow.from_client_secrets_file('credentials.json', SCOPES)
creds = flow.run_local_server(port=0)
with open('token.json', 'w') as f:
f.write(creds.to_json())
print("token.json 저장 완료")
cd ~/.openclaw/workspace/gcal
pip install google-auth google-auth-oauthlib google-api-python-client
python auth.py
3단계: 일정 추가 스크립트 작성
OpenClaw에서 호출할 수 있는 일정 추가 스크립트를 만든다.
# ~/.openclaw/workspace/gcal/add_event.py
import sys
import json
from datetime import datetime
from google.oauth2.credentials import Credentials
from googleapiclient.discovery import build
def add_event(title, start_dt, end_dt, description=''):
creds = Credentials.from_authorized_user_file('token.json')
service = build('calendar', 'v3', credentials=creds)
event = {
'summary': title,
'description': description,
'start': {'dateTime': start_dt, 'timeZone': 'Asia/Seoul'},
'end': {'dateTime': end_dt, 'timeZone': 'Asia/Seoul'},
}
result = service.events().insert(calendarId='primary', body=event).execute()
return result.get('htmlLink')
if __name__ == '__main__':
args = sys.argv[1:]
link = add_event(args[0], args[1], args[2], args[3] if len(args) > 3 else '')
print(f"추가됨: {link}")
4단계: TOOLS.md에 도구 등록
OpenClaw가 텔레그램 메시지를 받으면 자동으로 이 스크립트를 활용할 수 있도록 TOOLS.md에 등록한다.
### Google Calendar
- 스크립트: ~/.openclaw/workspace/gcal/add_event.py
- 실행: python add_event.py "제목" "2026-04-05T14:00:00" "2026-04-05T15:00:00"
- 타임존: Asia/Seoul
- 용도: 텔레그램으로 자연어 일정 요청 시 자동 호출
5단계: 매일 아침 일정 알림 cron 추가
매일 아침 오늘의 일정을 텔레그램으로 받는 cron도 함께 설정할 수 있다.
openclaw cron add --cron "0 8 * * *" --tz Asia/Seoul --session isolated --agent main --message "오늘 날짜 기준으로 Google Calendar에서 오늘 일정을 조회해서 텔레그램으로 알려줘"
실제 활용 예시
텔레그램에서 다음과 같이 메시지를 보내면 AI가 파싱해서 처리한다.
- 사용자: “이번주 토요일 오후 3시에 독서 모임 2시간”
AI: 구글 캘린더에 추가했어. – 제목: 독서 모임 / 시작: 2026-04-04 15:00 / 종료: 2026-04-04 17:00 - 사용자: “다음달 첫째 주 월요일 9시에 월례 회의, 반복 일정으로”
AI: 2026-05-04 09:00 월례 회의 추가 완료. 매월 첫째 주 월요일 반복으로 설정했어.
응용 아이디어
- 팀 공유 캘린더 연동: calendarId를 팀 공유 캘린더 ID로 변경하면 팀원 전체 일정을 텔레그램에서 관리 가능
- 이메일 자동 파싱: 예약 확인 이메일이 오면 자동으로 일정을 추출해서 캘린더에 추가
- DB 연동: 강의 예약 시스템 DB에 새 예약이 생기면 자동으로 캘린더에 블록 추가
- 알림 에스컬레이션: 중요 일정 1시간 전에 텔레그램으로 준비 체크리스트를 함께 전송
OpenClaw의 핵심은 AI가 중간 통역사 역할을 한다는 점이다. 사용자는 자연어로 의도만 전달하면 되고, 나머지 API 호출과 데이터 처리는 AI가 알아서 처리한다. 캘린더 외에도 같은 방식으로 Notion, Trello, Airtable 등 다양한 서비스와 텔레그램을 연결할 수 있다.