zoeylog
zoeylog
About me
조이의 연습장 (Blog)
이미지 아카이브
우주고양이
로그인
조이의 연습장 (Blog)

AI가 매일 아침 증권사 리포트를 읽어주는 시스템 만들기 (OpenClaw)

조이
2026년 4월 4일3달 전
카테고리
  1. 자동화
투자 에이전트 '돈냥이'가 매일 아침 증권사 리포트를 자동 수집하고, AI가 분석한 인사이트를 슬랙과 텔레그램으로 보내주는 시스템을 만든 과정을 공유합니다.

세 번째 팀원 — 돈냥이 💰🐱

1편에서 OpenClaw를 설치하고 첫 번째 AI 비서 '달밤이'를 만들었어요. 그 다음 콘텐츠 매니저 '슝이'까지, 둘이 자리를 잡아가고 있었죠.
OpenClaw 설치부터 첫 비서 달밤이 탄생까지 - 조이의 연습장 (Blog) - zoeylog
[삶을 구조화하는 루틴 빌더] 조이의 경험 축적, 아카이브 공간
slashpage.com
근데 매일 하는 일 중 하나가 아직 자동화가 안 되어 있었습니다. 투자 리서치.
매일 아침 증권사 리포트 훑어보고, 뉴스 체크하고, 포트폴리오 점검하고. 이걸 매일 하면 30분~1시간이 녹아요. 뉴스 하나 읽다 보면 링크 타고 들어가서 한 시간이 지나있죠.
그래서 세 번째 에이전트를 만들기로 했습니다.

OpenClaw에 새 에이전트 추가하기

OpenClaw는 에이전트를 여러 개 돌릴 수 있어요. 어제 만든 비서실장 '달밤이'에게 새 직원을 뽑고 싶다고 이야기합니다.
대답을 몇번 하고 무슨 업무를 맡기고 싶은지 정해주면, 달밤이가 새 직원을 만들기 시작합니다.
그렇게 탄생한, 돈냥이💰🐱
•
역할: 투자 자문위원 — 쉽게 설명해주는 투자 친구
•
원칙: 좋은 것만 말하지 않고 리스크도 솔직하게. 모르면 절대 아는 척 금지.
•
채널: 슬랙 #investment-strategy 채널 전담
달밤이(비서실장)가 돈냥이에게 업무를 지시하고, 돈냥이는 자기 채널에서 투자 관련 일을 처리하는 구조예요. 제가 직접 일을 시키기도 하고요. 에이전트끼리는 sessions_send로 소통합니다.

돈냥이에게 시킨 첫 번째 일

"매일 아침 증권사 리포트를 자동으로 수집해서, AI가 분석한 브리핑을 슬랙이랑 텔레그램으로 보내줘."
단순 요약이 아니라, 여러 리포트를 교차 분석해서 "오늘 시장에서 뭐가 중요한지"를 한눈에 파악할 수 있는 브리핑을 원했어요. 돈냥이가 파이썬 스크립트를 짜고, 크론으로 자동 실행하고, 슬랙·텔레그램 발송까지 — 그 시스템을 만든 과정을 공유합니다.

전체 구조 — 어떻게 돌아가나

흐름 요약

1.
매일 아침 9:30~11:00, macOS 크론이 파이썬 스크립트를 자동 실행
2.
네이버 금융 리서치 페이지에서 당일 발행된 증권사 리포트 목록을 수집
3.
조회수 + 주요 증권사 기준으로 카테고리별 상위 5개를 선별
4.
선별된 리포트의 PDF를 다운로드하고 텍스트를 추출
5.
1단계 — Haiku(경량 AI): 리포트별 150자 요약 (핵심 수치·종목 포함)
6.
2단계 — Sonnet(고급 AI): 전체 요약을 종합 분석해서 인사이트 생성
7.
슬랙 채널과 텔레그램으로 발송

1단계: 리포트 수집 — 네이버 금융 크롤링

데이터 소스는 네이버 금융 리서치 페이지입니다.
https://finance.naver.com/research/company_list.naver   ← 종목분석
https://finance.naver.com/research/industry_list.naver  ← 산업분석
https://finance.naver.com/research/market_info_list.naver ← 시황정보
https://finance.naver.com/research/invest_list.naver    ← 투자정보
https://finance.naver.com/research/economy_list.naver   ← 경제분석
https://finance.naver.com/research/debenture_list.naver ← 채권분석
6개 카테고리를 돌면서 오늘 날짜 리포트만 필터링합니다. 페이지네이션도 처리해서, 당일 리포트가 여러 페이지에 걸쳐 있어도 전부 수집해요.

핵심 리포트 선별 로직

