finds.dev← search

// the find

BetaStreetOmnis/xhs_ai_publisher

★ 2,043 · Python · Apache-2.0 · updated Jun 2026

AI-powered Xiaohongshu/Rednote content creation and publishing tool with PyQt desktop UI, FastAPI service, login-state reuse, preview publish, and automated browser workflows.

A desktop + API tool for automating content creation and publishing to Xiaohongshu (Little Red Book), the Chinese social platform. It pairs a PyQt5 GUI with a FastAPI service and Playwright browser automation to handle login state, AI-generated posts, cover image rendering, and scheduled publishing. Useful if you're a content creator targeting that platform specifically — there's no realistic use case outside of it.

Login state persistence is handled thoughtfully: it imports from an existing Chrome profile rather than requiring a fresh login every run, and the headless Docker mode explicitly fails with a clear message instead of silently hanging on a CAPTCHA. The dual-mode architecture (desktop GUI for interactive use, API/Docker for headless scheduling) is a genuine engineering decision that matches real workflow needs. API key storage uses local encryption to a keys.enc file rather than plaintext in settings.json. The lazy browser initialization in web mode means the service starts fast and only pays the Playwright startup cost when actually needed.

The project is single-platform by design — everything is hardcoded to Xiaohongshu's specific DOM structure and auth flows, so Playwright scripts will break on any platform UI change and there's no abstraction layer to fix one place. Test coverage is shallow: integration tests are manual and the unit tests mostly cover utility code, not the browser automation or LLM integration paths where things actually go wrong. The scheduled publishing relies on keeping the desktop app running continuously, which is not a real scheduling solution — a cron job or persistent service would be far more reliable. Python 3.13 and 32-bit Python are explicitly broken due to PyQt5 incompatibility, and the README just tells you to downgrade rather than addressing the root dependency problem.

View on GitHub → Homepage ↗

// want more like this?

We dig through GitHub every week and send a few repos picked for what you actually care about — each with an honest take like this one.

Get finds in your inbox → Search again →