订阅这块,我之前一直用 Inoreader,它可以订阅 YouTube,界面也勉强说得过去
不过也有弊端,每次看都要翻出去
我 PC 开机即代理,这没问题,但手机不方便啊
后来 Folo 面世,我便迁了过去,体验还不错,可惜我订阅额度超了,慢慢也就很少用了

前几天逛网站发现一个自建订阅器:Miniflux v2
开源,极简风,支持 RSS / Atom / YouTube 等订阅源,后端 Go,前端 js,跑起来很轻
不过数据库只支持 PostgreSQL
git clone https://github.com/achuanya/miniflux
我不打算自编译,直接 Docker 启动
services:
miniflux:
image: miniflux/miniflux:latest
container_name: miniflux
restart: always
ports:
- "${APP_PORT}:8080"
env_file:
- .env
networks:
- default_net
networks:
default_net:
name: ${PANEL_NETWORK}
external: truedocker-compose.yml
docker-compose.yml 不做硬编码,全部由 .env 配置
# 宿主机映射端口
APP_PORT=8080
# 数据库配置
DATABASE_URL=postgres://用户名:密码@数据库地址:端口/数据库名?sslmode=disable
# 每次启动容器时自动运行数据库迁移(升级数据库结构)
RUN_MIGRATIONS=1
# 网络配置
PANEL_NETWORK=1panel-network
# 首次启动时自动创建管理员,建议设置,否则需要通过命令行进入容器创建
CREATE_ADMIN=1
ADMIN_USERNAME=账号
ADMIN_PASSWORD=密码
# 日志输出:info、error、warning
LOG_LEVEL=info
# (可选)默认的轮询时间(分钟),控制 RSS 抓取频率
# POLLING_FREQUENCY=60.env
部署完后,我发现 Miniflux 还提供了对外 API 接口,感觉之前自己做的友联页爬虫可以扔了
我这个页面早期灵感来源于 1900 的「左邻右舍」,挺实用的,打开订阅器都没它频繁

花了半小时构思项目,随后扔给 Claude Opus 4.8,强度拉到 Extra,一个对话就完美产出了,注释清晰,质量很高
git clone https://github.com/achuanya/miniflux-lite.git
这个小工具用 Go 写的,主要调用 Miniflux 的只读 API,读取数据库中已有订阅的最新一条数据,并将其转换为 JSON 文件,支持按分类聚合
使用很简单:
- 在 Miniflux 设置中创建 API_TOKEN
- 把根目录的 .env.example 重命名为 .env,按需填写
| 变量 | 说明 |
|---|---|
API_URL | Miniflux 服务器地址 |
API_TOKEN | Miniflux API 访问令牌 |
CATEGORIES | 需要聚合的分类名称(逗号分隔) |
FILE_PATH | 输出 JSON 文件路径 |
LOG_LEVEL | 日志级别(DEBUG/INFO/WARN/ERROR/…) |
LOG_FILE_PATH | 日志文件路径,留空输出到 stdout |
LOG_ENCODER | json(结构化)或 console(易读) |
MAX_CONCURRENT_GOROUTINES | 最大并发数,1 为顺序执行 |
HTTP_TIMEOUT_SECONDS | HTTP 请求超时(秒) |
HTTP_USER_AGENT | 可选,自定义 User-Agent |
编译运行后,输出为 JSON 数组:
[
{
"category": "网上邻居",
"url": "https://example.com/post",
"title": "文章标题",
"published_at": "2026-06-15T08:30:00Z",
"author": "作者昵称",
"avatar": "https://example.com/avatar.png"
}
]
头像这块,Miniflux 默认返回的是 Base64 data URI 格式的源图标
我为了页面加载速度,把博主头像都存到了 COS,你可以在 Miniflux 每个订阅源的 description 字段里填入头像 URL(如下图)

当然,你也不用一个个手填
Miniflux 可以导出现有订阅模板
把头像数据和导出的 feeds.opml 一起喂给 AI,它会帮你批量处理好
我所有订阅源头像的命名都按博主域名来命名:
blog.lhasa.icu.webp
随后再导入 Miniflux,就是这么简单
至于这个 JSON 怎么用,就看你自己了
你可以把它暴露成一个直连地址,也可以直接生成到博客的 dist 目录里
FILE_PATH=/root/code/astro-lite/dist/feed.json
这样博客构建完后,友链页直接读取 /feed.json 即可
当前这套订阅方式也不是没有问题:
由于网络错误,Miniflux 无法访问此网站:Get "https://blog.yitianshijie.net/": dial tcp 108.160.170.43:443: i/o timeout。
因为服务器在大陆,YouTube 和部分博主无法订阅
所以这里准备给服务器出网,感兴趣见: