자동 업데이트 되는 나만의 트위터 백업 ( Twitter Archive ) 사이트 만들기

http://xguru.net/1162


2012년 말부터 Twitter가 오랫동안 사용자들이 기다려왔던 자신의 모든 트윗들을 내려 받을 수 있도록 하는 기능(Twitter Archive)을 오픈하였습니다. 특정 계정들에만 오픈되다가 지금은 많은 계정들에 이 기능이 지원되기 시작했습니다. 다운받는 방법은 자신의 트위터->설정 페이지에 가보시면 하단에 “Your Twitter Archive” 라고 써있는곳에 내려받기 버튼이 보입니다. 이 버튼을 누르면 처음엔 받을수 있는 링크가 메일로 오구요. 그 메일을 누르면 다운 받을수 있는곳으로 이동합니다. 이 버튼이 안보이면 언어 설정을 영어로 바꿔보시기 바랍니다. 저도 계속 안보여서 안생겼나 하고 기다렸는데, 혹시나 해서 영어로 바꾸니 바로 보이더군요. ( 물론 이걸로 해도 아직 안보이는 분들도 있습니다. 조금 더 기다리셔야 ㅠㅠ )



이렇게 받은 파일을 압축을 풀면, 로컬에서도 완벽하게 브라우징 할수 있는 웹사이트 하나가 생성됩니다. 월별로 조회가 가능하고 검색도 됩니다.

twitter_archive_local

깔끔해서 다른 트위터 백업 사이트나 기능들이 필요없을 정도입니다. ( 전 워드프레스 + 트위터 백업 플러그인으로 개인적으로 만들어 사용중이었습니다. ) 이걸 그냥 자신의 웹서버에 업로드만 하면 언제라도 편하게 검색해 볼수 있지만, 문제가 한가지 있습니다. 항상 최종본이 아니라는 거죠. 매일 새로 트윗은 할테고, 그럴때마다 다운받아서 업데이트를 해야합니다. 그래서 자동으로 새 버전으로 업데이트 하도록 하는 방법이 분명 나올거라고 생각했는데, Martin Hawksey 라는 친구가 Google Drive 와 Google Apps Script 를 이용해서 이걸 자동으로 업데이트 하는 방법 을 공개했습니다.

설명이 좀 복잡하길래, 따라하면서 간단히 정리해봤습니다.

  1. 트위터에서 자신의 archive 를 다운받습니다. 보통은 tweets.zip 이라는 파일로 다운로드 됩니다.
  2. 로컬 드라이브에 압축을 풀고, Google Drive에 해당 폴더를 업로드 합니다.

    이때 conversion : off ( 업로드하는 파일을 구글 드라이브 형식으로 변환기능 : 끔 ) 라고 되어있는지 꼭 확인하셔야 합니다.
  3. 업로드된 폴더의 공유(Sharing) 설정을 열어서 “Public on the web” 으로 지정합니다.
    그러면 해당 폴더가 “https://docs.google.com/folder/d/0B7SMn58mVGhSZE5xVkhNbkg0MmM” 같은 형태로 보이게 되는데 이걸로는 웹사이트 형태로 보이지가 않습니다. 뒤의 0B7SMn58mVGhSZE5xVkhNbkg0MmM 주소를 복사해서 “https://googledrive.com/host/” 뒤에다 붙여넣습니다. 이제 이런 형태의 주소가 완성됩니다. “https://googledrive.com/host/0B7SMn58mVGhSZE5xVkhNbkg0MmM” 이제 여러분의 만든 링크를 눌러보시면 방금 업로드한 자신의 트위터 백업 사이트가 구글 드라이브를 통해서 보이게 됩니다. ( 이 링크는 제 사이트로 갑니다 )
  4. 이제 Martin이 만든 “Update Twitter Archive with Google Drive” Google Spreadsheet 를 열어서 File > Make a Copy 해서 자신의 구글 드라이브로 복사합니다.
  5. 2014.03.14 추가오류가 수정된 코드버전이 GitHub에 따로 있습니다. 댓글에 연와님 제보
  6. Authorize/Add Sync Menu 버튼을 두번 누릅니다. 한번은 권한부여, 두번째는 우리가 사용할 메뉴를 추가하는 것입니다.
  7. 상단에 보면 “Sync Twitter Setup” 메뉴가 추가되었습니다.
  8. 첫번째 메뉴 아이템인 Set Archive Path 를 눌러서 방금 업로드한 자신의 Folder ID ( 제경우는 0B7SMn58mVGhSZE5xVkhNbkg0MmM ) 를 입력합니다.
  9. 두번째 메뉴 아이템인 Twitter API Authentication 을 눌러서 자신의 트위터 계정설정을 합니다. 이경우 트위터 API키를 얻기 위해 새로운 트위터 앱을 추가해줘야 합니다. http://dev.twitter.com/apps/new 로 가서 새 트위터 앱을 만듭니다. Callback URL만 설명에 나온대로 https://spreadsheets.google.com/macros 로 지정하면 큰 문제 없습니다. 설정하고 나서 Consumer key 와 Consumer Secret 을 넣어줍니다.
  10. 그리고 나서 Tools->Script Editor 를 클릭해서 스크립트 에디터를 열고, Run->Authorize 를 누르면 Authorize 버튼이 팝업되고 이걸 누르면 트위터 사이트를 통한 내 트위터 앱 인증이 진행됩니다.
  11. 이제 설정이 완료되었습니다. “Update Archive Now” 를 누르면 바로 업데이트 하며, “Turn Auto-Refresh On” 을 누르면 매일 한번씩 자동으로 업데이트 됩니다.

