Chrome extension for Google Scholar: journal rankings and quartiles, author h-index, citation trends, retraction alerts and a literature-review workspace. Local-first, no tracking.
翻译准备中
取自仓库 README
正在加载完整 README。
查看完整 README ↗Scholar Utility Belt is a Manifest V3 browser extension for Google Scholar that adds local-first research workflow support directly inside Scholar result pages and author-profile pages. The project is designed around one constraint: enrich the literature review experience without turning Scholar into a heavy network client or sending a user’s reading behavior to a remote service.
The extension layers paper triage, venue quality signals, lightweight bibliometric indicators, author-page tooling, and a local library on top of the existing Scholar interface. Most features are computed from the current DOM and packaged datasets, with external lookups used selectively and transparently.
Emerging and citation-velocity signals, retraction-watch and tortured-phrase (paper-mill) screening badges, to reduce scan time on dense result pagesAuthor compare, citation lineage, the extended bibliometrics, narrative CV, the review workspace, the citation-graph overlay, and the Publish-or-Perish report are part of Scholar Utility Belt Pro for new installs — see A note on the Pro tier. If you installed the extension before this tier shipped, every one of these stays free for you, permanently. Pro features added in later versions are not covered by that promise. New installs can start a 14-day free trial. Version 1.0.0 added a set of newer Pro features (reference import and review tools, result signals, Zotero, Obsidian, LaTeX and Word exports, library tools, a bibliography checker, a tenure packet and optional AI features); those need a trial, a purchase or App Pass for everyone.
Google Scholar is unusually good at broad discovery, but it is intentionally sparse. Researchers still have to do a lot of manual work:
Scholar Utility Belt addresses those gaps in-place. Instead of replacing Scholar, it augments the page the user is already using.
On a profile's "View article" page (/citations?view_op=view_citation), all free and read from the open page, with no extra request to Scholar:
.sub.json file (papers and tags; notes only if you tick a box) and import a packet from someone else. Packets carry a SHA-256 checksum that detects accidental damage. They are not signed, and the checksum does not prove who made a file.The extension prefers computation from the page already loaded in the browser and packaged data stored with the extension. Many features work without any additional network requests.
When external data is used, requests are deliberately constrained. The code uses caching, timeouts, and fallback behavior so enrichment does not dominate page rendering or make Scholar feel fragile.
The goal is to support Scholar workflows, not replace them. Controls are embedded into Scholar’s existing result structure and author tables rather than redirecting the user into a separate web app.
Scholar Utility Belt does not require a backend service operated by the project. Data is stored in Chrome extension storage on the user’s machine.
Local-only or packaged-data features include:
Since 1.1.0 the extension asks Google Scholar for nothing you did not ask for. Opening a results page or an author profile sends Scholar no extra requests: profile stats cover the papers on screen, with a "Load all for full stats" button, and the Emerging score uses OpenAlex figures when a page has too few similar papers. Scholar is only contacted again when you press a button: Load all, Load more pages, Copy BibTeX, the abstract and venue lookups, or Compare authors (at most five requests of 100 papers each, 1.2 seconds apart). If Scholar answers with a "not a robot" check or a rate limit, those features stop and wait 15 minutes before asking again, in every tab. Two Options switches bring back the old automatic behavior for people who want it. These page loads count toward Scholar's own limits, which is why they are opt-in.
Nothing is sent to a server run by the project. These are all the places the extension talks to, what each receives, and when. Every request goes straight from your browser to the service, which handles it under its own policy.
| Service (host) | What is sent | When |
|---|---|---|
OpenAlex (api.openalex.org) | DOI, title, author name or search text; your optional API key and a placeholder mailto | Citation metrics, p-index and FWCI, the trend panel, related works, the citation graph, and watch lists (only if you add watch items). Also the librarian report page (Pro): the names, institutions and ORCIDs you type, only when you press "Find authors" |
Crossref (api.crossref.org) | DOI or a reference title | Per-result details and update status in the detailed view; the bibliography checker's "Check DOIs" button |
Unpaywall (api.unpaywall.org) | DOI and a placeholder email | Open-access status, per result in the detailed view |
OpenCitations (opencitations.net) | DOI | Citing-works counts, per result in the detailed view |
DataCite (api.datacite.org) | DOI | Dataset and software links, per result in the detailed view |
Semantic Scholar (api.semanticscholar.org) | DOI; author name | Influential citations per result in the detailed view; author-profile metrics |
arXiv (export.arxiv.org) | arXiv id | arXiv-listed results in the detailed view |
Europe PMC (www.ebi.ac.uk), NCBI E-utilities () |
The services in the first nine rows are queried automatically for results in the detailed view, using the result's DOI (or arXiv or PubMed id). Options, Display Features, "Look up extra signals" turns that off: with it off, nothing is sent for any result. Switching the view to minimal also stops them. Several of the other lookups run only on an author profile or only when you click.
The extension is built to minimize those calls and to make their effects legible in the UI.
Watch lists send your queries to OpenAlex, but only if you add watch items. A watch item is a search or an author name you type into the library page. Once one exists, the text of each item is sent to api.openalex.org (with your optional API key and the same mailto parameter other OpenAlex calls use) at most once per item per 24 hours, while the library page or a Scholar page is open. With no watch items, nothing is sent. Removing an item stops its lookups. Google Scholar itself is never fetched for this feature.
A note on OpenAlex rate limits: as of February 2026, OpenAlex asks unauthenticated callers to attach a free API key for reliable service. Without one, requests behind citation metrics, p-index/FWCI, trends, and related-works may be rate-limited or fail. Add a free key from openalex.org/settings/api in Options → OpenAlex API key; the extension works without one but degrades gracefully.
Scholar Utility Belt Pro (author compare, citation lineage, the extended bibliometrics, narrative CV, the review workspace, the citation-graph overlay, and the Publish-or-Perish report) is licensed through ExtensionPay, which makes a network request to extensionpay.com to check your entitlement status. This is the one exception to the "no backend, no telemetry" design above — everything else in the extension still runs entirely from data already on the page or packaged with the extension, apart from the optional, user-initiated AI features below, whose only network call goes to the AI provider you choose with your own key. If you installed Scholar Utility Belt before this tier shipped, nothing changes for you: every one of these features stays free, permanently. That promise covers the features listed above; Pro features added in later versions need Pro for everyone (a purchase, the 14-day free trial, or App Pass). Starting the free trial or buying Pro goes through ExtensionPay, which collects your email address.
App Pass (optional, off by default). If you already subscribe to App Pass, a single subscription that covers many browser extensions, you can turn it on in Options to unlock Pro with it. Nothing contacts joinapppass.com until you do. Once on, the extension asks joinapppass.com whether your pass is active (about every 6 hours once it is, or about every 10 minutes while you browse Scholar if no pass is found yet, so a new activation shows up quickly), sending this extension's ID and your joinapppass.com login cookie; App Pass uses those checks to share revenue between extensions. The answer, never your email, is cached locally. Turning it off in Options stops all contact. Anyone who bought Pro directly, or is grandfathered, is never checked.
Two features use language models. Both are opt-in and neither runs unless you turn it on.
chrome.storage.local on this device, is not logged, and is sent only to the chosen provider's API host. The extension asks Chrome for that one host as an optional permission when you turn the feature on, and you can turn it off (this deletes the key and releases the permission) in Options. The cost estimate uses a price table you can edit; its built-in starting values were written from memory and may be out of date. The answer is a table with a verdict per paper and one quoted sentence; a quote is kept only if it appears word for word in the saved text, otherwise the row reads "no support found in the abstract". Saved text is the abstract when the paper has one, otherwise the Scholar snippet.The project still runs no server and collects no telemetry; the only party that receives text in the second feature is the provider you picked.
The repository includes local snapshots under src/data/:
ft50.txtutd24.txtabdc2025.csvvhb2024.csvabs2024.csvfnege2025.csvcore_icore2026.csvcore_portal_ranks.csvscimago_2024_quartiles.jsonjournal_impact_2024.csvquality_sources.jsonThe new packaged fnege2025.csv is derived from the latest Harzing Journal Quality List title PDF (72nd edition, 27 March 2026). It reflects the JQL-covered journal set rather than the full FNEGE master list.
Quality-list refresh helpers live in scripts/update_quality_lists.py and related builder scripts.
Install from the Chrome Web Store or load the repository as an unpacked MV3 extension.
Chrome Web Store:
Load unpacked:
chrome://extensionsDeveloper modeLoad unpackedThe extension injects content scripts on Google Scholar domains configured in manifest.json.
This repository is intentionally lightweight. The main runtime is plain JavaScript with no bundling requirement for extension development.
Useful entry points:
src/content/content.jssrc/sw.jssrc/common/storage.jssrc/common/quality.jssrc/options/options.jssrc/library/library.jssrc/
common/ shared helpers for storage and venue-quality compilation
content/ Scholar page augmentation logic and styles
data/ packaged rank lists, quartiles, impact snapshots, and metadata
library/ local saved-paper library UI
options/ settings page for feature toggles and data management
popup/ browser action popup
whatsnew/ local what's-new page, opened once after an update
sw.js MV3 background service worker
scripts/
update_quality_lists.py refresh packaged venue-quality datasets
build_* / parse_* helpers data preparation and maintenance scripts
playwright_* browser automation and smoke-test helpers
The project relies on a mix of parser-level checks, local data-build scripts, and browser smoke tests. The repository already includes Playwright-based verification helpers under scripts/ and output/playwright/.
Automated checks:
npm test: unit tests for the shared modules and wiring.npm run e2e: the built extension in Microsoft Edge against local Scholar-shaped pages in tests/e2e/fixtures (every Scholar URL is answered locally, nothing reaches Google). It checks that badges render, that a results page and a profile visit send Scholar no extra requests, the custom list and Quick read filter, and that no page logs an error.npm run a11y: axe-core WCAG 2.1 AA checks of the extension's UI, light and dark.npm run focus: tabs through the extension's controls on the results and profile fixtures and fails if one takes keyboard focus with no visible change.npm run store-status: the public version, users and ratings of each store listing.Representative validation tasks include:
Scholar Utility Belt is built by Purplelink, which also runs a set of free web tools for academic writing. They are separate from the extension: nothing below is injected into Google Scholar pages, and the extension does not contact purplelink.llc.
.bib file for syntax errors, dead DOIs, and wrong authors or years, and gives back a corrected file..tex file or project .zip into a double-spaced manuscript .docx.Use GitHub’s citation panel or the metadata in CITATION.cff.
Current archived software DOI:
This repository includes Journal of Open Source Software submission materials in the standard JOSS manuscript format (paper.md plus paper.bib):
The current manuscript attributes the software to Benjamin M. Ampel, Georgia State University, and includes a JOSS-style AI usage disclosure.
This project is distributed under the ISC license. See LICENSE.
eutils.ncbi.nlm.nih.gov| DOI, PubMed id or PMC id |
| PubMed-indexed results in the detailed view |
NIH iCite (icite.od.nih.gov) | PubMed ids | Relative Citation Ratio on author profiles (PubMed-indexed works only) |
ROR (api.ror.org) and DBLP (dblp.org, sparql.dblp.org) | Affiliation text; co-author name | Co-author and affiliation insights, when that panel is open on an author profile |
Overleaf (www.overleaf.com) | The LaTeX source you are shown first: the chosen papers' titles, authors, years, venues, DOIs, links, tags and abstracts; your private notes only if you tick a box that is off by default | Only when you click "Send to Overleaf" in the LaTeX citation pack (Pro). It is a form posted from your browser in a new tab, so it is not a fetch and is not on the extension's fetch allowlist (url-policy.js); no permission is involved |
SCImago (www.scimagojr.com) | The year you picked, nothing else | Only when you press the download button for rankings in Options |
ExtensionPay (extensionpay.com) | A random per-install key | Pro checks, after you start a trial or unlock (see the Pro note below) |
| joinapppass.com | Your joinapppass.com login cookie | Only if you opt in to App Pass in Options |
| An AI provider you choose (Anthropic, OpenAI or Google Gemini) | Your question and the saved text of the papers you select | Only "Ask my shortlist", after you confirm what will be sent |
| Publisher sites (any host) | The paper's URL, no cookies | PDF page counts, hover summaries and "Copy BibTeX from publisher". These need the optional all-sites permission you grant in Options, and run only on your click or hover |