# Learn a Language with Claude — Johnny Fekete

> The Notion setup prompt, the Claude project instructions, and the Scriptable iPhone widget from my video on replacing Duolingo. Free to copy, works for any language.

Canonical URL: <https://johnnyfekete.com/language>

1,200 days of Duolingo, and I still couldn't order a coffee in Catalan.

So I stopped, and spent half an hour building the replacement instead. No code. Claude does the teaching, and a Notion workspace is where it keeps what it knows about me: what I've learned, and what I keep getting wrong. It reads those pages before every lesson and writes back to them after. That connection is the whole trick.

Everything I used is below, free to copy. Swap the language and it works for whatever you're learning.

## Setup

Four steps, and the longest one is answering Claude's questions honestly.

1. Connect Notion in Claude's settings and approve the permissions.
2. Create a project, and paste the setup prompt into a chat inside it.
3. Paste the project instructions into the field of the same name.
4. Optional: run the widget script in [Scriptable](https://scriptable.app) if you want the streak on your home screen.

## The three files

- [Notion setup prompt](https://johnnyfekete.com/language/notion-setup-prompt.txt): The builder. Paste it into a chat inside your new project and it asks you five questions: which language, where you are today, why you're learning it, how many minutes a day you'll give it, and where in Notion to put everything. Then it writes the pages itself. You end up with a hub page and four pages under it: Curriculum & Progress (the path, and where you are on it), the Mistakes Log (every error with its correction, the page that makes tomorrow's lesson different from today's), Vocabulary (the words you've met and how well you know each), and the Lesson Log (one line per session, and the streak reads from there). Four pages instead of one big page, because Claude reads them separately. A lesson pulls your mistakes and the words that are due, not the whole history of your learning.
- [Project instructions](https://johnnyfekete.com/language/project-instructions.txt): Goes in the project's instructions field, so every new chat already knows how to teach you before you've typed anything. Swap out the parts in `[BRACKETS]`: the language, and the number of minutes you want a lesson to take.
- [Scriptable widget script](https://johnnyfekete.com/learn-with-ai/language-streak-script.txt): Reads your Lesson Log in Notion and puts the streak on your iPhone home screen.

That's the system. From then on you open a new chat in the project and ask for today's lesson. Claude reads your notes, walks you through it one step at a time, and writes the session back when you're done.

## Putting the streak on your home screen

This part is optional, and iPhone only. [Scriptable](https://scriptable.app) is a free app that runs small JavaScript files as home screen widgets. Paste the script into a new one and it reads your Lesson Log in Notion, so the streak sits next to your app icons. Which turns out to be the only part of Duolingo I actually missed. Fair warning: iOS decides when widgets refresh, somewhere between 15 minutes and an hour, so the number won't flip the second you finish a lesson.

Two values go at the top, and both come from Notion.

- **Integration token.** In Notion, open any page, hit the three dots, then Connections, then the developer portal. Create a connection, copy the token that starts with `ntn_`, and give it access to your hub page. The four pages under it inherit that access.
- **Page ID.** The last part of your Lesson Log's URL. That's the page with the streak on it, not the hub.

Press play. If it errors, the message names the field that didn't match, and you can paste that straight back to Claude. Then long-press your wallpaper and add a Scriptable widget.

The `CONFIG` names match what the setup prompt writes into Notion. Rename a field there and you have to rename it here too.

I wrote up the reasoning behind all of it on my newsletter: <https://highagencydev.com/p/i-ditched-duolingo-for-claude>

If you build a version for your own language, I want to see it: [Contact](https://johnnyfekete.com/contact). More videos and essays on [Creator](https://johnnyfekete.com/creator).
