One local profile drives recommendations across 12 sources
OpenBiliClaw started with Bilibili and now describes 12 content sources: Bilibili, Xiaohongshu, Douyin, YouTube, X, Zhihu, Reddit, Linux.do, Bangumi, V2EX, Weibo, and the open web. A browser extension collects selected behavior and feedback, while a Python backend stores the working data in local SQLite databases. Desktop and mobile web interfaces show the feed, profile, chat, saved items, and recent history.
The project is written first for Chinese users. Its main README is Chinese, and the product screenshots and setup flow use Chinese throughout. An English README exists, so an English-speaking developer can inspect the architecture and commands, but the most current detail appears in the Chinese document. Release v0.3.212 also provides Chrome-family, Firefox, and Safari packages plus desktop installers and container images.
The profile includes MBTI and inferred psychological needs
This is more invasive than an RSS reader. OpenBiliClaw says it builds a five-layer profile from events, preferences, awareness, insights, and a “soul” layer. It infers MBTI, cognitive style, core traits, and deeper needs, then uses those in prompts that evaluate candidate content. Likes, dislikes, conversation, saves, and browsing signals can change later recommendations. Some people will find that useful; others will reasonably reject the premise.
Local storage limits who operates the database, but it does not make the whole path offline. The default workflow uses your LLM API key, and discovery reaches external content platforms. Some initialization and read-only tasks depend on a logged-in browser session. The README says configuration, credentials, profile data, and caches stay on the machine, yet requests still go to whichever model and content services you select. Privacy review must include those services as well as OpenBiliClaw itself.
What happened when we ran it
Our sandbox installed 101 Python packages in 67 seconds and used 281 MB on disk. The build passed in 24 seconds. The test command did not finish within 900 seconds, so the harness stopped it. Its last output consisted of test-progress dots moving from 0% through 3%, with no final passed, failed, or error count. We cannot turn those dots into a result the runner never produced.
The measured checkout was commit 3d0889e in an unprivileged Python 3.12 Debian container with 3 CPUs and 8 GB of RAM. It contained 1,627 files, about 582,801 source lines, and 70.4 MB before dependencies. Our scan found 10 CI workflow files, a Dockerfile, a Compose file, and a tests directory. Pip-audit reported 0 known vulnerabilities among the installed Python dependencies.
A 24-second build makes source setup look easy, while a suite still at 3% after 15 minutes says maintenance checks need much more time. The log does not identify a hung test or a code defect, so the safe conclusion is limited: the full suite did not complete under our stated resource and time budget. Contributors should split fast unit checks from slower integration or platform tests before relying on one all-purpose command.
Desktop convenience still carries a 1.1 GB model choice
The ordinary installation has two pieces. Users add the browser extension, then install or run the backend and open 127.0.0.1:8420. A compact desktop package downloads the bge-m3 embedding model on first launch. The full offline installer bundles roughly 1.1 GB of embedding data. Docker Compose and manual Python installation are documented as alternatives, while a separate Flutter repository provides native clients that connect to the same backend.
Version 0.3.212 calls the desktop app unsigned and experimental. macOS and Windows users may need documented bypass steps on first launch. The Safari package is signed and notarized only when the release job has Apple credentials; otherwise it is an unsigned experimental build requiring a browser developer setting. Chrome Web Store updates may lag GitHub releases, so backend and extension versions can also move on different schedules.
LLM ranking trades control for repeated cost and variation
Issue 123 describes the current evaluation path as sending candidate items through dozens of LLM calls, then proposes a small deterministic ranking model instead. The report says repeated LLM scoring adds delay and cost and may assign different scores to the same input. That proposal is not proof that every user sees the same bill, but it identifies the architectural tradeoff in the existing code. Larger discovery pools can translate into more model work.
Issue 151 raises a related profile problem. It describes one interest being assigned to different domains by separate model calls, domain weights not being derived from specific interests, and profile context being truncated when the tree grows. These are concrete consequences of using generative classification inside a recommender. A new user should inspect recommendations and the stored profile rather than assuming the five-layer model has objectively understood them.
Use it when cross-platform discovery justifies the trust
GitHub recorded 3,048 stars, 25 combined issues and pull requests, and a push on August 26, 2026. Release v0.3.212 landed the same day. That is active maintenance, though the pace also means extension, backend, desktop, and Docker channels need version attention. The 900-second unfinished suite keeps the maturity score below what the polished onboarding suggests.
OpenBiliClaw offers something feed readers do not: one feedback loop spanning Chinese video platforms, Western networks, small communities, and ordinary web pages. Test it with a separate browser profile and a limited set of sources first. Review the inferred profile, watch provider spend, and confirm that removing a source also stops its browser tasks. If that sounds excessive, explicit subscriptions in FreshRSS or Miniflux are the better product decision.