하루에 리포트가 수십~백 개가 올라옵니다. 전부 분석하면 시간도, API 비용도 낭비. 그래서 상위 10개만 골라요.
선별 기준:
•
조회수 정규화 — 해당 카테고리 내 최대 조회수 대비 비율 (0~100점)
•
주요 증권사 보너스 — 삼성·미래에셋·KB·NH·한국투자 등 15개 대형사면 +30점
MAJOR_BROKERS = {
    "삼성증권", "미래에셋증권", "KB증권", "NH투자증권", "한국투자증권",
    "신한투자증권", "키움증권", "하나증권", "대신증권", "메리츠증권",
    "IBK투자증권", "교보증권", "유안타증권", "현대차증권", "LS증권",
}

# 점수 = (조회수/최대조회수 × 100) + (주요증권사면 30)
이렇게 하면 "많이 본 리포트 + 신뢰도 높은 증권사" 조합이 상위에 올라옵니다.

2단계: PDF → 텍스트 추출

선별된 리포트의 PDF를 다운로드해서 텍스트를 뽑습니다.
import fitz  # PyMuPDF 라이브러리

doc = fitz.open(pdf_path)
for i, page in enumerate(doc):
    if i >= 3:  # 앞 3페이지만 (핵심은 앞에 있음)
        break
    text += page.get_text()
PDF 전체를 읽으면 차트 설명, 면책조항 같은 잡음이 많아요. 앞 3페이지만 추출하면 핵심 내용을 효율적으로 잡을 수 있습니다.

3단계: AI 2단계 분석

여기가 핵심입니다. AI 분석을 두 단계로 나눈 이유가 있어요.

1차 — Haiku로 개별 요약

Haiku(Claude의 경량 모델)가 리포트 하나하나를 150자 이내로 요약합니다.
요약 조건:
- 핵심 주장 1줄
- 구체적 수치나 종목이 있으면 반드시 포함
- 150자 이내
빠르고 저렴한 모델로 "정보 압축"을 먼저 해요. 6개 카테고리 × 5개 = 최대 30개 리포트를 한꺼번에 고급 모델한테 던지면 비용도 크고 핵심이 묻히거든요. 그리고 이 작업을 2번 진행합니다.

2차 — Sonnet으로 종합 인사이트

Sonnet(고급 모델)이 모든 요약을 모아서 종합 분석합니다. 단순 나열이 아니라 재해석.
출력 형식:
🔥 오늘의 핵심 (3줄)
→ 여러 리포트에서 겹치거나 임팩트 큰 시장 메시지

📊 주목 테마
→ 반복 언급된 섹터/테마 2~3개, 주목 이유 포함

💎 주목 종목 (최대 5개)
→ 여러 리포트 언급 + 모멘텀 + 수급 흐름 기준 선별

⚠️ 리스크 요인
→ 리포트들이 경고하는 리스크
이렇게 하면 "리포트 30개 읽은 효과"를 1분 안에 얻을 수 있어요.

4단계: 슬랙 + 텔레그램 발송

슬랙

slack-sdk 파이썬 라이브러리로 발송합니다.
from slack_sdk import WebClient
client = WebClient(token=SLACK_BOT_TOKEN)
client.chat_postMessage(channel=SLACK_CHANNEL_ID, text=message)
메시지가 4000자를 넘으면 자동으로 분할 발송해요. 슬랙 API 제한이 있거든요.

텔레그램

텔레그램 Bot API로 발송합니다.
url = f"https://api.telegram.org/bot{TOKEN}/sendMessage"
requests.post(url, json={"chat_id": CHAT_ID, "text": message})
텔레그램 봇 만드는 법:
1.
텔레그램에서 @BotFather 검색 → /newbot 명령
2.
봇 이름과 username 설정 → API 토큰 발급
3.
봇과 대화 시작 → https://api.telegram.org/bot{TOKEN}/getUpdates로 chat_id 확인
4.
config.py에 토큰과 chat_id 저장
이렇게 하면 폰으로도 브리핑을 받아볼 수 있어요.

크론 스케줄 — 자동 실행 설정

macOS crontab으로 매일 자동 실행합니다. 한 번에 6개 카테고리를 다 돌리지 않고, 시간차를 두고 카테고리별로 실행해요.
# 매일 오전 9시 — 전날 로그 초기화
0 9 * * 1-5 > ~/Projects/dongnyangi-research/logs/today_briefing.txt

# 9:30 — 종목분석 + 산업분석 (batch 1)
30 9 * * 1-5 cd ~/Projects/dongnyangi-research && python3 test_quality.py --batch 1

# 10:00 — 시황정보 + 투자정보 (batch 2)
0 10 * * 1-5 cd ~/Projects/dongnyangi-research && python3 test_quality.py --batch 2

# 10:30 — 경제분석 (batch 3)
30 10 * * 1-5 cd ~/Projects/dongnyangi-research && python3 test_quality.py --batch 3

