babarot/oksskolten

🏔️ The AI-native RSS reader

解决的问题

大多数 RSS 阅读器只显示订阅源提供的内容——标题和可能的一段简短摘要。像 Miniflux 或 FreshRSS 这样的阅读器可以获取全文,但需要按订阅源手动开启配置。Oksskolten 改变了这一点:它会自动为每个订阅项获取原始文章,使用 Mozilla 的 Readability 加上 500 种去噪模式提取全文,转换为干净的 Markdown 并存储在本地。无需逐个订阅源切换,无需 CSS 选择器——你总能获得完整文章。由于全文始终可用,AI 摘要和翻译可以基于有意义的内容进行,全文搜索覆盖所有内容,你无需离开应用即可阅读文章。

工作原理

Oksskolten 作为单个 Node.js 进程运行,包含 Fastify API、React 单页应用、嵌入式 SQLite 数据库(WAL 模式)以及每 5 分钟获取订阅源的 cron 调度器。内容管道的工作方式如下:获取 RSS 订阅源(具有自适应按源调度和条件 HTTP 请求),解析 RSS/Atom/RDF,获取每篇文章的原始 URL(使用 FlareSolverr 作为机器人保护网站的备用方案),在隔离的工作线程中使用 Readability 提取文章内容,用约 500 种去噪模式清理,将 HTML 转换为 Markdown,通过语言检测和 OGP 图片丰富结果,并在 Meilisearch 中建立索引以进行全文搜索。

智能获取可最大程度减少带宽:它使用三层变更检测(HTTP 304 → 内容哈希 → 完整解析),根据订阅源活动为每个订阅源设置 15 分钟到 4 小时不等的检查间隔,在限流时遵守 Retry-After 头,并在去重前剥离 60 多个跟踪参数。Oksskolten 还提供 MCP 服务器,因此 Claude Code 或任何 MCP 客户端都可以搜索、摘要和查询文章存档,而无需打开应用。所有内容都打包在单个 Docker 容器中,可选配 RSS Bridge、FlareSolverr 和 Cloudflare Tunnel 的辅助容器。

适用人群

Oksskolten 适合那些想要功能丰富的 RSS 阅读器并将全文提取和 AI 视为默认功能而非附加功能的自托管用户。它设计为可在任何运行 Docker 的地方运行——家庭 NAS、Raspberry Pi 或云虚拟机。它也适合那些希望在应用内阅读完整文章,并喜欢无需手动配置即可使用摘要、翻译和聊天等 AI 辅助功能的读者。

亮点

  • 默认对每篇文章进行全文提取,使用 Readability + 500 种去噪模式
  • 通过 Anthropic、Gemini 或 OpenAI 内置 AI 摘要和翻译,支持 SSE 流式传输
  • 由 MCP 工具驱动的交互式多轮 AI 聊天——搜索文章、获取统计信息、询问订阅源
  • 由 Meilisearch 驱动的整个存档的全文搜索
  • 智能获取,具有自适应调度、三层变更检测和跟踪参数移除
  • PWA 支持:离线阅读、后台同步、添加到主屏幕
  • 多认证:密码、Passkey/WebAuthn 和 GitHub OAuth,每个均可独立配置
  • 智能订阅源管理:自动发现、通过 RSS Bridge 的 CSS 选择器订阅源、通过 FlareSolverr 绕过机器人、自动禁用失效订阅源
  • 文章剪藏:将任何 URL 保存为具有完整内容提取的文章
  • 14 种内置主题 + 自定义 JSON 导入、9 种文章字体、8 种代码高亮样式
  • 单个 Docker 容器包含 API、SPA 和 cron 调度器——无需外部队列或协调

相关

  • 项目
  • 项目
  • 项目
  • 项目