babarot/oksskolten
🏔️ The AI-native RSS reader
What it solves
Most RSS readers show only what the feed provides — a title and maybe a short summary. Some readers like Miniflux or FreshRSS can fetch full article text, but it's an opt-in per feed and requires manual configuration. Oksskolten changes that: it automatically fetches the original article for every feed item, extracts the full text using Mozilla's Readability plus 500 noise-removal patterns, converts it to clean Markdown, and stores it locally. No per-feed toggles, no CSS selectors — you always get the complete article. Because the full text is always available, AI summarization and translation work on meaningful content, full-text search covers everything, and you never need to leave the app to read an article.
How it works
Oksskolten runs as a single Node.js process that contains a Fastify API, a React single-page app, an embedded SQLite database (in WAL mode), and a cron scheduler that fetches feeds every 5 minutes. The content pipeline works like this: it fetches RSS feeds (with adaptive per-feed scheduling and conditional HTTP requests), parses RSS/Atom/RDF, fetches each article's original URL (using FlareSolverr as a fallback for bot-protected sites), extracts the article content with Readability in isolated worker threads, cleans it with ~500 noise-removal patterns, converts HTML to Markdown, enriches the result with language detection and OGP images, and indexes it in Meilisearch for full-text search.
Smart fetching minimizes bandwidth: it uses a 3-layer change detection (HTTP 304 → content hash → full parse), gives each feed its own check interval from 15 minutes to 4 hours based on feed activity, respects Retry-After headers on rate limits, and strips 60+ tracking parameters before deduplication. Oksskolten also exposes an MCP server, so Claude Code or any MCP client can search, summarize, and query the article archive without opening the app. Everything is packaged in a single Docker container, with optional sidecars for RSS Bridge, FlareSolverr, and Cloudflare Tunnel.
Who it's for
Oksskolten is for self-hosters who want a feature-rich RSS reader that treats full-text extraction and AI as defaults, not add-ons. It's designed to run anywhere Docker runs — a home NAS, a Raspberry Pi, or a cloud VM. It's also for readers who want to read complete articles inside the app and prefer AI-assisted features like summarization, translation, and chat without manual configuration.
Highlights
- Full-text extraction for every article by default, using Readability + 500 noise-removal patterns
- Built-in AI summarization and translation via Anthropic, Gemini, or OpenAI, with SSE streaming
- Interactive multi-turn AI chat powered by MCP tooling — search articles, get stats, ask about feeds
- Full-text search across the entire archive powered by Meilisearch
- Smart fetching with adaptive scheduling, 3-layer change detection, and tracking-parameter removal
- PWA support: offline reading, background sync, add-to-home-screen
- Multi-auth: password, Passkey/WebAuthn, and GitHub OAuth, each independently configurable
- Smart feed management: auto-discovery, CSS selector feeds via RSS Bridge, bot bypass via FlareSolverr, automatic disabling of dead feeds
- Article clipping: save any URL as an article with full content extraction
- 14 built-in themes + custom JSON import, 9 article fonts, 8 code highlighting styles
- Single Docker container includes API, SPA, and cron scheduler — no external queues or coordination needed
Related
- Project
- Project
- Project
- Project