Publier du contenu TikTok sans suivre les performances vous empêche d'identifier ce qui fonctionne. Ce tutoriel construit un outil de suivi des performances de contenu qui récupère vos statistiques vidéo via l'API TikTok de Scavio, enregistre des instantanés dans le temps et calcule la vélocité d'engagement (à quelle vitesse une vidéo gagne des vues et des likes après publication). Utilisez ces données pour identifier vos principaux schémas de contenu et miser davantage sur ce qui résonne. Chaque appel API coûte 0,005 $ en utilisant l'authentification par jeton Bearer.
Prérequis
- Python 3.9+ installé
- bibliothèque requests installée
- Une clé API Scavio provenant de scavio.dev
- Un nom d'utilisateur de compte TikTok à suivre
Parcours
Étape 1: Extrayez votre historique de vidéos TikTok
Récupérez vos publications récentes en utilisant le point de terminaison des publications utilisateur. Cela renvoie les métadonnées de la vidéo et les statistiques d'engagement actuelles.
import os, requests, json, time
from datetime import datetime
SCAVIO_KEY = os.environ['SCAVIO_API_KEY']
TT_URL = 'https://api.scavio.dev/api/v1/tiktok'
TT_H = {'Authorization': f'Bearer {SCAVIO_KEY}', 'Content-Type': 'application/json'}
def get_user_videos(username: str) -> list:
# Get profile first to get sec_user_id
resp = requests.post(f'{TT_URL}/profile', headers=TT_H,
json={'username': username})
sec_uid = resp.json().get('data', {}).get('user', {}).get('secUid', '')
time.sleep(0.3)
# Get posts
resp = requests.post(f'{TT_URL}/user/posts', headers=TT_H,
json={'sec_user_id': sec_uid, 'count': 30})
videos = resp.json().get('data', {}).get('videos', [])
return [{
'id': v.get('id'),
'desc': v.get('desc', '')[:80],
'created': v.get('createTime', 0),
'views': v.get('stats', {}).get('playCount', 0),
'likes': v.get('stats', {}).get('diggCount', 0),
'comments': v.get('stats', {}).get('commentCount', 0),
'shares': v.get('stats', {}).get('shareCount', 0),
'timestamp': datetime.now().isoformat(),
} for v in videos]
videos = get_user_videos('scikitnews')
print(f'Fetched {len(videos)} videos')
for v in videos[:5]:
print(f' {v["views"]:>10,} views | {v["likes"]:>8,} likes | {v["desc"][:40]}')Étape 2: Stockez des instantanés pour un suivi chronologique
Enregistrez les statistiques vidéo dans un fichier JSON avec des horodatages. Chaque exécution ajoute un nouvel instantané afin que vous puissiez suivre les changements au fil du temps.
TRACKING_FILE = 'tiktok_performance.json'
def load_history() -> dict:
if os.path.exists(TRACKING_FILE):
with open(TRACKING_FILE) as f:
return json.load(f)
return {'snapshots': []}
def save_snapshot(videos: list):
history = load_history()
history['snapshots'].append({
'timestamp': datetime.now().isoformat(),
'videos': videos,
})
with open(TRACKING_FILE, 'w') as f:
json.dump(history, f, indent=2)
print(f'Snapshot saved: {len(videos)} videos, {len(history["snapshots"])} total snapshots')
save_snapshot(videos)Étape 3: Calculez la vélocité d'engagement
Comparez le dernier instantané avec le précédent pour calculer la vitesse à laquelle chaque vidéo gagne des vues et des likes.
def calculate_velocity(history: dict) -> list:
snapshots = history.get('snapshots', [])
if len(snapshots) < 2:
print('Need at least 2 snapshots to calculate velocity')
return []
current = {v['id']: v for v in snapshots[-1]['videos']}
previous = {v['id']: v for v in snapshots[-2]['videos']}
velocities = []
for vid_id, curr in current.items():
prev = previous.get(vid_id)
if not prev:
continue
view_delta = curr['views'] - prev['views']
like_delta = curr['likes'] - prev['likes']
velocities.append({
'id': vid_id,
'desc': curr['desc'],
'view_velocity': view_delta,
'like_velocity': like_delta,
'total_views': curr['views'],
'engagement_rate': curr['likes'] / curr['views'] if curr['views'] > 0 else 0,
})
velocities.sort(key=lambda x: x['view_velocity'], reverse=True)
print('Content Velocity Report')
print('-' * 60)
for v in velocities[:10]:
print(f' +{v["view_velocity"]:>8,} views | +{v["like_velocity"]:>6,} likes | {v["desc"][:35]}')
return velocities
history = load_history()
calculate_velocity(history)Exemple Python
import os, requests, json, time
from datetime import datetime
SCAVIO_KEY = os.environ['SCAVIO_API_KEY']
TT_H = {'Authorization': f'Bearer {SCAVIO_KEY}', 'Content-Type': 'application/json'}
def track_content(username):
resp = requests.post('https://api.scavio.dev/api/v1/tiktok/profile', headers=TT_H,
json={'username': username})
uid = resp.json().get('data', {}).get('user', {}).get('secUid', '')
time.sleep(0.3)
resp2 = requests.post('https://api.scavio.dev/api/v1/tiktok/user/posts', headers=TT_H,
json={'sec_user_id': uid, 'count': 20})
videos = resp2.json().get('data', {}).get('videos', [])
print(f'Tracking {len(videos)} videos for @{username}')
for v in videos[:5]:
s = v.get('stats', {})
eng = (s.get('diggCount', 0) + s.get('commentCount', 0)) / max(s.get('playCount', 1), 1)
print(f' {s.get("playCount", 0):>10,} views | {eng:.1%} eng | {v.get("desc", "")[:35]}')
track_content('scikitnews')Exemple JavaScript
const SCAVIO_KEY = process.env.SCAVIO_API_KEY;
const TT_H = { Authorization: `Bearer ${SCAVIO_KEY}`, 'Content-Type': 'application/json' };
async function trackContent(username) {
const profile = await fetch('https://api.scavio.dev/api/v1/tiktok/profile', {
method: 'POST', headers: TT_H, body: JSON.stringify({ username })
}).then(r => r.json());
const uid = profile.data?.user?.secUid || '';
const posts = await fetch('https://api.scavio.dev/api/v1/tiktok/user/posts', {
method: 'POST', headers: TT_H, body: JSON.stringify({ sec_user_id: uid, count: 20 })
}).then(r => r.json());
const videos = posts.data?.videos || [];
console.log(`Tracking ${videos.length} videos for @${username}`);
videos.slice(0, 5).forEach(v => {
const s = v.stats || {};
const eng = ((s.diggCount || 0) + (s.commentCount || 0)) / Math.max(s.playCount || 1, 1);
console.log(` ${(s.playCount || 0).toLocaleString()} views | ${(eng * 100).toFixed(1)}% eng`);
});
}
trackContent('scikitnews');Sortie attendue
Fetched 30 videos
1,234,567 views | 145,200 likes | How to use search APIs in your app
892,345 views | 98,400 likes | Building an AI agent with web search
654,321 views | 72,100 likes | TikTok API tutorial for developers
Snapshot saved: 30 videos, 2 total snapshots
Content Velocity Report
------------------------------------------------------------
+ 125,000 views | + 14,200 likes | How to use search APIs in your
+ 89,000 views | + 9,800 likes | Building an AI agent with web
+ 45,000 views | + 5,100 likes | TikTok API tutorial for develop