Shelfari에서 Goodreads로 책 데이터 이전하는 방법
소개
Shelfari와 Goodreads는 모두 개인 서가를 관리하는 웹 서비스입니다. 두 사이트 모두 읽은 책, 읽을 책, 리뷰와 친구 추천을 관리하게 해줍니다. 본 가이드는 Shelfari에서 Goodreads로 데이터를 안전하고 최대한 완전하게 옮기는 실무 지침입니다. 저는 개인적으로 시각적 매력이 좋아 잠시 Shelfari를 썼지만, 모바일 앱 부재와 API 미지원 때문에 Goodreads로 복귀했습니다. 아래 절차는 수백 권의 책을 옮겨야 하는 상황을 가정하고 작성했습니다.
중요: Shelfari의 데이터는 파일로 내보낼 수 있지만, 완전한 1:1 매핑이 불가능한 항목(예: 일부 사용자 태그, 커스텀 필드)이 있을 수 있습니다. 가능한 한 많은 데이터를 가져오되, 이동 후 Goodreads에서 확인과 정리를 권장합니다.
전제 조건
- Goodreads 계정 (이미 생성되어 있어야 함).
- 스프레드시트 편집기: Google 스프레드시트(권장), Microsoft Excel, LibreOffice 등. 본 가이드는 Google 스프레드시트를 기준으로 설명합니다.
- Google 스프레드시트는 TSV(탭 구분 값) 불러오기, 사용자 정의 날짜 처리, CSV로 재내보내기 기능이 필요합니다.
참고: Google 계정이 없다면 만들거나 다른 스프레드시트 편집기를 사용하세요.
1. Shelfari 데이터 내보내기
- Shelfari에 로그인합니다.
- 오른쪽 상단의 계정 설정(account settings)을 선택합니다.
- “Shelf” 탭으로 이동합니다.

