LexiNote

approved

by alucpro

This plugin has not been manually reviewed by Obsidian staff. Highlight difficult English words and learn vocabulary while writing.

2 stars47 downloadsUpdated 29d agoMIT

LexiNote

中文 README | 用户使用手册 | User Guide

Learn English vocabulary in the notes you already write.

LexiNote is an Obsidian plugin that highlights difficult English words while you read or write, shows quick meanings on hover, and lets you save useful words into a lightweight vocabulary library. It is designed to stay close to your writing flow: no separate study app, no context switch, just small vocabulary moments inside your vault.

LexiNote Demo

Why LexiNote

If you write journals, reading notes, essays, or blog drafts in English, unfamiliar words often appear right where your ideas are forming. LexiNote helps you notice those words, understand them quickly, and keep the useful ones for later review.

It works especially well for:

  • English learners who use Obsidian as a reading or writing workspace.
  • Writers who want vocabulary help without leaving the current note.
  • Learners who want CET4 / CET6 style difficulty hints and custom dictionaries.
  • Multilingual review workflows, such as English -> Chinese or English -> Japanese.

Features

  • Real-time highlighting for difficult English words in Markdown notes.
  • Background or underline highlighting, including straight and wavy underline styles.
  • Hover cards with local meanings and dictionary metadata.
  • A current-document word list that summarizes the difficult words in the active note.
  • One-click saving to a personal Vocabulary Library.
  • Vocabulary Library search, sorting, known-word markers, deletion, and export.
  • Built-in CET4 / CET6 dictionaries derived from ECDICT.
  • Multiple custom dictionary imports from JSON, CSV, and TXT files.
  • A dictionary table for enabling, disabling, reordering, editing, and deleting imported dictionaries.
  • Configurable user difficulty from 1 to 30, highlight color, and known-word hiding.
  • Vocabulary export as LexiNote JSON or Anki-compatible TSV.
  • English and Chinese UI text that follows the Obsidian app language.
  • Markdown-aware analysis that skips inline code, fenced code blocks, URLs, and wikilinks.

Requirements

  • Obsidian 1.8.7 or newer.

Install From Obsidian Community Plugins

  1. Open Obsidian.
  2. Go to Settings -> Community plugins.
  3. Turn off Restricted mode if Obsidian asks you to do so.
  4. Click Browse to open the Community plugins marketplace.
  5. Search for LexiNote.
  6. Click Install.
  7. After installation, click Enable.

After enabling LexiNote, a book icon appears in the left ribbon. Click it to open the current document word list. You can also run these commands from the command palette:

  • LexiNote: Reanalyze active document
  • LexiNote: Open current document word list
  • LexiNote: Open vocabulary library

Quick Start

  1. Open an English note in Obsidian.
  2. Write or paste a few English paragraphs.
  3. LexiNote highlights words that are above your configured difficulty.
  4. Hover a highlighted word to see its meaning.
  5. Click the LexiNote ribbon icon to review all difficult words found in the current note.
  6. Save useful words to My vocabulary, then mark familiar words as known when you no longer need them highlighted.

You can adjust LexiNote in Settings -> Community plugins -> LexiNote.

Custom Dictionary Import

LexiNote can import multiple custom dictionaries from JSON, CSV, and TXT files. Imported entries are stored locally in your Obsidian plugin data. The import UI asks for a dictionary name and difficulty, and every imported word inherits those values.

Custom dictionaries are language-flexible. LexiNote only needs the source word to be English, while meaning can be Chinese, Japanese, Korean, French, or any other target language you want to review. For example, the same English word can be imported as English -> Chinese or English -> Japanese by changing only the meaning text.

Imported dictionaries appear in the dictionary table together with the built-in CET4 / CET6 dictionaries. Built-in dictionaries are read-only. Imported dictionaries can be enabled or disabled, reordered, renamed, assigned a new difficulty, or deleted.

Dictionary names must be unique. If the same word appears in multiple enabled dictionaries, LexiNote keeps all matching entries and shows them in dictionary order. A word is highlighted when any matching entry has a difficulty higher than your user difficulty.

JSON

Use an array of objects with word and optional meaning fields:

[
  {
    "word": "meticulous",
    "meaning": "非常细致的;一丝不苟的"
  },
  {
    "word": "resilient",
    "meaning": "回復力のある;しなやかな"
  }
]

CSV

Use a header row with word,meaning:

word,meaning
nuance,细微差别
cohesive,まとまりのある;結束した
elaborate,详细说明;精心制作的

TXT

Use one English word per line:

meticulous
resilient
scrutiny

TXT imports do not include local meanings, so hover cards and lists show No local meaning. in English UI or 暂无本地释义 in Chinese UI.

Vocabulary Export

Open My vocabulary and use:

  • Export JSON to export a LexiNote JSON dictionary. This file can be imported again through the custom dictionary importer.
  • Export Anki TSV to export a simple UTF-8 tab-separated file with two columns: word and meaning.

The Anki TSV export is intentionally minimal. It does not generate .apkg files, card templates, pronunciation, tags, or AnkiConnect sync.

Development

Requirements

  • Node.js 18 or newer
  • npm
  • Obsidian Desktop 1.8.7 or newer
  • A local Obsidian vault for testing

Commands

Install dependencies:

npm install

Run unit tests:

npm test

Run type checking:

npm run typecheck

Build the plugin:

npm run build

Development build:

npm run dev

Install Into A Local Vault

Replace /path/to/TestVault with your local Obsidian vault path:

mkdir -p "/path/to/TestVault/.obsidian/plugins/lexinote"
cp manifest.json main.js styles.css "/path/to/TestVault/.obsidian/plugins/lexinote/"

The plugin directory should contain:

/path/to/TestVault/.obsidian/plugins/lexinote/
  manifest.json
  main.js
  styles.css

Enable In Obsidian

  1. Open the test vault in Obsidian.
  2. Go to Settings -> Community plugins.
  3. Turn off Restricted mode if needed.
  4. Refresh the installed plugins list.
  5. Enable LexiNote.

After enabling, the left ribbon should show the LexiNote book icon.

Local Acceptance Path

Use this quick note to verify the happy route:

Today I encountered a peculiar problem.

This robust tool provides a comprehensive workflow.

`peculiar should not be highlighted inside inline code`

```text
robust should not be highlighted inside fenced code
```

Visit https://example.com/peculiar and check [[robust link target]].

Expected behavior:

  • peculiar, robust, and comprehensive are highlighted in normal prose.
  • Inline code, fenced code, URLs, and wikilinks are excluded.
  • Hovering a highlighted word shows its meaning.
  • The LexiNote ribbon icon opens the current document word list.
  • The current document word list has a My vocabulary button for opening Vocabulary Library.

Test Fixtures

Sample files for local custom dictionary import testing are available in:

tests/fixtures/imports/custom-academic.json
tests/fixtures/imports/custom-writing.csv
tests/fixtures/imports/custom-txt-words.txt
tests/test-dictionary/v2-test-novel.md
tests/test-dictionary/v2-academic.json
tests/test-dictionary/v2-sensory.csv
tests/test-dictionary/v2-plain.txt

You can also view and use the test dictionary files directly on GitHub:

AlucPro/obsidian-lexinote

TXT imports do not include local meanings, so they are useful for validating the no-local-meaning display.

Release

Example: release version 0.1.5 to GitHub.

gh release create 0.1.5 main.js manifest.json styles.css -t "0.1.5"

License

MIT

For plugin developers

Search results and similarity scores are powered by semantic analysis of your plugin's README. If your plugin isn't appearing for searches you'd expect, try updating your README to clearly describe your plugin's purpose, features, and use cases.