Ποια δεδομένα analytics υπάρχουν;
Το TikTok δεν δίνει δημόσιο analytics API για LIVE streams. Το TikTools API καλύπτει αυτό το κενό, παραδίδοντας κάθε event του stream σε πραγματικό χρόνο μέσω WebSocket. Από αυτά τα raw events μπορείς να υπολογίσεις όποια μετρική θέλεις:
- Αριθμός θεατών - ο αριθμός θεατών ενημερώνεται σε πραγματικό χρόνο κάθε λίγα δευτερόλεπτα
- Έσοδα από δώρα - κάθε event δώρου περιέχει την αξία σε διαμάντια (1 διαμάντι ≈ 0,005 $)
- Όγκος chat - μηνύματα ανά λεπτό, μοναδικοί χρήστες στο chat, συχνότητα λέξεων-κλειδιών
- Ποσοστό engagement - likes, shares, follows ανά χρονικό διάστημα
- Ρεκόρ θεατών - παρακολούθησε τα υψηλότερα σημεία σε όλη τη session
- Κατάταξη δώρων - οι top υποστηρικτές ταξινομημένοι με βάση τα συνολικά διαμάντια που ξόδεψαν
Γρήγορη εκκίνηση: δεδομένα dashboard σε πραγματικό χρόνο
Αυτό το παράδειγμα μαζεύει όλα τα δεδομένα analytics σε πραγματικό χρόνο. Σύνδεσέ το με όποιο frontend framework θέλεις ή αποθήκευσέ το σε βάση δεδομένων:
import { TikTokLive } from '@tiktool/live'
const client = new TikTokLive({
uniqueId: 'target_username',
apiKey: process.env.TIKTOOL_API_KEY
})
// ── Analytics State ──
const stats = {
viewerCount: 0,
peakViewers: 0,
totalMessages: 0,
totalGifts: 0,
totalDiamonds: 0,
totalLikes: 0,
totalFollows: 0,
totalShares: 0,
uniqueChatters: new Set(),
giftLeaderboard: new Map(),
startTime: Date.now()
}
// Viewer count tracking
client.on('viewer_count', (event) => {
stats.viewerCount = event.viewerCount
if (event.viewerCount > stats.peakViewers) {
stats.peakViewers = event.viewerCount
}
})
// Chat analytics
client.on('chat', (event) => {
stats.totalMessages++
stats.uniqueChatters.add(event.userId)
})
// Gift revenue tracking
client.on('gift', (event) => {
stats.totalGifts++
stats.totalDiamonds += event.diamondCount
const current = stats.giftLeaderboard.get(event.nickname) || 0
stats.giftLeaderboard.set(event.nickname, current + event.diamondCount)
})
// Engagement tracking
client.on('like', (event) => {
stats.totalLikes = event.totalLikeCount
})
client.on('follow', () => { stats.totalFollows++ })
client.on('share', () => { stats.totalShares++ })
await client.connect()
console.log('📊 Analytics tracking started!')
// Print summary every 60 seconds
setInterval(() => {
const minutes = (Date.now() - stats.startTime) / 60000
const revenue = (stats.totalDiamonds * 0.005).toFixed(2)
console.log('\n── Stream Analytics ──')
console.log(`Viewers: ${stats.viewerCount} (peak: ${stats.peakViewers})`)
console.log(`Messages: ${stats.totalMessages} (${(stats.totalMessages / minutes).toFixed(1)}/min)`)
console.log(`Unique chatters: ${stats.uniqueChatters.size}`)
console.log(`Gifts: ${stats.totalGifts} (${stats.totalDiamonds} 💎 ≈ $${revenue})`)
console.log(`Likes: ${stats.totalLikes} | Follows: ${stats.totalFollows} | Shares: ${stats.totalShares}`)
}, 60000)Αναμενόμενη έξοδος
📊 Analytics tracking started!
── Stream Analytics ──
Viewers: 2,347 (peak: 3,891)
Messages: 487 (81.2/min)
Unique chatters: 203
Gifts: 34 (12,450 💎 ≈ $62.25)
Likes: 45,230 | Follows: 89 | Shares: 23Αποθήκευση σε βάση δεδομένων
Αποθήκευσε τα events σε PostgreSQL, MongoDB ή οποιαδήποτε βάση δεδομένων για ιστορική ανάλυση:
import { TikTokLive } from '@tiktool/live'
// Example: save to PostgreSQL with Prisma
import { PrismaClient } from '@prisma/client'
const prisma = new PrismaClient()
const client = new TikTokLive({
uniqueId: 'target_username',
apiKey: process.env.TIKTOOL_API_KEY
})
client.on('gift', async (event) => {
await prisma.giftEvent.create({
data: {
streamer: 'target_username',
senderNickname: event.nickname,
senderUserId: event.userId,
giftName: event.giftName,
diamondCount: event.diamondCount,
repeatCount: event.repeatCount,
timestamp: new Date()
}
})
})
client.on('viewer_count', async (event) => {
await prisma.viewerSnapshot.create({
data: {
streamer: 'target_username',
viewerCount: event.viewerCount,
timestamp: new Date()
}
})
})
await client.connect()
console.log('💾 Saving events to database...')Σκέτο WebSocket (κάθε γλώσσα)
Φτιάξε analytics σε Python, Go, Rust ή οποιαδήποτε γλώσσα με υποστήριξη WebSocket:
# Python example using websockets library
import asyncio, json, websockets
async def track_analytics():
url = "wss://api.tik.tools?uniqueId=target_username&apiKey=YOUR_API_KEY"
async with websockets.connect(url) as ws:
total_diamonds = 0
peak_viewers = 0
async for raw in ws:
msg = json.loads(raw)
if msg["event"] == "viewer_count":
viewers = msg["data"]["viewerCount"]
peak_viewers = max(peak_viewers, viewers)
print(f"Viewers: {viewers} (peak: {peak_viewers})")
elif msg["event"] == "gift":
diamonds = msg["data"]["diamondCount"]
total_diamonds += diamonds
revenue = total_diamonds * 0.005
print(f"Gift revenue: {total_diamonds} 💎 (${revenue:.2f})")
asyncio.run(track_analytics())FAQ
Έχει το TikTok επίσημο analytics API για LIVE streams;
Όχι. Το TikTok δίνει analytics μέσα στην εφαρμογή στους creators μέσω του LIVE Center, αλλά δεν υπάρχει δημόσιο API για προγραμματιστική πρόσβαση σε αυτά τα δεδομένα. Το TikTools API παραδίδει raw events σε πραγματικό χρόνο, για να φτιάξεις τα δικά σου analytics.
Μπορώ να παρακολουθώ πολλά streams ταυτόχρονα;
Ναι. Δημιούργησε πολλούς clients TikTokLive - έναν ανά stream. Το πακέτο Pro υποστηρίζει έως 50 ταυτόχρονες συνδέσεις WebSocket.
Πόσο ακριβής είναι ο αριθμός θεατών;
Ο αριθμός θεατών έρχεται απευθείας από τα εσωτερικά δεδομένα του TikTok και ενημερώνεται κάθε λίγα δευτερόλεπτα. Είναι ίδιος με αυτόν που δείχνει η εφαρμογή του TikTok.