Ghid pentru dezvoltatori

TikTok LIVE API de analiză

Urmărește în timp real numărul de spectatori, veniturile din cadouri, volumul chatului și indicatorii de implicare pentru orice LIVE TikTok. Construiește panouri, sisteme de alertă și instrumente de analiză.

Ce date de analiză sunt disponibile?

TikTok nu oferă un API public de analiză pentru LIVE-uri. API-ul TikTools acoperă acest gol, livrând în timp real fiecare eveniment din LIVE prin WebSocket. Poți calcula orice indicator din aceste evenimente brute:

  • Număr de spectatori - numărul de spectatori se actualizează în timp real la câteva secunde
  • Venituri din cadouri - fiecare eveniment de cadou include valoarea în Diamante (1 Diamant ≈ 0,005 $)
  • Volum de chat - mesaje pe minut, participanți unici la chat, frecvența cuvintelor-cheie
  • Rată de implicare - like-uri, distribuiri, urmăriri pe interval de timp
  • Vârf de audiență - urmărește maximele atinse pe parcursul sesiunii
  • Clasament cadouri - gifterii de top, ordonați după totalul de Diamante cheltuite

Start rapid: date pentru un panou în timp real

Acest exemplu colectează toate datele de analiză în timp real. Conectează-l la orice framework frontend sau salvează-le într-o bază de date:

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)

Rezultat așteptat

📊 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

Salvează într-o bază de date

Stochează evenimentele în PostgreSQL, MongoDB sau orice bază de date pentru analize istorice:

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 direct (orice limbaj)

Construiește analize în Python, Go, Rust sau orice limbaj cu suport 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())

Întrebări frecvente

Are TikTok un API oficial de analiză pentru LIVE-uri?

Nu. TikTok oferă creatorilor analize în aplicație prin LIVE Center, dar nu există un API public pentru accesarea programatică a acestor date. API-ul TikTools livrează în timp real evenimente brute pe care le poți folosi pentru propriile analize.

Pot urmări mai multe LIVE-uri simultan?

Da. Creează mai mulți clienți TikTokLive - câte unul pentru fiecare LIVE. Planul Pro suportă până la 50 de conexiuni WebSocket simultane.

Cât de precis este numărul de spectatori?

Numărul de spectatori provine direct din datele interne TikTok și se actualizează la câteva secunde. Corespunde cu numărul afișat în aplicația TikTok.