開發者指南

TikTok LIVE API Node.js 版

用 JavaScript 打造 TikTok LIVE 助手、疊加層和儀表板。npm install、3 行就連上、即時接收事件。免費 SDK、開源、MIT 授權。

為什麼選 Node.js?

Node.js 是 TikTok LIVE 整合最熱門的執行環境。官方 @tiktool/live SDK 以 TypeScript 撰寫、發布在 npm 上,開箱即附完整型別定義。你會得到:

  • 型別安全:每個事件和方法都有完整的 TypeScript 定義
  • 自動重新連線:SDK 會自動處理斷線
  • 事件驅動:熟悉的 .on('event', handler) 模式
  • 到處都能跑:Node.js 18+、Bun、Deno

安裝 SDK

npm install @tiktool/live

或用其他套件管理工具:

# Yarn
yarn add @tiktool/live

# pnpm
pnpm add @tiktool/live

# Bun
bun add @tiktool/live

快速開始:3 行取得即時資料

建立 app.mjs 並貼上:

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

執行:

TIKTOOL_API_KEY=your_api_key node app.mjs

幾秒內就會看到聊天訊息在終端機裡跑出來。

所有可用事件

SDK 會針對直播中的每個互動發出結構化事件:

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!')

預期輸出

✅ 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

TypeScript 支援

SDK 以 TypeScript 撰寫,型別會自動包含,不需要 @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(不用 SDK)

想直接用原生 WebSocket?任何語言或框架都能用:

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!'))

常見問題

TikTok 有官方的 Node.js API 嗎?

沒有。TikTok 沒有提供 LIVE 直播資料的公開 API。TikTools API 是第三方代管服務,穩定即時地提供聊天、禮物、觀眾和其他 LIVE 事件。@tiktool/live npm 套件就是這個 API 的官方 SDK。

免費嗎?

免費。Sandbox 方案提供每天 5,000 次請求和 3 個同時 WebSocket 連線,免費、僅供評估,不需要信用卡。在這裡註冊。

可以搭配 Express、Fastify 或 Next.js 使用嗎?

可以。SDK 在任何 Node.js 環境都能用。可以用在 Express 路由處理、Fastify 外掛、Next.js API 路由或獨立腳本。

支援 Bun 和 Deno 嗎?

支援。SDK 相容 Bun 和 Deno。用 bun add @tiktool/live 安裝,或在 Deno 裡從 npm 匯入。