channel laboratory / distribution report
카테고리별 참여율 분포: 같은 참여율도 카테고리가 다르면 다른 성적이다
공개 코퍼스로 산출한 YouTube 카테고리별 참여율(좋아요+댓글 나누기 조회수) 분위수 분포. 같은 참여율이 카테고리에 따라 어떤 위치가 되는지, 표본 구성과 한계를 명시해 해석합니다.
research question
같은 참여율(좋아요+댓글÷조회수)이라도 카테고리가 다르면 분포상 위치가 달라지는가. 카테고리별 분위수(p10·p50·p90) 분포는 얼마나 다르게 생겼는가?
distribution plate
분포 판독표
| 카테고리 | 영상 수 | p10 | 중앙값 p50 | p90 | 분포 절개도 |
|---|---|---|---|---|---|
| 과학 & 기술 | 152편 | 2.06% | 3.75% | 5.35% | |
| 교육 | 151편 | 2.08% | 3.74% | 5.93% | |
| 뉴스 & 정치 | 25편 | 2.26% | 3.25% | 6.32% | |
| 인물 & 블로그 | 21편 | 2.29% | 2.90% | 5.06% | |
| 엔터테인먼트 | 100편 | 1.09% | 2.78% | 6.52% | |
| 반려동물 | 25편 | 1.13% | 2.23% | 3.18% |
표본 억제 기록. 음악 카테고리는 샘플 1개 < 최소 15개으로 분위수를 발행하지 않았습니다.
pathology notes
판독 소견
소견 01
참여율은 채널을 열어볼 때 가장 먼저 살피는 부위입니다. 조회수에는 알고리즘의 기분이 절반쯤 섞여 있지만, 좋아요와 댓글은 보고 나서 손을 움직인 사람만 남기는 흔적이라서요. 문제는 이 흔적의 정상 범위가 카테고리마다 다르다는 점입니다. 이번 코퍼스에서 발행 기준을 넘긴 카테고리 6개 가운데 중앙값이 가장 높은 과학 & 기술과 가장 낮은 반려동물 사이 간격은 1.7배 수준이었습니다. 같은 숫자가 어디서는 평범하고 어디서는 상위권이 됩니다.
소견 02
더 눈여겨볼 소견은 카테고리 사이의 차이보다 카테고리 안의 폭입니다. 같은 카테고리에서도 p10과 p90 사이는 몇 배씩 벌어지는데, 이번 표본에서는 엔터테인먼트의 폭이 가장 컸습니다. 그러니 카테고리 평균 참여율이라는 한 줄 숫자를 기준선으로 삼는 것은 체온 분포를 평균 체온 하나로 진단하는 일과 비슷합니다. 분위수 세 개(p10·p50·p90)로 위치를 읽는 쪽이 정확합니다.
소견 03
이 참여율이 공개 필드로 만든 근사치라는 점도 소견서에 적어둡니다. likeCount는 좋아요를 누른 사용자 수, commentCount는 댓글 수라는 결이 다른 두 흔적을 합쳐 viewCount로 나눈 값입니다. 시청 지속률이나 노출 클릭률처럼 만족을 직접 재는 지표는 공개 API가 반환하지 않습니다. 따라서 이 분포는 절대 평가표가 아니라, 같은 자로 잰 다른 채널들 사이에서 내 위치를 가늠하는 줄자로만 쓰는 게 맞습니다.
소견 04
쓰는 순서는 이렇습니다. 내 최근 영상 여러 편의 참여율을 같은 식으로 계산하고, 내 카테고리 행의 분위수와 겹쳐 봅니다. p50 위라면 참여가 병목일 가능성은 낮아지고, p10 아래가 반복된다면 시청자가 반응할 이유를 찾지 못하고 있다는 신호로 읽을 수 있습니다. 그다음 확정은 이 표가 아니라 Studio의 유지율 곡선과 함께 내리는 것이 순서입니다.
measurement ledger
무엇을 어떻게 쟀나
| 지표 | 원본 파일 | JSON 위치 | API 필드 유래 | 계산 | 검증 범위 |
|---|---|---|---|---|---|
| 카테고리별 참여율 분위수 (p10·p50·p90) | corpus-analysis.json | categoryEngagement.categories[] (p50 내림차순 정렬 상태로 저장됨) | videos.list statistics.likeCount + statistics.commentCount를 statistics.viewCount로 나누고 snippet.categoryId로 그룹 | 저장된 발행 값 그대로 사용 | verify-corpus 전수 대조 대상 |
| 카테고리별 표본 수 | corpus-analysis.json | categoryEngagement.categories[].videoCount | snippet.categoryId 그룹별 영상 수 | 저장된 발행 값 그대로 사용 | verify-corpus 전수 대조 대상 |
| 표본 부족으로 미발행된 카테고리 | corpus-analysis.json | categoryEngagement.skippedCategories[] | MIN_CAT_VIDEOS(15편) 미만 카테고리의 기록 | 저장된 발행 값 그대로 사용 | verify-corpus 전수 대조 대상 |
구조화 데이터 판정. 표시 수치가 corpus-analysis.json에 발행된 값 그대로이고 verify-corpus.mjs가 전수 대조하므로 Dataset 마크업에 적합. 새 Dataset 노드를 만들지 말고 기존 정본 노드를 isBasedOn으로 참조할 것(DATASET_CANONICAL_ID 참고).
owner-only confirmation
Studio에서 최종 확인할 자리
Studio › 콘텐츠 탭 (영상별 표)
영상별 좋아요 수·댓글 수·조회수
최근 영상 10편 이상에 대해 (좋아요+댓글)÷조회수를 직접 계산하고, 이 페이지에서 내 카테고리 행의 p10·p50·p90과 겹쳐 위치를 본다.
Studio › 분석 › 참여도 탭
평균 시청 지속 시간, 좋아요 대비 싫어요 비율
참여율이 p10 아래로 반복되면 공개 데이터로는 원인을 못 가른다. 유지율 곡선의 초반 이탈 구간을 열어 참여 이전 단계(시청 유지)가 병목인지 먼저 확인한다.
specimen provenance
검체 출처와 표본 기록
운영자가 지명도·카테고리 다양성을 기준으로 손으로 고른 영어권 대형 채널 시드 목록에서 출발한 편의표본. 각 채널의 업로드 재생목록(UU…)에서 수집 시점 기준 최근 업로드 최대 25편을 담았다. 무작위 표본이 아니며 한국어 채널·소형 채널은 포함되지 않았다.
source
YouTube Data API v3수집 2026-06-26T13:07:47.870Z
사람 확인 2026-06-26
sampling frame
20개 시드해결 19개 · 미해결 1개 (TheGameTheorists)
제외 기준과 스냅샷에서의 실제 영향
| 제외·미공표 기준 | 강제 코드 | 스냅샷 영향 |
|---|---|---|
| 시드 핸들 중 channels.list?forHandle resolve에 실패한 채널은 코퍼스에서 제외 | scripts/build-corpus.mjs resolveChannels() — 실패 시 로그 후 스킵, 조작 금지 | 시드 20개 중 @TheGameTheorists 1개 제외, 19채널 확정 |
| contentDetails.duration이 없거나 0초(예: P0D)인 영상은 길이대 분석에서 제외 | scripts/compute-corpus.mjs bandOf() — unknown 밴드로 분류 후 미집계 | 475편 중 1편(P0D) 제외, 길이대 분석은 474편 기준 |
| viewCount가 0 이하이거나 likeCount·commentCount가 비공개(null)인 영상은 참여율 분석에서 제외 | scripts/compute-corpus.mjs — engagement를 null로 두고 미집계 | 이 스냅샷에서는 해당 영상 0편(475편 전부 참여율 계산 가능) |
| 표본이 MIN_CAT_VIDEOS(15편) 미만인 카테고리는 분위수를 발행하지 않고 skippedCategories에 기록 | scripts/compute-corpus.mjs + scripts/verify-corpus.mjs 전수 대조 | 음악(10) 카테고리 1편이 제외 기록됨 |
| 길이대 표본이 MIN_BAND_VIDEOS(3편) 미만이면 그 밴드의 중앙값·분위수를 null로 발행 | scripts/compute-corpus.mjs medOf()/bands | 채널별 밴드 중앙값 다수가 null(예: 쇼츠형 0편 채널의 배수 미산출) |
공개 API 엔드포인트와 사용 필드
| 엔드포인트 | 사용 목적 | 공식 문서 |
|---|---|---|
| channels.list | 채널 통계(subscriberCount·viewCount·videoCount·hiddenSubscriberCount)와 채널 개설일 | developers.google.com |
| playlistItems.list | 업로드 재생목록(UU…)에서 최근 업로드 영상 ID 수집 | developers.google.com |
| videos.list | 영상별 조회수·좋아요·댓글 수·길이(ISO 8601)·카테고리·게시 시각 | developers.google.com |
재현 절차와 공개 API가 주지 않는 값
reproduction
- node scripts/build-corpus.mjs — 공개 API로 원자료 수집(corpus-raw.json)
- node scripts/compute-corpus.mjs — 분포 산출(corpus-analysis.json)
- node scripts/verify-corpus.mjs — 발행 수치 전수를 원자료와 독립 구현으로 대조(불일치 시 비정상 종료)
studio-only excluded
- RPM
- 유효 시청시간·평균 시청 지속률
- 노출수·CTR
- 트래픽 소스
limitations register
이 자료가 말하지 못하는 것
모든 판독에 공통인 한계
- 이 코퍼스는 무작위 표본이 아니다. 운영자가 지명도를 기준으로 고른 시드 20개 중 resolve에 성공한 영어권 대형 채널 19개의 편의표본이며, 한국어 채널과 소형 채널은 아예 들어 있지 않다. 여기서 나온 분포를 YouTube 전체의 대표값으로 읽으면 안 된다.
- 표본 전원이 이미 살아남은 채널이다. 사라진 채널, 삭제되거나 비공개로 전환된 영상은 수집 자체가 불가능해 분포에 없다. 이 분포를 "노력하면 도달하는 범위"로 읽는 순간 생존편향을 그대로 삼키게 된다.
- 모든 수치는 2026-06-26(UTC) 수집 시점의 스냅샷이다. 조회수·좋아요·구독자는 계속 변하므로 지금 같은 API를 부르면 다른 숫자가 나온다. 이 페이지는 수집·확인 시점을 명시하는 방식으로만 그 한계를 관리한다.
- 이 자료는 분포와 상관의 기록이지 인과의 증명이 아니다. "길이를 바꾸면, 카테고리를 옮기면, 구독자를 모으면 조회수가 오른다" 같은 처방은 여기서 도출되지 않는다. 수익이나 성장을 보장하는 공식은 더더욱 아니다.
카테고리 참여율 판독의 고유 한계
- categoryId는 업로더가 스스로 지정하는 분류다. 교육과 과학기술처럼 경계가 흐린 카테고리 사이의 차이는 내용 차이가 아니라 지정 습관의 차이일 수 있다.
- 좋아요 수를 숨긴 영상은 참여율 계산에서 제외되는 설계다. 이번 스냅샷에서는 제외된 영상이 없었지만, 재수집 시에는 카테고리별 표본이 달라질 수 있다.
- 표본이 전부 구독자 수백만 이상의 대형 채널이라, 소형 채널의 참여 역학(팬덤 밀도가 높아 참여율이 더 높게 나오는 경향 등)은 이 분포에 반영되어 있지 않다.
cross-reference
다음 판독으로 이어 보기
record custody
기록·검수 책임
record & editorial
장민석
TubeAnatomy의 편집 필명으로, 공개 필드의 범위를 넘는 경력이나 성과를 주장하지 않습니다. 숫자는 저장소의 원자료와 계산 코드에 묶어 관리합니다.
correction channel
오류 제보
필드 정의, 계산, 표기에서 어긋난 부분을 발견하면 실제 수신 가능한 운영 메일로 알려주세요. 재현 가능한 오류는 원자료와 함께 바로잡습니다.