Notion 자동화 입문|Python으로 반복 업무 줄이기

노션(Notion)은 단순한 메모 앱을 넘어 강력한 데이터베이스 기능을 갖춘 올인원 워크스페이스입니다. 하지만 매일 반복되는 회의록 생성, 일정 관리, 데이터 입력 작업을 수동으로 하고 있다면 노션의 잠재력을 50%도 활용하지 못하고 있는 것입니다. 파이썬(Python)과 노션 API를 결합하면 이러한 반복 업무를 획기적으로 줄일 수 있습니다. 오늘 포스팅에서는 코딩 지식이 부족한 비전공자도 따라 할 수 있도록, 파이썬을 활용한 노션 자동화의 기초부터 실전 코드까지 상세히 다뤄보겠습니다.

1. 왜 노션 API와 파이썬인가?



업무 생산성의 핵심은 ‘반복의 제거’에 있습니다. 많은 실무자들이 엑셀에 있는 데이터를 노션으로 옮기거나, 매일 아침 데일리 리포트 페이지를 생성하는 단순 반복 작업에 귀중한 시간을 소비합니다.

노션 API(Application Programming Interface)는 외부 프로그램이 노션의 데이터에 직접 접근하여 읽고, 쓰고, 수정할 수 있게 해주는 통로입니다. 여기에 간결하고 강력한 라이브러리를 보유한 파이썬(Python)을 더하면 다음과 같은 일이 가능해집니다.

  • 자동 페이지 생성: 매일 오전 9시에 날짜가 적힌 ‘일일 업무 일지’ 페이지 자동 생성.
  • 데이터 동기화: 구글 캘린더의 일정을 노션 데이터베이스로 자동 가져오기.
  • 알림 시스템: 노션의 프로젝트 상태가 ‘완료’로 변경되면 슬랙(Slack)으로 메시지 전송.
  • 웹 크롤링 연동: 뉴스 기사나 주식 정보를 크롤링하여 노션에 자동으로 스크랩.

단순히 편리함을 넘어, 휴먼 에러를 방지하고 업무 프로세스를 시스템화하는 것이 이번 가이드의 목표입니다. 더 자세한 기술 명세는 Notion 공식 API 문서를 참고할 수 있습니다.

2. 필수 준비: API 토큰 발급 및 권한 설정

파이썬 코드를 작성하기 전에 노션과 통신하기 위한 ‘열쇠(Token)’와 ‘데이터베이스 ID’가 필요합니다. 이 과정은 딱 한 번만 수행하면 됩니다.

1) 통합(Integration) 만들기

  1. Notion Developers 사이트(https://www.notion.so/my-integrations)에 접속하여 로그인합니다.
  2. + 새 통합 만들기(New integration) 버튼을 클릭합니다.
  3. 이름을 입력(예: Python-Automation-Bot)하고 연결할 워크스페이스를 선택한 뒤 제출합니다.
  4. 생성된 화면에서 ‘내부 통합 토큰(Internal Integration Secret)’을 복사하여 메모장에 저장해 둡니다. 이 토큰은 secret_으로 시작하며 절대 타인에게 공유해서는 안 됩니다.

2) 데이터베이스 ID 확인 및 연결

API가 특정 데이터베이스에 접근하려면 명시적인 권한 부여가 필요합니다.

  1. 자동화할 노션 데이터베이스 페이지를 엽니다. (전체 페이지로 열기)
  2. 우측 상단의 ... 메뉴를 클릭하고 연결(Connections) > 연결 대상에서 방금 만든 통합 앱(Python-Automation-Bot)을 검색하여 추가합니다.
  3. 이제 브라우저 주소창의 URL을 확인합니다.
    • https://www.notion.so/myworkspace/a1b2c3d4e5f6...?v=...
    • 여기서 myworkspace/ 뒤부터 ? 앞까지의 32자 영문 숫자 조합이 바로 데이터베이스 ID(Database ID)입니다.

3. 실전: 파이썬으로 노션 데이터베이스 조작하기



이제 환경이 준비되었습니다. 파이썬의 requests 라이브러리를 사용하여 노션에 새로운 데이터를 추가하는 코드를 작성해보겠습니다.

환경 설정

먼저 터미널에서 필요한 라이브러리를 설치합니다.

pip install requests

파이썬 코드 작성 (페이지 생성 예제)

아래 코드는 지정된 데이터베이스에 “파이썬 자동화 테스트”라는 제목의 새로운 페이지를 생성하고, 태그와 상태 값을 설정하는 예제입니다.

import requests
import json
from datetime import datetime

