Aperçu
Vérifier les candidats influenceurs TikTok en récupérant les statistiques de profil, les publications récentes et des échantillons d'abonnés via l'API. Calculer les taux d'engagement réels, vérifier la régularité des publications et marquer les comptes avec des schémas d'abonnés suspects. S'exécute quotidiennement sur une liste de surveillance de noms d'utilisateur de créateurs.
Déclencheur
Cron quotidien à 08:00 UTC
Planification
Quotidien à 08:00 UTC
Étapes du workflow
Charger la liste de surveillance des créateurs
Lire les noms d'utilisateur TikTok cibles depuis un fichier de configuration ou une base de données. Chaque entrée contient le nom d'utilisateur et la campagne pour laquelle ils sont évalués.
Récupérer les données du profil
Pour chaque nom d'utilisateur, appeler le point de terminaison du profil TikTok pour obtenir le nombre d'abonnés, le nombre d'abonnements, le total de likes, le nombre de vidéos et la bio.
Récupérer les publications récentes
Appeler le point de terminaison user/posts avec la pagination max_cursor pour obtenir les 20 dernières vidéos. Extraire les nombres de vues, de likes, de commentaires et de partages par vidéo.
Calculer les métriques d'engagement
Calculer le taux d'engagement médian (likes + commentaires + partages) / abonnés pour les 20 dernières publications. Marquer les créateurs en dessous de 2% ou au-dessus de 20% (suspect élevé).
Échantillonner les abonnés pour la qualité
Récupérer 2 pages d'abonnés (40 comptes). Vérifier le pourcentage de ceux qui ont zéro vidéo et suivent plus de 500 comptes, ce qui indique des abonnés robots.
Générer le rapport de vérification
Écrire un CSV avec : nom d'utilisateur, abonnés, taux d'engagement médian, fréquence de publication, score de qualité des abonnés, et une recommandation passer/marquer/échouer.
Implémentation Python
import requests, os, statistics
H = {"Authorization": f"Bearer {os.environ['SCAVIO_API_KEY']}", "Content-Type": "application/json"}
BASE = "https://api.scavio.dev"
def vet_creator(username):
profile = requests.post(f"{BASE}/api/v1/tiktok/profile",
headers=H, json={"username": username}).json()["data"]["user"]
followers = profile["follower_count"]
posts_resp = requests.post(f"{BASE}/api/v1/tiktok/user/posts",
headers=H, json={"sec_user_id": profile["sec_uid"], "count": 20}).json()
posts = posts_resp["data"].get("posts", [])
engagement_rates = []
for p in posts:
stats = p.get("statistics", {})
eng = stats.get("digg_count", 0) + stats.get("comment_count", 0) + stats.get("share_count", 0)
if followers > 0:
engagement_rates.append(eng / followers * 100)
median_eng = statistics.median(engagement_rates) if engagement_rates else 0
foll_resp = requests.post(f"{BASE}/api/v1/tiktok/user/followers",
headers=H, json={"sec_user_id": profile["sec_uid"], "count": 20}).json()
sample = foll_resp["data"].get("followers", [])
bot_like = sum(1 for f in sample if f.get("aweme_count", 0) == 0 and f.get("following_count", 0) > 500)
quality_score = 1 - (bot_like / len(sample)) if sample else 0
return {
"username": username,
"followers": followers,
"median_engagement": round(median_eng, 2),
"posts_sampled": len(posts),
"follower_quality": round(quality_score, 2),
"status": "pass" if median_eng >= 2 and quality_score >= 0.8 else "flag",
}
result = vet_creator("example_creator")
print(f"{result['username']}: {result['median_engagement']}% eng, {result['follower_quality']} quality -> {result['status']}")Implémentation JavaScript
const BASE = "https://api.scavio.dev";
const H = { Authorization: `Bearer ${process.env.SCAVIO_API_KEY}`, "Content-Type": "application/json" };
async function vetCreator(username) {
const profile = await fetch(`${BASE}/api/v1/tiktok/profile`, {
method: "POST", headers: H, body: JSON.stringify({ username })
}).then(r => r.json());
const user = profile.data.user;
const postsResp = await fetch(`${BASE}/api/v1/tiktok/user/posts`, {
method: "POST", headers: H,
body: JSON.stringify({ sec_user_id: user.sec_uid, count: 20 })
}).then(r => r.json());
const posts = postsResp.data.posts || [];
const engRates = posts.map(p => {
const s = p.statistics || {};
return user.follower_count > 0
? ((s.digg_count || 0) + (s.comment_count || 0) + (s.share_count || 0)) / user.follower_count * 100
: 0;
});
engRates.sort((a, b) => a - b);
const median = engRates[Math.floor(engRates.length / 2)] || 0;
console.log(`${username}: ${median.toFixed(2)}% engagement, ${posts.length} posts sampled`);
return { username, followers: user.follower_count, medianEngagement: median };
}
vetCreator("example_creator");Plateformes utilisées
TikTok
Découverte de vidéos tendance, créateurs et produits