azu/irodr

GitHub: azu/irodr

面向 Inoreader 的轻量级 RSS 阅读客户端,模拟 Livedoor Reader 的快速交互体验。

Stars: 139 | Forks: 4

# Irodr [![操作状态:测试](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/bd411881b9173116.svg)](https://github.com/azu/irodr/actions?query=workflow%3A"test") 针对 [Inoreader](http://www.inoreader.com/ "Inoreader") 的 RSS 阅读器客户端。 该 RSS 阅读器提供与 [LDR](http://reader.livedoor.com/) 相似的体验。 ![屏幕截图](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/b90b474814173123.gif) ## 目标 - [x] 像 [LDR](http://reader.livedoor.com/) 一样快速阅读 RSS - [x] 预取内容 - [x] 闲置时自动标记为“已读” - [x] 键盘快捷键 - [x] 可通过 UserScript 自定义 - [x] 提供 [UserScript API](src/component/container/App/Hidden/UserScript) 如 `window.getActiveItem` ## 使用方法 ![登录 GIF](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/b21571511a173128.gif) 1. 打开 2. 点击 **连接到 Inoreader** 3. 在 Inoreader 站点点击 **授权** ### 键盘快捷键 - j:移动到下一篇内容 - shift+j:加载更多过往内容 - t:切换内容过滤器 - k:移动到上一篇内容 - a:移动到上一个订阅源 - s:移动到下一个订阅源 - m:将订阅源标记为已读 - v:打开当前内容 URL - z:切换订阅源列表 - space:向下滚动内容 - shift+spaceshift+s:跳过并移动到下一个订阅源 ### 自定义客户端 ID 和客户端密钥 如果你希望使用自己的 Inoreader 客户端 ID/密钥,请按以下步骤操作: 1. 访问 https://www.inoreader.com/ 2. 打开“偏好设置” 3. 打开“开发者”选项卡 4. 创建新应用 - “重定向 URL” 非必需 - “作用域”:读取与写入 5. 复制客户端 ID 和客户端密钥 ![创建新应用](https://monosnap.com/file/uKYqAHpIjibLkffvfHWXoSys1wVxl7.png) 将客户端 ID 和密钥粘贴到 Irodr 授权页面中。 ![Irodr 授权页面](https://monosnap.com/file/ki0yNr9jfRu9TBHvHxrrLOH78w8JyY.png) ## UserScript API Irodr 为 Greasemonkey 等 UserScript 提供了一些 UserScript API。 - `window.addEventListener("userscript-init", (event) => { /* 初始化 UserScript 对象 */ })` - `window.userScript.getActiveContent(): UserScriptActiveContent | undefined` - `window.userScript.getActiveSubscription(): UserScriptActiveSubscription | undefined` - `window.userScript.triggerKey(keys: string, action?: string): void` 更多详情请参阅 [UserScript API 文档](src/component/container/App/Hidden/UserScript)。 另请参见 [resources/userScript](./resources/userScript) 目录。 ## :memo: 说明 - Inoreader 不支持 CORS - 请支持 CORS :bow: - [x] 在 [Inoreader Developers - User authentication via OAuth 2.0](http://www.inoreader.com/developers/oauth "Inoreader Developers - User authentication via OAuth 2.0") 中留言 - 当前需要在 `package.json` 中配置 CORS 代理 - 换句话说,需要代理或代理服务器 ## 开发 ### 使用方法 运行以下命令并打开本地服务器。 ``` npm start # 打开 http://localhost:13245/ ``` ### :memo: CORS 问题 Inoreader 的 API 不支持 CORS。 因此,Irodr 使用 CORS 代理来访问 Inoreader API。 #### 生产环境 http://irodr.netlify.app/ 运行在 [Netlify](https://www.netlify.com/ "Netlify") 上。 它使用 [Netlify Edge Functions](https://docs.netlify.com/edge-functions/overview/) 作为 CORS 代理。 - [netlify/edge-functions/cors-proxy.ts](./netlify/edge-functions/cors-proxy.ts) 推荐:你也可以通过 UserScript 直接连接 Inoreader API,无需 CORS 代理。 - [irodr-cros.js](./resources/userScript/irodr-cors.js "irodr-cros.js") 此外,你还可以使用自己的 CORS 代理。 - [irodr-custom-cors-proxy.js](./resources/userScript/irodr-custom-cors-proxy.js) #### 本地服务器 在本地,只需运行 `npm run dev` 并打开 `http://localhost:8888/`。 ``` npm run dev ``` ### :memo: 混合内容的限制 浏览器在 https://irodr.netlify.app/ 上会显示警告。 这是由混合内容引起的。 - [混合内容 - Web 安全 | MDN](https://developer.mozilla.org/en-US/docs/Web/Security/Mixed_content "Mixed content - Web security | MDN") ## 更新日志 参见 [版本发布页](https://github.com/azu/irodr/releases)。 ## 运行测试 安装开发依赖并运行 `npm test`: ``` npm test ``` ## 行为准则 请注意,本项目采用 [贡献者行为准则](./CODE_OF_CONDUCT.md)。 参与本项目即表示你同意遵守其条款。 ## 作者 - [github/azu](https://github.com/azu) - [twitter/azu_re](https://twitter.com/azu_re) ## 许可证 MIT © azu ## OSS 支持 Netlify
标签:CMS安全, Inoreader, JavaScript, LDR, Netlify, React, RSS阅读器, Syscalls, TypeScript, 前端, 安全插件, 客户端, 开源, 用户脚本, 自动化攻击, 自动已读, 键盘快捷键, 阅读工具, 预取