파이썬으로 카카오톡 메시지 자동 발송하기
파이썬으로 카카오톡 메시지 자동 발송하기 (완성 코드 공개)
"매일 아침 팀장님께 업무 시작 메시지 보내기", "매주 월요일 거래처에 주간 일정 공유하기", "주식·환율 데이터를 수집한 뒤 나에게 카카오톡으로 보내기"…
이메일보다 훨씬 빠르게 확인하는 카카오톡을 업무 자동화에 활용할 수 있다면 어떨까요? 카카오에서 제공하는 공식 API를 사용하면 파이썬 코드로 카카오톡 메시지를 자동으로 발송할 수 있습니다. 회원가입이나 유료 결제 없이 카카오 계정만 있으면 무료로 사용할 수 있습니다.
1단계: 카카오 앱 등록 및 토큰 발급
카카오 API를 사용하려면 먼저 카카오 디벨로퍼스에서 앱을 등록하고 액세스 토큰을 발급받아야 합니다. 아래 순서대로 진행하세요.
- 카카오 디벨로퍼스(developers.kakao.com)에 접속해 카카오 계정으로 로그인합니다.
- 상단 메뉴 "내 애플리케이션" → "애플리케이션 추가하기" 클릭
- 앱 이름(예: "업무자동화"), 사업자명(개인 이름도 가능)을 입력하고 저장합니다.
- 생성된 앱 클릭 → "앱 키" 탭에서 REST API 키를 복사해 둡니다.
- 왼쪽 메뉴 "카카오 로그인" → 활성화 설정을 ON으로 변경합니다.
- 같은 페이지 하단 "Redirect URI"에 아래 주소를 입력하고 저장합니다:
https://example.com/oauth
- 왼쪽 메뉴 "동의항목" → "카카오톡 메시지 전송"을 선택 동의로 설정합니다.
⚠️ 주의: 카카오 API의 "나에게 보내기"는 별도 심사 없이 바로 사용할 수 있습니다. 그러나 "친구에게 보내기"는 카카오 비즈니스 채널 심사가 필요합니다. 이 글에서는 심사 없이 바로 사용 가능한 "나에게 보내기"를 중심으로 설명합니다.
2단계: 액세스 토큰 발급
앱 등록이 완료되면 액세스 토큰을 발급받아야 합니다. 아래 순서대로 진행하세요.
먼저 브라우저 주소창에 아래 URL을 입력합니다. REST_API_KEY 부분을 1단계에서 복사한 키로 교체하세요.
https://kauth.kakao.com/oauth/authorize?client_id=REST_API_KEY&redirect_uri=https://example.com/oauth&response_type=code
카카오 로그인 화면이 나타나면 로그인하고 동의합니다. 로그인 후 브라우저 주소창이 아래처럼 바뀝니다:
https://example.com/oauth?code=인가코드값
주소창에서 code= 뒤의 값을 복사해 둡니다. 이것이 인가 코드입니다.
이제 터미널에서 아래 명령어를 실행해 액세스 토큰을 발급받습니다. REST_API_KEY와 인가코드를 본인 값으로 교체하세요.
curl -X POST https://kauth.kakao.com/oauth/token \ -d grant_type=authorization_code \ -d client_id=REST_API_KEY \ -d redirect_uri=https://example.com/oauth \ -d code=인가코드
응답으로 JSON이 출력됩니다. 그 안의 "access_token" 값을 복사해 둡니다. 이것이 코드에서 사용할 액세스 토큰입니다.
💡 액세스 토큰 유효 기간: 카카오 액세스 토큰은 발급 후 6시간이 지나면 만료됩니다. 만료 시 리프레시 토큰으로 재발급해야 합니다. 아래 완성 코드에는 토큰 만료 시 자동으로 재발급하는 기능이 포함되어 있습니다.
3단계: 준비물 설치
터미널(윈도우: CMD 또는 파워셸)을 열고 아래 명령어를 실행하세요:
pip install requests
requests는 카카오 API 서버에 HTTP 요청을 보내는 라이브러리입니다. 이미 설치되어 있다면 넘어가도 됩니다.
4단계: 완성 코드
아래 코드를 그대로 복사해서 메모장에 붙여넣고, kakao_msg.py로 저장하세요. 저장 시 파일 형식은 "모든 파일", 인코딩은 UTF-8로 설정합니다.
import requests
import json
from pathlib import Path
# ① 설정: 카카오 앱 정보
REST_API_KEY = "여기에_REST_API_키_입력" # ← 1단계에서 복사한 키
ACCESS_TOKEN = "여기에_액세스_토큰_입력" # ← 2단계에서 발급받은 토큰
REFRESH_TOKEN = "여기에_리프레시_토큰_입력" # ← 2단계 응답의 refresh_token 값
TOKEN_FILE = "kakao_token.json" # 토큰 자동 저장 파일
# ② 토큰 갱신 함수
def refresh_access_token():
url = "https://kauth.kakao.com/oauth/token"
data = {
"grant_type": "refresh_token",
"client_id": REST_API_KEY,
"refresh_token": REFRESH_TOKEN,
}
res = requests.post(url, data=data)
token = res.json()
new_access = token.get("access_token")
print(f" ✔ 액세스 토큰 갱신 완료")
return new_access
# ③ 나에게 메시지 보내기 함수
def send_to_me(access_token, text):
url = "https://kapi.kakao.com/v2/api/talk/memo/default/send"
headers = {"Authorization": f"Bearer {access_token}"}
template = {
"object_type": "text",
"text": text,
"link": {
"web_url": "https://www.howtothea.com",
"mobile_web_url": "https://www.howtothea.com"
},
"button_title": "블로그 바로가기"
}
data = {"template_object": json.dumps(template)}
res = requests.post(url, headers=headers, data=data)
if res.status_code == 200:
print(f" ✔ 메시지 발송 완료")
elif res.status_code == 401:
print(f" ⚠ 토큰 만료. 갱신 후 재시도합니다.")
new_token = refresh_access_token()
send_to_me(new_token, text) # 갱신된 토큰으로 재시도
else:
print(f" ✘ 발송 실패: {res.status_code} / {res.text}")
# ④ 실행: 보낼 메시지 내용을 여기에 입력
MESSAGE = """📊 오늘의 업무 자동화 알림
✅ 주식·환율 데이터 수집 완료
✅ 보고서 차트 이미지 저장 완료
✅ 거래처 이메일 발송 완료
오늘도 수고하셨습니다! 💪"""
send_to_me(ACCESS_TOKEN, MESSAGE)
print(f"\n✅ 완료! 카카오톡으로 메시지를 발송했습니다.")
5단계: 실행 방법
- 코드 ① 설정의
REST_API_KEY,ACCESS_TOKEN,REFRESH_TOKEN에 각각 발급받은 값을 입력합니다. - 코드 ④ 실행의
MESSAGE내용을 원하는 메시지로 수정합니다. - 터미널에서 아래 명령어로 실행합니다:
python kakao_msg.py
정상 실행 시 터미널에 이렇게 출력됩니다:
✔ 메시지 발송 완료 ✅ 완료! 카카오톡으로 메시지를 발송했습니다.
카카오톡 앱을 열면 "나와의 채팅"에 메시지가 도착해 있습니다.
6단계: 자주 발생하는 오류와 해결법
오류 1: 401 Unauthorized
액세스 토큰이 만료되었거나 잘못 입력된 경우입니다. 코드 안에 자동 갱신 기능이 포함되어 있으므로 REFRESH_TOKEN이 올바르게 입력되어 있는지 확인하세요. 리프레시 토큰도 만료된 경우(유효 기간 2개월)에는 2단계부터 다시 진행해야 합니다.
오류 2: 403 Forbidden
카카오 앱의 동의항목에서 "카카오톡 메시지 전송" 권한이 설정되지 않은 경우입니다. 카카오 디벨로퍼스 → 내 앱 → 동의항목 탭에서 "카카오톡 메시지 전송"을 선택 동의로 설정했는지 확인하세요.
오류 3: 메시지가 도착했는데 버튼이 보이지 않음
카카오톡 메시지 템플릿의 버튼은 링크가 유효해야 표시됩니다. 코드의 web_url에 실제로 접근 가능한 URL이 입력되어 있는지 확인하세요.
응용: 이전 게시글 코드와 결합해서 자동 리포트 발송하기
이전 게시글에서 만든 주식·환율 자동 수집 코드와 결합하면, 매일 장 마감 후 수집한 데이터를 정리해 카카오톡으로 자동 발송하는 리포트 시스템을 만들 수 있습니다. collect_finance.py의 마지막 줄 다음에 아래 코드를 추가하기만 하면 됩니다.
from kakao_msg import send_to_me, ACCESS_TOKEN
report = "📊 오늘의 금융 데이터 요약\n\n"
for r in results:
sign = "+" if r["등락"] >= 0 else ""
report += f" {r['종목명']}: {r['현재가']:,.0f} ({sign}{r['등락률(%)']:.2f}%)\n"
send_to_me(ACCESS_TOKEN, report)
💡 윈도우 작업 스케줄러와 결합하면: 매일 오후 3시 40분(코스피 마감 직후)에 자동으로 실행되도록 예약해두면, 별도로 확인하지 않아도 장 마감 데이터가 카카오톡으로 자동 도착합니다. 작업 스케줄러 설정 방법은 주식·환율 데이터 자동 수집 편을 참고하세요.
핵심 요약
- 준비물: 카카오 디벨로퍼스 앱 등록 + 액세스 토큰 발급 + pip install requests
- 설정: REST_API_KEY, ACCESS_TOKEN, REFRESH_TOKEN 입력 후 메시지 내용 수정
- 실행: 터미널에서 python kakao_msg.py 입력
- 결과: 카카오톡 "나와의 채팅"으로 메시지 자동 발송, 토큰 만료 시 자동 갱신
이 코드를 응용하면 특정 조건(주가 급등락, 환율 급변)이 충족될 때만 알림을 보내는 조건부 발송도 가능합니다.
