나는 당신이 어떤 글을 읽는지 알고 있다
아래 링크는 <내 손 안의 비서> 첫 글이자 전체 목차
공개된 장소에 글을 쓴다는 것은 다른 사람에게 내 생각을 전달하고 싶다는 마음을 전제로 한다. 나 역시 브런치의 내 글이 더 많은 사람에게 읽히고 도움이 되었으면 좋겠다. 그런데 '글 쓰는 작가'라는 콘셉트에 충실한 브런치라는 플랫폼은 글쓰기에 집중해서 글을 쓸 수 있도록 깔끔한 인터페이스를 제공하지만, 반면에 내 글을 읽는 사람이 누구인지 자세하게 알려주지 않는다. 다시 말해, 구독자를 더 자세히 이용할 수 있는 분석 툴을 최소한으로 제공한다. 나는 내 글을 읽는 독자가 누군지 알아야 더 좋은 글을 쓸 수 있다고 믿는 사람이라서 브런치에서 제공해주지 않는 구독자의 관심사에 대해서 고민하고 있었다.
그러던 중에 아래의 최규민 님 글을 읽으면서 아이디어를 얻었다.
'내 구독자 분들이 구독한 다른 작가분의 리스트를 만들면 어떤 주제에 관심이 있는지 알 수 있겠구나'라는 생각을 통해서 자료를 모아보기로 결정했다. 위 글에서는 selenium이라는 웹브라우저를 컨트롤할 수 있는 라이브러리를 통해서 데이터를 크롤링하는데, 본문 중에서 '속도가 느리다'는 말도 있고 조금 더 쉬운 방법이 있는지 찾아보았다. 구글 개발자 도구를 통해서 브런치 웹사이트 곳곳을 찾아보았더니 브런치가 REST API를 통해서 웹 프런트를 그려준다는 것을 알게 되었고 [1], 덕분에 편하게 데이터를 받아서 자료를 만들어 볼 수 있었다. 위 글의 최규민 님은 데이터를 멋지게 시각화하는데 초점을 맞추셨지만, 나는 일반 사람들이 사용하기 쉬운 엑셀로 자료를 만드는데 초점을 맞추어서 작업을 해보았다. 소스코드는 아래에 공유해두었다. 링크에 들어가서 "Download ZIP"이라는 버튼을 누르면 전체를 다운로드할 수 있다.
[1] API request를 확인하는 방법은, 구글 크롬에서 우클릭을 하고 "요소 검사(inspect)"를 누르면 뜨는 창에서 'Network' 탭을 누르고 화면을 새로고침 할 때 뜨는 파일을 확인하면 된다.
공개된 코드 중 brunch.py는 다섯 부분으로 나뉜다. 아래와 같은 주석을 통해서 코드를 분리해놓았으니 참고하기 바란다.
### 01 MAGAZINE INFO AND USER_ID
1.
"python brunch.py <작가 아이디>" 명령어를 입력하면 첫 번째로는 작가 정보를 첫 번째 엑셀 시트에 정리하고, 두 번째 엑셀 시트에는 작가가 가지고 있는 매거진 정보를 모은다. 매거진 정보는 작가가 직접 그 매거진을 소유하고 있는지, 그 안에 게시글 수는 얼마인지, 구독하는 사람은 몇 명인지에 해당하는 것이다.
2.
그다음은 그 작가의 전체 구독자 정보를 긁어 오는데, API를 통해서 전달되는 정보를 잘 살펴보니 사용자를 guest와 user라는 이름으로 구분하길래 type에 그것을 따로 옮겨놓았다. 구독자 역시 각각 구독자의 구독자 숫자, 관심 작가 숫자, 작성 글 개수를 모아보았다.
3.
세 번째는 매거진의 이름을 딴 각 sheet를 만들고, 전체 구독자에 포함되지 않은 매거진 개별 구독자를 수집한다. 여기서 매거진의 시스템을 이해하고 넘어가야 할 것이 있는데, 브런치는 사용자가 작가를 구독할 경우 현재 그 작가의 활성화되어있는 모든 매거진을 자동으로 구독하는 시스템이다. 이것을 이해한 사람들은 작가 구독을 해지하고, 자신의 관심사가 담겨있는 매거진을 따로 구독하기도 한다. 나는 여기에 초점을 맞춰보았다. 나는 총 7개의 매거진을 가지고 있는데, 매거진마다 성격이 조금씩 다르다. 물론 거시적인 관점에서는 '자유로운 삶'이라는 주제를 가지고 글을 쓰고 있지만, 구독자분들이 느끼기에는 다를 수도 있다. 그래서 각 매거진 별로 사람들이 얼마나 떠나고, 혹은 특정 매거진을 받아보는지 알기 위해서 매거진 별로 status라는 항목을 만들어 두었다. 전체 구독자 중에서 특정 매거진의 구독을 취소한 경우라면 hate를, 그리고 특정 매거진만 구독한 경우라면 like를 통해서 구분해보기로 했다.
4.
다음으로는 내 브런치를 정기적으로 볼 수 있게 구독 신청해주신 분들이 좋아하는 작가를 리스트로 모았다. 구독자분들 중에서 단 한 명이라도 구독 신청을 한 작가분들을 모두 모으니 약 15,000명이 넘는 사람이 리스트에 들어와서 너무 놀란 나머지, 최소 2분 이상이 구독한 작가분들만 추려냈는데도 2500명 정도 리스트에 들어왔다. favorite writer라는 sheet에서 internalCount는 각기 내 브런치의 구독자 분들이 몇 분이나 구독을 하고 있는지에 대한 정보다. 이것을 엑셀에서 내림차순으로 정리해보면 어떤 작가분에 관심이 많은지 알 수 있다.
5.
마지막으로는 브런치에서 각 매거진은 3개까지 매거진의 성격을 나타내는 키워드(혹은 해시태그)를 설정할 수 있다. 이번에는 4번에서 알게 된 작가분들의 매거진을 다 돌아다니며 키워드 개수를 수집해보았다. 그런데 상위 키워드가 순서대로 '여행', '일상', '에세이', '영화' 같은 내용이다. 뭔가 이상하다 생각하면서 다른 작가분들을 대상으로 5번을 돌려 봤더니, 거의 비슷한 결과가 나왔다.
이런 결과를 바탕으로 느낄 수 있었던 사실은 브런치의 작가분들이 매우 일상적이고 감상적인 글을 많이 쓴다는 사실이다. 주로 등장하는 매거진 상위 10개 키워드는 앞서 '여행', '일상', '에세이', '영화'를 포함하여, '책'. '사진', '생각', '사랑', '소설', '일기', '시' 같은 것들이다. 대상 작가분을 몇 번 바꿔서 실험을 해보았지만, 작가분의 구독자분들이 구독하는 다른 작가분들의 매거진에는 어김없이 비슷한 키워드를 발견할 수 있었다.
그리고 내 브런치를 구독하는 구독자분들이 구독한 다른 작가분들을 순서대로 살펴보았는데도, 굉장히 다양한 주제에 대해서 다양한 글을 쓰고 있으시다는 것을 알 수 있었다. 내가 쓰는 글이 '개발'에서부터, '여행', '사랑'에 이르기까지 다양한 글을 쓰다 보니 아무래도 다양한 관심사를 갖고 있는 구독자분들과 작가분들이 리스트에 정리가 된 것 같다.
(이 글에 좋아요를 눌러 주시고, 브런치에 가입한 이메일 주신 작가분에게는 직접 엑셀 자료를 생성해서 보내드릴 수 있다. 물론 개발자 작가 분들은 직접 하시는 게 더 빠르시겠지만.)
공유한 파이썬 코드를 실행시키면 이런 엑셀 시트가 나온다. 내 맥북에는 엑셀이 없어서 Numbers라는 맥용 프로그램이 열어서 생긴 게 조금 다른데, 엑셀이 있는 컴퓨터에서 열면 아무런 문제없이 확인이 가능하다.
요즘 데이터 사이언스에 대해 관심이 많다. 다들 하둡이나 R 같은 프로그래밍 요소들에 많이 집중을 하시는데, 데이터를 보는 데 있어서 가장 중요한 것은 '무엇이 알고 싶은가?'하는 점이다. 프로그래밍은 내가 만나고 싶은 그 데이터를 손에 넣기 쉽게 조금 도와주는 작업에 지나지 않는다. '원하는 데이터가 무엇'인지 정확히 알고, 그리고 그 '데이터를 얻기 위해 효과적인 방법을 습득하는 것'이 결국 데이터 사이언티스트가 해야 하는 일이라고 생각한다.
결국 데이터를 만지는 일은 마케터와 개발자 사이에 있어야 하는 작업이다. 내 주변에 관심을 갖고 끊임없이 거기에 관련된 자료를 만들고, 들여다보고, 고민하는 것이 진짜 차이를 만들어낸다.
프로그래밍은 외계어가 아닙니다. 실생활에서 쓸 수 있는 프로그래밍을 알립니다. 그리고 댓글이 달릴수록 더 쉬워집니다.