[주식 데이터 자동 기록 기초] EP03. 노션 API 연동 및 데이터베이스 자동 수신 환경 구축
지난 EP01에서 자동화 프로그램이 구글 블로그에 직접 글을 쓸 수 있도록 마스터키를 확보하는 기초 공사를 마쳤고, EP02에서는 야후 파이낸스 실시간 주가를 스마트폰 텔레그램 알림으로 전송하는 자동 비서를 구축했다. 이번 EP03은 이 시리즈의 핵심으로, 수집한 주가 데이터들을 노션 표(데이터베이스)에 차곡차곡 누적 보관하는 자동화 시스템을 완성할 차례다.
1. 준비
(1) 노션 시크릿 토큰(API 키)
파이썬이 내 노션 계정에 안전하게 접속할 수 있도록 문을 열어주는 일종의 '비밀번호'다. 오늘 자동화 코드를 구동하려면 이 마스터키가 필요하다.
(2) 이전 시리즈 연동 환경 확인
이 프로젝트는 야후 파이낸스, 텔레그램, 노션을 파이썬으로 연결하는 시리즈다. 1편의 구글 블로거 연동과 2편의 주가 수집 및 텔레그램 테스트가 완료되어야 오늘 다룰 3편 코드를 에러 없이 실행할 수 있다. 선행 작업이 누락되었거나 초보자라면 아래 이전 글을 통해 필요사항을 먼저 구축해야 한다.
2. 노션 데이터베이스ID 추출 및 API 연동
파이썬 코드를 만들면 파이썬 내에서 결과물을 전송받는게 아니라 노션으로 전송받게 하려고 한다. 데이터를 노션으로 자동 저장하면 불필요한 에너지 소모를 줄일 수 있다.
이렇게 노션으로 전송받으려면 해당 페이지에 정확한 공간(표)에 넣으라고 지정을 해줘야 한다. 이 지정 공간을 데이터베이스 아이디라고 하는데 어렵게 생각할 필요없이 노션에 자료를 제공받을 페이지 상단의 웹 주소같은 주소라고 보면 된다. 이 주소를 명령에 넣어주어야 노션의 지정된 공간으로 데이터가 자동 수신된다.
노션 페이지 지정
(3) 노션에서 새로운 페이지를 만든다.
(4) 만들어진 빈 페이지에 '/데이터베이스-인라인'이라고 입력 해 새로운 표를 만든다.
(5) 이름 칸을 종목명으로 수정한다.
(6) 그 우측의 + 버튼을 눌러 새로운 속성을 추가한다. 속성 종류는 반드시 '숫자'를 선택하고, 컬럼 제목은 '현재가'로 변경해 준다.
⚠️ 노션 표의 '현재가' 속성 유형을 '숫자'로 맞추지 않으면 400 에러가 발생한다. 여기서 많이 헤맸으니 속성 종류를 꼭 확인하자.
(7) 노션 페이지 우측 상단 메뉴(···) ➡ 연결을 누른 뒤, 위 1번에서 준비해 둔 본인의 API 봇 이름을 찾아 클릭한다.
노션 API 연동 설정
(8) '이 페이지에 (본인 API 봇 이름) 추가'라는 제목의 팝업창이 뜨면 아래 파란색 '페이지 추가' 버튼을 클릭한다.
노션 데이터베이스 ID 추출
(9) 노션 페이지 본문에서 만든 표(현재가, 종목명이 적힌 표) 내부에 마우스를 올린다.
(10) 표 우측 상단 파란 '새로 만들기' 버튼 근처에 양방향 화살표 모양의 ⤢ 아이콘(전체 페이지로 열기)을 클릭한다.
(11) 표가 화면 전체를 채우는 독립된 창으로 변다.
(10) 이 상태에서 브라우저 맨 위 주소창의 주소를 복사한다.
위 예시에서 https://www.notion.so/ ➡ 이 부분 뒤, ? 앞 문자+숫자 조합 총 32자리 '3641f26401d4805a885ffa892a75f32b' 문자 부분이 노션의 데이터 베이스 ID이다. 이 32자리 문자를 잘 저장해두자. 이 데이터베이스ID가 있어야 해당 페이지로 데이터가 자동 수신이 된다.
3. 야후 파이낸스 X 노션 연동 파이썬 코드 작성
이전 글들에서 설치했던 것들을 통해 이제 야후 파이낸스의 주가 데이터를 노션으로 자동 전송해주는 코드를 넣어야 한다. 위 1번에서 준비하라고 했던 노션의 토큰(API 키) 여기에서 필요하다.
(12) VS Code 프로그램을 열자. 왼쪽 상단 메뉴의 'File' ➡ 'New File..'을 클릭한다.
(13) 상단 빈칸에 'notion_stock.py'라고 입력 후 엔터를 누르면 자동으로 'blog_bot' 폴더의 저장 루트로 열린다. 파일형식이 'All Files' 로 되어 있는지 확인 후 아래 'Create File' 버튼을 클릭해 저장한다.
notion_stock.py
(14) VS Code 프로그램 상단에 'notion_stock.py' 창이 새로 만들어졌다.
(15) 1행 : 아래 코드를 복사해 본인의 노션 토큰과 데이터베이스 ID를 입력한 후 1행에 붙여넣기 한다.
NOTION_TOKEN = "여기에_노션_시크릿_토큰_입력"
DATABASE_ID = "여기에_노션_데이터베이스_ID_입력"
import requests import yfinance as yf # 1. 고정 마스터키 설정 (본인의 키값으로 대체) NOTION_TOKEN = "여기에_노션_시크릿_토큰_입력" DATABASE_ID = "여기에_노션_데이터베이스_ID_입력" # 2. 야후 파이낸스 주가 수집 (예시: 삼성전자) ticker_symbol = "005930.KS" stock = yf.Ticker(ticker_symbol) current_price = stock.history(period="1d")["Close"].iloc[-1] stock_name = "삼성전자" # 3. 노션 API 수신 규격(JSON) 조립 headers = { "Authorization": f"Bearer {NOTION_TOKEN}", "Content-Type": "application/json", "Notion-Version": "2022-06-28", } payload = { "parent": {"database_id": DATABASE_ID}, "properties": { "종목명": {"title": [{"text": {"content": stock_name}}]}, "현재가": {"number": int(current_price)}, }, } # 4. 노션 데이터베이스로 데이터 송신 및 결과 확인 url = "https://api.notion.com/v1/pages" response = requests.post(url, headers=headers, json=payload) if response.status_code == 200: print(f"🚀 [{stock_name}] 노션 데이터베이스 자동 기록 성공!") else: print(f"❌ 기록 실패 코드: {response.status_code}") print(response.text)
(16) VS Code 프로그램의 notion_stock.py 탭이 활성화된 상태에서 Ctrl + S를 눌러 저장한다.
💡 VS Code 파일 저장 상태 확인 팁
- 저장 상태 확인 : 현재 notion_stock.py 탭 옆에 동그라미(●) 표시가 되어 있으면 저장 전이라는 표시이다. 동그라미가 X 표시로 변경되었으면 저장 완료라는 표시이다.
(17) 이전 에피소드 1, 에피소드 2를 따라해봤다면 'blog_bot' 폴더를 알것이다. 이 'blog_bot' 폴더 안에 'notion_stock.py'라는 파일이 새로 저장되어 있음을 확인 할 수 있다.
4. 파이썬 코드에 마스터키 입력 및 최종 실행
(18) 다시 VS Code 프로그램으로 돌아와서, 아까 2번 단계에서 생성해 두었던 notion_stock.py 라는 이름의 창을 활성화한다.
(19) VS Code 하단의 터미널(Terminal) 창에 아래 명령어를 복사해 붙여넣기하고 엔터를 누른다. (만약 터미널 창이 안 보인다면 상단 메뉴의 'Terminal' ➡ 'New Terminal'을 클릭해 열어준다.)
python notion_stock.py
(20) 잠시 후 터미널 창에 아래와 같은 문구가 뜨면 성공이다.
🚀 [삼성전자] 노션 데이터베이스 자동 기록 성공! ➡ 성공이다!
(21) 노션에서 연동시킨 페이지로 들어가보자. 만들어 놓은 표에 아래와 같이 자동 입력이 되어 있다.
삼성전자, 281000 ➡ 성공이다!
오늘은 파이썬을 활용해 실시간 주가 데이터를 노션 데이터베이스에 자동으로 기록하는 환경을 구축했다. 다음 편에서는 오픈다트(OpenDART) API를 연동하여 실시간 공시 데이터를 추출하고 노션에 자동으로 수신하는 과정을 다룰 예정이다.
📦 함께 보면 좋은 글 : 파이썬 주식 데이터 자동 기록 기초 시리즈
파이썬과 깃허브 액션을 활용하여 주식 및 공시 데이터를 자동으로 수집하고 관리하는 시리즈다.
기초 환경 세팅부터 노션 연동, 최종 무인 배포까지 단계별로 구성했다.
#주식자동화 #파이썬 #노션API #노션데이터베이스 #주식데이터자동기록 #야후파이낸스 #VSCode
댓글
댓글 쓰기