자동화 흐름
지역 축제 알림 자동화
한국관광공사 TourAPI에서 전국 축제/행사 정보를 자동 수집하고, 관심 지역의 다가오는 축제를 필터링하여 카카오톡으로 알림을 보내는 레시피입니다.
---
사전 준비
| 항목 | 설명 | |------|------| | TourAPI 인증키 | 한국관광공사 TourAPI에서 활용 신청 | | 카카오 REST API 키 | Kakao Developers에서 앱 생성 후 REST API 키 발급 | | 카카오 나에게 보내기 | 카카오 로그인 동의항목에서 "카카오톡 메시지 전송" 동의 필요 | | Make 계정 | 시나리오 구성 및 스케줄링 |
---
Step 1: TourAPI 축제/행사 검색 API 호출
HTTP 모듈로 축제 정보를 조회합니다. 핵심: contentTypeId=15로 축제/공연/행사만 필터링합니다.
GET http://apis.data.go.kr/B551011/KorService1/searchFestival1
주요 파라미터:
| 파라미터 | 값 | 설명 |
|----------|----|------|
| serviceKey | {{API_KEY}} | TourAPI 인증키 |
| numOfRows | 100 | 결과 개수 |
| pageNo | 1 | 페이지 번호 |
| MobileOS | ETC | OS 구분 |
| MobileApp | MyApp | 앱 이름 |
| _type | json | 응답 형식 |
| eventStartDate | 20260416 | 행사 시작일 (오늘 날짜) |
| eventEndDate | 20260516 | 행사 종료일 (한 달 후) |
| areaCode | 32 | 지역코드 (예: 강원) |
Tip: eventStartDate는 Make 날짜 함수로 동적 생성합니다: {{formatDate(now; "YYYYMMDD")}}, 종료일은 {{formatDate(addMonths(now; 1); "YYYYMMDD")}} 를 사용합니다.
---
Step 2: 관심 지역 필터링 설정
여러 지역을 모니터링하려면 지역코드 목록을 설정합니다.
TourAPI 주요 지역코드:
| 코드 | 지역 | 코드 | 지역 | |------|------|------|------| | 1 | 서울 | 2 | 인천 | | 3 | 대전 | 4 | 대구 | | 5 | 광주 | 6 | 부산 | | 31 | 경기 | 32 | 강원 | | 33 | 충북 | 34 | 충남 | | 35 | 경북 | 36 | 경남 | | 37 | 전북 | 38 | 전남 | | 39 | 제주 | | |
Make에서 Array 변수로 관심 지역을 정의합니다:
관심지역 = [32, 6, 39] // 강원, 부산, 제주
Router 모듈을 사용해 각 지역코드별로 API를 호출하거나, 반복(Iterator) 모듈로 순회합니다.
---
Step 3: 축제 데이터 파싱 및 정제
API 응답에서 필요한 필드를 추출합니다.
{
"response": {
"body": {
"items": {
"item": [
{
"title": "춘천마임축제",
"addr1": "강원특별자치도 춘천시",
"eventstartdate": "20260523",
"eventenddate": "20260531",
"firstimage": "http://tong.visitkorea.or.kr/...",
"tel": "033-242-0585",
"contentid": "2845612"
}
]
}
}
}
}
각 축제에 대해 다음을 계산합니다:
| 필드 | 계산 로직 |
|------|-----------|
| D-day | eventstartdate - today |
| 진행상태 | 시작 전 / 진행 중 / 종료 |
| 주말포함 | 축제 기간 내 주말 존재 여부 |
Tip: contentTypeId=15는 축제/공연/행사 전용입니다. 관광지(12), 문화시설(14), 레포츠(28) 등 다른 타입과 혼동하지 마세요.
---
Step 4: 신규 축제 감지 로직
이전에 알린 축제를 중복 발송하지 않기 위한 로직입니다.
1. Google Sheets에 "알림완료" 시트를 생성합니다
2. 새 축제 발견 시 contentid 기준으로 중복 체크합니다
3. 신규 축제만 알림 대상으로 선별합니다
{{if(contains(sentList; item.contentid); "skip"; "send")}}
---
Step 5: 카카오톡 나에게 보내기 알림
카카오톡 메시지 API로 축제 알림을 발송합니다.
POST https://kapi.kakao.com/v2/api/talk/memo/default/send
Headers:
Authorization: Bearer {{KAKAO_ACCESS_TOKEN}}
Content-Type: application/x-www-form-urlencoded
Body (template_object):
{
"object_type": "list",
"header_title": "다가오는 지역 축제 알림",
"header_link": { "web_url": "https://www.visitkorea.or.kr" },
"contents": [
{
"title": "춘천마임축제",
"description": "D-37 | 강원 춘천시 | 5.23~5.31",
"image_url": "{{firstimage}}",
"link": { "web_url": "{{detailUrl}}" }
}
],
"buttons": [
{
"title": "상세보기",
"link": { "web_url": "https://www.visitkorea.or.kr" }
}
]
}
Tip: 카카오 Access Token은 유효기간이 6시간이므로, Refresh Token으로 자동 갱신하는 모듈을 시나리오 시작부에 추가하세요.
---
Step 6: Make 스케줄 설정
| 설정 항목 | 값 | |----------|-----| | 실행 주기 | 매주 월요일 | | 실행 시각 | 오전 09:00 KST | | 타임존 | Asia/Seoul |
---
예상 결과
- 매주 월요일 관심 지역의 다가오는 축제 목록을 카카오톡으로 수신
- D-day 표시로 일정 파악 용이
- 중복 알림 방지로 새로운 축제만 알림
- 이미지 포함 리스트형 메시지로 시각적 확인 가능
트러블슈팅
| 증상 | 원인 | 해결 방법 |
|------|------|-----------|
| 축제 데이터 0건 | eventStartDate 형식 오류 | YYYYMMDD 8자리 형식 확인 (하이픈 없이) |
| 카카오톡 발송 실패 (401) | Access Token 만료 | Refresh Token으로 갱신 모듈 추가 |
| 카카오톡 발송 실패 (403) | 메시지 전송 동의 미완료 | 카카오 로그인 동의항목에서 "톡 메시지 전송" 체크 |
| 중복 알림 발생 | 중복 체크 시트 미연결 | Google Sheets 모듈의 시트 ID 및 범위 확인 |
| 특정 지역 결과 없음 | 해당 기간 축제 없음 | 조회 기간을 2-3개월로 확대하거나 전체 지역 조회 |
| contentTypeId 잘못 설정 | 축제가 아닌 데이터 조회 | 반드시 contentTypeId=15 사용 확인 |
Make 블루프린트 다운로드
JSON 파일을 Make.com에 임포트하면 시나리오가 자동 생성됩니다
댓글 · 질문 (0)
로그인 후 댓글을 작성할 수 있습니다.