skill
wordsaver
Turn your TV screensaver into a daily vocabulary lesson: ten illustrated words a day, scheduled so you remember them.
Set up
Skills are installed by placing their folder where your agent loads skills.
The download comes from github.com/Dodai0419/wordsaver itself, not from our server, so what you get is exactly what its author published.
Install instructions come from the README
README
synced Oct 30, 2026wordsaver
Turn your TV screensaver into a daily vocabulary lesson: ten illustrated words a day, scheduled so you remember them.
Your TV already shows photos when it idles. wordsaver makes those photos Word Atlas cards: picture, IPA, meaning, an example, picked by the same FSRS scheduler Word Atlas uses. It was built for calm screens like Aerial.
Works with Claude Code and Codex.
A real slide from python wordsaver.py today --demo --gloss zh, scaled down from 1920x1080.
Quick start
git clone https://github.com/Dodai0419/wordsaver && cd wordsaver
python wordsaver.py today --demo -o today --video
10 words for today (0 to review, 10 new): harbour, lantern, commute, drought, festival, volcano, library, telescope, migrate, bakery
wrote 10 slides (1920x1080) and index.html to today
wrote today\wordsaver.mp4 (120s)
Copy today/ to the TV, or copy just the MP4 or the PNGs to a USB stick or a photo album the TV's screensaver plays. Python 3.8+ and Chrome or Edge make the PNGs. ffmpeg is only needed for --video. Nothing to pip install.
Gallery
All ten slides from one today --demo run:
The last one is not bundled. It came from the full deck: today --deck atlas --level B1 --topic travel --new 3 picked hut, hostel, port and downloaded their pictures.
How a day works
python wordsaver.py today --deck atlas --level B1,B2 --new 10 -o today --video # morning: build today's screensaver
python wordsaver.py review -o today # evening: type the words you saw
python wordsaver.py grade volcano easy # or grade one word by hand
todayputs the words that are due first (oldest due first), then up to--newnew ones. It writesslide-01.png... (1920x1080),index.html(a full-screen slideshow with a live clock for the TV browser),today.jsonand, with--video,wordsaver.mp4.reviewshows each meaning with the example sentence and the word blanked out. Type the word: right counts as good, wrong as again, and FSRS sets the next date. This is the same active recall Word Atlas uses for spelling.- Progress is one small JSON file (
~/.wordsaver.json, or--state). Nothing leaves your machine except the one-time download of the deck and the pictures you use.
The problem
- Vocabulary apps need you to open them. The TV in the living room is on for hours and shows stock landscapes.
- TV screensavers (Aerial, Google TV ambient mode, any USB photo slideshow) can play your photos and videos, but nothing turns study material into screens that look good at 3 meters.
- Showing random words is easy to forget. Spaced repetition needs a schedule, and that schedule lives inside the learning app.
The solution
| Idea | Fixes |
|---|---|
| Word Atlas cards as 1920x1080 slides | Each word is a full-screen picture with the word big enough to read from the sofa, its IPA (UK and US), meaning and an example with the word underlined. |
| The scheduler Word Atlas uses, ported | FSRS-6 with Word Atlas's settings (90% retention, 1m/10m learning steps, 10m relearning). It gives the same dates as ts-fsrs 5.4.2, checked in the tests. |
| Output any screen can play | PNGs for photo screensavers, an MP4 for players that take local video (Aerial's screensaver does), and an HTML slideshow for a TV browser. |
| Recall in the evening, not on the TV | The TV only shows. review asks you to type each word, so the grades FSRS gets are real. |
Use with Claude Code
/plugin marketplace add Dodai0419/wordsaver
/plugin install wordsaver@wordsaver
Then ask: "make today's vocabulary screensaver, B2 words about the environment, as a video".
Use with Codex (ChatGPT)
git clone https://github.com/Dodai0419/wordsaver && cp -r wordsaver/skills/* ~/.codex/skills/
Or copy AGENTS.md into your project root.
Benchmarks
Windows 11, Python 3.11.1, Node 24.20.0, a busy machine. Commands: python bench/bench.py and node bench/ts_fsrs_bench.mjs (after npm i ts-fsrs@5.4.2).
| Word Atlas (ts-fsrs 5.4.2) | wordsaver | |
|---|---|---|
| Same schedule? | reference | yes: 8 grade sequences, 52 reviews, same due time to the millisecond, stability and difficulty to 7 decimals, same state, step and lapses (tests/test_wordsaver.py) |
| FSRS code | 1,119 non-blank lines in the 6 ts-fsrs source files the port replaces (with comments) | 71 non-blank lines |
| Speed per review | 9.2-10.2 us (V8) | 54.7 us (CPython). Slower, but a day of 10-50 reviews takes under 3 ms |
| Runtime to show words | Node 20+, npm ci, a Vite dev server, a browser tab | Python standard library; Chrome or Edge for PNGs; ffmpeg for MP4 |
| Output for a TV | none (web and iOS app) | 1920x1080 PNG slides, MP4, HTML slideshow |
| Render 10 slides | n/a | 29.3 s, mostly Chrome start-up and 10 full-HD screenshots on a busy machine |
Not ported: FSRS fuzz (Word Atlas turns it on, which moves intervals of 3+ days by a small random amount), retention other than 0.9, and Word Atlas's audio, word galaxy and quiz types.
Inspired by
- designfuchen/word-atlas: the word data, illustrations and FSRS settings. Code is MIT. The 12 bundled words in
deck/and the pictures are CC BY 4.0, "Word Atlas contributors", unmodified. - pengchujin/aerial-tv (MIT): the idea of a calm tvOS-style idle screen that plays photos and local video. No code copied.
- open-spaced-repetition/ts-fsrs (MIT): the FSRS-6 scheduler, ported to Python.
Roadmap
- Port FSRS fuzz (alea seed) so long intervals spread like Word Atlas
- Word Atlas's UK/US audio as the MP4 soundtrack
- Grade from your phone by scanning a QR code on the last slide
License
MIT for the code. Word data and illustrations in deck/ and docs/ are CC BY 4.0, Word Atlas contributors. See NOTICE.