어린이집 알림장과 사진을, 내 노션 DB에 영원히. 졸업할 때 사라지지 않게.
⚡ 빨리 셋업만 끝내고 싶다 → Quick Start (25분) 이 페이지는 자세한 설명·예외처리·트러블슈팅까지 다 담은 reference입니다. 길이로 압도되지 않게, 막힘없이 진행하실 분은 위 Quick Start로 가세요.
알림장 한 건 — AI callout 3개(요약·자녀일기·부모편지) + 날씨 + 원본 본문 + 사진/댓글
| 본문 + callout (요약·자녀일기·부모편지) | 사진 + 댓글 |
|---|---|
![]() |
![]() |
자동 생성되는 LLM 대시보드 — 시간순 마일스톤 + 월별 성장 스토리
| 🌟 우리 아이의 처음들 (마일스톤) | 📖 매월 성장 스토리 |
|---|---|
![]() |
![]() |
통계 대시보드 — mermaid pie 차트 4종 (영양·카테고리·낮잠·날씨)
| 🥗 영양 그룹 비율 | 🎨 활동 카테고리 Top 10 |
|---|---|
![]() |
![]() |
| 💤 낮잠 시간 분포 | 🌤️ 날씨 분포 |
|---|---|
![]() |
![]() |
💡 위 화면은 실제로 백업된 노션 페이지를 캡처한 것입니다. 본인이 셋업하면 본인 자녀의 알림장으로 동일하게 채워집니다. 셋업은 아래 8단계 가이드대로 25분이면 끝납니다.
키즈노트(어린이집 알림장 앱)에 매일 쌓이는 글·사진·동영상·첨부파일을 나의 노션 데이터베이스로 자동 백업합니다.
- ✅ 완전 자동 — 6시간마다 cron이 새 알림장을 알아서 백업 (한 번 셋업하면 끝)
- ✅ 알림장 원본 그대로 — 본문·사진·동영상·식단·댓글·앨범·공지까지 빠짐없이
- ✅ 통계 대시보드 — 카테고리·낮잠·식사·날씨 분포가 자동으로 정리
- ✅ (선택, off 권장) AI 가공 — 자녀 1인칭 일기·부모 편지 + 매월 성장 스토리/마일스톤/관심사/감사 카드까지 자동 작성. 다만 무료 로컬 LLM 특성상 품질이 완벽하지 않고 1년치에 5-15시간 걸리니, 우선은
off로 두고 단순 백업을 권장합니다. - ✅ 컴퓨터 켜둘 필요 없음 — GitHub의 클라우드 서버가 알아서 실행
- ✅ 중복 알림장은 자동 skip — 매번 새것만 추가
- ✅ 1년치 대용량 백업도 OK — 6시간 cap에 걸려도 cron이 자동 재개
- ✅ 사진의 위치(GPS) 정보는 업로드 전에 자동 제거
- ✅ 무료 — GitHub와 노션의 무료 플랜으로 충분 (LLM도 무료 Ollama)
⚠️ 노션 무료 플랜 5 MiB 파일 크기 제한
- 사진: 5MB 초과 시 자동으로 압축해서 업로드 (거의 100% 성공)
- 동영상·첨부파일: 5MB 미만만 업로드. 그 이상은 자동 skip (해당 파일만 누락, 페이지는 정상)
노션 유료 플랜(파일당 5 GiB)이면 모두 업로드됩니다.
- 이런 분께 추천드려요
- 🎒 시작 전 준비물
- 왜 필요한가요
- 📸 이렇게 백업됩니다 — 실제 스크린샷
- 무엇이 만들어지나요
- ⭐ 시작하기 — 8단계
- (고급) 자녀가 여러 명이거나 AI 편지를 끄고 싶을 때
- (선택) 노션 페이지 웹 공개
- 노션 DB 보기 추천 (정렬 + 필터 + 리스트 뷰)
- 두 번째 이후 백업 (사용자가 할 일 거의 없음)
- 코드 업데이트가 있을 때 (Sync fork)
- 자주 묻는 질문
- 문제 해결
- 기술 스택 (개발자용)
✅ 적합:
- 키즈노트로 매일 자녀 알림장·사진 받는 부모
- 자녀 성장 기록을 노션에 영구 보관하고 싶은 분
- 컴퓨터 다루기 어렵진 않지만 코딩은 모르는 분 (이 README만 따라하면 됨)
- 졸업·반편성 때 데이터 사라지는 게 걱정인 분
❌ 안 맞을 수 있어요:
- 키즈노트가 아닌 다른 어린이집 앱 사용 (예: 알리미24, 호브박스 등)
- 노션 외 다른 저장소(드라이브·드롭박스 등) 원하는 분 → 코드 수정 필요
- 모바일·태블릿만 있는 분 → 셋업은 데스크톱·노트북 필요
| 항목 | 필요한 이유 | 비용 |
|---|---|---|
| 데스크톱 또는 노트북 | 셋업이 모두 브라우저 기반. 모바일 노션 URL이 다름 | - |
| 인터넷 연결 | GitHub·노션 페이지 클릭 | - |
| Chrome 또는 Edge | 6단계 쿠키 추출 시 개발자 도구 사용 | 무료 |
| 이메일 주소 | GitHub·노션 가입 + 실패 알림 받기 | - |
| 계정 | URL | 가입 비용 |
|---|---|---|
| 키즈노트 | 어린이집에서 이미 등록한 그 계정 (브라우저 로그인 가능해야 함) | 무료 |
| 노션 | https://www.notion.so | 무료 (Personal 플랜으로 충분) |
| GitHub | https://github.com/signup | 무료 (Free 플랜) |
이 도구를 운영하는 데 들어가는 모든 부분이 무료입니다:
| 사용 자원 | 무료 한도 | 우리가 쓰는 양 |
|---|---|---|
| GitHub Actions (public fork) | 무제한 | 매월 약 360분 (대시보드 갱신 포함) |
| GitHub Actions (private fork) | 월 2,000분 | 첫 달 약 1,800분 (빠듯), 이후 약 360분 |
| 노션 Personal | 무제한 블록 + 파일당 5MB | 1년치 약 1-3GB |
| Ollama LLM | GitHub 러너 안에서 무료 실행 | 외부 API 비용 0원 |
💡 권장: Public fork — GitHub Actions 무제한이라 AI=on 1년치 5-15시간 백업도 무관. 개인정보(쿠키·토큰)는 모두 GitHub Secrets에 암호화되어 코드 공개와 상관없이 안전합니다.
- 사용자가 직접 손대는 시간: 셋업 25분 + 한 달에 쿠키 갱신 3분
- 백그라운드에서 자동으로 도는 시간: 첫 백업 1-15시간 (AI off/on에 따라) + 이후 매일 약 10분 (cron)
준비 끝났으면 아래로 ⬇️ 시작!
키즈노트는 졸업하면 접근이 끊깁니다. 우리 아이의 매일이 담긴 사진과 선생님의 글이, 어느 날 갑자기 사라집니다.
내 노션 워크스페이스에 백업해두면:
- 🔍 검색됩니다 — "토끼 점토놀이"로 검색해서 그날의 알림장을 1초 만에
- 📅 정리됩니다 — 날짜순 자동 정렬, 1년치 모아보기
- 🔒 영원합니다 — 키즈노트가 사라지든 졸업하든 그대로 내 것
- 📸 사진 원본 보존 — Kakao CDN에서 받은 원본 화질 그대로
각 알림장은 노션 페이지 한 장으로 백업됩니다 — 원본 본문 + 사진(원본 화질·GPS 자동 제거) + 식단 사진 + 댓글 + 날씨. AI를 켜면 자녀 1인칭 일기·부모 편지도 함께 (셋업 7단계에서 선택).
알림장과 함께, 데이터를 가공한 고정 페이지(최대 6개) 가 자동으로 만들어지고 매 실행마다 최신화됩니다. 어떤 어린이집/학원은 식단 정보가 없거나 AI를 꺼두면 일부 페이지가 생성되지 않을 수 있어요:
| 페이지 | 내용 |
|---|---|
| 📊 통계 대시보드 | 누계 카테고리·월별·작성자·낮잠·식사·날씨 분포 + 연도별 상세 sections (각 연도의 알림장 수, 카테고리·월별 분포 등) |
| 🥗 영양 분석 | 식단 메뉴 텍스트를 7개 영양 그룹으로 분류해서 등장 빈도 표시 |
| 📖 매월 성장 스토리 | 월별 알림장을 LLM이 한 단락의 성장 스토리로 작성 — 최근 월 위, 알림장 없는 달은 placeholder 표시 |
| 🌟 우리 아이의 처음들 (마일스톤) | 알림장에서 추출한 발달 단서들 (벽 짚고 서기, 동물 이름 말함 등) 최근→과거 시간순 |
| 🌱 분기별 관심사 | 분기별 자녀가 가장 좋아한 활동·사물·사람 TOP 5 — 최근 분기 위, 빈 분기 placeholder |
| 💌 연도별 선생님께 | 매 연도 알림장 기반으로 연도마다 별도 감사 편지 작성 (졸업·연말에 가족이 다듬어 사용) |
페이지 생성 조건:
- 📊 통계 — 알림장 1개 이상이면 항상 생성
- 🥗 영양 분석 — 식단 정보가 있는 알림장이 1개 이상일 때만 (어학원 등 식단을 안 올리는 곳은 생성 안 됨)
- 📖 / 🌟 / 🌱 / 💌 — AI를 켰을 때만 생성 (셋업 7단계에서 결정)
💡 모든 LLM 호출은 GitHub Actions 러너 안의 무료 Ollama(
llama3.1:8b)로 처리되어 외부 API 비용·노출이 없습니다.
⚠️ 데스크톱 또는 노트북에서 진행하세요. 모바일/태블릿에서는 노션 URL이 안 보이고 GitHub Actions 실행에 제약이 있습니다. 휴대폰으로 이 README를 읽으면서 노트북으로 작업하는 게 가장 편합니다.
| 단계 | 사용자가 직접 클릭하는 시간 | 백그라운드에서 알아서 도는 시간 |
|---|---|---|
| 0-8단계 셋업 | 15-25분 ← 여기만 손이 감 | - |
| 첫 풀 백업 (1년치) | 0분 (그냥 켜만 두면 됨) | AI off: 1-3시간 / AI on: 5-15시간 (cron이 자동으로) |
| 이후 운영 | 0분 / 한 달에 쿠키 갱신 3분 | 6시간마다 새 알림장 자동 체크 |
💡 솔직히 말씀드리면: README 한 번 정독하고 시작하면 셋업 25분, 그 다음 점심 먹고 자고 하면 다음날 아침에는 1년치가 다 백업돼 있어요. 사용자가 직접 옆에 붙어있을 일은 거의 없습니다.
🕐 약 5분 (이미 가입한 분은 1분 안에 끝남)
📍 시작 전 확인: 데스크톱/노트북 + 인터넷 연결
👨👩👧👦 자녀가 2명 이상인가요? 아래 1-8단계는 자녀 1명 기준입니다. 둘째 아이는 셋업을 마친 뒤 자녀별로 노션 DB·통합·시크릿을 따로 만들어야 합니다 — 자세한 가이드는 (고급) 자녀가 여러 명이거나 AI 편지를 끄고 싶을 때 섹션 참고.
- 키즈노트 계정 — 어린이집 등록할 때 받은 계정. 평소 앱으로 쓰는 그 계정
- 노션 계정 — 없으면 https://www.notion.so 우측 상단
Sign up클릭 → 이메일 가입 (1분) - GitHub 계정 — 없으면 https://github.com/signup 에서 가입 (이메일 인증만 하면 됨, 1분)
브라우저 탭 3개 열어서 로그인 상태 확인:
| 사이트 | URL | 확인할 것 |
|---|---|---|
| 키즈노트 | https://www.kidsnote.com | 로그인 후 내 자녀 알림장이 보여야 함 |
| 노션 | https://www.notion.so | 로그인 후 워크스페이스 화면이 보여야 함 |
| GitHub | https://github.com | 로그인 후 우측 상단에 내 프로필 사진이 보여야 함 |
노션 가입 직후라면 "워크스페이스"를 만드는 안내가 자동으로 뜹니다:
Personal또는개인용선택- 워크스페이스 이름은 자유 (예: "내 노션")
- 권유하는 템플릿이 있으면 모두 건너뛰기 / Skip
- 빈 화면 또는 시작 페이지가 나오면 OK
✅ 0단계 성공 신호: 데스크톱 브라우저에서 키즈노트·노션·GitHub 모두 로그인됨, 노션은 본인 워크스페이스가 활성화돼 있음.
💡 이 README를 휴대폰으로 보고 있다면: 휴대폰은 README 읽기용으로 두고, 노트북에서 위 세 사이트에 로그인해 두세요. 다음 단계부터 모두 노트북에서 진행합니다.
🕐 약 1분
📍 시작 전 확인: GitHub 로그인 완료 (0단계)
"Fork(포크)"는 남의 GitHub 프로젝트를 내 계정에 복사한다는 뜻입니다. 원본은 그대로 두고, 내 사본에서 설정을 바꿉니다.
- GitHub에서 이 페이지 (https://github.com/redchupa/kidsnote-backup) 를 엽니다 (이미 보고 있다면 그대로)
- 페이지 우측 상단에서 검은색
Fork버튼 찾기 (별 모양Star버튼 옆에 있음) Fork클릭- 다음 화면에서 옵션 그대로 두고 페이지 하단 녹색
Create fork버튼 클릭 - 잠시 후 자동으로 본인 계정의 사본 페이지로 이동됨
✅ 1단계 성공 신호: 페이지 좌측 상단의 경로 표시가 내깃허브아이디 / kidsnote-backup (원본은 redchupa / kidsnote-backup이었음).
💡 Public vs Private fork — 기본값(public)이 권장됩니다.
- Public (기본): GitHub Actions 무제한 무료 사용 가능. 개인정보(쿠키·토큰)는 Secrets에 분리 저장되어 코드 공개와 무관하게 안전.
- Private: 월 2,000분 Actions 무료 한도. AI=on 1년치 첫 백업이 5-15시간(300-900분) 걸리니 한 달 안에 들어와요. (이후 매일 incremental은 약 10분/일이라 무관)
| 증상 | 원인 / 해결 |
|---|---|
| Fork 버튼이 안 보임 | GitHub 미로그인 상태. 우측 상단 Sign in 클릭 후 로그인 |
| "You already have a fork" 메시지 | 이전에 fork한 적 있음. 우측 상단 프로필 → Your repositories → kidsnote-backup 들어가서 그대로 사용 |
| 화면이 흐릿하고 응답 없음 | 새로고침 (F5) 후 재시도 |
💡 fork URL을 기억하세요: 나중에 돌아올 때 필요합니다. 형태:
https://github.com/내깃허브아이디/kidsnote-backup즐겨찾기 추가 권장.
🕐 약 3분
📍 시작 전 확인: 노션 로그인 + 워크스페이스 활성화 (0단계)
노션의 "데이터베이스"는 표 형태로 데이터를 저장하는 페이지입니다. 알림장 하나 = 한 행으로 들어갈 표를 만들겠습니다.
- 노션 좌측 사이드바 하단의
+ 새 페이지버튼 클릭- 영문 UI:
+ New page - 사이드바가 숨겨져 있으면: 좌측 상단의 햄버거 아이콘(
≡) 클릭해서 펼치기
- 영문 UI:
- 페이지가 열리면 가운데 큰 글씨 입력란에
키즈노트 백업입력 (이름은 자유)
- 제목 아래 본문 영역을 클릭해서 커서를 둡니다
- 반드시 영문 입력 모드로 전환 후 키보드에서 슬래시 입력:
- 윈도우:
한/영키 (스페이스바 옆) 또는Alt + 한자또는Shift + Space - 맥:
Caps Lock키 또는 좌측 상단 IME 표시기 클릭 - 확인: 영문 입력 모드면
a키 누를 때a가 나옴 (한글ㅁ아님)
- 윈도우:
- 영문 모드에서 슬래시
/입력 → 메뉴가 즉시 팝업 - 이어서
database타이핑 → 검색 결과 좁혀짐 데이터베이스 - 인라인항목 클릭 (영문:Database - Inline)⚠️ "전체 페이지"가 아닌 "인라인" — 인라인은 페이지 안에 표가 들어가고, 전체 페이지는 새 페이지가 됨. 우리는 인라인.
새 데이터베이스가 만들어지면 표에 기본 속성 두 개가 자동으로 보입니다. 기본 속성은 그대로 두고, 우리에게 필요한 두 개를 옆에 더 추가하기만 하면 됩니다.
💡 노션 UI 순서 주의: 새 속성 추가 시 노션은 먼저 유형(종류)을 고르고, 그 다음 이름을 입력하는 순서로 동작합니다. 반대로 하려고 하면 막혀요.
- 표 우측 끝에 있는
+아이콘 클릭 → 새 속성 추가:- 먼저 종류 선택 화면에서
날짜클릭 (영문:Date) - 그 다음 이름 입력란에
날짜입력 - Esc 또는 다른 곳 클릭으로 닫기
- 먼저 종류 선택 화면에서
- 다시 표 우측 끝
+클릭 → 또 새 속성 추가:- 먼저 종류 선택 화면에서
숫자클릭 (영문:Number) - 그 다음 이름 입력란에
번호또는Report ID입력 (코드가 한글/영문 둘 다 자동 인식)
- 먼저 종류 선택 화면에서
✅ 2단계 성공 신호: 표 머리글에 기본 속성 두 개 + 날짜 + 번호/Report ID 컬럼이 보임. 표 본문(행)은 비어 있어도 OK.
| 증상 | 원인 / 해결 |
|---|---|
/ 눌러도 메뉴 안 뜸 |
한글 입력 모드. 한/영 전환 후 다시 시도 |
/database 검색 결과 없음 |
노션 UI 업데이트로 메뉴 이름 변경 가능. /table 또는 /data 시도 |
| "인라인"과 "전체 페이지"가 헷갈림 | 인라인을 선택해야 같은 페이지 안에 들어감. 전체 페이지를 잘못 골랐으면 페이지 좌측 상단 ← 뒤로 돌아간 후 빈 페이지에 다시 시작 |
| 컬럼 이름 입력 시 한글 자동 변환 등 골치 아픔 | 그냥 한글 번호 입력하셔도 OK — 코드가 한글/영문 둘 다 자동 매칭 |
| 이름부터 입력하려는데 진행이 안 됨 | 노션 UI는 유형(종류) 선택이 먼저. 종류 화면에서 날짜 또는 숫자를 먼저 고른 후에 이름이 입력됨 |
💡 컬럼 이름이 영문 UI에서
Name/Date로 보여요: 그대로 두세요. 코드가 한글/영문 둘 다 자동으로 인식합니다.
🕐 약 2분
📍 시작 전 확인: 노션 로그인 유지 중
노션 API를 사용하려면 "통합(Integration)"이라는 권한 토큰이 필요합니다. GitHub에서 노션 DB에 글을 쓸 수 있게 해주는 열쇠입니다.
- 새 탭에서 https://www.notion.so/profile/integrations 접속
- 노션 로그인 상태가 아니면 로그인 화면 → 로그인 후 다시 이 URL 접속
- 페이지 우측
+ 새 통합(영문:+ New integration) 버튼 클릭 - 폼 입력:
- 이름:
kidsnote-backup(자유) - 연결된 워크스페이스: 본인 워크스페이스 선택 (자동 선택돼 있는 경우가 많음)
⚠️ 워크스페이스가 여러 개면 2단계에서 DB 만든 워크스페이스를 정확히 선택
- 인증 방법:
내부 통합 시크릿(= 액세스 토큰) 선택 (영문:Internal Integration Secret)⚠️ OAuth가 아닌 액세스 토큰 쪽을 골라야 합니다. OAuth는 외부 서비스용이라 우리 용도와 다릅니다.
- 이름:
- 페이지 하단
저장(영문:Save) 클릭 - 다음 화면에서
내부 통합 시크릿(영문:Internal Integration Secret) 항목 옆표시(영문:Show) 클릭 → 토큰이 보이면 옆의복사(영문:Copy) 버튼 클릭
토큰 모양:
- 새 형식:
ntn_AbCdEfGh1234...(총 50자 정도) - 이전 형식:
secret_AbCdEfGh1234...
✅ 3단계 성공 신호: 메모장에 ntn_ 또는 secret_ 으로 시작하는 50자 정도의 영문+숫자 문자열.
| 증상 | 원인 / 해결 |
|---|---|
+ 새 통합 버튼 없음 |
노션 무료 계정도 사용 가능. 페이지 새로고침 / 다른 브라우저에서 시도 |
| 워크스페이스 선택지가 없음 | 0단계 워크스페이스 만들기 빠뜨림. 노션 메인으로 돌아가서 워크스페이스부터 |
| 토큰을 잘못 닫음 | https://www.notion.so/profile/integrations 다시 가서 만든 통합 클릭 → 시크릿 섹션에서 재발급 |
🔒 이 토큰은 다른 사람에게 절대 공유하지 마세요. 토큰만 있으면 본인 노션 DB에 글을 쓸 수 있습니다.
🕐 약 1분
📍 시작 전 확인: 2단계 DB 페이지가 노션에 만들어져 있음 + 3단계 통합 저장 완료
토큰을 만들었어도 끝이 아닙니다. 이 통합이 우리 DB에 글을 쓸 수 있도록 명시적으로 연결해야 합니다 (생략하면 다음에 "권한 없음" 에러).
- 2단계에서 만든
키즈노트 백업DB 페이지로 돌아가기- 노션 좌측 사이드바에서
키즈노트 백업클릭 - 또는 노션 메인에서 페이지 찾기
- 노션 좌측 사이드바에서
- DB 페이지가 열리면 페이지 우측 상단의
⋯(점 세 개 가로 아이콘) 클릭- 노션 한국어/영문 모두 같은 위치
- 드롭다운 메뉴를 아래로 스크롤해서
연결(영문:Connections) 찾기 → 클릭 연결 검색(영문:Search for connections) 입력란에kidsnote-backup입력- 검색 결과에 나타난
kidsnote-backup클릭 - 확인 팝업이 뜨면
페이지에 추가(영문:Add to page) 버튼 클릭 — 이 버튼을 눌러야 실제로 연결됩니다
✅ 4단계 성공 신호: 다시 ⋯ → 연결 메뉴를 보면 kidsnote-backup 이 목록에 표시됨 (No connections 아닌 상태).
| 증상 | 원인 / 해결 |
|---|---|
kidsnote-backup 검색 결과 없음 |
3단계에서 다른 워크스페이스에 통합 만들었을 가능성. 3단계 다시, 워크스페이스 다시 확인 |
⋯ 메뉴에 연결이 안 보임 |
DB 페이지가 아니라 일반 페이지일 가능성. DB 좌측 상단에 표/리스트 형태인지 확인 |
| 권한 거부 에러 | 워크스페이스 관리자 권한 필요. 본인이 만든 워크스페이스면 자동 OK |
🕐 약 2분
📍 시작 전 확인: 2단계 DB 페이지가 브라우저에 열려 있음
DB ID는 노션 URL 안에 들어있는 32자 영문+숫자 문자열입니다.
💡 부모 페이지 ID를 잘못 입력해도 워크플로가 자동 복구하지만, 시작부터 정확한 DB ID를 넣는 게 안전합니다.
부모 페이지 ID vs DB ID — 시각적 구분:
❌ 부모 페이지 URL (틀림): https://www.notion.so/내이름/367ca7bf22f2801cbb18f460af4bd4d1
─────────────────────────────────
⚠️ 이건 페이지 ID. 워크플로 400 에러
✅ 풀화면 DB URL (맞음): https://www.notion.so/내이름/367ca7bf22f280d185a6e34e6fc01786?v=...
──────────────────────────────── ─────
✅ 이게 진짜 DB ID 물음표 뒤 view ID
풀화면으로 여는 방법:
- 데이터베이스(
키즈노트 백업표) 좌측 상단의 표 제목 위에 마우스를 올림 - 제목 옆에 나타나는 ↗ (또는
Open as page화살표) 아이콘 클릭- 영문 UI에서는
Open as full page로 표시되기도 함
- 영문 UI에서는
- DB가 풀화면으로 열림. 이제 브라우저 주소창 URL이 물음표 뒤에
?v=가 붙은 형태가 되어야 합니다 — 이게 DB URL의 결정적인 신호:...32자hex?v=뷰ID ↑ 물음표 뒤에 v= 가 보이면 풀화면 DB URL이 맞음?v=가 안 보이면 아직 부모 페이지를 보고 있는 겁니다. 5-1을 다시 시도하세요.
브라우저 주소창의 URL을 봅니다. 다음 두 가지 패턴 중 하나입니다:
패턴 A — 워크스페이스 이름이 URL에 포함:
https://www.notion.so/내워크스페이스/238f5e29c0894adfb6c4d8e1a5b2c3d4?v=abcdef1234567890
────────── ────────────────────────────────
워크스페이스 이 32자가 DB ID
패턴 B — 워크스페이스 없음 (개인 계정):
https://www.notion.so/238f5e29c0894adfb6c4d8e1a5b2c3d4?v=abcdef1234567890
────────────────────────────────
이 32자가 DB ID
패턴 C — DB 이름 한글이 URL에 포함된 경우 (간혹 발생):
https://www.notion.so/키즈노트백업-238f5e29c0894adfb6c4d8e1a5b2c3d4?v=...
────────── ────────────────────────────────
한글이름 이 32자가 DB ID
- 물음표(
?) 직전의 32자가 DB ID - 보통 영문 소문자 + 숫자 조합 (간혹 하이픈 포함)
- 한글 부분이 있으면 무시하고 hex 부분만
✅ 5단계 성공 신호: 메모장에 32자 hex 문자열 (예: 238f5e29c0894adfb6c4d8e1a5b2c3d4).
| 증상 | 원인 / 해결 |
|---|---|
| URL에 32자 hex가 안 보임 | 인라인 DB 그대로 보고 있을 가능성. 5-1로 돌아가서 ↗ 클릭해서 풀화면으로 |
| 32자가 잘려서 보임 | 페이지 우측 상단 공유 → 링크 복사 클릭해서 전체 URL 확보 후 위 규칙 적용 |
| 패턴이 안 맞음 | 노션 모바일 앱이나 데스크톱 앱에서 본 URL은 다를 수 있음. 반드시 웹 브라우저(Chrome 등)에서 확인 |
워크플로 실행 시 400 에러 + is a page, not a database 메시지 |
(구버전 코드만 해당) 부모 페이지 ID를 잘못 등록한 경우. 최신 코드는 자동 복구하지만 옛 버전이면 fork에서 Sync fork로 최신 가져온 뒤 재실행 |
🕐 약 3분
📍 시작 전 확인: Chrome 또는 엣지 브라우저 + 키즈노트 로그인 완료 (0단계)
여기가 가장 어려워 보이지만 차근차근 따라하면 30초 안에 끝납니다.
Chrome 외에도 엣지(같은 화면) / 파이어폭스(
F12→저장소)에서 가능합니다. 아래는 Chrome 기준.
- Chrome으로 https://www.kidsnote.com 접속 → 평소처럼 로그인
- 카카오 SSO로 로그인하시는 분: "카카오로 로그인" → 카카오 페이지 → 로그인 → 자동으로 키즈노트로 돌아옵니다
- 로그인 후 자녀 알림장 화면(또는 메인)이 보여야 합니다
- 키즈노트가 로그인된 상태에서 키보드
F12키 → 우측 또는 하단에 개발자 도구 창 열림⚠️ F12가 안 먹는 노트북:Fn + F12또는Ctrl + Shift + I⚠️ 그것도 안 먹으면: Chrome 우측 상단⋮(점 세 개) →도구 더보기→개발자 도구
- 개발자 도구 상단 메뉴에서
Application클릭- 한국어 Chrome도 메뉴는 영문 그대로 (
Elements,Console,Sources,Network... 옆에 있음) - 안 보이면 메뉴 끝
>>클릭 → 목록에서Application선택
- 한국어 Chrome도 메뉴는 영문 그대로 (
- 왼쪽 사이드바에서
Storage섹션 아래Cookies폴더 펼치기 →https://www.kidsnote.com클릭 - 오른쪽에 큰 표가 나타남. 컬럼 헤더:
Name | Value | Domain | Path | Expires | Size | ...
- 표에서 다음 두 조건을 모두 만족하는 행을 찾습니다:
Name컬럼이 정확히sessionidDomain컬럼이 정확히.kidsnote.com(앞에 점)
- 그 행의
Value컬럼을 클릭 → 셀이 선택됨 - 값을 복사:
- 방법 A (셀이 다 보이면): 더블클릭 →
Ctrl+C - 방법 B (셀이 잘려 보이면 / 일반적): 행을 클릭 → 표 하단에 나타나는 패널의
Cookie Value영역에서 값을 마우스로 드래그 선택 →Ctrl+C
- 방법 A (셀이 다 보이면): 더블클릭 →
쿠키 값 예시: ycen2ydnwm2vsoj3zxe618k5nugt7j33 (영문 소문자 + 숫자 32자 정도)
쿠키 표를 보면 sessionid처럼 보이는 이름이 여럿 있을 거예요. 다음은 전부 다른 용도이므로 무시하세요:
| 쿠키 이름 | 정체 |
|---|---|
_kau, _kawlt, _kdt, _karb, _kasl 등 _k* |
Domain이 .kakao.com — 카카오 로그인/광고용 |
ch-session-127152, ch-veil-id |
채널톡(홈페이지 우측 하단 챗봇) 세션 |
current_user |
사용자 ID 표시용 (값이 짧음, sessionid 아님) |
_kn_visitorId, _gcl_au, _ga*, _dd_s |
방문자 통계용 |
정답은 단 하나: Name 정확히 sessionid + Domain 정확히 .kidsnote.com.
✅ 6단계 성공 신호: 메모장에 32자 정도의 영문+숫자 문자열.
| 증상 | 원인 / 해결 |
|---|---|
sessionid 행이 없음 |
키즈노트 로그아웃 상태. 로그인 다시 확인 |
Application 탭이 없음 |
개발자 도구 창이 너무 좁음. 창 크기 늘리거나 >> 더보기에서 선택 |
| 쿠키 값이 너무 길어서 셀이 잘림 | 하단 Cookie Value 패널에서 드래그 선택 (위의 방법 B) |
| F12 / Ctrl+Shift+I 모두 안 먹음 | 시크릿 모드일 가능성. 일반 창에서 다시 시도 |
💡 쿠키 만료 안내: 이 sessionid는 약 30일 후 만료됩니다. 만료되면 이 6단계만 다시 + GitHub Secrets 업데이트하면 됩니다 (3분).
🕐 약 5분
📍 시작 전 확인: 메모장에 세 값(노션 토큰, DB ID, 쿠키)이 있고, GitHub fork 페이지를 찾을 수 있음 (1단계 URL)
이제 메모장에 모은 세 값을 GitHub fork에 안전하게 저장합니다. GitHub Secrets는 암호화되어 저장되며, 워크플로 실행 시에만 사용됩니다.
- 1단계에서 만든 내 fork 페이지로 이동:
- URL 직접 입력:
https://github.com/내깃허브아이디/kidsnote-backup - 또는 GitHub 우측 상단 프로필 사진 클릭 →
Your repositories→kidsnote-backup클릭
- URL 직접 입력:
- 페이지 가운데에 있는 메뉴 줄(
Code,Issues,Pull requests... 옆에 있는)에서Settings클릭⚠️ 헷갈리는 부분: 페이지 우측 상단 프로필 사진 옆에도Settings가 있는데 그건 GitHub 전체 설정입니다. 우리는 repo 메뉴의 Settings
- 좌측 사이드바에서
Secrets and variables클릭 (펼쳐짐) →Actions하위 클릭 - 페이지 우측 상단 녹색
New repository secret버튼 클릭
다음 표대로 5번 반복해서 등록합니다 — 한 번에 하나씩.
| Name (정확히 일치, 대소문자 구분) | Secret 값 |
|---|---|
NOTION_TOKEN |
3단계에서 받은 토큰 (ntn_... 또는 secret_...) |
NOTION_DATABASE_ID |
5단계에서 추출한 32자 hex |
KIDSNOTE_SESSION_COOKIE |
6단계에서 복사한 쿠키 값 |
KIDSNOTE_CHILD_NAME |
백업할 자녀 이름 — 글자 수 자유 (부분 일치 substring 방식). 자녀 이름이 우하린이면 우하린/하린/린 다 OK, 정에스더면 정에스더/에스더/스더 다 OK |
AI_FEATURES |
off 권장 (AI 가공 끄기, 1년치 1-3시간). on으로 켜면 자녀 일기/부모 편지/LLM 대시보드 4종이 추가되지만 무료 로컬 LLM 품질이 완벽하지 않고 1년치 5-15시간 소요 |
한 시크릿씩 등록하는 방법:
New repository secret버튼 클릭Name칸에 시크릿 이름 입력 (위 표 그대로)Secret칸에 값 붙여넣기 (앞뒤 공백 없이)- 녹색
Add secret버튼 클릭 - 다음 시크릿 추가하려면 다시
New repository secret클릭 → 반복
⚠️ 이름 오타가 가장 흔한 실수:NOTION_TOKEN이 아닌NOTION-TOKEN,Notion_Token,NOTIONTOKEN등으로 입력하면 워크플로가 못 찾습니다. 반드시 대문자 + 언더바(_).
⚠️ 값 복사 시 앞뒤 공백/줄바꿈 포함 안 되게 주의. 메모장 → GitHub 붙여넣기 시 클릭만 하고Ctrl+V.
👶
KIDSNOTE_CHILD_NAME는 자녀 1명이라도 꼭 등록하세요 — 입력 안 하면 키즈노트 API가 반환하는 "첫 번째 자녀"가 자동 선택되는데, 동생이 생기거나 키즈노트 측 list 순서가 바뀌면 의도와 다른 아이가 백업될 수 있습니다. 명시적으로 등록하면 안전.👶 이름 형식은 자유 — substring 부분 일치라 글자 수 제한 없음. 풀네임
정에스더도 OK, 두 글자스더도 OK. 오타나 매칭 실패 시 워크플로가 자동 실패하면서 사용가능한 자녀 list를 로그에 보여줘서 바로 고칠 수 있어요.
✅ 7단계 성공 신호: Secrets 목록에 다음 5개가 정확한 이름으로 나열됨:
AI_FEATURES Updated now
KIDSNOTE_CHILD_NAME Updated now
KIDSNOTE_SESSION_COOKIE Updated now
NOTION_DATABASE_ID Updated now
NOTION_TOKEN Updated now
값은 표시되지 않고 Updated [시간]만 보임 = 정상.
| 증상 | 원인 / 해결 |
|---|---|
Settings 탭이 안 보임 |
다른 사람의 repo를 보고 있을 가능성. 1단계에서 만든 본인 fork URL 확인 |
Secrets and variables 메뉴 없음 |
좌측 사이드바 더 아래 스크롤. Code and automation 섹션 안에 있음 |
| Add secret 후 목록에 없음 | 이름에 공백 또는 특수문자. Update 클릭해서 이름 다시 확인 |
| 시크릿이 6개 이상 있음 | 이전에 다른 시크릿 만든 적 있음. 위 5개만 정확하면 추가 시크릿은 무시 가능 |
🕐 백업 자체는 5분에서 15시간 (알림장 개수 + AI 설정에 따라)
📍 시작 전 확인: 시크릿 5개 등록 완료 + 노션 DB에 통합 연결 완료
드디어 마지막 단계. 워크플로를 직접 한 번 돌려서 백업을 시작합니다.
- fork repo 페이지 상단 메뉴에서
Actions탭 클릭 - 처음이라면 화면 가운데에 노란 안내가 뜹니다:
Workflows aren't running on this fork.
- 녹색
I understand my workflows, go ahead and enable them버튼 클릭 - (이미 활성화돼 있으면 이 화면이 안 보이고 바로 Workflow 목록이 나타남)
- 녹색
💡 처음에는 limit=3으로 테스트하는 걸 강력히 권장합니다. 3개만 백업해서 노션 DB에 정상 표시되는지 확인하고, 그 다음에 전체 백업을 돌리세요.
- 좌측 워크플로 목록에서
Kidsnote → Notion mirror클릭 - 가운데 영역 우측 상단의 회색
Run workflow ▾드롭다운 클릭 - 작은 폼이 펼쳐짐:
Branch:main(그대로 둠)limit:3입력 (첫 테스트용)
- 폼 하단 녹색
Run workflow버튼 클릭
기다린 후 노션 DB로 가서 확인:
- 알림장 3개의 페이지 본문 + 사진 OK
- 동영상/파일 첨부물 있으면 OK
- 📊 통계 / 🥗 영양 대시보드 페이지 생성됨 (식단 정보 있을 때)
- AI=on이면 각 알림장에 자녀 일기/부모 편지 callout 3개 추가됨
⏱️ 예상 시간: AI=off면 3-5분 / AI=on이면 15-25분 (첫 실행은 LLM 모델 다운로드 때문, 두 번째부터는 약 30초 만에 시작).
⚠️ limit=3에서는 LLM 대시보드 4개(📖🌟🌱💌)가 안 만들어집니다 — 데이터가 부족해서 의미 있는 페이지 생성이 어려워요. 셋업 검증용으로만 보시고, 8-3 전체 백업에서 자연스럽게 채워집니다.
테스트 3개가 정상이면, 같은 방법으로 다시 실행하되 이번에는 limit을 비워둡니다 (전체 백업).
⚠️ 첫 백업 시간 — secretAI_FEATURES설정에 따라 크게 차이납니다.AI 끔 (
AI_FEATURES=off) — Ollama 다운로드 + LLM 호출 모두 skip, 사진 업로드 시간이 대부분
알림장 수 예상 시간 run 횟수 50개 미만 5-15분 1회 100-200개 30분-1.5시간 1회 300-400개 + 사진 많음 1-3시간 1회 AI 켬 (secret
AI_FEATURES=on) — 알림장당 LLM 호출 3회 + 4개 대시보드 LLM 생성 (llama3.1:8b CPU)
알림장 수 예상 시간 run 횟수 50개 미만 (몇 달치) 1-3시간 1회 100-200개 (반년) 3-6시간 1-2회 300-400개 (1년치) + 사진 많음 5-15시간 2-3회 GitHub-hosted runner는 단일 job 6시간 하드 캡이 있어서 AI 켬 + 대용량은 한 번에 못 끝낼 수 있는데, 6시간 cron이 자동 재개해서 사용자가 다시 클릭할 일은 없어요.
Run workflow 한 번만 클릭하면 끝. 이후로는 6시간마다 cron이 자동으로 멈춘 지점부터 이어서 백업하고, 1년치 다 끝나면 이후 cron은 새 알림장만 1-2분에 체크하고 종료합니다. 사용자가 매번 재실행할 필요 없음.
🔕 cron 자동 트리거를 끄고 싶다면: fork repo →
Actions탭 → 좌측Kidsnote → Notion mirror클릭 → 우측⋯→Disable workflow.
실행 중인 run을 클릭 → mirror 작업 → Mirror Kidsnote → Notion 스텝을 펼치면 실시간 로그 확인 가능. Progress N% (M/total) 형태로 진행률이 표시됩니다. 로그는 자동 새로고침되지 않으니 F5로 갱신하세요.
GitHub Actions는 종종 네트워크 이슈로 중간에 멈출 수 있어요. 걱정 마세요:
- 이미 만들어진 노션 페이지는 그대로 유지됩니다
- 8단계만 다시 실행하면 이어서 백업됩니다 (dedup이 기존 페이지 자동 skip → 보통 몇 초에서 몇 분)
✅ 8단계 최종 성공 신호:
- Actions 페이지에서 워크플로 옆 동그라미가 녹색 체크 ✅ +
succeeded - 노션 DB로 돌아가서 보면 알림장들이 날짜순으로 들어가 있음
- 페이지 클릭하면 본문 + 🌤️ 날씨 callout + 사진 + 첨부파일 정상 표시 (AI=on이면 추가로 💭 요약 / 🧒 자녀 일기 / 👨👩👧 부모 편지 callout 3개)
- 사진 클릭하면 원본 화질로 열림
- DB 안에 자동 생성된 대시보드 페이지도 보임 — AI=off면 📊 통계 + 🥗 영양 2개, AI=on이면 추가로 📖 성장 스토리 / 🌟 마일스톤 / 🌱 관심사 / 💌 선생님께 (최대 6개)
✅ 이제 끝: 셋업 끝났습니다. 이 시점부터는 사용자가 할 일이 없어요.
- 매 6시간 cron 자동 트리거 → 새 알림장 있으면 자동 백업
- 30일에 한 번 쿠키 갱신 (3분)만 잊지 마세요
| 증상 | 원인 / 해결 |
|---|---|
| Actions 탭에 워크플로 없음 | fork 직후 동기화 지연. 1-2분 후 새로고침 / 또는 I understand... 클릭 안 했을 가능성 |
Run workflow 드롭다운 없음 |
권한 문제. fork가 본인 계정인지 확인. 본인 fork인데도 없으면 새로고침 |
| 노란색/빨간색 동그라미 (실패) | 문제 해결 섹션에서 에러 메시지 검색 |
| 노션 DB가 비어있음 (워크플로는 성공) | 4단계 통합 연결 누락 가능. DB 페이지 ⋯ → 연결에서 kidsnote-backup 있는지 확인 |
기본 셋업은 자녀 1명 + 4개의 AI 대시보드 모두 켜짐 상태로 동작합니다. 두 경우 중 하나라도 해당되면 이 섹션 읽어주세요.
키즈노트 계정에 자녀가 N명 (쌍둥이·형제·자매)이면, 각 자녀를 별도 GitHub fork에서 병렬 백업하는 것이 가장 빠릅니다. GitHub Actions runner는 fork별로 따로 돌기 때문에, 자녀 N명을 같은 시간에 동시 백업할 수 있어요.
자녀별로 모든 것을 따로 만듭니다:
| 항목 | 자녀 #1 | 자녀 #2 |
|---|---|---|
| GitHub fork | 내아이디/kidsnote-backup |
내아이디/kidsnote-backup-2nd |
| 노션 DB | 별도 1개 | 별도 1개 |
| 노션 통합(Integration) | 별도 1개 | 별도 1개 |
| 통합 → DB 연결 | 통합 #1 → DB #1 | 통합 #2 → DB #2 |
Fork 시크릿 NOTION_TOKEN |
통합 #1 토큰 | 통합 #2 토큰 |
Fork 시크릿 NOTION_DATABASE_ID |
DB #1 ID | DB #2 ID |
Fork 시크릿 KIDSNOTE_SESSION_COOKIE |
같은 쿠키 (공유 가능) | 같은 쿠키 |
Fork 시크릿 KIDSNOTE_CHILD_NAME |
첫째 이름 (예: 하린) |
둘째 이름 (예: 혁주) |
자녀 #1 셋업 + GitHub fork와 노션 쪽을 한 번 더 만듭니다. 키즈노트 계정·쿠키는 공유 가능.
2단계를 그대로 한 번 더 합니다. 페이지 제목은 키즈노트 백업 - 둘째이름 같이 구분되게 지으면 좋아요. 컬럼 추가 단계(2-3)도 그대로 — 기본 속성 두 개 + 날짜 + Report ID.
3단계를 한 번 더 합니다. 통합 이름은 kidsnote-backup-child2 같이 구분되게 지으세요. 새 토큰(ntn_...)이 발급됩니다 — 이게 자녀 #2 전용 토큰입니다.
4단계를 자녀 #2 DB 페이지에서 한 번 더 합니다.
5단계를 자녀 #2 DB에서 한 번 더 합니다.
🚨 여기서 사용자들이 가장 많이 함정에 빠집니다: 5-1의 ↗ 풀화면 단계를 반드시 거쳐서, URL이 ?v=뷰ID를 포함한 형태가 된 다음에 ID를 복사하세요. ?v= 가 없으면 부모 페이지 ID가 잡혀서 워크플로가 400 Bad Request — is a page, not a database 에러로 죽습니다.
- github.com/redchupa/kidsnote-backup 접속 (원본 repo)
- 우측 상단
Fork클릭 →Create a new fork화면 Repository name칸에 자녀 #2용 이름 입력 (기본값을 변경해야 함):- 예:
kidsnote-backup-2nd,kidsnote-backup-혁주,kidsnote-backup-child2 - 첫 번째 fork(
kidsnote-backup)와 이름이 달라야 GitHub이 허용
- 예:
Create fork클릭
✅ Step 5 성공 신호: 본인 계정에 fork가 2개 (kidsnote-backup + kidsnote-backup-2nd).
자녀 #2용 fork에서 7단계 그대로 진행:
| Name | 값 |
|---|---|
NOTION_TOKEN |
자녀 #2 통합 토큰 (Step 2) |
NOTION_DATABASE_ID |
자녀 #2 DB ID (Step 4) |
KIDSNOTE_SESSION_COOKIE |
자녀 #1 fork와 같은 쿠키 (한 키즈노트 계정 = 한 쿠키) |
KIDSNOTE_CHILD_NAME |
자녀 #2 이름 (예: 혁주) |
AI_FEATURES |
on 또는 off |
자녀 #2 fork에서 8단계 그대로 진행. Run workflow 클릭하면 자녀 #2 백업이 시작됩니다. 자녀 #1 fork와 독립적으로 6시간 cron 자동 백업.
같은 패턴을 반복. 자녀 N명 = fork N개 + 노션 DB N개 + 노션 통합 N개.
💡
off권장. 무료 로컬 LLM(llama3.1:8b)이라 가끔 어색한 표현이 나오고, 1년치 백업이 5-15시간으로 길어집니다. 단순 백업이 더 안정적이고 빠르며, 노션에서 검색·정렬만으로도 충분히 추억 정리가 가능해요. 시험 삼아 한 번 켜보고 싶을 때만on으로 바꾸세요.
AI를 켜면 백업 결과에 두 가지가 추가됩니다:
- 각 알림장마다 3개 AI callout (💭 요약 · 🧒 자녀의 일기 · 👨👩👧 부모의 편지)
- 별도 페이지로 4개 AI 대시보드 (📖 매월 성장 스토리 · 🌟 마일스톤 · 🌱 분기 관심사 · 💌 연도별 선생님께)
셋업 7단계에서 등록한 AI_FEATURES secret 값만 바꾸면 됩니다. 수동 실행과 cron 자동 실행 모두 동시 적용:
- fork repo →
Settings→ 좌측Secrets and variables→Actions AI_FEATURES옆 연필 아이콘 클릭 →Update secret- 값을
on또는off로 변경
AI는 켜고 싶은데 4개 대시보드 중 일부는 빼고 싶다면 (예: 졸업한 자녀라 매월 성장 스토리는 어색) — 같은 Secrets 화면에서 New repository secret 으로 다음 중 원하는 것을 추가:
| Secret 이름 | 값 | 끄는 페이지 |
|---|---|---|
GROWTH_STORY |
off |
📖 매월 성장 스토리 |
MILESTONES |
off |
🌟 마일스톤 |
INTERESTS |
off |
🌱 분기 관심사 |
TEACHER_THANKS |
off |
💌 연도별 선생님께 |
다시 켜려면 해당 secret을 삭제하거나 값을 on으로 변경.
⚠️ 알림장 안의 callout 3개 (💭 요약·🧒 자녀일기·👨👩👧 부모편지) 는AI_FEATURES하나로만 제어 — 개별 끄는 옵션 없음.
📌 기본은 비공개입니다. 이 가이드대로 따라하면 본인만 접근 가능한 비공개 노션 DB가 만들어집니다 — 별도 설정 없이도 안전합니다. 가족·친척 누구도 자녀 알림장을 볼 수 없습니다.
공개로 바꾸고 싶을 때만 아래 가이드를 따르세요.
블로그처럼 누구든 링크로 알림장을 볼 수 있게 하려면:
- DB 페이지 우측 상단
공유(영문:Share) 클릭 - 팝업 우측 상단
웹에 게시(영문:Publish) 탭 클릭 웹에 게시토글 ON- 게시된 공개 URL이 표시됨 (예:
https://본인노션이름.notion.site/...) — 복사해서 공유할 사람에게 전달
같은 화면에서 추가 설정:
편집 허용: ❌ 절대 ON 금지 (다른 사람이 페이지를 수정/삭제 가능해짐)복제 허용: 다른 사람이 본인 노션에 복사 가능. 자녀 사진 무단 복제가 걱정되면 OFF댓글 허용: 로그인한 노션 사용자가 댓글 작성 가능. 가족 코멘트 받고 싶으면 ON검색엔진 색인: 구글·네이버 검색 결과에 노출. 자녀 정보면 OFF 강력 권장링크 만료: 일정 기간 후 자동 비공개 (가족 행사 후 공유 종료 등에 유용)
- 자녀 사진을 인터넷에 공개해도 괜찮은가?
- 어린이집 이름·반 이름·교사 이름이 본문에 적혀 있는데 공개해도 괜찮은가?
- 검색엔진에서 발견되어도 괜찮은가? (싫으면
검색엔진 색인OFF) - URL을 받은 사람이 그 URL을 다른 사람에게 전달해도 괜찮은가?
- 알림장 본문 안에 다른 자녀 이름이 적혀 있을 수 있다 — 선생님이 "오늘은 ○○이와 함께 ..." 처럼 다른 친구를 언급한 알림장은 그대로 백업되므로, 공개 전에 노션에서 직접 검토 필요.
- AI 가공 콘텐츠(요약/일기/편지·4개 대시보드) 사실 검토 — LLM이 알림장에 없던 사건을 만들어내는 경우가 드물게 있음. 공개 게시 전에 펼쳐서 한 번 읽어보고 어색한 부분은 노션에서 직접 수정 가능.
🛡️ 자동 보호되는 것들:
- 공지 페이지에 달린 다른 학부모 댓글은 자동으로 미수록 (이름·자녀명·일정 노출 방지)
- 사진의 EXIF 위치 정보는 업로드 전 자동 제거
- 6시간 cron 자동 백업은 본인 노션 DB에만 쓰므로 외부 노출 없음
같은 메뉴에서 웹에 게시 토글 OFF → 즉시 비공개 + URL 무효화. 언제든 가능.
URL 공개 대신 노션 게스트 초대가 안전합니다:
- DB 페이지 우측 상단
공유→사용자 추가입력란에 가족 이메일 입력 - 권한
보기 가능선택 →초대
가족의 노션 계정으로 로그인해야 보임. 검색엔진 노출 없음, 링크 도용 불가.
기본 설정 그대로 두면 노션은 페이지를 만들어진 순서대로 보여줍니다 (Created time 정렬). 그러면 "한 번 보면 가장 최근 글이 위에 있는" 화면이 되어야 자연스러운데, 백업 도중 끊겼다가 재개되거나 force-refresh 같은 작업 후엔 순서가 뒤죽박죽이 됩니다.
→ 이름 컬럼 내림차순 정렬을 한 번만 설정하면 페이지가 어떤 순서로 추가됐든 항상 "가장 최근 알림장이 맨 위"로 표시됩니다.
- 노션 DB 페이지 우측 상단 ↑↓ (정렬) 아이콘 클릭
정렬 추가→이름선택내림차순(영문:Descending) 선택
정렬 결과:
_ 📊 통계 대시보드 ┐
_ 🥗 영양 분석 │ 6개의 통계·AI 대시보드가
_ 📖 매월 성장 스토리 │ 맨 위에 모입니다
_ 🌟 우리 아이의 처음들 (마일스톤) │ (이름이 `_`로 시작하기 때문)
_ 🌱 분기별 관심사 │
_ 💌 연도별 선생님께 ┘
[2026-05-21] 알림장: ... ┐
[2026-05-20] 알림장: ... │
[2026-05-19] 공지: ... │ 알림장·공지·앨범이
... │ 최근 → 과거 순으로 정렬
[2018-03-30] 알림장: ... ┘
알림장 한 건만 빨리 보고 싶을 때 "공지 사이로 한참 스크롤"하는 게 불편할 수 있어요. 알림장만 보는 뷰, 앨범만 보는 뷰, 공지만 보는 뷰 를 노션에서 따로 만들어두면 한 번 클릭으로 카테고리 전환됩니다.
- 노션 DB 페이지 좌측 상단
+ 보기 추가(영문:+ New view) 클릭 테이블(영문:Table) 또는리스트선택 (취향 — 리스트가 본문 미리보기 노출됨)- 보기 이름 입력:
알림장또는앨범또는공지 - 우측 상단
필터(영문:Filter) →이름→포함(영문:Contains) - 값 입력란에 정확히 다음 단어 중 하나:
- 알림장만 보는 뷰면
알림장:(콜론 포함) - 앨범만 보는 뷰면
앨범: - 공지만 보는 뷰면
공지:
- 알림장만 보는 뷰면
정렬(영문:Sort) →이름→내림차순선택
각 뷰가 따로 탭처럼 보이고 클릭만으로 전환됩니다.
| 뷰 이름 | 필터 | 정렬 | 용도 |
|---|---|---|---|
| 📋 전체 | (필터 없음) | 이름 내림차순 | 디폴트 (통계+모든 카테고리) |
| 📨 알림장 | 이름 contains 알림장: |
이름 내림차순 | 매일 새 글 확인 |
| 📷 앨범 | 이름 contains 앨범: |
이름 내림차순 | 사진만 둘러보기 |
| 📢 공지 | 이름 contains 공지: |
이름 내림차순 | 어린이집 알림만 |
| 📊 통계만 | 이름 starts with _ |
이름 오름차순 | 6개 대시보드만 |
| 🎨 미술 활동만 | 이름 contains 🎨 미술 |
이름 내림차순 | 카테고리별 알림장 |
🎨 카테고리 필터는 알림장 제목에 자동으로 들어가는 카테고리 이모지/라벨(🎨 미술, 🍱 식사, 🎵 음악 등)을 활용. 자녀가 관심 보인 활동만 빨리 추출 가능.
알림장 제목에는 활동 카테고리 라벨(🎨 미술 · 🍱 식사 등)이 자동으로 들어갑니다. 다만 노션 기본 Table view에서는 표 형태로 페이지 제목만 보입니다.
본문 첫 줄까지 미리보기로 함께 보고 싶다면 List view를 추가하세요:
- 노션 DB 페이지 우측 상단
+클릭 (보기 추가) 리스트(영문:List) 선택- 추가된 리스트 뷰가 활성화됨
리스트 뷰에서는 각 알림장의 제목 아래에 본문 앞부분이 자동으로 회색 텍스트로 미리보기됩니다. 카테고리(🎨/🍱 등)로 한눈에 분류 + 미리보기로 내용 흐름까지 같이 봄.
💡 여러 뷰를 만들어 두면 좋아요: 시간순 정렬은 List, 사진 갤러리는 Gallery, 카테고리별 그룹화는 Board 등.
처음 백업이 한 번 끝나면 그 후로는 6시간 cron이 알아서 새 알림장을 백업합니다:
- 매 6시간마다 자동 cron 트리거
- 새 알림장이 없으면 1-2분 만에 immediately exit
- 새 알림장 있으면 처리 + LLM 대시보드 갱신
즉, 두 번째 이후 사용자가 할 일은 없습니다. 단, 30일에 한 번 키즈노트 sessionid 쿠키가 만료되어 갱신이 필요할 때만 아래 (쿠키 만료 시)를 참고하세요.
네, 안 해도 됩니다. 셋업 끝나면 노션을 평소처럼 보세요. 새 알림장이 들어와 있을 거예요.
망가지면 GitHub이 가입 이메일로 자동 알림을 보내줍니다. 메일이 안 오면 잘 돌고 있다는 뜻이에요.
💡 GitHub 메일 알림 확인: 우측 상단 프로필 →
Settings→ 좌측Notifications→ 페이지 안의Actions섹션 →Send notifications for failed workflows only가 켜져 있는지 확인 (기본 켜짐).
| 주기 | 권장 행동 |
|---|---|
| 매일 | 아무것도 안 해도 됨 — 노션 평소처럼 보면 새 글이 쌓여 있음 |
| 첫 주 정도 | 평일에 노션에 새 글이 들어오는지 1회 가볍게 확인 (안심용) |
| 약 30일 후 | GitHub에서 ❌ 메일이 오면 쿠키 갱신 3분 |
수동 trigger가 필요한 경우 (드물게):
- fork repo URL 접속 (북마크 권장:
https://github.com/내깃허브아이디/kidsnote-backup) - 상단
Actions탭 → 좌측Kidsnote → Notion mirror클릭 - 우측
Run workflow ▾→limit비워둠 → 녹색Run workflow버튼 - 5분 정도 기다림 (새 알림장만 처리)
워크플로 실행했는데 빨간색 ❌ + 에러(401 또는 Notion DB query failed: ...)가 나오면, 쿠키가 만료됐다는 신호입니다.
해결법 (3분):
- 6단계 다시 실행 (Chrome에서 새 sessionid 추출)
- fork repo →
Settings→Secrets and variables→Actions KIDSNOTE_SESSION_COOKIE옆 연필 아이콘 클릭 →Update secret→ 새 값 붙여넣기 →UpdateActions탭 → 다시 워크플로 실행
이 프로젝트는 가끔 버그 수정·기능 개선이 원본 repo(redchupa/kidsnote-backup)에 푸시됩니다. 내 fork는 자동으로 따라가지 않으므로, 가끔 한 번씩 sync해야 최신 코드의 혜택을 받을 수 있어요.
💡 동기화는 선택입니다. 현재 잘 돌아가고 있으면 그대로 두셔도 OK. 새 기능이나 fix를 받고 싶을 때만.
- 본인 fork 페이지(
https://github.com/내깃허브아이디/kidsnote-backup) 접속 - 페이지 상단에
This branch is N commits behind redchupa:main안내가 보이면 sync 가능 상태 - 그 옆
Sync fork버튼 클릭 → 드롭다운에서Update branch(영문:Update branch) 클릭 - 다음 cron 실행부터 새 코드 적용 (또는 즉시 적용하려면 수동 trigger)
대부분의 경우 Sync fork만 하면 다음 cron부터 새 코드가 자동 적용돼서 별도 작업 불필요. 다만 LLM prompt 개선이 포함된 업데이트라면 기존 알림장의 AI callout은 옛 prompt 결과 그대로 남아 있습니다 — 다 새로 만들고 싶으면 Actions → Kidsnote → Notion mirror → Run workflow 폼에서 force_refresh=on으로 한 번 실행 (첫 백업과 같은 시간 소요, cron 자동 재개로 끝까지 진행). 이미 노션이 만족스러우면 굳이 안 돌려도 OK.
네, 0원입니다. Public fork면 GitHub Actions 무제한 무료, 노션은 무료 플랜으로 1년치 충분, LLM도 GitHub Actions 안에서 무료로 실행됩니다.
자녀가 여러 명인 키즈노트 계정은 기본적으로 API가 첫 번째로 반환한 자녀가 백업됩니다. 키즈노트 웹에서 "둘째 자녀"로 전환 후 sessionid 쿠키를 다시 추출해도 결과는 같아요 — 쿠키 값이 자녀별로 다르지 않기 때문입니다.
백업할 자녀를 바꾸려면 fork repo Settings → Secrets and variables → Actions 에서 secret KIDSNOTE_CHILD_NAME 의 값을 새 자녀 이름의 일부(예: 유주)로 변경하세요. cron 자동 실행에도 같이 적용됩니다. 자세한 가이드는 👨👩👧👦 (고급) 자녀가 여러 명이거나 AI 편지를 끄고 싶을 때 섹션을 참고하세요.
💡 자녀가 정확히 어떤 이름·ID로 등록돼 있는지 확인: 워크플로를 한 번 돌리면 시작 직후 로그에
Account has N child(ren): #1 id=... name=...형태로 전체 목록이 출력됩니다.
LLM은 본질적으로 가끔 어색한 결과를 만듭니다. 두 가지 선택:
- AI 통째로 끄기 — repo Settings에서
AI_FEATURES값을off로 변경 → 단순 백업 + 통계만 - 일부 페이지만 끄기 —
GROWTH_STORY/MILESTONES/INTERESTS/TEACHER_THANKS중 원하는 것을off로 추가
자세한 가이드는 B. AI 가공을 안 쓰고 단순 백업 + 통계만 원할 때 섹션 참고.
중복 안 됩니다. 매번 실행할 때 이미 노션에 있는 알림장은 자동으로 skip하고 새 것만 추가합니다. 하루 한 번 돌리든 일주일에 한 번 돌리든, 중간에 멈췄다가 다시 실행하든 안전해요.
자동으로 GPS 제거 + 5MB 이하로 압축 후 노션에 업로드됩니다. 키즈노트의 일반 iPhone/Android 사진은 손실 없이 다 통과해요.
| 첨부 종류 | 5MB 미만 | 5MB 이상 |
|---|---|---|
| 📷 사진 | ✅ 업로드 | ✅ 자동 압축 후 업로드 |
| 🎬 동영상 | ✅ 업로드 | |
| 📎 PDF·엑셀 등 | ✅ 업로드 |
노션 무료 플랜의 파일 크기 한도(5MB) 때문이에요. 노션 유료 플랜으로 올리면 파일당 5 GiB까지 가능.
네, 됩니다. 쿠키 기반이라 카카오 SSO든 일반 계정이든 차이가 없습니다. Chrome에서 평소처럼 로그인만 되면 OK.
아니요 — 한 번만 셋업하면 끝입니다. 6시간마다 자동으로 cron이 새 알림장을 백업합니다. 유일하게 손이 가는 일: 30일에 한 번 키즈노트 sessionid 쿠키 갱신 (3분).
💡 cron 자동 트리거를 끄고 수동으로만 돌리고 싶으면: Actions 탭 → 워크플로 →
⋯→Disable workflow.
가장 흔한 원인은 키즈노트 sessionid 쿠키 만료(약 30일마다). 확인:
- fork repo →
Actions탭 → 최근 run이 빨간색 ❌인지 보기 - 빨간색이면 쿠키 만료 — 쿠키 만료 시 섹션 절차 (3분)
- 녹색인데 안 들어오면 오늘 어린이집 휴무일이라 새 글이 없을 수도
- 비밀값(쿠키·토큰)은 GitHub Secrets로 암호화 저장
- 데이터는 키즈노트 → GitHub Actions 임시 메모리 → 내 노션으로만 흐릅니다 (외부 서버에 저장 X)
- 사진의 위치 정보(GPS)는 노션 업로드 전 자동 제거
- 코드는 MIT 라이선스 오픈소스로
tools/kidsnote_fetch/에서 직접 확인 가능
노션 UI는 가끔 바뀝니다. 메뉴 이름이 달라도 다음 기능 위치를 참고하세요:
- 데이터베이스 만들기 → 페이지 본문에서
/database(영문 입력) - 통합 만들기 → https://www.notion.so/profile/integrations 직접 접속
- DB에 통합 연결 → DB 페이지 우측 상단
⋯메뉴 - 속성 추가 → DB 표 우측 끝
+아이콘
디버깅 위치: Actions 탭 → 실패한 run 클릭 → 빨간 ❌ 옆 스텝 클릭 → 로그 열기
| 에러 메시지 | 원인 | 해결 |
|---|---|---|
KIDSNOTE_SESSION_COOKIE missing 또는 NOTION_TOKEN missing |
시크릿 이름 오타 또는 누락 | 7단계 시크릿 이름 정확히 (대문자+언더바) |
401 Unauthorized 키즈노트 에러 |
sessionid 만료 (약 30일) | 6단계 다시 + Secrets Update secret |
Notion DB query failed: 'latin-1' codec... |
토큰 값에 보이지 않는 BOM 문자 끼임 | 토큰 시크릿 다시 등록. 메모장 → GitHub Update에서 깔끔하게 붙여넣기 |
Notion DB not found / 404 |
DB ID 틀림 또는 4단계 통합 연결 누락 | 5단계 DB ID 다시 확인 + 4단계 연결 확인 |
Database not connected to integration |
4단계 빠뜨림 | 4단계 진행 |
| 워크플로가 5분 만에 fail | 코드 import 에러 — fork가 오래된 코드일 가능성 | fork 페이지에서 Sync fork 클릭해서 최신 코드 가져오기 |
| 노션 페이지에 사진이 안 보임 | 노션 무료 한도(스토리지) 초과 또는 5MB 이상 사진 | 노션 워크스페이스 스토리지 사용량 확인. 사진은 자동 압축됨 |
| 모바일/태블릿에서 단계 진행 안 됨 | 모바일은 미지원 | 데스크톱/노트북 사용 |
| 다른 자녀가 백업됨 | secret KIDSNOTE_CHILD_NAME 누락 또는 이름 오타 |
repo Settings에서 secret KIDSNOTE_CHILD_NAME 추가/수정, 값에 백업하려는 자녀 이름 일부(예: 유주) 입력 |
| 🥗 영양 분석 페이지 안 보임 | 어린이집/학원이 식단 정보를 안 올렸음 | 정상 동작 — 식단 데이터 0개면 영양 분석 페이지는 미생성 (어학원·소규모 시설에서 흔함) |
| 📖 / 🌟 / 🌱 / 💌 AI 페이지 안 보임 | AI_FEATURES=off이거나, 개별 GROWTH_STORY/MILESTONES/INTERESTS/TEACHER_THANKS 중 하나가 off로 설정됨 |
repo Settings에서 AI_FEATURES 값을 on으로 변경. 개별 disable secret이 있으면 삭제하거나 값을 on으로 |
| 카카오 SSO 계정인데 쿠키 추출이 안 됨 | 카카오로 로그인한 뒤에도 키즈노트 sessionid 쿠키는 정상 발급됨 | 카카오 로그인 → 키즈노트 메인 화면으로 자동 이동 후 그 상태에서 F12 → 6단계 그대로 진행 |
GitHub Issues 페이지에 질문을 올려주세요: https://github.com/redchupa/kidsnote-backup/issues
질문 시 첨부:
- 어느 단계에서 막혔는지 (예: "4단계")
- 화면 스크린샷 (개인정보 가린 채로)
- Actions 로그 마지막 10줄 (있다면)
Python 3.12 + GitHub Actions + Notion API + Ollama (llama3.1:8b CPU). 자세한 구현은 tools/kidsnote_fetch/, 워크플로는 .github/workflows/kidsnote-to-notion.yml.
이 도구가 가족 추억을 지키는 데 도움이 됐다면, 커피 한 잔으로 응원해 주세요. 🙏
토스
|
PayPal
|
- 토스/카카오뱅크: 1000-1261-7813 (우*만) · 커피 한잔은 사랑입니다
후원과 기능은 별개입니다 — 모든 코드는 MIT 라이선스로 누구나 자유롭게 쓸 수 있습니다.
MIT. 자유롭게 fork·수정·재배포 가능.










