GitLab을 이용해 Notion 컨텐츠 정기적으로 백업하기

최근 Notion 측의 DNS 문제로 전세계 Notion 서버가 한동안 다운되는 심각한 문제가 발생했습니다. 많은 사용자들이 Notion에 자료를 모아두기 때문에 이러한 장애로 불안함을 느끼고, 백업을 하고자 합니다. 이번 시간에는 GitLab과 Notion의 api를 활용해 Notion Workspace를 매일 자동으로 백업하는 방법을 살펴보겠습니다.
주의!
이 방법은 데이터만을 백업하기 위한 방법으로, 내보낸 파일을 재업로드하여 워크스페이스에 콘텐츠를 다시 생성할 수는 없습니다. Notion 워크스페이스를 이전하는 방법은 여기서 확인하세요. 또한, GitLab 무료 계정에는 용량 제한이 있기 때문에 다량의 대용량파일을 백업하기 위한 방법으로 적절하지 않을 수 있습니다.
1. GitLab 계정 등록하기
GitLab 계정이 없는 경우 GitLab.com에서 GitLab 계정을 생성하세요. 무료 계정은 10GB까지 데이터를 백업할 수 있습니다. 계정에 추가적인 보안을 원하시면 2FA를 설정하세요.
2. Notion 계정 토큰과 워크스페이스 id 추출하기
가장 어렵고 복잡한 단계입니다. 현재 Notion은 공식 api를 제공하지 않기 때문에, 백업 스크립트에서 개념 동작을 흉내내야 합니다. 이를 위해서 우리는 token_v2와 전체 워크스페이스 내보내기 리퀘스트의 spaceId를 추출해야 합니다.
구글 크롬에서 다음과 같은 방법으로 추출할 수 있습니다.
- http://notion.so/에서 “설정과 멤버” → “설정”으로 이동하세요.
- Command+Option+J (Mac)나 Control+Shift+J (Windows, Linux, Chrome OS)를 눌러서 크롬 개발자도구를 여세요.
- 다음 스크린샷에서처럼 네트워크 탭으로 이동하세요.
- XHR filter (1)를 활성화하고, clear console (2)을 누른 뒤, Notion에서 전체 워크스페이스 콘텐츠 내보내기를 클릭하고 (3), enqueueTask를 선택하세요 (4).

열러있는 Headers 탭에서 cookie: 항목과 많은 텍스트가 나올 때까지 스크롤합니다. 이 텍스트에서 다음(5)와 같은 부분을 찾아야 합니다.
token_v2=xxx;
xxx는 매우 긴 숫자와 문자의 조합으로 되어있고 여러 줄로 이루어질 수 있습니다. **token_v2=**와 ; 사이의 모든 텍스트를 복사하고 어딘가에 저장해두세요. 이를 NOTION_TOKEN_V2라 하겠습니다. 이 정보가 곧 필요할겁니다.
이제 맨 아래로 스크롤하고 Request Payload 섹션에서 다음(6)과 같은 부분을 확인할 수 있을겁니다.
spaceId: “4489c211-09d6-4069-ae3b-1665e25d6c03”
따옴표 내의 값을 저장하고, NOTION_SPACE_ID라 하겠습니다.
3. GitLab에서 push token 생성
백업을 업데이트하는 스크립트를 허용하기 위해서는 적절한 권한을 가진 토큰을 생성해야 합니다. GtiLab에서 Settings → Access Tokens로 이동하고 다음 스크린샷처럼 폼을 완성하세요.

Create Personal access token을 누르면 Your new personal access token을 단 한 번 보여줍니다. 복사해서 저장하고, CI_PUSH_TOKEN이라 이름지어주세요. 나중에 필요합니다.

4. 백업을 저장할 GitLab 레포지토리 생성
새 프로젝트를 생성하고 원하는 프로젝트 이름을 입력한 뒤 본인만이 접근할 수 있도록 Private를 꼭 선택하세요. 다 하셨다면 Create Project를 클릭하세요.
5. CI/CD 스크립트 설정
프로젝트를 생성하면 빈 프로젝트 페이지로 리디렉션됩니다. Setup CI/CD 버튼을 클릭하세요.

.gitlab-ci.yml파일 에디터가 열립니다. 여러분을 위해 스크립트를 준비했으니 여기서 스크립트를 복사해 붙여넣으세요: https://gitlab.com/aburtsev/notion-backup-script/-/raw/master/.gitlab-ci.yml
이 스크립트는 Notion의 백업 기능을 흉내내지만 .zip파일로 다운로드 받는 것이 아니라 GitLab 프로젝트에 업로드합니다.

