怎么用 API 找到 YouTube 异常视频?
按关键词批量拉取视频,取这批视频播放量的中位数,再标出播放量达到中位数 5 倍及以上的视频。这个比值就是异常分数,而像 Scavio 的 YouTube 搜索这样的 API 会用 JSON 把播放、点赞、评论数直接返回给你,你完全不用碰浏览器。最近 Reddit 上一位创作者开源了一个正是干这件事的「异常视频查找器」,同一个版块里一位数据科学家也说明了,从外部能测的只有基于播放量的异常,而不是曝光衰减。
什么算异常视频?
异常视频是指大幅超过同组对照视频典型表现的视频。这一组对照,要么是某个频道近期的上传,要么是某个细分领域搜索结果的靠前视频。公式很简单:
outlier_score = video_views / median_views_of_peer_set
用中位数,不要用平均数。一个爆款就会把平均数拉高,把其余所有的小爆款都盖住,而中位数始终锚定在「正常」的水平上。分数 1.0 就是正好平均。分数 >= 5x 是值得拆解的强异常:那个选题、标题或封面格式之所以脱颖而出,是有原因的。低于约 2x 都是噪声。多数创作者只研究 5 倍以上这一档,因为可复制的规律往往就藏在那里。
Python:拉取一个细分领域,算中位数,标出异常
下面这段会调用 Scavio 的 YouTube 搜索,取出播放量,把 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),所以扫十个细分领域才花五美分。
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,对某个特定视频做更丰富的拉取。但要看你自己频道的曝光和点击率衰减,YouTube Studio 和官方的 YouTube Data API 完胜。那位在 Reddit 上测曝光衰减的数据科学家,正是因此用的是 Studio 导出数据。Scavio 是从外部看公开表现的望远镜,Studio 是从内部看你自己漏斗的视角。
为什么 API 比爬取公开搜索更好
YouTube 搜索结果是公开且已被索引的,所以结构化 API 会直接给你干净的 JSON,不用轮换代理,不用破解验证码,也不用伺候一个无头浏览器。你查询,它把播放量和标题返回给你。坑和上面的取舍一样:这是公开的发现数据。它不是通往频道私有指标的后门,任何 API 都拿不到别人的曝光数或点击率。把它当作研究用的望远镜,而不是分析仪表盘。
决策规则
当你想扫描许多细分领域、寻找爆发的选题,并花几分钱一轮就从公开异常里逆推出能赢的标题和格式时,用像 Scavio 这样的搜索数据 API。需要逐个视频深挖时,搭配 /youtube/metadata。一旦你的问题变成关于自己的曝光、点击率或留存率,立刻切换到 YouTube Studio 或官方 Data API。找异常是发现,优化频道是分析,一个工具不该假装自己两者都是。