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: 23Lư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.