NOTION_TOKEN = "secret_여기에_발급받은_토큰_입력"
DATABASE_ID = "여기에_데이터베이스_ID_입력"

# 2. 헤더 설정 (API 버전 및 인증 정보)
headers = {
    "Authorization": f"Bearer {NOTION_TOKEN}",
    "Content-Type": "application/json",
    "Notion-Version": "2022-06-28"  # 최신 안정화 버전 사용 권장
}

# 3. 데이터 페이로드 구성
def create_page(title, tag_name):
    url = "https://api.notion.com/v1/pages"

    # 노션 DB 속성(Property)에 맞춰 JSON 구조 생성
    new_page_data = {
        "parent": {"database_id": DATABASE_ID},
        "properties": {
            # 제목 (Title 속성)
            "이름": { 
                "title": [
                    {"text": {"content": title}}
                ]
            },
            # 태그 (Multi-select 속성)
            "태그": {
                "multi_select": [
                    {"name": tag_name}
                ]
            },
            # 날짜 (Date 속성)
            "날짜": {
                "date": {
                    "start": datetime.now().strftime("%Y-%m-%d")
                }
            }
        }
    }

    # POST 요청 전송
    response = requests.post(url, headers=headers, data=json.dumps(new_page_data))

    if response.status_code == 200:
        print(f"성공! 페이지가 생성되었습니다. (ID: {response.json()['id']})")
    else:
        print(f"실패: {response.status_code}")
        print(response.text)

# 실행
if __name__ == "__main__":
    create_page("파이썬으로 만든 업무 일지", "자동화")

코드 설명:
* Headers: Notion-Version을 명시해야 API가 안정적으로 동작합니다.
* Properties: 노션 데이터베이스의 칼럼 명(예: “이름”, “태그”, “날짜”)과 정확히 일치해야 합니다. 불일치 시 400 Bad Request 에러가 발생합니다.
* JSON 구조: 노션 API는 데이터 구조가 깊은 중첩(Nested) 형태를 띱니다. title 안에 리스트가 있고 그 안에 텍스트 객체가 들어가는 구조에 유의해야 합니다. 파이썬 requests 모듈에 대한 더 자세한 정보는 Requests 공식 문서를 참조하세요.

4. 자동화 확장 아이디어와 주의사항

위의 기본 코드를 이해했다면, 이제 다양한 방식으로 응용할 수 있습니다. 단순 입력뿐만 아니라 데이터를 조회(query)하고 업데이트(update)하는 것도 가능합니다.

1) 실전 자동화 시나리오

  • 독서 목록 관리: 알라딘이나 예스24의 API를 활용해 ISBN만 입력하면 책 제목, 저자, 이미지를 가져와 노션 독서 리스트에 자동으로 채워 넣는 스크립트를 만들 수 있습니다.
  • 할 일(To-Do) 마감 알림: 매일 아침 파이썬 스크립트가 실행되어 마감일이 오늘인 항목을 필터링(filter)하여 가져온 뒤, 텔레그램 봇을 통해 스마트폰으로 푸시 알림을 보냅니다.
  • 주간 리포트 자동 취합: 일주일간 작성된 ‘완료’ 상태의 업무들을 쿼리하여 하나의 마크다운 파일로 요약 생성합니다.

2) 주의사항 (Troubleshooting)

  • 속성 이름 확인: 코드상의 properties 키값(예: “이름”, “태그”)은 실제 노션 DB의 칼럼명과 띄어쓰기까지 정확히 일치해야 합니다.
  • API 속도 제한 (Rate Limits): 노션 API는 초당 평균 3회 요청으로 제한됩니다. 대량의 데이터를 처리할 때는 time.sleep()을 사용하여 딜레이를 주어야 합니다.
  • 권한 문제: 404 Not Found 에러가 뜬다면 데이터베이스 ID가 틀렸거나, 해당 데이터베이스에 통합(Integration)이 초대되지 않았을 확률이 높습니다.

마치며



파이썬과 노션 API의 만남은 단순한 기술적 결합을 넘어, 업무 프로세스를 근본적으로 재설계할 수 있는 기회를 제공합니다. 처음에는 JSON 구조를 맞추는 것이 까다롭게 느껴질 수 있지만, 한 번 템플릿 코드를 완성해 두면 그 이후의 생산성 향상은 기하급수적입니다.

지금 바로 여러분의 반복 업무 중 ‘자동화할 수 있는 것’ 리스트를 작성해 보세요. 그리고 오늘 소개한 코드를 바탕으로 작은 것부터 하나씩 시스템에게 위임해 보시길 바랍니다. 기술은 여러분의 시간을 벌어주기 위해 존재합니다.


**

관련 글 보기