sansan 11 месяцев назад
Родитель
Сommit
6eb9ff0c64
1 измененных файлов с 115 добавлено и 82 удалено
  1. 115 82
      readme.md

+ 115 - 82
readme.md

@@ -2,28 +2,38 @@
 
 TrendRadar 是一款多平台热点资讯监控工具,可自动追踪主流媒体平台的热门话题,实时分析热点走势,根据自定义关键词进行筛选,并通过精美报表或飞书机器人实时推送到手机上。无论你是媒体从业者、市场分析师、还是信息爱好者,TrendRadar 都能帮你第一时间捕捉全网热点脉搏。
 
-或者像我一样通过这个工具来反向减少对各种APP的使用依赖的。
+或者像我一样通过这个工具来反向减少对各种 APP 的使用依赖的。
 
-
-## 💡 应用场景
-
-- **媒体从业者**: 实时追踪热点,把握报道方向
-- **市场营销**: 及时发现与品牌相关的热点话题
-- **内容创作**: 获取热门话题灵感,提高内容曝光
-- **投资分析**: 追踪特定行业或公司的热点消息
-- **个人使用**: 不错过任何你关心领域的热点信息
+> 如果这个项目对你有帮助,请通过 **点击 Star ⭐** 支持我一下!
 
 ## ✨ 核心功能
 
-- **多平台覆盖** - 一次监控 10+主流平台(今日头条、百度热搜、微博、抖音、知乎、B 站等)
+- **多平台覆盖** - 一次监控 11 个主流平台(今日头条、百度热搜、微博、抖音、知乎、B 站等)
+- **实时推送** - 支持飞书机器人通知,重要热点即时知晓
 - **智能分析** - 自定义频率词和过滤词,精准捕捉你关心的热点
 - **数据可视化** - 生成美观的 HTML 统计报告,热点一目了然
-- **实时推送** - 支持飞书机器人通知,重要热点即时知晓
 - **全自动化** - 基于 GitHub Actions,定时运行无需服务器
 
+### 飞书消息显示效果优化(2025/5/26 更新)
+
+<table>
+<tr>
+<td align="center">
+优化前<br>
+<img src="_image/before.jpg" alt="飞书消息界面 - 优化前" width="400"/>
+</td>
+<td align="center">
+优化后<br>
+<img src="_image/after.jpg" alt="飞书消息界面 - 优化后" width="400"/>
+</td>
+</tr>
+</table>
+
+已 fork 的同学只要复制 main.py 的所有代码到你的 github 直接覆盖即可(github 在线编辑)
+
 ## 🔍 支持的平台
 
-目前已支持以下 10 个热门平台:
+目前已支持以下 11 个热门平台:
 
 - 今日头条
 - 百度热搜
@@ -31,16 +41,14 @@ TrendRadar 是一款多平台热点资讯监控工具,可自动追踪主流媒
 - 澎湃新闻
 - bilibili 热搜
 - 财联社热门
+- 凤凰网
 - 贴吧
 - 微博
 - 抖音
 - 知乎
 
-
 ## 🚀 使用方式
 
-### 方式一:GitHub Actions 远程运行(推荐)
-
 1. **Fork 本项目**到你的 GitHub 账户
 
    - 点击本页面右上角的"Fork"按钮
@@ -66,8 +74,6 @@ TrendRadar 是一款多平台热点资讯监控工具,可自动追踪主流媒
    - 运行结果将自动保存在仓库的`output`目录中
    - 同时通过飞书机器人发送通知到你的群组
 
-
-
 ## ⚙️ 配置说明
 
 ### 全局配置项
@@ -76,29 +82,30 @@ TrendRadar 是一款多平台热点资讯监控工具,可自动追踪主流媒
 
 ```python
 CONFIG = {
-    "FEISHU_SEPARATOR": "==============================", # 飞书消息分割线
+    "FEISHU_SEPARATOR": "━━━━━━━━━━━━━━━━━━━",  # 飞书消息中,每个频率词之间的分割线
     "REQUEST_INTERVAL": 1000,  # 请求间隔(毫秒)
     "FEISHU_REPORT_TYPE": "daily",  # 可选: "current", "daily", "both"
-    "RANK_THRESHOLD": 5,  # 排名阈值,决定使用【】还是[]的界限
-    "USE_PROXY": False,  # 是否启用本地代理
+    "RANK_THRESHOLD": 5,  # 排名阈值,前5名使用红色加粗显示
+    "USE_PROXY": True,  # 是否启用本地代理
     "DEFAULT_PROXY": "http://127.0.0.1:10086",  # 默认代理地址
-    "CONTINUE_WITHOUT_FEISHU": False,  # 是否在没有飞书webhook URL时继续执行爬虫
-    "FEISHU_WEBHOOK_URL": ""  # 飞书机器人的webhook URL,默认为空
+    "CONTINUE_WITHOUT_FEISHU": True,  # 控制是否在没有飞书webhook URL时继续执行爬虫
+    "FEISHU_WEBHOOK_URL": "",  # 飞书机器人的webhook URL,默认为空,推荐通过GitHub Secrets设置
 }
 ```
 
 主要配置项说明:
 
