생산성

Notion 자동화 입문: 버튼·반복 DB·API 연동 실전 가이드

Notion 버튼 블록과 반복 데이터베이스로 반복 작업을 없애고, 공식 API v2026-03-11과 JS SDK로 외부 앱을 연동하는 단계별 실전 가이드. Zapier·Make 없이 자동화 파이프라인을 직접 구축하는 방법을 설명한다.

Notion 자동화 입문: 버튼·반복 DB·API 연동 실전 가이드

Notion을 쓰다 보면 반드시 만나는 한계가 있다. 매주 같은 회의록 페이지를 손으로 만들고, 완료 태스크 상태를 하나씩 클릭해 바꾸고, 슬랙 메시지를 보고 수동으로 Notion에 옮기는 루틴이다. Zapier나 Make 없이, 혹은 외부 도구 비용 없이 이 반복을 끊는 방법은 충분히 존재한다. 버튼 블록과 반복 데이터베이스로 시작해, 공식 API로 외부 앱을 직접 연결하는 것까지가 이 가이드의 범위다.


Notion 자동화 전체 지도: 어디서 무엇을 할 수 있나

Notion의 자동화 기능은 크게 세 계층으로 나뉜다. 첫 번째 계층은 내장 기능으로, 버튼 블록·반복 데이터베이스·알림 트리거가 여기 속한다. 코딩 없이 UI만으로 설정하며, Plus 요금제(₩14,000/월)부터 대부분 사용 가능하다. 두 번째 계층은 공식 API로, 외부 앱이 Notion 데이터를 읽고 쓰는 연결고리다. 세 번째 계층은 Workers와 Custom Agents로, Notion이 2025~2026년에 출시한 서버리스 자동화 런타임이다. Workers 베타는 2026년 8월 11일부터 크레딧 과금이 시작되고, Custom Agents는 월 1,000 Notion credits당 $10이 청구된다.

요금제별 경계를 먼저 파악해야 혼선이 없다. Notion AI는 Business 요금제(₩30,000/월) 이상에만 포함된다. Plus에서 AI 자동화를 기대하고 설정하면 번번이 막힌다. 이 가이드는 내장 기능과 API 연동에 집중하고, Workers·Agents는 개요와 주의사항만 다룬다.


버튼 블록으로 반복 작업 원클릭 처리하기

버튼 블록은 /button을 입력하면 나타나는 인라인 액션 블록이다. 지원하는 액션은 다음 세 가지다: 데이터베이스에 페이지 추가, 페이지 속성 편집, 알림 전송. 이 세 가지를 조합하면 웬만한 반복 작업을 버튼 한 번으로 처리할 수 있다.

데이터베이스에 페이지 자동 생성하려면 버튼 설정에서 Add page to → 대상 데이터베이스를 선택하고, 미리 만든 템플릿을 연결한다. 버튼을 누를 때마다 템플릿이 그대로 새 페이지로 생성된다. 여기에 속성 편집 액션을 함께 붙이면, 담당자나 날짜를 버튼 클릭 시점에 자동으로 채울 수 있다.

2026년 3월부터 Status 속성이 API 쓰기 가능으로 변경되면서 버튼과의 연동도 더 매끄러워졌다. 이전에는 Status를 버튼으로 바꾸려면 Select 속성을 대신 써야 했지만, 이제는 Status를 직접 타깃으로 잡을 수 있다.

실전 예시 — 주간 회의록 버튼: 페이지 최상단에 “이번 주 회의록 만들기” 버튼을 하나 두고, 액션을 두 개 쌓는다. 첫 번째는 회의록 DB주간 회의 템플릿으로 페이지 추가, 두 번째는 그 페이지의 담당자 속성에 현재 사용자를 할당. 버튼 한 번이면 빈 페이지를 찾아 제목 입력하고 담당자 클릭하던 3분이 5초로 줄어든다.


반복 데이터베이스로 정기 항목 자동 생성하기

반복 기능은 데이터베이스 우측 상단 ... 메뉴 → AutomationsWhen 조건에서 Scheduled를 선택하면 나온다. 주기는 일·주·월·커스텀 중에서 고를 수 있고, 시작 날짜와 시간도 지정 가능하다.

반복 설정에는 두 가지 모드가 있다. 빈 페이지 반복은 스키마 필드만 포함된 빈 항목이 생성되고, 템플릿 연동 반복은 지정한 템플릿을 그대로 복사한다. 월 OKR 시트처럼 항목마다 세부 구조가 필요하다면 반드시 템플릿을 먼저 만들어 두고 연결해야 한다. 반복 후에 내용을 추가하는 것보다 템플릿을 잘 다듬는 것이 훨씬 효율적이다.

반드시 미리 확인할 것이 있다. 반복으로 생성된 페이지는 소급 삭제 자동화가 없다. 또 체크박스나 체크리스트를 템플릿에 넣으면, 반복 생성 시 이전에 체크된 상태가 아닌 초기화된 상태로 생성되는 게 기본 동작이다. 이 부분은 직접 테스트해서 확인해 두는 편이 낫다.

실전 예시 — 월간 OKR 자동 생성: 월간 OKR 템플릿에 Key Results 섹션과 진척도 속성을 만들어 두고, 매달 1일 오전 9시에 반복 생성하도록 설정한다. 이전 달 페이지는 담당자가 월말에 Status를 완료로 바꾸면 필터로 숨기는 방식으로 아카이브한다. 삭제 대신 필터를 활용하는 게 나중에 검색할 때 유리하다.


Notion 공식 API로 외부 앱 연동하기

API 연동은 두 단계가 필수다. ① Integration 생성 → ② 대상 데이터베이스에 권한 부여. 이 순서를 빠뜨리면 어떤 코드를 써도 403 오류만 만난다.

Notion 개발자 포털에서 Integration을 만들면 secret_xxx 형태의 토큰이 발급된다. 이후 연동할 데이터베이스 페이지 우측 상단 ...Connections에서 방금 만든 Integration을 추가해야 비로소 해당 DB에 API 접근이 허용된다.

JS SDK 설치 및 API 버전 지정:

npm install @notionhq/client@5.12.0

API 버전 2026-03-11은 SDK 초기화 시 자동으로 적용되지만, REST 직접 호출 시에는 헤더에 명시해야 한다.

import { Client } from "@notionhq/client";

const notion = new Client({
  auth: process.env.NOTION_TOKEN,
  notionVersion: "2026-03-11",
});

// 데이터베이스 쿼리
const response = await notion.databases.query({
  database_id: "YOUR_DATABASE_ID",
  filter: { property: "Status", status: { equals: "진행 중" } },
});

// 새 페이지(항목) 생성
await notion.pages.create({
  parent: { database_id: "YOUR_DATABASE_ID" },
  properties: {
    Name: { title: [{ text: { content: "자동 생성 태스크" } }] },
    Status: { status: { name: "할 일" } },
  },
});

v2026-03-11 breaking changes는 기존 코드를 그대로 쓰면 조용히 깨진다. 핵심 세 가지만 기억한다: archivedin_trash, afterposition, transcriptionmeeting_notes. 특히 archived: true로 필터를 짜 뒀다면 in_trash: true로 반드시 바꿔야 한다. 변경 내역은 공식 changelog에서 확인할 수 있다.

이번 버전에서 실질적으로 유용한 신규 기능이 둘 있다. Markdown API는 페이지 본문을 마크다운 문자열로 직접 반환해 블록 트리를 파싱하던 수고를 없애준다. Views 엔드포인트 8개는 데이터베이스 뷰를 API로 생성·조회·수정할 수 있어서, 대시보드를 프로그래밍 방식으로 구성할 때 쓸 만하다.


Webhook 인바운드(베타)로 외부 앱이 Notion을 직접 트리거하기

기존 Notion API는 Notion이 받아주는 구조다. 외부 앱이 Notion을 먼저 때리려면 Zapier나 Make 같은 중간 레이어가 필요했다. Webhook 인바운드는 이 구조를 뒤집는다. 외부 시스템이 HTTP POST 요청을 Notion이 제공하는 엔드포인트로 보내면, Notion 내부 액션이 실행된다. Zapier 구독 없이 동일한 흐름을 구성할 수 있는 것이다.

설정 위치는 Automations 패널 → When 조건 → Webhook received다. 엔드포인트 URL이 자동 생성되고, 인증 방식은 Bearer 토큰 또는 HMAC-SHA256 서명 검증 중 선택할 수 있다. 현재 베타 단계라 일부 옵션이 변경될 수 있으니 중요한 프로덕션 파이프라인에 바로 붙이기보다 테스트 환경에서 먼저 검증하는 게 좋다.

