AI RSS 是一个通过 AI 将网页内容转换为 RSS 订阅源的工具。
ai-rss-pv.mp4
它包含两部分:
- 一个浏览器插件,可以选择网页中的列表,并指定每一个数据项,最后生成一个 SDD(结构化数据描述) 文件
- 一个服务器端,可以部署到 Vercel 和 Docker/NAS 上,它读取 SDD 文件,根据配置抓取网页内容并分析,最终生成 RSS 订阅源
本仓库:
- 提供服务器端源代码,按MIT协议开源
- 提供浏览器插件zip包下载,插件部分不开源
在浏览器插件中,用户可以一键发布 结构化数据描述SDD 格式文件到服务器,并用其生成RSS。
由于我们使用了AI的能力来分析网页内容,所以需要先注册一个 OpenAI/API2D/SillconFlow 的账号,并获取一个 API Key。
支持 Chrome 和 Edge 浏览器。
- 插件商店:Chrome商店 | Edge商店
- 在Releases页面下载插件包,解压后,在浏览器中打开
chrome://extensions/
页面,点击 "加载已解压的扩展程序",选择解压后的文件夹。
服务器支持两种部署方式:Vercel 和 Docker。
-
点击上方的 "Deploy with Vercel" 按钮
-
部署时需要设置以下环境变量:
ADD_KEY
: 设置一个添加 RSS 的 API 访问密钥CACHE_MINUTES
: 设置缓存时间(分钟),不设置则不缓存
-
创建并连接 Blob 存储:
- 部署完成后进入 Vercel 项目控制台
- 转到 "Storage" 标签页
- 点击 "Create Blob Store"
- 在项目的 storage 标签页选择新创建的 Blob 存储,点击 "Connect to Project"
注意:
- 如果连接 storage 以后,首页依然是 "blob_storage_configured": false,请到 vercel 控制台中 redeploy 一次以使其强制生效
- vercel 默认提供的 *.vercel.app 二级域名在中国大陆网络可能无法访问,可绑定自己的域名后使用
我们提供两种 Docker 部署方式:使用 Docker Compose 或直接使用 Docker 命令。
- 创建一个工作目录并进入:
mkdir -p ai-rss-server
cd ai-rss-server
- 下载 Docker Compose 文件:
wget https://raw.githubusercontent.com/easychen/ai-rss/master/server/docker-compose.yml
- 创建一个
.env
文件,并添加以下环境变量:
ADD_KEY=your_api_key
CACHE_MINUTES=60
或者手工修改 docker-compose.yml
文件中的环境变量:
environment:
- ADD_KEY=your_api_key
- CACHE_MINUTES=60
- 启动 Docker Compose:
docker-compose up -d
- 下载 Docker 镜像:
docker pull easychen/ai-rss-server:latest
- 运行 Docker 容器:
docker run -d --name ai-rss-server -e ADD_KEY=your_api_key -e CACHE_MINUTES=5 easychen/ai-rss-server:latest
注意:
- 由于浏览器插件是注入到网页中执行的,因此,受浏览器限制,使用HTTPS的网站只能往HTTPS下的服务器端发送信息,你需要为服务器端配置SSL证书
主要接口:
GET /rss/:name
: 获取指定的 RSS feedPOST /add-sdd
: 添加新的 SDD 配置(需要 API 密钥)GET /list
: 获取所有可用的 RSS feed 列表(需要 API 密钥)
API 密钥可以通过以下两种方式传递:
- 通过 Header 传递:
X-Add-Key: your_api_key
- 通过 URL 查询参数传递:
?key=your_api_key
GET /rss/:name
- 参数:
name
: RSS feed 的唯一标识符
- 返回:RSS XML 内容
- 无需授权
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"
}
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