此项目是一个通过飞书机器人每日推送科技和 AI 资讯的自动化脚本,数据来源于 NewsAPI。
项目支持通过不同的飞书 Webhook 分别推送科技资讯与 AI 资讯。
TechNews/
├── config/
│ ├── __init__.py
│ └── settings.py # 加载环境变量
├── news/
│ ├── __init__.py
│ ├── fetcher.py # 获取新闻
│ └── filter.py # 过滤新闻
├── feishu/
│ ├── __init__.py
│ ├── sender.py # 向飞书 Webhook 推送消息
│ └── signature.py # 计算飞书签名
├── main.py # 主入口文件
└── README.md # 项目文档
- Python 3.10+
- 自定义飞书机器人(拥有 Webhook 及签名密钥)
- NewsAPI API 密钥,用于获取新闻数据
-
克隆代码库
git clone https://github.com/qiu121/TechNews.git cd TechNews
-
配置虚拟环境
python -m venv .venv
Linux
source .venv/bin/activate
windows
./venv/Scripts/activate
-
安装依赖
pip install -r requirements.txt
-
Github Actions 配置
本项目通过 GitHub Actions 定时推送新闻资讯, 需要在 GitHub 项目的
Settings
>Secrets and variables
>Actions
中配置以下 secrets: 以便在运行工作流时使用FEISHU_WEBHOOK_URL
:飞书科技资讯 Webhook URLFEISHU_SIGNING_KEY
:飞书科技资讯签名密钥FEISHU_AI_WEBHOOK_URL
:飞书 AI 资讯 Webhook URLFEISHU_AI_SIGNING_KEY
:飞书 AI 资讯签名密钥NEWS_API_KEY
:NewsAPI key
获取 NewsAPI key 请访问: https://newsapi.org/register
请注意,这些变量在 GitHub Actions 的工作流中通过
secrets
设置,而不是在本地.env
文件中设置。
在项目根目录下运行以下命令(用于本地开发调试):
python main.py
config/settings.py
:从环境变量加载配置news/fetcher.py
:从 NewsAPI 获取新闻数据news/filter.py
:过滤资讯feishu/sender.py
:将筛选后的新闻推送至飞书feishu/signature.py
:计算飞书 Webhook 所需签名
程序会打印每条新闻的标题、描述、链接和发布日期,并将它们发布到指定的飞书 Webhook。
- NewsAPIException:请检查 API 密钥是否有效,日期格式是否正确。
- 签名错误:确保 GitHub Actions 中的签名密钥正确。
- Webhook 错误:请确认 Webhook 设置及飞书机器人权限配置。