Quick Start
docker run -d --name we-mp-rss -p 8001:8001 -v ./data:/app/data ghcr.io/rachelos/we-mp-rss:latest
Visit http://:8001/ to get started
docker stop we-mp-rss
docker rm we-mp-rss
docker pull ghcr.io/rachelos/we-mp-rss:latest
# If you added other parameters, please modify accordingly
docker run -d --name we-mp-rss -p 8001:8001 -v ./data:/app/data ghcr.io/rachelos/we-mp-rss:latest
docker run -d --name we-mp-rss -p 8001:8001 -v ./data:/app/data rachelos/we-mp-rss:latest
docker run -d --name we-mp-rss -p 8001:8001 -v ./data:/app/data docker.1ms.run/rachelos/we-mp-rss:latest
cyChaos, 子健MeLift, 晨阳, 童总, 胜宇, 军亮, 余光, 一路向北, 水煮土豆丝, 人可, 须臾, 澄明, 五梭,Jarvis,三三,哈基米,苹果
<a href="https://github.com/RSSNext/Folo/stargazers"><img src="https://img.shields.io/github/stars/RSSNext/Follow?color=ffcb47&labelColor=black&style=flat-square&logo=github&label=Stars" /></a>
<a href="https://github.com/RSSNext/Folo/graphs/contributors"><img src="https://img.shields.io/github/contributors/RSSNext/Folo?style=flat-square&logo=github&label=Contributors&labelColor=black" /></a>
<a href="https://status.follow.is/" target="_blank"><img src="https://status.follow.is/api/badge/18/uptime?color=%2344CC10&labelColor=black&style=flat-square"/></a>
<a href="https://github.com/RSSNext/Folo/releases"><img src="https://img.shields.io/github/downloads/RSSNext/Folo/total?color=369eff&labelColor=black&logo=github&style=flat-square&label=Downloads" /></a>
<a href="https://x.com/intent/follow?screen_name=folo_is"><img src="https://img.shields.io/badge/Follow-blue?color=1d9bf0&logo=x&labelColor=black&style=flat-square" /></a>
<a href="https://discord.gg/followapp" target="_blank"><img src="https://img.shields.io/badge/dynamic/json?url=https%3A%2F%2Fdiscord.com%2Fapi%2Finvites%2Ffollowapp%3Fwith_counts%3Dtrue&query=approximate_member_count&color=5865F2&label=Discord&labelColor=black&logo=discord&logoColor=white&style=flat-square"/></a>
A tool for subscribing to and managing WeChat Official Account content, providing RSS subscription functionality.
If you find We-MP-RSS helpful, feel free to buy me a beer!
Login Interface

Main Interface

QR Code Authorization

Add Subscription

Client Application

The project adopts a front-end and back-end separation architecture:
- Backend: Python + FastAPI
- Frontend: Vue 3 + Vite
- Database: SQLite (default)/MySQL

For more project principles, please refer to the Project Documentation.
WeRSS supports custom HTML content filtering rules to automatically clean unwanted elements during article content collection, such as ads, recommendation links, etc.
ad-bannerad-containerdiv.ad-wrapper, .recommend-list > lidata-type="ad"# Get filter rules list
GET /api/filter-rules
# Create filter rule
POST /api/filter-rules
{
"mp_id": "[]", // Empty array for global rules
"rule_name": "Global Ad Filter",
"remove_ids": ["ad-banner"],
"remove_classes": ["ad-container"],
"priority": 10
}
# Update filter rule
PUT /api/filter-rules/{rule_id}
# Delete filter rule
DELETE /api/filter-rules/{rule_id}
git clone https://github.com/rachelos/we-mp-rss.git
cd we-mp-rss
pip install -r requirements.txt
cp config.example.yaml config.yaml
copy config.example.yaml config.yaml
python main.py -job True -init True
cd we-mp-rss/web_ui
yarn install
yarn dev
http://localhost:3000
The following are the environment variable configurations supported in config.yaml:
| Environment Variable | Default Value | Description |
|---|---|---|
APP_NAME |
we-mp-rss |
Application name |
SERVER_NAME |
we-mp-rss |
Server name |
WEB_NAME |
WeRSS微信公众号订阅助手 |
Frontend display name |
SEND_CODE |
True |
Whether to send authorization QR code notifications |
CODE_TITLE |
WeRSS授权二维码 |
QR code notification title |
ENABLE_JOB |
True |
Whether to enable scheduled tasks |
AUTO_RELOAD |
False |
Auto-restart service on code changes |
THREADS |
2 |
Maximum number of threads |
DB |
sqlite:///data/db.db |
Database connection string |
DINGDING_WEBHOOK |
Empty | DingTalk notification webhook URL |
WECHAT_WEBHOOK |
Empty | WeChat notification webhook URL |
FEISHU_WEBHOOK |
Empty | Feishu notification webhook URL |
CUSTOM_WEBHOOK |
Empty | Custom notification webhook URL |
SECRET_KEY |
we-mp-rss |
Secret key |
USER_AGENT |
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36/WeRss |
User agent |
SPAN_INTERVAL |
10 |
Scheduled task execution interval (seconds) |
WEBHOOK.CONTENT_FORMAT |
html |
Article content sending format |
PORT |
8001 |
API service port |
DEBUG |
False |
Debug mode |
MAX_PAGE |
5 |
Maximum scraping pages |
RSS_BASE_URL |
Empty | RSS domain address |
RSS_LOCAL |
False |
Whether to use local RSS links |
RSS_TITLE |
Empty | RSS title |
RSS_DESCRIPTION |
Empty | RSS description |
RSS_COVER |
Empty | RSS cover |
RSS_FULL_CONTEXT |
True |
Whether to display full text |
RSS_ADD_COVER |
True |
Whether to add cover images |
RSS_CDATA |
False |
Whether to enable CDATA |
RSS_PAGE_SIZE |
30 |
RSS pagination size |
TOKEN_EXPIRE_MINUTES |
4320 |
Login session validity duration (minutes) |
CACHE.DIR |
./data/cache |
Cache directory |
ARTICLE.TRUE_DELETE |
False |
Whether to truly delete articles |
GATHER.CONTENT |
True |
Whether to collect content |
GATHER.MODEL |
app |
Collection mode |
GATHER.CONTENT_AUTO_CHECK |
False |
Whether to automatically check uncollected article content |
GATHER.CONTENT_AUTO_INTERVAL |
59 |
Time interval for automatically checking uncollected article content (minutes) |
GATHER.CONTENT_MODE |
web |
Content correction mode |
SAFE_HIDE_CONFIG |
db,secret,token,notice.wechat,notice.feishu,notice.dingding |
Configuration information to hide |
SAFE_LIC_KEY |
RACHELOS |
Authorization encryption key |
LOG_FILE |
Empty | Log file path |
LOG_LEVEL |
INFO |
Log level |
EXPORT_PDF |
False |
Whether to enable PDF export functionality |
$ claude mcp add we-mp-rss \
-- python -m otcore.mcp_server <graph>