1. 네이버 금융 매크로 지표 크롤링 실습
네이버 금융 메인(https://finance.naver.com/)에서 매크로 지표(코스피, 코스닥, 나스닥, 달러 환율, 국제금 가격)를 크롤링해서 터미널에 깔끔하게 텍스트로 출력하는 프로그램을 만들어줘. 코드를 작성한 뒤에 필요한 라이브러리를 네가 터미널에서 직접 설치하고, 스크립트를 실행해서 결과까지 나한테 보여줘Claude Code 작업:
네이버 금융 메인 페이지 HTML 구조를 직접 다운로드해 분석(EUC-KR 인코딩 확인)한 뒤 크롤링 스크립트 작성
requests,beautifulsoup4라이브러리를 터미널에서 직접 설치UTF-8 콘솔 출력 깨짐, 등락률
%%중복 표시, CJK 문자 폭을 고려한 정렬 문제를 연달아 수정하며 실행 결과로 직접 검증naver_finance_macro.py- 코스피/코스닥/나스닥/환율/국제금 시세를 크롤링해 터미널에 출력하는 최초 버전
2. 관심 종목(삼성전자·SK하이닉스·삼성전기) 추가
기존 매크로 지표 하단에 개별 종목 정보도 추가로 출력되게 만들어줘. 네이버 주식의 종목별 정보 페이지 URL은 다음과 같아 https://finance.naver.com/item/main.naver?code=005930 '삼성전자', 'SK하이닉스', '삼성전기'의 현재가와 등락률을 긁어오는 로직을 추가해. 코드 수정이 끝나면 다시 실행해서 결과를 보여줘.Claude Code 작업:
개별 종목 페이지(
item/main.naver?code=...)의 현재가·등락폭·등락률 파서(parse_stock_page) 추가STOCKS딕셔너리(종목명→코드)를 도입해 종목 추가가 쉽도록 구조화사용자가 "하이닉스·삼성전기 코드는 어떻게 알아냈는지" 물었을 때, 검색이 아니라 학습 데이터에 기반한 값임을 투명하게 설명하고 검증 로직 추가를 제안
naver_finance_macro.py- 관심 종목 섹션 추가
3. 국내외 종목 확장 (현대차·현대차2우B·엔비디아·마이크론)
현대차, 현대차2우B, 엔비디아, 마이크론도 추가해줘Claude Code 작업:
해외 종목(엔비디아·마이크론)은 정적 HTML에 시세가 없다는 걸 확인하고, 네이버 모바일 증권이 실제로 쓰는 JSON API(
api.stock.naver.com)를 대신 활용하는 방식으로 별도 구현WORLD_STOCKS딕셔너리와fetch_world_stock/fetch_naver_json_quote함수 추가naver_finance_macro.py- 국내 6종목 + 해외 2종목 총 8종목 시세 지 원
4. 이메일 알림 기능 추가
Claude Code 작업:
Gmail SMTP 발송 로직을 추가하되, 비밀번호를 코드에 하드코딩하지 않고 환경변수(
GMAIL_ADDRESS,GMAIL_APP_PASSWORD)로 읽도록 설계Google 앱 비밀번호 발급 절차와 PowerShell 환경변수 등록 방법을 안내(민감정보이므로 직접 입력은 거부)
콘솔 출력은 그대로 유지한 채 메일 발송만 추가되는지, 자격증명이 없을 때 정상적으로 건너뛰는지 확인 후 실제 메일 수신까지 확인
naver_finance_macro.py- 이메일 발송 로직 추가(이후 텔레그램으로 대체됨)
5. 텔레그램 봇 알림으로 전환
Claude Code 작업:
이메일 발송 로직을 제거하고 텔레그램 Bot API 기반
send_telegram()으로 교체(토큰도 환경변수로 관리)봇 토큰 확인 방법(@BotFather), 채팅 ID 확인 방법을 안내하다가 해당 봇에 이미 webhook이 연결돼 있어
getUpdates로 채팅 ID를 못 얻는 문제를 발견 → webhook을 건드리지 않고 @userinfobot으로 우회해 채팅 ID 확보환경변수 설정 후 실제 텔레그램 발송 성공까지 확인
naver_finance_macro.py- 텔레그램 발송으로 전환
6. Flask 웹 대시보드 제작
현재까지 만든 내용을 웹에서 확인할 수 있도록 웹페이지로 만들어줘- 리프레시 버튼을 만들어서 최신 정보를 확인 할 수 있도록 해줘
- 화면에 출력된 정보가 언제 가져온 것인지 알 수 있도록 타임스탬프를 기록해줘
Claude Code 작업:
기존 크롤링 로직을 재사용하는 Flask 서버와 대시보드 페이지 작성
매크로 지표/관심 종목을 카드로 구분하고, 상승은 빨강 ▲ / 하락은 파랑 ▼로 표시(네이버 관례와 동일)
새로고침 버튼을 실제로 클릭해 조회 시각이 갱신되는 것을 직접 확인
webapp.py- 로컬 개발용 Flask 서버templates/index.html- 대시보드 화면(카드 레이아웃, 새로고침 버튼, 타임스탬프)
7. KST 타임스탬프 버그 수정
색 정보가 없는데Claude Code 작업:
배포 서버가 미국 리전이라 "조회 시각"이 UTC로 표시되는 버그를 발견하고
api/index.py에서 KST(UTC+9) 고정 타임존을 사용하도록 수정커밋
Fix report timestamp to use KST instead of server local time후 push하여 GitHub 연동 자동 재배포로 반영, 실제 사이트에서 KST 정상 표시 확인api/index.py- KST 타임스탬프로 수정
8. 텔레그램 CLI 고도화: 스타일 개선 + 매시간 시황 브리핑 + 3% 급등락 알림
CLI 관련해서 콘솔 출력은 제거하고, 텔레그램을 보내는 정보를 첨부와 같이 좀 더 세련되게 바꿔줘. 삼성전자 아래 삼성전자 우량주 정보 add해주고, 매일 한국장이 개장하면, 한시간 단위로 전체 시황 탤레그램으로 공유해주고, 삼성전자와 하이닉스 주식이 3의 배수 %이상 오르거나 내리는 시점을 모니터링 해서 텔레그렘에 정보를 보내줘.Claude Code 작업:
naver_finance_macro.py에서 콘솔 출력용 포맷터를 모두 제거하고 텔레그램 전용 HTML 메시지 빌더로 교체STOCKS에 삼성전자우(005935) 추가매일 평일 09~15시(KST, 한국 정규장 근사) 매시 정각에 전체 시황을 텔레그램으로 보내는
hourly_briefing.py신설(Windows 작업 스케줄러로 매시간 실행 전제)삼성전자·SK하이닉스가 3%의 배수 구간을 새로 돌파할 때만 알림을 보내는
monitor_alerts.py신설, 중복 알림 방지를 위해alert_state.json에 종목별 마지막 알림 구간 저장monitor_alerts.py양쪽에 반영hourly_briefing.py- 장 시간 매시 정각 전체 시황 브리핑monitor_alerts.py- 삼성전자/SK하이닉스 3% 구간 돌파 감시 알림alert_state.json- 알림 중복 방지용 종목별 마지막 알림 구간 상태 파일(.gitignore 처리)
naver_finance_macro.py- S&P500·항셍·달러인덱스·JPY/KRW·국내금 매크로 지표 추가
주요 기능
매크로 지표 크롤링
코스피·코스닥·나스닥·S&P500·항셍·달러 환율(USD/KRW)·달러인덱스·엔화(JPY/KRW)·국제금·국내금을 네이버 금융에서 실시간 크롤링
관심 종목 시세
국내 5종목(삼성전자·삼성전자우·SK하이닉스·삼성전기·현대차)과 해외 2종목(엔비디아·마이크론)의 현재가·등락폭·등락률 조회
텔레그램 알림
CLI 실행 시 전체 시황을 텔레그램으로 즉시 발송
평일 09~15시(KST) 매시 정각 자동 시황 브리핑(
hourly_briefing.py)삼성전자우·SK하이닉스가 3% 배수 구간을 새로 돌파할 때만 중복 없이 알림(
monitor_alerts.py)
웹 대시보드
새로고침 버튼과 조회 시각(KST) 타임스탬프가 있는 Flask 기반 웹 대시보드
Vercel에 배포되어 상시 접근 가능, GitHub push 시 자동 재배포