Preface¶
When running long sessions or writing code in DSH, many people browse Bilibili’s recommendation feed on the side. The feed is sorted by the platform’s own logic, which often doesn’t align with the “topic you want to watch right now.” Conversely, searching for keywords yourself can easily fall into the view-count trap, as clickbait titles and high view counts do not necessarily mean the content is worth watching.
dsh-bili-jar (repository name; UI label: “Electronic Pickle Jar”) is a DSH networking tool plugin released by community maintainer Debuger-114514. It hangs a “jar” in the bottom right corner of the interface, searches Bilibili according to the interest axes you configure, sorts by engagement rate rather than view count, and then hands the candidates to DeepSeek to select five videos and write recommendation reasons. It does not replace the Bilibili client but adds a reproducible “today’s watchlist” workflow alongside DSH desktop/Web sessions.
Plugin directory page: https://www.skillhub.cn/plugins/Debuger-114514/dsh-bili-jar; Source code and documentation: https://github.com/Debuger-114514/dsh-bili-jar (The README shows the current npm version is 0.2.3, MIT licensed).
What is this¶
In one sentence: It is a DSH plugin and a persistent widget in the bottom right corner. Clicking it reveals “Bilibili videos you should watch today”—an all-in-one pipeline for searching, scoring, accumulating a pool, and model curation.
The difference from “directly using Bilibili homepage recommendations” lies in: search terms are derived from your own interest axes (preset and extensible); sorting primarily looks at the ratio of likes/coins/favorites/danmaku relative to views; it retains unwatched good candidates in a pool across days; and only at the final step does it call the Large Language Model to select five from the high-scoring candidates, with reasons describing only the content and not embedding data into the copy.
Core Features¶
Interest Axes and Search¶
- Searches Bilibili based on the interest axes you fill in (README examples:
deepseek,current affairs,history, etc., any topic). - In one run, each axis generates about 3 search terms (one of which rotates hourly); the documentation example with 4 axes results in about 9 searches, pulling back approximately 180 results.
- Comes with 30 preset interest axes (games, music, knowledge, tech, etc.) and 68 sub-clusters upon installation; the settings page allows adding entire axes via “+ Games”. User custom axis trees are written to
~/.dsh/bili-jar/axis-tree.jsonwithout altering factory presets.
Engagement Scoring and Candidate Pool¶
- Hard Filtering: Content is excluded based on duration, view thresholds, member exclusives, live-stream replays, date windows (default 14 days, set
0in settings for no limit), and content that doesn’t stick to any axis. - Scoring Weights (formula provided in README): Engagement Rate 0.39, Axis Match 0.30, Freshness 0.10, Niche Tags 0.06, Subtitles 0.06, View Count 0.05, Multi-axis 0.04; the top 12 candidates are re-checked for actual coin counts and recalculated.
- Candidates are merged with the previous round’s pool; the same BV ID only updates data, facilitating the scenario where “what wasn’t found today might be brought out by another keyword tomorrow.”
Model Curation and Degradation¶
- Only the top 24 scoring videos are sent to the model, which selects 5 and writes a reason for each (documentation notes: calling the model on the full pool costs about ten times more without necessarily being more effective).
- You need to configure your own DeepSeek official API Key; the README estimates a round of “Get a new batch” costs roughly ¥0.004–0.01, billed according to official peak/off-peak hours (see the “Accounting” section in the repo).
- If the model is not configured or the call fails, it falls back to a pure rule-based selection: each axis first selects one video with similarity ≥0.85, max 2 videos per axis, and max 1 video per UP-loader (creator), ensuring the list is never empty.
UI and Interaction¶
- The frontend displays the jar in the bottom right corner; supports popup playback, 👍/👎 on cards (feedback starts influencing scoring after 20 entries are accumulated).
- Clicking the title, “Open,” or “Popup” marks a video as watched, removing it from recommendations, follow-ups, and the watch list; “History” retains the last 10 viewing records.
- Three tone presets (Whale Maid / Formal Briefing / Roasting Buddy) and four avatar styles; Bilibili login is optional (mainly used for AI subtitles), with credentials stored in the plugin’s own directory.
Security and Data Persistence¶
The plugin README states: HTTP only listens on 127.0.0.1, and cross-site requests are refused; the API Key is stored in plaintext in ~/.dsh/bili-jar/config.json, but the interface only displays the last four digits (sk-••••xxxx); outbound traffic is limited to bilibili.com and your configured model API, with no telemetry collection.
Main files are located in ~/.dsh/bili-jar/: config.json, feed.json / pool.json, reasons.json, usage.json, feedback.jsonl, history.json, credential.json, etc.
Environment and Dependencies¶
- DSH:
dsh ≥ 0.1.7(engines inpackage.jsonisdsh >= 0.1.7-rc.1); requires a restart after installation (the plugin is assembled at the bundle layer). - Node:
>=22. - DeepSeek API Key: Used for curation and writing reasons; optional Bilibili QR code login.
Installation and Activation¶
The desktop profile does not allow CLI plugin installation. You need to manually modify ~/.dsh/profiles/desktop/package.json and link a local path, for example:
// ~/.dsh/profiles/desktop/package.json
{
"dependencies": { "dsh-bili-jar": "link:D:/your_path/dsh-bili-jar" },
"dsh": { "profile": { "bundles": ["@deepseek-ai/dsh-base", "dsh-bili-jar"] } }
}
Then run the following in the profile directory:
cd ~/.dsh/profiles/desktop && pnpm install
For other profiles, use the official command:
dsh plugin --profile web add dsh-bili-jar
Restart dsh after installation, then refresh the page.
It is recommended to browse the repository source code and MIT license yourself before installing; the plugin runs with the permissions of the current dsh process, reading and writing to the local ~/.dsh/bili-jar/ and calling your configured APIs.
First Use¶
- Click the jar → Settings → Fill in the DeepSeek API Key.
- Change the default interest axes to match your taste (the README explains that the default four are the author’s personal preferences).
- Return to “Recommendations” and click “Get a new batch.”
The date window can be changed in Settings via “Date Window (Days)”; filling in 0 means no limit, in which case freshness handles older videos with a 365-day soft decay.
Self-Check and Troubleshooting¶
The repository’s tools/ provides several scripts, for example:
node tools/why.mjs BV1xxxxx # Why a specific video didn't enter the jar
node tools/feed.mjs 10000 0 # Run a pool building cycle and print the list
The “Known Limitations” section in the README mentions: many videos in the current affairs section lack tags, the like/dislike learning is relatively coarse, and some words in preset sub-clusters are not clean. It is advisable to scan these before use to avoid expectation bias.
Use Cases and Notes¶
Suitable for: Users already using DSH (Web or desktop bundle) who are willing to spend a small amount on API fees for “targeted search based on personal axes + engagement filtering + a list of five videos with reasons”; for those who don’t want to touch the Bilibili recommendation feed but need an explainable selection process, this pipeline is more controllable than random searching.
Notes:
- Costs and API Keys are borne by you; peak/off-peak pricing rules are subject to the README “Accounting” table.
- Bilibili cookies and API Keys are stored locally; if running dsh on a shared machine, you need to assess directory permissions and whether to enable “Reuse Bilibili Login” (disabled by default).
- The community directory skillhub.cn has no official affiliation with DeepSeek or QuantumFactory (幻方); the plugin is a third-party open-source project, and metadata such as star counts are subject to what is displayed on each site at the time (clues suggest ~5 stars on GitHub).
Conclusion¶
dsh-bili-jar solidifies the workflow of “Interest Axis Search → Engagement Scoring → Cross-day Pool → Model selects five” into a repeatable operation: the Jar provides the persistent entry point, rules handle most of the filtering, and the model only handles small-batch curation. If you want to integrate Bilibili consumption into your DSH workflow, you can view the entry description on the directory page and read the full README, docs/presets.md, and docs/tag-tree.md on GitHub before deciding whether to install.
- Directory Page: https://www.skillhub.cn/plugins/Debuger-114514/dsh-bili-jar
- Repository: https://github.com/Debuger-114514/dsh-bili-jar