itorr/nbnhhsh: Translating Chinese Pinyin Initialisms in the Browser
😩「能不能好好说话?」 拼音首字母缩写翻译工具
At a glance
- What is it?
- nbnhhsh is a JavaScript userscript and web utility that expands abbreviated Chinese phrases built from pinyin initials. It fits social-platform readers, although supported-site behavior requires URL rules and recognition depends on a community-submitted dictionary.
- Who is it for?
- nbnhhsh suits people who frequently encounter Chinese pinyin initialisms on Weibo, Tieba, or Bilibili and accept sending selected text for lookup. It is a poor fit for general translation, private offline processing, or automatic operation across every site without configuration.
- Can I use it commercially?
- Yes. Apache-2.0 is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
- Is it still maintained?
- Yes. The repository last received commits 10 days ago.
- What is it written in?
- Mainly JavaScript, according to GitHub's language statistics.
Answers come from the project's GitHub data, last synced on October 22, 2026, and from our analysis. They are not legal advice.
Editorial analysis
Why nbnhhsh Targets a Specific Chinese Reading Problem
nbnhhsh addresses a compact problem found in informal Chinese online communication: words and sentences represented by the initial letters of their pinyin syllables. Its name comes from “能不能好好说话,” which means roughly “Can you speak properly?” The README says these abbreviations increasingly appear on social platforms and describes nbnhhsh as a selection-based translation userscript.
The primary audience is a reader who understands Chinese but encounters pinyin initialisms written by other people. The project is not presented as a general Chinese translator. It recognizes abbreviations and looks them up in a dictionary. That narrower purpose is useful when a post or comment contains a short phrase that would be tedious to decode manually.
Interaction happens through text selection. On the supported sites, selecting text causes the userscript to submit that selection for decoding. This avoids asking the reader to copy an entire conversation into a separate translation form. It does, however, introduce a network-data boundary that matters to anyone who does not want selected text sent for lookup.
The repository also exposes a web version and describes a way to add selection decoding to a personal website. Those interfaces broaden access, but the documented browser userscript remains the clearest route for evaluating the project. Its results also depend on whether the selected abbreviation exists in the dictionary and whether the current page is covered by the userscript configuration.
nbnhhsh Userscript Flow and Repository Structure
The documented browser flow is selection driven. According to the README, the userscript runs on Weibo, Tieba, and Bilibili. Selecting text causes the script to submit the selection for decoding. The README does not document a separate search box, a copy-to-clipboard result, or an offline result cache.
The repository layout includes `nbnhhsh.user.js`, `nbnhhsh.meta.js`, `index.html`, and `document.css`. The JavaScript userscript is the distributable browser file linked from the README. The metadata file accompanies that distribution. The HTML and CSS files support the repository's web-facing implementation, although the README does not provide a local server build process for them.
Dictionary management is partly community driven. Each dictionary entry shown by the interface has a `+` control for submitting related text, and the project says reviewed submissions will be added. Incorrect entries are handled through issue 122. This establishes a correction and contribution path, but it does not disclose review criteria, publication latency, ambiguity handling, or the exact storage service.
The README does not identify the lookup endpoint or describe backend behavior. It would therefore be unjustified to claim that lookups are cached, performed locally, authenticated, or anonymous. The safe reading is that selected text leaves the page for the documented lookup process. The project should not be treated as an offline decoder on the available evidence.
Installing nbnhhsh Through a Userscript Manager
The project does not document an npm, package-manager, container, or command-line installation workflow. Its installation instructions begin with a userscript browser extension. The README directs users to the first-step installation guidance on Greasy Fork, then says to visit `nbnhhsh.user.js` to complete installation.
There is therefore no supported shell command to include in this tutorial. The exact installation URL documented by the project is:
https://github.com/itorr/nbnhhsh/raw/master/nbnhhsh.user.js
Paste that address into the browser after installing a userscript manager. The next action depends on the manager because the README does not specify a universal installation button, confirmation page, or browser warning. Review the script in the manager before allowing it to run.
For a first real use, open one of the documented supported pages, find a message containing a pinyin initialism, select the abbreviated text, and wait for the service response. The expected operation is a dictionary lookup for the selection rather than translation of every visible page.
The README does not document the exact result interface. Users should judge that interaction from the installed script rather than assuming a particular display format. If no response appears, the first project-specific checks are whether the current URL matches the userscript rules and whether the userscript manager permits the script to run there.
Adding nbnhhsh to More Sites and Personal Pages
The userscript manager controls site support through match settings. The README calls this setting “用户匹配” and instructs users to add the relevant URL rules. This is a manual operation. Installing nbnhhsh does not automatically grant it access to every website.
For a personal webpage, the README supplies the following integration. It loads Vue 2.6.11 first and `nbnhhsh.user.js` second:
<script src="https://cdn.bootcss.com/vue/2.6.11/vue.min.js"></script>
<script src="nbnhhsh.user.js"></script>Place these tags before `</body>`. Because `nbnhhsh.user.js` is a relative path, the site must make that file available at the corresponding location. The README does not say whether the userscript manager should be disabled on such a page or whether additional initialization is required.
This page integration and the browser userscript involve different distribution contexts. The browser version uses match rules, while the personal-site example directly loads Vue and the script. The documentation does not explain whether dictionary state, lookup settings, and interface behavior are identical between them.
The repository also lists derivative tools, including a Quicker action, Alfred workflow, PopClip extension, Chrome extension, PowerShell script, Flow Launcher plugin, Wox plugin, NoneBot2 plugin, and MCP server. These are separate projects or integrations. Their presence does not mean that the core userscript supports those platforms itself.
Dictionary Gaps, Data Submission, and Unsupported Expectations
The main limitation is dictionary coverage. nbnhhsh depends on entries that have been added and reviewed. The repository does not promise exhaustive recognition, correct interpretation of every abbreviation, or a documented ranking when one input has several meanings. Empty, incomplete, or contextually wrong results remain possible when the corpus lacks an expression or the intended meaning is ambiguous.
Site coverage is another boundary. The README explicitly lists Weibo, Tieba, and Bilibili. Other sites can be added through URL rules, but the documentation does not explain how the script behaves on pages that insert content dynamically. It also does not describe any handling for virtualized lists, custom editors, or inaccessible cross-origin frames.
Selected text is submitted for decoding on documented userscript pages. That behavior should be considered before installing the script in environments containing sensitive information. The README does not publish a lookup endpoint, retention policy, authentication model, or deletion procedure. It also does not claim that processing is local. Users who require offline decoding or prohibit transmission of selected text should not adopt this workflow without additional information from the project operator.
The project should not be confused with conversational translation. It does not document sentence segmentation, punctuation handling, translation quality, or interpretation based on surrounding context. The feature set is built around known abbreviations. Requests outside that model may fail even when the service and script are working.
nbnhhsh Maintenance Signals and Upgrade Boundaries
The repository is not archived, and its last push was on 2026-10-13. This is a recent repository change, but it is the only documented maintenance signal available. The repository has no GitHub releases, and the README does not define a version numbering scheme, release cadence, compatibility policy, or support commitment.
Installation links to `nbnhhsh.user.js` on the `master` branch. For that distribution path, the raw file can change without a tagged release. Users who need an auditable history should save the file they installed and compare it before accepting a later version. The README does not document a rollback procedure, release notes, or migration between versions.
The repository declares the Apache-2.0 license. That declaration supplies the licensing basis for reviewing use, modification, and distribution under the repository's license. It does not establish that contributed dictionary entries have no separate ownership questions, nor does it document terms for the hosted lookup service. Anyone using the project commercially should review the complete `LICENSE` and the terms of every hosted service involved rather than treating the repository label as complete legal clearance.
A different distribution route is the listed Greasy Fork page. Moving from the raw repository URL to Greasy Fork changes discovery and update management, but the README gives no update interval or compatibility comparison. The documented distinction is the distribution channel, not decoding behavior.
Local Filtering, Browser Injection, and Bot Query Models
The most relevant alternative approach is the documented iOS Shortcuts derivative, “新 话 词 典.” Its README description says it removes non-abbreviation characters from selected content locally before querying or submitting only pinyin-number abbreviations. This differs from the core userscript flow because preprocessing happens locally before a narrower query. It remains a separate derivative, so matching filtering behavior does not prove that the JavaScript userscript has the same data-handling properties.
The NoneBot2 plugin takes a different architectural route. It is designed to query abbreviations through chat software such as QQ and support automatic selection translation. That makes it suitable for a bot-oriented environment rather than direct browser page augmentation. The repository does not provide shared coverage or update comparisons between the two implementations.
A hosted webpage, such as the linked web version, may suit users who do not want to configure a userscript manager. The repository does not document all of its controls, browser requirements, or request handling. The core userscript is more specific for supported social pages because its match configuration and selected-text workflow are explicitly documented.
For automated agents or desktop search tools, the listed PowerShell, Flow Launcher, Wox, and MCP integrations use separate access patterns. Their repositories should be evaluated independently rather than treated as built-in features of itorr/nbnhhsh.
Editorial conclusion
nbnhhsh suits people who frequently encounter Chinese pinyin initialisms on Weibo, Tieba, or Bilibili and accept sending selected text for lookup. It is a poor fit for general translation, private offline processing, or automatic operation across every site without configuration. Before adoption, verify that your target URLs can be added to the userscript match rules, confirm how selected text is handled by the service, and review the complete Apache-2.0 license.
Frequently asked questions
How do I install nbnhhsh in a browser?
Install a userscript manager, follow the Greasy Fork guidance linked in the README, and open the raw `nbnhhsh.user.js` URL to start installation. The exact confirmation interface depends on the userscript manager.
On which websites does nbnhhsh run by default?
The README says the userscript runs on Weibo, Tieba, and Bilibili. Additional sites require URL match rules in the userscript manager configuration.
Does nbnhhsh translate ordinary Chinese text?
The documented purpose is expanding abbreviations formed from pinyin initials after the user selects text. It is not documented as a general translator for complete Chinese sentences.
Does nbnhhsh process selected text locally?
The README states that selecting text submits it for decoding, so the documented userscript flow is not local-only processing. It does not publish the lookup endpoint, retention policy, or deletion procedure.
How can an incorrect nbnhhsh dictionary entry be reported?
The README directs reports to issue 122. New entries can be submitted through the `+` control shown for an existing entry, after which the project says they will be reviewed and added.
Official sources
Add this badge to your README
If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.
[](https://hysenlabs.com/projects/itorr-nbnhhsh)Was this useful?