要了解某条 TikTok 视频是否获得更多互动,可以将其公开指标与它此前的快照进行比较。单次搜索只能显示已经累积的播放量和互动数据;再次采集同一批搜索结果中的视频,才能看出两次运行之间的变化。下面是一套精简可用的 Python 流水线:搜索、将指标保存为 CSV,并计算差值。
这种监测具体测量什么?
这套脚本适用于需要获取某个主题下搜索结果视频清单,并建立可核查观察记录的营销人员、分析师或开发者。例如,团队定期追踪有关产品发布或某个受众查询词的视频,希望了解哪些视频在上次检查后获得了更多播放、点赞、评论或转发。

比较的关键单位是由 aweme_id 标识的视频。每条记录都会保存采集时间、ID、描述、URL、作者名称以及可用的计数器。随后按 ID 匹配两次快照。这样,某条视频的播放量增量就不会与另一条视频的累计播放量混在一起。
结果只描述特定运行中由特定搜索查询返回的视频。搜索结果可能变化,个别统计字段也可能缺失。因此,保存快照本身和采集时间很有帮助;报告应被视为对已找到视频的观察记录,而不是某主题下所有帖子的完整目录。
如何通过 API 采集数据?
TikTok Scraper API 文档介绍了 GET 路由 /searchVideo。搜索时必须提供 keyword 字符串;可选参数包括 count、region、sort_by 和 date_posted。API 密钥通过 license_key 传递。参考文档列出的基础地址为 https://tiktok.evelode.com。
响应包含外部状态和 tiktok 对象。搜索结果中的视频可能位于 tiktok.aweme_list,也可能位于 tiktok.search_item_list[].aweme_info。下面的处理程序支持这两种格式。指标从 statistics 中提取,包括 play_count、digg_count、comment_count 和 share_count;缺失的值会留空,而不会被替换为零。
路由参考文档列出了用于翻阅搜索结果的 cursor,并指出了 date_posted 和 sort_by 的可用选项。对于简单、可重复的监测,先获取一页结果并记录响应即可;只有确有需要时才添加分页。如果需要分页,请原样传递返回的游标,不要转换它。
可运行的 Python 示例
运行 python -m pip install requests 安装请求库,并将密钥设置在环境变量 JSONSCRAPER_TIKTOK_LICENSE_KEY 中。脚本接收一个搜索短语作为参数,并将找到的视频快照追加到同一个 CSV 文件。代码兼容 Python 3.8 及以上版本。
import csv
import os
import sys
from datetime import datetime, timezone
from pathlib import Path
import requests
BASE_URL = "https://tiktok.evelode.com/searchVideo"
CSV_PATH = Path("tiktok_video_snapshots.csv")
FIELDS = [
"collected_at", "aweme_id", "author", "description", "share_url",
"play_count", "digg_count", "comment_count", "share_count",
]
def extract_items(payload):
"""Support the observed search response layouts."""
data = payload.get("tiktok") or {}
items = data.get("aweme_list") or []
if items:
return items
found = []
for result in data.get("search_item_list") or []:
info = result.get("aweme_info")
if info:
found.append(info)
return found
def main():
key = os.environ.get("JSONSCRAPER_TIKTOK_LICENSE_KEY")
if not key:
raise SystemExit("Set JSONSCRAPER_TIKTOK_LICENSE_KEY first")
if len(sys.argv) < 2:
raise SystemExit('Usage: python collect.py "search phrase"')
params = {
"license_key": key,
"keyword": sys.argv[1],
"count": 20,
"region": "US",
"sort_by": "relevance",
"date_posted": "this-week",
}
response = requests.get(BASE_URL, params=params, timeout=30)
response.raise_for_status()
payload = response.json()
if payload.get("status") != "ok":
raise RuntimeError("API returned a non-ok outer status")
data = payload.get("tiktok") or {}
items = extract_items(payload)
collected_at = datetime.now(timezone.utc).isoformat()
rows = []
for item in items:
stats = item.get("statistics") or {}
author = item.get("author") or {}
rows.append({
"collected_at": collected_at,
"aweme_id": item.get("aweme_id"),
"author": author.get("unique_id") or author.get("nickname"),
"description": item.get("desc"),
"share_url": item.get("share_url"),
"play_count": stats.get("play_count"),
"digg_count": stats.get("digg_count"),
"comment_count": stats.get("comment_count"),
"share_count": stats.get("share_count"),
})
write_header = not CSV_PATH.exists()
with CSV_PATH.open("a", newline="", encoding="utf-8") as file:
writer = csv.DictWriter(file, fieldnames=FIELDS)
if write_header:
writer.writeheader()
writer.writerows(rows)
print("Saved", len(rows), "returned videos")
print("has_more:", data.get("has_more"), "cursor:", data.get("cursor"))
if __name__ == "__main__":
main()
例如,运行 python collect.py "产品相关查询"。密钥由库作为 URL 参数传入;脚本不会在终端中输出密钥。不要将完整请求 URL 保存到公开日志中,因为其中包含密钥。在生产系统中,请使用密钥管理服务,并限制对快照文件的访问。
如何计算两次运行之间的增量?
脚本会有意保留所有观察记录,而不是覆盖先前的值。下面这个简短的分析器会匹配每条视频最近的两次快照,并输出各计数器的差值。如果某项指标在两条记录中的任一条缺失,结果就会标记为不可用。

