问答
怎么把一条 TikTok 视频的评论全部导出成 CSV 或 Excel?
简短回答
用 TikTok 视频评论接口(/v1/tiktok/videos/comments/list)逐页拉取,边拉边写进 CSV。每次调用约 50 条,$0.002,一条 2,000 评论的视频导完是 $0.08,1,000 条评论 $0.04。每行包括评论正文、点赞、回复数、时间和评论者。
你们的一条产品视频在 TikTok 上火了,底下有 2,000 条评论。团队想把评论放进 Excel,逐条标出吐槽、提问和功能建议。手动复制到第一百条就会想放弃。下面这段脚本几分钟就能把所有一级评论写进一个 CSV。
先算清楚:有多少评论,要花多少钱
视频的评论数能提前告诉你账单。TikTok 视频详情返回的 metrics.comments 就是它,查一次 $0.002。之后按页计费:
| 评论数 | 调用 TikTok 视频评论的次数 | 费用 |
|---|---|---|
| 500 | 10 | $0.02 |
| 2,000 | 40 | $0.08 |
| 10,000 | 200 | $0.40 |
导出脚本
传入视频链接,脚本先查出视频 ID,再一页页往下翻,直到 TikTok 说没有更多。文件用 utf-8-sig 编码,Excel 打开时表情符号和中文、阿拉伯文都不会乱码。
import csv, os, sys, requests
API = "https://api.okdata.online/v1"
H = {"Authorization": f"Bearer {os.environ['OKDATA_API_KEY']}"}
def get(path, **params):
body = requests.get(f"{API}/{path}", headers=H, params=params, timeout=60).json()
if body["code"] != "ok":
raise RuntimeError(f"{body['code']}: {body['message']}")
return body
video = get("tiktok/videos/get", url=sys.argv[1])["data"]["item"]
print("TikTok 显示评论数", video["metrics"]["comments"])
with open(f"comments-{video['id']}.csv", "w", newline="", encoding="utf-8-sig") as f:
w = csv.writer(f)
w.writerow(["published_at", "author", "text", "likes", "replies", "location"])
cursor = None
while True:
body = get("tiktok/videos/comments/list", id=video["id"], **({"cursor": cursor} if cursor else {}))
for c in body["data"]["items"]:
w.writerow([c["published_at"], c["author"]["username"], c["text"], c["likes"], c["replies"], c["ip_location"]])
if not body["page"]["has_more"]:
break
cursor = body["page"]["next_cursor"]
运行方式:python export.py "https://www.tiktok.com/@user/video/7305085486984858894"。App 分享按钮生成的短链也能用。
为什么导出的行数比 TikTok 显示的少
TikTok 显示的评论数包含了楼中楼回复。这个接口返回的是一级评论,每条带一个 replies 回复数,但不带回复的正文。被 TikTok 过滤或删除的评论也不会出现。所以一条显示 2,000 评论的视频,导出来少几百行很正常,差的大多是回复。
还有几个细节:ip_location 只有 TikTok 展示地区时才有值;每一页单独计费;某一页失败不收钱,用同一个 cursor 重试即可。
拿到表格之后,建议先按 likes 从高到低排一遍。点赞最多的几十条评论,往往就代表了大多数人的看法,先读它们,再决定要不要逐条打标签。
其他办法
- 手动复制或浏览器插件:一条视频、评论不到一百条时够用。
- TikTokApi:免费,但要驱动浏览器,放在服务器上经常拿到空响应。
- TikTok Research API:有评论接口,只对通过审核的学术研究者开放。
要横向比较多条视频、多个品牌的评论,可以看口碑分析方案。
更新于