公益慈善新闻日报系统 | 🇺🇸 English
⚠️ 语言切换:当前为中文版,点击上方链接切换至英文版。
将多个来源的新闻自动采集、过滤、去重,生成日报/周报/月报,定时推送到邮箱。支持 RSS、网页爬虫、搜狗微信搜索、微博热搜、RSSBridge(邮件订阅转RSS)等多类来源。
| 功能 | 说明 |
|---|---|
| 日报 | 每日 09:00 推送,只含昨日以来的新增内容 |
| 周报 | 周日 17:00 推送,汇总最近 7 天 |
| 月报 | 每月最后一天推送,汇总最近 31 天;周日月末重叠时只发月报 |
| 深度日期识别 | 多层策略(time标签/meta/JSON-LD/class选择器/全文正则/URL降级) |
| 中文→英文翻译 | 中文标题自动翻译为英文,报告双语呈现 |
| 去重存储 | 标题哈希持久化,支持日报/周报/月报独立时间窗口 |
| GitHub Actions | 零服务器、零维护,每天自动推送邮件 |
| RSSBridge | 邮件订阅、Twitter、微信等无RSS来源通过 RSSBridge 转为可采集格式 |
NewsMail/
├── .github/
│ └── workflows/
│ └── daily-briefing.yml # GitHub Actions 自动调度
├── assets/
│ └── architecture.svg # 系统架构可视化图
├── scripts/
│ ├── main.py # 主入口,支持 --daily / --weekly / --monthly
│ ├── fetch_news.py # 采集模块(18 个采集器)
│ ├── dedup_store.py # 去重与增量存储
│ ├── generate_report.py # 日报 HTML 生成
│ ├── summary_report.py # 周报/月报 HTML 生成
│ ├── send_email.py # 邮件发送(QQ邮箱 SMTP)
│ ├── deploy_rssbridge.py # RSSBridge Docker 部署脚本
│ └── utils.py # 翻译、多途径日期识别工具
├── reports/ # 生成的报告 HTML + JSON(不提交到 Git)
├── logs/ # 运行日志(不提交到 Git)
├── info_sources.md # 信息源清单(维护文档)
├── config.example.py # 配置模板
├── .gitignore
├── README.md
└── README_EN.md
无需本地环境,代码推送到 GitHub 后自动运行。
进入仓库 → Settings → Secrets and variables → Actions → New repository secret:
| Secret 名称 | 说明 | 示例 |
|---|---|---|
SENDER_EMAIL |
发件人邮箱 | your_email@qq.com |
SMTP_AUTH_CODE |
QQ邮箱 SMTP 授权码 | xxxxxxxxxxxxxx |
RECEIVER_EMAIL |
收件人邮箱 | your_email@qq.com |
SMTP_HOST |
SMTP 服务器(可选,默认 smtp.qq.com) | smtp.qq.com |
SMTP_PORT |
端口(可选,默认 465) | 465 |
MYMEMORY_API_KEY |
翻译 API Key(免费注册,可选) | xxxxxxxxxx |
SMTP 授权码获取:QQ邮箱 → 设置 → 账户 → POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务 → 开启"SMTP服务" → 获取授权码
git add .
git commit -m "feat: add GitHub Actions workflow"
git push origin main进入仓库 → Actions 页面,可以看到定时任务已就绪。
- 每天 UTC 00:00(约北京时间 08:00) 自动触发
- 可手动触发:点击 Daily Charity News Briefing → Run workflow
pip install requests feedparser beautifulsoup4 lxmlcp config.example.py scripts/config.py编辑 scripts/config.py 中的邮件信息:
EMAIL_CONFIG = {
"smtp_host": "smtp.qq.com",
"smtp_port": 465,
"sender": "your_email@qq.com",
"password": "your_smtp_auth_code", # QQ邮箱 → 设置 → 账户 → SMTP授权码
"receiver": "your_email@qq.com",
}cd daily-briefing/scripts
python main.py --daily # 手动触发日报
python main.py --weekly # 手动触发周报
python main.py --monthly # 手动触发月报工作流文件:.github/workflows/daily-briefing.yml
| 触发方式 | 说明 |
|---|---|
| 定时触发 | 每天 UTC 00:00(约北京时间 08:00)自动运行 |
| 手动触发 | GitHub Actions 页面 → Run workflow,可选日报/周报/月报/自动判断 |
| 代码推送 | 推送后自动运行一次(可作为 CI 测试) |
| 参数 | 说明 |
|---|---|
auto(默认) |
根据日期自动判断:月末发月报,周日发周报,其他发日报 |
daily |
强制发送日报 |
weekly |
强制发送周报 |
monthly |
强制发送月报 |
运行完成后,可下载 Artifacts 中的 briefing-log-N 查看完整日志(保留 7 天)。
所有信息源记录在 info_sources.md,共十大分类,90+ 来源:
- 一、政府与官方机构(中华慈善总会、民政部、中国基金会中心网等)
- 二、权威公益媒体(中国发展简报、公益时报、南都公益基金会等)
- 三、互联网平台公益频道(腾讯公益、新浪公益、网易公益、搜狐公益、凤凰网公益)
- 四、主流媒体公益频道(澎湃新闻·公益、人民网·公益、新华网·公益、央视网·公益)
- 五、公众号关键词搜索(搜狗微信,16组关键词轮搜)
- 六、微博热搜公益词
- 七、国际机构(联合国系列、UNICEF中国、乐施会、Oxfam、USAID等)
- 八、国际媒体(Devex、BBC、Guardian、Reuters、AP、New Humanitarian等)
- 九、研究机构与智库
- 十、行业聚合与热榜(今日热榜、AnyKnew)
扩展信息源:直接在 info_sources.md 追加一行,格式:
名称 | 类型 | URL或关键词 | 备注
然后修改 fetch_news.py 的采集列表即可生效。
对于没有 RSS 的来源(如 AmCham、Lingxi360 等邮件订阅),使用 RSSBridge 转为可采集格式。
cd scripts
python deploy_rssbridge.py启动后访问:http://localhost:8080
- 在邮箱中开启 IMAP(QQ邮箱 → 设置 → 账户 → IMAP)
- 在 RSSBridge Web 界面选择 Email Bridge,填写 IMAP 信息
- 点击 Generate Feed,获得 RSS 地址
- 将地址加入
info_sources.md的对应分类
本系统设计为领域无关,迁移只需修改:
REPORT_CONFIG = {
"domain": "图书出版", # 或"科技"、"教育"等
"keywords": [
"出版", "作家", "文学", "新书", "阅读", "书店",
# ... 替换为新领域关键词
]
}将 info_sources.md 中的来源替换为新领域的权威媒体和机构。
- 保留通用函数(RSS采集、搜狗微信搜索、微博热搜、聚合热榜)
- 修改/新增领域特定的采集函数(如出版社官网、行业媒体RSS)
编辑 generate_report.py 和 summary_report.py 中的 HTML 模板,调整标题和配色。
- 多层日期提取(time/meta/JSON-LD/class/正则/URL)
- 深度补充识别(访问详情页)
- 标题哈希去重(日报24h / 周报7d / 月报31d)
- 日报/周报/月报自动判断
- GitHub Actions 自动调度(零服务器维护)
- 中文标题自动翻译为英文(MyMemory API)
- RSSBridge 邮件转 RSS
- 搜狗微信搜索(公众号内容)
- 微博热搜公益词
- 聚合热榜(今日热榜、AnyKnew)
- 国际RSS(BBC/Guardian/Reuters/AP等)
| 优先级 | 任务 | 说明 |
|---|---|---|
| 🔴 高 | AmCham 采集 | 当前为公开页面抓取,如需完整内容需配置 IMAP + RSSBridge |
| 🔴 高 | Lingxi360 邮件订阅转 RSS | 需用户填写邮箱表单并配置 IMAP |
| 🟡 中 | 微信公众号直接抓取 | 目前通过搜狗微信关键词替代;RSSHub 私有部署可提升质量 |
| 🟡 中 | RSSHub 私有部署 | 比 RSSBridge 公开实例更稳定,需要一台服务器 |
| 🟡 中 | 去重准确度提升 | 可考虑加入来源域名+日期组合去重 |
| 🟡 中 | 报告 HTML 美化 | 可加入来源分布饼图、关键词云等 |
| 🟢 低 | Telegram Bot 推送 | 除邮件外增加 Telegram 通知选项 |
| 🟢 低 | CI/CD 测试 | 每次提交自动运行采集测试,确保各来源可用 |
点击展开完整来源列表
- RSS订阅:中国发展简报、公益时报、南都公益基金会、慈善时报、中国慈善联合会、中华慈善总会、中国民政部、中国基金会中心网
- 平台公益:腾讯公益、新浪公益、网易公益、搜狐公益、凤凰网公益
- 媒体公益:澎湃新闻·公益频道、人民网·公益频道、新华网·公益、央视网·公益、中国新闻网·公益
- 搜狗微信:公益、慈善、儿童救助、气候变化、NGO、社会组织、残障融合、罕见病、妇女权益、SDG、公益时报、中国发展简报、南都公益、扶贫、志愿服务
- 微博热搜:公益、慈善、儿童、气候、扶贫、志愿者
- 联合国系列:联合国中文新闻(RSS)、联合国开发计划署(RSS)、UNICEF中国、妇女署中国、世界粮食计划署中国、世卫组织中国
- 国际机构:乐施会中国(Oxfam)、国际环境与发展研究所(IIED)、USAID、英国外交部(FCDO)
- 国际媒体:Devex、Philanthropy News Digest、GlobalGiving、News Minimalist
- BBC:国际频道、环境频道、健康频道
- The Guardian:国际频道、环境频道
- Reuters:健康频道、商业频道
- AP 美联社
- New Humanitarian(人道主义新闻)
- Oxfam International / Greenpeace International
- 今日热榜·综合频道、公益频道、社会频道
- AnyKnew 热榜
- 中国政府NGO网、中华慈善总会新闻、中国社会责任新闻、中国基金会新闻、公民基金网
MIT License — 可自由使用、修改、分发。
💡 如需扩展任何功能、增加信息源、或迁移到其他领域,直接告诉我即可。