API로 유튜브 아웃라이어 영상을 어떻게 찾나?
키워드로 영상을 한 묶음 가져와 그 묶음 조회수의 중앙값을 구하고, 조회수가 중앙값의 5배 이상인 영상을 골라내면 됩니다. 이 비율이 아웃라이어 점수이고, Scavio의 유튜브 검색 같은 API는 조회수, 좋아요, 댓글 수를 JSON으로 돌려주기 때문에 브라우저를 전혀 건드릴 필요가 없습니다. 최근 Reddit의 한 크리에이터가 바로 이걸 하는 '아웃라이어 파인더'를 오픈소스로 공개했고, 같은 서브레딧의 한 데이터 사이언티스트는 외부에서 잴 수 있는 건 노출 감소가 아니라 조회수 기반 아웃라이어뿐이라는 점을 보여줬습니다.
무엇이 아웃라이어 영상인가?
아웃라이어는 자기 비교군의 일반적인 성과를 크게 뛰어넘는 영상입니다. 비교군은 한 채널의 최근 업로드이거나, 한 니치 검색의 상위 결과 둘 중 하나입니다. 공식은 간단합니다.
outlier_score = video_views / median_views_of_peer_set
평균이 아니라 중앙값을 쓰세요. 바이럴 하나가 평균을 끌어올려 다른 모든 돌파를 가려버리지만, 중앙값은 '보통'이 어느 정도인지에 단단히 고정돼 있습니다. 점수 1.0은 딱 평균입니다. 점수 5배 이상은 해부할 가치가 있는 강한 아웃라이어로, 그 주제나 제목, 썸네일 형식이 무리에서 튀어나온 데에는 이유가 있습니다. 약 2배 미만은 노이즈입니다. 대부분의 크리에이터가 5배 이상 구간을 들여다보는 이유는, 반복 가능한 패턴이 보통 거기 숨어 있기 때문입니다.
파이썬: 니치를 가져와 중앙값 계산하고 아웃라이어 표시
아래는 Scavio의 유튜브 검색을 호출해 조회수를 가져오고 5배 이상인 것을 모두 출력합니다. 키만 넣으면 그대로 돌아갑니다.
import requests
import statistics
API_KEY = "sk_live_..."
NICHE = "home espresso setup"
THRESHOLD = 5.0
resp = requests.post(
"https://api.scavio.dev/api/v1/youtube/search",
headers={"Authorization": f"Bearer {API_KEY}"},
json={"search": NICHE},
)
resp.raise_for_status()
videos = resp.json()["videos"]
views = [v["view_count"] for v in videos if v.get("view_count")]
median = statistics.median(views)
for v in videos:
vc = v.get("view_count") or 0
score = vc / median if median else 0
if score >= THRESHOLD:
print(f"{score:.1f}x {vc:>10,} {v['title']}")필드 이름은 실제 응답 형태에 따라 달라지니, view_count나 videos가 안 맞으면 먼저 한 건을 출력해 확인하세요. 한 번 호출이 1크레딧($0.005)이라, 니치 열 개를 훑어도 5센트입니다.
JavaScript: fetch로 같은 호출
const resp = await fetch("https://api.scavio.dev/api/v1/youtube/search", {
method: "POST",
headers: {
"Authorization": "Bearer sk_live_...",
"Content-Type": "application/json",
},
body: JSON.stringify({ search: "home espresso setup" }),
});
const { videos } = await resp.json();
const views = videos.map((v) => v.view_count).filter(Boolean).sort((a, b) => a - b);
const median = views[Math.floor(views.length / 2)];
const outliers = videos.filter((v) => (v.view_count || 0) / median >= 5);
console.log(outliers);솔직한 트레이드오프: 발견용 데이터지, 채널 분석이 아니다
Scavio가 돌려주는 건 공개된 조회수, 좋아요, 댓글 수가 붙은 순위화된 검색 결과입니다. 발견하고 여러 니치를 빠르게 가로질러 훑는 데 딱 맞고, 호출당 1크레딧입니다. 돌려주지 않는 건 영상별 비공개 시계열, 즉 노출 수, 클릭률, 평균 시청 시간, 시청 지속 곡선입니다. 이것들은 로그인 너머에 있습니다. 그래서 조회수 기반 아웃라이어는 '그 영상이 초과 성과를 냈다'는 건 알려주지만, 썸네일이 클릭을 따냈는지 주제가 시청을 붙잡았는지는 알려주지 못합니다.
검색 결과를 넘어선 영상별 메타데이터가 필요하면 POST https://api.scavio.dev/api/v1/youtube/metadata와 함께 써서 특정 영상을 더 풍부하게 가져오세요. 하지만 내 채널의 노출과 CTR 감소라면 YouTube Studio와 공식 YouTube Data API가 완승입니다. 노출 감소를 측정한 Reddit의 데이터 사이언티스트가 Studio 내보내기 데이터를 쓴 것도 바로 이 때문입니다. Scavio는 공개 성과를 밖에서 보는 망원경이고, Studio는 내 깔때기를 안에서 보는 시점입니다.
왜 공개 검색 스크래핑보다 API가 나은가
유튜브 검색 결과는 공개돼 있고 색인된 데이터라, 구조화된 API는 프록시 로테이션도, CAPTCHA 풀기도, 돌볼 헤드리스 브라우저도 없이 깔끔한 JSON을 건네줍니다. 물으면 조회수와 제목이 돌아옵니다. 함정은 위 트레이드오프와 같습니다. 이건 공개된 발견용 데이터입니다. 채널 비공개 지표로 가는 뒷문이 아니며, 어떤 API도 남의 노출이나 CTR을 주지 않습니다. 분석 대시보드가 아니라 조사용 망원경으로 다루세요.
결정 규칙
여러 니치를 훑어 터지는 주제를 찾고, 한 번 훑는 데 몇 센트로 공개 아웃라이어에서 이기는 제목과 형식을 역설계하고 싶다면 Scavio 같은 검색 데이터 API를 쓰세요. 영상별로 더 깊이 파고들 땐 /youtube/metadata와 결합하세요. 질문이 내 노출, CTR, 시청 지속률에 관한 것이 되는 순간 YouTube Studio나 공식 Data API로 갈아타세요. 아웃라이어 사냥은 발견이고 채널 최적화는 분석이며, 한 도구가 둘 다인 척해선 안 됩니다.