spinlens
Chinese tool that scans a Bilibili video's comments for rhetorical moves, with eight labels and quoted evidence, optionally via Jev.
Overview
spinlens (话术照妖镜) scans the comment section of a Bilibili video and reports which comments use rhetorical moves rather than arguments, which of eight categories each belongs to, and the exact quoted words as evidence. Categories include muddying the waters, false neutrality, dismissing through memes, minimising harm, sexualised labelling, gender labelling, dismissing by source ('information cocoon') and 'anti-fandom' labelling; one planned category was dropped because its only two examples were mislabelled. It was prompted by a large debate on Bilibili in September 2026, and the authors stress it labels language phenomena, not people, and is a sieve rather than a verdict. Documentation is in Chinese.
Three engines are available: a default locally fine-tuned model (weights about 390 MB, around 40 ms per comment, fully offline), an LLM mode, and a decision-model mode using Jev via TypeSafe's /v1/systemone. In decision-model mode it reads each category's calibrated P(true) noul value and shows eight probability bars with an adjustable threshold, like the local model; there is no batch API, so requests roughly equal comments. The server listens only on localhost and uploads no data.
What the decision model decides
| Type | Question | Answers |
|---|---|---|
| Yes / no | Does this comment use rhetorical move T1-T9 (e.g. false neutrality)? | — |
How it works
- Paste a Bilibili link or BV id
- Fetch the comment section
- Score each comment for eight rhetorical categories with the chosen engine
- Show probability bars, threshold highlights and quoted evidence
Strengths
- Evidence quoted for every hit
- Offline local engine option
- Labels language, not people
Caveats
- Decision-model mode costs one request per comment
- Domain-specific to one debate's corpus
- Chinese only
Getting started
git clone https://github.com/Aolibibi/spinlens.git && cd spinlens && ./install.sh, then node server.js and open http://127.0.0.1:8787.At a glance
- Type
- Project
- Status
- prototype
- Language
- JavaScript
- Runtime
- Node server + optional Python model server
- Has code
- yes
- License
- MIT
Use cases and integrations
How curated lists describe it
Scans a Bilibili video's comments for rhetorical moves rather than arguments - false balance, labelling, muddying - and quotes the evidence for each of eight labels. Chinese.
MrJev/awesome-jev
Frequently asked questions
What does Jev decide in spinlens?
In decision-model mode, the probability that each comment uses each of eight rhetorical moves.
Does it judge who is right?
No; it labels rhetorical techniques, not people or positions.
Can it run offline?
Yes, with the locally fine-tuned model engine.
Related projects
Chrome and Firefox extension that hides AI-written posts on X, LinkedIn, Reddit and YouTube by asking Jev 30 narrow style questions.
Browser extensionproductionJavaScriptChrome extension that asks Jev slop or not_slop for each X and LinkedIn post and blurs posts above your threshold.
Browser extensionbetaTypeScriptChrome extension that labels Weibo, Threads and X posts by topic and expression style using Jev and your own label dictionary.
Browser extensionbetaTypeScriptChrome and Firefox extension that scores a draft X post with Jev on a dozen rubrics and gives a send-or-don't verdict.
Browser extensionbetaJavaScriptCLI gate for X drafts: local hard secret checks, then Jev Noul questions with thresholds; exits non-zero to block posting.
ProjectbetaPythonApplies a qualitative codebook to open-ended survey answers and reviews with Jev, exporting uncertain rows for human review.
ProjectprototypePython