import csv
from collections import defaultdict
from pathlib import Path
rows_by_video = defaultdict(list)
with Path("tiktok_video_snapshots.csv").open(encoding="utf-8", newline="") as file:
for row in csv.DictReader(file):
if row["aweme_id"]:
rows_by_video[row["aweme_id"]].append(row)
metrics = ("play_count", "digg_count", "comment_count", "share_count")
for video_id, snapshots in rows_by_video.items():
snapshots.sort(key=lambda row: row["collected_at"])
if len(snapshots) < 2:
continue
previous, latest = snapshots[-2], snapshots[-1]
changes = {}
for metric in metrics:
old, new = previous[metric], latest[metric]
changes[metric] = int(new) - int(old) if old and new else None
print(video_id, changes, latest["share_url"])
差值是两条已保存记录之间的差异,并不代表具有固定采样周期的增长速度。如果两次运行的间隔不同,请计算 collected_at 之间的时长,并按实际时间间隔比较增量。计数器可能会在两次观察之间发生变化;保存的时间戳会注明所用数值的采集时间。
如何自动化并解读报告?
要生成每日报告,可以将采集任务放到服务器或 CI 的任务计划程序中,设置固定的搜索短语列表,并保存 CSV 或将数据行写入数据库。如果重复运行后同一快照中出现重复项,请按 aweme_id 去重。为了保留历史记录,请将原始 JSON 与规范化后的列一起保存:如果报告结构发生变化,这样更容易重新处理数据。
表格中可以列出视频 ID 和 URL、作者、描述、采集时间,以及各项指标的增量。按播放量增量排序可以了解传播情况;评论或转发的增量则有助于识别另一种互动类型。除非明确规定计算方法,否则不要将这些指标合并成一个总评分:每个计数器的含义都不同。
任务计划程序可以将报告发送到电子邮件、表格或内部频道,但这一步由你的基础设施完成——上面的示例只负责采集和分析数据。若要采集得更完整,可以遍历结果页、保存游标,并在 API 表示没有后续页面时停止循环。搜索游标是响应中提供的不透明值;不要自行计算。即便遍历了所有页面,结果也只是 API 返回的搜索结果,并不保证涵盖所有符合条件的帖子。
实际预期成果是一份可重复生成的观察日志,以及一张列出已找到视频指标变化的表格。这有助于发现哪些帖子在两次检查之间的公开计数器发生了变化,并将具体链接交给相关人员进行内容分析。产品详情和 API 访问方式可在 TikTok Scraper API 页面查看。
安排定时运行前要检查什么?
- 在处理
tiktok对象之前,确认外部响应状态为ok。 - 检查搜索条目的两种结构;列表缺失时应得到空的采集结果,而不是报错。
- 保留原始值和时间戳。缺失的指标应继续留空。
- 使用相同的查询和参数,让快照对比更清晰;并在报告旁记录这些设置的变更。
- 监控运行频率、HTTP 错误和历史记录大小,同时遵守适用的平台规则和数据处理要求。
总之,只要重复执行同一搜索、按 aweme_id 识别视频,并比较随时间保存的指标,就足以获得可观察的结果。这种方法回答了一个具体而有限的实际问题:哪些已找到的视频在两次检查之间改变了公开计数器?同时,它也保留了原始数据,供审计和后续处理使用。