노션 API 사용해서 데이터베이스 관리하기




원하는 데이터베이스에 내용을 추가하려면 데이터베이스 아이디를 얻어야 한다. 노션 데이터베이스 아이디는 링크 복사를 통해서 얻을 수 있다.

https://www.notion.so/{데이터베이스 ID}?v={view ID}
POSThttps://api.notion.com/v1/pagesapplication/json
database_id는 위에서 복사해 구했던 데이터베이스 IDName 은 Notion DB의 Title 속성 이름이어야 함 (대소문자 포함)Summary 는 Notion DB에 만든 Rich text 속성 이름이어야 함.{
"parent": {
"database_id": "데이터베이스 ID"
},
"properties": {
"Name": {
"title": [
{
"text": {
"content": "Attention Is All You Need"
}
}
]
},
"Summary": {
"rich_text": [
{
"text": {
"content": "Transformer를 제안한 논문. RNN/CNN 없이 self-attention으로 번역 문제 해결."
}
}
]
}
}
}
Send를 누르면 아래 사진처럼 내용이 추가됨을 확인할 수 있음

import requests
NOTION_TOKEN = "ntn_xxxxxx" # 통합에서 발급받은 secret 토큰
DATABASE_ID = "xxxx" # DB URL에서 추출한 database_id
# Notion API 버전
NOTION_VERSION = "2025-09-03"
# 테스트용 논문 제목과 요약
title = "Attention Is All You Need"
summary = "Transformer 구조를 제안하여 RNN/CNN 없이도 시퀀스 모델링을 가능하게 한 논문입니다."
# API 요청 URL
url = "https://api.notion.com/v1/pages"
# 요청 헤더
headers = {
"Authorization": f"Bearer {NOTION_TOKEN}",
"Notion-Version": NOTION_VERSION,
"Content-Type": "application/json",
}
# 요청 바디
payload = {
"parent": {"database_id": DATABASE_ID},
"properties": {
"Name": {
"title": [{"text": {"content": title}}]
},
"Summary": {
"rich_text": [{"text": {"content": summary}}]
}
}
}
# POST 요청 보내기
response = requests.post(url, headers=headers, json=payload)
# 결과 확인
if response.status_code == 200:
print("논문 요약 추가 완료")
data = response.json()
print("Page ID:", data.get("id"))
else:
print("오류 발생:", response.status_code, response.text)
코드를 실행하면

아래 이미지처럼 잘 추가되는 것을 확인할 수 있다
