An Obsidian plugin built on the Anki Danish frequency deck (DDO Danish Frequency Deck). The UI follows a "word of the day" card layout, with English and Chinese glosses, example sentences, and pronunciation audio.

Translations: all 4442 words include English and Chinese word glosses, and each word's example sentence comes with an English and a Chinese translation.
edge-ttsmain.js, manifest.json, and styles.css from the latest release into .obsidian/plugins/dagens-ord/To keep the release small, audio files are not bundled. They are hosted in the audio/ folder of this repository and downloaded on demand.
Verify that edge-tts is installed and works on your machine:
edge-tts --voice da-DK-ChristelNeural --text "Godmorgen, hvordan har du det?" --write-media "audio/test_da.mp3"
Then from the plugin directory:
python3 scripts/edge-tts-examples.py --jobs 4 --retries 3
By default the script reads the full data/deck.json and generates audio/generated/ex-<word-id>.mp3 for every entry with an example sentence. Existing files are skipped (resume-friendly); use --overwrite to regenerate. Default concurrency is --jobs 4; on a stable network you can raise it to --jobs 8 or higher. If you hit NoAudioReceived, lower --jobs or increase --retries.
Backfill word-level Chinese glosses from a Chinese Anki .apkg into data/deck.json:
npm run extract:zh
npm run build
The script writes translationZh and translationsZh. The plugin shows English and Chinese glosses under each word, and the example area shows the Danish sentence together with its English and Chinese translations.
npm install
npm run extract # Re-export deck from .apkg
npm run build # Build main.js (bundles data/deck.json)
Note:
data/deck.jsonis bundled intomain.jsat build time. After editing the deck, you must rebuild (or push a tag so CI rebuilds) for changes to take effect in the plugin.
DDO_Danish_Frequency_Deck_English.apkg — data/deck.json currently holds 4442 high-frequency Danish words, all with example sentences (13,097 unique Danish example sentences in total). The default daily pool uses all 4442 words; you can lower the count or filter by CEFR level in settings.
This plugin was inspired by ankidkdeck v2.0 (iskoldt-X/ankidkdeck).
Thanks to Yifan Huang for her help.