A personal phrase-bank tool for spoken French. Ingests content (subtitles, YouTube videos, pasted text/news), tracks new vocabulary in a personal dictionary, and generates ready-to-use French phrases (conversation starters, reactions to news, opinions, descriptions of what you're consuming) with TTS audio, pushed live into Anki.
See /home/joe/.claude/plans/tranquil-juggling-canyon.md for the full design plan.
- Install AnkiConnect in Anki (Tools → Add-ons →
Get Add-ons… → code
2055492159→ restart Anki). Verify:curl -s http://localhost:8765 -X POST -d '{"action": "version", "version": 6}' - Create the virtualenv and install dependencies:
python3 -m venv .venv .venv/bin/pip install -r requirements.txt .venv/bin/python -m spacy download fr_core_news_sm - Copy
.env.exampleto.envand fill in your ElevenLabs API key and chosen voice ID. Never commit.env. - Initialize the database:
sqlite3 data/french.db < french_learning/dictionary/schema.sql - Create the Anki deck + note type:
.venv/bin/python scripts/setup_anki.py
- Drop a subtitle file, YouTube URL, or pasted text and run
/process-content <source>in Claude Code to extract vocab and draft phrases. - Or just ask in conversation ("how do I say...") and Claude will draft a phrase directly.
scripts/generate_audio.py— generate TTS for approved phrases.scripts/push_to_anki.py— push phrases with generated audio into Anki.french_learning/tui— browse/curate the phrase bank and dictionary.