OrigRead is a source-first Android reader for people who want to follow information without turning their reading workflow into an algorithmic recommendation feed.
It keeps the mature RSS reading experience inherited from Read You, then extends it into a broader personal information reader: when a website has RSS or Atom, OrigRead uses it; when it does not, OrigRead can discover feeds, match RSSHub routes, parse HTML lists, consume JSON/API endpoints, read WordPress REST feeds, inspect Next.js/Nuxt embedded data, or fall back to a restricted WebView for dynamic pages.
The goal is simple: subscribe to the source, preserve the original link, extract readable content, filter noise locally, and use translation or AI only when you ask for it.
- Source-first instead of recommendation-first — subscriptions stay under your control and articles remain tied to their original source URL.
- More than RSS — RSS/Atom, RSSHub, HTML website rules, automatic DOM detection, JSON/API rules, WordPress REST, Next.js/Nuxt embedded data and dynamic-page fallback can all participate in source discovery.
- Deterministic parsing before AI — normal source parsing, scoring and full-text extraction do not depend on an LLM.
- AI is an optional reading tool, not the product itself — use AI for article summaries, full-article translation and assisted rule generation without turning the app into a chat client.
- Local filtering before storage — global or per-source keyword/regex rules can reject unwanted article titles before they enter the local article database.
- Readable full text with an escape hatch — explicit content rules, Readability, structured metadata and WebView fallback are combined with a one-tap “Read original” action.
- Portable configuration — subscriptions, groups, parsing rules, filters, RSSHub settings, translation settings and AI settings can be exported and restored across devices.
The English README uses screenshots captured from the English UI. A separate Simplified Chinese screenshot set is used by README-zh-CN.md. See assets/readme/screenshots/README.md for the capture checklist and naming convention.
| Source discovery | Reading & full text | AI summary |
|---|---|---|
![]() |
![]() |
![]() |
| Translation | Parsing rules | Settings & backup |
|---|---|---|
![]() |
![]() |
![]() |
OrigRead does not assume every website exposes the same kind of feed. When you add a source, multiple resolvers can participate and valid candidates are scored locally.
Input URL
↓
Direct RSS / Atom
↓
HTML rel=alternate + common feed endpoints
↓
RSSHub route matching
↓
JSON / API / WordPress / Next.js / Nuxt
↓
Website parsing rules
↓
Automatic repeated-DOM detection
↓
Restricted WebView fallback for dynamic pages
↓
Local health checks + candidate scoring
↓
Best candidate by default, manual choice when needed
- Direct RSS and Atom subscription.
- Automatic discovery through
<link rel="alternate">. - Common endpoint probing such as
/feed,/rss,/rss.xml,/atom.xml,/feed.xmland/index.xml. - A built-in discovery catalog generated from awesome-rss-feeds and BestBlogs, with 700+ deduplicated feeds and multilingual category browsing.
- OPML import and export for migration between feed readers.
OrigRead treats RSSHub as an optional route/result layer rather than embedding the Node.js service into Android.
- 5,000+ generated static and parameterized RSSHub route definitions are bundled for local matching.
- URL path/query parameters can be extracted for supported dynamic routes.
- Multiple RSSHub instances can be configured, enabled, disabled and tested independently.
- Recently successful instances are preferred; failed instances enter a short cooldown.
- RSSHub network failure is non-blocking: OrigRead continues with RSS, JSON/API or website parsing candidates.
- The app never requires Redis, Puppeteer, browserless or a local RSSHub server.
For sites without a usable feed, OrigRead can turn a chronological article list into a subscribable source.
- Configurable HTML / CSS Selector website rules based on Jsoup.
- Multiple rules for the same domain can compete as parsing candidates.
- Automatic repeated-DOM detection can discover article cards when no rule is available.
- Candidate scoring checks article count, valid titles/links, URL uniqueness, time quality and source confidence.
- Source-level parser preference is persisted and reused on later refreshes.
- Website rules support import, export, enable/disable, deletion, testing and in-app Markdown documentation.
- Parsing failures never erase previously stored articles.
OrigRead also supports structured sources that are not traditional feeds.
- Configurable JSON/API rules with a deliberately restricted JSONPath subset.
- Standard public REST/JSON lists and nested arrays.
- WordPress REST API discovery, including WordPress installed in subdirectories.
- Embedded
__NEXT_DATA__,__NUXT_DATA__and Nuxt data payloads. - Relative URL completion, timestamps, common date strings, optional author/summary/image fields and HTML entity cleanup.
- JSON/API results use the same health checks and candidate scoring as RSS and website parsing.
Static parsing remains the first choice. WebView is used only as a fallback when ordinary RSS/JSON/HTML strategies cannot produce a healthy result.
- Restricted same-site navigation.
- No dangerous native JavaScript bridge.
- Bounded loading time and cleanup after parsing.
- Dynamic article-list parsing reuses the same website parser and scorer.
- Dynamic article-body extraction reuses the same full-content pipeline.
- Background bulk prefetch does not launch interactive verification pages.
OrigRead does not attempt to bypass login walls, CAPTCHA, paid access or website security controls.
OrigRead combines several extraction strategies instead of relying on a single parser:
- Explicit website
contentSelectorswhen a rule knows the article structure. - Readability-style general article extraction.
- JSON-LD and OpenGraph metadata for title, author, publication time and fallback content.
- HTML cleanup, unsafe-node removal and relative URL completion.
- Local quality scoring between competing content candidates.
- Restricted WebView fallback for JavaScript-rendered article bodies.
- Stable failure reasons and a one-tap Read original fallback.
- Read / unread state.
- Starred articles.
- Archive and retention controls.
- Feed groups and article search.
- Full-content mode and original-page access.
- Text-to-speech support inherited from the reader foundation.
- Material You / Jetpack Compose interface.
- Local account mode plus optional third-party synchronization modes inherited from Read You.
Noise filtering happens before new articles are saved.
- Global title keyword filters.
- Per-source title filters.
- Regular-expression rules with validation before activation.
- Rule enable/disable and deletion.
- Import/export as a standalone JSON rule set.
- Cumulative filtered-article statistics.
Existing historical articles are intentionally not deleted when a new filter is created, preventing an incorrect rule from causing destructive data loss.
Translation is independent from AI summaries. You can use conventional translation providers without configuring any LLM.
- Google ML Kit on-device translation.
- Microsoft Translator.
- DeepL.
- Google Cloud Translation.
- Self-hosted DeepLX / DLX-compatible endpoints.
The reader supports title/body translation, translated-only display, bilingual paragraph display, content-hash caching, provider selection and long-article batching.
OpenAI-compatible models can also be selected as translation targets.
- Multiple AI providers and models.
- Strict translation prompt: no summarizing, explaining, expanding or changing the author’s position.
- Long articles are split into bounded batches.
- Stable block IDs are validated so model output cannot silently reorder or merge document sections.
- Local HTML reconstruction keeps page structure under deterministic app control.
AI is optional and only runs when configured and invoked by the user.
Each provider can keep its own:
- Display name.
- Base URL or complete Chat Completions endpoint.
- Optional API key.
- Discovered/manual model list.
- Default model.
- Enable/disable state and connection test.
This works with many OpenAI-compatible cloud services, self-hosted gateways and local model servers without coupling OrigRead to a single vendor.
- Brief, standard and detailed summary levels.
- Markdown rendering inside the reader.
- Content-hash based caching.
- Visible generation stages and elapsed time so the app does not look frozen during a non-streaming request.
- Regeneration with a temporary provider/model/summary-level choice without overwriting global defaults.
- Summary UI remains secondary to the article: the reader stays usable while the summary panel is open.
OrigRead can ask an AI model to propose a WebsiteRule or JsonRule, but AI output is never trusted as executable configuration by itself.
The workflow is:
- OrigRead fetches the real target HTML/JSON.
- The model receives a bounded sample and the exact supported rule schema.
- The returned candidate must pass repository/schema validation.
- OrigRead runs the existing deterministic parser against the real source.
- Local health checks and candidate scoring must pass.
- One repair attempt can be made using the actual local validation error.
- The user previews the matched articles and JSON before explicitly saving the rule.
This keeps AI in the role of a rule authoring assistant while the actual parser and validator remain local and deterministic.
OrigRead provides a versioned JSON configuration backup instead of copying the raw database.
The backup can include:
- Current-account subscriptions and groups.
- Synchronization preferences.
- Website rules and JSON/API rules.
- Article filters.
- Per-source website parser preferences.
- RSSHub instances/settings and source mappings.
- Translation providers/settings.
- AI providers, model lists and defaults.
- General user preferences, including update-check preference.
Restore uses URL-based safe merge semantics: existing subscriptions are reused, missing subscriptions are added, and extra subscriptions already present on the target device are not deleted.
API keys are excluded by default. If you explicitly include secrets, a backup password is required and the secret block is encrypted with PBKDF2-HMAC-SHA256 key derivation and AES-256-GCM so it can be restored on another device without reusing device-bound Android Keystore ciphertext.
Article bodies, read/star states, AI summary caches, translation caches and temporary update state are intentionally not treated as portable configuration.
The GitHub build supports in-app update checking and APK installation through GitHub Releases.
- Optional “check for updates on app start” setting.
- Manual “check now” action.
- Release notes and APK asset selection.
- Download progress, retry and install flow.
- Android 8+ unknown-source authorization handled through the system settings page.
- Normal RSS/website parsing and candidate scoring are local and deterministic.
- AI services are optional; article content is sent only when the user invokes an AI feature.
- Cloud translation services are optional; ML Kit can provide on-device translation for supported languages.
- Cloud API keys are stored with Android Keystore-backed encryption.
- Configuration backups exclude API keys unless the user explicitly opts in and supplies a backup password.
- WebView parsing does not expose a privileged JavaScript-to-Android bridge.
- OrigRead does not bypass authentication, CAPTCHA, paywalls or access controls.
Download the latest APK from GitHub Releases.
Current GitHub release builds target:
- Android 8.0 / API 26 or later.
arm64-v8adevices.
Requirements:
- Android Studio with the required Android SDK.
- JDK 17.
Windows:
.\gradlew.bat assembleGithubReleaseLinux / macOS:
./gradlew assembleGithubReleaseThe project keeps the GitHub self-update dependency isolated to the GitHub flavor. F-Droid and Google Play flavors use their own distribution-safe implementations.
OrigRead is a derivative project based on Read You.
Read You provides the original application foundation, including major parts of the Compose UI, RSS reader architecture, localization framework and existing reader behavior. OrigRead continues from that foundation with its own multi-source discovery, parsing-rule system, JSON/API sources, RSSHub integration, dynamic-page fallback, content extraction pipeline, filters, translation/AI workflows, configuration backup and GitHub update work.
Thanks to the Read You maintainers and contributors for their open-source work.
OrigRead is distributed under the GNU General Public License v3.0 (GPL-3.0). See LICENSE.
- Repository: https://github.com/ZGMFX01A/OrigRead
- Releases: https://github.com/ZGMFX01A/OrigRead/releases
- Issues: https://github.com/ZGMFX01A/OrigRead/issues
- Upstream Read You: https://github.com/ReadYouApp/ReadYou
Android RSS reader, RSS reader, Atom reader, feed reader, Android feed reader, news reader, personal information reader, RSSHub client, RSSHub Android, RSS discovery, RSS source discovery, OPML reader, full-text RSS, full content extraction, Readability, website parser, website feed parser, HTML parser, CSS selector parser, JSON API reader, JSONPath, WordPress REST reader, Next.js feed, Nuxt feed, WebView parser, article filter, regex filter, AI summary, article summarizer, AI translation, OpenAI compatible, DeepL, DeepLX, Google ML Kit translation, Material You, Jetpack Compose, Kotlin.






