파이썬으로 카카오톡 메시지 자동 발송하기

파이썬으로 카카오톡 메시지 자동 발송하기 (완성 코드 공개)

파이썬으로 카카오톡 메시지를 자동으로 발송하는 모습


"매일 아침 팀장님께 업무 시작 메시지 보내기", "매주 월요일 거래처에 주간 일정 공유하기", "주식·환율 데이터를 수집한 뒤 나에게 카카오톡으로 보내기"…

이메일보다 훨씬 빠르게 확인하는 카카오톡을 업무 자동화에 활용할 수 있다면 어떨까요? 카카오에서 제공하는 공식 API를 사용하면 파이썬 코드로 카카오톡 메시지를 자동으로 발송할 수 있습니다. 회원가입이나 유료 결제 없이 카카오 계정만 있으면 무료로 사용할 수 있습니다.


1단계: 카카오 앱 등록 및 토큰 발급

카카오 API를 사용하려면 먼저 카카오 디벨로퍼스에서 앱을 등록하고 액세스 토큰을 발급받아야 합니다. 아래 순서대로 진행하세요.

  1. 카카오 디벨로퍼스(developers.kakao.com)에 접속해 카카오 계정으로 로그인합니다.
  2. 상단 메뉴 "내 애플리케이션""애플리케이션 추가하기" 클릭
  3. 앱 이름(예: "업무자동화"), 사업자명(개인 이름도 가능)을 입력하고 저장합니다.
  4. 생성된 앱 클릭 → "앱 키" 탭에서 REST API 키를 복사해 둡니다.
  5. 왼쪽 메뉴 "카카오 로그인" → 활성화 설정을 ON으로 변경합니다.
  6. 같은 페이지 하단 "Redirect URI"에 아래 주소를 입력하고 저장합니다:
https://example.com/oauth
  1. 왼쪽 메뉴 "동의항목""카카오톡 메시지 전송"선택 동의로 설정합니다.
⚠️ 주의: 카카오 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단계: 실행 방법

  1. 코드 ① 설정의 REST_API_KEY, ACCESS_TOKEN, REFRESH_TOKEN에 각각 발급받은 값을 입력합니다.
  2. 코드 ④ 실행의 MESSAGE 내용을 원하는 메시지로 수정합니다.
  3. 터미널에서 아래 명령어로 실행합니다:
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 입력
  • 결과: 카카오톡 "나와의 채팅"으로 메시지 자동 발송, 토큰 만료 시 자동 갱신

이 코드를 응용하면 특정 조건(주가 급등락, 환율 급변)이 충족될 때만 알림을 보내는 조건부 발송도 가능합니다.

이 블로그의 인기 게시물

카카오톡 용량 줄이기! 대화방 파일 삭제로 스마트폰 용량 확보법 (1분 해결)

느려진 구글 크롬 속도 2배 빨라지는 3가지 설정 방법 (2026년 최신 가이드)

업무 속도 3배 빨라지는 윈도우 기본 캡처 도구 단축키 및 200% 활용 꿀팁