Οδηγός για developers

TikTok LIVE Analytics API

Παρακολούθησε αριθμό θεατών, έσοδα από δώρα, όγκο chat και μετρικές engagement σε πραγματικό χρόνο για οποιοδήποτε TikTok LIVE stream. Φτιάξε dashboards, συστήματα ειδοποιήσεων και εργαλεία analytics.

Ποια δεδομένα 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.