-- `REQUEST_INTERVAL`: 控制爬取不同平台之间的时间间隔
-- `FEISHU_REPORT_TYPE`: 控制发送到飞书的报告类型
+- **REQUEST_INTERVAL**: 控制爬取不同平台之间的时间间隔,避免请求过于频繁
+- **FEISHU_REPORT_TYPE**: 控制发送到飞书的报告类型
   - `current`: 只发送当前爬取结果
   - `daily`: 只发送当日汇总
   - `both`: 两者都发送
-- `RANK_THRESHOLD`: 排名显示阈值,小于等于此值的排名使用【】,大于此值使用[]
-- `USE_PROXY`: 是否在本地运行时使用代理
-- `DEFAULT_PROXY`: 本地代理地址
-- `CONTINUE_WITHOUT_FEISHU`: 如果为`True`,即使没有飞书 webhook URL 也会执行爬虫;如果为`False`,则不执行
-- `FEISHU_WEBHOOK_URL`: 飞书机器人的 webhook URL,可以直接在此设置
+- **RANK_THRESHOLD**: 排名显示阈值,小于等于此值的排名使用红色加粗【】显示,大于此值使用普通[]显示
+- **USE_PROXY**: 是否在本地运行时使用代理(GitHub Actions 环境会自动禁用)
+- **DEFAULT_PROXY**: 本地代理地址
+- **CONTINUE_WITHOUT_FEISHU**: 如果为`True`,即使没有飞书 webhook URL 也会执行爬虫;如果为`False`,则程序会退出
+- **FEISHU_WEBHOOK_URL**: 飞书机器人的 webhook URL,可以直接在此设置,但更推荐使用 GitHub Secrets
+- **FEISHU_SEPARATOR**: 飞书消息中不同频率词组之间的分割线样式
 
 ### 频率词和过滤词
 
