一个将多源信息自动汇总到 Notion 的每日简报脚本。
- 项目可运行,适合个人使用与二次开发。
- 当前仓库以“测试可落地”为优先,已支持故障降级写入 Notion。
- 你可以先公开仓库,再按需继续迭代。
- 哈尔滨南岗区天气(QWeather)
- GitHub 热门仓库(AI 优先,失败回退有趣项目)
- 哔哩哔哩热门视频
- 米哈游/原神资讯(RSS)
- YouTube 热门视频(可选)
- 小黑盒热帖
- Notion 页面创建与多模块分块写入
main.py:主流程与数据源适配requirements.txt:依赖tests/:最小测试集.github/workflows/daily-brief.yml:每日定时任务.env.example:环境变量模板
python -m venv .venv
source .venv/bin/activate
pip install -r requirements.txtcp .env.example .env
set -a
source .env
set +apython main.py成功时会输出:
Notion 页面创建成功: https://www.notion.so/...
必需:
WEATHER_API_KEYGH_TOKENNOTION_TOKENNOTION_DATABASE_ID
可选:
WEATHER_LOCATION_ID:已知 location id 时可直接指定QWEATHER_EDITION:dev(默认)或commercialQWEATHER_GEO_URL:手动覆盖天气地理接口QWEATHER_NOW_URL:手动覆盖天气实时接口ALLOW_WEATHER_FALLBACK:true/false,天气失败时使用占位文案继续写入 NotionYOUTUBE_API_KEY:未配置则跳过 YouTube 模块YOUTUBE_REGION_CODE:默认CNYOUTUBE_VIDEO_CATEGORY_ID:可留空
推荐字段:
- 标题列:
Name或Title(类型为title) - 天气列:
Weather(类型为rich_text,推荐但非强制)
兼容行为:
- 没有
Weather时,会尝试使用第一个rich_text列。 - 如果没有任何
rich_text列,天气信息会写入正文模块,不会阻断页面创建。
工作流文件:.github/workflows/daily-brief.yml
- 默认每天 UTC 01:00 执行
- 需要在仓库 Secrets 中配置必需凭据
30 8 * * * cd /path/to/auto-dashboard && /usr/bin/env bash -lc 'source .venv/bin/activate && python main.py >> run.log 2>&1'- 天气接口报 404/401/403:检查 QWeather 版本与域名是否匹配(
devapivsapi)。 - Notion 403:确认数据库已分享给 Integration。
- 单个来源失败:脚本会降级继续,页面仍会创建。
- 已删除/轮换所有曾在聊天、终端、截图中出现的旧密钥
-
.env不在 Git 跟踪中(仅保留.env.example) - 仓库中无硬编码 Token/API Key
- GitHub 仓库已配置 Actions Secrets
- 开启 Secret scanning / Push protection(若可用)
本项目仅用于学习与个人效率工具场景。请遵守各数据源平台的服务条款与频率限制。
安全策略请见 SECURITY.md。