# Zhihu++: an ad-free Zhihu client with a local recommendation algorithm

> Zhihu++ is an AGPL-3.0 Android client for Zhihu, written in Kotlin, that replaces Zhihu's server-side feed with a local recommender and blocks ads, paid columns and promotional posts. It is a young project with a nightly build channel and an experimental desktop version.

**zly2006/zhihu-plus-plus** — Project brief: Zhihu++ | ++: Ad-free, low cost, AI powered zhihu android 3rd-party client. AI .

- Repository: https://github.com/zly2006/zhihu-plus-plus
- Stars: 4,153 · Forks: 201
- Language: Kotlin
- License: AGPL-3.0
- Published: 2026-08-04 · Updated: 2026-08-18 · Language: en
- Canonical page: https://hysenlabs.com/projects/zly2006-zhihu-plus-plus

## What Zhihu++ replaces, and for whom

Zhihu is a Chinese question-and-answer site. The official Android client is, by the README's own comparison, over 110 MB, and it carries advertising, promotional articles, product placement and paid Yanzuan columns. Zhihu++ is a third-party client that removes those categories and, more importantly, moves feed ranking off Zhihu's servers. The README states the project's aim plainly: content recommendation runs entirely locally, independent of Zhihu's algorithm, and depends on a crawler to work. The audience is therefore narrow and specific. You are a Zhihu reader on Android who wants control over what appears in the feed, you are willing to log in through a third-party app, and you accept that a project which scrapes a commercial service will break when that service changes. The README itself opens by saying the project is not yet complete and that pull requests are welcome, which sets the expectation for anyone considering it as a daily driver.

## How the local recommendation algorithm actually works

The architecture has three layers. A Kotlin Multiplatform shared core holds the logic used by both the Android app and the experimental desktop builds, which is why the repository contains shared/ alongside app/, desktopApp/ and macosApp/. A signing component, rs-zse-sign, implements the zse96 v2 signature algorithm, and the README claims this lets the client call 99% of Zhihu's web APIs; a second path simulates the Android API instead. That is the data flow: the client authenticates as you, fetches content from Zhihu's own endpoints, and then applies its own ranking. The recommender itself is the part that is genuinely different. Instead of asking Zhihu for a ranked feed, Zhihu++ crawls content and ranks it locally, and the README says the weights are user-configurable. Four feed modes are listed: Web, Android, Local and Mixed, so you can fall back to the platform's own ordering when the local one gives you nothing useful. Switching between logged-in and logged-out recommendation is also supported, which the README frames as a way to avoid a filter bubble. The Full build adds an ONNX runtime for on-device inference, used for LLM-embedding-based filtering: NLP blockwords matched by vector similarity, and AI-assisted filtering of answers. The Lite build omits the ONNX runtime entirely, so none of the embedding features exist there. The repository also carries sentence_embeddings/ and rs-hf-tokenizer/, which is consistent with the embedding pipeline described in the README rather than a keyword matcher.

## Installing Zhihu++ and blocking your first topic

There is no Play Store listing and no package manager. The README points to the GitHub releases page for APKs and to a separate nightly tag for development builds. Download the APK on the device, allow installation from the source you used, and install it. Nothing here requires root, and the README notes the same about the other clients it lists. The Lite APK is described as under 4 MB; Full is larger because it bundles the ONNX framework. Desktop builds are also published as jars for macOS arm64, Linux x64 and Windows x64, and the README states they need Java 17 or higher installed locally. Once the app is running, log in with a phone verification code, by scanning a QR code from a desktop session, or by pasting a cookie manually. The blocklist is where the local ranking becomes visible. Open the blocklist settings and add a term; the README documents regular expression support for blockwords, plus separate lists for users and topics, and import and export of the blockword list for moving between devices.

```bash
# The README gives no CLI. Installation is an APK from the releases page:
# https://github.com/zly2006/zhihu-plus-plus/releases
# Full build: on-device ONNX inference, embedding-based content filter
# Lite build: no ONNX, smaller and faster
```

After installing, the first useful check is the feed mode. Switch the home feed between Web, Android, Local and Mixed and compare what each returns; the README documents all four as selectable. If you installed Lite, the NLP blockword and AI filter entries will not do anything, because the README ties them to the Full build's ONNX runtime. Export the blockword list once you have tuned it, since the README lists export and import as the supported way to carry it across devices.

## Where Zhihu++ is the wrong tool

