Introduction — Why I built this:
Have you ever felt blocked by Bilibili's favorites limit or poor search experience? I had the same pain: failing to find previously watched videos from memory keywords, then being forced to use workarounds when favorites hit the limit—web bookmarks, browser collections, screenshots, or even deleting old favorites.
BiliShelf is a browser extension that replaces the default Bilibili favorite-management workflow. It stores video metadata locally to bypass collection limits and improve search quality, with multi-folder organization, custom tags, full-text/field-aware lookup, and batch operations.
Releases and download the package for your browser.Load unpacked.about:debugging or Install Add-on From File.Install dependencies:
pnpm install
Run web manager (frontend + backend):
pnpm --dir backend install
pnpm --dir backend dev
pnpm --dir frontend install
pnpm --dir frontend dev
Run extension in dev mode:
pnpm ext:dev
Build and zip all browser targets:
pnpm ext:build:all pnpm ext:zip:all
bili-like/ ├─ backend/ # API service (Fastify + Drizzle ORM + SQLite) ├─ frontend/ # Manager frontend (Vue 3 + Vite) ├─ extension/ # Browser extension (WXT, multi-browser) └─ README.md
frontend/): Vue 3, TypeScript, Vite, Pinia, Vue Router, Tailwind CSS, shadcn-vue, Inspira UI, vue-toastificationbackend/): Node.js, Fastify, Drizzle ORM, better-sqlite3 (SQLite), Zod, drizzle-kitextension/): WXT (Chrome/Edge MV3 + Firefox MV2 builds), Background + IndexedDB local data layer, Content/Popup in TS/JS412 anti-abuse error, or the Bilibili favorites page returns no videos, close and reopen the extension, then try again.Issue for bugs and feel free to contribute a PR.MIT © TLRK