Vì sao chọn Node.js?
Node.js là runtime phổ biến nhất cho các tích hợp TikTok LIVE. SDK chính thức @tiktool/live được viết bằng TypeScript, phát hành trên npm và có sẵn đầy đủ định nghĩa kiểu. Bạn có:
- An toàn kiểu - định nghĩa TypeScript đầy đủ cho mọi sự kiện và hàm
- Tự kết nối lại - SDK tự xử lý khi mất kết nối
- Hướng sự kiện - mô hình
.on('event', handler)quen thuộc - Chạy ở mọi nơi - Node.js 18+, Bun, Deno
Cài SDK
npm install @tiktool/liveHoặc dùng trình quản lý package khác:
# Yarn
yarn add @tiktool/live
# pnpm
pnpm add @tiktool/live
# Bun
bun add @tiktool/liveBắt đầu nhanh: 3 dòng là có dữ liệu live
Tạo app.mjs và dán vào:
import { TikTokLive } from '@tiktool/live'
const client = new TikTokLive({
uniqueId: 'tv_asahi_news', // TikTok username (without @)
apiKey: process.env.TIKTOOL_API_KEY
})
client.on('chat', (event) => {
console.log(`${event.nickname}: ${event.comment}`)
})
await client.connect()Chạy:
TIKTOOL_API_KEY=your_api_key node app.mjsChỉ vài giây sau bạn sẽ thấy tin nhắn chat đổ về terminal.
Mọi sự kiện có sẵn
SDK phát sự kiện có cấu trúc cho mọi tương tác trên phiên live:
import { TikTokLive } from '@tiktool/live'
const client = new TikTokLive({
uniqueId: 'target_username',
apiKey: process.env.TIKTOOL_API_KEY
})
// Chat messages
client.on('chat', (event) => {
console.log(`[CHAT] ${event.nickname}: ${event.comment}`)
})
// Virtual gifts (Rose, Universe, etc.)
client.on('gift', (event) => {
console.log(`[GIFT] ${event.nickname} sent ${event.giftName} (${event.diamondCount} 💎)`)
})
// New followers
client.on('follow', (event) => {
console.log(`[FOLLOW] ${event.nickname} just followed!`)
})
// Likes
client.on('like', (event) => {
console.log(`[LIKE] ${event.nickname} liked (total: ${event.totalLikeCount})`)
})
// Viewer count changes
client.on('viewer_count', (event) => {
console.log(`[VIEWERS] ${event.viewerCount} watching`)
})
// Member joins (someone enters the stream)
client.on('member', (event) => {
console.log(`[JOIN] ${event.nickname} joined the stream`)
})
// Share events
client.on('share', (event) => {
console.log(`[SHARE] ${event.nickname} shared the stream`)
})
await client.connect()
console.log('✅ Connected and listening!')Kết quả mong đợi
✅ Connected and listening!
[VIEWERS] 3,412 watching
[CHAT] viewer_1: Hello everyone! 👋
[FOLLOW] new_fan just followed!
[GIFT] whale_user sent Universe (34,000 💎)
[LIKE] cool_viewer liked (total: 12,847)
[CHAT] fan_123: Love this stream!
[JOIN] curious_viewer joined the stream
[SHARE] supporter_1 shared the streamHỗ trợ TypeScript
SDK được viết bằng TypeScript. Kiểu được kèm sẵn tự động - không cần package @types:
import { TikTokLive } from '@tiktool/live'
import type { ChatEvent, GiftEvent } from '@tiktool/live'
const client = new TikTokLive({
uniqueId: 'target_username',
apiKey: process.env.TIKTOOL_API_KEY
})
client.on('chat', (event: ChatEvent) => {
// event.comment, event.nickname, event.userId - all typed
console.log(event.nickname, event.comment)
})
client.on('gift', (event: GiftEvent) => {
// event.giftName, event.diamondCount, event.repeatCount - all typed
if (event.diamondCount >= 100) {
console.log(`Big gift from ${event.nickname}!`)
}
})
await client.connect()WebSocket thuần (không SDK)
Muốn dùng thẳng WebSocket thuần? Chạy với mọi ngôn ngữ hoặc framework:
import WebSocket from 'ws' // npm install ws
const ws = new WebSocket(
'wss://api.tik.tools?uniqueId=tv_asahi_news&apiKey=YOUR_API_KEY'
)
ws.on('message', (raw) => {
const msg = JSON.parse(raw.toString())
switch (msg.event) {
case 'chat':
console.log(`${msg.data.user.nickname}: ${msg.data.comment}`)
break
case 'gift':
console.log(`Gift: ${msg.data.giftName} (${msg.data.diamondCount} 💎)`)
break
case 'viewer_count':
console.log(`Viewers: ${msg.data.viewerCount}`)
break
}
})
ws.on('open', () => console.log('Connected!'))Câu hỏi thường gặp
TikTok có API Node.js chính thức không?
Không. TikTok không có API công khai cho dữ liệu livestream LIVE. TikTools API là dịch vụ bên thứ ba được quản lý, cho quyền truy cập ổn định theo thời gian thực tới chat, quà tặng, người xem và các sự kiện LIVE khác. Package npm @tiktool/live là SDK chính thức cho API này.
Có miễn phí không?
Có. Gói Sandbox cho bạn 5.000 request/ngày và 3 kết nối WebSocket đồng thời - miễn phí, chỉ để đánh giá, không cần thẻ tín dụng. Đăng ký tại đây.
Có dùng được với Express, Fastify hay Next.js không?
Có. SDK chạy trong mọi môi trường Node.js. Dùng trong route handler của Express, plugin Fastify, API route của Next.js hoặc script độc lập.
Có chạy với Bun và Deno không?
Có. SDK tương thích với Bun và Deno. Cài qua bun add @tiktool/live hoặc import từ npm trong Deno.