docs: add skills/ directory with Hermes-compatible SKILL.md

This commit is contained in:
yumoqing 2026-08-04 08:27:49 +08:00
parent e8bad97925
commit eb461bc7e5

View File

@ -0,0 +1,75 @@
---
name: hotspot-radar
description: Hotspot aggregation & analysis module for Sage — 11 builtin parsers, 5-dimension analysis
category: devops
---
# Hotspot Radar Module
指定来源的热点聚合分析平台。11 个内置平台解析器4 种可配置提取器,五维分析 + 7天半衰期自动分类。
## Architecture
- **Repo**: `git@git.opencomputing.cn:yumoqing/hotspot.git`
- **Tables** (6): `hotspot_source`, `hotspot_schedule`, `hotspot_fetch_log`, `hotspot_item`, `hotspot_analysis`, `hotspot_alert`
- **Python package**: `hotspot/``init.py` registers on ServerEnv, `parsers.py` has 11 builtins
- **DSPY**: `import json` + `get_sor_context(env, 'sage')` + `env.run_fetch(sor)`
## Builtin Parsers (11)
| parser_name | Platform | API Endpoint |
|---|---|---|
| weibo_hot | 微博热搜 | weibo.com/ajax/side/hotSearch |
| zhihu_hot | 知乎热榜 | zhihu.com/api/v3/feed/topstory/hot-lists |
| baidu_hot | 百度热搜 | top.baidu.com/board |
| toutiao_hot | 头条热榜 | toutiao.com/hot-event/hot-board |
| bilibili_hot | B站热门 | api.bilibili.com/x/web-interface/popular |
| douyin_hot | 抖音热点 | 第三方聚合接口 |
| 36kr_hot | 36氪热榜 | 36kr.com/api/search/list/info-flow/hot |
| github_trending | GitHub | api.github.com/search/repositories |
| hackernews | HackerNews | firebaseio.com (两步) |
| v2ex_hot | V2EX | v2ex.com/api/topics/hot.json |
| rsshub | RSSHub | 来源 url 即地址 |
## Extractor Types (4)
| parser | 场景 | parser_config 示例 |
|--------|------|---------|
| `builtin` | 内置平台 | `{"parser":"builtin","builtin_name":"weibo_hot"}` |
| `json_path` | REST API | `{"parser":"json_path","item_path":"$.data.list[*]","field_map":{...}}` |
| `css` | HTML | `{"parser":"css","item_selector":".hot-item","field_map":{...}}` |
| `regex` | 文本 | `{"parser":"regex","item_regex":"(?P<title>...)"}` |
| `rss` | RSS/Atom | `{"parser":"rss"}` |
## 5-Dimension Analysis
| 维度 | 评分依据 |
|------|---------|
| time (时效) | hours_alive: <1h=95, <6h=85, <24h=70 |
| heat (热度) | heat_score: >10k=95, >5k=85, >1k=70 |
| content (内容) | title_len + summary_len + tags + category |
| propagation (传播) | engagement + comments×2 + shares×3 |
| audience (受众) | total_engagement / heat_score ratio |
## Status Classification
```
decay = e^(-hours_alive / 168) # 7天半衰期
adjusted_heat = raw_heat × decay
hours > 336 → expired
168 < hours 336 cooling
adjusted_heat > 5000 → hot
adjusted_heat > 500 → rising (velocity>50) else emerging
other → emerging
```
## Deployment
```bash
cp -r hotspot $SAGE_ROOT/
cp models/hotspot_*.json $SAGE_ROOT/models/
cp -r wwwroot/hotspot $SAGE_ROOT/wwwroot/
mysql -u user -p sage < ddl/mysql.sql
python scripts/load_path.py
# sage.py: from hotspot.init import load_hotspot + load_hotspot()
```