v1.0 · 开源 & 自托管 · 多架构

— 拾级而上 · 静心阅读 — 階上悦读 Upstairs Reader

阅读是进步的阶梯,拾级而上,遇见更好的自己。 Reading is the ladder of progress — climb one article at a time.

账号 demo / 密码 demodemo

核心特性 Features

一款 RSS 阅读器,应有尽有

为想要完全掌控阅读体验的人而生——无广告、无追踪、无妥协。 Built for people who want full control. No ads, no tracking, no compromises.

多用户支持 Multi-user

支持注册、登录和独立阅读进度。收藏文章、撰写笔记,构建你自己的阅读档案。首位注册用户自动成为管理员。

AI 智能摘要 AI Summarization

一键生成文章摘要,兼容所有 OpenAI 格式 API。支持 OpenAI、Azure、阿里云百炼、Ollama 或本地大模型。

语音朗读 TTS Narration

收藏一篇文章,階上悦读自动通过 MiMo TTS 生成高质量音频。通勤路上、运动时,随时收听你的阅读列表。

声闻阅读 Newspaper & Sound

报纸式精选阅读,更以听为主:随机内容搭配 TTS 语音合成,像收听一档专属播客——通勤、运动、睡前,闭上眼睛也能读完一天。

智能导览 Smart TOC

自动提取文章小标题生成目录,锚点跳转、阅读位置一目了然。再长的文章,也能从容读完。

深色 / 浅色主题 Dark & Light

毛玻璃风格界面,自动跟随系统主题。在深色与浅色模式间无缝切换——你的眼睛会感谢你。

繁简中文切换 zh-Hant ↔ zh-Hans

内置繁简中文一键切换。在你偏好的字体下阅读——转换在渲染时完成,不会修改你的原始数据。

Fever API 兼容 Fever API

兼容市面主流 RSS 阅读器,如 Reeder、Unread 等可直接对接。桌面、平板、手机——你选择自己喜欢的阅读工具。

Docker 部署 Docker

一条命令,即刻上线。支持 amd64 / arm64 双架构,数据持久化在本地,无需任何外部服务依赖。

报纸阅读 · 声闻 Newspaper & Sound

像翻阅晨报,更像收听一档专属播客

随机精选你的阅读列表,TTS 语音合成缓缓朗读——封面、专栏、头条,都在耳边展开。通勤、运动、睡前,闭上眼睛也能读完一天。 Randomly curated from your feeds and read aloud by TTS — headlines, columns, and covers unfold in your ears, wherever you are.

階上声闻
正在播放 · NOW PLAYING
「在楼上,为自己留一盏灯」
爱范儿 · 早报 · 约 12 分钟

播放列表 · 本期精选

  • 科技半导体行业周报:三个关键信号08:24
  • 生活把阅读变成习惯的 5 个方法06:12
  • 设计毛玻璃界面为什么让人舒服04:58
  • 随笔拾级而上,与一本书重逢07:33

↑ 声闻模式示意 —— 你的订阅源,读给你听

产品预览 Preview

亲眼看看

实际界面截图,所见即所得。 Real screenshots from the running app. What you see is what you get.

声闻页面 - 报纸视图与语音朗读
声闻页面 · 像播客一样听文章
详情页暗黑模式 - AI 摘要与目录
详情页 · 深色主题 + AI 摘要
个人页面 - 公共个人主页
个人页面 · 公开收藏与笔记
技术栈 Tech Stack

简单、熟悉、可控

没有复杂的构建流水线,没有前端框架疲劳。干净、可维护的代码,所见即所得。 No complicated build pipelines. Clean, maintainable code that just works.

Python 3.10+ Flask SQLite feedparser OpenAI API 原生 JavaScript CSS 自定义属性 Docker · 多架构 Docker Compose MiMo TTS Jinja2 REST API
0
npm 依赖
1
条命令部署
无限制
订阅源数量
2
架构 · amd64 / arm64
快速开始 Quick Start

几分钟内即可上线

只需一条命令。数据持久化在本地,无需任何外部服务。 One command is all it takes. Data stays local — zero external dependencies.

Docker 部署 镜像 · 多架构

# 一条命令上线
docker run -d --name upstairs-reader \
  -p 5321:5321 \
  -v $(pwd)/data:/data \
  -e DB_PATH=/data/rss.db \
  ztshia/upstairs-reader:latest
查看 Docker Hub →

本地开发 Python

# 克隆仓库并启动
git clone https://github.com/ztshia/upstairs-reader.git
cd upstairs-reader
pip install -r requirements.txt
python app.py
打开 http://localhost:5321 →

💡 数据保存在 $(pwd)/data/rss.db;Linux 服务器如遇权限问题:chown -R 1000:1000 data。首位注册用户自动成为管理员。

API 参考 API Reference

REST API,完整开放

Web 界面能做的,API 都能做。集成、扩展、自动化,一切尽在掌握。 Everything the web UI does is available through the API. Integrate, extend, automate.

📡 订阅源管理

GET
/api/feeds
获取所有订阅源及文章数量
POST
/api/feeds
通过 URL 添加新订阅源
PUT
/api/feeds/:id
更新订阅源标题或分组
DELETE
/api/feeds/:id
删除订阅源及其所有文章

📄 文章操作

GET
/api/items
获取文章列表,支持筛选与分页
GET
/api/items/:id
获取单篇文章详情
PUT
/api/items/:id/read
标记已读 / 未读
PUT
/api/items/:id/star
切换收藏 → 自动触发 AI 摘要 + TTS

🔐 认证与设置

POST
/api/auth/register
创建新账户
POST
/api/auth/login
登录 → 返回 API 密钥
POST
/api/ai/summarize/:id
生成 AI 摘要
GET
/api/stats
获取订阅源 / 文章 / 未读统计

🔗 集成接口

GET / POST
/api/fever
Fever API 端点 → 兼容主流 RSS 客户端
GET
/api/user/:username/profile
公开个人主页,含收藏与笔记
部署方案 Deployment

随处部署

VPS、家庭服务器、NAS……同一套代码,一致的体验。 VPS, home server, or NAS — same code, same experience.

☁️ 云服务器 (VPS)

拉取镜像 docker run 一条命令,用 nginx 或 Caddy 反向代理将域名指向 localhost:5321,再通过 Let's Encrypt 一键配置 HTTPS。

🏠 家庭服务器 / 树莓派

镜像支持 amd64 / arm64 双架构——树莓派、迷你主机、旧笔记本,只要在局域网内,就能为你提供阅读服务。

📦 NAS(群晖 / 威联通)

支持 Docker 的 NAS 直接拉取镜像;或安装 Python 3,使用国内镜像加速 pip 安装依赖后 python app.py。数据完全存储在你的硬件上,隐私无忧。