평생 읽어 온 책을 한곳에 모아 보는 개인 가상 서재입니다. 네이버 블로그에 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
app/index.html은 빌드 결과물입니다. 수정은 app/index.template.html에 하고 다시 빌드하세요.b0, b1 …)에 저장합니다. 책 제목을 바로잡을 때는 data/book_ids.json의 키도 함께 바꿔야 수정 기록이 따라갑니다.index.html 안에 넣는 이유는 아티팩트 CSP가 외부 요청과 외부 이미지를 막기 때문입니다.