mybookshelf

나의 서재

평생 읽어 온 책을 한곳에 모아 보는 개인 가상 서재입니다. 네이버 블로그에 23년 동안 쌓인 독서 기록과 집 책장 사진, 기억으로 되살린 학창 시절 책을 모아 three.js로 만든 도서관 안에 꽂아 둡니다.

주요 기능

폴더 구조

app/
  index.template.html   앱 원본 (HTML·CSS·JS 한 파일)
  index.html            빌드 결과 — 책 데이터와 그림을 안에 박은 파일
  img/                  첫 화면·도서관 그림
data/
  blog_posts.json       블로그 '독서,책' 카테고리 글 목록 (168편)
  blog_bodies.json      글 본문
  extracted/            블로그·사진에서 뽑은 책 후보
  books.json            합친 장서 목록
  memory_books.json     기억으로 복원한 학창 시절 책
  categories.json       책별 분류 (11개)
  book_ids.json         책 id 대장 (제목 → 번호, 번호가 밀리지 않게)
  book_info/            책마다 메타데이터(.json)와 표지 썸네일(.jpg)
pictures/               책장 사진 원본
scripts/                수집·가공·빌드 스크립트

실행하기

필요한 것: Python 3, Pillow

pip install pillow

앱 빌드 (data/의 책 데이터와 app/img/ 그림을 app/index.html 안에 넣습니다):

python scripts/build_app.py

로컬에서 열기:

python -m http.server 8777 --directory app

브라우저에서 http://localhost:8777 을 엽니다.

데이터 파이프라인

단계 스크립트 하는 일
1 fetch_blog_posts.py 네이버 블로그 ‘독서,책’ 카테고리 글 목록 수집
2 fetch_blog_bodies.py 글 본문 수집
3 prepare_photos.py 책장 사진을 긴 변 1600px로 줄이고 회전 보정
4 (LLM · 비전 모델) 독후감 판정, 제목·저자 추출, 책등 읽기 → data/extracted/
5 merge_extracted.py 블로그와 사진에서 나온 책을 합쳐 books.json 생성
6 book_info.py --all 카카오 책 검색으로 표지·소개글 받기
7 crop_home_images.py 첫 화면 그림 잘라 app/img/에 저장
8 build_app.py app/index.html 빌드

책 추가하기

제목(과 저자)만으로 책을 추가할 수 있습니다.

python scripts/book_info.py "제목 / 저자"

카카오 책 검색 키가 필요합니다. KAKAO_REST_API_KEY 환경변수에 REST API 키를 넣어 주세요.

알라딘 OpenAPI(2026-10-30 정지)와 네이버 책 검색 API(2026-07-31 종료)는 더 이상 쓸 수 없어 카카오 책 검색을 씁니다.

테스트

python scripts/test_book_info.py

주의할 점

앞으로