如果消费者在 TikTok 上讨论您的产品,按品牌名称搜索就能为团队提供素材,帮助整理反复出现的问题。实际成果是一份 CSV,包含视频描述、作者、链接和可用的互动指标。您可以将文件交给客服人员,也可以将其用作主题分类的输入数据。

以“如何使用 Acme 咖啡机”这个问题为例。下面的脚本会向 TikTok 搜索发起一次请求,谨慎地从两种有文档说明的响应结构中提取视频,并保存搜索结果。然后,团队可以人工检查描述、合并相近的表述,并将其转化为常见问题主题或商品详情页提示。
为什么要把搜索结果整理成表格
手动浏览搜索结果不便于重复核查:您得重新查找结果,而笔记也常常留在浏览器或聊天记录中。保存下来的表格可以作为统一的工作清单:每条记录都包含视频 ID、链接、描述、作者和可用指标。您可以将后续运行设为定时任务;JSON 存档则有助于了解 API 在某次运行中具体返回了什么。
需要明确这种方法的局限:搜索返回的是与查询匹配的结果,并不保证涵盖所有提及。因此,这份表格适合用于发现案例和观察反复出现的问题;若要判断频率,最好结合多次运行和人工核查。
搜索会返回什么
在 TikTok Scraper API 文档中,/searchVideo 路由要求提供 keyword 参数。文档还列出了 count、cursor、date_posted、sort_by 和 region 等受支持参数。对于这个示例,只需提供关键词和结果数量。
响应包含外层状态和 tiktok 对象。在已核对的结构中,视频可能位于 aweme_list,也可能位于 search_item_list 字段中各项的 aweme_info 内。代码兼容这两种格式,只提取实际存在的字段。根据具体结果,可获取视频 ID、描述、链接、作者名称和 ID、发布时间,以及播放、点赞、评论和分享次数。
最简 Python 收集脚本
安装 requests 库,并将密钥设置在 JSONSCRAPER_TIKTOK_LICENSE_KEY 环境变量中。代码兼容 Python 3.8 及更高版本,会将原始响应保存为 JSON,并将规范化后的记录保存为 CSV。密钥会随请求发送,但不会输出到屏幕上。
import csv
import json
import os
from datetime import datetime, timezone
from pathlib import Path
import requests
API_KEY = os.environ["JSONSCRAPER_TIKTOK_LICENSE_KEY"]
KEYWORD = "Acme 咖啡机"
response = requests.get(
"https://tiktok.evelode.com/searchVideo",
params={
"license_key": API_KEY,
"keyword": KEYWORD,
"count": 30,
"region": "US",
},
timeout=60,
)
response.raise_for_status()
payload = response.json()
if payload.get("status") != "ok":
raise RuntimeError("TikTok API 返回了意外的外部状态")
tiktok = payload.get("tiktok") or {}
items = list(tiktok.get("aweme_list") or [])
for result in tiktok.get("search_item_list") or []:
video = result.get("aweme_info")
if video:
items.append(video)
# 去除重复项,并保留首次出现的顺序。
unique = {}
for item in items:
video_id = item.get("aweme_id")
if video_id:
unique.setdefault(video_id, item)
stamp = datetime.now(timezone.utc).strftime("%Y%m%dT%H%M%SZ")
Path("data").mkdir(exist_ok=True)
Path(f"data/raw-{stamp}.json").write_text(
json.dumps(payload, ensure_ascii=False, indent=2), encoding="utf-8"
)
columns = [
"video_id", "description", "share_url", "author", "author_id",
"created_at", "views", "likes", "comments", "collected_at"
]
with open("data/videos.csv", "w", newline="", encoding="utf-8") as file:
writer = csv.DictWriter(file, fieldnames=columns)
writer.writeheader()
for item in unique.values():
author = item.get("author") or {}
stats = item.get("statistics") or {}
created = item.get("create_time")
writer.writerow({
"video_id": item.get("aweme_id"),
"description": item.get("desc"),
"share_url": item.get("share_url"),
"author": author.get("nickname"),
"author_id": author.get("uid"),
"created_at": created,
"views": stats.get("play_count"),
"likes": stats.get("digg_count"),
"comments": stats.get("comment_count"),
"collected_at": stamp,
})
print(f"已保存记录数:{len(unique)}")
运行 python -m pip install requests 即可安装依赖。如果某条记录缺少某个字段,代码会将对应单元格留空。这对指标尤其重要:空值表示响应中没有该字段,不会被错误地替换为零。
如何将 CSV 整理成实用的问题清单
第一步是按描述内容进行筛选。可以搜索“如何”“为什么”“无法使用”、型号名称以及特定部件的名称等词语。这种筛选可以建立一份待编辑审核的队列,但不能单凭它判断作者的意图:提及品牌的内容可能是评测、玩笑,也可能是兼容性问题。
进行主题分组时,只向分类器提供必要的文本字段:描述,以及在任务确有需要时使用的去标识化记录 ID。要求分类器从固定类别中选择,例如“首次启动”“清洁”“兼容性”“故障”和“购买”。将原始描述与类别一并保存,以便员工核查分类并纠正错误。
工作报告可以包含主题、找到的案例数、几条示例视频链接,以及单独的“已由人工核查”列。已收集数据集中的案例数反映的是该查询在该收集时段内返回的结果,不等于遇到问题的全部消费者所占比例。
分页与定期运行
如果需要获取下一页结果,文档将 cursor 列为翻页参数:把上一条响应中的游标值传给下一次请求。请将它视为不透明令牌;当响应中不再包含结果,或 API 表示没有下一页时,就停止遍历。对于范围有限的试点,建议先发起一次请求、检查结果构成,再考虑加入分页。
如需定期收集,可通过操作系统的任务调度程序或 CI 定时运行脚本。每次运行都保存单独的原始 JSON,并在表格中添加收集时间。积累历史记录后,可按视频 ID 去重;如果任务需要追踪指标变化,则应分别保存重复采集的快照。只有存在同一条记录的多个快照时,比较指标才有意义。
请将密钥存储在 CI 密钥管理器或环境变量中,限制存档访问权限,并设置内部保留期限。将材料交给分类系统之前,请确认该系统确实需要哪些字段。这样可以减少不必要的用户数据复制,也更便于管理访问权限。
团队可以获得什么成果
运行后,您将获得原始响应存档,以及包含找到的视频和可用字段的 CSV。客服团队可以核查链接并整理重复出现的问题;营销团队可以了解受众描述需求时使用的措辞;分析人员则可以重复收集,并比较不同日期的观察结果。

可以先用产品名称和具体问题设置一个范围较窄的查询,人工检查找到的 20–30 条记录,并完善类别词表。之后再添加多个主题查询、定时任务,以及导出到电子表格或数据库的功能。TikTok Scraper API 的说明列出了该路由的功能和参数;在建立更广泛的监测之前,先验证所选查询是否合适。