Automated Japanese vocabulary mining from media with Anki integration
Project description
Anki Miner
Turn native Japanese content into Anki vocabulary cards.
Please leave a ⭐ star if Anki Miner helped you - it helps others find it :).
Mining Demo
Example cards
| ⬇️ MP4 (sound) | ⬇️ MP4 (sound) | ⬇️ MP4 (sound) |
Installation
Requirements
- Anki with the AnkiConnect add-on (code
2055492159) - ffmpeg + libmpv (video preview only) - needed only when installing via pip/pipx,
.deb, or source.
Grab the download for your platform from the latest release:
| Platform | Download |
|---|---|
| Windows | AnkiMiner-*-Setup.exe |
| macOS (Apple Silicon / M1-M4) | AnkiMiner-macOS-arm64.tar.gz |
| macOS (Intel) | AnkiMiner-macOS-x86_64.tar.gz ¹ |
| Linux (Debian/Ubuntu) | anki-miner_*_amd64.deb |
| Linux (other) | AnkiMiner-*-Linux-x86_64.AppImage |
¹ Excludes local Whisper subtitle generation and AVIF screenshots. For full functionality: pipx install "anki-miner[asr]".
First-run notes (unsigned builds)
- macOS: Gatekeeper blocks the app. Extract first, then
xattr -dr com.apple.quarantine AnkiMiner/ - Windows SmartScreen: More info -> Run anyway.
- Windows Defender false positive: restore from Protection history or report to Microsoft.
Install from PyPI (Python 3.11+)
pipx install anki-miner # or: pip install anki-miner
anki_miner_gui
Install from source
git clone https://github.com/0xzerolight/anki_miner.git
cd anki_miner
pip install -e .
anki_miner_gui
For full development setup, see CONTRIBUTING.md.
Tabs
- Video - mine a single video/subtitle pair, a batch folder, or YouTube URLs.
- Deck Builder - mine a whole series into one frequency-ranked deck.
- Audiobooks - mine audiobooks, podcasts, radio, songs (audio + subtitle/transcript pairs).
- Reading - mine manga (mokuro), novels (
.epub,.txt; single book or a whole folder), standalone subtitle files, or pasted Japanese text. - Analytics - mining history, difficulty rankings, milestones, undo.
- Utilities - generate subtitles (local Whisper), retime subtitles (alass), condense media to dialogue-only audio, and backfill fields on existing cards.
- Settings - everything configurable.
Other Features
- Word Curator - review every candidate word before cards are made, with its scene, manga page, and dictionary entry side by side.
- Extensive filtering: i+1, frequency limits, blacklist, regex, wordsets, and more.
- Offline Yomitan dictionary import - definitions, pitch accent, frequency - chained by priority.
- Multiple frequency lists chained by priority.
- Word audio on cards from local audio packs, JapanesePod101, or Google TTS.
- Sentence audio on Reading cards from Google Translate TTS or Naver Papago (off by default).
- Per-dictionary glossary styling, Yomitan-style.
- Embedded libmpv video preview - play a word's scene while curating, or nudge subtitle timing with live playback.
- Animated screenshots (see example cards above).
- Settings profiles - save named configurations and switch between them from the header.
- Restyle Mined Cards - re-apply your current card styling to cards you already made (Tools menu).
Built-in themes (29)
- Ayu - Light, Mirage, Dark
- Catppuccin - Latte (light); Frappé, Macchiato, Mocha (dark)
- Dracula - Dracula, Alucard
- Everforest - Light, Dark
- GitHub - Light; Dark, Dark Dimmed
- Gruvbox - Light Medium, Dark Medium
- Kanagawa - Lotus (light), Wave (dark)
- Rosé Pine - Dawn (light); Main, Moon (dark)
- Solarized - Light, Dark
- Standalone - Light, Dark, Sakura, Nord, One Dark, Tokyo Night
Theme licenses: LICENSE-THEMES.md. Want another theme added? Suggest in a GitHub Issue.
How It Works
- Read the subtitles and split Japanese into individual words.
- Filter to content words you don't already know - optionally reviewing the list yourself in the Word Curator.
- Grab a screenshot and audio clip from the video for each line.
- Look up definitions in your configured offline dictionaries, optionally falling back to Jisho online if enabled (slower, rate-limited).
- Send the finished cards to Anki.
Recommended Resources
| Type | Resource | Download | Add via |
|---|---|---|---|
| Dictionary | JMdict | Yomitan zip | Add Dictionary… |
| Dictionary | Jitendex | Yomitan zip | Add Dictionary… |
| Dictionary | Bee's Character Dictionary | Generated on site | Add Dictionary… |
| Pitch | Kanjium | TSV | Pitch Accent -> Add pitch source… |
| Pitch | アクセント辞典v2 | Drive | Pitch Accent -> Add pitch source… |
| Frequency | JPDB v2.2 Kana | Yomitan zip | Frequency -> Add frequency source… |
| Frequency | BCCWJ SUW+LUW | Yomitan zip | Frequency -> Add frequency source… |
JMnedict License
Uses bundled name wordsets derived from JMnedict (JMdict/EDICT project, EDRDG, CC BY-SA 4.0).
Troubleshooting
| Issue | Solution |
|---|---|
| "Cannot connect to Anki" | Start Anki and ensure AnkiConnect is installed. |
| "Deck not found" | Pick an existing deck in Settings -> Cards & Anki. Decks are not created for you; make it in Anki first if you need a new one. |
| "Note type not found" | Configure your note type's field names in Settings -> Cards & Anki. |
| "ffmpeg not found" | Install ffmpeg and add it to PATH. |
| No definitions found | Add a Yomitan dictionary in Settings -> Add Dictionary… (recommended), or enable the Jisho fallback (slower, rate-limited). |
| Windows installer will not open / SmartScreen warning | See First-run notes: select More info -> Run anyway; restore Defender false positives from Protection history. |
| Fresh install has no definitions | Run Tools -> Setup Wizard or Tools -> Download Recommended Resources. For manual import, keep the Yomitan ZIP intact (do not unzip it). |
| Add Dictionary stalls or fails | Note the last visible stage and attach logs (see "Where are the logs?" below). Include the dictionary ZIP name, source, and size in the report. |
| Where are the logs? | Use Help -> Open Log Folder, or open %USERPROFILE%\.anki_miner\anki_miner.log on Windows or ~/.anki_miner/anki_miner.log on macOS/Linux. Rotated logs use the .1 through .5 suffixes. |
| Audio is wrong language | The tool tries Japanese audio tracks first, then falls back to the default. |
| Subtitles out of sync | Use the subtitle offset control in the GUI (range ±300 seconds). |
Roadmap
List of ideas for future versions of Anki Miner. Not in priority order. Feature requests take precedence.
-
Suggest a feature - Open an issue.
-
Discuss the roadmap - Discussions.
-
Features:
- UI language selection.
- Local subtitle creation tab: Opt-in tab to locally generate subtitles.
- Reading tab: Mine manga and books.
- Backfill tool.
- Media library: Expand Analytics tab to display local media library across all media forms.
- Automatic subtitle downloading.
-
Long-term:
- Android port -- https://github.com/0xzerolight/anki_miner_android
- Beyond Japanese: Mining other languages.
- Anki Miner browser extension.
Contributing
Contributions of any kind are welcome. If you want to support the project, please share it with others who may benefit from it.
- New here? Start with CONTRIBUTING.md.
- Architecture overview: ARCHITECTURE.md.
- Testing strategy: TESTING.md.
- Code of Conduct: CODE_OF_CONDUCT.md.
- Security: SECURITY.md.
Bug reports and feature requests -> Issues. General questions and discussion -> Discussions or Discord.
Special Thanks
Sincere thanks to people who made exceptional contributions to the project:
★ StyraxBenzoin - Brilliant feature suggestions, new release testing, community building
See CONTRIBUTORS.md for everyone who has made any kind of contribution to the project.
License
GNU General Public License v3.0. See LICENSE.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file anki_miner-2.9.0.tar.gz.
File metadata
- Download URL: anki_miner-2.9.0.tar.gz
- Upload date:
- Size: 8.8 MB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a942eee8353f5515907bec9ce2319587c3780afe9359eebacd91acfc30ebfb55
|
|
| MD5 |
6ae4b375ac474c15882e117fc382ac55
|
|
| BLAKE2b-256 |
15f06b0b11fc082499ef581fcba8c77a2f474003f8c53ac88b0c85104f0a25ab
|
Provenance
The following attestation bundles were made for anki_miner-2.9.0.tar.gz:
Publisher:
publish.yml on 0xzerolight/anki_miner
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
anki_miner-2.9.0.tar.gz -
Subject digest:
a942eee8353f5515907bec9ce2319587c3780afe9359eebacd91acfc30ebfb55 - Sigstore transparency entry: 2329022740
- Sigstore integration time:
-
Permalink:
0xzerolight/anki_miner@8f8b29513e9e8d5544fa9f194eae1269f6f6df83 -
Branch / Tag:
refs/tags/v2.9.0 - Owner: https://github.com/0xzerolight
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@8f8b29513e9e8d5544fa9f194eae1269f6f6df83 -
Trigger Event:
push
-
Statement type:
File details
Details for the file anki_miner-2.9.0-py3-none-any.whl.
File metadata
- Download URL: anki_miner-2.9.0-py3-none-any.whl
- Upload date:
- Size: 9.0 MB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4196bb7e0205901e5a63398b6aedae905297543de0fa787600e88b31234f98c1
|
|
| MD5 |
641f4c5a809e1114a91613b8864c85a2
|
|
| BLAKE2b-256 |
a77c88c80dc8d1d75786ade769628fba42b2b2dc6068f45184337653337ddb8b
|
Provenance
The following attestation bundles were made for anki_miner-2.9.0-py3-none-any.whl:
Publisher:
publish.yml on 0xzerolight/anki_miner
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
anki_miner-2.9.0-py3-none-any.whl -
Subject digest:
4196bb7e0205901e5a63398b6aedae905297543de0fa787600e88b31234f98c1 - Sigstore transparency entry: 2329022839
- Sigstore integration time:
-
Permalink:
0xzerolight/anki_miner@8f8b29513e9e8d5544fa9f194eae1269f6f6df83 -
Branch / Tag:
refs/tags/v2.9.0 - Owner: https://github.com/0xzerolight
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@8f8b29513e9e8d5544fa9f194eae1269f6f6df83 -
Trigger Event:
push
-
Statement type: