언어마다 채널을 나눠 놓고 배너는 하나였습니다
저는 같은 브랜드로 YouTube 콘텐츠 채널을 언어별로 따로 운영합니다. 한국어 채널이 있고, 영어 채널과 일본어 채널이 따로 있습니다. 여기에 개발 기록용 채널도 하나 있습니다.
언어별로 채널을 나눈 건 시청자에게 자기 언어로 된 채널을 보여 주기 위해서였습니다. 그런데 2026-08-06 커밋 기준으로 영어 채널과 일본어 채널은 한국어 문구가 박힌 배너를 그대로 쓰고 있었습니다. 영상 제목과 설명은 현지화해 놓고, 채널 페이지에 들어오면 가장 먼저, 가장 크게 보이는 이미지가 한국어였습니다.
원인은 단순했습니다. 배너가 한국어 문구까지 포함된 완성 이미지 한 장이었고, 언어별로 다시 만드는 과정이 아예 없었습니다. 채널을 새로 만들 때 그 이미지를 복사해서 올렸을 뿐입니다.
여러분 프로젝트에서 현지화 작업을 끝냈다고 체크할 때, 그 목록에 텍스트가 이미지 안에 구워진 자산(배너, OG 이미지, 스토어 스크린샷)도 들어 있었습니까?
배너가 문제였던 이유
텍스트 문자열은 번역 파이프라인이 잡아냅니다. 이미지 안의 글자는 잡아내지 못합니다. 문자열이 아니라 픽셀이라서, 문자열 기준으로 "번역 누락 0건"이 나와도 배너는 그대로 한국어로 남습니다.
게다가 배너는 한 번 올리면 다시 들여다볼 일이 거의 없습니다. 영상은 매번 새로 올라가지만 배너는 채널을 만들 때 한 번 정해지고 끝입니다.
당신이라면 언어별 배너 이미지를 손으로 세 장 더 만들겠습니까, 아니면 배너를 다시 만들 수 있는 구조로 바꾸겠습니까?
바꾼 것: 이미지 대신 템플릿, 손 업로드 대신 스크립트
두 파일로 나눴습니다. 합쳐서 132줄입니다.
banner.html — 2560x1440 크기의 편집 가능한 배너 소스입니다. 굵은 브랜드 워드마크, 그라디언트 가로선, 모서리 글로우로 구성했습니다. 언어마다 달라지는 문구는 HTML에 박지 않고 ?tag=&link= 쿼리로 넣습니다. 이걸 headless Chrome으로 렌더링해서 채널별 이미지를 뽑습니다. 디자인은 한 군데에만 있고, 언어는 매개변수가 됐습니다.
banner_ops.py — 두 가지 일을 합니다.
- 콘텐츠 채널들과 개발 기록 채널에 지금 실제로 걸려 있는 배너를 감사(audit)합니다.
- 채널별 배너를 업로드합니다.
업로드에 숨어 있던 함정: 설명과 키워드
배너 업로드는 채널의 brandingSettings를 업데이트하는 방식입니다. 이 스크립트는 업데이트할 때 brandingSettings 안의 channel 블록을 보존하도록 만들었습니다. 커밋에 적힌 목적은 채널 설명과 키워드가 업데이트 뒤에도 살아남게 하는 것입니다.
배너 하나 바꾸려다 채널 설명과 키워드를 잃을 수 있는 구조라는 뜻입니다. 이미지 필드만 담아 보내면 되겠지 생각하기 쉽지만, 같은 설정 묶음 안에 있는 다른 값도 함께 챙겨서 다시 보내야 합니다.
자가진단 체크리스트
- 현지화 완료 기준에 문자열뿐 아니라 글자가 이미지에 구워진 자산(배너, 썸네일 템플릿, OG 이미지)도 들어 있습니까?
- 그 이미지들을 언어만 바꿔서 다시 만들 수 있는 소스(템플릿과 매개변수)가 있습니까, 아니면 완성 이미지 한 장만 있습니까?
- 설정 묶음 하나를 API로 업데이트할 때, 건드리지 않을 필드까지 그대로 보존해서 보내고 있습니까?
솔직한 부분
이 커밋에 남은 건 배너를 고치는 도구까지입니다. 한국어 배너가 언제부터 걸려 있었는지, 그동안 채널 방문자에게 어떤 영향이 있었는지는 기록에 없고 저도 모릅니다. 배너를 바꾼 뒤 구독이나 조회에 변화가 있었는지도 측정하지 않았습니다. 감사 스크립트를 만들었지만 정기적으로 돌리도록 걸어 두었다는 기록은 없어서, 다음에 채널이 하나 더 생기면 같은 일이 반복되지 않는다고 장담할 수 없습니다.