Resumen
Brands sign TikTok creators basado on follower counts alone, entonces obtener burned by bot followers, controversial contenido, o engagement manipulation. Este flujo de trabajo vets creators diario: pull their reciente publicaciones, analizar engagement rates, verificar comentario sentiment, y marcar marca safety risks. Ejecutar it antes de committing cualquier sponsorship budget. Cost: about $0.35 per full creator audit.
Desencadenador
Diario at 9 AM, o on-demand per creator evaluation batch.
Programación
Diario 9 AM
Pasos del flujo de trabajo
Cargar Creator Shortlist
Leer el lista of TikTok creators bajo evaluation de un hoja de calculo o JSON file.
Obtener Creator Profiles
Pull cada creator's perfil datos: follower conteo, following conteo, total likes, y bio.
Analizar Reciente Posts
Obtener last 20 publicaciones per creator. Calcular promedio views, likes, y comentario counts.
Verificar Engagement Calidad
Comparar engagement tasa contra nicho averages. Marcar creators con suspicious patrones (high followers, low engagement).
Salida Vetting Informe
Generar un per-creator scorecard con engagement tasa, follower calidad estimate, y marca safety flags.
Implementacion en Python
import requests, os, json
API_KEY = os.environ["SCAVIO_API_KEY"]
TH = {"Authorization": f"Bearer {API_KEY}", "Content-Type": "application/json"}
CREATORS = ["creator_username_1", "creator_username_2", "creator_username_3"]
def fetch_creator_profile(username: str) -> dict:
resp = requests.post(
"https://api.scavio.dev/api/v1/tiktok/profile",
headers=TH,
json={"username": username},
timeout=15,
)
return resp.json()
def fetch_creator_posts(username: str) -> list:
resp = requests.post(
"https://api.scavio.dev/api/v1/tiktok/user-posts",
headers=TH,
json={"username": username, "count": 20},
timeout=15,
)
return resp.json().get("posts", [])
def vet_creator(username: str) -> dict:
profile = fetch_creator_profile(username)
posts = fetch_creator_posts(username)
followers = profile.get("followers", 0)
total_likes = profile.get("likes", 0)
if posts:
avg_views = sum(p.get("views", 0) for p in posts) / len(posts)
avg_likes = sum(p.get("likes", 0) for p in posts) / len(posts)
avg_comments = sum(p.get("comments", 0) for p in posts) / len(posts)
engagement_rate = (avg_likes + avg_comments) / max(followers, 1) * 100
else:
avg_views = avg_likes = avg_comments = engagement_rate = 0
flags = []
if followers > 100000 and engagement_rate < 1.0:
flags.append("LOW_ENGAGEMENT_FOR_SIZE")
if avg_views < followers * 0.01:
flags.append("LOW_VIEW_RATIO")
if len(posts) < 5:
flags.append("INACTIVE")
return {
"username": username,
"followers": followers,
"engagement_rate": round(engagement_rate, 2),
"avg_views": int(avg_views),
"avg_likes": int(avg_likes),
"post_count": len(posts),
"flags": flags,
"verdict": "PASS" if not flags else "REVIEW",
}
for creator in CREATORS:
report = vet_creator(creator)
status = "PASS" if report["verdict"] == "PASS" else "REVIEW"
print(f"[{status}] @{report['username']}: {report['followers']} followers, {report['engagement_rate']}% engagement, flags={report['flags']}")Implementacion en JavaScript
const TH = {'Authorization': 'Bearer '+process.env.SCAVIO_API_KEY, 'Content-Type': 'application/json'};
const CREATORS = ['creator_username_1', 'creator_username_2', 'creator_username_3'];
async function fetchCreatorProfile(username) {
const r = await fetch('https://api.scavio.dev/api/v1/tiktok/profile', {method:'POST', headers:TH, body:JSON.stringify({username})});
return r.json();
}
async function fetchCreatorPosts(username) {
const r = await fetch('https://api.scavio.dev/api/v1/tiktok/user-posts', {method:'POST', headers:TH, body:JSON.stringify({username, count:20})});
return (await r.json()).posts || [];
}
async function vetCreator(username) {
const profile = await fetchCreatorProfile(username);
const posts = await fetchCreatorPosts(username);
const followers = profile.followers || 0;
let avgViews=0, avgLikes=0, avgComments=0, engagementRate=0;
if (posts.length) {
avgViews = posts.reduce((s,p)=>s+(p.views||0),0)/posts.length;
avgLikes = posts.reduce((s,p)=>s+(p.likes||0),0)/posts.length;
avgComments = posts.reduce((s,p)=>s+(p.comments||0),0)/posts.length;
engagementRate = (avgLikes+avgComments)/Math.max(followers,1)*100;
}
const flags = [];
if (followers>100000 && engagementRate<1.0) flags.push('LOW_ENGAGEMENT_FOR_SIZE');
if (avgViews<followers*0.01) flags.push('LOW_VIEW_RATIO');
if (posts.length<5) flags.push('INACTIVE');
return {username, followers, engagementRate:Math.round(engagementRate*100)/100, avgViews:Math.round(avgViews), postCount:posts.length, flags, verdict:flags.length?'REVIEW':'PASS'};
}
for (const creator of CREATORS) {
const report = await vetCreator(creator);
console.log('['+report.verdict+'] @'+report.username+': '+report.followers+' followers, '+report.engagementRate+'% engagement, flags='+JSON.stringify(report.flags));
}Plataformas utilizadas
TikTok
Descubrimiento de videos, creadores y productos en tendencia