{"id":23687033,"url":"https://github.com/easychen/ai-rss","last_synced_at":"2026-01-18T03:31:32.921Z","repository":{"id":269373492,"uuid":"906989137","full_name":"easychen/ai-rss","owner":"easychen","description":"AI时代的RSS生成器","archived":false,"fork":false,"pushed_at":"2024-12-29T01:00:39.000Z","size":1204,"stargazers_count":218,"open_issues_count":15,"forks_count":31,"subscribers_count":4,"default_branch":"master","last_synced_at":"2025-09-02T14:46:27.182Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://airss.ft07.com","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/easychen.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2024-12-22T14:03:11.000Z","updated_at":"2025-08-28T01:52:52.000Z","dependencies_parsed_at":null,"dependency_job_id":"2699974b-462d-4d95-a4ee-0b2d174cb410","html_url":"https://github.com/easychen/ai-rss","commit_stats":null,"previous_names":["easychen/ai-rss"],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/easychen/ai-rss","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/easychen%2Fai-rss","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/easychen%2Fai-rss/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/easychen%2Fai-rss/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/easychen%2Fai-rss/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/easychen","download_url":"https://codeload.github.com/easychen/ai-rss/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/easychen%2Fai-rss/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28528172,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-18T00:39:45.795Z","status":"online","status_checked_at":"2026-01-18T02:00:07.578Z","response_time":98,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-12-29T22:01:19.189Z","updated_at":"2026-01-18T03:31:32.902Z","avatar_url":"https://github.com/easychen.png","language":"JavaScript","funding_links":[],"categories":["JavaScript"],"sub_categories":[],"readme":"# AI RSS\n\nAI RSS 是一个通过 AI 将网页内容转换为 RSS 订阅源的工具。\n\n\n\nhttps://github.com/user-attachments/assets/5c5f7fc2-ccec-47d8-90b0-6ee323aca237\n\n\n[完整使用教程请移步B站](https://www.bilibili.com/video/BV1GJkdYdE9i)\n\n它包含两部分：\n\n1. 一个浏览器插件，可以选择网页中的列表，并指定每一个数据项，最后生成一个 SDD（结构化数据描述） 文件\n2. 一个服务器端，可以部署到 Vercel 和 Docker/NAS 上，它读取 SDD 文件，根据配置抓取网页内容并分析，最终生成 RSS 订阅源\n\n本仓库：\n1. 提供服务器端源代码，按MIT协议开源\n2. 提供浏览器插件zip包下载，插件部分不开源\n\n在浏览器插件中，用户可以一键发布 [结构化数据描述SDD](https://github.com/easychen/sdd) 格式文件到服务器，并用其生成RSS。\n\n## 浏览器插件\n\n### 准备工作\n\n由于我们使用了AI的能力来分析网页内容，所以需要先注册一个 [OpenAI](https://platform.openai.com)/[API2D](https://api2d.com/r/186008)/[SillconFlow](https://cloud.siliconflow.cn/i/GKAoff2O) 的账号，并获取一个 API Key。\n\n### 安装\n\n支持 Chrome 和 Edge 浏览器。\n\n1. 插件商店：[Chrome商店](https://chromewebstore.google.com/detail/airss/hhconojkeohomnfbpbioamldompinckh?authuser=0\u0026hl=en\u0026pli=1) | [Edge商店](https://microsoftedge.microsoft.com/addons/detail/airss/kgbiogeimnehnobgjpbebphdgmflijgl)\n2. 在Releases页面下载插件包，解压后，在浏览器中打开 `chrome://extensions/` 页面，点击 \"加载已解压的扩展程序\"，选择解压后的文件夹。\n\n\n## 服务器\n\n服务器支持两种部署方式：Vercel 和 Docker。\n\n### Vercel 部署\n\n[![Deploy with Vercel](https://vercel.com/button)](https://vercel.com/new/clone?repository-url=https%3A%2F%2Fgithub.com%2Feasychen%2Fai-rss%2Ftree%2Fmaster%2Fserver\u0026env=ADD_KEY,CACHE_MINUTES\u0026envDescription=配置运行所需的环境变量\u0026envLink=https://github.com/easychen/ai-rss/tree/master/server%23服务器)\n\n1. 点击上方的 \"Deploy with Vercel\" 按钮\n2. 部署时需要设置以下环境变量：\n   - `ADD_KEY`: 设置一个添加 RSS 的 API 访问密钥\n   - `CACHE_MINUTES`: 设置缓存时间（分钟），不设置则不缓存\n   \n3. 创建并连接 Blob 存储：\n   - 部署完成后进入 Vercel 项目控制台\n   - 转到 \"Storage\" 标签页\n   - 点击 \"Create Blob Store\"\n   - 在项目的 storage 标签页选择新创建的 Blob 存储，点击 \"Connect to Project\"\n\n注意：\n\n1. 如果连接 storage 以后，首页依然是 \"blob_storage_configured\": false，请到 vercel 控制台中 redeploy 一次以使其强制生效 \n2. vercel 默认提供的 *.vercel.app 二级域名在中国大陆网络可能无法访问，可绑定自己的域名后使用\n\n### Docker 部署\n\n我们提供两种 Docker 部署方式：使用 Docker Compose 或直接使用 Docker 命令。\n\n#### 使用 Docker Compose（推荐）\n\n1. 创建一个工作目录并进入：\n\n```bash\nmkdir -p ai-rss-server\ncd ai-rss-server\n```\n\n2. 下载 Docker Compose 文件：\n\n```bash\nwget https://raw.githubusercontent.com/easychen/ai-rss/master/server/docker-compose.yml\n```\n\n3. 创建一个 `.env` 文件，并添加以下环境变量：\n\n```bash\nADD_KEY=your_api_key\nCACHE_MINUTES=60\n```\n\n或者手工修改 `docker-compose.yml` 文件中的环境变量：\n\n```yaml\n  environment:\n    - ADD_KEY=your_api_key\n    - CACHE_MINUTES=60\n```\n\n4. 启动 Docker Compose：\n\n```bash\ndocker-compose up -d\n```\n\n#### 使用 Docker 命令\n\n1. 下载 Docker 镜像：\n\n```bash\ndocker pull easychen/ai-rss-server:latest\n```\n\n2. 运行 Docker 容器：\n\n```bash\ndocker run -d --name ai-rss-server -e ADD_KEY=your_api_key -e CACHE_MINUTES=5 easychen/ai-rss-server:latest\n```\n\n注意：\n\n1. 由于浏览器插件是注入到网页中执行的，因此，受浏览器限制，使用HTTPS的网站只能往HTTPS下的服务器端发送信息，你需要为服务器端配置SSL证书\n\n## API 说明\n\n主要接口：\n\n- `GET /rss/:name`: 获取指定的 RSS feed\n- `POST /add-sdd`: 添加新的 SDD 配置（需要 API 密钥）\n- `GET /list`: 获取所有可用的 RSS feed 列表（需要 API 密钥）\n\n### 授权\n\nAPI 密钥可以通过以下两种方式传递：\n\n1. 通过 Header 传递：\n```http\nX-Add-Key: your_api_key\n```\n\n2. 通过 URL 查询参数传递：\n```\n?key=your_api_key\n```\n\n### 接口详情\n\n#### 1. 获取 RSS Feed\n```http\nGET /rss/:name\n```\n\n- 参数：\n  - `name`: RSS feed 的唯一标识符\n- 返回：RSS XML 内容\n- 无需授权\n\n#### 2. 添加 SDD 配置\n```http\nPOST /add-sdd\n```\n\n- Header：\n  - `Content-Type: application/json`\n  - `X-Add-Key: your_api_key`（必需）\n- 请求体：\n```json\n{\n  \"sdd\": {\n    \"version\": \"1.0\",\n    \"url\": \"网页URL\",\n    \"title\": \"标题\",\n    \"data_list\": \"...\",\n    \"data_list_elements\": \"...\",\n    \"rss\": \"...\"\n  }\n}\n```\n- 返回示例：\n```json\n{\n  \"success\": true,\n  \"key\": \"生成的唯一key\",\n  \"rss_url\": \"/rss/unique_key\"\n}\n```\n\n#### 3. 获取 RSS Feed 列表\n```http\nGET /list\n```\n\n- 授权：需要通过 Header 或 URL 参数提供 API 密钥\n- 返回示例：\n```json\n{\n  \"success\": true,\n  \"total\": 2,\n  \"items\": [\n    {\n      \"key\": \"unique_key1\",\n      \"title\": \"Feed 标题\",\n      \"url\": \"原始网页URL\",\n      \"rss_url\": \"RSS feed URL\",\n      \"favicon\": \"网站图标URL\"\n    },\n    // ...\n  ]\n}\n```\n\n## 许可证\n\nMIT\n\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Feasychen%2Fai-rss","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Feasychen%2Fai-rss","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Feasychen%2Fai-rss/lists"}