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

TikTok LIVE API cho Node.js

Xây trợ lý, overlay và dashboard TikTok LIVE bằng JavaScript. npm install, kết nối trong 3 dòng, nhận sự kiện thời gian thực. SDK miễn phí, mã nguồn mở, giấy phép MIT.

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/live

Hoặ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/live

Bắ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.mjs

Chỉ 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 stream

Hỗ 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.