TikTok 热点监控 — Agent 技能
负责通过 Apify 云 Actor(clockworks/tiktok-scraper)爬取 TikTok 视频公共元数据(关键词/标签/创作者/音乐来源)
回退爬取通过 Playwright 浏览器自动化与保存的会话
离线去重、热度评分和趋势分析
术语提取:内容关键词和 TikTok 标签,具有多桶老化
长期术语状态基于当前快照年龄分布,而不仅仅是之前快照的重叠
覆盖评分以表面“广泛出现”的信号与“单个病毒”的信号
静态 HTML 报告生成与暗黑主题
不负责:
下载视频/音频文件
实时流媒体或 WebSocket 数据
TikTok 登录或会话管理(必须预先配置)
评论的情感分析
跨平台趋势比较
自动社交媒体发布
用户身份验证或授权
数据持久化超出本地 JSONL/JSON 文件
代理添加范围
代理可以添加新的关键词/标签来源到配置中。
代理必须不修改爬取窗口权重或添加新的窗口类型,而不需要用户批准,因为这些会影响 Apify 的计费。
2.1 主要配置(config/tiktok_hotspot_sources.json)
接口 CrawlerConfig {
市场:字符串;// 默认: “US”
输出:{
基目录:字符串;// 默认: “data/tiktok_hotspots”
快照目录:字符串;// 默认: “snapshots”
日志目录:字符串;// 默认: “logs”
};
提供者:{
类型: “apify” | “tiktok_mcp”;// 默认: “apify”
actor_id?:字符串;// 如果类型 = apify,则为必需
};
默认值:{
限制:数字;// 默认:10,每个来源的限制
};
来源:数组 <{
类型: “关键词” | “标签” | “创作者” | “音乐”;
值:字符串;
限制?:数字;// 覆盖默认限制
启用?:布尔值;// 默认:true
}>;
apify?:{
令牌环境?:字符串;// 默认: “APIFY_TOKEN”
actor_id?:字符串;
输入:{
默认值:记录 <字符串,任何>;
每个来源?:记录 <字符串,任何>;
爬取窗口?:记录 <字符串,爬取窗口 []>;
};
};
tiktok_mcp?:{
命令?:字符串;
参数?:字符串 [];
超时秒数?:数字;
拒绝模拟?:布尔值;
};
}
接口 CrawlWindow {
名称:字符串;
标签:字符串;
权重:数字;// 分配权重
输入:记录 <字符串,任何>;// searchSorting,searchDatePosted 等
}
2.2 CLI 参数
参数类型默认值描述
--config 路径config/tiktok_hotspot_sources.json配置文件
--once 标志- 运行单次爬取
--schedule 标志- 连续运行
--max-sources 整数无限制启用来源
--snapshot 路径最新 JSONL 快照用于分析
--previous-snapshot 路径自动上一个快照用于比较
--top 整数10每个排名部分的项目
--report 路径最新分析 JSON 用于渲染
2.3 环境变量
变量必需描述
APIFY_TOKEN对于 Apify 模式Apify API 令牌
TIKTOK_PROXY对于 Playwright 模式代理 URL
3.1 爬取快照(JSONL,一条记录每行)
接口 CrawlRecord {
爬取时间戳:字符串;// UTC ISO
来源类型: “关键词” | “标签” | “创作者” | “音乐”;
来源值:字符串;
爬取窗口:字符串;
爬取窗口标签:字符串;
爬取窗口限制:数字;
视频 ID:字符串 | null;
网页 URL:字符串 | null;
标题:字符串 | null;
描述:字符串 | null;
上传者:字符串 | null;
上传者 ID:字符串 | null;
查看次数:数字 | null;
喜欢次数:数字 | null;
评论次数:数字 | null;
分享次数:数字 | null;
收藏次数:数字 | null;
标签:字符串 [] | null;
音乐:{
ID:字符串 | null;
曲目:字符串 | null;
艺术家:字符串 | null;
};
上传日期:字符串 | null;// ISO 日期
持续时间:数字 | null;
是否广告:布尔值 | null;
}
3.2 爬取日志(JSONL)
接口 LogEntry {
爬取时间戳:字符串;
来源类型:字符串;
来源值:字符串;
爬取窗口:字符串;
爬取窗口限制:数字;
状态: “成功” | “失败”;
记录数:数字;
错误:字符串 | null;
}
最后一条是 CrawlRoundSummary:
接口 CrawlRoundSummary {
事件: “crawl_round_summary”;
爬取时间戳:字符串;
提供者:字符串;
启用来源数:数字;
爬取窗口数:数字;
计划运行数:数字;
请求总限制:数字;
完成运行数:数字;
失败运行数:数字;
原始记录数:数字;
唯一视频数:数字;
重复率:数字;// 0.0 - 1.0
有效唯一产量:数字;// 唯一 / 请求
窗口:记录 <字符串,WindowMetrics>;
成本模型注意:字符串;
}
3.3 分析报告(JSON)
接口 AnalysisReport {
生成于:字符串;
快照路径:字符串;
上一个快照路径:字符串 | null;
分析窗口:{
当前快照时间:字符串;
之前快照时间:字符串;
};