기술 가이드

Shelfari에서 Goodreads로 책 데이터 이전하는 방법

8 min read 도서 관리 업데이트됨 21 Oct 2025
Shelfari에서 Goodreads로 책 데이터 이전하기
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 데이터 내보내기

  1. Shelfari에 로그인합니다.
  2. 오른쪽 상단의 계정 설정(account settings)을 선택합니다.
  3. “Shelf” 탭으로 이동합니다.

Shelfari 계정의 서가 설정 화면

페이지 하단의 다운로드 링크를 통해 탭으로 구분된 파일(.tsv)을 내려받습니다. 이 파일에는 책 제목, 저자, 평점, 읽은 날짜 등 기본 데이터가 포함되어 있습니다.

2. Google 스프레드시트에 데이터 가져오기

  1. Google Drive에 로그인합니다.
  2. 새 스프레드시트를 만듭니다.
  3. 파일 메뉴에서 가져오기(Import)를 선택하고, 방금 다운로드한 Shelfari TSV 파일을 업로드합니다. 가져오기 옵션에서 “스프레드시트 바꾸기(Replace spreadsheet)”를 선택합니다.

Google 스프레드시트에 파일을 임포트하는 화면

정상적으로 불러오면 모든 데이터가 표 형태로 보입니다.

노트: 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 필터로 값 찾아서 태그 추가

  1. Shelfari에서 가져온 컬럼 중 “I plan to read list” 같은 불리언(또는 TRUE/FALSE) 컬럼을 찾습니다.
  2. 열을 선택한 뒤 데이터 -> 필터(Data -> Create a filter)를 적용합니다.
  3. 필터 드롭다운에서 TRUE만 선택하면 해당 서가의 항목만 보입니다.
  4. 보이는 각 행의 새 Bookshelves 열에 해당 태그(예: to-read)를 입력합니다.
  5. 필터를 해제하고 다른 서가에 대해 반복합니다. 서로 다른 태그는 공백으로 구분합니다.

예시 매핑:

  • I plan to read list –> to-read
  • I’ve read –> read

참고: Goodreads는 Favorites, Wish List 같은 커스텀 태그에 표준적 지원이 약합니다. 원하면 “favorites”나 “wish-list” 같은 태그를 Bookshelves에 추가해 두면 추후 필터링에 도움이 됩니다.

필터로 to-read 항목만 표시한 예시

중요: 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로 내보낼 때는 이 수식을 값으로 바꿔야 합니다.

  1. 날짜 열 전체를 선택하고 마우스 오른쪽 클릭 -> 복사(Copy).
  2. 동일 열을 다시 선택하고 마우스 오른쪽 클릭 -> 특수 붙여넣기 -> 값 붙여넣기(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에 업로드

  1. 파일 -> 다운로드 -> Comma-separated values(.csv)로 내보냅니다.
  2. Goodreads에 로그인합니다.
  3. My Books -> add books -> import 로 이동하거나, 직접 Import 페이지에서 CSV를 업로드합니다.
  4. 업로드 후 Goodreads가 처리하는 시간을 잠시 기다립니다. 처리 완료되면 내 서가에 책들이 반영됩니다.

Goodreads에 CSV 업로드 화면

축하합니다. 대부분의 기본 데이터는 이전되었습니다. 이제 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로 출력하는 방법이 있습니다.

간단한 마이그레이션 플레이북

  1. 원본 TSV 백업(원본 파일 보관).
  2. Google 스프레드시트에 임포트.
  3. Bookshelves 열 생성 및 태그 매핑.
  4. 헤더 이름 변경.
  5. 날짜 변환(수식 적용).
  6. 수식 결과를 값으로 고정.
  7. 불필요 열 삭제.
  8. CSV로 내보내기.
  9. 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 스프레드시트를 사용해 서가 태그 변환, 헤더 매핑, 날짜 포맷 고정 등 필요한 모든 단계를 설명합니다. 백업, 검증 체크리스트, 대안 방법과 문제 해결 팁도 포함되어 있으니 안전하게 마이그레이션하세요.


댓글로 이동 이유나 마이그레이션 과정에서 겪은 문제를 공유해 주세요. 경험 공유는 다른 독자에게 큰 도움이 됩니다.

공유하기: X/Twitter Facebook LinkedIn Telegram
저자
편집

유사한 자료

Debian 11에 Podman 설치 및 사용하기
컨테이너

Debian 11에 Podman 설치 및 사용하기

Apt-Pinning 간단 소개 — Debian 패키지 우선순위 설정
시스템 관리

Apt-Pinning 간단 소개 — Debian 패키지 우선순위 설정

OptiScaler로 FSR 4 주입: 설치·설정·문제해결 가이드
그래픽 가이드

OptiScaler로 FSR 4 주입: 설치·설정·문제해결 가이드

Debian Etch에 Dansguardian+Squid(NTLM) 구성
네트워크

Debian Etch에 Dansguardian+Squid(NTLM) 구성

안드로이드 SD카드 설치 오류(Error -18) 완전 해결
안드로이드 오류

안드로이드 SD카드 설치 오류(Error -18) 완전 해결

KNetAttach로 원격 네트워크 폴더 연결하기
네트워킹

KNetAttach로 원격 네트워크 폴더 연결하기