一个面向 AI 信息追踪的日报项目,当前包含三块内容:
- 行业日报
- GitHub 新项目
- HN 社区反馈
项目提供两种使用方式:
- 命令行执行采集与生成流程
- Streamlit 前端查看历史结果、切换日期、分别更新各模块
- 从多个 RSS 源抓取 AI 行业新闻
- 按发布日期窗口过滤
- 运行内去重
- 基于历史记忆做相似内容排除
- 生成中文日报 Markdown
- 生成视频脚本 JSON
- 按关键词和 topic 抓取近期值得关注的项目
- 补充仓库语言、Star、Fork、Issue、发布时间、最近推送时间
- 读取 README 摘要,尽量解释项目是做什么的
- 可经过大模型转成中文说明
- 聚合 Hacker News 上近期和 AI 相关的讨论
- 提取讨论摘要、正面反馈、负面反馈、主题信号和评论摘录
- 可经过大模型转成中文输出
app/
connectors/ 数据源连接器,当前支持 RSS / GitHub / Hacker News
filters/ 时间过滤、去重、筛选
generators/ 日报、视频脚本、补充模块中文化
memory/ Chroma 记忆库与空实现兜底
models/ Pydantic 数据模型
workflow/ LangGraph 工作流
delivery/ 导出到 data/outputs
config/
ai_news.yaml 主配置文件
scripts/
run_daily.py 命令行入口
streamlit_app.py
前端页面入口
- 推荐 Python
3.11或3.12 3.13在部分依赖上可能能运行,但 AI 生态兼容性通常不如3.11/3.12
安装依赖:
pip install -r requirements.txt在项目根目录创建 .env:
DASHSCOPE_API_KEY=your_dashscope_key
GITHUB_TOKEN=your_github_token说明:
DASHSCOPE_API_KEY- 用于日报、GitHub 新项目、HN 社区反馈的 LLM 中文生成
GITHUB_TOKEN- 用于 GitHub 项目抓取,能提高 API 限额稳定性
仓库中已提供模板文件:
.env.example
实际 .env 不会上传到 GitHub。
主配置文件是:
config/ai_news.yaml
当前配置已经包含:
- 行业新闻 RSS 源
- GitHub 新项目源
- Hacker News 社区反馈源
- 生成参数、筛选阈值、输出目录配置
如果你只想微调抓取数量、关键词或阈值,直接改这个文件即可。
python scripts/run_daily.py --config config/ai_news.yaml只更新行业日报:
python scripts/run_daily.py --target industry只更新 GitHub 新项目:
python scripts/run_daily.py --target github只更新 HN 社区反馈:
python scripts/run_daily.py --target hn同时更新全部模块:
python scripts/run_daily.py --target all说明:
- 分模块更新可以节省 API 费用
- 未更新的模块会在同一天内尽量保留最近一次可用结果
- 不会把前一天的结果误当成当天内容
启动 Streamlit:
streamlit run streamlit_app.py项目默认监听:
0.0.0.0:8501
前端当前支持:
- 查看行业日报
- 查看 GitHub 新项目
- 查看 HN 社区反馈
- 按日期切换历史结果
- 在页面中分别更新三个模块
- 在页面中一键更新全部内容
每次运行后会输出到:
data/raw/<run_id>/
data/outputs/<run_id>/
data/outputs/latest/
常见文件:
data/outputs/<run_id>/daily_report.mddata/outputs/<run_id>/selected_articles.jsondata/outputs/<run_id>/github_projects.jsondata/outputs/<run_id>/hn_feedback.jsondata/outputs/<run_id>/video_script.jsondata/outputs/<run_id>/run_summary.json
其中:
latest/始终指向最近一次运行结果
当前项目做了几层兜底:
- 如果 LLM 不可用,会回退到非 LLM 生成逻辑
- 如果
chromadb或grpc被系统策略拦截,会回退到无记忆模式 - 如果某个日期最新一次运行没有某模块内容,前端会回退到该日期最近一次有内容的快照
当前仓库已排除以下本地内容,不会上传:
.envdata/bge-m3/.streamlit/secrets.toml
如果你本机走代理,当前仓库本地 Git 已配置为:
http.proxy=http://127.0.0.1:7897
https.proxy=http://127.0.0.1:7897
这只作用于当前仓库,方便后续继续推送到 GitHub。
运行测试:
pytest如果只想跑核心测试:
pytest tests/test_report.py tests/test_supplement_connectors.py tests/test_exporter_partial_updates.pylanggraph缺失时,前端仍可浏览历史结果,但不能实际触发完整 pipeline- Windows 上如果
cygrpc被策略阻止,项目会自动进入无记忆模式 - GitHub 项目描述质量依赖 README 内容和 LLM 可用性