19개의 영상 분석 후 썸네일에 적용한 4가지 YouTube Shorts 규칙
요약
YouTube Shorts의 조회수를 높이기 위해 19개의 영상을 분석하여 도출한 4가지 썸네일 제작 규칙을 공유합니다. 제목 구성, 시각적 요소 배치, 출력 비율, 자동화 방식에 대한 실무적인 인사이트를 담고 있습니다.
핵심 포인트
- 제목에 비교 대상 게임 이름을 명시하여 클릭 유도
- 썸네일 상단에 게임 이름 대신 큰 숫자를 배치하여 시선 집중
- 검색 및 피드 노출을 위해 9:16이 아닌 16:9 비율로 내보내기
- 일관성을 위해 레이아웃을 프롬프트가 아닌 상수로 하드코딩
제가 YouTube Shorts 제목을 비교 대상인 두 게임의 이름을 모두 포함하도록 변경했을 때, 조회수가 변했습니다. '이름 대 이름' 방식은 영상당 162~373회의 조회수를 기록한 반면, 이름을 명시하지 않은 변형들은 5회에 그치며 사장되었습니다. 이 데이터는 썸네일 디자인에 상응하는 변화를 시작하기에 충분했습니다. 시각적 요소와 제목은 함께 작동해야 하며, 그렇지 않으면 둘 다 제대로 작동하지 않습니다.
19개의 게임 비교 Shorts를 운영한 후, 제가 썸네일 생성 파이프라인에 하드코딩(hardcoded)한 네 가지 규칙은 다음과 같습니다.
규칙 1: 게임 제목이 아닌 큰 숫자를 앞세워라
기존의 썸네일 레이아웃은 상단에 게임 이름(아이콘, 제목, 브랜딩)을 배치하고, 하단에
그렇지 않았습니다. 기본값으로 검은색 프레임이 생성되었습니다. 그 후 ffmpeg 오버레이가 검은색 배경 위에 텍스트와 게임 아이콘을 올바르게 렌더링했습니다. 썸네일은 기술적으로는 유효했지만, 완전히 잘못되어 보였습니다 — 플레이스홀더(placeholder)와 구분이 불가능할 정도였습니다.
PR #36에서 두 가지 수정 사항이 추가되었습니다: 배경 이미지를 선택하고 소싱하는 방법에 대한 SOP(표준 운영 절차: 플랫폼에 적합한 아트워크 사용, UI 크롬(UI chrome) 제외, 텍스트 중첩 구역 제외)와 Hades 큐 엔트리(queue entry) 내 cover_image의 명시적인 연결입니다. SOP는 코드 리뷰(code-review) 세션에서 초안이 작성되었으며 비디오 생성 런북(runbook)에 직접 커밋되었습니다.
규칙: cover_image는 선택 사항이 아닙니다. 프로그래밍 방식으로 썸네일을 생성하고 있다면, 썸네일 단계가 실행되기 전에 해당 필드에 대한 게이트(gate)를 설정하세요. 이미지가 누락되면 에러(error)가 발생하는 것이 아니라, 깨진 결과물이 조용히 생성될 뿐입니다.
규칙 3: 미리보기 카드(preview card)를 위해 9:16이 아닌 16:9로 내보내라
YouTube Shorts는 9:16 비율의 세로형으로 재생되므로, 세로형 썸네일을 생성하는 것이 당연한 선택처럼 보입니다. 문제는 실제 발견(discovery)이 일어나는 지점입니다.
YouTube 검색 결과, 메인 피드, 임베드(embed) 컨텍스트의 썸네일 미리보기 카드(preview card)는 가로형으로 표시됩니다. YouTube가 16:9 미리보기 카드로 크롭(crop)하는 9:16 썸네일은 상단과 하단 부분을 잃게 되는데 — 바로 그곳이 제가 게임 제목과 결과 숫자를 배치해 두었던 위치입니다. 중앙 크롭은 배경 아트워크만 보여줍니다.
현재 저의 내보내기(export) 설정은 1280×720 (16:9)입니다. YouTube는 사이드바를 추가하여 Shorts 플레이어에 맞게 이를 스케일링(scaling)합니다. 시청자가 클릭 여부를 결정하는 미리보기 카드의 데이터는 온전히 보존됩니다.
이 규칙은 귀하의 Shorts 발견이 실제로 어디에서 일어나는지에 따라 달라집니다. 트래픽의 대부분이 Shorts 세로형 피드(스와이프 업 인터페이스) 내부에서 발생한다면 9:16이 합리적이며 제 규칙은 적용되지 않습니다. 제 팔로워 수 정도라면 피드 카드(feed cards)가 지배적인 발견 접면(discovery surface)이므로, 가로형 내보내기가 승리합니다.
규칙 4: 레이아웃 상수를 하드코딩하라, 프롬프트로 요청하지 마라
PR(Pull Request) 이전의 썸네일 생성기는 원하는 레이아웃을 설명하는 프롬프트를 사용했습니다: "숫자를 상단에 큰 글씨로 배치하고, 게임 이름은 그 아래에 배치하세요." 결과는 대략적으로 맞았지만 실행할 때마다 일관성이 없었습니다. 폰트 크기가 변하고, 숫자의 위치가 바뀌며, 때로는 텍스트가 아이콘에 의해 잘리기도 했습니다.
프롬프트를 사용하는 것은 레이아웃을 모델이 매번 새롭게 내리는 창의적인 결정으로 취급하는 것입니다. 자동화 측면에서 이는 잘못된 모델입니다. 저는 시리즈의 모든 썸네일에서 게임 이름과 숫자만 바뀔 뿐, 레이아웃은 동일하기를 원합니다.
PR #37 이후, 제약 조건들은 프롬프트 내의 산문(prose)이 아니라 Python 생성 스크립트 내의 상수(constant)가 되었습니다:
NUMBER_FONT_SIZE = 96
NUMBER_POSITION = (CENTER_X, TOP_MARGIN)
GAME_NAME_FONT_SIZE = 36
...
이것들은 설정 가능한 파라미터(parameter)가 아닙니다. 이것들은 불변량(invariant)입니다. 모델은 이것들을 선택하지 않습니다. 생성기가 받아들이는 유일한 입력값은 게임 이름, 비교 숫자, 그리고 cover_image 경로뿐입니다.
이와 동일한 논리가 앞서 언급한 지시 측면(directive side)에도 적용되었습니다. 일단 결정이 내려지면, 그것을 산문 형태의 지침에서 코드로 옮겨야 합니다. 산문 지침은 대충 훑고 지나가거나 느슨하게 해석될 수 있지만, 상수는 그럴 수 없습니다.
세 개의 AI 큐레이션 디렉토리 사이트를 운영하는 6개월간의 지속적인 실험 중 일부입니다. 여기에 언급된 기술적 주장들은 사실이며, 이 글은 AI의 도움을 받아 작성되었습니다.
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기