Skip to main content
Glama
JinyongHyun

notion_summary_server

by JinyongHyun

notion-finance-digest

매달 1일·15일·말일 자동으로 시장 데이터·뉴스를 수집해 Notion에 저장하는 투자 리서치 자동화 시스템.
MCP 서버(server.py)와 GitHub Actions 배치 스크립트(daily_action.py)로 구성됩니다.

⚠️ Notion 관련 작업은 이 폴더를 VS Code에서 열고 사용해야 합니다.
CLAUDE.md가 이 폴더에 위치해 있어, 여기서 열어야 Claude가 Notion 규칙을 적용합니다.


📁 파일 구조

notion-finance-digest/
├── .github/
│   └── workflows/
│       └── daily.yml       # GitHub Actions 워크플로우 (매달 1일·15일·말일 09:00 KST 자동 실행)
├── CLAUDE.md               # Claude Code 작업 규칙
├── daily_action.py         # 일일 자동화 스크립트 (GitHub Actions 전용)
├── server.py               # MCP 서버 (Notion 저장 도구)
├── .env                    # 환경변수 (직접 생성, git 제외)
├── .env.example            # 환경변수 템플릿
├── requirements.txt
└── README.md

Related MCP server: notion-mcp-server

🤖 일일 자동화

GitHub Actions 자동 실행

  • 스케줄: 매달 1일·15일·말일 오전 09:00 KST (GitHub cron 최대 수 시간 지연 가능)

  • 실행일 외: cron은 1,15,28-31에 매번 트리거되며, 스크립트 내부에서 calendar.monthrange로 실제 1일/15일/말일 여부를 재확인해 아니면 스킵

  • 공휴일: 한국 공휴일 자동 감지 후 스킵 (holidays 라이브러리)

  • 시간대: KST(UTC+9) 기준으로 날짜·말일 계산

  • 수동 실행: GitHub → Actions → Daily Notion Summary → Run workflow

  • 필요 Secrets: NOTION_API_KEY, ANTHROPIC_API_KEY

  • Node.js: 24 강제 적용 (FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: 'true')

  • AI 모델: Claude Sonnet 4.6 (Anthropic API)

  • RSS 재시도: 0건 반환 시 3초 간격으로 최대 2회 자동 재시도

  • 빈 콘텐츠 방지: 모든 국내 뉴스 소스가 0건이면 ①② 저장 스킵

저장 항목 (4개)

항목

제목 형식

아이콘

sub_category

① 뉴스 종합

[YYYY-MM-DD] 경제 뉴스 종합

📰

뉴스

② 주간브리핑

[YYYY-MM-DD] 주간 투자 브리핑

📊

주간브리핑

③ Claude 인사이트

[YYYY-MM-DD] Claude 인사이트

🔍

산업분석

④ 포트폴리오 브리핑

[YYYY-MM-DD] 포트폴리오 브리핑

💼

포트폴리오

  • 오늘 날짜 페이지가 이미 있으면 항목별 자동 스킵

  • 4개 항목 Claude 요약 병렬 생성 후 순차 저장

실행 순서

  1. 오래된 항목 자동 삭제 — RETENTION_DAYS 기준 초과 항목 아카이브

  2. 중복 체크 — 오늘 날짜 페이지 이미 존재하면 해당 항목 스킵

  3. 데이터 수집 — RSS·yfinance·네이버 금융 병렬 수집

  4. Claude 요약 생성 — 필요한 항목만 병렬 API 호출

  5. Notion 저장 — stock_research DB에 페이지 생성

데이터 소스

소스

항목

수집량

연합뉴스 RSS

①②③④

5건

한국경제 RSS

①②③④

3건

매일경제 RSS

①②③④

3건

Reuters RSS

③④

3건

CNBC RSS

③④

3건

MarketWatch RSS

③④

3건

연합뉴스 국제경제 RSS

③④

3건

네이버 금융 리서치

③

10건 (제목·증권사명)

yfinance 시장 데이터

③④

KOSPI·KOSDAQ·S&P500·NASDAQ·달러인덱스·WTI·금·달러/원

보존 기간 (자동 삭제)

카테고리

보존 기간

뉴스

14일

주간브리핑

30일

산업분석

60일

포트폴리오

60일


🗄️ Notion DB 구조

모두 "Finance & 투자" 페이지 (33117b872be68187a1b4ddc51261856e) 내 인라인 DB.

DB

ID

용도

📰 주식 리서치

39bf50a1aca04ad2a10079e958cf96d4

뉴스 / 산업분석 / 주간브리핑 / 포트폴리오

📚 주식 공부노트

d1afcb876857487eb978c1a8e0952d05

용어 / 이론 / 지표 / 전략 / 산업지식

📖 AI 논문

34617b872be68060a474e18a73510f38

논문 리뷰 및 요약


🔧 MCP 도구 (server.py)

도구

설명

save_summary_to_notion

논문·주식 리서치·공부노트를 Notion DB에 새 페이지로 저장

update_notion_page

기존 Notion 페이지에 내용 추가(append)

save_summary_to_notion 파라미터

파라미터

타입

필수

설명

title

string

✅

페이지 제목

content

string

✅

본문 내용

source_url

string

✅

원본 URL

category

"paper" | "stock_research" | "stock_study"

✅

저장 DB 선택

sub_category

string

❌

카테고리 세분류

source

string

❌

출처

tags

list[string]

❌

태그 목록

difficulty

string

❌

난이도 — stock_study 전용 ("기초" | "중급" | "고급")

icon

string

❌

페이지 아이콘 이모지 (예: "📰")


⚙️ 환경 설정

의존성 설치

& "D:\Anaconda3\envs\project\python.exe" -m pip install -r requirements.txt

환경변수 (.env)

NOTION_API_KEY=secret_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
NOTION_PAPER_DB_ID=34617b872be68060a474e18a73510f38
NOTION_STOCK_RESEARCH_DB_ID=39bf50a1aca04ad2a10079e958cf96d4
NOTION_STOCK_STUDY_DB_ID=d1afcb876857487eb978c1a8e0952d05
ANTHROPIC_API_KEY=sk-ant-xxxxxxxxxxxxxxxxxxxxxxxx

MCP 서버 등록 (Claude Code)

~/.claude/settings.json에 추가:

{
  "mcpServers": {
    "notion-finance-digest": {
      "command": "D:\\Anaconda3\\envs\\project\\python.exe",
      "args": ["d:/projects/python/notion-finance-digest/server.py"]
    }
  }
}

✍️ 콘텐츠 포맷 규칙

  • 마크다운 헤더(##, ###) 사용 금지 → ━━━ 섹션명 ━━━ 형식 사용

  • 이모지 적극 활용 (섹션 구분, 수치 강조)

  • 문단 형식으로 충분히 서술 (bullet 나열 금지)


⚠️ 주의사항

  • .env는 .gitignore에 포함되어 있습니다. API 키를 커밋하지 마세요.

  • Notion DB의 title 프로퍼티 이름은 자동으로 감지합니다.

  • 본문이 길면 자동 분할 저장합니다 (Notion 블록 제한: 2000자).

  • MCP 서버 코드 변경 후에는 Claude Code를 재시작해야 합니다.

  • 포트폴리오 변경 시 daily_action.py 상단 PORTFOLIO_HOLDINGS 상수를 수동으로 업데이트해야 합니다.

Related MCP Connectors

Related MCP Servers