标签开播脚本怎么写?手把手教你用Python自动打标开播

做直播的朋友常遇到一个问题:每次开播前都要手动点开平台后台,填标题、选标签、上传封面、设置简介……一通操作下来,人还没开播,手先累了。其实,很多主流直播平台(比如斗鱼、B站、抖音直播开放平台)都支持通过 API 批量操作,其中「标签开播」就是最实用的功能之一——用脚本提前写好标签逻辑,一键触发开播,连带打上精准分类标签,省时又专业。

为什么非得写标签开播脚本?

举个例子:你固定每周三晚8点直播《英雄联盟》高分段复盘,但每次开播都手动输「LOL、电竞、教学、高端局」这四个标签,容易漏掉、顺序错乱,甚至某次误点成「单机、怀旧、RPG」,结果流量全跑偏。而脚本可以按规则自动匹配:检测到标题含「LOL」「英雄联盟」就打电竞类标签;含「教学」「复盘」「技巧」就加内容类标签;时间在周三20:00–22:00就追加「周更固定」标签——逻辑清晰,永不手抖。

基础脚本长啥样?以B站直播为例

B站开放平台提供 /xlive/web-room/v1/index/startLive 接口,需携带登录态 cookie 和 CSRF token。下面是一个简化但可运行的 Python 示例(使用 requests 库):

import requests
import json

# 替换为你自己的 cookie 和 bili_jct(CSRF token)
headers = {
    "Cookie": "SESSDATA=xxx; bili_jct=yyy;",
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36"
}

data = {
    "platform": "pc",
    "area_v2": "27",  # 标签ID,27=英雄联盟(查B站API文档可得)
    "room_id": "1234567",
    "title": "【周三复盘】S14钻石局闪现惩戒教学!",
    "cover": "https://i0.hdslb.com/xxx.jpg",
    "tags": "LOL,电竞,教学,高端局,复盘"  # 这里就是你要打的标签
}

resp = requests.post(
    "https://api.live.bilibili.com/xlive/web-room/v1/index/startLive",
    headers=headers,
    data=data
)
print(resp.json())

标签ID不能瞎填,得查准

像B站、斗鱼这类平台,标签不是随便输文字就行,必须用平台规定的数字 ID。比如B站「王者荣耀」是 25,「原神」是 202,「知识区-编程」是 2010。这些ID藏在平台前端接口里——打开直播间发布页,用浏览器开发者工具(F12)切到 Network,筛选 XHR,新建直播时抓包 area_v2 相关请求,就能看到完整分类树。别复制别人博客里过时的ID,每年平台都会调整。

进阶一点:让脚本自己“看懂”标题

不想每次改脚本?可以加个简单关键词匹配逻辑:

def get_tags_by_title(title):
    tags = []
    title = title.lower()
    if "lol" in title or "英雄联盟" in title:
        tags.extend(["LOL", "电竞"])
    if "教学" in title or "教程" in title or "怎么玩" in title:
        tags.append("教学")
    if "复盘" in title or "回放" in title:
        tags.append("复盘")
    if "s14" in title:
        tags.append("S14")
    return ",".join(list(set(tags)))  # 去重

# 使用
my_title = "【S14】英雄联盟教学:闪现惩戒秒杀技巧!"
print(get_tags_by_title(my_title))  # 输出:LOL,电竞,教学,S14

小提醒:别踩坑

脚本跑不通?先确认三件事:
① cookie 是否过期(建议每24小时重新登录复制一次);
② 请求头里有没有漏掉 X-CSRFTokenbili_jct
③ 标签字符串里别带空格,逗号必须是英文半角,比如 "LOL,教学,复盘" ✅,"LOL,教学,复盘" ❌。