r/PartneredYoutube threads show creators blindsided by termination for 'spammy, misleading, scammy' content. This tutorial builds a self-audit that surfaces the same signals YouTube's classifiers use, so a creator can fix issues before enforcement.
Prerequisites
- Python 3.10+
- A Scavio API key
- A target YouTube channel handle
Walkthrough
Step 1: Pull the channel's recent uploads
Scavio's YouTube platform returns structured video lists.
import requests, os
API_KEY = os.environ['SCAVIO_API_KEY']
def recent_uploads(handle):
r = requests.post('https://api.scavio.dev/api/v1/search',
headers={'x-api-key': API_KEY},
json={'query': handle, 'platform': 'youtube', 'num_results': 50})
return r.json().get('videos', [])Step 2: Check view-to-like ratio
Spam classifiers flag videos with abnormal engagement ratios.
def view_like_ratio(v):
views = v.get('view_count', 0)
likes = v.get('like_count', 0)
return likes / views if views else 0Step 3: Scan community complaints on Reddit
Search r/PartneredYoutube and r/youtube for the channel name.
def complaints(handle):
r = requests.post('https://api.scavio.dev/api/v1/search',
headers={'x-api-key': API_KEY},
json={'query': f'{handle} spam', 'platform': 'reddit'})
return r.json().get('posts', [])Step 4: Check for clickbait in titles
Classifier signals: ALL CAPS, excessive emojis, 'SHOCKING' triggers.
import re
CLICKBAIT = [r'\b(SHOCKING|INSANE|YOU WONT BELIEVE)\b', r'!{3,}', r'[A-Z]{6,}']
def clickbait_score(title):
return sum(1 for p in CLICKBAIT if re.search(p, title))Step 5: Compose the audit report
Aggregate scores and flag high-risk videos.
def audit(handle):
videos = recent_uploads(handle)
flags = [v for v in videos if clickbait_score(v['title']) > 1 or view_like_ratio(v) < 0.005]
return {'handle': handle, 'flagged_videos': flags, 'complaints': complaints(handle)}Python Example
import os, requests
API_KEY = os.environ['SCAVIO_API_KEY']
def audit(handle):
r = requests.post('https://api.scavio.dev/api/v1/search',
headers={'x-api-key': API_KEY},
json={'query': handle, 'platform': 'youtube', 'num_results': 50})
return r.json().get('videos', [])
print(len(audit('@somecreator')))JavaScript Example
const API_KEY = process.env.SCAVIO_API_KEY;
export async function audit(handle) {
const r = await fetch('https://api.scavio.dev/api/v1/search', {
method: 'POST',
headers: { 'x-api-key': API_KEY, 'Content-Type': 'application/json' },
body: JSON.stringify({ query: handle, platform: 'youtube', num_results: 50 })
});
return (await r.json()).videos || [];
}Expected Output
Risk report per channel with flagged videos (low engagement ratio or clickbait title) plus community complaint threads.