Andrey Dobrikov2 downloadsTrain vocabulary with flashcards and mastery tracking, using markdown notes in a configurable folder
Flashcard-style vocabulary trainer for Obsidian, for any language. It turns your own markdown notes — one note per word — into a study deck with mastery tracking, and works in both directions: forward (word → translation) and reverse (translation → word), with independent progress for each.
| Card front | Card flipped (answer + example) |
|---|---|
![]() |
![]() |
| Vocabulary folder in the vault | A word note |
|---|---|
![]() |
![]() |
main.js, manifest.json, and styles.css to your vault's
.obsidian/plugins/language-trainer-cards/ directoryItalian)The plugin reads every markdown file in the configured folder as one word.
Files and folders whose names start with _ are ignored, so you can keep
indexes and reference notes next to the words (e.g. Italian/_meta/Index.md).
_meta folderA useful convention is a _meta folder inside the vocabulary folder:
Inbox.md — a running dump of new words and phrases you encounter.Index.md — a generated list of all words for browsing and review. It
lives under _meta, so it never becomes a flashcard.Pronunciation.md — your language's pronunciation rules (IPA and
respelling conventions). Word pages can link to its sections, so each rule is
explained once, in one place.While reading or listening, dump everything new into Inbox.md as quick
bullets — words, phrases, even grammar questions. Later, ask your AI agent to
"process the inbox": with the add-word skill
installed, the agent turns each item into a properly formatted word page (new
words get pages, phrases with their own meaning get phrase pages, questions get
answered on the relevant page), keeps synonym/phrase links two-way, and clears
the processed items from the inbox. No agent? The Add vocabulary word
command and the template cover the same ground by hand.
Each word is a markdown note. Use the Add vocabulary word command to fill a
form and create the note, or write the file by hand (see
templates/word-template.md).
If you use an AI agent to manage your notes, the repo also ships an add-word skill that teaches the agent the page layout and linking conventions.
The plugin reads these blocks from a note:
The full template (templates/word-template.md):
### <translation in your language>
#<part of speech: verb, noun, adjective, adverb, pronoun, …>
> [!info] Pronunciation
> /<IPA>/ · <RE-spel-ling>
> [!example] Example
> **<Sentence in the studied language.>**
> *<Sentence in your language.>*
> [!abstract]- Forms
> | | <form 1> | <form 2> | <form 3> |
> | --- | --- | --- | --- |
> | <person/number/gender> | | | |
> [!quote] Phrases
> [[<phrase containing this word>]]
> [!tip] Synonyms
> [[<word>]] · [[<word>]]
> [!note] Notes
> - <grammar, irregularities, usage notes>
What the card reads from it:
.md) → the word on the card.### line → the translation shown on the back. Required for reverse mode./IPA/ · Respelling on one line (optional).[!example]- are fine).[[wiki links]] joined with · (optional; shown in
reverse mode, where they act as alternative answers).#tag line → part of speech hint (replace the #<part of speech…>
placeholder with a real tag like #verb or #noun).Everything else — Forms tables, Phrases links, Notes, any free text — is for you; the card ignores it, so keep whatever you like in your word files.
Mastery data is stored in language-trainer-progress.json in your vault root,
so it syncs across devices via Obsidian Sync or other sync methods.
MIT