ما بيانات التحليلات المتاحة؟
لا يوفر TikTok واجهة API عامة لتحليلات بث LIVE. تسد 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 واجهة API رسمية لتحليلات بث LIVE؟
لا. يوفر TikTok تحليلات داخل التطبيق عبر مركز LIVE لصناع المحتوى، لكن لا توجد واجهة API عامة للوصول إلى هذه البيانات برمجيًا. توصل TikTools API الأحداث الخام لحظيًا لتستخدمها في بناء تحليلاتك الخاصة.
هل يمكنني تتبّع عدة بثوث في الوقت نفسه؟
نعم. أنشئ عدة عملاء TikTokLive، عميلًا لكل بث. باقة Pro تدعم حتى 50 اتصال WebSocket متزامنًا.
ما مدى دقة عدد المشاهدين؟
عدد المشاهدين يأتي مباشرة من بيانات TikTok الداخلية ويُحدَّث كل بضع ثوانٍ. وهو مطابق للعدد الظاهر في تطبيق TikTok.