简介
什么是 FeedMe ?
FeedMe
是一个基于AI
的RSS
阅读器,旨在通过聚合和自动生成摘要来重新定义用户的RSS
阅读体验。该项目可以轻松部署到GitHub Pages
或使用Docker
本地运行。
主要特点
多源 RSS 聚合:从多个信息源获取并整合 RSS
内容,便于用户集中获取信息。AI 摘要生成:自动使用大语言模型( LLM
)为文章生成摘要,帮助用户快速了解内容要点。定时更新机制:支持通过 GitHub Actions
或Cron
定期自动更新内容,确保信息新鲜。分类浏览:支持按分类查看不同信息源,方便用户根据兴趣进行浏览。 主题切换:提供明暗主题切换,提升用户体验。 静态部署:可部署在 GitHub Pages
等静态托管服务上,简单易用。Docker 部署:可以在本地服务器上轻松部署,适合需要本地运行的用户。
应用场景
个人信息聚合:用户可以通过 FeedMe
聚合自己感兴趣的新闻、博客和其他信息源,方便集中阅读。内容监控:适合需要实时监控特定主题或领域的用户,自动获取最新动态。 开发者和技术爱好者:开发者可以使用 FeedMe
集成不同技术博客和开源项目的更新,保持知识更新。自定义信息源:用户可以根据需求配置 RSS
源,灵活定制信息获取方式。

FeedMe
提供了一个轻量级、自由定制的解决方案,适合各种需要信息聚合和快速浏览的用户。
构建镜像
如果你不想自己构建,可以跳过,直接阅读下一章节
官方提供了 Dockerfile
,但需要我们自己编。构建镜像的基本命令如下👇
# 下载代码
git clone https://github.com/Seanium/FeedMe.git
# 通过代理
git clone https://gh-proxy.com/github.com/Seanium/FeedMe.git
# 进入目录
cd FeedMe
# 构建镜像
docker build -t wbsu2003/feedme:v1 .
# 运行容器
docker run -d \
--restart unless-stopped \
--name feedme \
-p 3220:3000 \
-v $(pwd)/env.txt:/app/.env \
-v $(pwd)/config:/app/config \
-v $(pwd)/data:/app/data \
wbsu2003/feedme:v1
安装
在群晖上以 Docker 方式安装。
在注册表中搜索 wbsu2003
,下拉找到 wbsu2003/feedme
,版本选择 latest
。

卷
在 docker
文件夹中,创建一个新文件夹 feedme
,并在其中建两个子文件夹 data
和 config
在 feedme
根目录中准备一个env.txt
文件

env.txt
env.txt
是环境变量文件,用来配置 FeedMe
项目调用外部 AI
服务(如摘要等)的相关信息
LLM_API_KEY=your_api_key
LLM_API_BASE=https://api.siliconflow.cn/v1
LLM_NAME=THUDM/GLM-4-9B-0414
其中:
LLM_API_KEY
:你的大语言模型API
密钥;LLM_API_BASE
:指定大语言模型API
的基础地址;LLM_NAME
:指定所要使用的具体大语言模型名称;
目前硅基流动(SiliconFlow
),注册就送 2000
万 Tokens
,虽然不是免费,但也够用一阵子的,更何况还有很多免费的模型,例如: THUDM/GLM-4-9B-0414
、Qwen/Qwen3-8B
等
注册地址
https://cloud.siliconflow.cn/i/NkUiXVhQ

另外在 config
中准备两个文件,分别是crontab-docker
和rss-config.js

crontab-docker
crontab-docker
用于定时执行更新脚本,实现自动化更新。
下面👇的示例设置,表示每 3
小时运行一次
# Schedule the update and serve script to run every 3 hours
0 */3 * * * /app/scripts/update_and_serve.sh >> /proc/1/fd/1 2>&1
rss-config.js
rss-config.js
用于定义和管理所有的 RSS
源及相关配置,是数据抓取和展示的基础配置文件
你可以根据下面👇的示例修改,但是一定要记得,保存时采用 UTF-8
编码格式

