조회수만 보는 파이프라인
숏츠를 자동으로 만들어 올리는 파이프라인이 있습니다. 업로드는 YouTube Data API로 하고, 성과도 그동안 영상별 조회수로만 판단했습니다. 조회수는 많은 걸 한꺼번에 뭉개는 숫자입니다. 사람들이 끝까지 봤는지, 구독으로 이어졌는지, 애초에 추천 화면에 얼마나 떴는지가 전부 그 안에 섞여 있습니다.
그래서 한 단계 더 들어가 보기로 했습니다. 목표는 완주율(평균 조회율)이었고, 욕심을 내면 노출수와 클릭률(CTR)까지 보고 싶었습니다. 썸네일과 제목이 문제인지, 영상 본편이 문제인지를 나누려면 노출과 CTR이 있어야 합니다.
여기서 먼저 여쭤보고 싶습니다. 여러분 프로젝트에서 '이 숫자는 API로 가져오면 된다'고 생각해 둔 지표가 있다면, 그게 실제로 API에 나오는지 확인해 보신 적이 있나요?
저는 확인하지 않은 채로 '권한만 받으면 된다'고 생각하고 있었습니다.
첫 번째 함정: 업로드 토큰으로는 애널리틱스를 못 읽습니다
업로드에 쓰던 OAuth 토큰에는 업로드 스코프만 들어 있었습니다. YouTube Analytics API v2를 부르려면 yt-analytics.readonly 스코프가 따로 필요합니다. 코드 쪽 변경은 작았습니다. 업로드 스크립트의 SCOPES 목록에 한 줄을 추가하는 정도였습니다.
문제는 그다음입니다. 스코프를 늘리면 이미 발급받은 토큰으로는 새 권한을 쓸 수 없습니다. 동의 화면을 다시 거쳐서 재인증해야 합니다. 커밋 메시지에도 '재인증 필요'라고 적어 두었습니다. 무인으로 도는 파이프라인에서 재인증은 사람이 직접 브라우저를 열어야 하는 작업이라, 코드 한 줄 바꾼 걸로 끝나지 않습니다.
두 번째 함정: 받아온 숫자에 노출수와 CTR이 없었습니다
재인증을 하고 v2로 조회해 보니 다음 지표는 나왔습니다.
- 평균 조회율(완주율)
- 시청시간
- 구독 전환
- 공유
노출수와 CTR은 나오지 않았습니다. 이 두 지표는 API에 공개되어 있지 않고 Studio 화면에서만 볼 수 있었습니다. 권한을 제대로 받았는데도 제일 보고 싶던 숫자가 목록에 없었습니다.
여기에 하나가 더 있었습니다. 애널리틱스 데이터는 처리 지연이 대략 하루입니다. 오늘 올린 영상의 완주율을 오늘 바로 받을 수는 없습니다.
당신이라면?
Studio 화면을 스크래핑해서라도 CTR을 가져오시겠습니까, 아니면 API가 주는 것만으로 판단 기준을 다시 짜시겠습니까?
제가 한 것
저는 API가 주는 것만 쓰기로 했습니다. analytics_report.py라는 70줄짜리 리포트 스크립트를 만들어서 완주율, 시청시간, 구독 전환, 공유를 조회하게 했습니다. 그리고 두 가지 한계는 코드 안에 적어 두었습니다. 노출수와 CTR은 API에 없어서 Studio 전용이라는 것, 데이터가 약 1일 늦게 들어온다는 것입니다.
적어 둔 이유는 나중의 저 때문입니다. 리포트에 CTR 칸이 비어 있으면 저는 버그라고 생각하고 또 한참 찾아볼 겁니다. 오늘 올린 영상이 0으로 찍혀도 실패한 영상이라고 읽을 겁니다. 없는 건 없다고, 늦는 건 늦는다고 적어 두면 그런 오독을 미리 막을 수 있습니다.
다만 이걸로 병목이 풀린 건 아닙니다. 영상 본편이 문제인지 썸네일이나 제목이 문제인지를 나누는 데 필요한 숫자가 여전히 자동 경로에는 없습니다. 이건 싸게 고칠 방법이 없는 문제였습니다.
자가진단 체크리스트
- 대시보드에 넣으려는 지표마다, 그 지표가 공식 API 응답에 실제로 나오는지 문서나 호출 한 번으로 확인했나요?
- 스코프를 추가하면 기존 토큰을 다시 발급받아야 한다는 것, 그리고 그 재인증을 누가 언제 할지를 계획에 넣었나요?
- 데이터 처리 지연 때문에 최근 값이 0이나 빈칸으로 보일 때, 그걸 '성과 없음'으로 읽지 않도록 코드나 리포트에 표시해 두었나요?
솔직한 부분
노출수와 CTR이 Studio 전용이라는 건 제가 v2 조회를 해 보고 확인한 범위에서 내린 결론입니다. 다른 경로, 예를 들어 대량 리포트 방식에서도 똑같이 막혀 있는지는 확인하지 않았습니다. 완주율을 받아오게 됐지만 이 숫자가 다음 영상을 고르는 데 실제로 쓸모가 있는지는 아직 모릅니다. 이 글을 쓰는 시점에 제가 가진 사실은 스크립트를 만들었다는 것과 어떤 숫자는 오고 어떤 숫자는 오지 않는다는 것, 이 두 가지뿐입니다.