FeedMe:通过AI摘要提升阅读效率

FeedMe:通过AI摘要提升阅读效率

4.8
0热度

简介什么是 FeedMe ?FeedMe 是一个基于 AI 的 RSS 阅读器,旨在通过聚合和自动生成摘要来重新定义用户的 RSS 阅读体验。该项目可以轻松部署到 GitHub Pages 或使用 Docker 本地运行。主要特点多源 RSS 聚合:从多个信息源获取并整合 RSS 内容,便于用户集中获取信息。AI 摘要生成:自动使用大语言模型(LLM)为文章生成摘要,帮助用户快速了解内容要点。


简介

什么是 FeedMe ?

FeedMe 是一个基于 AI 的 RSS 阅读器,旨在通过聚合和自动生成摘要来重新定义用户的 RSS 阅读体验。该项目可以轻松部署到 GitHub Pages 或使用 Docker 本地运行。

主要特点

  1. 多源 RSS 聚合:从多个信息源获取并整合 RSS 内容,便于用户集中获取信息。
  2. AI 摘要生成:自动使用大语言模型(LLM)为文章生成摘要,帮助用户快速了解内容要点。
  3. 定时更新机制:支持通过 GitHub Actions 或 Cron 定期自动更新内容,确保信息新鲜。
  4. 分类浏览:支持按分类查看不同信息源,方便用户根据兴趣进行浏览。
  5. 主题切换:提供明暗主题切换,提升用户体验。
  6. 静态部署:可部署在 GitHub Pages 等静态托管服务上,简单易用。
  7. 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-0414Qwen/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"科技资讯",
    },
  ],
maxItemsPerFeed30,
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 端口号
本地端口
容器端口
32203000

命令行安装

如果你熟悉命令行,可能用 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/feedme

FeedMe
地址:https://feedme.icu/

首页 发现
看过 我的