Resumen
Finding el right TikTok creators for marca partnerships toma horas of manual scrolling. Este flujo de trabajo ejecuta cada Wednesday, searches objetivo niches y hashtags on TikTok via Scavio, extrae creator perfiles de top-performing contenido, puntuaciones them by engagement tasa y follower conteo, y construye un ranked prospect lista. It filtra out creators you tienen ya contacted y highlights micro-influencers (10K-100K followers) con high engagement. Scouting 10 niches costs about 10 credits ($0.05) per ejecutar.
Desencadenador
Cron Wednesday 10 AM UTC
Programación
Semanal Wednesday 10 AM
Pasos del flujo de trabajo
Define Target Niches
Cargar el lista of nicho hashtags y palabras clave to search for nuevo creators.
Search TikTok by Niche
For cada nicho palabra clave, call Scavio TikTok search to encontrar top-performing reciente contenido.
Extraer Creator Profiles
From el resultados de busqueda, extraer unico creator usernames y obtener their perfil datos.
Puntuacion y Filtrar Creators
Puntuacion cada creator by engagement tasa, follower conteo, y contenido relevance. Filtrar to micro-influencers.
Deduplicate Against Contact List
Eliminar creators you tienen ya contacted o partnered con de el prospect lista.
Exportar Ranked Prospects
Escribir el scored y ranked creator lista to un JSON file for el partnerships team.
Implementacion en Python
import requests, os, json
from pathlib import Path
from datetime import date
API_KEY = os.environ["SCAVIO_API_KEY"]
TH = {"Authorization": f"Bearer {API_KEY}", "Content-Type": "application/json"}
NICHES_FILE = Path("influencer_niches.json")
CONTACTED_FILE = Path("contacted_creators.json")
PROSPECTS_DIR = Path("influencer_prospects")
PROSPECTS_DIR.mkdir(exist_ok=True)
def search_niche(keyword: str) -> list:
resp = requests.post(
"https://api.scavio.dev/api/v1/tiktok/search",
headers=TH,
json={"query": keyword},
timeout=15,
)
resp.raise_for_status()
return resp.json().get("results", [])
def get_user_info(username: str) -> dict:
resp = requests.post(
"https://api.scavio.dev/api/v1/tiktok/user/info",
headers=TH,
json={"username": username},
timeout=15,
)
if resp.status_code == 200:
return resp.json()
return {}
def score_creator(info: dict) -> int:
followers = info.get("followers", 0)
engagement = info.get("engagement_rate", 0)
score = 0
if 10000 <= followers <= 100000:
score += 40 # micro-influencer sweet spot
elif followers > 100000:
score += 20
if engagement > 5:
score += 30
elif engagement > 2:
score += 15
if info.get("verified"):
score += 10
return score
def run():
niches = json.loads(NICHES_FILE.read_text())
contacted = set()
if CONTACTED_FILE.exists():
contacted = set(json.loads(CONTACTED_FILE.read_text()))
all_creators = {}
for niche in niches:
posts = search_niche(niche["keyword"])
for post in posts:
username = post.get("author", {}).get("username", "")
if username and username not in contacted and username not in all_creators:
info = get_user_info(username)
if info:
info["niche"] = niche["keyword"]
info["score"] = score_creator(info)
all_creators[username] = info
prospects = sorted(all_creators.values(), key=lambda c: c["score"], reverse=True)
out = PROSPECTS_DIR / f"prospects_{date.today()}.json"
out.write_text(json.dumps(prospects[:50], indent=2))
print(f"Discovered {len(prospects)} new creators on {date.today()}")
for p in prospects[:10]:
print(f" @{p.get('username', 'unknown')}: score={p['score']}, followers={p.get('followers', 0)}, niche={p['niche']}")
run()Implementacion en JavaScript
const TH = {'Authorization': 'Bearer '+process.env.SCAVIO_API_KEY, 'Content-Type': 'application/json'};
const fs = await import('fs');
const PROSPECTS_DIR = 'influencer_prospects';
try { fs.mkdirSync(PROSPECTS_DIR); } catch {}
const niches = JSON.parse(fs.readFileSync('influencer_niches.json', 'utf8'));
let contacted = new Set();
try { contacted = new Set(JSON.parse(fs.readFileSync('contacted_creators.json', 'utf8'))); } catch {}
async function searchNiche(keyword) {
const r = await fetch('https://api.scavio.dev/api/v1/tiktok/search', {method:'POST', headers:TH, body:JSON.stringify({query:keyword})});
return (await r.json()).results || [];
}
async function getUserInfo(username) {
try {
const r = await fetch('https://api.scavio.dev/api/v1/tiktok/user/info', {method:'POST', headers:TH, body:JSON.stringify({username})});
if (r.ok) return r.json();
} catch {}
return null;
}
function scoreCreator(info) {
let score = 0;
const followers = info.followers || 0;
if (followers >= 10000 && followers <= 100000) score += 40;
else if (followers > 100000) score += 20;
if ((info.engagement_rate||0) > 5) score += 30;
else if ((info.engagement_rate||0) > 2) score += 15;
if (info.verified) score += 10;
return score;
}
const allCreators = {};
for (const niche of niches) {
const posts = await searchNiche(niche.keyword);
for (const post of posts) {
const username = (post.author||{}).username||'';
if (username && !contacted.has(username) && !allCreators[username]) {
const info = await getUserInfo(username);
if (info) { info.niche = niche.keyword; info.score = scoreCreator(info); allCreators[username] = info; }
}
}
}
const prospects = Object.values(allCreators).sort((a,b)=>b.score-a.score).slice(0,50);
const today = new Date().toISOString().split('T')[0];
fs.writeFileSync(PROSPECTS_DIR+'/prospects_'+today+'.json', JSON.stringify(prospects, null, 2));
console.log('Discovered '+prospects.length+' new creators');
prospects.slice(0,10).forEach(p => console.log(' @'+(p.username||'unknown')+': score='+p.score+', followers='+(p.followers||0)+', niche='+p.niche));Plataformas utilizadas
TikTok
Descubrimiento de videos, creadores y productos en tendencia