Skip to content

redchupa/kidsnote-backup

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

123 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🍼 Kidsnote → Notion 자동 백업

어린이집 알림장과 사진을, 내 노션 DB에 영원히. 졸업할 때 사라지지 않게.

License: MIT Runs on GitHub Actions Notion

빨리 셋업만 끝내고 싶다 → Quick Start (25분) 이 페이지는 자세한 설명·예외처리·트러블슈팅까지 다 담은 reference입니다. 길이로 압도되지 않게, 막힘없이 진행하실 분은 위 Quick Start로 가세요.

📸 이렇게 백업됩니다 (실제 결과 스크린샷)

알림장 한 건 — AI callout 3개(요약·자녀일기·부모편지) + 날씨 + 원본 본문 + 사진/댓글

본문 + callout (요약·자녀일기·부모편지) 사진 + 댓글
알림장 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)이면 모두 업로드됩니다.


📋 목차


이런 분께 추천드려요

적합:

  • 키즈노트로 매일 자녀 알림장·사진 받는 부모
  • 자녀 성장 기록을 노션에 영구 보관하고 싶은 분
  • 컴퓨터 다루기 어렵진 않지만 코딩은 모르는 분 (이 README만 따라하면 됨)
  • 졸업·반편성 때 데이터 사라지는 게 걱정인 분

안 맞을 수 있어요:

  • 키즈노트가 아닌 다른 어린이집 앱 사용 (예: 알리미24, 호브박스 등)
  • 노션 외 다른 저장소(드라이브·드롭박스 등) 원하는 분 → 코드 수정 필요
  • 모바일·태블릿만 있는 분 → 셋업은 데스크톱·노트북 필요

🎒 시작 전 준비물 (한눈에 보기)

1. 가지고 있어야 하는 것

항목 필요한 이유 비용
데스크톱 또는 노트북 셋업이 모두 브라우저 기반. 모바일 노션 URL이 다름 -
인터넷 연결 GitHub·노션 페이지 클릭 -
Chrome 또는 Edge 6단계 쿠키 추출 시 개발자 도구 사용 무료
이메일 주소 GitHub·노션 가입 + 실패 알림 받기 -

2. 만들어야 하는 계정 3개 (0단계에서 진행)

계정 URL 가입 비용
키즈노트 어린이집에서 이미 등록한 그 계정 (브라우저 로그인 가능해야 함) 무료
노션 https://www.notion.so 무료 (Personal 플랜으로 충분)
GitHub https://github.com/signup 무료 (Free 플랜)

3. 비용 — 정말 0원입니다

이 도구를 운영하는 데 들어가는 모든 부분이 무료입니다:

사용 자원 무료 한도 우리가 쓰는 양
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에 암호화되어 코드 공개와 상관없이 안전합니다.

4. 시간 — 셋업 25분 / 백업은 자동

  • 사용자가 직접 손대는 시간: 셋업 25분 + 한 달에 쿠키 갱신 3분
  • 백그라운드에서 자동으로 도는 시간: 첫 백업 1-15시간 (AI off/on에 따라) + 이후 매일 약 10분 (cron)

준비 끝났으면 아래로 ⬇️ 시작!


왜 이 도구가 필요한가요

키즈노트는 졸업하면 접근이 끊깁니다. 우리 아이의 매일이 담긴 사진과 선생님의 글이, 어느 날 갑자기 사라집니다.

내 노션 워크스페이스에 백업해두면:

  • 🔍 검색됩니다 — "토끼 점토놀이"로 검색해서 그날의 알림장을 1초 만에
  • 📅 정리됩니다 — 날짜순 자동 정렬, 1년치 모아보기
  • 🔒 영원합니다 — 키즈노트가 사라지든 졸업하든 그대로 내 것
  • 📸 사진 원본 보존 — Kakao CDN에서 받은 원본 화질 그대로

무엇이 만들어지나요

각 알림장은 노션 페이지 한 장으로 백업됩니다 — 원본 본문 + 사진(원본 화질·GPS 자동 제거) + 식단 사진 + 댓글 + 날씨. AI를 켜면 자녀 1인칭 일기·부모 편지도 함께 (셋업 7단계에서 선택).

자동 생성되는 최대 6개 대시보드

