feat: add app WeWe-RSS

This commit is contained in:
arch3rPro
2025-07-26 23:51:38 +08:00
parent 0837955650
commit b11aec93c5
13 changed files with 464 additions and 1 deletions

View File

@@ -287,6 +287,29 @@ AI驱动的开源代码知识库与文档协作平台支持多模型、多数
</tr> </tr>
</table> </table>
<table>
<tr>
<td width="100%" align="center">
<a href="./apps/wewe-rss/README.md">
<img src="./apps/wewe-rss/logo.png" width="60" height="60" alt="WeWe RSS">
<br><b>WeWe RSS</b>
</a>
更优雅的微信公众号订阅方式支持RSS输出和全文内容
<kbd>2.6.1</kbd> • [官网链接](https://github.com/cooderl/wewe-rss)
</td>
<td width="33%" align="center">
</td>
<td width="33%" align="center">
</td>
</tr>
</table>
#### 🔒 安全与网络工具 #### 🔒 安全与网络工具
<table> <table>
@@ -416,7 +439,7 @@ AI驱动的开源代码知识库与文档协作平台支持多模型、多数
<table> <table>
<tr> <tr>
<td width="33%" align="center"> <td width="100%" align="center">
<a href="./apps/new-api/README.md"> <a href="./apps/new-api/README.md">
<img src="./apps/new-api/logo.png" width="60" height="60" alt="New-API"> <img src="./apps/new-api/logo.png" width="60" height="60" alt="New-API">

View File

@@ -0,0 +1,9 @@
AUTH_CODE="password"
CONTAINER_NAME="wewe-rss"
CRON_EXPRESSION="35 5,17 * * *"
DATABASE_TYPE="sqlite"
DATA_PATH="./data"
FEED_MODE="fulltext"
MAX_REQUEST_PER_MINUTE=60
PANEL_APP_PORT_HTTP=40332
SERVER_ORIGIN_URL="http://1.2.3.4:40332"

View File

@@ -0,0 +1,62 @@
additionalProperties:
formFields:
- default: "40332"
edit: true
envKey: PANEL_APP_PORT_HTTP
labelEn: Port
labelZh: 端口
required: true
rule: paramPort
type: number
- default: "./data"
edit: true
envKey: DATA_PATH
labelEn: Data Path
labelZh: 数据路径
required: true
type: text
- default: "sqlite"
disabled: true
envKey: DATABASE_TYPE
labelEn: Database Type
labelZh: 数据库类型
required: true
type: text
- default: "password"
edit: true
envKey: AUTH_CODE
labelEn: Auth Code
labelZh: 授权码
random: true
required: true
rule: paramComplexity
type: password
- default: "http://1.2.3.4:40332"
edit: true
envKey: SERVER_ORIGIN_URL
labelEn: External URL
labelZh: 外部访问地址
required: true
rule: paramExtUrl
type: text
- default: "fulltext"
edit: true
envKey: FEED_MODE
labelEn: Feed Mode
labelZh: 提取模式
required: false
type: text
- default: "35 5,17 * * *"
edit: true
envKey: CRON_EXPRESSION
labelEn: Cron Expression
labelZh: 定时更新表达式
required: false
type: text
- default: "60"
edit: true
envKey: MAX_REQUEST_PER_MINUTE
labelEn: Max Requests Per Minute
labelZh: 每分钟最大请求次数
required: false
type: number

View File

@@ -0,0 +1,24 @@
services:
wewe-rss:
image: "cooderl/wewe-rss-sqlite:v2.6.1"
container_name: ${CONTAINER_NAME}
restart: always
networks:
- 1panel-network
ports:
- "${PANEL_APP_PORT_HTTP}:4000"
environment:
- DATABASE_TYPE=${DATABASE_TYPE}
- AUTH_CODE=${AUTH_CODE}
- FEED_MODE=${FEED_MODE}
- CRON_EXPRESSION=${CRON_EXPRESSION}
- MAX_REQUEST_PER_MINUTE=${MAX_REQUEST_PER_MINUTE}
- SERVER_ORIGIN_URL=${SERVER_ORIGIN_URL}
volumes:
- ${DATA_PATH}:/app/data
labels:
createdBy: "Apps"
networks:
1panel-network:
external: true

View File

@@ -0,0 +1,14 @@
AUTH_CODE="password"
CONTAINER_NAME="wewe-rss"
CRON_EXPRESSION="35 5,17 * * *"
FEED_MODE="fulltext"
MAX_REQUEST_PER_MINUTE=60
PANEL_APP_PORT_HTTP=40332
PANEL_DB_HOST="mysql"
PANEL_DB_HOST_NAME="mysql"
PANEL_DB_NAME="wewe-rss"
PANEL_DB_PORT=3306
PANEL_DB_TYPE="mysql"
PANEL_DB_USER="wewe-rss"
PANEL_DB_USER_PASSWORD="wewe-rss"
SERVER_ORIGIN_URL="http://1.2.3.4:40332"

View File

@@ -0,0 +1,64 @@
additionalProperties:
formFields:
- default: "wewe-rss"
envKey: PANEL_DB_NAME
labelEn: Database
labelZh: 数据库名
random: true
required: true
rule: paramCommon
type: text
- default: "wewe-rss"
envKey: PANEL_DB_ROOT_PASSWORD
labelEn: Password
labelZh: 数据库用户密码
random: true
required: true
rule: paramComplexity
type: password
- default: "4000"
edit: true
envKey: PANEL_APP_PORT_HTTP
labelEn: Port
labelZh: 端口
required: true
rule: paramPort
type: number
- default: "password"
edit: true
envKey: AUTH_CODE
labelEn: Auth Code
labelZh: 授权码
random: true
required: true
rule: paramComplexity
type: password
- default: "http://1.2.3.4:4000"
edit: true
envKey: SERVER_ORIGIN_URL
labelEn: External URL
labelZh: 外部访问地址
required: true
rule: paramExtUrl
type: text
- default: "fulltext"
edit: true
envKey: FEED_MODE
labelEn: Feed Mode
labelZh: 提取模式
required: false
type: text
- default: "35 5,17 * * *"
edit: true
envKey: CRON_EXPRESSION
labelEn: Cron Expression
labelZh: 定时更新表达式
required: false
type: text
- default: "60"
edit: true
envKey: MAX_REQUEST_PER_MINUTE
labelEn: Max Requests Per Minute
labelZh: 每分钟最大请求次数
required: false
type: number

View File

@@ -0,0 +1,45 @@
services:
wewe-rss:
image: "cooderl/wewe-rss:v2.6.1"
container_name: ${CONTAINER_NAME}
restart: always
networks:
- 1panel-network
ports:
- "${PANEL_APP_PORT_HTTP}:4000"
environment:
- DATABASE_URL=mysql://root:${PANEL_DB_ROOT_PASSWORD}@${CONTAINER_NAME}-mysql:3306/${PANEL_DB_NAME}?schema=public&connect_timeout=30&pool_timeout=30&socket_timeout=30
- AUTH_CODE=${AUTH_CODE}
- FEED_MODE=${FEED_MODE}
- CRON_EXPRESSION=${CRON_EXPRESSION}
- MAX_REQUEST_PER_MINUTE=${MAX_REQUEST_PER_MINUTE}
- SERVER_ORIGIN_URL=${SERVER_ORIGIN_URL}
depends_on:
- mysql
labels:
createdBy: "Apps"
mysql:
image: mysql:8.3.0
container_name: ${CONTAINER_NAME}-mysql
command: --mysql-native-password=ON
environment:
- MYSQL_ROOT_PASSWORD=${PANEL_DB_ROOT_PASSWORD}
- TZ=Asia/Shanghai
- MYSQL_DATABASE=${PANEL_DB_NAME}
volumes:
- mysql_data:/var/lib/mysql
networks:
- 1panel-network
healthcheck:
test: ['CMD', 'mysqladmin', 'ping', '-h', 'localhost']
timeout: 45s
interval: 10s
retries: 10
networks:
1panel-network:
external: true
volumes:
mysql_data:

73
apps/wewe-rss/README.md Normal file
View File

@@ -0,0 +1,73 @@
# [WeWe RSS](https://github.com/cooderl/wewe-rss)
更优雅的微信公众号订阅方式。
![](https://cdn.jsdelivr.net/gh/xiaoY233/PicList@main/public/assets/wewe-rss.png)
![](https://img.shields.io/badge/Copyright-arch3rPro-ff9800?style=flat&logo=github&logoColor=white)
## ✨ 功能
- v2.x版本使用全新接口更加稳定
- 支持微信公众号订阅(基于微信读书)
- 获取公众号历史发布文章
- 后台自动定时更新内容
- 微信公众号RSS生成支持`.atom``.rss``.json`格式)
- 支持全文内容输出,让阅读无障碍
- 所有订阅源导出OPML
### 高级功能
- **标题过滤**:支持通过`/feeds/all.(json|rss|atom)`接口和`/feeds/:feed`对标题进行过滤
```
{{ORIGIN_URL}}/feeds/all.atom?title_include=张三
{{ORIGIN_URL}}/feeds/MP_WXS_123.json?limit=30&title_include=张三|李四|王五&title_exclude=张三丰|赵六
```
- **手动更新**:支持通过`/feeds/:feed`接口触发单个feedid更新
```
{{ORIGIN_URL}}/feeds/MP_WXS_123.rss?update=true
```
## ⚙️ 环境变量
| 变量名 | 说明 | 默认值 |
| ------------------------ | ----------------------------------------------------------------------- | --------------------------- |
| `DATABASE_URL` | **必填** 数据库地址,例如 `mysql://root:123456@127.0.0.1:3306/wewe-rss` | - |
| `DATABASE_TYPE` | 数据库类型,使用 SQLite 时需填写 `sqlite` | - |
| `AUTH_CODE` | 服务端接口请求授权码,空字符或不设置将不启用 (`/feeds`路径不需要) | - |
| `SERVER_ORIGIN_URL` | 服务端访问地址用于生成RSS完整路径 | - |
| `MAX_REQUEST_PER_MINUTE` | 每分钟最大请求次数 | 60 |
| `FEED_MODE` | 输出模式,可选值 `fulltext` (会使接口响应变慢,占用更多内存) | - |
| `CRON_EXPRESSION` | 定时更新订阅源Cron表达式 | `35 5,17 * * *` |
| `UPDATE_DELAY_TIME` | 连续更新延迟时间,减少被关小黑屋 | `60s` |
| `ENABLE_CLEAN_HTML` | 是否开启正文html清理 | `false` |
| `PLATFORM_URL` | 基础服务URL | `https://weread.111965.xyz` |
> **注意**: 国内DNS解析问题可使用 `https://weread.965111.xyz` 加速访问
## 🔔 钉钉通知
进入 wewe-rss-dingtalk 目录按照 README.md 指引部署
## 📱 使用方式
1. 进入账号管理,点击添加账号,微信扫码登录微信读书账号。
**注意不要勾选24小时后自动退出**
<img width="400" src="./assets/preview2.png"/>
2. 进入公众号源,点击添加,通过提交微信公众号分享链接,订阅微信公众号。
**添加频率过高容易被封控等24小时解封**
<img width="400" src="./assets/preview3.png"/>
## 🔑 账号状态说明
| 状态 | 说明 |
| ---------- | ------------------------------------------------------------------- |
| 今日小黑屋 | 账号被封控,等一天恢复。账号正常时可通过重启服务/容器清除小黑屋记录 |
| 禁用 | 不使用该账号 |
| 失效 | 账号登录状态失效,需要重新登录 |

26
apps/wewe-rss/data.yml Normal file
View File

@@ -0,0 +1,26 @@
name: WeWe RSS
tags:
- 实用工具
title: 更优雅的微信公众号订阅方式
description: WeWe RSS 是一个优雅的微信公众号订阅工具支持RSS输出和文章存档
additionalProperties:
key: wewe-rss
name: WeWe RSS
tags:
- Tool
shortDescZh: 更优雅的微信公众号订阅方式
shortDescEn: A more elegant way to subscribe to WeChat Official Accounts
description:
en: WeWe RSS is an elegant tool for subscribing to WeChat Official Accounts with RSS output and article archiving
zh-Hant: WeWe RSS 是一個優雅的微信公眾號訂閱工具支持RSS輸出和文章存檔
zh: WeWe RSS 是一个优雅的微信公众号订阅工具支持RSS输出和文章存档
type: website
crossVersionUpdate: true
limit: 0
recommend: 0
website: https://github.com/cooderl/wewe-rss
github: https://github.com/cooderl/wewe-rss
document: https://github.com/cooderl/wewe-rss
architectures:
- amd64
- arm64

View File

@@ -0,0 +1,14 @@
AUTH_CODE="password"
CONTAINER_NAME="wewe-rss"
CRON_EXPRESSION="35 5,17 * * *"
FEED_MODE="fulltext"
MAX_REQUEST_PER_MINUTE=60
PANEL_APP_PORT_HTTP=40332
PANEL_DB_HOST="mysql"
PANEL_DB_HOST_NAME="mysql"
PANEL_DB_NAME="wewe-rss"
PANEL_DB_PORT=3306
PANEL_DB_TYPE="mysql"
PANEL_DB_USER="wewe-rss"
PANEL_DB_USER_PASSWORD="wewe-rss"
SERVER_ORIGIN_URL="http://1.2.3.4:40332"

View File

@@ -0,0 +1,64 @@
additionalProperties:
formFields:
- default: "wewe-rss"
envKey: PANEL_DB_NAME
labelEn: Database
labelZh: 数据库名
random: true
required: true
rule: paramCommon
type: text
- default: "wewe-rss"
envKey: PANEL_DB_ROOT_PASSWORD
labelEn: Password
labelZh: 数据库用户密码
random: true
required: true
rule: paramComplexity
type: password
- default: "4000"
edit: true
envKey: PANEL_APP_PORT_HTTP
labelEn: Port
labelZh: 端口
required: true
rule: paramPort
type: number
- default: "password"
edit: true
envKey: AUTH_CODE
labelEn: Auth Code
labelZh: 授权码
random: true
required: true
rule: paramComplexity
type: password
- default: "http://1.2.3.4:4000"
edit: true
envKey: SERVER_ORIGIN_URL
labelEn: External URL
labelZh: 外部访问地址
required: true
rule: paramExtUrl
type: text
- default: "fulltext"
edit: true
envKey: FEED_MODE
labelEn: Feed Mode
labelZh: 提取模式
required: false
type: text
- default: "35 5,17 * * *"
edit: true
envKey: CRON_EXPRESSION
labelEn: Cron Expression
labelZh: 定时更新表达式
required: false
type: text
- default: "60"
edit: true
envKey: MAX_REQUEST_PER_MINUTE
labelEn: Max Requests Per Minute
labelZh: 每分钟最大请求次数
required: false
type: number

View File

@@ -0,0 +1,45 @@
services:
wewe-rss:
image: "cooderl/wewe-rss:latest"
container_name: ${CONTAINER_NAME}
restart: always
networks:
- 1panel-network
ports:
- "${PANEL_APP_PORT_HTTP}:4000"
environment:
- DATABASE_URL=mysql://root:${PANEL_DB_ROOT_PASSWORD}@${CONTAINER_NAME}-mysql:3306/${PANEL_DB_NAME}?schema=public&connect_timeout=30&pool_timeout=30&socket_timeout=30
- AUTH_CODE=${AUTH_CODE}
- FEED_MODE=${FEED_MODE}
- CRON_EXPRESSION=${CRON_EXPRESSION}
- MAX_REQUEST_PER_MINUTE=${MAX_REQUEST_PER_MINUTE}
- SERVER_ORIGIN_URL=${SERVER_ORIGIN_URL}
depends_on:
- mysql
labels:
createdBy: "Apps"
mysql:
image: mysql:8.3.0
container_name: ${CONTAINER_NAME}-mysql
command: --mysql-native-password=ON
environment:
- MYSQL_ROOT_PASSWORD=${PANEL_DB_ROOT_PASSWORD}
- TZ=Asia/Shanghai
- MYSQL_DATABASE=${PANEL_DB_NAME}
volumes:
- mysql_data:/var/lib/mysql
networks:
- 1panel-network
healthcheck:
test: ['CMD', 'mysqladmin', 'ping', '-h', 'localhost']
timeout: 45s
interval: 10s
retries: 10
networks:
1panel-network:
external: true
volumes:
mysql_data:

BIN
apps/wewe-rss/logo.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.6 KiB