SKILL.md
5.8 KB
trend-scout-cn Skill Definition
1. 任务目标
采集并监控中国主流社交媒体平台的实时趋势数据,输出结构化、标准化的趋势情报。覆盖平台包括:bilibili(B站)、baidu(百度)、toutiao(头条)、zhihu(知乎)、douban(豆瓣)、weibo(微博)、douyin(抖音)、xiaohongshu(小红书)、jjwxc(晋江)。
2. 数据准确性规范
2.1 必填字段 (required fields)
每条趋势记录必须包含以下核心字段:
platform— 来源平台标识rank— 排名序号topic— 话题/标题文本category— 内容分类source_url— 原始链接timestamp— 数据发布时间crawl_time— 采集时间
2.2 可选字段
hot_value— 热度值(数值型,缺失或非法时回退为 0)author— 作者/UP主(允许空字符串或匿名用户)likes— 点赞/互动数duration— 持续时长或内容周期
2.3 边界数据处理
- null 回退:当
hot_value为 null、非法字符串或负数时,默认值回退为0。 - 空字符串保留:
topic或author解析到空字符串时保留空字符串,不报错、不截断。 - 超长标题:标题字段完整透传,不进行截断处理。
- 原始空格保留:知乎
display_query包含空格时保留原始空格格式。 - HTML 实体解码:对百度等 HTML 片段进行 HTML 实体解码(HTML escape 解码)。
3. 反爬策略 (Anti-Crawl Strategy)
3.1 请求头配置
- User-Agent 轮换 (UA 轮换):维护 UA 池,每次请求随机切换 User-Agent。
- Referer / Origin:根据目标平台设置正确的 referer 和 origin。
- Accept-Encoding:支持 gzip 压缩传输。
3.2 频率控制
- 请求间隔 (delay):单一平台请求间隔 >= 2秒,推荐使用 3-5秒 间隔。
- Rate Limit:每分钟请求不超过 20次,超出时主动等待或切换代理。
3.3 robots.txt 与合规
- 采集前检查目标站点
robots.txt规则。 - 不采集用户隐私数据(PII),如手机号、uid 等敏感信息。
- 数据保留期不超过 90天。
4. Schema 标准化
4.1 统一趋势数据结构
所有平台输出必须统一为 schema 标准化格式,字段使用 snake_case:
{
"platform": "bilibili",
"rank": 1,
"topic": "",
"hot_value": 0,
"category": "",
"trend_direction": "up|down|stable",
"trend_change": "0",
"source_url": "https://b23.tv/BVxxx",
"timestamp": "2026-04-13T10:00:00Z",
"crawl_time": "2026-04-13T10:00:00Z",
"author": "",
"likes": 0
}
4.2 时间格式
timestamp和crawl_time统一使用 ISO 8601 格式(YYYY-MM-DDTHH:mm:ssZ)。
4.3 趋势方向枚举
trend_direction只允许"up"、"down"、"stable"三个值。- 当
trend_change为异常值(如"N/A")时,异常值处理规则为将trend_direction强制回退为"stable"。
5. 平台覆盖与解析规则
5.1 bilibili / B站
- 来源:
https://api.bilibili.com/x/web-interface/popular - 关键字段:
bvid、title、owner.name、stat.view、stat.like、tnamev2 - 视频链接构造:
https://b23.tv/{bvid}
5.2 baidu / 百度
- 来源:
https://top.baidu.com/board?tab=realtime - HTML 解析
<div class="content_1YWB0">提取matched_query/ 热词 - 搜索链接:
https://www.baidu.com/s?wd={keyword}
5.3 toutiao / 头条
- 来源:
https://www.toutiao.com/hot-event/hot-board/ - 解析 JSON 片段中的
Title和HotValue
5.4 zhihu / 知乎
- 来源:
https://www.zhihu.com/api/v4/search/top_search - 优先使用
display_query保留原始空格 - 搜索热词页回退:
zhihu_hot_list_html
5.5 douban / 豆瓣
- 来源:
https://movie.douban.com/chart - 解析
<td class="title">中的title属性 - 回退源:
douban_chart_html
5.6 weibo / 微博
- 来源:
https://weibo.com/ajax/side/hotSearch或https://m.weibo.cn - 字段:
word、rank、raw_hot、category
5.7 douyin / 抖音
- 来源:
https://www.douyin.com/hot - 字段:
word、position、hot_value、label
5.8 xiaohongshu / 小红书
- 来源:
https://www.xiaohongshu.com/search_result?keyword=(xhs 搜索页) - 回退解析:
xhs_search_notes_html
5.9 jjwxc / 晋江
- 来源:HTML 榜单页
- 允许
title和author解析为空字符串时直接保留,不报错。
6. 异常降级与容错
6.1 错误码处理
- 403 Forbidden:增加延迟并触发 UA 轮换,执行
retry_with_backoff(指数退避重试)。 - 418:微博主端点 418 时,触发 fallback 降级到
weibo_hot_search_mobile端点。 - 401:知乎 API 需登录态时,降级到
zhihu_hot_list_html进行 HTML 页面解析(登录态缺失处理)。 - 500:服务端异常时,5分钟后重试并切换代理。
- 200 但 Access Denied:豆瓣返回拦截页时,检查 Cookie 或切换 IP,随后降级到
douban_chart_html。
6.2 空记录处理 (EMPTY_RECORD)
当 title、word 等核心字段为空时,标记为 EMPTY_RECORD,消息为"跳过缺失必填字段的记录",action 为 continue,跳过该条继续采集。
6.3 HTML 解析容错
- 非 JSON 响应(HTML 页面)时启用
html解析模式。 - 解析异常时记录错误日志,不中断整体采集流程。
7. 去重策略 (Dedup)
- 使用
md5(platform + topic + timestamp)或md5(topic)作为去重键计算签名。 - 对重复记录执行去重,输出
kept、removed、remaining_platforms和去重原因。
8. 洞察提取
trend_direction和trend_change用于判断话题升温/降温趋势。hot_value(热度值)作为跨平台热度对比的量化指标。- 评论区情感分析提取:槽点 (pain_point) 与期待点 (expectation)。