주식 다트 공시 + 휴대폰 텔레그램으로 자동 수신 시스템 구축 첫 걸음, 다트 API, 토큰, 구글 코랩 활용
- 의도 : 내가 설정한 종목 중 다트에 새로운 공시가 뜨면 나의 텔레그램으로 즉시 알림을 받기 위함이다.
- 경로 : 다트 공시 -> 구글 코랩 -> 텔레그램 전송
- 컴퓨터를 24시간 가동할 수 없어 구글 코랩을 사용할 예정인데 코랩도 브라우저를 닫거나 일정 시간이 지나면 끊길 수 있다. 그래서 깃허브를 이용할 예정인데 이 부분은 글이 너무 길어지니 다음 글에 테스트해보는 과정을 남길 예정이다.
아래 글은 다트에서 'API 인증키', 텔레그램 API 토큰, 텔레그램 고유번호(chat ID)를 알아야 구글 코랩에서 코드를 입력해 다트의 공시 링크를 텔레그램으로 전송할 수 있다. 아래는 그 과정을 담은 것이다.
1. Open DART 'API 인증키' 발급받기 (무료)
위 버튼을 클릭하면 다트의 인증키 신청 페이지로 연결된다.
(1) 다트 사이트에 접속한다.
(2) 왼쪽 상단 '인증키 신청/관리' 메뉴를 클릭한다.
(3) 왼쪽 아래 '인증키 신청' 버튼 클릭을 클릭한다.
(4) 동의 체크 / 사용자 구분 : 개인 / 이메일, 비번을 입력한다.
(5) API사용환경 : 모두 / API사용용도 : 개인 투자 분석 및 파이썬 공부용 / 확인 URL : 나의 블로그 주소 기입 http://www.seethe330st.com ➡ 등록 버튼을 클릭한다.
(6) 기재한 이메일을 확인해 금융감독원에서 보낸 이메일을 열어 '인증링크' 클릭한다.
(7) 다트 사이트에서 상단 '인증키 신청/관리' 클릭, 페이지에서 '상태-승인'으로 되어 있는지 확인 ➡ 왼쪽 '오픈API 이용현황' 메뉴 클릭 ➡ API Key를 확인하면 된다.
2. 텔레그램을 통한 알림 설정 (무료)
(1) 텔레그램 앱 상단 돋보기 아이콘 누르기
(2) '@BotFather' 입력 후 검색되는 파란색 체크 표시가 되어 있는 공식계정의 '@BotFather'를 선택한다.
(3) 하단 'Start Bot' 버튼을 누른다.
(4) 채팅창에 '/newbot' 를 입력한다.
한글 이름 정하기
(5) Alright, a new bot. How are we going to call it? Please choose a name for your bot. -> 이런 문장이 뜨면 봇 이름을 정해서 입력한다. (한글로 해도 된다.)
영어 이름 정하기
(6) Good. Now let's choose a username for your bot. It must end in `bot`. Like this, for example: TetrisBot or tetris_bot. => 이런 문장이 뜨면 영어 아이디 만들어 입력한다. 타인과 중복되면 사용하지 못한다.
텔레그램 API 토큰 부여받아 따로 저장해두기
Done! Congratulations on your new bot. ~ For a description of the Bot API, see this page: https://core.telegram.org/bots/api
위 문장으로 시작해 끝을 맺는 문장이 나온다면 성공한 것이다.
문장을 자세히 들여다 보면 중간쯤에 'Use this token to access the HTTP API:'라는 문장 아래 숫자+영문 조합이 보인다. 이게 바로 텔레그램 'API 토큰'이다. 이 부분을 잘 복사해 저장해둔다.
나의 고유번호(chat ID) 확인, 저장하기
(7) 텔레그램 상단 돋보기 아이콘이 있는 검색창에 '@userinfobot'을 입력한다.
(8) 첫 번째로 뜨는 'User Info • Get ID • IDbot'을 누른다. (아이디:@userinfobot). 많은 게 뜨니 좀 당황스러울 수 있다.
(9) 하단 'Start Bot' 이나 '시작' 버튼을 누른다.
(10) id 뒤에 숫자가 보인다. 이 숫자들을 복사해 저장해 둔다.
🚨 텔레그램 채팅방 열어두기
채팅방을 미리 열어두지 않으면 구글 코랩에서 텔레그램으로 자료가 전송되지 않을 수 있으니 정보를 받을 텔레그램의 채팅방을 열어두자. 필자는 이 과정을 하지 않아 오류가 계속 났다.
(11) 위 (6)번에서 만들어둔 영어 이름으로 검색해서 채팅방을 열어 우측 하단 '시작' 버튼을 누른 후 아무 말이나 입력해놓자. 이렇게 하면 채팅방이 만들어진 것이다.
3. 구글 코랩으로 텔레그램 알림 테스트
이 과정은 꼭 필요한 것은 아닌데 깃허브를 이용하기 전 내 휴대폰의 텔레그램으로 내가 원하는 정보가 도착하는지 한번 확인해보기 위함이 크다.
(1) 위 버튼을 클릭해 구글 코랩 사이트로 이동해 로그인한다.
(2) 왼쪽 상단 '파일' 메뉴 -> 'Drive의 새 노트북' 을 클릭하면 새로운 창이 나타난다.
(3) '코딩을 시작하거나 AI로 코드를 생성하세요' 라는 박스 안에 아래와 같은 코드를 복사해 붙여넣기 한다.
!pip install opendartreader
(4) 붙여넣은 칸 왼쪽에 삼각형이 있는 동그라미가 있다. 그걸 클릭하자. 여러 문장이 뜬 후 맨 하단에 'successfully installed opendartreader'이라는 문장이 보이면 성공이다.
(5) 위쪽에 '+코드' 메뉴를 클릭하자. 그러면 새 코드를 붙여넣을 칸이 아래 하나 더 생성된다.
(6) 이제 아래의 [코드 박스] 내용을 복사해서 구글 코랩에 붙여넣으세요. 수정할 부분은 YOUR_...라고 된 3곳입니다.
* 밑줄 친 주황색 부분을 클릭하면 해당 설명으로 자동 이동합니다.
✅ DART 인증키 입력: [여기]를 클릭해 (7)번에서 확인한 키를 넣으세요.
✅ 텔레그램 토큰 입력: [여기]를 클릭해 발급받은 토큰을 넣으세요.
✅ 텔레그램 CHAT ID 입력: [여기]를 클릭해 (10)번에서 확인한 숫자를 넣으세요.
import OpenDartReader
import requests
# ==========================================
# 1. 개인 정보 설정 (이 부분을 본인의 정보로 수정하세요!)
# ==========================================
DART_API_KEY = 'YOUR_DART_API_KEY'
TELEGRAM_TOKEN = 'YOUR_TELEGRAM_TOKEN'
CHAT_ID = 'YOUR_CHAT_ID'
def test_dart_telegram():
print("1. 📡 다트(DART) 서버 정밀 연결 중...")
dart = OpenDartReader(DART_API_KEY)
try:
# ---------------------------------------------------------
# [중요] 데이터 부하를 줄이기 위해 특정 종목(삼성전자) 1건만 조회합니다.
# 테스트 단계에서는 서버에 무리를 주지 않는 것이 핵심입니다.
# ---------------------------------------------------------
target_stock = '삼성전자'
print(f"2. 🔍 샘플 데이터({target_stock}) 추출 중...")
# 2026년 1월 1일 이후의 공시 목록을 가져옵니다.
df = dart.list(target_stock, start='20260101')
if df is not None and len(df) > 0:
# 가장 최신 공시 1건을 선택
latest_report = df.iloc[0]
rcept_no = latest_report['rcept_no']
# 텔레그램으로 전송할 메시지 포맷
message = (
f"🚨 [초경량 연결 테스트 성공]\n"
f"📦 종목: {latest_report['corp_name']}\n"
f"📝 내용: {latest_report['report_nm']}\n"
f"🔗 링크: https://dart.fss.or.kr/dsaf001/main.do?rcpNo={rcept_no}"
)
print("3. 📬 통신망 이상 무! 텔레그램 무전 송신 중...")
url = f"https://api.telegram.org/bot{TELEGRAM_TOKEN}/sendMessage"
requests.get(url, params={'chat_id': CHAT_ID, 'text': message})
print(f"✅ [작전 완료] 텔레그램으로 성공 무전이 발송되었습니다.")
else:
print("🌑 공시 데이터를 찾을 수 없습니다. 종목명이나 날짜를 확인하세요.")
except Exception as e:
print(f"🚨 [비상] 통신 에러 발생: {e}")
# 테스트 실행
test_dart_telegram()
(7) 코랩에 위 코드를 붙여넣기가 끝났다면 왼쪽 상단에 동그라미 버튼을 클릭한다.
성공이라면 코랩에는 아래와 같은 문구가 나타난다.
1. 📡 다트(DART) 서버 정밀 연결 중...
2. 🔍 샘플 데이터(삼성전자) 추출 중...
3. 📤 통신망 이상 무! 텔레그램 송신 중...
✅ [작전 완료] 텔레그램 무전이 송신되었습니다.
성공이라면 텔레그램 대화방에는 아래와 같은 문구가 도착한다.
🚨 [초경량 연결 테스트 성공]
📦 종목: 삼성전자
📝 내용: 주식등의대량보유상황보고서(일반)
🔗 링크: https://dart.fss.or.kr/dsaf001/main.do?rcpNo=20260504000421
* 위 코드는 삼성전자의 공시 1건을 텔레그램의 대화장에 링크를 보내주는 코드이다.
** 지금은 링크로 보내지지만 제미나이를 이용해 공시의 요약기능을 추가해도 될 것 같다. 이와 관련된 것은 실험을 해보고 글을 따로 올릴 예정이다.
여기까지 텔레그램에 수신이 가능한지 구글 코랩으로 테스트를 잘 마쳤다.
#다트공시알림 #텔레그램봇만들기 #DART_API인증키 #파이썬주식알림 #구글코랩파이썬 #실시간공시알림 #주식공시자동화 #BotFather사용법 #OpenDartReader #주식투자꿀팁
댓글
댓글 쓰기