앞서서 말씀드렸듯이 제가 원래 제 Twitter 백업사이트를 워드프레스 + 트위터 플러그인으로 운영하고 있었는데, 이걸 이용해서 Google Drive를 이용하게 아예 변경했습니다. 이제 http://twitter.xguru.net/ 에서 제 모든 트윗을 확인하실수 있습니다.

기본 코드는 Google Apps Script 의 Trigger 를 이용하여 toggleTrigger() 함수에서 trigger.timeBased().everyDays(1).atHour(0) 의 형태로 매일 0시에 한번 호출되게 되어있는데, 너무 텀이 긴듯해서 trigger.timeBased().everyHours(1) 로 변경해서 한시간 마다 한번씩 업데이트하게 변경했습니다. everyMinutes() 로 1분당 한번씩도 가능하긴 할텐데.. 그러면 구글에서 블록될지도.. ㅡ.ㅡ;

그리고 아쉽게도 아직 구글 Drive 에 있는 파일을 Custom Domain 으로 제공하는 방법은 없는듯 하네요. ( 아마존 S3 는 CNAME 설정을 통해서 스태틱 파일 서빙이 가능합니다 ) 그래서 오래된 방식인 IFRAME 으로 묶어버렸습니다.
<!DOCTYPE html>
<html>
<head>
<title>Tweets by @xguru</title>
<meta name="description" content="@xguru 의 트윗들을 백업하는 블로그입니다. " />
</head>
<body>
<iframe src="https://googledrive.com/host/0B7SMn58mVGhSZE5xVkhNbkg0MmM/#"
 style="border: 0; position:fixed; top:0; left:0; right:0; bottom:0; width:100%; height:100%">
</body>
</html>
이제 트위터의 트윗 백업을 자동으로 구글드라이브에 남겨보세요.
제 트위터 @xguru 를 Follow 하시면 다양한 정보를 더욱 빠르게 접하실수 있습니다 ;)
덧글 남기기

