Skip to content

ajaffer/glossaryMe

Repository files navigation

GlossaryMe

A browser extension for Chrome and Firefox that captures technical web pages you choose, extracts glossary terms with an LLM of your choice, and stores a personal, searchable glossary entirely on your device. No backend, no accounts, no sync.

Choose your extraction provider in settings — Anthropic (Claude), OpenAI, or a fully local Ollama model (no API key, nothing leaves your machine).

Built with WXT (Vite + React + TypeScript), producing both the Chrome (Manifest V3) and Firefox builds from a single source.

Features

  • Capture pages you choose — manually capture the current page, or allowlist a domain for automatic capture. A default blocklist keeps mail, banking, and social feeds out.
  • AI term extraction — sends cleaned page text to your chosen LLM (Anthropic, OpenAI, or a local Ollama model) and gets back terms with definitions, categories, aliases, and context quotes.
  • Automatic dedupe — the same term seen across multiple pages appears once, with a mention linking back to each source.
  • Searchable side panel — search, browse terms by category, view definitions and the sources where each term appeared.
  • Term status — mark terms as learning, known, or ignored so filed-away terms aren't re-surfaced on later captures.
  • Export — export your glossary as Markdown or JSON.
  • Private by design — full article text is never stored. Only URLs, titles, dates, and short context quotes are kept, all in local IndexedDB. Any API key stays in local extension settings, and with Ollama nothing leaves your machine at all.

Requirements

  • Node.js 18+ and npm

  • An LLM provider, one of:

    The key (if any) is entered in the extension's settings and stored locally; the extension calls the provider directly.

Getting started

npm install      # install dependencies
npm run dev      # WXT dev build for Chrome with HMR (auto-launches a browser)

Build

npm run build          # Chrome (MV3) -> .output/chrome/
npm run build:firefox  # Firefox        -> .output/firefox/
npm run build:all      # both targets
npm run zip            # package a Chrome zip for distribution

Load the extension manually

Chrome — build, then go to chrome://extensions, enable Developer mode, click Load unpacked, and select .output/chrome/.

Firefox — go to about:debugging#/runtime/this-firefox, click Load Temporary Add-on, and select .output/firefox/manifest.json (or just run npm run dev:firefox).

Once loaded, open the extension settings and pick your LLM provider — Anthropic (default model claude-sonnet-4-6), OpenAI (gpt-4o-mini), or Ollama (tinyllama at http://localhost:11434). Enter the API key for your chosen provider (not needed for Ollama); the model is configurable per provider.

Usage

  1. Visit a technical page (docs, an engineering blog, a README, a Stack Overflow answer).
  2. Click the toolbar action and choose Capture this page — or Always capture this domain to allowlist it for auto-capture.
  3. Open the side panel to search and browse the terms extracted from what you've read.
  4. Mark terms as known/ignored, or export the glossary as Markdown or JSON.

Development

npm run lint     # wxt prepare, then tsc --noEmit
npm run format   # prettier --write .
npm test         # run the test suite once (vitest)
npm run test:watch

Architecture

The codebase follows a hexagonal (ports & adapters) design: a Chrome/DB/HTTP-agnostic domain core sits behind ports, with adapters wired in a single composition root. See ARCHITECTURE.md for component and capture-pipeline diagrams.

  • src/domain/ — the core: entity models, port interfaces, and services (capture, term, settings, glossary). Depends only on port interfaces.
  • src/adapters/ — port implementations: IndexedDB repositories, the settings store, and the term extractors (Anthropic, OpenAI, Ollama) behind a provider registry.
  • src/transport/ — the CRUD message contract and the worker's message router.
  • src/content/ — readable-DOM text extraction for the content script.
  • src/ui/ — the React side panel and popup surfaces.
  • src/entrypoints/ — WXT entry points (background worker, content script, popup, side panel).

Privacy

Full article text is never persisted. Only URLs, titles, dates, and short context quotes are stored, all in on-device IndexedDB. Page text is sent to your chosen LLM provider only for extraction, and nothing beyond the extracted terms and quotes is kept. Any API key stays local. If you use Ollama, extraction runs entirely on your own machine and no page data leaves your device.

License

MIT

About

Chrome + Firefox extension that captures technical pages and builds a personal, on-device glossary using the Anthropic Claude API

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages