{"id":50158968,"url":"https://github.com/hrussellzfac023/yomu-reader","last_synced_at":"2026-06-27T13:01:14.353Z","repository":{"id":356260948,"uuid":"1231327658","full_name":"HRussellZFAC023/yomu-reader","owner":"HRussellZFAC023","description":"JPDB/Yomitan popup reader with audio, OCR, and subtitle mining","archived":false,"fork":false,"pushed_at":"2026-06-14T11:21:42.000Z","size":74329,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-06-14T11:22:16.304Z","etag":null,"topics":["japanese","jpdb","ocr","subtitles","tampermonkey","userscript","yomitan"],"latest_commit_sha":null,"homepage":"https://hrussellzfac023.github.io/yomu-reader/","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/HRussellZFAC023.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":"docs/support.md","governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":"AGENTS.md","dco":null,"cla":null}},"created_at":"2026-05-06T21:22:06.000Z","updated_at":"2026-06-14T11:21:46.000Z","dependencies_parsed_at":null,"dependency_job_id":"f4453001-cb94-4e6c-bc95-75c14be4bf69","html_url":"https://github.com/HRussellZFAC023/yomu-reader","commit_stats":null,"previous_names":["hrussellzfac023/kotoba-reader","hrussellzfac023/yomu-reader"],"tags_count":115,"template":false,"template_full_name":null,"purl":"pkg:github/HRussellZFAC023/yomu-reader","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/HRussellZFAC023%2Fyomu-reader","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/HRussellZFAC023%2Fyomu-reader/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/HRussellZFAC023%2Fyomu-reader/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/HRussellZFAC023%2Fyomu-reader/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/HRussellZFAC023","download_url":"https://codeload.github.com/HRussellZFAC023/yomu-reader/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/HRussellZFAC023%2Fyomu-reader/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34344440,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-15T02:00:07.085Z","response_time":63,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["japanese","jpdb","ocr","subtitles","tampermonkey","userscript","yomitan"],"created_at":"2026-05-24T14:02:32.365Z","updated_at":"2026-06-27T13:01:14.335Z","avatar_url":"https://github.com/HRussellZFAC023.png","language":"TypeScript","funding_links":["https://paypal.me/HenryRussell163"],"categories":[],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\n\n\u003cimg src=\"https://yomureader.com/yomu-icon.svg\" width=\"112\" height=\"112\" alt=\"よむ logo\" /\u003e\n\n\u003ch1\u003eよむ \u003csub\u003e· Yomu\u003c/sub\u003e\u003c/h1\u003e\n\n\u003cp\u003e\u003cb\u003eRead Japanese without leaving the page. Understand it, hear it, and save it for study.\u003c/b\u003e\u003c/p\u003e\n\n\u003cp\u003e\n  よむ is a Japanese popup reader for websites, manga, game text, PDFs, and subtitles.\n  It runs as a userscript, works on desktop and mobile, and connects to the tools\n  Japanese learners already use: Yomitan dictionaries, Anki, Jiten, and JPDB.\n\u003c/p\u003e\n\n\u003cp\u003e\n  \u003ca href=\"https://github.com/HRussellZFAC023/yomu-reader/actions/workflows/ci.yml\"\u003e\u003cimg src=\"https://github.com/HRussellZFAC023/yomu-reader/actions/workflows/ci.yml/badge.svg\" alt=\"CI status\" /\u003e\u003c/a\u003e\n  \u003ca href=\"https://github.com/HRussellZFAC023/yomu-reader/releases/latest\"\u003e\u003cimg src=\"https://img.shields.io/github/v/release/HRussellZFAC023/yomu-reader?color=5ea780\u0026label=release\" alt=\"Latest release\" /\u003e\u003c/a\u003e\n  \u003ca href=\"LICENSE\"\u003e\u003cimg src=\"https://img.shields.io/github/license/HRussellZFAC023/yomu-reader?color=5ea780\" alt=\"License: MIT\" /\u003e\u003c/a\u003e\n  \u003ca href=\"https://github.com/HRussellZFAC023/yomu-reader/stargazers\"\u003e\u003cimg src=\"https://img.shields.io/github/stars/HRussellZFAC023/yomu-reader?color=5ea780\" alt=\"GitHub stars\" /\u003e\u003c/a\u003e\n  \u003ca href=\"https://discord.gg/jD6NPURewD\"\u003e\u003cimg src=\"https://img.shields.io/badge/Discord-join-5865F2?logo=discord\u0026logoColor=white\" alt=\"Join the Discord\" /\u003e\u003c/a\u003e\n\u003c/p\u003e\n\n\u003cp\u003e\n  \u003ca href=\"https://yomureader.com/yomu.user.js\"\u003e\u003cb\u003eInstall よむ\u003c/b\u003e\u003c/a\u003e ·\n  \u003ca href=\"https://yomureader.com/getting-started\"\u003eSetup guide\u003c/a\u003e ·\n  \u003ca href=\"https://yomureader.com/features\"\u003eFeatures\u003c/a\u003e ·\n  \u003ca href=\"https://yomureader.com/guides/read-games-on-steam-deck\"\u003ePC \u0026 gaming\u003c/a\u003e ·\n  \u003ca href=\"https://yomureader.com/video-player/index.html\"\u003eVideo reader\u003c/a\u003e ·\n  \u003ca href=\"https://yomureader.com/newtab/\"\u003eStudy app\u003c/a\u003e ·\n  \u003ca href=\"https://discord.gg/jD6NPURewD\"\u003eDiscord\u003c/a\u003e\n\u003c/p\u003e\n\n\u003cp\u003e\n  \u003ca href=\"https://yomureader.com/yomu.user.js\"\u003e\n    \u003cimg src=\"https://yomureader.com/screenshots/real-popup-lookup.png\" alt=\"A よむ popup showing Japanese readings, definitions, pitch, and mining actions\" width=\"760\" /\u003e\n  \u003c/a\u003e\n\u003c/p\u003e\n\n\n\u003c/div\u003e\n\n## Why よむ\n\n- **Lookup anywhere:** choose Japanese text on normal pages, OCR results, subtitles, and PDFs.\n- **Mine while reading:** create Anki cards, add/review words in Jiten or JPDB, and keep the source sentence/context.\n- **Bring your dictionaries:** import Yomitan ZIPs, JMdict, kanji dictionaries, pitch dictionaries, and frequency dictionaries.\n- **Read media, not only text:** manga/image OCR, game text handoff, YouTube subtitle mining, a local video reader, and a PDF reader.\n- **Mobile-friendly:** works on iPhone/iPad through userscript apps, with touch-first lookup and mobile Anki handoff.\n- **Free and open source:** MIT-licensed, no account needed to start.\n\n## Install\n\nThe easiest path is the step-by-step guide:\n\n```text\nhttps://yomureader.com/getting-started\n```\n\nAlready have Tampermonkey or another userscript manager? Install directly:\n\n```text\nhttps://yomureader.com/yomu.user.js\n```\n\nBrowser-store packages for Chrome, Firefox, and Safari are in preparation. Until then, the userscript is the production install path.\n\n## What It Does\n\n| Workflow | よむ helps with |\n| --- | --- |\n| Web reading | Popup dictionary lookup, furigana, pitch/accent color, audio, examples, and kanji drilldown |\n| Manga and images | OCR overlays that make recognized Japanese lookup-ready without covering the page |\n| Games | Steam Deck and PC handoff guide for browser-readable text, copied lines, OCR helpers, and text-hook outputs |\n| Video | ASB-style subtitle overlay, transcript lookup, mining, and a hosted local-file video reader |\n| PDFs | Browser PDF reader with selectable text, OCR fallback, and the same popup/mining flow |\n| Study | AnkiConnect cards, mobile Anki handoff, Jiten/JPDB actions, offline cached reviews, and the hosted study page |\n| Dictionaries | Yomitan imports, JMdict, local dictionaries, kanji data, grammar hints, and source ordering |\n\n## Hosted Tools\n\n- [Homepage PWA](https://yomureader.com/) installs as one Yomu shell with offline docs fallback and shortcuts to Study, Video, PDF, and setup.\n- [Video reader](https://yomureader.com/video-player/index.html) for local video files and subtitles.\n- [PDF reader](https://yomureader.com/pdf-reader/) for Japanese PDFs and scanned pages.\n- [Study page](https://yomureader.com/newtab/) for review cards in a browser tab or mobile Home Screen shortcut.\n- [PC \u0026 gaming guide](https://yomureader.com/guides/read-games-on-steam-deck) for Steam Deck and desktop game text workflows.\n- [Feature guide](https://yomureader.com/features) for screenshots and detailed behavior.\n\n## Privacy\n\nよむ keeps imported Yomitan dictionaries and settings in your browser. Anki mining talks to your local AnkiConnect endpoint. Jiten, JPDB, Immersion Kit, Nadeshiko, custom audio, local OCR, and optional kanji data sources are contacted only when their related features are enabled or used.\n\nGame OCR helpers, Decky plugins, clipboard capture, screenshot capture, audio capture, and cloud OCR or translation services are external to よむ unless you explicitly choose them.\n\nFor the fuller privacy and setup notes, read the docs at [yomureader.com](https://yomureader.com/).\n\n## Development\n\n```bash\nnpm install\nnpm run check\n```\n\nCommon commands:\n\n```bash\nnpm run dev          # userscript/docs dev harness\nnpm run dev:vite     # plain Vite/new-tab dev server\nnpm run build        # production userscript + hosted assets\nnpm run verify       # userscript metadata and size checks\nnpm run qa           # build + smoke/a11y/complexity checks\n```\n\nGreasy Fork's upload budget is 2,000,000 raw bytes for `dist/yomu.user.js`; `npm run verify` enforces the hard limit and warns when the bundle gets tight.\n\n\u003cdetails\u003e\n\u003csummary\u003eDeployment notes\u003c/summary\u003e\n\nGitHub Actions cover CI, userscript bundling, docs deployment, extension builds, and release publishing.\n\n- `CI` runs typecheck, tests, build, and userscript metadata verification.\n- `Build Userscript` builds `dist/yomu.user.js` and commits it back to `main` when the bundle changes.\n- `Deploy Docs` builds the VitePress docs and publishes GitHub Pages.\n- `Release` publishes the compiled userscript and browser-extension artifacts when a `v*` tag is pushed or the workflow is run manually.\n\nGreasyFork does not provide a general write API for unattended publishing. After the first logged-in publish, configure GreasyFork to sync updates from:\n\n```text\nhttps://raw.githubusercontent.com/HRussellZFAC023/yomu-reader/main/dist/yomu.user.js\n```\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003eProject notes\u003c/summary\u003e\n\n- Imported dictionaries stay in IndexedDB and do not need to be imported again.\n- OCR reads likely images near the viewport, caches results, and makes recognized text lookup-ready without covering the image.\n- YouTube subtitle detection uses caption metadata when available and visible DOM captions as a fallback.\n- Local `.srt`, `.vtt`, `.ass`, and `.ssa` subtitle files can be loaded manually.\n- On iPhone/iPad, desktop helpers such as AnkiConnect, self-hosted audio, and local OCR servers must be reachable over the network.\n- Support links, Factory Reset, API keys, imports, and appearance settings live in the settings panel.\n\n\u003c/details\u003e\n\n## Support\n\n- Documentation: https://yomureader.com/\n- Issues: https://github.com/HRussellZFAC023/yomu-reader/issues\n- Discord: https://discord.gg/jD6NPURewD\n- Donate: https://paypal.me/HenryRussell163\n\nIf よむ helps you read more Japanese, a star makes it easier for other learners to find.\n\n\u003ca href=\"https://star-history.com/#HRussellZFAC023/yomu-reader\u0026Date\"\u003e\n  \u003cimg src=\"https://api.star-history.com/svg?repos=HRussellZFAC023/yomu-reader\u0026type=Date\" alt=\"Star history chart for yomu-reader\" width=\"600\" /\u003e\n\u003c/a\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003eCredits and source licenses\u003c/summary\u003e\n\nよむ is its own userscript, but several open projects shaped the design and edge-case coverage:\n\n- [anki-jpdb.reader](https://github.com/Kagu-chan/anki-jpdb.reader) for JPDB reader inspiration, parser edge cases, mining flow, and ASB-style integration ideas.\n- [Yomitan](https://github.com/yomidevs/yomitan) for dictionary import formats, structured glossary handling, audio-source conventions, and scanning UX references.\n- [JPDB Custom Dictionary Mod](https://gitlab.com/nakura/jpdb_cdm) for JPDB/Yomitan dictionary-on-JPDB UX reference only, with no code copied.\n- [JMdict for Yomitan](https://github.com/yomidevs/jmdict-yomitan) and EDRDG/JMdict for the recommended dictionary package.\n- [Kanjium](https://github.com/mifunetoshiro/kanjium) for documented pitch-accent source data and licensing research around local pitch dictionaries.\n- [Kuuuube's Yomitan dictionaries](https://github.com/Kuuuube/yomitan-dictionaries) for the recommended JPDBv2㋕ local frequency package.\n- [asbplayer](https://github.com/asbplayer/asbplayer) for subtitle mining concepts and video-reader interaction patterns.\n- [YomiNinja](https://github.com/matt-m-o/YomiNinja), [Decky Translator](https://github.com/cat-in-a-box/Decky-Translator), [GameSentenceMiner](https://github.com/bpwhelan/GameSentenceMiner), [Kamite](https://github.com/fauu/Kamite), [Translumo](https://github.com/ramjke/Translumo), [Game2Text](https://github.com/mathewthe2/Game2Text), [Tango Lens](https://tango.acorntalk.com/help), and [Kamui](https://kamui.gg/) for game OCR, capture, overlay, and mining workflow references.\n- [KanjiVG](https://github.com/KanjiVG/kanjivg), [Kanji Canvas](https://github.com/asdfjkl/kanjicanvas), [Kanji Alive](https://github.com/kanjialive/kanji-data-media), [The Kanji Map](https://thekanjimap.com/), and [Uchisen](https://uchisen.com/) for kanji data, presentation, and study references.\n- [NihongoTube](https://www.nihongotube.app/) for the Japanese-only YouTube immersion idea as reference only.\n- [JPDB RTK Information Inserter](https://greasyfork.org/en/scripts/546314-jpdb-rtk-information-inserter), [JPDB Immersion Kit Examples](https://github.com/AwooDesu/JPDB-Immersion-Kit-Examples), and [JPDB Nadeshiko Examples](https://greasyfork.org/en/scripts/529745-jpdb-nadeshiko-examples) for optional JPDB-side behavior references.\n- [Yomikiri](https://github.com/BlueGreenMagick/yomikiri), [Tofugu grammar guides](https://www.tofugu.com/japanese-grammar/), Ultimate Yomitan Audio, and local audio server references for workflow inspiration.\n- [Immersion Kit](https://www.immersionkit.com/), [Nadeshiko](https://nadeshiko.co/), [AnkiConnect](https://foosoft.net/projects/anki-connect/), [Jiten](https://jiten.moe/), and [JPDB](https://jpdb.io) for external services users can connect to.\n\n| Source | License / terms used by よむ |\n| --- | --- |\n| [よむ source code](https://github.com/HRussellZFAC023/yomu-reader) | MIT |\n| [KanjiVG](https://github.com/KanjiVG/kanjivg) | Creative Commons Attribution-ShareAlike 3.0 |\n| [Kanji Canvas](https://github.com/asdfjkl/kanjicanvas) | MIT; stroke normalization and distance matching approach adapted with attribution |\n| [JMdict / JMdict for Yomitan](https://github.com/yomidevs/jmdict-yomitan) | JMdict data is EDRDG CC BY-SA 4.0; yomidevs packaging code is MIT |\n| [Kanjium](https://github.com/mifunetoshiro/kanjium) | Creative Commons Attribution-ShareAlike 4.0; used as source/license reference for pitch-accent recommendations, not bundled |\n| [JPDBv2 frequency dictionaries](https://github.com/Kuuuube/yomitan-dictionaries) | External Yomitan frequency packages; optional local import, not bundled |\n| [Kanji Alive data/media](https://github.com/kanjialive/kanji-data-media) | Creative Commons Attribution 4.0, with project-documented exceptions |\n| [The Kanji Map](https://github.com/gabor-kovacs/the-kanji-map) | MIT for the app; underlying data/media keep their upstream terms |\n| [Yomitan](https://github.com/yomidevs/yomitan), [fflate](https://github.com/101arrowz/fflate), [asbplayer](https://github.com/asbplayer/asbplayer), [anki-jpdb.reader](https://github.com/Kagu-chan/anki-jpdb.reader), [JPDB Immersion Kit Examples](https://github.com/AwooDesu/JPDB-Immersion-Kit-Examples), [JPDB Nadeshiko Examples](https://greasyfork.org/en/scripts/529745-jpdb-nadeshiko-examples) | Upstream terms apply; used as compatible formats, libraries, or behavior references |\n| [YomiNinja](https://github.com/matt-m-o/YomiNinja), [Decky Translator](https://github.com/cat-in-a-box/Decky-Translator), and [GameSentenceMiner](https://github.com/bpwhelan/GameSentenceMiner) | GPL-3.0 projects used as workflow references only; よむ does not bundle their code |\n| [Kamite](https://github.com/fauu/Kamite) | AGPL-3.0 project used as a workflow reference only; よむ does not bundle its code |\n| [Translumo](https://github.com/ramjke/Translumo) and [Game2Text](https://github.com/mathewthe2/Game2Text) | Apache-2.0 projects used as workflow references only; よむ does not bundle their code |\n| [Tango Lens](https://tango.acorntalk.com/help), [Kamui](https://kamui.gg/), [AnkiConnect](https://foosoft.net/projects/anki-connect/), [NihongoTube](https://www.nihongotube.app/), [Immersion Kit](https://www.immersionkit.com/), [Nadeshiko](https://nadeshiko.co/), and optional local OCR/audio services | External/runtime services or references; よむ does not bundle their corpora or service code |\n\n\u003c/details\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhrussellzfac023%2Fyomu-reader","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fhrussellzfac023%2Fyomu-reader","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhrussellzfac023%2Fyomu-reader/lists"}