// RSS源接口
// name: 信息源名称
// url: RSS URL地址
// category: 分类名称
/**
* @typedef {object} RssSource
* @property {string} name - 信息源名称
* @property {string} url - RSS URL地址
* @property {string} category - 分类名称
*/
// 默认配置
exportconst config = {
sources: [
{
name: "Simon Willison"s Weblog",
url: "https://simonwillison.net/atom/everything/",
category: "技术博客",
},
{
name: "老苏的博客",
url: "https://laosu.tech/atom.xml",
category: "技术博客",
},
{
name: "阮一峰的网络日志",
url: "https://feeds.feedburner.com/ruanyifeng",
category: "技术博客",
},
{
name: "少数派",
url: "https://sspai.com/feed",
category: "科技资讯",
},
{
name: "小众软件",
url: "https://feeds.appinn.com/appinns/",
category: "科技资讯",
},
],
maxItemsPerFeed: 30,
dataPath: "./data",
}
exportconst defaultSource = config.sources[0]
/**
* @param {string} url
* @returns {RssSource | undefined}
*/
exportfunction findSourceByUrl(url) {
return config.sources.find((source) => source.url === url)
}
exportfunction getSourcesByCategory() {
return config.sources.reduce((acc, source) => {
if (!acc[source.category]) {
acc[source.category] = []
}
acc[source.category].push(source)
return acc
}, {})
}
docker/feedme/env.txt | /app/.env | RSS 源 |
docker/feedme/data | /app/data | RSS 源的数据文件,保存了最新的 RSS 源爬取和解析后的数据(比如文章列表、源信息等) |
docker/feedme/config | /app/config | RSS 源 |
第一项 env.txt
是文件映射,后两项是文件夹映射

端口
本地端口不冲突就行,不确定的话可以用命令查一下
# 查看端口占用
netstat -tunlp | grep 端口号
3220 | 3000 |

命令行安装
如果你熟悉命令行,可能用 docker cli
更快捷
# 新建文件夹 feedme 和 子目录
mkdir -p /volume1/docker/feedme/{data,config}
# 进入 feedme 目录
cd /volume1/docker/feedme
# 将 env.txt 放入根目录
# 将 crontab-docker 和 rss-config.js 放入 config 目录
# 运行容器
docker run -d \
--restart unless-stopped \
--name feedme \
-p 3220:3000 \
-v $(pwd)/env.txt:/app/.env \
-v $(pwd)/config:/app/config \
-v $(pwd)/data:/app/data \
wbsu2003/feedme
也可以用 docker-compose
安装,将下面的内容保存为 docker-compose.yml
文件
version: "3"
services:
feedme:
image:wbsu2003/feedme
container_name:feedme
restart:unless-stopped
ports:
-3220:3000
volumes:
-./env.txt:/app/.env
-./config:/app/config
-./data:/app/data
然后执行下面的命令
# 新建文件夹 feedme 和 子目录
mkdir -p /volume1/docker/feedme/{data,config}
# 进入 feedme 目录
cd /volume1/docker/feedme
# 将 env.txt 放入根目录
# 将 crontab-docker 和 rss-config.js 放入 config 目录
# 一键启动
docker-compose up -d

运行
容器启动后,FeedMe
会根据我们在 rss-config.js
中设定的源进行数据抓取,源越多,花费的时间也越长,当然也和网络有很大的关系
当你在 data
目录中,看到和源数量相同的 json
文件时,就可以开始访问了

在浏览器中输入 http://群晖IP:3220
就能看到主界面

可以切换源

对于中文来说,摘要的用途不大,顶多也就是概括总结

切换到原文,你会发现,对英文还是很有用的

当然这只是因为老苏的英文太菜了😋
强制更新
按照 crontab-docker
的设定,数据是定时更新的,但如果需要强制更新,可以执行下面的命令
# 更新 RSS 数据
docker exec -it feedme /app/scripts/update_and_serve.sh
日志中会看到变化

参考文档
Seanium/FeedMe:AI 驱动的 RSS 阅读器,可部署到 GitHub Pages 或使用 Docker --- Seanium/FeedMe: AI-powered RSS reader, deployable to GitHub Pages or with Docker | 用 AI 重新定义你的 RSS 阅读体验,轻松部署到 GitHub Pages / Docker
地址:https://github.com/Seanium/feedmeFeedMe
地址:https://feedme.icu/