실전 시나리오 — GitHub Actions → Notion 상태 갱신: PR이 merge될 때 GitHub Actions workflow에서 curl 한 줄로 Notion Webhook 엔드포인트를 호출한다. Notion 자동화에서 해당 이벤트를 받아 연결된 태스크 DB의 Status를 “완료”로 바꾼다. 이 흐름에 Make나 Zapier는 필요 없고, GitHub Actions + Notion만으로 닫힌다. macOS에서 비슷한 자동화 트리거 패턴이 궁금하다면 참고가 될 수 있다.


자주 막히는 지점과 실전 체크리스트

403 오류는 대부분 권한 문제다. 토큰이 맞아도 해당 데이터베이스의 Connections에 Integration이 추가돼 있지 않으면 403이 떨어진다. 코드보다 먼저 Connections를 확인한다.

Rate limit는 평균 3 req/s 기준으로 초과하면 429 응답이 온다. 항목이 많은 DB를 한 번에 처리할 때는 await new Promise(r => setTimeout(r, 350))처럼 요청 사이에 딜레이를 넣거나, SDK의 rateLimiter 옵션을 활용한다. 배치 처리가 필요하다면 databases.querystart_cursor로 페이지네이션을 돌리는 패턴이 표준이다.

Workers 베타 과금 혼동도 자주 생긴다. 2026년 8월 11일 이전까지는 Workers 사용이 크레딧 차감 없이 무료 베타다. 그 이후 과금 구조가 어떻게 확정될지는 Notion 공식 릴리스 노트를 주기적으로 확인해야 한다.

요금제 착각은 팀 전체를 헛수고하게 만든다. Notion AI 자동화 기능은 Business 플랜 이상 전용이다. Plus 플랜에서 AI 기반 자동화를 세팅하려다 막히면 요금제 확인부터 한다. Custom Agents를 쓰고 싶다면 크레딧 소모 구조를 미리 계산해서 예상 비용을 따져보는 게 낫다.


자주 묻는 질문

Q. Zapier 없이 Notion과 Slack을 연동할 수 있나?

공식 API와 Webhook 인바운드를 조합하면 가능하다. Slack의 Incoming Webhook으로 Notion에서 데이터를 밀어 넣거나, Slack Events API를 받아서 Notion에 자동 기록하는 서버리스 함수를 직접 구현하면 된다. Workers 베타를 활용하면 이 함수를 외부 서버 없이 Notion 안에서 호스팅할 수도 있다. 단, Workers는 현재 베타 단계다.

Q. 반복 데이터베이스와 버튼 블록 중 어느 쪽이 더 유연한가?

목적이 다르다. 반복은 일정 기반 자동 생성에 적합하고, 버튼은 이벤트 기반 즉시 실행에 맞다. OKR 시트처럼 달마다 자동으로 만들어야 하면 반복, 회의가 시작될 때 그 자리에서 페이지를 만들어야 하면 버튼이다. 둘을 조합해서 “반복으로 기본 구조를 생성하고, 버튼으로 세부 속성을 채우는” 패턴도 잘 동작한다.

Q. API 연동 없이 Notion을 외부 서비스와 연결하는 현실적인 방법은?

단순한 데이터 수집이라면 Notion의 웹 클리퍼, 이메일 to Notion 기능, 또는 Notion Forms 서드파티 도구(Fillout, Tally 등)로 상당 부분 해결된다. 쓰기만 필요하고 읽기는 필요 없다면 API 없이도 충분하다. API가 필요해지는 순간은 Notion 데이터를 읽어서 다른 시스템에 반영해야 할 때다.

Q. v2026-03-11 이전 버전 코드를 그대로 써도 동작하나?

SDK가 notionVersion을 명시하지 않으면 구 버전 동작을 유지하려 한다. 하지만 새 Integration을 만들면 기본적으로 최신 버전이 적용되는 방향으로 바뀌고 있어서, archived·after 등 예전 필드명을 쓰는 코드는 조만간 깨질 가능성이 높다. 이참에 breaking change 세 개를 한꺼번에 반영해 두는 게 낫다.

RELATED · 관련 글

이어 읽기 좋은 글

생산성

크리에이틴 뇌 기능 향상 완전 가이드: 지식 근로자 복용법과 인지 저하 예방

2026.06.01 · 9분
생산성

AI 자동화 '죽은 경제' 이론 해설: 생산성 역설과 대응 전략

2026.05.30 · 11분
생산성

Claude Opus 4.8 실무 활용 가이드: 추론·코딩·비용 완전 비교

2026.05.29 · 13분