Browser companion for the AnkiConf workflow. Word lookup + video-clip examples pulled from a local Core service + one-click Anki cards with auto-attached clips.
A focused fork of Yomitan. Not a general-purpose popup dictionary — this exists to support a specific research-driven language-learning workflow built around AnkiConf.
Ex button on a dictionary
entry pulls real movie/TV scenes containing the searched word, with
time-synced subtitles, from your local AnkiConf Core. Search-word
highlighted gold inside the caption strip.F2 replay) that
re-renders clips from the note’s data field on subsequent hovers.domain and
endpoint tag from the host page URL, so cards stay sourced to where
you learned them.Alt+Shift+A) — free-form
expression+translate textareas, one-click save, bypasses dictionary
lookup.Users of AnkiConf. If you don’t run AnkiConf Core locally, Flib-club still works as a popup dictionary (the Yomitan baseline) — but the features above are gated on the Core. If you’re not building this specific Anki-driven workflow, you almost certainly want upstream Yomitan.
The extension talks to one user-configurable endpoint (default
http://127.0.0.1:8777). The AnkiConf Core service at that endpoint:
127.0.0.1:8765 (no separate wiring needed in the browser).So the extension only declares one host in Settings, and AMO/Chrome Web Store disclosure is a single line.
For AMO reviewers reproducing the submitted Firefox extension: see BUILDING.md — covers tested OS / Node / npm versions, prerequisite install links, the exact build commands, output mapping (which zip = which submission), reproducibility verification, and the no-obfuscation/no-minification stance.
Quick path for contributors — use the wrapper script (it handles
npm install, version bumping, and unpacks zips into
./builds/unpacked/yomitan-<variant>/):
./scripts/build-all.sh 0.3.1 # build all variants at given version
./scripts/build-all.sh 0.3.1 --clean # wipe builds/ first
./scripts/build-all.sh --no-unpack # zips only (default version 0.0.0.0)
Pass 3-part (0.3.1 → padded to 0.3.1.0) or 4-part (0.3.1.0)
versions; both work.
Output zips: yomitan-chrome.zip, yomitan-chrome-dev.zip,
yomitan-edge.zip, yomitan-firefox.zip, yomitan-firefox-dev.zip.
builds/cu is a symlink to builds/unpacked/yomitan-chrome-dev —
Chrome’s “Load unpacked” should point at it once and stay; each
build-all.sh run refreshes what’s behind the symlink automatically.
The extension pairs wty-en-en with flibooster-en-ru. Both zips are built
here from anki_conf’s data files; anki_conf’s code is not run. By default
both sides come from dict_base.db (--ru-source dict); --ru-source journal
builds the Russian side from the enrich.db translation journal instead:
npm run build:dictionaries # → builds/dictionaries/<revision>/
npm run build:dictionaries -- --dict <dict_base.db>
npm run build:dictionaries -- --ru-source journal --dict <dict_base.db> --journal <enrich.db>
npm run build:dictionaries -- --verify builds/dictionaries/<revision>
npm run build:dictionaries -- --help
scripts/build-all.sh runs it too and fails if the sources are missing
(--no-dictionaries skips it). It is not part of npm test. Whenever
anki_conf changes its enrich code, re-run the parity check
(npm run check:dictionary-parity) — see
docs/development/dictionary-pair.md.
If something looks wrong in the browser, run:
./scripts/yomitan-check.sh # 30 checks across CSS/JS/build
./scripts/yomitan-check.sh --bump # bump manifest + fingerprint
The script verifies that every source-of-truth pattern (CSS rules with
!important, SVG icons with xmlns, VTT highlight injection, the
unified URL fallback in backend, the builds/cu symlink, etc.) is
intact AND that every built artifact in builds/unpacked/ matches the
source. Each commit’s BUILD_FINGERPRINT is logged in the popup-iframe
DevTools console on first panel mount; if you see an older value than
the source, Chrome’s chrome-extension:// asset cache is stale — close
all extension tabs, Reload from chrome://extensions, reopen.
| Browser | How |
|---|---|
| Chrome / Opera / Brave / Vivaldi / Edge | chrome://extensions → Developer Mode → Load unpacked → ./builds/cu. Or launch with --load-extension=/abs/path/to/builds/cu. |
| Firefox Developer Edition / Nightly | about:config → xpinstall.signatures.required = false → open the firefox-dev XPI. |
| Firefox release / ESR | Install from addons.mozilla.org. |
Push a tag matching v* (e.g. v1.0.0) → CI builds all five variants at
that version and uploads them to the configured Cloudflare R2 bucket.
URLs are written to the GitHub Release notes.
Required GitHub Secrets: R2_ACCOUNT_ID, R2_BUCKET,
R2_ACCESS_KEY_ID, R2_SECRET_ACCESS_KEY, R2_PUBLIC_BASE_URL.
Like Flib-club? You can thank the author on Boosty.

GPL-3.0-or-later — see LICENSE. Built on top of Yomitan; upstream
copyright remains intact in all files that originated upstream.
The dictionaries wty-en-en and flibooster-en-ru are a separate work. They
contain text from Wiktionary by Wiktionary
contributors, obtained through Kaikki and
wty. That text was converted, filtered, edited
and translated into Russian, and is distributed under
CC BY-SA 4.0. Quotes from video
subtitles in entries added by Flibooster are not covered by this license. They
belong to their rights holders.