Skip to content

easychen/ai-rss

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

25 Commits
 
 
 
 
 
 
 
 

Repository files navigation

AI RSS

AI RSS 是一个通过 AI 将网页内容转换为 RSS 订阅源的工具。

ai-rss-pv.mp4

完整使用教程请移步B站

它包含两部分:

  1. 一个浏览器插件,可以选择网页中的列表,并指定每一个数据项,最后生成一个 SDD(结构化数据描述) 文件
  2. 一个服务器端,可以部署到 Vercel 和 Docker/NAS 上,它读取 SDD 文件,根据配置抓取网页内容并分析,最终生成 RSS 订阅源

本仓库:

  1. 提供服务器端源代码,按MIT协议开源
  2. 提供浏览器插件zip包下载,插件部分不开源

在浏览器插件中,用户可以一键发布 结构化数据描述SDD 格式文件到服务器,并用其生成RSS。

浏览器插件

准备工作

由于我们使用了AI的能力来分析网页内容,所以需要先注册一个 OpenAI/API2D/SillconFlow 的账号,并获取一个 API Key。

安装

支持 Chrome 和 Edge 浏览器。

  1. 插件商店:Chrome商店 | Edge商店
  2. 在Releases页面下载插件包,解压后,在浏览器中打开 chrome://extensions/ 页面,点击 "加载已解压的扩展程序",选择解压后的文件夹。

服务器

服务器支持两种部署方式:Vercel 和 Docker。

Vercel 部署

Deploy with Vercel

  1. 点击上方的 "Deploy with Vercel" 按钮

  2. 部署时需要设置以下环境变量:

    • ADD_KEY: 设置一个添加 RSS 的 API 访问密钥
    • CACHE_MINUTES: 设置缓存时间(分钟),不设置则不缓存
  3. 创建并连接 Blob 存储:

    • 部署完成后进入 Vercel 项目控制台
    • 转到 "Storage" 标签页
    • 点击 "Create Blob Store"
    • 在项目的 storage 标签页选择新创建的 Blob 存储,点击 "Connect to Project"

注意:

  1. 如果连接 storage 以后,首页依然是 "blob_storage_configured": false,请到 vercel 控制台中 redeploy 一次以使其强制生效
  2. vercel 默认提供的 *.vercel.app 二级域名在中国大陆网络可能无法访问,可绑定自己的域名后使用

Docker 部署

我们提供两种 Docker 部署方式:使用 Docker Compose 或直接使用 Docker 命令。

使用 Docker Compose(推荐)

  1. 创建一个工作目录并进入:
mkdir -p ai-rss-server
cd ai-rss-server
  1. 下载 Docker Compose 文件:
wget https://raw.githubusercontent.com/easychen/ai-rss/master/server/docker-compose.yml
  1. 创建一个 .env 文件,并添加以下环境变量:
ADD_KEY=your_api_key
CACHE_MINUTES=60

或者手工修改 docker-compose.yml 文件中的环境变量:

  environment:
    - ADD_KEY=your_api_key
    - CACHE_MINUTES=60
  1. 启动 Docker Compose:
docker-compose up -d

使用 Docker 命令

  1. 下载 Docker 镜像:
docker pull easychen/ai-rss-server:latest
  1. 运行 Docker 容器:
docker run -d --name ai-rss-server -e ADD_KEY=your_api_key -e CACHE_MINUTES=5 easychen/ai-rss-server:latest

注意:

  1. 由于浏览器插件是注入到网页中执行的,因此,受浏览器限制,使用HTTPS的网站只能往HTTPS下的服务器端发送信息,你需要为服务器端配置SSL证书

API 说明

主要接口:

  • GET /rss/:name: 获取指定的 RSS feed
  • POST /add-sdd: 添加新的 SDD 配置(需要 API 密钥)
  • GET /list: 获取所有可用的 RSS feed 列表(需要 API 密钥)

授权

API 密钥可以通过以下两种方式传递:

  1. 通过 Header 传递:
X-Add-Key: your_api_key
  1. 通过 URL 查询参数传递:
?key=your_api_key

接口详情

1. 获取 RSS Feed

GET /rss/:name
  • 参数:
    • name: RSS feed 的唯一标识符
  • 返回:RSS XML 内容
  • 无需授权

2. 添加 SDD 配置

POST /add-sdd
  • Header:
    • Content-Type: application/json
    • X-Add-Key: your_api_key(必需)
  • 请求体:
{
  "sdd": {
    "version": "1.0",
    "url": "网页URL",
    "title": "标题",
    "data_list": "...",
    "data_list_elements": "...",
    "rss": "..."
  }
}
  • 返回示例:
{
  "success": true,
  "key": "生成的唯一key",
  "rss_url": "/rss/unique_key"
}

3. 获取 RSS Feed 列表

GET /list
  • 授权:需要通过 Header 或 URL 参数提供 API 密钥
  • 返回示例:
{
  "success": true,
  "total": 2,
  "items": [
    {
      "key": "unique_key1",
      "title": "Feed 标题",
      "url": "原始网页URL",
      "rss_url": "RSS feed URL",
      "favicon": "网站图标URL"
    },
    // ...
  ]
}

许可证

MIT