매일 11시, 큐를 보고 하나만 올립니다
영상 스크립트와 mp4를 렌더링해 두는 일과 그것을 실제로 올리는 일은 따로 돌아가고 있었습니다. 올리는 쪽은 사람이 세션을 열 때마다 손으로 골랐습니다. 이걸 매일 오전 11시 launchd 잡으로 옮겼습니다.
구성은 둘입니다. 하나는 세션에서 실행하는 큐 채우기 스크립트로, 렌더링이 끝난 스크립트와 mp4를 채널별 큐 파일에 넣습니다. 다른 하나는 매일 도는 발행 스크립트로, 큐에서 순위가 가장 높은 항목을 골라 올리고 발행 기록 파일에 남깁니다. 한 채널에 하루 한 편(DAILY_CAP=1)만 나갑니다. 같은 항목이 두 번 나가지 않게 중복 검사도 하고, 기록도 남깁니다.
순위는 hook 유형별 시청 유지율로 정합니다. 유형마다 지금까지 얼마나 끝까지 봤는지를 비교해서 높은 쪽을 먼저 올립니다. 유지율 데이터가 없는 유형이 있으면 고정 순서로 되돌아갑니다. 그 순서는 상실, 회의, 반전, 새로움 순입니다.
자동화를 만들 때 가장 먼저 부딪히는 질문은 이겁니다. 당신의 자동 발행 잡은 올릴 것이 없는 날 무엇을 합니까?
빈 큐를 실패로 만들지 않았습니다
큐가 비어 있으면 잡은 아무것도 하지 않고 끝납니다. 오류도 아니고 경고도 아닙니다. 다음 세션에서 큐를 다시 채우면 그날부터 이어집니다.
빈 큐 앞에서 스크립트를 새로 만들어 채우는 방법도 있었습니다. 발행 잡이 큐가 비었다는 이유로 무인 상태에서 콘텐츠를 만들기 시작하면, 아무도 보지 않는 곳에서 검증되지 않은 결과물이 나갈 수 있습니다. 그래서 발행 대상은 렌더링과 검증이 끝난 것으로만 제한했습니다. 무인 스크립트 생성은 넣지 않았습니다.
당신이라면 빈 날을 어떻게 처리하시겠습니까? 저는 "안 올리는 날이 생기는 것"이 "검증 안 된 것이 올라가는 것"보다 낫다고 판단했습니다.
자가진단 체크리스트
- 자동 발행 잡이 큐가 비었을 때 오류로 끝나는지, 조용히 끝나는지 정해 두었습니까?
- 순위를 정하는 지표가 아직 없을 때를 위한 고정 순서(fallback)가 있습니까?
- 사람이 보지 않는 시간에 돌아가는 잡이 검증되지 않은 것을 만들거나 올릴 수 있는 경로가 남아 있지 않습니까?
솔직한 부분
이 글은 구성을 만든 시점의 기록이라 실제 운영 결과는 아직 없습니다. 유지율 기반 순위가 고정 순서보다 나은지 확인할 데이터는 없고, 유형별 표본이 충분한지도 따져 보지 않았습니다. 하루 한 편이라는 상한이 적절한지도 모릅니다. 큐를 채우는 일은 여전히 세션에서 사람이 해야 하므로, 세션을 열지 않으면 잡은 계속 아무것도 하지 않습니다. 그 구간이 얼마나 길어질지는 지켜봐야 알 수 있습니다.