25 개의 덧글.

  1. 자세히 설명해주셔서 저도 잘 따라해서 설정 완료했습니다:)
    중간에 막혀서 당황했는데 알고보니까 구글 드라이브에 업로드할때 옵션에
    ‘업로드하는 파일을 구글 드라이브 형식으로 변환’이 설정되어 있더군요;
    혹시 안되시는 분은 업로드 옵션을 한번 확인해보시면 좋을 것 같습니다~

  2. 안녕하세요. 권정혁님..
    아이엠데이의 어설프군YB라고 하는데요.

    너무 좋은 내용을 올려주셔서 실례가 안된다면, 올려주신 내용을 저희 아이엠데이에도 공유해 보고 싶은데요. 괜찮을까요?

    공유를 허락해 주시면, 출처와 작성자 내용을 표기해 공개 할 것이며, 불허하신다고 괜찮으니.. 의견 부탁드리겠습니다.

    그럼 남은 하루도 좋은 마무리하세요.

  3. 안녕하세요
    twitter tools duplication bug 고칠 때 도움받았었는데 기억하실런지^^
    저도 twitter.com 에서 제공하는 백업 서비스에 관심을 갖고 있었는데 자동화가 가능하다는 글이 흥미롭네요.

    그런데 제가 트위터를 백업하는 이유 중 하나는 구글에서 검색하기 쉽게 하기 위한 것이었습니다. “site:nz.pe.kr 검색어” 와 같이요^^

    제가 구글의 웹캐싱 기술에 대해서는 잘 몰라서 한 수 배울까 합니다.
    iframe 내의 컨텐츠도 무리없이 잘 검색해 줄까요? 단순히 아카이빙을 위해서라면 옮길만 할 것 같은데 말입니다.

    제가 생각하는 방법은 twitter.com 의 email 로 발송된 URL에서 Download 버튼의 링크를 매일 wget으로 긁어서 압축을 푸는 것입니다.
    단, 이 링크가 permanent 한 것인지는 두고 볼 일이지만 말입니다. ^^

    • 말씀하신 방법대로 가능은 할듯 합니다. 다운주소가 바뀌지는 않는듯 하더군요.
      일단 위 방법은 제 서버를 사용하지 않아서 제가 더 선호했구요. ( 제 서버를 점점 클라우드로 옮기려는 계획이 진행중이어서요. )
      전 트위터검색은 twilog 와 제 사이트를 같이 이용합니다.

  4. 전 아직 archive 기능이 켜지지 않았네요 -_-;;;

  5. 안녕하세요
    권정혁님이 써주신대로 설정했는데 다른건 다 되는데
    업데이트가 안되서 글을 씁니다.

    위에 적어 놓은 하루 한번 업데이트 말고 한시간 단위로 업데이트를 시키려고
    아래 함수에서

    function toggleTrigger(){
    …..
    var dailyTrigger = ScriptApp.newTrigger(“updateArchive”).timeBased().everyHours(1).create();
    setTriggerID(dailyTrigger.getUniqueId());
    onOpen();
    ……
    }

    수정을 저렇게 했는데 업데이트가 진행이 안됩니다…
    뭘 잘 못 한걸까요…ㅠㅠ

  6. 이렇게 하면 자신의 정보가 공개되는 것 맞죠?

  7. 받은 멘션이나 리트윗 그리고 fav는 어떻게 백업하는 방법이 없을까요?

  8. 귀한 정보 고맙습니다. 덕분에 백업은 받았는데, 말씀하신 대로 매번 백업 받기가 그래서 설명대로 따라 하다 8. Consumer key 와 Consumer Secret 에서 막힙니다. 어찌해야 값을 얻는지 아리송??? 도움을 요청합니다.

    • 그 값들은 트위터 https://dev.twitter.com/ 가서 앱을 생성하시고 받으셔야 하는 부분입니다. 트위터 아이디로 로그인하시고 새 앱 만들기로 진행하여 보세요

      • 답변 고맙습니다만…. 앱생성에서 무얼 누르고 이후, 새 앱 만들기는 어찌 진행하는지요? 죄송합니다…..

  9. 고맙습니다. 차분히 다시하여 드디어 성공했습니다. 팔로우 신청하며 건필을 기원합니다^^

  10. 덕분에 개발에 ‘ㄱ’도 모르는 저도 트위터 자동 백업 시스템을 만들수 있었습니다.
    고맙습니다. ^^

  11. 고맙습니다. 덕분에 지난 트윗을 검색해 보기가 편하네요.

  12. 안녕하세요?

    몇 번의 실패를 거쳐서 마침내 성공한 줄 알았는데, “자동” 업데이트는 안되고 있네요. (Update Archive Now를 누르면 업데이트가 되긴 됩니다.) “Auto Refresh”도 On으로 되어 있는데, 무엇이 문제일까요?

    답변주시면 고맙겠습니다.

  13. 자동으로 백업도 되고 검색도 간편하다니 좋은 방법이네요!
    그런데 이 방법으로 백업해놓을 경우 주소만 알면 누구나 제 과거 트위터를 볼 수 있는 건가요? 비공개계정이어도?
    좋은 방법이라 해보고 싶은데 트윗이 공개될지도 모른다고 생각하니 조금 꺼려지네요…

  14. 구루님 덕분에 트위터를 잘 백업하고 있었는데 최근에 보니 업데이트가 되지 않고 있더라고요. 구루님의 것도 그렇고요. G메일로는 관련 에러메시지가 오고요. 그래서 원글쓴이 블로그를 찾아가보니 해결방법이 나와 있네요. https://gist.github.com/mhawksey/7770536 페이지에 나오는 대로 하고 다시 실행 시키고 스크립트 사용을 허용하니 다시 업데이트가 됩니다.

덧글 남기기

[ Ctrl + Enter ]

Trackbacks and Pingbacks: