用 AI 每天自动过滤新闻,只保留你感兴趣的主题(Social networking、直播、TMT并购、手机游戏、AI)。
- 🤖 AI 智能过滤:使用 LLM 判断新闻相关性
- ⏰ 自动运行:每天定时抓取、过滤
- 📧 邮件通知:结果自动发送到 GitHub Issue,GitHub 邮件通知到你
- 💰 完全免费:GitHub Actions 免费额度即可运行
- 🔧 易于配置:JSON 文件管理 RSS 源和过滤主题,轻松增减
点击右上角的 "Fork" 按钮,将项目复制到你自己的 GitHub 账户。
在你的 Fork 仓库中配置以下 Secrets(Settings → Secrets and variables → Actions → New repository secret):
| Secret 名称 | 说明 | 示例 | 必填 |
|---|---|---|---|
OPENAI_API_KEY |
OpenAI 兼容的 API 密钥 | sk-xxxxx |
✅ 是 |
OPENAI_BASE_URL |
API 基础 URL | https://integrate.api.nvidia.com |
❌ 否(有默认值,会自动补 /v1) |
MODEL_NAME |
LLM 模型名称 | moonshotai/kimi-k2-instruct |
❌ 否(有默认值) |
重要提醒:如果你用的是第三方的 OpenAI 兼容 API(如本项目默认的 NVIDIA Integrate API),请确保你有足够的速率额度。
直接在 GitHub 编辑 rss_sources.json ⚡ 快捷方式
编辑仓库根目录的 rss_sources.json 文件:
{
"sources": [
{
"url": "https://techcrunch.com/feed/",
"category": "Technology",
"enabled": true
},
{
"url": "https://example.com/feed",
"category": "News",
"enabled": true
}
]
}如何添加新源:
- 在
sources数组中添加一个新的对象 - 填写
url(必填)、category(分类)、enabled(是否启用) - 提交更改到仓库,下次运行会自动使用新配置
如何暂时禁用某个源:将 enabled 设为 false
默认源:项目已包含 24 个精选 RSS 源,涵盖科技、金融、VC 等领域。
直接在 GitHub 编辑 filter_config.json ⚡ 快捷方式
或者手动编辑仓库根目录的 filter_config.json 文件:
{
"filter_topics": [
{
"topic": "Social networking",
"description": "社交网络"
},
{
"topic": "live streaming",
"description": "直播"
},
{
"topic": "TMT acquisitions",
"description": "TMT并购"
},
{
"topic": "mobile gaming",
"description": "手机游戏"
},
{
"topic": "AI",
"description": "人工智能"
}
]
}如何添加新主题(比如"区块链"):
- 点击上面的快捷链接或在文件列表中找到
filter_config.json - 点击编辑按钮(✏️)
- 在
filter_topics数组中添加:
{
"topic": "Blockchain",
"description": "区块链"
}- 点击 "Commit changes"
如何删除某个主题:直接从 filter_topics 数组中删除对应的对象即可。
提交后,下次工作流运行会自动使用新的主题列表。
在你的 Fork 仓库中:
- 进入 "Actions" 标签页
- 找到 "Daily News Filter" 工作流
- 点击右侧的 "Enable workflow"(如果还没启用)
- 点击 "Run workflow" 手动运行一次进行测试
为了让 GitHub 自动发送邮件通知你:
- 进入仓库首页,点击右上角的 "Watch" 按钮
- 选择 "All Activity" 或 "Custom" 并勾选 "Issues"
- 每次运行结果会创建一个带时间戳的 Issue,你会收到邮件
- 定时运行:每天 UTC 01:00(北京时间 09:00)自动执行
- 抓取新闻:从配置的 RSS 源获取最新新闻
- AI 过滤:批量调用 LLM 判断每条新闻是否与你关注的主题相关
- 生成报告:生成 Markdown 和 JSON 格式的结果
- 创建 Issue:在仓库中创建一个新的 Issue(带时间戳标题)
- 邮件通知:GitHub 自动发送邮件到你
每次运行会生成一个文件:
相关新闻_YYYYMMDD_HHMMSS.md- Markdown 格式的新闻列表
这个文件会:
- 在 Issue 正文完整展示
- 自动上传到 GitHub Actions Artifacts(保留 90 天)
只需分享你的 Fork 链接给他人,让他们:
- Fork 你的仓库(或直接克隆)
- 按照上述步骤配置他们的
OPENAI_API_KEY - (可选)修改
rss_sources.json来定制他们的 RSS 源 - (可选)修改
filter_config.json来定制过滤主题 - 启用 Actions 工作流
所有 Secrets 都可通过工作流文件读取,默认值如下:
| 环境变量 | 默认值 | 说明 |
|---|---|---|
BATCH_SIZE |
50 | 每批次处理的新闻数量 |
BATCH_DELAY |
70 | 批次之间的等待时间(秒) |
REQUEST_DELAY |
0.2 | LLM 请求之间的等待时间(秒) |
CLASSIFY_BATCH_SIZE |
10 | 每次 LLM 调用判断的新闻条数 |
你可以通过添加对应的 Secret 来覆盖这些默认值。
症状:日志中频繁出现 API 速率限制。
解决方案:
- 增加
BATCH_DELAYSecret 值(如 120) - 减少
CLASSIFY_BATCH_SIZE(如 5) - 升级 API 计划以获得更高速率
症状:运行超过 60 分钟后被取消。
解决方案:增加 .github/workflows/daily_news.yml 中的 timeout-minutes 值。
症状:Issue 创建了但没有邮件通知。
解决方案:
- 检查 GitHub 邮件通知设置(Settings → Notifications)
- 确保仓库 Watch 设置为 "All Activity" 或至少包含 "Issues"
如果你想本地测试:
# 安装依赖
pip install -r requirements.txt
# 设置环境变量
export OPENAI_API_KEY="your_key_here"
# 运行脚本
python batch_process_railway.pyMIT License - 自由使用、修改和分享。
欢迎提交 Issue 和 Pull Request!