Bryn509 downloadsHighlight words/phrases in notes & PDFs, with learning tracker.
简体中文 | English
📦 Plugin ID:
simple-wordbook
💡 Inspired by: obsidian-language-learner and HiWords
Simple Wordbook is a word/phrase highlighting and learning management plugin for Obsidian.
It automatically highlights words from your custom wordbooks in your notes, and provides a complete learning toolkit including a sidebar, lookup panel, library management, study center, mastery tracking, AI-assisted lookup, TTS pronunciation, and import/export.
| Module | Capability |
|---|---|
| 📚 Wordbook File Management | Multiple .json wordbooks, enable/disable, read-only, drag-to-reorder, auto-follow on file move |
| 🎯 Auto Highlight | Highlights in Reading / Editing / PDF, with alias matching and path scope filtering |
| 📖 Word Sidebar | Scans the current document, shows word cards by "Learning / Mastered / Ignored" |
| 🔍 Lookup Panel | Local lookup + AI lookup, with history and prompt switching |
| 🗂️ Library View | Tabular browsing of all words, search, filter, sort, batch operations |
| 🧠 Study Center | Review, mastered, levels, stats, settings, built-in simplified SM-2 algorithm |
| 🔊 Pronunciation | Network TTS + System TTS, multi-language |
| 🤖 AI Configuration | Multiple providers, encrypted keys, built-in/custom system prompts |
| 📤 Import & Export | Import mastered/ignored from TXT; export Markdown, Anki TSV, single card |
| ⌨️ Commands & Hotkeys | Dynamically generated prompt commands, free hotkey binding |
Simple Wordbook.main.js, manifest.json, styles.css..obsidian/plugins/simple-wordbook/ in your vault.https://github.com/Bin-T/obsidian-simple-wordbook..json file in your vault, or import a .json wordbook in the following format (a JSON array where each word object requires a word field and optionally aliases, definition, phonetic, color, lang, etc.):[
{
"word": "abandon",
"aliases": ["abandoned", "abandoning"],
"phonetic": "UK /əˈbændən/ US /əˈbændən/",
"definition": "**Definition**\ngive up, forsake\n\n---\n\n**Example**\nHe abandoned his car in the snow.",
"color": "red",
"lang": "en"
}
]
You can also download ready-made wordbooks from the wordbook repository.
--- to separate multiple tabs. The tab name is taken from the **Title** at the start of each section.In Settings → General → Lookup Panel → Enter Mode, you can choose:
Tip: Press
Shift + Enterin the input box to always force AI lookup.
In Settings → General → Lookup Panel → Local Search Mode, you can choose:
In Settings → General → Lookup Panel → Max Results, set the maximum number of results returned by local lookup (1–100).
Today: X/Y.B: bookmark / unbookmark (requires "Bookmark for Review" enabled)Alt + P: pronounce the wordCtrl + ←/→: previous / nextR: review bookmarked words togetherA: one more roundQ: back to preparationWhen enabled, spell buttons appear on the card back:
Alt + A to toggle quickly.Alt + E to exit quickly.When adding/editing a word, click the quote icon in the top-right of the definition box to open the example extractor:
。!?.!? and extract the sentence where the cursor is..txt file., , ; ; Tab.In Settings → Files → Export Wordbook, open the export dialog:
.md **: good for reading/printing.<b> and <br>.In Settings → Files → Export Mastered / Export Ignored, export as .txt with one word per line.
Right-click a word card → Export as Markdown to export a single word card as a standalone .md file.
In Settings → General → Highlight & Preview, you can adjust:
.md extension.* to match all files in the vault root (excluding subfolders).{{word}}, {{type}}, {{accent}}, {{lang}}, {{rate}} placeholders.{{type}}).lang field; falls back to Network TTS if no match.| Item | Description |
|---|---|
| Wordbook Files | List of added wordbooks; enable/disable/delete/drag-to-reorder |
| Read-only Mode | When set, words in this wordbook cannot be edited or deleted |
| Mastery/Ignore Mode | Global or Per-source |
| Mastery/Ignore File Path | Custom storage path for mastery/ignore state files |
| Import | Import mastered or ignored lists from TXT |
| Export | Export wordbook (Markdown/Anki), export mastered/ignored lists |
| Item | Description |
|---|---|
| Plugin Language | Auto / English / Simplified Chinese |
| Highlight & Preview | Highlight color, style, hover preview, blur/fold definition, mastery button toggle |
| Highlight Styles | Underline style, bold, underline color |
| Highlight Scope | Include/exclude files by path |
| Lookup Panel | Enter mode, local search mode, max results |
| Item | Description |
|---|---|
| Default Pronunciation Language | Used when a word has no lang field |
| Language Management | Add/edit/delete languages and configure preset codes |
| Network TTS | Preset (Youdao/Baidu/Google/Custom), URL template, variant, speech rate |
| System TTS | Enable toggle, voice selection, speech rate, pitch |
| Pronunciation Test | Enter a word to test the current Network TTS configuration |
| Item | Description |
|---|---|
| Service Provider | OpenAI, DeepSeek, GLM (Zhipu), Tongyi Qianwen, Ollama, Custom |
| API URL/Key/Model | Auto-filled based on provider, manually editable |
| API Key Storage Mode | Official Keychain / Local Encrypted (Vault-derived key) |
| Temperature | 0–2, controls response randomness |
| Max Output Tokens | 100–4000 |
| Built-in System Prompts | Default, Cute & Soft, Trendy & Cool, Daily Colloquial, Business Formal, Academic Solemn, Literary Aesthetic |
| Custom System Prompts | Add multiple; can be associated with custom prompts |
| Default Prompt | Uses {word}, {context} placeholders |
| Custom Prompts | Add multiple prompts, switchable in the Lookup Panel |
| Context Extraction Mode | By empty line / line break / sentence / list item |
| PDF Context Length | 50–500 characters |
| Test Connection | Verify current configuration |
| Item | Description |
|---|---|
| Daily Goal | Number of words to review per day |
| Daily Review Limit | Maximum words per review session |
| Review Order | Due first / High level first / Low level first |
| New Word Order | Sequential / Random |
| Auto Flip | 0 (off) / 1 / 2 / 3 / 5 seconds |
| Show Phonetic | Whether to show phonetic on the card |
| Definition as Tabs | Show multi-section definitions as tabs, switch with 1–9 |
| Fine Feedback | Show 4 feedback buttons |
| Bookmark for Review | Show bookmark button; can review bookmarked words together at the end |
| Smart Spell Check | Show spell button and input; supports multiple mask modes |
| Review Intervals | Base interval days for levels 0–4 |
| Advanced Algorithm Parameters | Base/extra ease delta, reward threshold, ease range, suspend parameters, penalty threshold |
In Settings → Hotkeys, you can bind hotkeys for the following commands:
| Command | Description |
|---|---|
Open Word Sidebar |
Activate the sidebar view |
Open Lookup Panel |
Open the Lookup Panel and focus the input |
Add Word/Phrase |
Open the add word modal |
Refresh Wordbook |
Reload all wordbooks and refresh highlights |
Open Settings |
Jump to the plugin settings page |
Open Library |
Open the Library view |
Open Study Center |
Open the Study Center view |
Speak selected text |
Use TTS to read the selected text |
Stop Reading |
Stop the current pronunciation |
Dynamically generated commands:
In AI Configuration → Custom Prompts, each custom prompt automatically generates an independent command:
| Command Format | Description |
|---|---|
Lookup with prompt: {prompt name} |
With text selected, run this command to perform AI lookup using the corresponding custom prompt |
| File | Path | Description |
|---|---|---|
| Wordbook Files | User-defined | .json format, can be placed anywhere in the vault |
| Mastery File | .obsidian/plugins/simple-wordbook/_wordbook_mastery.json |
Stores mastered words; path customizable |
| Ignored File | .obsidian/plugins/simple-wordbook/_wordbook_ignored.json |
Stores ignored words; path customizable |
| Study Progress File | .obsidian/plugins/simple-wordbook/_wordbook_study.json |
Stores review records, daily stats, daily goal |
| Settings File | .obsidian/plugins/simple-wordbook/data.json |
Plugin configuration, fixed in the plugin folder |
Q: Highlighting doesn't work?
A: Check whether "Enable auto highlight" is on in Settings; check whether the wordbook is enabled; check whether the current file is within the "Highlight Scope".
Q: The sidebar shows nothing?
A: Make sure the current document contains words from your wordbooks and that these words are not marked as "Ignored". If "Sidebar Scope Filter" is enabled, confirm the current file is within scope.
Q: AI lookup fails?
A: Check the API URL, key, and model name, and network connectivity. You can use "Test Connection" in Settings to verify.
Q: How to highlight in PDF?
A: PDF highlighting is supported by default. Ensure auto highlight is enabled and wait for the PDF to finish rendering.
Q: Mastery state lost?
A: Check whether the "Mastery File" path is correct and writable. When switching mastery mode (Global/Per-source), the plugin migrates data automatically.
Q: System TTS has no sound?
A: Check whether the OS has the corresponding language voice pack installed. If no match, the plugin falls back to Network TTS automatically.
Q: How are the tabs in the hover preview / word card split?
A:
--- (three consecutive hyphens) as a separator to split the definition text into multiple sections, each of which becomes an independent tab.**bold text**) and extracts it as the tab name.Example: If you write the following in the definition box of the Edit Word/Phrase modal, it generates 3 tabs:
**Definition**
give up, forsake; abandon
---
**Common Examples**
He abandoned his car in the snow.
---
**Related Phrases**
abandon hope
**Title**, the plugin assigns default names:DefinitionContent 2, Content 3, ...Q: How to quickly bind hotkeys to custom prompts?
A: In AI Configuration → Custom Prompts, click the "Set Hotkeys" button to jump to the Obsidian Hotkeys settings page with this plugin's commands filtered automatically. You can bind an independent hotkey for each Lookup with prompt: xxx command for one-key lookup.
Q: How does the Study Center review algorithm work?
A: The plugin uses a simplified SM-2 algorithm:
Q: Can wordbook files be placed anywhere?
A: Yes. Wordbook files can be placed anywhere in the vault. If a file is renamed or moved, the plugin updates the path automatically.
You can override the plugin's default styles with a CSS snippet. The following example makes highlighted words inside sidebar cards follow the card color with 15% opacity (already built into the plugin, see styles.css):
.word-card .simple-wordbook-highlight,
.word-card-content .simple-wordbook-highlight,
.lookup-result .word-card .simple-wordbook-highlight {
background-color: color-mix(in srgb, var(--card-color) 15%, transparent);
text-decoration: none;
border-radius: 6px;
padding: 0 2px;
}
For more customization, refer to the namespaces in the plugin's styles.css.



This plugin is developed with AI assistance, and all core features have been carefully tested and verified by the developer to ensure code quality, security, and stability.
If you encounter any issues, feel free to submit an Issue on the GitHub repository.
Repository: https://github.com/Bin-T/obsidian-simple-wordbook
Wordbooks: https://github.com/Bin-T/obsidian-simple-wordbook/tree/main/wordbooks
This project is licensed under the MIT License. See the LICENSE file in the repository root.