@@ -107,6 +114,7 @@ CONFIG = {
 - 每组相关的频率词用换行分隔,不同组之间用空行分隔
 - 以`!`开头的词为过滤词
 - 如果一个标题既包含频率词又包含过滤词,则该标题不会被统计
+- 每个标题只会被第一个匹配的词组统计,避免重复计算
 
 示例:
 
@@ -119,54 +127,69 @@ GPT
 
 芯片
 半导体
+!芯片股
 ```
 
 上述配置表示:
 
 - 监控包含"人工智能"、"AI"、"GPT"或"大模型"的标题,但若同时包含"AI 绘画"则排除
-- 监控包含"芯片"或"半导体"的标题
+- 监控包含"芯片"或"半导体"的标题,但若同时包含"芯片股"则排除
 
 ## 📊 输出示例
 
 程序会生成两种报告:
 
 1. **单次爬取报告**:每次爬取后生成的报告,包含当次爬取的热点数据
-2. **当日汇总报告**:汇总当天所有爬取的数据,去重并统计出现频率
+2. **当日汇总报告**:汇总当天所有爬取的数据,去重并统计出现频率和时间范围
 
 ### HTML 报告示例:
 
-| 排名 | 频率词      | 出现次数 | 占比  | 相关标题                                                                                                            |
-| ---- | ----------- | -------- | ----- | ------------------------------------------------------------------------------------------------------------------- |
-| 1    | 人工智能 AI | 12       | 24.5% | [百度热搜] 科技巨头发布新 AI 模型 【1】- 12 时 30 分 - 4 次<br>[今日头条] AI 技术最新突破 【2】- 13 时 15 分 - 2 次 |
-| 2    | 芯片 半导体 | 8        | 16.3% | [华尔街见闻] 半导体行业最新动态 【3】- 12 时 45 分 - 3 次<br>[财联社] 芯片设计新技术 [7] - 14 时 00 分 - 1 次       |
+| 排名 | 频率词      | 出现次数 | 占比  | 相关标题                                                                                                                                  |
+| ---- | ----------- | -------- | ----- | ----------------------------------------------------------------------------------------------------------------------------------------- |
+| 1    | 人工智能 AI | 12       | 24.5% | [百度热搜] 科技巨头发布新 AI 模型 [**1**] - 12 时 30 分 (4 次)<br>[今日头条] AI 技术最新突破 [**2**] - [13 时 15 分 ~ 14 时 30 分] (2 次) |
+| 2    | 芯片 半导体 | 8        | 16.3% | [华尔街见闻] 半导体行业最新动态 [**3**] - 12 时 45 分 (3 次)<br>[财联社] 芯片设计新技术 [7] - 14 时 00 分 (1 次)                          |
 
 ### 飞书通知示例:
 
 ```
-【人工智能 AI】 : 12 条
-1. [百度热搜] 科技巨头发布新AI模型 【1】- 12时30分 - 4次
-2. [今日头条] AI技术最新突破 【2】- 13时15分 - 2次
+📊 热点词汇统计
+
+🔥 人工智能 AI : 12 条
+
+  1. [百度热搜] 科技巨头发布新AI模型 [1] - 12时30分 (4次)
+
+  2. [今日头条] AI技术最新突破 [2] - [13时15分 ~ 14时30分] (2次)
+
+━━━━━━━━━━━━━━━━━━━
 
-==============================
+📈 芯片 半导体 : 8 条
 
-【芯片 半导体】 : 8 条
-1. [华尔街见闻] 半导体行业最新动态 【3】- 12时45分 - 3次
-2. [财联社] 芯片设计新技术 [7] - 14时00分 - 1次
+  1. [华尔街见闻] 半导体行业最新动态 [3] - 12时45分 (3次)
+
+  2. [财联社] 芯片设计新技术 [7] - 14时00分 (1次)
+
+更新时间:2025-05-26 15:30:00
 ```
 
 ### 飞书消息格式说明
 
-| 格式元素      | 示例                           | 含义         | 说明                                |
-| ------------- | ------------------------------ | ------------ | ----------------------------------- |
-| 【关键词】    | 【人工智能 AI】                | 频率词组     | 表示本组匹配的关键词                |
-| : N 条        | : 12 条                        | 匹配数量     | 该关键词组匹配的标题总数            |
-| [平台名]      | [百度热搜]                     | 来源平台     | 标题所属的平台名称                  |
-| 【数字】      | 【1】                          | 高排名标记   | 排名 ≤ 阈值(默认 5)的热搜,重要性高 |
-| [数字]        | [7]                            | 普通排名标记 | 排名>阈值的热搜,重要性一般         |
-| - 时间        | - 12 时 30 分                  | 首次发现时间 | 标题首次被发现的时间                |
-| [时间 ~ 时间] | [12 时 30 分 ~ 14 时 00 分]    | 时间范围     | 标题出现的时间范围(首次~最后)       |
-| - N 次        | - 4 次                         | 出现次数     | 标题在监控期间出现的总次数          |
-| ======        | ============================== | 分隔线       | 不同频率词组之间的分隔符            |
+| 格式元素      | 示例                        | 含义         | 说明                                    |
+| ------------- | --------------------------- | ------------ | --------------------------------------- |
+| **关键词**    | **人工智能 AI**             | 频率词组     | 表示本组匹配的关键词                    |
+| : N 条        | : 12 条                     | 匹配数量     | 该关键词组匹配的标题总数                |
+| [平台名]      | [百度热搜]                  | 来源平台     | 标题所属的平台名称                      |
+| [**数字**]    | [**1**]                     | 高排名标记   | 排名 ≤ 阈值(默认 5)的热搜,红色加粗显示 |
+| [数字]        | [7]                         | 普通排名标记 | 排名>阈值的热搜,普通显示               |
+| - 时间        | - 12 时 30 分               | 首次发现时间 | 标题首次被发现的时间                    |
+| [时间 ~ 时间] | [12 时 30 分 ~ 14 时 00 分] | 时间范围     | 标题出现的时间范围(首次~最后)           |
+| (N 次)        | (4 次)                      | 出现次数     | 标题在监控期间出现的总次数              |
+| 🔥📈📌        | 🔥                          | 热度图标     | 根据出现次数显示不同热度等级            |
+
+### 热度等级说明
+
+- 🔥 **高频热词** (≥10 次): 使用红色显示,表示非常热门的话题
+- 📈 **中频词汇** (5-9 次): 使用橙色显示,表示有一定热度的话题
+- 📌 **低频词汇** (1-4 次): 使用默认颜色,表示新兴或小众话题
 
 ## 🤖 飞书机器人设置
 
@@ -182,54 +205,52 @@ GPT
 
 6. "参数"里面放上下面的内容,然后点击"完成"
 
-```
+```json
 {
-"message_type ":"text",
-"content":{
+  "message_type": "text",
+  "content": {
     "total_titles": "{{内容}}",
     "timestamp": "{{内容}}",
     "report_type": "{{内容}}",
     "text": "{{内容}}"
-}
+  }
 }
 ```
 
 7. 点击"选择操作" > "发送飞书消息" ,勾选 "群消息", 然后点击下面的输入框,点击"我管理的群组"(如果没有群组,你可以在飞书 app 上创建群组)
 
-8. 消息标题填写"我是热搜"
+8. 消息标题填写"TrendRadar 热点监控"
 
 9. 最关键的部分来了,点击 + 按钮,选择"Webhook 触发",然后按照下面的图片摆放
 
-![alt text](image.png)
-
-10. 到这里就配置完了,你可以等待手机接收消息(等几十分钟),也可以在 Actions 页面手动触发一次 workflow(等待几十秒就行,不懂的可以问 ai),如果希望支持更多平台可以看下面的其它用法
+![飞书机器人配置示例](_image/image.png)
 
-11. 另外,output目录下,有每天的 **当日统计.html**
-    比如:https://github.com/sansan0/TrendRadar/tree/master/output/2025年05月05日/html ,你可以看到每天汇总的要点新闻
+10. 到这里就配置完了,你可以等待手机接收消息(等几十分钟),也可以在 Actions 页面手动触发一次 workflow(等待几十秒就行,不懂的可以问 ai)
 
+11. 另外,output 目录下,有每天的 **当日统计.html**
+    比如:https://github.com/sansan0/TrendRadar/tree/master/output/2025年05月05日/html ,你可以看到每天汇总的要点新闻,同时在根目录也会生成 `index.html` 方便直接访问
 
-
-## 🔧 其它用法
+## 🔧 高级用法
 
 ### 自定义监控平台
 
-如果想支持更多平台或者不想看某些歪屁股平台,可以访问newsnow的源代码:https://github.com/ourongxing/newsnow/tree/main/server/sources ,根据里面的文件名自己来修改 main.py 中的下面代码,可以在你 Fork 的项目上直接修改源码
+如果想支持更多平台或者不想看某些平台,可以访问 newsnow 的源代码:https://github.com/ourongxing/newsnow/tree/main/server/sources ,根据里面的文件名自己来修改 main.py 中的下面代码
 
+```python
+ids = [
+    ("toutiao", "今日头条"),
+    ("baidu", "百度热搜"),
+    ("wallstreetcn-hot", "华尔街见闻"),
+    ("thepaper", "澎湃新闻"),
+    ("bilibili-hot-search", "bilibili 热搜"),
+    ("cls-hot", "财联社热门"),
+    ("ifeng", "凤凰网"),
+    "tieba",
+    "weibo",
+    "douyin",
+    "zhihu",
+]
 ```
-    ids = [
-        ("toutiao", "今日头条"),
-        ("baidu", "百度热搜"),
-        ("wallstreetcn-hot", "华尔街见闻"),
-        ("thepaper", "澎湃新闻"),
-        ("bilibili-hot-search", "bilibili 热搜"),
-        ("cls-hot", "财联社热门"),
-        "tieba",
-        "weibo",
-        "douyin",
-        "zhihu",
-    ]
-```
-
 
 ## ❓ 常见问题
 
@@ -243,13 +264,14 @@ GPT
 
    - 检查网络连接
    - 尝试修改`CONFIG`中的`USE_PROXY`和`DEFAULT_PROXY`设置
-   - 检查依赖是否正确安装
+   - 检查依赖是否正确安装:`requests`、`pytz`
 
 3. **没有收到飞书通知怎么办?**
 
    - 检查`FEISHU_WEBHOOK_URL`是否正确设置(环境变量或 CONFIG 中)
    - 检查飞书机器人是否仍在群内且启用
    - 查看程序输出中是否有发送失败的错误信息
+   - 确认飞书流程配置中的参数结构正确
 
 4. **想要停止爬虫行为但保留仓库怎么办?**
 
@@ -257,10 +279,21 @@ GPT
    - 或修改 GitHub Actions workflow 文件禁用自动执行
 
 5. **如何处理 API 限制或访问问题?**
+
    - 适当增加`REQUEST_INTERVAL`值,避免频繁请求
-   - 考虑使用上述"自建 API 服务"部分的说明部署自己的服务
+   - 程序已内置重试机制,一般的网络波动会自动处理
    - 本地运行时可尝试启用或更换代理
 
+6. **频率词匹配不准确怎么办?**
+
+   - 确保相关词组间用空行分隔
+   - 合理使用过滤词(以!开头)排除不需要的内容
+   - 词汇匹配是大小写不敏感的
+
+7. **为什么某些标题没有被统计?**
+   - 检查标题是否包含过滤词
+   - 确认频率词配置是否正确
+   - 每个标题只会被第一个匹配的词组统计
 
 ## 🙏 致谢