The local recommender depends on a crawler, and the README says so directly. That means the feed is only as good as the crawl, and a local ranking over crawled content will not match the freshness or coverage of Zhihu's own index. If you want the platform's ranking, you are paying the cost of an extra layer for nothing. The second limitation is platform. The primary target is Android; the desktop build is labelled experimental in the README, and the macOS app directory sits alongside it. There is no iOS client in this repository. The README links to a separate Swift project and then states that none of the listed projects are affiliated with Zhihu++ and that their inclusion does not imply support or endorsement, so iOS users are being pointed at unrelated work. Third, the API surface is a liability. The zse96 v2 signing implementation and the Android API simulation exist because Zhihu does not offer a public API for this; when Zhihu changes its endpoints or signatures, the client stops working until someone updates rs-zse-sign or the shared core. Fourth, the README describes the Full build's on-device AI as mainly a technical experiment, and notes that features such as a local knowledge base are not developed. Buying the larger APK for the AI filtering means accepting unfinished work. Finally, telemetry is on by default unless you decline it. The README lists what is collected: launch count, launch time, your IP address, and a SHA256-anonymised Zhihu account ID if you are logged in. It states that browsing history, recommender inputs and outputs, and blockword lists are not collected, and that refusing telemetry does not disable any feature. That is a reasonable disclosure, but it is still a network call you have to turn off yourself.

## Zhihu++ against Hydrogen and Zhihu--

The README lists two sibling clients and does not rank them. Hydrogen and Zhihu-- are both third-party Zhihu clients that, like Zhihu++, work without root. The difference that matters is where ranking happens. Zhihu++ puts a crawler and a configurable local recommender between you and the feed, with four selectable feed sources and embedding-based filtering in the Full build. The README does not describe Hydrogen or Zhihu-- as having a local recommender, so the choice between them is not about ad blocking, which all three set out to do, but about whether you want to re-rank the feed yourself. Zhihu-- is described in the README as at a very early stage of development with gaps in functionality, so it is the weaker option of the two if you want something usable now. Zhihu++ also carries a larger feature list than a plain reader: content export to PDF, image, Markdown and HTML, whole-collection export, LaTeX rendering with dynamically downloaded fonts, text-to-speech, Markdown answer editing on Android, and a named AIGC marking and voting system. Those are the reasons to pick it over a simpler client, and the reasons its surface area is bigger and more likely to break.

## Licence, maintenance and the upgrade path

Zhihu++ is licensed under AGPL-3.0. If you fork it and run a modified version as a network service, the AGPL's source-disclosure obligation applies to that service; if you only install the APK on your own phone, the practical effect is that you receive the source. This is a description of the licence, not legal advice, and anyone redistributing a modified build should read the LICENSE file in the repository. Maintenance is active in the only sense the repository supports: the last push was on 2026-08-23, and the release list shows 0.28.2 on 2026-08-19, 0.28.3 on 2026-08-22 and a nightly build on 2026-08-23. The version numbers move in small increments and the nightly channel exists, which tells you the project ships frequently but in small steps. Upgrading means re-downloading an APK from the releases page, or tracking the nightly tag if you want the newest code. There is no store-based update mechanism described in the README. The practical cost of upgrading is low, but the practical cost of not upgrading is higher than in most apps: if Zhihu rotates its signing requirements, an old build stops fetching content, and the fix arrives only in a new release. Keep the blockword export current so a reinstall does not cost you a tuned list.

## Conclusion

Adopt Zhihu++ if you read Zhihu on Android, want the ranking signal taken away from the platform, and accept an AGPL-3.0 client that still calls Zhihu's own private APIs. Do not adopt it if you need iOS, since the README points iOS users at an unrelated Swift project, or if you cannot tolerate breakage when Zhihu changes its API. Before installing, decide between the Full and Lite APKs, because only Full carries the ONNX runtime and the embedding-based content filter, and read the telemetry section to see what is collected and how to switch it off.

## FAQ

### What is Zhihu and what is it used for?

Zhihu is the Chinese question-and-answer platform that Zhihu++ is a client for. The README describes the official Android app as over 110 MB and as carrying ads, promotional articles and Yanzuan paid columns, which is the baseline Zhihu++ is built to replace.

### Is there an iOS version of Zhihu++?

No. The project targets Android first, with an experimental desktop build published as jars for macOS arm64, Linux x64 and Windows x64. The README links to a separate Swift project for iOS and states that none of the listed projects are affiliated with Zhihu++ or endorsed by it.

### What is the difference between the Full and Lite builds of Zhihu++?

The README says Full bundles an ONNX framework for on-device inference, which enables LLM-embedding-based content filtering such as NLP blockwords matched by vector similarity. Lite has no ONNX runtime, so the smart content filter is unavailable, but the APK is smaller and the README describes its performance as better.

### Does Zhihu++ collect any data about me?

Telemetry is opt-in and can be switched off in settings without losing any feature. The README lists exactly what is collected: app launch count, launch time, your IP address, and a SHA256-anonymised Zhihu account ID if you are logged in. It states that browsing history, recommender inputs and outputs, and blockword lists are not collected.

## Sources

- [Official README](https://github.com/zly2006/zhihu-plus-plus#readme)
- [Project repository](https://github.com/zly2006/zhihu-plus-plus)
- [Release notes](https://github.com/zly2006/zhihu-plus-plus/releases)

---

Hysen Labs editorial analysis, written from the project's own repository and release notes. Cite the canonical page: https://hysenlabs.com/projects/zly2006-zhihu-plus-plus
