Tracker/experiments

GPT 응답 자동화: Notion API 통합 설정 (macOS)

keemnh 2025. 4. 23. 07:09

[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하지 않는다.... 💀🚬