# 11:00 — 채권분석 (batch 4)
0 11 * * 1-5 cd ~/Projects/dongnyangi-research && python3 test_quality.py --batch 4

# 14:00 — 오후 능동 리서치
0 14 * * 1-5 cd ~/Projects/dongnyangi-research && python3 afternoon_insight.py
왜 나눴나?
•
증권사 리포트가 9시~11시 사이에 순차적으로 올라옴
•
한 번에 돌리면 아직 안 올라온 카테고리는 0개 수집
•
시간차를 두면 각 카테고리별 최신 리포트를 최대한 잡을 수 있음
•
1-5 = 월~금만 실행 (주말엔 증권사도 쉬니까)

👋 오후 능동 리서치 — 하루가 끝나지 않았다

오전 브리핑만으로는 부족합니다. 시장은 하루 종일 움직이니까요.
오후 2시에 자동 실행되는 두 번째 시스템:
1.
오전에 발송했던 브리핑 로그를 읽음
2.
AI가 핵심 키워드 5개를 자동 추출
3.
각 키워드로 Google News RSS + 네이버 뉴스 실시간 검색
4.
오전 내용과 연결해서 "오후에 뭐가 달라졌는지" 분석
5.
키워드별로 짧은 메시지(300자 이내)로 끊어서 발송
6.
📌 삼성전기 업데이트
오전에 목표주가 상향 말씀드렸는데, 오후에 보니 외국인이 
3거래일 연속 순매수 중이에요. MLCC 재고 사이클이...

출처: Reuters  네이버경제
핵심 규칙: 1차 정보(당연한 사실)는 쓰지 않습니다. "유가 올랐다" 대신 "유가 급등 → 국내 물류비 → 특정 종목 마진 영향"처럼 2차·3차 구조적 연결만 전달해요.

설치와 실행 — 직접 만들어보려면

필요한 것

Python 3.x
pip install requests beautifulsoup4 pymupdf anthropic python-dotenv slack-sdk

환경변수 (config.py 또는 .env)

ANTHROPIC_API_KEY=sk-ant-...    # Anthropic API 키
SLACK_BOT_TOKEN=xoxb-...       # Slack Bot 토큰
SLACK_CHANNEL_ID=C0AQ...       # 발송할 Slack 채널 ID
TELEGRAM_BOT_TOKEN=123456:ABC  # 텔레그램 봇 토큰 (선택)
TELEGRAM_CHAT_ID=7920761494    # 텔레그램 채팅 ID (선택)

슬랙 봇 설정

1.
api.slack.com/apps에서 새 앱 생성
Slack API: Applications | Slack
api.slack.com
1.
OAuth & Permissions → chat:write 스코프 추가
2.
워크스페이스에 설치 → Bot Token 복사
3.
브리핑 받을 채널에 봇 초대 (/invite @봇이름)

수동 테스트

cd ~/Projects/dongnyangi-research
python3 research_briefing.py
정상 작동하면 크론에 등록.

그렇게 만들었습니다. 돈냥이의 데일리 리포트 ✨

돈냥이의 데일리 리포트
매일 올라오는 증권 리포트 알려준다냥💰🐱
t.me
베타테스터 들어오세요!

만들면서 부딪힌 것들

크론 시간 설정 — 처음에 8시로 돌렸더니 리포트가 0개. 증권사 리포트는 9시 이후에 올라와요. 직접 돌려봐야 알 수 있는 것들.
macOS crontab 권한 — AI 에이전트가 crontab -e를 실행하면 macOS 보안 UI가 뜨는데, AI는 그 화면을 볼 수도 클릭할 수도 없어요. crontab 수정은 사람이 직접 해야 합니다.
환경변수 충돌 — .env 파일에 만료된 API 키가 있었는데, load_dotenv(override=True) 때문에 정상 인증을 덮어써 버림. override=False로 바꾸고 해결.
주말 크론 — 토요일 아침 "왜 리포트 안 왔어?" → 증권사도 주말엔 쉽니다. 크론을 * * 1-5(월~금)로 수정.
zoeylog
'zoeylog' 구독하기
사이트를 구독하면 새 포스트 등 최신 업데이트를 알림과 메일로 가장 먼저 받아보실 수 있습니다.
Slashpage에 가입하고 'zoeylog'을 구독하세요!
구독
2
👍
6
W
Wild scarlet water
7일 전
하나 만들어야 하나 하고 자동 리포트 크롤링 코드 검색했는데..! 이렇게 만들어주셨다니 감사합니다 💗💗
조이
7일 전
잘 읽어주셔서 제가 더 감사합니다 ☺️☺️ 돈냥이 집 이사중이라서 지금 잠시 레포트가 멈췄는데, 이사 끝나면 빨리 일 다시 시킬게요🤣🤣
최신 댓글 더보기