開發者指南

TikTok LIVE 數據分析 API

即時追蹤任何 TikTok LIVE 直播的觀看人數、禮物收益、聊天量和互動指標。打造儀表板、警示系統和數據分析工具。

有哪些數據可以分析?

TikTok 沒有提供 LIVE 直播的公開數據分析 API。TikTools API 補上這個缺口,透過 WebSocket 即時傳送每個直播事件。你可以從這些原始事件計算任何指標:

  • 觀看人數 - 每隔幾秒更新的即時觀看人數
  • 禮物收益 - 每個禮物事件都包含鑽石價值(1 鑽石 ≈ $0.005)
  • 聊天量 - 每分鐘訊息數、不重複留言人數、關鍵字頻率
  • 互動率 - 每個時段的按讚、分享、追蹤數
  • 觀看高峰 - 追蹤整場直播的最高紀錄
  • 送禮排行榜 - 依鑽石總消費排名的頭號支持者

快速開始:即時儀表板資料

這個範例會即時收集所有數據分析資料。可以接到任何前端框架,或存進資料庫:

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

存進資料庫

把事件存進 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(任何語言)

用 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())

常見問題

TikTok 有官方的 LIVE 直播數據分析 API 嗎?

沒有。TikTok 透過 LIVE Center 在 App 內提供直播主數據分析,但沒有公開 API 能以程式存取這些資料。TikTools API 即時傳送原始事件,讓你打造自己的數據分析。

可以同時追蹤多場直播嗎?

可以。建立多個 TikTokLive 用戶端,每場直播一個。Pro 方案最多支援 50 個同時 WebSocket 連線。

觀看人數有多準確?

觀看人數直接來自 TikTok 的內部資料,每隔幾秒更新一次,和 TikTok App 裡顯示的數字一致。