[Step 1] Notion에서 Integration 설정
아래 링크에서 로그인 후, API 추가해줍니다.
https://www.notion.so/my-integrations
- 이름을 자유롭게 지어주고, 유형은 프라이빗으로 선택합니다.
저장을 누르면 아래와 같이 API 통합이 생성됩니다.
- 설정 누성을 누르고 프라이빗 API 통합 시크릿 키(Token)를 복사합니다. -> 이게 Python에서 사용하는 API 키입니다.
[Step 2] Notion 페이지(또는 DB)에 Integration 권한 부여
<필요한 정보>
Integration Token: Notion API 키
Database ID: 데이터를 저장할 Notion DB ID
Title 필드 이름: title로 쓸 Notion 속성 이름
1) 데이터베이스에 integration 권한 부여
데이터 베이스 기존 꺼로 하셔도 되고, 새로 생성하셔도 되는데, 다만 전체 페이지로 열어주셔야 합니다.
저는 아래와 같이 빈 데이터베이스 페이지를 생성해주었습니다.
상단 [공유] 버튼을 누른 후 사전에 발급받은 키의 이름을 넣고 초대 버튼을 눌러줍니다.
(뒤에 메일 주소가 함께 뜨는 거 정상입니다...)
2) DB ID 발급
상단 오른쪽의 점 세 개 누른 후 -> 링크 복사 누르신 후, 해당 주소에서 DB ID를 추출하면 됩니다.
페이지이름-<32자리ID>?v= <- 노션의 URL 구조는 이와 같은데, 여기서 32자리의 영문+숫자 조합이 DB ID입니다.
[Step 3] Python 코드로 실제 요청 보내기
DB ID + Integration Token을 GPT에게 주어서 python → Notion API 연동용 Payload 템플릿 JSON 파일을 받습니다.
이 파일은 notion에 보내는 데이터 패킷입니다.
- JSON 파일: Notion한테 보내는 구조화된 편지
- Prompt: 질문 내용
- Response: GPT가 준 답변
- Timestamp: 기록한 시간
Python 코드가 이 파일을 읽어서 → Notion에 자동으로 저장하는 원리입니다.
< 자동화 시스템: 필요한 툴 리스트 >
1. Python: 자동화 스크립트 실행
2. requests 라이브러리: Notion API로 POST 요청 보내는 라이브러리
3. VS Code (또는 텍스트 편집기): Python 코드 수정 & 실행
1-1. (https://www.python.org/downloads/) <- 이 링크에서 파이썬 설치 안 되신 분들은 설치해주시면 됩니다!
2-1. 터미널 열고 다음과 같이 입력해줍니다.
pip install requests
pip show requests
3-1. VS Code 열어서 새 텍스트 파일에 아래 코드를 붙여넣고
- NOTION_TOKEN
- DATABASE_ID
- Payload에 json 파일 넣어줍니다.
import requests, json
NOTION_TOKEN = "secret_xxx..."
DATABASE_ID = "abc123..."
headers = {
"Authorization": f"Bearer {NOTION_TOKEN}",
"Content-Type": "application/json",
"Notion-Version": "2022-06-28"
}
with open("json파일") as f:
data = json.load(f)
data["parent"]["database_id"] = DATABASE_ID
res = requests.post("https://api.notion.com/v1/pages", headers=headers, json=data)
print(res.status_code, res.json())
파일 실행하는데 오류가 떠서 잠깐 당황하고 터미널에서 가서...
아래 코드를 쳐주었더니...????? 또 어쩌고 저쩌고 뭔 에러가 떠서... GPT한테 물어보니까 macOS + Homebrew + 최신 Python 환경에서만 나오는 아주 특수한 에러로 macOS가 최근부터 “시스템 Python을 보호”하기 위해 pip 설치를 막는 정책 (PEP 668)을 쓰기 시작했기 때문에 발생하는 거라고 하네요^^....;;;
- 제가 설치한 Python은 Homebrew가 관리하는 “외부 관리 환경”
- 그래서 pip install을 직접 쓰면, 시스템에 영향을 줄까 봐 차단당한 것
- 해결법은 Virtual Environment (가상 환경)을 사용하는 것이라고 합니다.
pip3 install requests
가상환경 만들기 + 진짜 requests 설치
를 통해 해결할
# 1. 가상환경 생성
python3 -m venv ~/coretrace-env
# 2. 가상환경 활성화
source ~/coretrace-env/bin/activate
# 3. 업데이트(생략 가능)
pip install --upgrade pip
# 4. 이제 여기 안에서 requests 설치 가능
pip install requests
그리고 저거 하고서도 DB 속성값이 안 맞아서 오류 떴는데 JSON 파일이랑 정확히 맞춰줘야 합니다.
저는 Title 속성 -> 'Name', Text 속성 -> Response, Date 속성 -> 'Timestamp'로 맞추었습니다.
아 그리고 notion 앱에서는 바로 보이지 않기도 한다 해서, 웹에 들어가서 보시면 있을 수도 있어요.
[Step 4] GPT의 질문 생성 및 응답 자동화
<필요한 구성요소>
1. GPT API (OpenAI): 질문 생성 + 응답 생성
2. Notion API: 결과 저장
3. Python 루프: 자동 반복 처리
1-1. https://platform.openai.com/account/api-keys 여기서 개발자 키 발급받으시면 됩니다!
2-1. 아래 코드에 GPT 키와 노션 키를 넣어서 파일 저장해줍니다.
from openai import OpenAI
import requests
from datetime import datetime
# ✅ GPT 설정 (OpenAI API Key)
client = OpenAI(api_key="sk-여기에_너의_API_키를_넣어")
# ✅ Notion 설정
NOTION_TOKEN = "secret_..."
DATABASE_ID = " "
headers = {
"Authorization": f"Bearer {NOTION_TOKEN}",
"Content-Type": "application/json",
"Notion-Version": "2022-06-28"
}
# ✅ 질문 리스트
questions = [
"What is RTOS?",
"Explain BLE sniffing.",
"What is prompt injection in LLMs?"
]
# ✅ 메인 루프
for q in questions:
response = client.chat.completions.create(
model="gpt-3.5-turbo",
messages=[{"role": "user", "content": q}]
)
answer = response.choices[0].message.content
# Notion에 보낼 데이터 구성
data = {
"parent": {"database_id": DATABASE_ID},
"properties": {
"Name": {
"title": [{"text": {"content": q}}]
},
"Response": {
"rich_text": [{"text": {"content":
3-1. 역시. 한 번에 될리가 없지 ㅋㅋ;;
또 모듈이 없어서 설치해줍니다.
?? 파이썬 버전 안 맞아서 안 됨
VSCode에서 Python 3.9.6 (/usr/bin/python3) 환경을 선택했어.
그런데 pip install openai는 아마도 3.11이나 3.12, 또는 Homebrew 환경에 설치
즉, 설치된 openai 모듈 ≠ 실행 중인 Python 환경
→ 그래서 ModuleNotFoundError: No module named 'openai'가 발생
-> VSCode에서 버전 가상 상위 버전으로 선택
다시 실행
/opt/homebrew/bin/python3 -m pip install openai
python3.12 -m pip install --upgrade pip
/opt/homebrew/bin/python3 gpt_logger.py
추후 기능... 구현...
🔁 질문을 외부 JSON/CSV에서 불러오기 | 대규모 실험 시 유리 |
🧠 GPT 답변 요약 자동 추가 | Notion에 Summary 열 생성 |
🗂️ 태그별 분류 | 예: LLM, BLE, Security 등 |
📊 시각화용 메타데이터 추가 | 예: 길이, 난이도, 모델 사용 등 기록 |
깃허브 정리
깃허브 레포지토리 내에서 폴더 생성하는 법
- 새로운 파일 생성하기
- 제목을 [폴더이름]/[파일이름] (포인트는 '/')
깃허브 오류나서... 파일 삭제가 어쩌고 저쩌고 해서 안 된다 함...
-> 로컬 Git에서 삭제 후 push
git clone {문제생긴 레파지토리 주소}
cd keemlab
rm gpt-notion-autologger
git add .
git commit -m "delete invalid file to allow folder creation"
git push
* 주의: 깃허브는 이제 비밀번호 방식 로그인 ❌ 불가
"fatal: Authentication failed" = 깃허브 로그인 실패 (2021년부터 깃허브가 비밀번호 로그인 금지하고 토큰 로그인만 허용함)
-> 토큰 생성하고 비밀번호 대신 토큰 입력해야 함
Ha.... ##오늘의 다짐
###### 다시는 깃허브 파일명 rename하지 않는다.... 💀🚬