페이지 하단의 다운로드 링크를 통해 탭으로 구분된 파일(.tsv)을 내려받습니다. 이 파일에는 책 제목, 저자, 평점, 읽은 날짜 등 기본 데이터가 포함되어 있습니다.
2. Google 스프레드시트에 데이터 가져오기
- Google Drive에 로그인합니다.
- 새 스프레드시트를 만듭니다.
- 파일 메뉴에서 가져오기(Import)를 선택하고, 방금 다운로드한 Shelfari TSV 파일을 업로드합니다. 가져오기 옵션에서 “스프레드시트 바꾸기(Replace spreadsheet)”를 선택합니다.
정상적으로 불러오면 모든 데이터가 표 형태로 보입니다.
노트: TSV 파일을 그대로 CSV로 바꾸면 탭/쉼표 차이로 컬럼이 잘못 나눠질 수 있으니, 스프레드시트 단계에서 데이터 확인을 권장합니다.
3. 서가(Bookshelves) 데이터 옮기기
Goodreads는 하나의 “Bookshelves” 열에 서가 태그를 공백으로 구분하여 넣습니다. Shelfari에서는 여러 개의 불리언(예: I plan to read list, I’ve read 등) 컬럼으로 표현될 수 있습니다. 이를 변환해야 합니다.
3.1 Bookshelves 열 생성
- Google 스프레드시트에서 Insert -> Column Right를 선택해 새 열을 만들고, 첫 행(헤더)에 “Bookshelves”라고 입력합니다.
3.2 필터로 값 찾아서 태그 추가
- Shelfari에서 가져온 컬럼 중 “I plan to read list” 같은 불리언(또는 TRUE/FALSE) 컬럼을 찾습니다.
- 열을 선택한 뒤 데이터 -> 필터(Data -> Create a filter)를 적용합니다.
- 필터 드롭다운에서 TRUE만 선택하면 해당 서가의 항목만 보입니다.
- 보이는 각 행의 새 Bookshelves 열에 해당 태그(예: to-read)를 입력합니다.
- 필터를 해제하고 다른 서가에 대해 반복합니다. 서로 다른 태그는 공백으로 구분합니다.
예시 매핑:
- I plan to read list –> to-read
- I’ve read –> read
참고: Goodreads는 Favorites, Wish List 같은 커스텀 태그에 표준적 지원이 약합니다. 원하면 “favorites”나 “wish-list” 같은 태그를 Bookshelves에 추가해 두면 추후 필터링에 도움이 됩니다.
중요: Bookshelves 칸에 여러 태그를 넣을 때는 공백으로 구분하세요. 쉼표나 다른 구분자는 Goodreads가 인식하지 못할 수 있습니다.
4. 열(헤더) 이름 바꾸기
Goodreads가 인식하는 열 이름으로 헤더를 바꿔야 합니다. 원본 TSV의 헤더 이름을 찾아 아래와 같이 변경하세요.
- Author –> Author l-f
- Edition Author –> Author
- Rating –> My Rating
- PublicationYear –> Year Published
- Note –> Private Notes
이 변경은 Goodreads의 가져오기(parser)가 각 열을 올바르게 매핑하도록 돕습니다. 헤더 이름은 정확히 위 표기와 일치시키는 것이 안전합니다.
5. 날짜 형식 고정
Goodreads는 날짜를 YYYY/MM/DD 형식으로 받아들이는 편입니다. Google 스프레드시트에서 직접 셀 서식으로 바꿀 수도 있지만, 함수로 명시적으로 포맷을 만드는 방법이 더 이식성이 좋습니다.
새 열을 만들어 다음 공식을 사용합니다. 아래 예제에서 number는 원래의 DateRead 열 셀 참조로 바꿔야 합니다.
=IF(NOT(ISBLANK(number)),TEXT(number,"YYYY/MM/DD"),)- 새 열 이름: Date Read
- 매핑: DateRead –> Date Read
다른 날짜 열도 같은 방식으로 처리합니다:
- DateAdded –> Date Added
- DatePurchased –> Original Purchase Date
팁: 만약 원본 날짜가 텍스트(예: “January 2, 2010”) 형태라면 먼저 DATEVALUE 함수를 사용해 날짜로 변환한 뒤 TEXT 함수를 적용하세요.
6. 수식으로 만든 열을 값으로 고정
현재 날짜 열은 함수(수식)로 생성되어 있습니다. 파일을 CSV로 내보낼 때는 이 수식을 값으로 바꿔야 합니다.
- 날짜 열 전체를 선택하고 마우스 오른쪽 클릭 -> 복사(Copy).
- 동일 열을 다시 선택하고 마우스 오른쪽 클릭 -> 특수 붙여넣기 -> 값 붙여넣기(Paste special -> Paste values only).
7. 불필요한 열 삭제
Goodreads가 인식하지 못하는 불필요한 열은 삭제해 혼란을 줄이세요. 삭제는 열 머리글을 우클릭 -> Delete column.
권장 삭제 목록:
- EditionId
- ASIN
- DateRead (원본, 변환한 Date Read가 있으므로 원본은 삭제)
- DateAdded (원본)
- Favorites list
- I plan to read list
- Wish list
- I’ve read list
- I own list
- I’m reading list
주의: 원본 데이터를 삭제하기 전에 원본 파일의 백업을 로컬에 보관하세요.
8. CSV로 내보내고 Goodreads에 업로드
- 파일 -> 다운로드 -> Comma-separated values(.csv)로 내보냅니다.
- Goodreads에 로그인합니다.
- My Books -> add books -> import 로 이동하거나, 직접 Import 페이지에서 CSV를 업로드합니다.
- 업로드 후 Goodreads가 처리하는 시간을 잠시 기다립니다. 처리 완료되면 내 서가에 책들이 반영됩니다.
축하합니다. 대부분의 기본 데이터는 이전되었습니다. 이제 Goodreads에서 메타데이터 확인과 정리를 진행하세요.
문제 해결과 검증 항목
다음 항목들을 점검해 문제를 찾고 해결하세요.
- 업로드 후 누락된 책이 있는가? (ISBN/ASIN 불일치로 매칭 실패 가능)
- 평점(My Rating)이 제대로 반영되었는가?
- 서가(Bookshelves) 태그가 원하는 대로 나타나는가?
- 날짜 형식(읽은 날짜, 추가일 등)이 YYYY/MM/DD로 반영되었는가?
- 중복 항목이 생겼는가? (중복 시 제목+저자 조합으로 병합 검토)
자주 있는 문제와 해결책:
- 문제: 업로드가 실패하거나 일부 행이 무시됨. -> 해결: CSV의 첫 행(헤더)이 정확히 Goodreads가 기대하는 열 이름인지 확인하세요.
- 문제: 날짜가 비었거나 잘못 표시됨. -> 해결: 원본 날짜가 텍스트일 수 있습니다. DATEVALUE 또는 수동 변환을 사용해 올바른 날짜 형식으로 만드세요.
- 문제: 책이 중복 등록됨. -> 해결: Goodreads가 동일 도서를 식별하지 못해 중복 생성되는 경우가 있습니다. 중복 정리는 Goodreads의 병합 기능을 사용하거나 수동으로 정리하세요.
확인 체크리스트:
- CSV 백업본을 로컬에 저장했는가
- Bookshelves 열이 공백으로 구분된 태그로 채워졌는가
- 날짜 열이 YYYY/MM/DD 형식으로 고정되었는가
- 헤더 이름을 요구되는 대로 바꿨는가
- 불필요한 원본 컬럼을 삭제했는가
대안 방법과 언제 실패하는지
대안 A: 직접 CSV 변환 스크립트 사용
- 장점: 대량의 컬럼 매핑 자동화, 커스텀 로직 적용 가능
- 단점: 파이썬/Node.js 수준의 스크립트 작업 필요
대안 B: 서드파티 마이그레이션 서비스나 도구 사용
- 장점: GUI로 편리하게 이전
- 단점: 개인정보 보안, 일부 서비스는 유료
대안 C: 수동으로 Goodreads에서 책 추가(소수 권만 이동할 때)
- 장점: 가장 확실한 메타데이터 일치
- 단점: 시간 소요가 큼
언제 이 방법이 실패할 수 있는가(대표 사례):
- Shelfari 내 일부 사용자 태그가 구조화되어 있지 않아 매핑 불가
- 책 메타데이터(저자 표기, 출판 연도 등)가 불완전해 Goodreads가 정확히 매칭하지 못하는 경우
- 매우 큰 데이터(수천 권)가 있을 때 Google 스프레드시트/브라우저의 메모리 제한으로 작업이 느려지거나 실패할 수 있음
해결 방향: 실패 시에는 스크립트 기반 접근을 고려하세요. 예를 들어 Python의 pandas로 TSV를 읽어 필요한 매핑을 적용한 뒤 CSV로 출력하는 방법이 있습니다.
간단한 마이그레이션 플레이북
- 원본 TSV 백업(원본 파일 보관).
- Google 스프레드시트에 임포트.
- Bookshelves 열 생성 및 태그 매핑.
- 헤더 이름 변경.
- 날짜 변환(수식 적용).
- 수식 결과를 값으로 고정.
- 불필요 열 삭제.
- CSV로 내보내기.
- Goodreads에 업로드 및 검증.
역할별 체크리스트
- 사용자(개인): 원본 파일 백업, 서가 태그 확인, 업로드 후 1주일 내 검토
- 관리자(팀/도서관): 대량 이전 전 샘플 테스트 100건 실행, 스크립트 자동화 고려
- 개발자: 스크립트로 ISBN 매칭, 데이터 정규화(저자 이름 표준화) 구현
의사결정 흐름도
다음 흐름도는 어떤 방식을 택할지 결정하는 데 도움을 줍니다.
flowchart TD
A[이전할 책 수가 적음?] -->|예| B[수동 추가 권장]
A -->|아니오| C[데스크톱 스프레드시트 사용]
C --> D[CSV로 내보내기]
D --> E{메타데이터 정합성 문제}
E -->|적음| F[수동 정리]
E -->|많음| G[스크립트 자동화]개인정보와 보안 유의사항
- 내보낸 TSV/CSV에는 사용자의 읽기 상태와 개인 노트(Private Notes) 같은 민감한 정보가 포함될 수 있습니다. 이 파일은 안전한 장소(암호화된 드라이브 또는 로컬 암호 보호 폴더)에 보관하세요.
- 타사 마이그레이션 서비스를 사용하면 계정 정보나 개인 데이터가 외부로 전송될 수 있습니다. 필요한 최소 권한만 허용하고 서비스의 개인정보보호 정책을 검토하세요.
검증 기준
다음 기준을 만족하면 마이그레이션을 성공으로 간주할 수 있습니다.
- 주요 메타데이터(제목, 저자, 출판 연도, 평점)가 95% 이상 일치
- 주요 서가(읽음/읽을 목록)가 정확히 반영
- 개인 노트 또는 별도 태그가 의도대로 이전되었거나 수동으로 이전 가능한 상태
정량적 수치가 어렵다면 샘플(예: 100권)을 먼저 이전해 확인한 뒤 전체 이전을 진행하세요.
요약
- Shelfari에서 TSV를 내려받아 Google 스프레드시트로 가져옵니다.
- Bookshelves 열을 만들고 Shelfari의 불리언 필드를 Goodreads 태그로 변환합니다.
- 헤더 이름을 Goodreads가 인식하는 이름으로 바꿉니다.
- 날짜를 YYYY/MM/DD로 변환하고 값으로 고정합니다.
- 불필요한 컬럼을 삭제한 뒤 CSV로 내보내고 Goodreads에 업로드합니다.
중요: 항상 원본 파일을 백업하고 업로드 후 Goodreads에서 데이터 무결성을 확인하세요.
자주 묻는 질문
업로드 후 일부 책이 누락되었어요. 어떻게 찾나요?
- 누락 원인은 여러 가지입니다. ISBN/ASIN 불일치, 제목/저자 표기 차이, Goodreads의 내부 매칭 실패 등이 원인입니다. 누락된 책의 제목과 저자를 확인해 수동으로 검색 후 추가하거나, CSV의 메타데이터를 조정해 재업로드하세요.
여러 권이 중복 등록되었어요. 정리 방법은요?
- Goodreads에서 동일한 책을 병합하는 기능을 사용하거나, 수동으로 하나를 남기고 다른 항목을 삭제하세요. 대량 중복 발생 시 스크립트를 이용한 사전 정제가 필요할 수 있습니다.
Shelfari의 모든 데이터가 옮겨지지 않으면요?
- Shelfari의 사용자 태그나 커스텀 필드는 Goodreads에서 바로 매핑되지 않을 수 있습니다. 그러한 항목은 Bookshelves에 커스텀 태그로 남기거나 수동으로 이동해야 합니다.
소셜용 짧은 안내문(100–200단어)
Shelfari에서 Goodreads로 서가를 옮기려면 간단한 CSV 변환 작업만으로 대부분의 데이터를 가져올 수 있습니다. 본 가이드는 Google 스프레드시트를 사용해 서가 태그 변환, 헤더 매핑, 날짜 포맷 고정 등 필요한 모든 단계를 설명합니다. 백업, 검증 체크리스트, 대안 방법과 문제 해결 팁도 포함되어 있으니 안전하게 마이그레이션하세요.
댓글로 이동 이유나 마이그레이션 과정에서 겪은 문제를 공유해 주세요. 경험 공유는 다른 독자에게 큰 도움이 됩니다.