Commit Change를 클릭하세요.
6. 백업 작업 스케줄링
스크립트가 준비가 되면 왼쪽 사이드바에서 CI / CD → Schedules로 이동하세요.

New schedule을 클릭하세요.

그러면 Schedule a new pipeline 폼이 열리는데, 필드를 하나하나 구성해봅시다.

- Description: 원하는 설명을 작성해주세요 (예: Notion Backup)
- Interval pattern: 언제 백업을 할지 결정하면 됩니다. 예시의 경우는 매일 새벽 4시에 백업이 진행됩니다. 백업을 하고싶은 0
59분/023시를 설정하세요. 예를 들어 오전 5시 42분에 백업을 하고싶다면 42 5 * * *라고 작성하면 됩니다. 값을 그냥 복사해 여러 사람이 같은 값을 사용하면 Notion 서버에 부하가 있으니 각자 다른 시간으로 설정해주세요. 스케줄 에디터를 사용하면 편하게 값을 구할 수 있습니다. - Cron Timezone: 여러분이 살고계신 곳의 timezone을 설정해주세요.
- Target Brance: master로 두면 됩니다.
- Variables: 지금까지 모아온 값들과 몇몇 추가사항을 여기 적어주면 됩니다.
NOTION_TOKEN_V2 step 2의 token_v2
NOTION_SPACE_ID step 2의 spaceId
CI_PUSH_TOKEN step 3의 토큰
EXPORT_FILENAME /tmp/export.zip
PYTHONUNBUFFERED 1
TZ https://en.wikipedia.org/wiki/List_of_tz_database_time_zones에서 찾아서 붙여넣으세요.
("TZ database name" 열, 우리나라는 Asia/Seoul 입니다)
됐습니다. 이제 Save pipeline schedule을 클릭하면 리스트에 새로운 파이프라인이 뜰겁니다.

이제 play 버튼을 눌러서 수동으로 실행해 백업이 잘 작동하는지 확인하세요. progress circle이 녹색이 될때까지 몇 분 정도 걸립니다.
만약 실행 로그를 보고싶다면 Last Pipeline의 링크를 클릭해 실행중인 Job을 선택하세요.
백업이 끝나면 프로젝트 홈페이지에 백업 폴더를 확인할 수 있습니다. 이제 Notion이 생성한 콘텐츠를 확인할 수 있습니다.

여기까지 오셨다면, 축하합니다! 매일 설정한 시간에 Notion을 백업할 준비가 됐습니다. 도움이 되셨길 바랍니다.
본 포스트는 영문 포스트를 우리말로 번역해 내용을 추가한 글입니다.
사전 동의 없이 2차 가공 및 영리적인 이용을 금하며, 온·오프라인에 무단 전재 또는 유포할 수 없습니다.
DevOps 도입이 필요하신가요?
인포그랩 전문가가 맞춤 을 도와드립니다.
관련 글

Claude Skills로 GitLab 업그레이드 자동화하기
이 글은 Claude Code의 Skills를 활용해 GitLab 업그레이드를 자동화한 경험을 공유합니다. Skills의 기본 개념부터 설계 원칙, 실제 사용 예시, 마이그레이션 실패 시 AI의 문제 해결 과정까지 자세히 다뤘습니다.
2026년 1월 28일

n8n과 GitLab으로 개발팀 스탠드업 자동화하기
n8n, GitLab API, OpenAI, Slack을 연동하면 개발팀 스탠드업 자동화 시스템을 구축할 수 있습니다. GitLab에서 전날 작업 내용을 수집하고, 데일리 스탠드업 보고서를 생성해 Slack에 공유하는 과정을 모두 자동화할 수 있죠. 이 글은 스탠드업 자동화 워크플로와 관련 기술 스택, 설계 원칙, 결과를 다뤘습니다.
2025년 5월 14일

Triage로 GitLab 이슈 관리 개선하기
GitLab의 Triage 기능은 개발자와 프로젝트 관리자가 효과적으로 이슈를 정리하고, 우선순위를 설정하며, 작업 흐름을 최적화하도록 설계되었습니다. 이 글에서는 Triage 기능을 자세히 살펴보고요. Triage 기능으로 GitLab에서 이슈 관리를 자동화하고, Triage 작업을 GitLab CI/CD 파이프라인에 통합하는 방법을 알아보려 합니다. Triage 기능을 사용해 이슈 관리를 자동화하면 팀의 반응 시간을 줄이고, 프로젝트 관리 방식을 향상하는 데 도움이 됩니다.
2023년 12월 13일