picturebook-scout 개요 — 번역출간 후보 발굴 시스템 (도서 선택 방식·구조맵·AI 역할)

우리학교(아동서 출판사)가 번역출간할 해외 원서를 발굴하는 사내 도구입니다. 7개국 아마존 베스트셀러·신간을 정찰(scout)해 국내 미출간·잘 팔리는 책을 점수화하고, 사람(편집자)이 판권 검토 대상을 고릅니다. 이 페이지는 시스템 개요 — 도서 선택 방식, 동작 구조맵, AI 역할입니다. 각 항목 아래 댓글로 질문·개선의견을 남겨주세요.

📁 대상 프로젝트: ~/projects/picturebook-scout (woori 편입 · Supabase 저장 · scout.wschool.co.kr) 🗓 요청일: 2026-07-11


1. 무엇을 하는가 — 한 줄 요약과 목적

한 줄: 해외 아마존에서 잘 팔리는데 아직 한국에 번역 안 된 아동·청소년 책을 자동으로 찾아 점수 매기는 발굴 도구.

핵심 신호 두 가지

결과물: 후보마다 점수 + 국내 출간 여부 + 한국어 번역 제목·소개를 붙여 웹 뷰어에 올림. 사람이 최종 판단(채택/보류/제외 + 메모).

범위: "모든 그림책"이 아니라 각 시장에서 지금 상위권만 좁게 수집(베스트셀러 + 신간 각 ~30권). 롱테일 제외 — 발굴 가치가 높은 신호에 집중.

Why: 왜 이 도구가 있는지: 편집자가 수작업으로 해외 신간을 뒤지는 대신, 시장 검증된 미출간 후보를 자동으로 좁혀준다.


2. 도서 선택 방식 ① — 어디서 긁는가 (수집 소스)

7개국 × 2구분 × 2리스트 = 28개 리스트를 수집(각 상위 ~30권).

축 값
마켓(7) 🇺🇸 US · 🇯🇵 JP · 🇫🇷 FR · 🇩🇪 DE · 🇮🇹 IT · 🇪🇸 ES · 🇳🇱 NL
구분(2) 그림책(0~8세 그림책·보드북) · 청소년(중·고등 대상 소설)
리스트(2) 베스트셀러 · 신간(new releases)

카테고리 노드 선정 원칙 — 아마존엔 "그림책"/"청소년" 전용 베스트셀러 노드가 대부분 없어 가장 가까운 상위 노드로 폴백:

한계(설계상 인지): 폴백 노드라 순수 그림책·순수 청소년이 아님 — FR 7월엔 방학 워크북, 청소년엔 중학년 챕터북이 섞임. → 이 노이즈는 뷰어에서 사람이 거른다(구분 필터 + 점수).

수집 엔진: 상시 기동된 디버깅 Chrome(CDP)에 붙어 리스트 그리드를 파싱(제목·저자·평점·리뷰·표지 이미지ID·ASIN).

Why: 선택의 출발점은 '어떤 리스트를 보느냐'다. 카테고리 노드 선정이 후보 품질을 좌우한다.


3. 도서 선택 방식 ② — 어떻게 점수 매기는가 (스코어링)

각 후보에 가감점을 합산(음수는 0으로 절삭). 점수 셀에 마우스를 올리면 적용 사유가 뜸.

항목 조건 점수
국내 출간 여부 미출간 +50
이미 출간 −40
평점 4.6 이상 +15
리뷰 수 1000+ +15
300~999 +8
마켓 US 외(비영어권) +5

Why: 점수는 편집자가 훑어볼 우선순위. 규칙이 투명해야 신뢰하고 쓴다.


4. 동작 구조맵 — 수집부터 저장까지 파이프라인

npm run scout 한 번이 도는 순서(40~60분, 증분):

① 수집    28개 리스트 그리드 파싱 (CDP Chrome)
              ↓
② 상세    후보별 상세페이지 1회 로드 → 출간일 + 도서소개
              ↓  ▼ 체크포인트 저장(스캔)
③ 대조    알라딘 검색으로 국내 출간 여부 판정 → 점수 계산
              ↓  ▼ 체크포인트 저장(알라딘)
