끝까지 본 영상이 이기는 루프
제 유튜브 자동화에는 스스로 나아지려고 만든 루프가 있습니다. 올린 영상의 성과를 읽어 오고, 성과가 좋았던 쪽에 가중치를 더 줘서 다음 영상의 앱과 훅을 고르는 구조입니다. 지금까지 그 성과의 기준은 평균 시청 지속률(average view percentage)이었습니다.
문제는 지속률이 '끝까지 봤는가' 하나만 묻는다는 점입니다. 끝까지 재생된 영상은 점수를 높게 받습니다. 그런데 그 영상을 본 사람이 공유를 했는지, 구독을 눌렀는지는 점수에 전혀 들어가지 않았습니다.
당신의 루프가 보상하는 지표는 실제로 원하는 결과입니까, 아니면 재기 쉬운 근처의 무언가입니까?
이 문제는 다른 코딩 에이전트에게 '아직 남아 있는 정당한 레버'를 리뷰받다가 드러났습니다. 지속률만 보는 보상은 두 군데로 새고 있었습니다. 하나는 전환으로 이어지지 않는 영상을 밀어준다는 점, 다른 하나는 한 번 이긴 앱을 계속 밀어줘서 결국 영상이 전부 비슷해진다는 점입니다.
새던 곳 네 군데
첫째, 보상이 시청 행동만 봤습니다. 끝까지 본 것과 행동으로 이어진 것을 구분하지 못했습니다.
둘째, 지속률은 숫자 하나입니다. 영상이 초반에 버려지는지 중간에 처지는지 알 수 없었고, 영상을 심사하는 위원회 프롬프트도 어디서 시청자를 잃는지 모른 채 판단하고 있었습니다.
셋째, 가중치 로테이션에 브레이크가 없었습니다. 한 앱이 이기면 그 앱이 더 자주 뽑히고, 더 자주 뽑히니 표본이 쌓여 또 이기는 쪽으로 수렴할 수 있었습니다.
넷째, 설명란 링크에 출처 표시가 없었습니다. 누군가 영상에서 랜딩 페이지로 넘어와도 어느 채널, 어느 앱, 어느 언어, 어느 훅에서 왔는지 분석 도구에서 나눠 볼 방법이 없었습니다.
당신이라면?
신호가 아직 얇은데 보상식부터 고치겠습니까, 아니면 측정할 트래픽이 쌓일 때까지 기다리겠습니까?
바꾼 것
저는 둘 다 했습니다. 지금 고칠 수 있는 건 고치고, 나중에는 심을 수 없는 건 지금 심었습니다.
보상식은 이렇게 바꿨습니다.
reward = views × retention × (1 + engagement)
engagement = (shares + 3 × subscribersGained) / views # 상한 있음구독을 공유보다 3배 무겁게 친 건 실제로 전환에 더 가깝다고 본 제 판단입니다. 데이터로 맞춘 값은 아닙니다. 상한을 둔 이유는 조회수가 작은 영상 하나가 공유 몇 번으로 보상을 독식하지 못하게 하려는 것입니다.
시청 지속 곡선은 따로 읽습니다. 영상 진행 비율(elapsedVideoTimeRatio)마다 시청 유지 비율(audienceWatchRatio)을 가져와 앱별로 '초반 이탈'인지 '중반 처짐'인지 진단하고, 그 결과를 hook/retention_hints.json에 씁니다. 이 파일이 위원회 프롬프트에 주입되기 때문에, 심사 단계가 영상이 어디서 죽는지 알고 판단하게 됩니다.
로테이션에는 앱 단위 피로도를 넣었습니다. 최근 구간에서 많이 뽑힌 앱일수록 FATIGUE^count만큼 가중치가 줄어듭니다. 이긴 앱 하나가 전체를 차지하지 못하게 하려는 장치입니다.
설명란 링크에는 UTM(source, medium, campaign, content)을 붙였습니다. 분석 도구를 읽는 쪽은 아직 만들지 않았습니다. 그런데도 태그부터 단 이유는 이미 올라간 영상에는 소급해서 태그를 붙일 수 없기 때문입니다. 리더는 나중에 만들 수 있어도, 지금까지 쌓였어야 할 태그는 나중에 만들 수 없습니다.
테스트는 보상의 engagement 가산, 상한, 0일 때 동작과, 곡선 진단의 초반 이탈·중반 처짐·짧은 데이터 처리, 그리고 피로도가 선택을 분산시키는지를 확인합니다.
값싼 수정이 아닌 부분
이번 커밋에서 바뀐 건 대부분 계산식입니다. 계산식은 싸게 고칠 수 있습니다. 진짜 병목은 그 계산식에 들어갈 신호입니다. engagement는 조회수로 나눈 비율이라 조회수가 작으면 공유 한두 번에 크게 흔들립니다. 상한이 그 흔들림을 잘라 줄 뿐, 신호를 만들어 주지는 않습니다. 분석 리더를 '트래픽이 생길 때까지' 미룬다고 커밋에 적었다는 사실 자체가 지금 상태를 보여 줍니다. 측정의 끝단이 아직 비어 있습니다.
자가진단 체크리스트
- 내 루프의 보상 지표가 실제로 원하는 행동(구독, 클릭, 구매)을 포함하는가, 아니면 재기 쉬운 대리 지표 하나뿐인가?
- 가중치 선택에 피로도나 감쇠가 있어서, 한 번 이긴 후보가 전체를 독식하는 걸 막고 있는가?
- 나중에 소급할 수 없는 추적 정보(UTM 같은 출처 태그)를 측정 도구가 생기기 전부터 심어 두었는가?
솔직한 부분
이 변경으로 영상이 나아졌는지는 모릅니다. 커밋 시점에는 비교할 결과가 없었고, 구독 가중치 3배, engagement 상한, 피로도 계수는 모두 판단으로 정한 값이라 맞는 값인지 검증된 적이 없습니다. 곡선 진단이 정말 더 나은 훅으로 이어지는지도, 위원회 프롬프트가 그 힌트를 제대로 쓰는지도 아직 확인하지 못했습니다. UTM은 심어만 뒀고, 그 태그로 무언가를 읽어 낸 적은 아직 한 번도 없습니다.