# we-mp-rss **Repository Path**: Goal_sun/we-mp-rss ## Basic Information - **Project Name**: we-mp-rss - **Description**: ✨符合阅读习惯的微信公众号助手、微信公众号转MarkDown、微信公众号转PDF、定时更新订阅公众号文章、生成微信公众号RSS订阅源、导出微信公众号订阅源、支持微信公众号Webhook/微信公众号API/AI Agent接入微信公众号微信公众号、订阅微信公众号、微信公众号助手 、微信公众号阅读、微信公众号接口、微信公众号爬虫、微信公众号监测、标签订阅微信公众号、微信公众号源、微信公众号读书、微信公 - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: main - **Homepage**: https://werss.csol.store - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 42 - **Created**: 2026-03-28 - **Last Updated**: 2026-03-28 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README
[Paypal](https://www.paypal.com/ncp/payment/PUA72WYLAV5KW)
## 界面截图
- 登录界面





更多项目原理,请参考[项目文档](https://deepwiki.com/rachelos/we-mp-rss/3.5-notification-system)。
## 安装指南
# 二次开发
## 环境需求
- Python>=3.13.1
- Node>=20.18.3
### 后端服务
1. 克隆项目
```bash
git clone https://github.com/rachelos/we-mp-rss.git
cd we-mp-rss
```
2. 安装Python依赖
```bash
pip install -r requirements.txt
```
3. 配置数据库
复制并修改配置文件:
```bash
cp config.example.yaml config.yaml
copy config.example.yaml config.yaml
```
3. 启动服务
```bash
python main.py -job True -init True
```
## 前端开发
1. 安装前端依赖
```bash
cd we-mp-rss/web_ui
yarn install
```
2. 启动前端服务
```bash
yarn dev
```
3. 访问前端页面
```
http://localhost:3000
```
# 环境变量配置
以下是 `config.yaml` 中支持的环境变量配置:
| 环境变量 | 默认值 | 描述 |
|----------|--------|------|
| `APP_NAME` | `we-mp-rss` | 应用名称 |
| `SERVER_NAME` | `we-mp-rss` | 服务名称 |
| `WEB_NAME` | `WeRSS微信公众号订阅助手` | 前端显示名称 |
| `WERSS_AUTH_WEB` | `False` | 通过web方式授权 |
| `BROWSER_TYPE` | `firefox` | 浏览器类型默认firefox |
| `SEND_CODE` | `True` | 是否发送授权二维码通知 |
| `CODE_TITLE` | `WeRSS授权二维码` | 二维码通知标题 |
| `ENABLE_JOB` | `True` | 是否启用定时任务 |
| `AUTO_RELOAD` | `False` | 代码修改自动重启服务 |
| `THREADS` | `2` | 最大线程数 |
| `DB` | `sqlite:///data/db.db` | 数据库连接字符串 |
| `DINGDING_WEBHOOK` | 空 | 钉钉通知Webhook地址 |
| `WECHAT_WEBHOOK` | 空 | 微信通知Webhook地址 |
| `FEISHU_WEBHOOK` | 空 | 飞书通知Webhook地址 |
| `CUSTOM_WEBHOOK` | 空 | 自定义通知Webhook地址 |
| `SECRET_KEY` | `we-mp-rss` | 密钥 |
| `USER_AGENT` | `Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36/WeRss` | 用户代理 |
| `SPAN_INTERVAL` | `10` | 定时任务执行间隔(秒) |
| `WEBHOOK.CONTENT_FORMAT` | `html` | 文章内容发送格式 |
| `PORT` | `8001` | API服务端口 |
| `DEBUG` | `False` | 调试模式 |
| `MAX_PAGE` | `5` | 最大采集页数 |
| `RSS_BASE_URL` | 空 | RSS域名地址 |
| `RSS_LOCAL` | `False` | 是否为本地RSS链接 |
| `RSS_TITLE` | 空 | RSS标题 |
| `RSS_DESCRIPTION` | 空 | RSS描述 |
| `RSS_COVER` | 空 | RSS封面 |
| `RSS_FULL_CONTEXT` | `True` | 是否显示全文 |
| `RSS_ADD_COVER` | `True` | 是否添加封面图片 |
| `RSS_CDATA` | `False` | 是否启用CDATA |
| `RSS_PAGE_SIZE` | `30` | RSS分页大小 |
| `TOKEN_EXPIRE_MINUTES` | `4320` | 登录会话有效时长(分钟) |
| `CACHE.DIR` | `./data/cache` | 缓存目录 |
| `ARTICLE.TRUE_DELETE` | `False` | 是否真实删除文章 |
| `GATHER.CONTENT` | `True` | 是否采集内容 |
| `GATHER.MODEL` | `app` | 采集模式 |
| `GATHER.CONTENT_AUTO_CHECK` | `False` | 是否自动检查未采集文章内容 |
| `GATHER.CONTENT_AUTO_INTERVAL` | `59` | 自动检查未采集文章内容的时间间隔(分钟) |
| `GATHER.CONTENT_MODE` | `web` | 内容修正模式 |
| `SAFE_HIDE_CONFIG` | `db,secret,token,notice.wechat,notice.feishu,notice.dingding` | 需要隐藏的配置信息 |
| `SAFE_LIC_KEY` | `RACHELOS` | 授权加密KEY |
| `LOG_FILE` | 空 | 日志文件路径 |
| `LOG_LEVEL` | `INFO` | 日志级别 |
| `EXPORT_PDF` | `False` | 是否启用PDF导出功能 |
| `EXPORT_PDF_DIR` | `./data/pdf` | PDF导出目录 |
| `EXPORT_MARKDOWN` | `False` | 是否启用markdown导出功能 |
| `EXPORT_MARKDOWN_DIR` | `./data/markdown` | markdown导出目录 |
# 使用说明
1. 启动服务后,访问 `http://<您的IP>:8001` 进入管理界面。
2. 使用微信扫码授权后,即可添加和管理订阅。
3. 定时任务会自动更新内容,并生成RSS订阅链接。
## Access Key 认证
WeRSS 支持使用 Access Key (AK) 进行 API 认证,适用于程序化访问和自动化脚本。
### 创建 Access Key
1. 登录 WeRSS 管理界面
2. 进入"Access Key 管理"页面
3. 点击"创建 Access Key"按钮
4. 填写名称、描述、权限和过期时间
5. 创建成功后,妥善保存 Access Key 和 Secret Key(Secret Key 只显示一次)
### 使用 Access Key 调用 API
在请求头中添加 `Authorization` 字段,格式为 `AK-SK {access_key}:{secret_key}`:
```bash
curl -H "Authorization: AK-SK your_access_key:your_secret_key" \
http://localhost:8001/api/feeds
```
#### Python 示例
```python
import requests
access_key = "your_access_key"
secret_key = "your_secret_key"
base_url = "http://localhost:8001"
headers = {
"Authorization": f"AK-SK {access_key}:{secret_key}"
}
# 获取订阅列表
response = requests.get(f"{base_url}/api/feeds", headers=headers)
print(response.json())
```
#### JavaScript 示例
```javascript
const accessKey = "your_access_key";
const secretKey = "your_secret_key";
const baseUrl = "http://localhost:8001";
const headers = {
"Authorization": `AK-SK ${accessKey}:${secretKey}`
};
// 获取订阅列表
fetch(`${baseUrl}/api/feeds`, { headers })
.then(res => res.json())
.then(data => console.log(data));
```
详细文档请参考:[AK 认证指南](docs/AK_Authentication_Guide.md)
## HTML 内容过滤规则
WeRSS 支持自定义 HTML 内容过滤规则,可以在采集文章内容时自动清理不需要的元素,如广告、推荐链接等。
### 功能特点
- **全局规则**:不指定公众号时,规则对所有公众号生效
- **公众号专属规则**:可以为特定公众号或多个公众号配置不同的过滤规则
- **优先级控制**:支持设置规则优先级,数值越大越先执行
- **多种过滤方式**:
- 按 ID 移除元素
- 按 CSS Class 移除元素
- 按 CSS 选择器移除元素
- 按属性过滤元素
- 按正则表达式移除内容
- 移除常见 HTML 元素(script、style、注释等)
### 使用方法
1. 登录管理界面,进入「过滤规则」页面
2. 点击「添加过滤规则」
3. 配置规则:
- **选择公众号**:可选多个公众号,不选择则为全局规则
- **规则名称**:便于识别的规则名称
- **优先级**:数值越大优先级越高(0-100)
- **过滤配置**:
- 移除 ID 元素:每行一个 ID,如 `ad-banner`
- 移除 Class 元素:每行一个 class,如 `ad-container`
- CSS 选择器:如 `div.ad-wrapper`、`.recommend-list > li`
- 属性过滤:如 `data-type="ad"`
- 正则表达式:用于精确匹配和移除内容
### 示例配置
#### 全局广告过滤规则
```
规则名称:全局广告清理
公众号:不选择(全局规则)
优先级:10
移除 ID:ad-banner、footer-nav
移除 Class:ad-container、recommend-box
CSS 选择器:div.ad-wrapper、.recommend-list > li
移除常见 HTML 元素:开启
```
#### 特定公众号规则
```
规则名称:某公众号专属过滤
公众号:选择特定公众号
优先级:20(高于全局规则,会先执行)
移除 Class:custom-ad、special-banner
```
### API 接口
过滤规则支持完整的 REST API 操作:
```bash
# 获取过滤规则列表
GET /api/filter-rules
# 创建过滤规则
POST /api/filter-rules
{
"mp_id": "[]", // 空数组表示全局规则
"rule_name": "全局广告过滤",
"remove_ids": ["ad-banner"],
"remove_classes": ["ad-container"],
"priority": 10
}
# 更新过滤规则
PUT /api/filter-rules/{rule_id}
# 删除过滤规则
DELETE /api/filter-rules/{rule_id}
```
# 常见问题
- **如何修改数据库连接?**
在 `config.yaml` 中修改 `db` 配置项,或通过环境变量 `DB` 覆盖。
- **如何启用钉钉通知?**
在 `config.yaml` 中填写 `notice.dingding` 或通过环境变量 `DINGDING_WEBHOOK` 设置。
- **如何调整定时任务间隔?**
修改 `config.yaml` 中的 `interval` 或通过环境变量 `SPAN_INTERVAL` 设置。
- **如何开启定时任务?**
1、修改 `config.yaml` 中的 `ENABLE_JOB` 或通过环境变量 `ENABLE_JOB` 设置 为True。
2、在UI界面的消息任务中,添加定时任务。
- **如何修改文章内容发送格式?**
修改 `config.yaml` 中的 `WEBHOOK.CONTENT_FORMAT` 或通过环境变量 `WEBHOOK.CONTENT_FORMAT` 设置。
- **默认帐号、密码是多少?**
- 默认帐号:admin
- 默认密码:admin@123
- **数据库连接串示例**
- 调整环境变量DB为您的数据库连接字符串。
- SQLite 连接示例:
```
sqlite:///data/db.db
```
- PostgreSQL 连接示例:
```
postgresql://