알림장과 함께, 데이터를 가공한 고정 페이지(최대 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년치가 다 백업돼 있어요. 사용자가 직접 옆에 붙어있을 일은 거의 없습니다.

0단계. 사전 준비 (계정 + 로그인)

🕐 약 5분 (이미 가입한 분은 1분 안에 끝남)

📍 시작 전 확인: 데스크톱/노트북 + 인터넷 연결

👨‍👩‍👧‍👦 자녀가 2명 이상인가요? 아래 1-8단계는 자녀 1명 기준입니다. 둘째 아이는 셋업을 마친 뒤 자녀별로 노션 DB·통합·시크릿을 따로 만들어야 합니다 — 자세한 가이드는 (고급) 자녀가 여러 명이거나 AI 편지를 끄고 싶을 때 섹션 참고.

0-1. 세 가지 계정이 모두 있어야 합니다

  • 키즈노트 계정 — 어린이집 등록할 때 받은 계정. 평소 앱으로 쓰는 그 계정
  • 노션 계정 — 없으면 https://www.notion.so 우측 상단 Sign up 클릭 → 이메일 가입 (1분)
  • GitHub 계정 — 없으면 https://github.com/signup 에서 가입 (이메일 인증만 하면 됨, 1분)

0-2. 세 사이트 모두 데스크톱 브라우저에서 한 번씩 로그인 확인

브라우저 탭 3개 열어서 로그인 상태 확인:

사이트 URL 확인할 것
키즈노트 https://www.kidsnote.com 로그인 후 내 자녀 알림장이 보여야 함
노션 https://www.notion.so 로그인 후 워크스페이스 화면이 보여야 함
GitHub https://github.com 로그인 후 우측 상단에 내 프로필 사진이 보여야 함

0-3. 노션 처음 사용자만 — 워크스페이스 만들기

노션 가입 직후라면 "워크스페이스"를 만드는 안내가 자동으로 뜹니다:

  1. Personal 또는 개인용 선택
  2. 워크스페이스 이름은 자유 (예: "내 노션")
  3. 권유하는 템플릿이 있으면 모두 건너뛰기 / Skip
  4. 빈 화면 또는 시작 페이지가 나오면 OK

0단계 성공 신호: 데스크톱 브라우저에서 키즈노트·노션·GitHub 모두 로그인됨, 노션은 본인 워크스페이스가 활성화돼 있음.

💡 이 README를 휴대폰으로 보고 있다면: 휴대폰은 README 읽기용으로 두고, 노트북에서 위 세 사이트에 로그인해 두세요. 다음 단계부터 모두 노트북에서 진행합니다.


1단계. 이 프로젝트를 내 GitHub 계정으로 복사하기 (Fork)

🕐 약 1분

📍 시작 전 확인: GitHub 로그인 완료 (0단계)

"Fork(포크)"는 남의 GitHub 프로젝트를 내 계정에 복사한다는 뜻입니다. 원본은 그대로 두고, 내 사본에서 설정을 바꿉니다.

  1. GitHub에서 이 페이지 (https://github.com/redchupa/kidsnote-backup) 를 엽니다 (이미 보고 있다면 그대로)
  2. 페이지 우측 상단에서 검은색 Fork 버튼 찾기 (별 모양 Star 버튼 옆에 있음)
  3. Fork 클릭
  4. 다음 화면에서 옵션 그대로 두고 페이지 하단 녹색 Create fork 버튼 클릭
  5. 잠시 후 자동으로 본인 계정의 사본 페이지로 이동됨

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 repositorieskidsnote-backup 들어가서 그대로 사용
화면이 흐릿하고 응답 없음 새로고침 (F5) 후 재시도

💡 fork URL을 기억하세요: 나중에 돌아올 때 필요합니다. 형태: https://github.com/내깃허브아이디/kidsnote-backup 즐겨찾기 추가 권장.


2단계. 노션에 백업용 데이터베이스 만들기

🕐 약 3분

📍 시작 전 확인: 노션 로그인 + 워크스페이스 활성화 (0단계)

노션의 "데이터베이스"는 표 형태로 데이터를 저장하는 페이지입니다. 알림장 하나 = 한 행으로 들어갈 표를 만들겠습니다.

2-1. 새 페이지 만들기

  1. 노션 좌측 사이드바 하단+ 새 페이지 버튼 클릭
    • 영문 UI: + New page
    • 사이드바가 숨겨져 있으면: 좌측 상단의 햄버거 아이콘() 클릭해서 펼치기
  2. 페이지가 열리면 가운데 큰 글씨 입력란에 키즈노트 백업 입력 (이름은 자유)

2-2. 데이터베이스 블록 추가하기 (가장 까다로운 부분 — 천천히)

  1. 제목 아래 본문 영역을 클릭해서 커서를 둡니다
  2. 반드시 영문 입력 모드로 전환 후 키보드에서 슬래시 입력:
    • 윈도우: 한/영 키 (스페이스바 옆) 또는 Alt + 한자 또는 Shift + Space
    • : Caps Lock 키 또는 좌측 상단 IME 표시기 클릭
    • 확인: 영문 입력 모드면 a 키 누를 때 a가 나옴 (한글 아님)
  3. 영문 모드에서 슬래시 / 입력 → 메뉴가 즉시 팝업
  4. 이어서 database 타이핑 → 검색 결과 좁혀짐
  5. 데이터베이스 - 인라인 항목 클릭 (영문: Database - Inline)
    • ⚠️ "전체 페이지"가 아닌 "인라인" — 인라인은 페이지 안에 표가 들어가고, 전체 페이지는 새 페이지가 됨. 우리는 인라인.

2-3. 표의 컬럼(속성) 추가하기

새 데이터베이스가 만들어지면 표에 기본 속성 두 개가 자동으로 보입니다. 기본 속성은 그대로 두고, 우리에게 필요한 두 개를 옆에 더 추가하기만 하면 됩니다.

💡 노션 UI 순서 주의: 새 속성 추가 시 노션은 먼저 유형(종류)을 고르고, 그 다음 이름을 입력하는 순서로 동작합니다. 반대로 하려고 하면 막혀요.

  1. 우측 끝에 있는 + 아이콘 클릭 → 새 속성 추가:
    • 먼저 종류 선택 화면에서 날짜 클릭 (영문: Date)
    • 그 다음 이름 입력란에 날짜 입력
    • Esc 또는 다른 곳 클릭으로 닫기
  2. 다시 표 우측 끝 + 클릭 → 또 새 속성 추가:
    • 먼저 종류 선택 화면에서 숫자 클릭 (영문: Number)
    • 그 다음 이름 입력란에 번호 또는 Report ID 입력 (코드가 한글/영문 둘 다 자동 인식)

2단계 성공 신호: 표 머리글에 기본 속성 두 개 + 날짜 + 번호/Report ID 컬럼이 보임. 표 본문(행)은 비어 있어도 OK.

❓ 막혔다면

증상 원인 / 해결
/ 눌러도 메뉴 안 뜸 한글 입력 모드. 한/영 전환 후 다시 시도
/database 검색 결과 없음 노션 UI 업데이트로 메뉴 이름 변경 가능. /table 또는 /data 시도
"인라인"과 "전체 페이지"가 헷갈림 인라인을 선택해야 같은 페이지 안에 들어감. 전체 페이지를 잘못 골랐으면 페이지 좌측 상단 ← 뒤로 돌아간 후 빈 페이지에 다시 시작
컬럼 이름 입력 시 한글 자동 변환 등 골치 아픔 그냥 한글 번호 입력하셔도 OK — 코드가 한글/영문 둘 다 자동 매칭
이름부터 입력하려는데 진행이 안 됨 노션 UI는 유형(종류) 선택이 먼저. 종류 화면에서 날짜 또는 숫자를 먼저 고른 후에 이름이 입력됨

💡 컬럼 이름이 영문 UI에서 Name/Date로 보여요: 그대로 두세요. 코드가 한글/영문 둘 다 자동으로 인식합니다.


3단계. 노션 통합(Integration) 만들기 + 토큰 받기

🕐 약 2분

📍 시작 전 확인: 노션 로그인 유지 중

노션 API를 사용하려면 "통합(Integration)"이라는 권한 토큰이 필요합니다. GitHub에서 노션 DB에 글을 쓸 수 있게 해주는 열쇠입니다.

  1. 새 탭에서 https://www.notion.so/profile/integrations 접속
    • 노션 로그인 상태가 아니면 로그인 화면 → 로그인 후 다시 이 URL 접속
  2. 페이지 우측 + 새 통합 (영문: + New integration) 버튼 클릭
  3. 폼 입력:
    • 이름: kidsnote-backup (자유)
    • 연결된 워크스페이스: 본인 워크스페이스 선택 (자동 선택돼 있는 경우가 많음)
      • ⚠️ 워크스페이스가 여러 개면 2단계에서 DB 만든 워크스페이스를 정확히 선택
    • 인증 방법: 내부 통합 시크릿 (= 액세스 토큰) 선택 (영문: Internal Integration Secret)
      • ⚠️ OAuth가 아닌 액세스 토큰 쪽을 골라야 합니다. OAuth는 외부 서비스용이라 우리 용도와 다릅니다.
  4. 페이지 하단 저장 (영문: Save) 클릭
  5. 다음 화면에서 내부 통합 시크릿 (영문: Internal Integration Secret) 항목 옆 표시 (영문: Show) 클릭 → 토큰이 보이면 옆의 복사 (영문: Copy) 버튼 클릭

⚠️ 토큰을 메모장 또는 빈 텍스트 편집기에 잠깐 붙여두세요. 5분 안에 GitHub에 등록할 예정.

토큰 모양:

  • 새 형식: ntn_AbCdEfGh1234... (총 50자 정도)
  • 이전 형식: secret_AbCdEfGh1234...

3단계 성공 신호: 메모장에 ntn_ 또는 secret_ 으로 시작하는 50자 정도의 영문+숫자 문자열.

❓ 막혔다면

증상 원인 / 해결
+ 새 통합 버튼 없음 노션 무료 계정도 사용 가능. 페이지 새로고침 / 다른 브라우저에서 시도
워크스페이스 선택지가 없음 0단계 워크스페이스 만들기 빠뜨림. 노션 메인으로 돌아가서 워크스페이스부터
토큰을 잘못 닫음 https://www.notion.so/profile/integrations 다시 가서 만든 통합 클릭 → 시크릿 섹션에서 재발급

🔒 이 토큰은 다른 사람에게 절대 공유하지 마세요. 토큰만 있으면 본인 노션 DB에 글을 쓸 수 있습니다.


4단계. 노션 DB에 통합 연결하기

🕐 약 1분

📍 시작 전 확인: 2단계 DB 페이지가 노션에 만들어져 있음 + 3단계 통합 저장 완료

토큰을 만들었어도 끝이 아닙니다. 이 통합이 우리 DB에 글을 쓸 수 있도록 명시적으로 연결해야 합니다 (생략하면 다음에 "권한 없음" 에러).

  1. 2단계에서 만든 키즈노트 백업 DB 페이지로 돌아가기
    • 노션 좌측 사이드바에서 키즈노트 백업 클릭
    • 또는 노션 메인에서 페이지 찾기
  2. DB 페이지가 열리면 페이지 우측 상단의 (점 세 개 가로 아이콘) 클릭
    • 노션 한국어/영문 모두 같은 위치
  3. 드롭다운 메뉴를 아래로 스크롤해서 연결 (영문: Connections) 찾기 → 클릭
  4. 연결 검색 (영문: Search for connections) 입력란에 kidsnote-backup 입력
  5. 검색 결과에 나타난 kidsnote-backup 클릭
  6. 확인 팝업이 뜨면 페이지에 추가 (영문: Add to page) 버튼 클릭 — 이 버튼을 눌러야 실제로 연결됩니다

4단계 성공 신호: 다시 연결 메뉴를 보면 kidsnote-backup 이 목록에 표시됨 (No connections 아닌 상태).

❓ 막혔다면

증상 원인 / 해결
kidsnote-backup 검색 결과 없음 3단계에서 다른 워크스페이스에 통합 만들었을 가능성. 3단계 다시, 워크스페이스 다시 확인
메뉴에 연결이 안 보임 DB 페이지가 아니라 일반 페이지일 가능성. DB 좌측 상단에 표/리스트 형태인지 확인
권한 거부 에러 워크스페이스 관리자 권한 필요. 본인이 만든 워크스페이스면 자동 OK

5단계. 노션 DB ID 복사하기

🕐 약 2분

📍 시작 전 확인: 2단계 DB 페이지가 브라우저에 열려 있음

DB ID는 노션 URL 안에 들어있는 32자 영문+숫자 문자열입니다.

5-1. DB 페이지를 풀화면으로 열기

💡 부모 페이지 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

⚠️ 두 URL이 거의 똑같이 생겼다는 게 함정입니다. 32자 hex 부분이 다른 값이에요. 반드시 ↗ 풀화면 단계를 거쳐서 얻은 URL을 사용하세요.

풀화면으로 여는 방법:

  1. 데이터베이스(키즈노트 백업 표) 좌측 상단의 표 제목 위에 마우스를 올림
  2. 제목 옆에 나타나는 ↗ (또는 Open as page 화살표) 아이콘 클릭
    • 영문 UI에서는 Open as full page로 표시되기도 함
  3. DB가 풀화면으로 열림. 이제 브라우저 주소창 URL이 물음표 뒤에 ?v=가 붙은 형태가 되어야 합니다 — 이게 DB URL의 결정적인 신호:
    ...32자hex?v=뷰ID
             ↑
             물음표 뒤에 v= 가 보이면 풀화면 DB URL이 맞음
    
    ?v= 가 안 보이면 아직 부모 페이지를 보고 있는 겁니다. 5-1을 다시 시도하세요.

5-2. URL에서 32자 ID 찾기

브라우저 주소창의 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 부분만

⚠️ DB ID를 메모장에 붙여두세요.

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로 최신 가져온 뒤 재실행

6단계. 키즈노트 sessionid 쿠키 가져오기 (Chrome 기준)

🕐 약 3분

📍 시작 전 확인: Chrome 또는 엣지 브라우저 + 키즈노트 로그인 완료 (0단계)

여기가 가장 어려워 보이지만 차근차근 따라하면 30초 안에 끝납니다.

Chrome 외에도 엣지(같은 화면) / 파이어폭스(F12저장소)에서 가능합니다. 아래는 Chrome 기준.

6-1. 키즈노트 로그인 + 개발자 도구 열기

  1. Chrome으로 https://www.kidsnote.com 접속 → 평소처럼 로그인
    • 카카오 SSO로 로그인하시는 분: "카카오로 로그인" → 카카오 페이지 → 로그인 → 자동으로 키즈노트로 돌아옵니다
    • 로그인 후 자녀 알림장 화면(또는 메인)이 보여야 합니다
  2. 키즈노트가 로그인된 상태에서 키보드 F12 키 → 우측 또는 하단에 개발자 도구 창 열림
    • ⚠️ F12가 안 먹는 노트북: Fn + F12 또는 Ctrl + Shift + I
    • ⚠️ 그것도 안 먹으면: Chrome 우측 상단 (점 세 개) → 도구 더보기개발자 도구

6-2. Application 탭에서 쿠키 찾기

  1. 개발자 도구 상단 메뉴에서 Application 클릭
    • 한국어 Chrome도 메뉴는 영문 그대로 (Elements, Console, Sources, Network ... 옆에 있음)
    • 안 보이면 메뉴 끝 >> 클릭 → 목록에서 Application 선택
  2. 왼쪽 사이드바에서 Storage 섹션 아래 Cookies 폴더 펼치기 → https://www.kidsnote.com 클릭
  3. 오른쪽에 큰 표가 나타남. 컬럼 헤더: Name | Value | Domain | Path | Expires | Size | ...

6-3. sessionid 행 찾아서 값 복사

  1. 표에서 다음 두 조건을 모두 만족하는 행을 찾습니다:
    • Name 컬럼이 정확히 sessionid
    • Domain 컬럼이 정확히 .kidsnote.com (앞에 점)
  2. 그 행의 Value 컬럼을 클릭 → 셀이 선택됨
  3. 값을 복사:
    • 방법 A (셀이 다 보이면): 더블클릭 → Ctrl+C
    • 방법 B (셀이 잘려 보이면 / 일반적): 행을 클릭 → 표 하단에 나타나는 패널의 Cookie Value 영역에서 값을 마우스로 드래그 선택 → Ctrl+C

Chrome 개발자 도구에서 sessionid 쿠키 위치

쿠키 값 예시: 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분).


7단계. GitHub에 5개 비밀 값 등록하기

🕐 약 5분

📍 시작 전 확인: 메모장에 세 값(노션 토큰, DB ID, 쿠키)이 있고, GitHub fork 페이지를 찾을 수 있음 (1단계 URL)

이제 메모장에 모은 세 값을 GitHub fork에 안전하게 저장합니다. GitHub Secrets는 암호화되어 저장되며, 워크플로 실행 시에만 사용됩니다.

7-1. 내 fork 페이지 → Settings로 이동

  1. 1단계에서 만든 내 fork 페이지로 이동:
    • URL 직접 입력: https://github.com/내깃허브아이디/kidsnote-backup
    • 또는 GitHub 우측 상단 프로필 사진 클릭 → Your repositorieskidsnote-backup 클릭
  2. 페이지 가운데에 있는 메뉴 줄(Code, Issues, Pull requests ... 옆에 있는)에서 Settings 클릭
    • ⚠️ 헷갈리는 부분: 페이지 우측 상단 프로필 사진 옆에도 Settings가 있는데 그건 GitHub 전체 설정입니다. 우리는 repo 메뉴의 Settings

7-2. Secrets 페이지로

  1. 좌측 사이드바에서 Secrets and variables 클릭 (펼쳐짐) → Actions 하위 클릭
  2. 페이지 우측 상단 녹색 New repository secret 버튼 클릭

7-3. 시크릿 5개 등록

다음 표대로 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시간 소요

한 시크릿씩 등록하는 방법:

  1. New repository secret 버튼 클릭
  2. Name 칸에 시크릿 이름 입력 (위 표 그대로)
  3. Secret 칸에 값 붙여넣기 (앞뒤 공백 없이)
  4. 녹색 Add secret 버튼 클릭
  5. 다음 시크릿 추가하려면 다시 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개만 정확하면 추가 시크릿은 무시 가능

8단계. 백업 실행!

🕐 백업 자체는 5분에서 15시간 (알림장 개수 + AI 설정에 따라)

📍 시작 전 확인: 시크릿 5개 등록 완료 + 노션 DB에 통합 연결 완료

드디어 마지막 단계. 워크플로를 직접 한 번 돌려서 백업을 시작합니다.

8-1. Actions 활성화 (처음 한 번만)

  1. fork repo 페이지 상단 메뉴에서 Actions 탭 클릭
  2. 처음이라면 화면 가운데에 노란 안내가 뜹니다:

    Workflows aren't running on this fork.

    • 녹색 I understand my workflows, go ahead and enable them 버튼 클릭
    • (이미 활성화돼 있으면 이 화면이 안 보이고 바로 Workflow 목록이 나타남)

8-2. 첫 실행은 안전하게 (limit=3 권장)

💡 처음에는 limit=3으로 테스트하는 걸 강력히 권장합니다. 3개만 백업해서 노션 DB에 정상 표시되는지 확인하고, 그 다음에 전체 백업을 돌리세요.

  1. 좌측 워크플로 목록에서 Kidsnote → Notion mirror 클릭
  2. 가운데 영역 우측 상단의 회색 Run workflow ▾ 드롭다운 클릭
  3. 작은 폼이 펼쳐짐:
    • Branch: main (그대로 둠)
    • limit: 3 입력 (첫 테스트용)
  4. 폼 하단 녹색 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 전체 백업에서 자연스럽게 채워집니다.

8-3. 전체 백업 실행

테스트 3개가 정상이면, 같은 방법으로 다시 실행하되 이번에는 limit비워둡니다 (전체 백업).

⚠️ 첫 백업 시간 — secret AI_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.

8-4. 진행 상황 보기 (선택)

실행 중인 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 있는지 확인

👨‍👩‍👧‍👦 (고급) 자녀가 여러 명이거나 AI 편지를 끄고 싶을 때

기본 셋업은 자녀 1명 + 4개의 AI 대시보드 모두 켜짐 상태로 동작합니다. 두 경우 중 하나라도 해당되면 이 섹션 읽어주세요.


A. 자녀가 여러 명이면 — Fork 자녀별로 만들기 (병렬로 약 2배 빠름)

키즈노트 계정에 자녀가 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 첫째 이름 (예: 하린) 둘째 이름 (예: 혁주)

📋 자녀 #2 셋업 단계 (자녀 #1 기준 셋업이 이미 끝났다고 가정)

자녀 #1 셋업 + GitHub fork와 노션 쪽을 한 번 더 만듭니다. 키즈노트 계정·쿠키는 공유 가능.

Step 1. 자녀 #2용 새 노션 DB 만들기

2단계를 그대로 한 번 더 합니다. 페이지 제목은 키즈노트 백업 - 둘째이름 같이 구분되게 지으면 좋아요. 컬럼 추가 단계(2-3)도 그대로 — 기본 속성 두 개 + 날짜 + Report ID.

Step 2. 자녀 #2용 새 노션 통합(Integration) 만들기

3단계를 한 번 더 합니다. 통합 이름은 kidsnote-backup-child2 같이 구분되게 지으세요. 새 토큰(ntn_...)이 발급됩니다 — 이게 자녀 #2 전용 토큰입니다.

Step 3. 자녀 #2 통합을 자녀 #2 DB에 연결

4단계를 자녀 #2 DB 페이지에서 한 번 더 합니다.

Step 4. 자녀 #2 DB ID 추출

5단계를 자녀 #2 DB에서 한 번 더 합니다.

🚨 여기서 사용자들이 가장 많이 함정에 빠집니다: 5-1의 ↗ 풀화면 단계를 반드시 거쳐서, URL이 ?v=뷰ID를 포함한 형태가 된 다음에 ID를 복사하세요. ?v= 가 없으면 부모 페이지 ID가 잡혀서 워크플로가 400 Bad Request — is a page, not a database 에러로 죽습니다.

Step 5. 자녀 #2용 새 fork 만들기

  1. github.com/redchupa/kidsnote-backup 접속 (원본 repo)
  2. 우측 상단 Fork 클릭 → Create a new fork 화면
  3. Repository name 칸에 자녀 #2용 이름 입력 (기본값을 변경해야 함):
    • 예: kidsnote-backup-2nd, kidsnote-backup-혁주, kidsnote-backup-child2
    • 첫 번째 fork(kidsnote-backup)와 이름이 달라야 GitHub이 허용
  4. Create fork 클릭

Step 5 성공 신호: 본인 계정에 fork가 2개 (kidsnote-backup + kidsnote-backup-2nd).

Step 6. 자녀 #2 fork에 시크릿 5개 등록

자녀 #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

Step 7. 자녀 #2 fork에서 첫 실행

자녀 #2 fork에서 8단계 그대로 진행. Run workflow 클릭하면 자녀 #2 백업이 시작됩니다. 자녀 #1 fork와 독립적으로 6시간 cron 자동 백업.

🧓 자녀 3명 이상이면

같은 패턴을 반복. 자녀 N명 = fork N개 + 노션 DB N개 + 노션 통합 N개.


B. AI 가공 켜기/끄기 + 일부 대시보드만 골라 끄기

💡 off 권장. 무료 로컬 LLM(llama3.1:8b)이라 가끔 어색한 표현이 나오고, 1년치 백업이 5-15시간으로 길어집니다. 단순 백업이 더 안정적이고 빠르며, 노션에서 검색·정렬만으로도 충분히 추억 정리가 가능해요. 시험 삼아 한 번 켜보고 싶을 때만 on으로 바꾸세요.

AI를 켜면 백업 결과에 두 가지가 추가됩니다:

  1. 각 알림장마다 3개 AI callout (💭 요약 · 🧒 자녀의 일기 · 👨‍👩‍👧 부모의 편지)
  2. 별도 페이지로 4개 AI 대시보드 (📖 매월 성장 스토리 · 🌟 마일스톤 · 🌱 분기 관심사 · 💌 연도별 선생님께)

🎚️ AI 전체 켜기/끄기

셋업 7단계에서 등록한 AI_FEATURES secret 값만 바꾸면 됩니다. 수동 실행과 cron 자동 실행 모두 동시 적용:

  1. fork repo → Settings → 좌측 Secrets and variablesActions
  2. AI_FEATURES 옆 연필 아이콘 클릭 → Update secret
  3. 값을 on 또는 off 로 변경

🎛️ AI 켜되 특정 대시보드만 끄기 (advanced)

AI는 켜고 싶은데 4개 대시보드 중 일부는 빼고 싶다면 (예: 졸업한 자녀라 매월 성장 스토리는 어색) — 같은 Secrets 화면에서 New repository secret 으로 다음 중 원하는 것을 추가:

Secret 이름 끄는 페이지
GROWTH_STORY off 📖 매월 성장 스토리
MILESTONES off 🌟 마일스톤
INTERESTS off 🌱 분기 관심사
TEACHER_THANKS off 💌 연도별 선생님께

다시 켜려면 해당 secret을 삭제하거나 값을 on으로 변경.

⚠️ 알림장 안의 callout 3개 (💭 요약·🧒 자녀일기·👨‍👩‍👧 부모편지)AI_FEATURES 하나로만 제어 — 개별 끄는 옵션 없음.


🌐 (선택) 노션 페이지를 웹에 공개하기

📌 기본은 비공개입니다. 이 가이드대로 따라하면 본인만 접근 가능한 비공개 노션 DB가 만들어집니다 — 별도 설정 없이도 안전합니다. 가족·친척 누구도 자녀 알림장을 볼 수 없습니다.

공개로 바꾸고 싶을 때만 아래 가이드를 따르세요.


공개로 바꾸는 법 — 노션 "웹에 게시"

블로그처럼 누구든 링크로 알림장을 볼 수 있게 하려면:

  1. DB 페이지 우측 상단 공유 (영문: Share) 클릭
  2. 팝업 우측 상단 웹에 게시 (영문: Publish) 탭 클릭
  3. 웹에 게시 토글 ON
  4. 게시된 공개 URL이 표시됨 (예: https://본인노션이름.notion.site/...) — 복사해서 공유할 사람에게 전달

옵션 (꼭 확인하세요)

같은 화면에서 추가 설정:

  • 편집 허용: ❌ 절대 ON 금지 (다른 사람이 페이지를 수정/삭제 가능해짐)
  • 복제 허용: 다른 사람이 본인 노션에 복사 가능. 자녀 사진 무단 복제가 걱정되면 OFF
  • 댓글 허용: 로그인한 노션 사용자가 댓글 작성 가능. 가족 코멘트 받고 싶으면 ON
  • 검색엔진 색인: 구글·네이버 검색 결과에 노출. 자녀 정보면 OFF 강력 권장
  • 링크 만료: 일정 기간 후 자동 비공개 (가족 행사 후 공유 종료 등에 유용)

⚠️ 공개 게시 전 체크리스트

  • 자녀 사진을 인터넷에 공개해도 괜찮은가?
  • 어린이집 이름·반 이름·교사 이름이 본문에 적혀 있는데 공개해도 괜찮은가?
  • 검색엔진에서 발견되어도 괜찮은가? (싫으면 검색엔진 색인 OFF)
  • URL을 받은 사람이 그 URL을 다른 사람에게 전달해도 괜찮은가?
  • 알림장 본문 안에 다른 자녀 이름이 적혀 있을 수 있다 — 선생님이 "오늘은 ○○이와 함께 ..." 처럼 다른 친구를 언급한 알림장은 그대로 백업되므로, 공개 전에 노션에서 직접 검토 필요.
  • AI 가공 콘텐츠(요약/일기/편지·4개 대시보드) 사실 검토 — LLM이 알림장에 없던 사건을 만들어내는 경우가 드물게 있음. 공개 게시 전에 펼쳐서 한 번 읽어보고 어색한 부분은 노션에서 직접 수정 가능.

🛡️ 자동 보호되는 것들:

  • 공지 페이지에 달린 다른 학부모 댓글은 자동으로 미수록 (이름·자녀명·일정 노출 방지)
  • 사진의 EXIF 위치 정보는 업로드 전 자동 제거
  • 6시간 cron 자동 백업은 본인 노션 DB에만 쓰므로 외부 노출 없음

다시 비공개로 되돌리는 법

같은 메뉴에서 웹에 게시 토글 OFF → 즉시 비공개 + URL 무효화. 언제든 가능.

💡 가족·친척에게만 공유하고 싶다면 (대안)

URL 공개 대신 노션 게스트 초대가 안전합니다:

  1. DB 페이지 우측 상단 공유사용자 추가 입력란에 가족 이메일 입력
  2. 권한 보기 가능 선택 → 초대

가족의 노션 계정으로 로그인해야 보임. 검색엔진 노출 없음, 링크 도용 불가.


📋 노션 DB 보기 추천 — 정렬 설정 + 리스트 뷰

🔃 추천 정렬 — 이름 내림차순 (최근 알림장이 맨 위)

기본 설정 그대로 두면 노션은 페이지를 만들어진 순서대로 보여줍니다 (Created time 정렬). 그러면 "한 번 보면 가장 최근 글이 위에 있는" 화면이 되어야 자연스러운데, 백업 도중 끊겼다가 재개되거나 force-refresh 같은 작업 후엔 순서가 뒤죽박죽이 됩니다.

이름 컬럼 내림차순 정렬을 한 번만 설정하면 페이지가 어떤 순서로 추가됐든 항상 "가장 최근 알림장이 맨 위"로 표시됩니다.

설정 방법 (30초)

  1. 노션 DB 페이지 우측 상단 ↑↓ (정렬) 아이콘 클릭
  2. 정렬 추가이름 선택
  3. 내림차순 (영문: Descending) 선택

정렬 결과:

_ 📊 통계 대시보드                  ┐
_ 🥗 영양 분석                      │ 6개의 통계·AI 대시보드가
_ 📖 매월 성장 스토리                │ 맨 위에 모입니다
_ 🌟 우리 아이의 처음들 (마일스톤)    │ (이름이 `_`로 시작하기 때문)
_ 🌱 분기별 관심사                   │
_ 💌 연도별 선생님께                 ┘
[2026-05-21] 알림장: ...           ┐
[2026-05-20] 알림장: ...           │
[2026-05-19] 공지: ...              │ 알림장·공지·앨범이
...                                 │ 최근 → 과거 순으로 정렬
[2018-03-30] 알림장: ...           ┘

🎯 카테고리별 필터 뷰 (강력 추천)

알림장 한 건만 빨리 보고 싶을 때 "공지 사이로 한참 스크롤"하는 게 불편할 수 있어요. 알림장만 보는 뷰, 앨범만 보는 뷰, 공지만 보는 뷰 를 노션에서 따로 만들어두면 한 번 클릭으로 카테고리 전환됩니다.

설정 방법 (각 뷰당 30초)

  1. 노션 DB 페이지 좌측 상단 + 보기 추가 (영문: + New view) 클릭
  2. 테이블 (영문: Table) 또는 리스트 선택 (취향 — 리스트가 본문 미리보기 노출됨)
  3. 보기 이름 입력: 알림장 또는 앨범 또는 공지
  4. 우측 상단 필터 (영문: Filter) → 이름포함 (영문: Contains)
  5. 값 입력란에 정확히 다음 단어 중 하나:
    • 알림장만 보는 뷰면 알림장: (콜론 포함)
    • 앨범만 보는 뷰면 앨범:
    • 공지만 보는 뷰면 공지:
  6. 정렬 (영문: Sort) → 이름내림차순 선택

각 뷰가 따로 탭처럼 보이고 클릭만으로 전환됩니다.

추가로 만들기 좋은 뷰

뷰 이름 필터 정렬 용도
📋 전체 (필터 없음) 이름 내림차순 디폴트 (통계+모든 카테고리)
📨 알림장 이름 contains 알림장: 이름 내림차순 매일 새 글 확인
📷 앨범 이름 contains 앨범: 이름 내림차순 사진만 둘러보기
📢 공지 이름 contains 공지: 이름 내림차순 어린이집 알림만
📊 통계만 이름 starts with _ 이름 오름차순 6개 대시보드만
🎨 미술 활동만 이름 contains 🎨 미술 이름 내림차순 카테고리별 알림장

🎨 카테고리 필터는 알림장 제목에 자동으로 들어가는 카테고리 이모지/라벨(🎨 미술, 🍱 식사, 🎵 음악 등)을 활용. 자녀가 관심 보인 활동만 빨리 추출 가능.


📋 리스트 뷰 (선택)

알림장 제목에는 활동 카테고리 라벨(🎨 미술 · 🍱 식사 등)이 자동으로 들어갑니다. 다만 노션 기본 Table view에서는 표 형태로 페이지 제목만 보입니다.

본문 첫 줄까지 미리보기로 함께 보고 싶다면 List view를 추가하세요:

  1. 노션 DB 페이지 우측 상단 + 클릭 (보기 추가)
  2. 리스트 (영문: List) 선택
  3. 추가된 리스트 뷰가 활성화됨

리스트 뷰에서는 각 알림장의 제목 아래에 본문 앞부분이 자동으로 회색 텍스트로 미리보기됩니다. 카테고리(🎨/🍱 등)로 한눈에 분류 + 미리보기로 내용 흐름까지 같이 봄.

💡 여러 뷰를 만들어 두면 좋아요: 시간순 정렬은 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가 필요한 경우 (드물게):

  1. fork repo URL 접속 (북마크 권장: https://github.com/내깃허브아이디/kidsnote-backup)
  2. 상단 Actions 탭 → 좌측 Kidsnote → Notion mirror 클릭
  3. 우측 Run workflow ▾limit 비워둠 → 녹색 Run workflow 버튼
  4. 5분 정도 기다림 (새 알림장만 처리)

쿠키 만료 시 (약 30일마다)

워크플로 실행했는데 빨간색 ❌ + 에러(401 또는 Notion DB query failed: ...)가 나오면, 쿠키가 만료됐다는 신호입니다.

해결법 (3분):

  1. 6단계 다시 실행 (Chrome에서 새 sessionid 추출)
  2. fork repo → SettingsSecrets and variablesActions
  3. KIDSNOTE_SESSION_COOKIE 옆 연필 아이콘 클릭 → Update secret → 새 값 붙여넣기 → Update
  4. Actions 탭 → 다시 워크플로 실행

🔁 코드 업데이트가 있을 때 — 내 fork 동기화

이 프로젝트는 가끔 버그 수정·기능 개선이 원본 repo(redchupa/kidsnote-backup)에 푸시됩니다. 내 fork는 자동으로 따라가지 않으므로, 가끔 한 번씩 sync해야 최신 코드의 혜택을 받을 수 있어요.

💡 동기화는 선택입니다. 현재 잘 돌아가고 있으면 그대로 두셔도 OK. 새 기능이나 fix를 받고 싶을 때만.

방법 (30초):

  1. 본인 fork 페이지(https://github.com/내깃허브아이디/kidsnote-backup) 접속
  2. 페이지 상단에 This branch is N commits behind redchupa:main 안내가 보이면 sync 가능 상태
  3. 그 옆 Sync fork 버튼 클릭 → 드롭다운에서 Update branch (영문: Update branch) 클릭
  4. 다음 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 SettingsSecrets and variablesActions 에서 secret KIDSNOTE_CHILD_NAME 의 값을 새 자녀 이름의 일부(예: 유주)로 변경하세요. cron 자동 실행에도 같이 적용됩니다. 자세한 가이드는 👨‍👩‍👧‍👦 (고급) 자녀가 여러 명이거나 AI 편지를 끄고 싶을 때 섹션을 참고하세요.

💡 자녀가 정확히 어떤 이름·ID로 등록돼 있는지 확인: 워크플로를 한 번 돌리면 시작 직후 로그에 Account has N child(ren): #1 id=... name=... 형태로 전체 목록이 출력됩니다.

AI가 만드는 편지가 어색해요

LLM은 본질적으로 가끔 어색한 결과를 만듭니다. 두 가지 선택:

  1. AI 통째로 끄기 — repo Settings에서 AI_FEATURES 값을 off로 변경 → 단순 백업 + 통계만
  2. 일부 페이지만 끄기GROWTH_STORY / MILESTONES / INTERESTS / TEACHER_THANKS 중 원하는 것을 off로 추가

자세한 가이드는 B. AI 가공을 안 쓰고 단순 백업 + 통계만 원할 때 섹션 참고.

같은 알림장이 중복으로 백업되지 않나요?

중복 안 됩니다. 매번 실행할 때 이미 노션에 있는 알림장은 자동으로 skip하고 새 것만 추가합니다. 하루 한 번 돌리든 일주일에 한 번 돌리든, 중간에 멈췄다가 다시 실행하든 안전해요.

사진이 너무 큰데 괜찮나요?

자동으로 GPS 제거 + 5MB 이하로 압축 후 노션에 업로드됩니다. 키즈노트의 일반 iPhone/Android 사진은 손실 없이 다 통과해요.

동영상이나 PDF·엑셀도 백업되나요?

첨부 종류 5MB 미만 5MB 이상
📷 사진 ✅ 업로드 ✅ 자동 압축 후 업로드
🎬 동영상 ✅ 업로드 ⚠️ skip
📎 PDF·엑셀 등 ✅ 업로드 ⚠️ skip

노션 무료 플랜의 파일 크기 한도(5MB) 때문이에요. 노션 유료 플랜으로 올리면 파일당 5 GiB까지 가능.

카카오 SSO(카카오 로그인) 계정도 되나요?

네, 됩니다. 쿠키 기반이라 카카오 SSO든 일반 계정이든 차이가 없습니다. Chrome에서 평소처럼 로그인만 되면 OK.

매번 수동으로 실행해야 하나요?

아니요 — 한 번만 셋업하면 끝입니다. 6시간마다 자동으로 cron이 새 알림장을 백업합니다. 유일하게 손이 가는 일: 30일에 한 번 키즈노트 sessionid 쿠키 갱신 (3분).

💡 cron 자동 트리거를 끄고 수동으로만 돌리고 싶으면: Actions 탭 → 워크플로 → Disable workflow.

노션에 새 알림장이 안 들어와요 (며칠째 멈춤)

가장 흔한 원인은 키즈노트 sessionid 쿠키 만료(약 30일마다). 확인:

  1. fork repo → Actions 탭 → 최근 run이 빨간색 ❌인지 보기
  2. 빨간색이면 쿠키 만료 — 쿠키 만료 시 섹션 절차 (3분)
  3. 녹색인데 안 들어오면 오늘 어린이집 휴무일이라 새 글이 없을 수도

내 데이터가 안전한가요?

  • 비밀값(쿠키·토큰)은 GitHub Secrets로 암호화 저장
  • 데이터는 키즈노트 → GitHub Actions 임시 메모리 → 내 노션으로만 흐릅니다 (외부 서버에 저장 X)
  • 사진의 위치 정보(GPS)는 노션 업로드 전 자동 제거
  • 코드는 MIT 라이선스 오픈소스로 tools/kidsnote_fetch/에서 직접 확인 가능

노션 한국어 UI랑 다른데요?

노션 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.


☕ 후원

이 도구가 가족 추억을 지키는 데 도움이 됐다면, 커피 한 잔으로 응원해 주세요. 🙏

토스
Toss 후원 QR
PayPal
PayPal 후원 QR
  • 토스/카카오뱅크: 1000-1261-7813 (우*만) · 커피 한잔은 사랑입니다

후원과 기능은 별개입니다 — 모든 코드는 MIT 라이선스로 누구나 자유롭게 쓸 수 있습니다.


📄 라이선스

MIT. 자유롭게 fork·수정·재배포 가능.

About

Personal kidsnote -> notion mirror

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages