Hướng dẫn lập trình

TikTok LIVE API thống kê

Theo dõi số người xem, doanh thu quà tặng, lượng chat và chỉ số tương tác theo thời gian thực cho mọi phiên TikTok LIVE. Xây dashboard, hệ thống cảnh báo và công cụ thống kê.

Có những dữ liệu thống kê nào?

TikTok không có API thống kê công khai cho phiên LIVE. TikTools API lấp khoảng trống này bằng cách gửi mọi sự kiện của phiên live theo thời gian thực qua WebSocket. Bạn có thể tính bất kỳ chỉ số nào từ các sự kiện thô này:

  • Số người xem - số người xem thời gian thực cập nhật mỗi vài giây
  • Doanh thu quà tặng - mỗi sự kiện quà tặng đều có giá trị kim cương (1 kim cương ≈ $0.005)
  • Lượng chat - số tin nhắn mỗi phút, số người chat khác nhau, tần suất từ khóa
  • Tỷ lệ tương tác - lượt thích, chia sẻ, follow theo từng khoảng thời gian
  • Đỉnh người xem - theo dõi mức cao nhất trong suốt phiên live
  • BXH quà tặng - top người ủng hộ xếp theo tổng kim cương đã tặng

Bắt đầu nhanh: Dữ liệu dashboard thời gian thực

Ví dụ này thu thập toàn bộ dữ liệu thống kê theo thời gian thực. Gắn vào bất kỳ framework frontend nào hoặc lưu vào cơ sở dữ liệu:

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)

Kết quả mong đợi

📊 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

Lưu vào cơ sở dữ liệu

Lưu sự kiện vào PostgreSQL, MongoDB hoặc bất kỳ cơ sở dữ liệu nào để phân tích lịch sử:

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 thuần (mọi ngôn ngữ)

Xây công cụ thống kê bằng Python, Go, Rust hoặc bất kỳ ngôn ngữ nào hỗ trợ 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())

Câu hỏi thường gặp

TikTok có API thống kê chính thức cho phiên LIVE không?

Không. TikTok có thống kê trong ứng dụng qua LIVE Center cho nhà sáng tạo, nhưng không có API công khai để lấy dữ liệu này bằng code. TikTools API gửi sự kiện thô theo thời gian thực để bạn tự xây công cụ thống kê.

Có theo dõi nhiều phiên live cùng lúc được không?

Có. Tạo nhiều client TikTokLive - mỗi phiên live một client. Gói Pro hỗ trợ tối đa 50 kết nối WebSocket đồng thời.

Số người xem chính xác đến mức nào?

Số người xem lấy trực tiếp từ dữ liệu nội bộ của TikTok và cập nhật mỗi vài giây. Khớp với con số hiển thị trong ứng dụng TikTok.