④ 번역    원제·소개를 한국어로 배치 기계번역 (AI)
              ↓  ▼ 체크포인트 저장(번역)
⑤ 재확인  미출간 판정분을 AI로 교차검증 (AI)
              ↓  ▼ 체크포인트 저장(최종)
         Supabase(Postgres) — 뷰어가 여기서 서빙

설계 포인트

Why: 전체가 어떻게 이어지는지 한눈에. 중간 실패에 강한 체크포인트 구조가 핵심.


5. AI가 하는 일 — 3가지 (그리고 안 하는 것)

AI(Claude CLI, 기본 Sonnet)는 세 가지를 하고, 한 가지는 절대 안 한다.

① 국내 제목 추정 (koCheckAI.js) 원제로 알라딘 검색이 실패했을 때, "한국어로 나왔다면 어떤 제목일지" 후보를 추정. 예: はらぺこあおむし → "배고픈 애벌레". 추정 제목으로 알라딘을 다시 검색한다.

② 매칭 검증 (koCheckAI.js) 알라딘 검색(fuzzy)이 물어온 한국 책이 정말 그 원서의 번역판인지 yes/no 판정. same=true만 "출간"으로 확정(보수적 — 무관한 책 오탐 제거).

③ 한국어 번역 (translateAI.js) 원제·도서소개를 한국어로 기계번역(리뷰어 이해용). 예: しましまぐるぐる → "줄무늬 빙글빙글". 국내 매칭 제목과는 별개 — 미출간 후보 포함 전 후보 대상.

🚫 AI가 안 하는 것: "이 책이 국내 출간됐는지" 직접 판단 출간 여부(사실)는 항상 실제 알라딘 검색이 결정한다. AI는 추측·번역·같은책 판정만 돕는다.

왜? LLM 환각이 데이터를 오염시키는 걸 막기 위해. "AI가 있다더라"가 아니라 실제 서점 검색 결과가 근거가 되도록 설계. (AI 세션 리밋에 걸린 배치는 도장을 안 찍어 다음 실행에 자동 재시도.)

Why: AI 오남용을 막는 설계 철학이 이 프로젝트의 핵심. AI는 판단을 돕되 사실은 정하지 않는다.


6. 사람이 하는 일 — 웹 뷰어에서의 검토

scout.wschool.co.kr (토큰 보호) — 목록/그리드 두 뷰.

보이는 것: 점수 뱃지 · 마켓 국기 · 그림책/청소년 구분 · 표지 · 원제+한국어제목 · 평점/리뷰 · 출간일 · 국내여부 뱃지 · 발견일(🆕) · 도서소개(클릭 시 원문+번역 모달).

필터: 마켓 / 구분(그림책·청소년) / 국내여부(미출간·출간) / 검토상태 / 최근 7일 신규. 정렬: 모든 컬럼.

사람의 액션(자동 저장)

이 검토 기록은 매주 재수집해도 id 기준으로 보존된다(주간 재검토 워크플로). 즉 매주 새 후보가 유입돼도 이미 판단한 건 유지 → 편집자는 신규분만 훑으면 됨.

요약: 도구는 후보를 좁혀 점수·번역·표지로 판단 재료를 차려주고, 번역출간 여부의 최종 결정은 편집자가 한다.

Why: 이 도구는 자동 판정기가 아니라 편집자의 발굴을 돕는 보조 도구. 최종 결정은 사람.


진행 현황

항목 우선순위 상태
1. 무엇을 하는가 — 한 줄 요약과 목적 개요 📌 대기
2. 도서 선택 방식 ① — 어디서 긁는가 (수집 소스) 개요 📌 대기
3. 도서 선택 방식 ② — 어떻게 점수 매기는가 (스코어링) 개요 📌 대기
4. 동작 구조맵 — 수집부터 저장까지 파이프라인 개요 📌 대기
5. AI가 하는 일 — 3가지 (그리고 안 하는 것) 개요 📌 대기
6. 사람이 하는 일 — 웹 뷰어에서의 검토 개요 📌 대기

📝 전체 페이지 의견