Skip to content

Repository files navigation

Daily Digest - 每日热点推送

一个自用的个性化科技热点推送 Web 应用。在电脑本地运行后端,手机浏览器访问电脑局域网地址即可使用。

核心特性

  • 可自定义关注方向,也支持默认通用科技热点。
  • 调用 Tavily 搜索近 7 天信息,由大模型筛选最有价值的内容并给出分析。
  • 每次推送保存为历史会话,随时回看。
  • 原生 HTML/CSS/JS 前端,手机端响应式适配。
  • 模块化解耦:搜索、摘要、会话管理分文件,便于替换供应商。

技术栈

  • Python Flask 后端
  • 原生 HTML/CSS/JS 前端
  • Tavily Search API
  • DeepSeek(OpenAI 兼容格式)大模型 API

快速开始

1. 申请 API Key

Tavily API Key

  1. 访问 https://tavily.com
  2. 注册账号并登录
  3. 进入 Dashboard 获取 API Key

DeepSeek API Key

  1. 访问 https://platform.deepseek.com
  2. 注册账号并登录
  3. 进入 API 平台创建 API Key

2. 配置

复制或修改项目根目录的 config.json

{
  "tavily_api_key": "你的 Tavily API Key",
  "llm_api_key": "你的 DeepSeek API Key",
  "llm_base_url": "https://api.deepseek.com/v1",
  "llm_model": "deepseek-chat",
  "debug_mock": true
}

默认 debug_mock: true,首次运行使用假数据零成本跑通全流程。确认链路正常后,将其改为 false 并填入真实 API Key,即可调用 Tavily 与 DeepSeek。

3. 启动服务

方式一:一键启动(推荐)

双击运行项目根目录的 启动.bat

  • 自动安装依赖
  • 自动启动 Flask 服务
  • 启动后自动用默认浏览器打开 http://127.0.0.1:5000
  • 提示防火墙放行事项

注意:启动.bat 当前为纯英文版本。原 UTF-8 中文版本在某些 Windows 环境下因 chcp 65001 与 ANSI 编码冲突导致 echo 行被切碎成乱码命令,故改为纯英文以保证所有 Windows 环境稳定运行。

方式二:手动启动

pip install -r requirements.txt
python app.py

4. 查看电脑局域网 IP

在 Windows 中打开命令提示符或 PowerShell,运行:

ipconfig

找到当前连接(通常是 WLAN 或无线适配器)的 IPv4 地址,例如 192.168.43.123

示例输出片段(关注 IPv4 地址 那一行):

无线局域网适配器 WLAN:

   连接特定的 DNS 后缀 . . . . . . . :
   IPv4 地址 . . . . . . . . . . . . : 192.168.43.123
   子网掩码  . . . . . . . . . . . . : 255.255.255.0
   默认网关. . . . . . . . . . . . . : 192.168.43.1

5. 手机访问

确保手机已连接电脑开启的个人热点,且与电脑处于同一局域网。

在手机浏览器地址栏输入:

http://电脑IP:5000

例如:

http://192.168.43.123:5000

实测验证:Windows 11 电脑通过个人热点共享网络,安卓手机连接该热点后,使用手机浏览器访问上述地址可正常完成一次完整推送(含搜索、摘要、保存会话)。若出现白屏/超时,请优先检查防火墙放行设置。

防火墙放行说明

注意:手机热点在 Windows 11 中通常被识别为“公用网络”,必须在“专用和公用网络”两处都放行 5000 端口(或放行 python.exe),否则电脑能打开、手机白屏。

操作步骤

  1. 打开 Windows 安全中心防火墙和网络保护
  2. 点击 高级设置
  3. 点击 入站规则新建规则
  4. 选择 端口TCP → 输入 5000 → 允许连接。
  5. 在“配置文件”页面,同时勾选 专用公用,完成命名。

或者,直接允许 python.exe 通过防火墙的专用/公用网络。

调试模式

config.jsondebug_mock 默认设为 true

{
  "debug_mock": true
}

开启后:

  • 不调用 Tavily 搜索 API
  • 不调用大模型 API
  • 直接返回写死的 3 条假数据
  • 用于零成本跑通全流程,验证前端与后端链路

跑通后,将 debug_mock 改为 false,并确保 tavily_api_keyllm_api_key 已正确填写,即可使用真实 API。

会话清理口径

本应用对 sessions/ 目录下的历史会话文件执行双重清理策略:

  1. 时间策略:删除创建时间超过 7 天的会话文件。
  2. 数量策略:若删除后总数仍超过 30 条,按创建时间从旧到新删除,直至剩余 30 条。

清理逻辑在每次成功保存新会话后触发,策略写死在代码中,不做配置项。

项目结构

daily-digest/
├── app.py                 # Flask 后端入口
├── collector.py           # Tavily 搜索采集模块
├── summarizer.py          # 大模型筛选摘要模块
├── session_manager.py     # 会话管理模块
├── config.json            # API 密钥与模型配置(不提交到 Git)
├── requirements.txt       # Python 依赖
├── .gitignore             # Git 忽略规则
├── 启动.bat               # Windows 一键启动脚本
├── README.md              # 本文件
├── decisions.md           # 决策与断点备忘
├── templates/
│   └── index.html         # 前端页面
├── static/
│   ├── css/
│   │   └── style.css      # 样式
│   └── js/
│       └── app.js         # 前端脚本
└── sessions/              # 历史会话文件(自动生成,不提交)

首次使用建议

  1. 保持 debug_mock: true,双击 启动.bat 或运行 python app.py
  2. 在电脑浏览器打开 http://127.0.0.1:5000,确认页面能加载、点击“获取热点”能返回 3 条调试数据、历史列表能正常显示。
  3. config.json 中的 debug_mock 改为 false,并填入真实的 Tavily 与 DeepSeek API Key。
  4. 输入一个关注方向,点击“获取热点”,测试真实推送;逐条点击 source_url 验证链接可跳转。
  5. 若手机无法访问,优先检查 Windows 防火墙是否已在“专用和公用网络”放行 5000 端口。

常见问题

提示“配置错误:请检查 config.json 文件格式是否正确”

说明 config.json 不是合法 JSON。常见原因:

  • 使用了中文逗号 而非英文逗号 ,
  • 某个字符串末尾缺少引号
  • 最后一项后面多加了逗号

可用任意 JSON 在线校验工具检查,或在 Python 中运行:

python -c "import json; json.load(open('config.json', encoding='utf-8'))"

注意事项

  • 请妥善保管 config.json,不要上传到公开仓库。
  • 单次推送条数范围 1-10,默认 3 条;条数越多,耗时越长、单次成本越高。
  • 所有 source_url 均来自 Tavily 搜索结果,不会由大模型生成或修改。
  • sessions/ 目录在首次保存会话时自动创建,已被 .gitignore 排除,无需手动维护。

License

自用项目,暂不设置开源协议。

About

标准Flask应用,调用大模型API来实现热点推送,自备API

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages