Un créateur peut sembler convenir à une campagne au vu de son profil et de quelques vidéos réussies, mais son fil récent raconte quelque chose de plus important : continue-t-il à parler régulièrement du thème recherché ? Une vérification manuelle devient vite obsolète, et un examen ponctuel peut facilement se limiter aux publications les plus visibles. Pour une agence ou une marque, mieux vaut constituer un échantillon reproductible de vidéos publiques, conserver l’état du fil à la date du contrôle et évaluer la pertinence thématique selon des règles identiques.

Voici une méthode pratique pour évaluer le fil public d’un créateur TikTok. Elle utilise l’API TikTok Scraper de jsonscraper et Python : elle récupère les publications via une route documentée, enregistre le JSON d’origine, normalise les champs disponibles et calcule la part des vidéos correspondant à un thème donné. Si vous le souhaitez, vous pouvez ensuite soumettre les descriptions à un classificateur de texte, dans une étape distincte et contrôlée.
Définissez d’abord ce qui est « pertinent »
Supposons qu’une équipe choisisse un créateur pour une campagne sur la préparation du café à la maison. Le nombre d’abonnés et la popularité de certaines vidéos peuvent renseigner sur la portée, mais ne répondent pas à eux seuls à la question de savoir dans quelle mesure le fil est lié au café. Pour un premier tri, il faut des indices de contenu : la description de la vidéo mentionne-t-elle la préparation du café, du matériel, des recettes ou des avis ? Combien de publications sur ce thème se trouvent dans la période d’observation définie ? Quelle part des vidéos collectées est pertinente ?
Avant la collecte, consignez les critères dans un court lexique : par exemple, « espresso », « moulin à café », « latte », « infusion ». Ajoutez les exclusions et les termes ambigus. « Café » peut apparaître dans une plaisanterie, une intégration publicitaire ou un contexte fortuit ; une correspondance automatique dans le texte constitue donc un premier étiquetage, et non une évaluation définitive du créateur. Distinguez au moins trois statuts : correspondance claire, correspondance possible et vidéo non pertinente.
L’échantillon doit également être défini à l’avance. Vous pouvez, par exemple, analyser les 20 dernières publications récupérées à chaque lancement hebdomadaire. Il s’agit d’une règle de suivi que vous fixez, et non d’une promesse de l’API de renvoyer exactement ce volume : la disponibilité et la composition des résultats dépendent de la réponse à la requête. Notez l’heure de collecte, le nombre d’éléments récupérés et les paramètres de la requête afin de comparer les instantanés sans mélanger des règles différentes.
Interroger le fil d’un créateur
Dans la documentation de jsonscraper, la route GET \/getUserFeed accepte le paramètre obligatoire query — le nom d’utilisateur ou l’URL du profil. Les paramètres facultatifs indiqués sont count, region, sort_type, with_pinned_posts et max_cursor. La clé API est transmise dans license_key au sein de la chaîne de requête ; conservez-la dans une variable d’environnement plutôt que dans le code source. Les détails des routes et des paramètres figurent dans la documentation officielle de l’API TikTok.
Dans la réponse, vérifiez d’abord le status externe, puis accédez à l’objet tiktok. Pour le fil d’un utilisateur, la liste des publications se trouve dans tiktok.aweme_list. Le schéma observé comprend l’identifiant de la vidéo, le texte de sa description, sa date de publication, l’auteur, l’URL et un objet de statistiques. Certains champs peuvent être absents : le traitement doit alors conserver des valeurs vides, plutôt que de les remplacer par des nombres inventés.
L’exemple minimal ci-dessous fonctionne avec Python 3.8+ et la bibliothèque requests. Stockez la clé dans JSONSCRAPER_TIKTOK_LICENSE_KEY. Le code effectue une requête, vérifie la réponse HTTP et le statut externe de l’API, enregistre le JSON d’origine et affiche les lignes normalisées.
import json
import os
from datetime import datetime, timezone
from pathlib import Path
import requests
API_KEY = os.environ["JSONSCRAPER_TIKTOK_LICENSE_KEY"]
PROFILE = "creator_username"
params = {
"license_key": API_KEY,
"query": PROFILE,
"count": 20,
"region": "US",
"sort_type": 0,
"with_pinned_posts": 0,
}
response = requests.get(
"https:\/\/tiktok.evelode.com\/getUserFeed",
params=params,
timeout=30,
)
response.raise_for_status()
payload = response.json()
if payload.get("status") != "ok":
raise RuntimeError("TikTok API returned a non-ok status")
tiktok = payload.get("tiktok") or {}
items = tiktok.get("aweme_list") or []
stamp = datetime.now(timezone.utc).strftime("%Y%m%dT%H%M%SZ")
Path("snapshots").mkdir(exist_ok=True)
Path(f"snapshots\/{PROFILE}_{stamp}.json").write_text(
json.dumps(payload, ensure_ascii=False, indent=2),
encoding="utf-8",
)
rows = []
for item in items:
stats = item.get("statistics") or {}
author = item.get("author") or {}
rows.append({
"aweme_id": item.get("aweme_id"),
"created_at": item.get("create_time"),
"description": item.get("desc") or "",
"share_url": item.get("share_url"),
"creator": author.get("unique_id") or author.get("nickname"),
"play_count": stats.get("play_count"),
"digg_count": stats.get("digg_count"),
"comment_count": stats.get("comment_count"),
"share_count": stats.get("share_count"),
})
print(json.dumps(rows, ensure_ascii=False, indent=2))
Pour cette route, la documentation indique que sort_type vaut 0 pour le fil récent et 1 pour le fil populaire. L’exemple choisit le mode des publications récentes et exclut les vidéos épinglées avec with_pinned_posts=0, afin qu’une ancienne publication épinglée n’entre pas dans l’échantillon des nouvelles publications. Si vous avez besoin d’un autre mode, enregistrez le paramètre dans les métadonnées de l’instantané et appliquez-le de la même manière à chaque lancement.
Traiter la réponse : du JSON à un tableau reproductible
Il est utile d’enregistrer la réponse d’origine avant toute transformation. Vous pourrez ainsi vérifier la normalisation, comprendre pourquoi une ligne est vide et adapter le traitement si certains champs facultatifs changent dans les réponses. Dans l’espace de stockage de travail, conservez à côté du JSON l’heure de collecte en UTC, le profil interrogé, les paramètres et la version de votre script. N’incluez pas la clé API dans une archive ou un journal.
Pour les lancements répétés, utilisez aweme_id comme identifiant de publication, s’il est présent. La déduplication à partir de cet ID évite de compter plusieurs fois une même vidéo lorsqu’elle est récupérée à nouveau. Conservez toutefois des instantanés distincts des statistiques : les vues et les réactions correspondent au moment de l’observation, et non à des caractéristiques immuables de la vidéo. Si un champ statistique est absent, laissez-le vide et excluez cet enregistrement du calcul de la métrique concernée.
Dans le schéma, la date de publication est désignée par create_time. Dans le tableau analytique, convertissez-la en date et conservez à la fois la valeur d’origine et l’heure normalisée en UTC. Avant tout calcul, vérifiez quelques enregistrements réels de la réponse obtenue afin de confirmer le type et les unités attendus. Cette vérification est particulièrement importante pour les graphiques temporels : une erreur de conversion peut décaler des publications d’un jour à l’autre et fausser la comparaison entre les semaines.
Vous pouvez créer un classificateur thématique élémentaire sans modèle : normalisez le texte, recherchez les expressions définies et signalez les correspondances. Pour obtenir un étiquetage plus utile, préparez un ensemble de descriptions vérifiées manuellement et des règles pour les cas limites. Comparez ensuite le filtre lexical à l’étiquetage humain : repérez les expressions qui produisent de fausses correspondances et mettez à jour le lexique. Vous disposerez ainsi d’une référence compréhensible pour évaluer l’utilisation ultérieure de l’IA.
import re
KEYWORDS = (
"кофе", "эспрессо", "кофемолка", "латте", "заваривание",
)
def normalize(text):
text = (text or "").casefold()
return re.sub(r"\s+", " ", text).strip()
def classify(description):
text = normalize(description)
matches = [word for word in KEYWORDS if word in text]
return {
"topic_match": bool(matches),
"matched_terms": matches,
}
for row in rows:
row.update(classify(row["description"]))
Un mot-clé dans une description peut constituer un indice utile, mais le classificateur devrait fournir une justification explicable — la liste des termes correspondants, et pas seulement une étiquette « oui/non ». Pour les modèles de langage, utilisez une consigne structurée : transmettez la description de la vidéo et des catégories prédéfinies, puis demandez une catégorie, une justification succincte et un niveau de confiance. Conservez le texte d’origine et la réponse du modèle séparément. Toute décision ayant une incidence sur le budget ou le choix d’un partenaire doit être vérifiée par une personne à partir des liens vers les publications.
Calculez des indicateurs dont le dénominateur est clair
Pour un rapport simple, vous pouvez utiliser la part des vidéos thématiques et la fréquence de publication. La part correspond au nombre de vidéos dont la pertinence thématique est confirmée, divisé par le nombre de vidéos qui ont pu être classées. Affichez toujours les deux nombres, par exemple : « 7 descriptions pertinentes sur 18 examinées ». Le résultat est ainsi plus facile à comprendre et il devient plus simple de repérer un pourcentage fondé sur un échantillon trop réduit.
Vous pouvez exprimer la fréquence de publication par le nombre de vidéos récupérées sur une période fixe, par exemple les 30 derniers jours. Définissez les limites de la période en fonction de l’heure de collecte et des dates de publication. Avec des instantanés hebdomadaires, conservez le résultat de chaque lancement, plutôt que de ne garder qu’une ligne récapitulative mise à jour : vous pourrez ainsi observer l’évolution des thèmes et de l’activité. Ne considérez pas le nombre d’éléments collectés comme une archive complète des publications du créateur : analysez l’échantillon réellement obtenu et indiquez clairement sa règle de constitution.
Les statistiques de vues, de mentions J’aime, de commentaires et de partages peuvent servir de contexte pour chaque vidéo. Comparez les valeurs absolues avec prudence : une publication plus ancienne a pu accumuler des réactions pendant plus longtemps. Pour comparer les vidéos d’un même créateur, notez l’heure de chaque collecte et suivez l’évolution d’une même vidéo entre les instantanés. Ne qualifiez pas l’écart entre deux instantanés de « vitesse de croissance » si l’intervalle et la disponibilité des mesures ne sont pas consignés.
Pour chaque profil, un enregistrement récapitulatif utile comprend la date de collecte, les paramètres choisis, le nombre de publications récupérées, le nombre de descriptions classées, le nombre de correspondances thématiques, une liste d’URL d’exemples et une brève note sur les cas ambigus. Ce tableau permet à un membre de l’équipe de vérifier la conclusion et à un autre analyste de reproduire la méthode sur le profil suivant.
Pagination et planification
Si l’échantillon nécessite une page suivante, la documentation du fil de profil utilise max_cursor, récupéré dans la réponse précédente. Transmettez-le sans le transformer : le curseur est une valeur opaque qu’il faut conserver puis renvoyer à l’API. Vérifiez également has_more dans la réponse si vous prévoyez de poursuivre la collecte. Limitez le nombre de pages ou le budget total de requêtes afin que la collecte se termine de manière prévisible.
cursor = None
all_items = []
max_pages = 3
for _ in range(max_pages):
page_params = dict(params)
if cursor is not None:
page_params["max_cursor"] = cursor
page_response = requests.get(
"https:\/\/tiktok.evelode.com\/getUserFeed",
params=page_params,
timeout=30,
)
page_response.raise_for_status()
page_payload = page_response.json()
if page_payload.get("status") != "ok":
raise RuntimeError("TikTok API returned a non-ok status")
page = page_payload.get("tiktok") or {}
all_items.extend(page.get("aweme_list") or [])
if not page.get("has_more"):
break
cursor = page.get("max_cursor")
if cursor is None:
break
Choisissez la fréquence de lancement en fonction de votre besoin : pour une première évaluation, un lancement manuel suffit ; pour une liste de créateurs, une planification hebdomadaire peut faire ressortir les changements sans interrogations constantes. Vous pouvez utiliser cron, une tâche CI ou un orchestrateur. Le processus est simple : récupérez les profils dans un tableau, effectuez les requêtes en limitant le parallélisme, enregistrez les instantanés, vérifiez le taux de réponses réussies et envoyez un récapitulatif dans un tableau de travail. Après une erreur temporaire, relancez la requête avec un nombre limité de tentatives et un délai d’attente ; consignez séparément les erreurs des requêtes authentifiées afin de vérifier la clé et la configuration.
Où l’IA est utile et où une vérification s’impose
L’IA peut aider à classer les descriptions contenant de l’argot, plusieurs langues ou des formulations qui ne reprennent pas exactement un mot-clé. Commencez par définir une liste fermée de catégories et demandez au modèle de s’appuyer uniquement sur le texte de la description. Mesurez ensuite la qualité sur un petit échantillon étiqueté manuellement : comparez les catégories du modèle aux décisions d’un réviseur, puis examinez séparément les erreurs et les cas ambigus. Dans le rapport, mieux vaut indiquer la part de correspondance entre les résultats du modèle et l’étiquetage manuel, ainsi que le nombre d’exemples examinés, qu’un score global difficile à interpréter.
Ne demandez pas au modèle de « choisir le meilleur créateur » sans critères. Décomposez plutôt le processus en indicateurs mesurables : part thématique, régularité, exemples de vidéos pertinentes et fourchette des réactions publiques. Le modèle peut résumer brièvement ces éléments et indiquer les liens justificatifs ; la décision finale revient à l’équipe, qui tient compte du format de la campagne, de son public et des accords conclus avec le créateur.
Si l’analyse porte sur des intégrations publicitaires, vérifiez séparément, à partir des publications elles-mêmes et des exigences applicables, que les relations du créateur avec la marque sont bien divulguées. Le guide de la Federal Trade Commission des États-Unis explique qu’un lien avec une marque doit être clairement indiqué à proximité de la recommandation ; une biographie de profil ou une partie de texte cachée peuvent ne pas suffire à informer visiblement le public. Consultez les recommandations de la FTC pour les créateurs sur les réseaux sociaux. Le suivi des données publiques aide à réunir des éléments en vue d’un contrôle, mais l’évaluation de la conformité nécessite de tenir compte du contexte de la publication et de la campagne concernées.
Résultat attendu
Une fois le pipeline configuré, l’équipe dispose d’instantanés datés du fil public, d’un tableau de publications avec leurs descriptions et les métriques disponibles, ainsi que d’un calcul reproductible de la part thématique. Elle peut s’en servir pour accélérer la présélection de profils à examiner, repérer les changements de thèmes et documenter les raisons de son évaluation. La méthode reste vérifiable : le JSON d’origine, les paramètres de requête, les règles de classification et les liens vers les vidéos permettent de retracer le cheminement des données jusqu’à la conclusion.
Pour un premier essai, lancez le script sur un profil, enregistrez la réponse brute et vérifiez manuellement plusieurs classifications. Définissez ensuite le lexique thématique, les règles d’échantillonnage et le format du rapport. Lorsque le résultat sera reproductible, ajoutez une planification et une file de profils. Consultez la documentation de l’API pour connaître les routes et les paramètres, ainsi que la page de l’API TikTok Scraper pour découvrir le produit et les options d’intégration disponibles.
Liste de contrôle pratique avant le lancement
- Consignez le thème de la campagne, le lexique des termes inclus et des exemples de cas limites.
- Définissez la fenêtre d’échantillonnage, la valeur de
count, le tri et le réglage des publications épinglées. - Conservez le JSON d’origine, la date de collecte et les paramètres séparément de la clé secrète.
- Utilisez
aweme_idpour dédupliquer si l’identifiant est présent. - Distinguez une valeur absente de zéro et ne faites pas de moyenne sans justification claire.
- Indiquez la taille de l’échantillon à côté de la part thématique et joignez des liens d’exemple.
- Vérifiez la classification par IA sur un échantillon annoté manuellement avant de l’utiliser pour prendre des décisions de campagne.
- Mettez l’évaluation à jour selon un calendrier et comparez des instantanés recueillis selon les mêmes règles.