the lazy nerd's guide to superhuman learning
a walkthrough of my automated anki review system with mcp and claude
I first started automating the creation of Anki spaced repetition flashcards when GPT-4 was released, in spring of 2023. Sort of like AI researchers’ “private evals,” this has been my recurring task that let me see how LLMs morphed as they got more powerful.
I began with chains of prompts (and occasionally fancier RAG things) inside of Colab notebooks with the GPT-4 API. It was very expensive!
Nowadays I use Claude Projects with an Anki MCP integration. Until recently I used a totally off-the-shelf integration—no code at all, save installing the server on my Claude Desktop app. Reviewing my cards is a source of joy for me every morning. In this post I will walk you through my set up and how you might replicate it.
But first: why?
You know the scene in The Matrix where they download kung fu into Neo’s brain? AI-automated Anki creation is the closest I’ve come to feeling that way.
Listen to a lecture at 75% attention, do some chores, then drop a quick msg to your chatbot. Something confusing? The lecture transcript + the LLM’s innate wisdom can clear it up. Then, voila. A dozen beautifully formatted flashcards into your Anki deck. Spend 5 minutes every morning and they’ll gradually drip into long-term storage. Over the past couple years I’ve probably put most of an undergrad history minor into my brain in this really passive, low effort way.
I genuinely love learning stuff so this is kind of an end in itself for me. But I don’t think I’m unique in this respect, I just think not that many people have been exposed to ‘learning’ as a kind of self-care practice. In this way, where you’re lackadaisically following curiosities, expending a little effort to retain the content but otherwise just chilling—it’s like having a reasonable, moderate workout habit. It’ll make you happier, sharper, and healthier.
1 - Obtain transcripts
I purchase my courses from the Great Courses website, then run them through Whisper once I get the mp3s. (At the bottom of this post I’ll share some of the courses I’ve studied with these tools.)
My Whisper script creates a folder with markdown text files.
They’re pretty lossy but Claude almost always figures it out.
Here’s my trusty Jupyter notebook. Just put it next to a folder of audio files. If you have a newer computer (M-series Mac for ex) it runs great locally. If not, upload it to Colab.
https://github.com/bathrobe/whisperize_audio/tree/main
2 - Install Anki MCP Server
This one is my favorite: https://github.com/nailuoGG/anki-mcp-server.
MCP Servers, if you don’t have much experience with them, can be pretty buggy and weird. They’re essentially standardized collections of functions that the LLM can call—if the functions are not described well, or if there aren’t enough of them, you can make a huge mess with them.
The server above has more tools than it needs—especially ones related to listing the decks and note types available to it, so it makes the right cards in the right places. It also has a batch create notes call that gets the cards done faster and with less tokens.
You only need to put the following in your Claude config file to run it:
// claude_desktop_config.json
{
"mcpServers": {
"anki": {
"command": "npx",
"args": ["--yes","anki-mcp-server"]
}
}
}
Also make sure AnkiConnect is installed in Anki.
3 - Make a bad ass note type in Anki and style it with AI-generated CSS
What’s the point of intelligence too cheap to meter if you don’t pamper yourself a little? Front/back is the default format of Anki cards, but you can easily add a few extra fields and give the experience a big upgrade.
Tools > Note Types
Add a new note type and use the LLM to cite your source document, and also provide some clarifying source info, or whatever else you’d like.
Then, the real treat, visit Cards and get some good CSS styles to make the cards and their new fields look beautiful. I’ll share my CSS at the bottom of this post.
I have a second bespoke note type specifically for good quotes I want to be reminded of, too.
4 - Prompt engineer a nice Claude Projects with a step-by-step workflow
It’s a three step process. I paste the lecture transcript into the dedicated Claude Project and it first spits out a markdown artifact with a summary. This helps jog my memory and recall if I want to emphasize anything or need anything clarified.
Once I tell it to proceed, it drafts a set of Anki cards inline, each obeying the multi-field format of my Basic with Explanation note type above. It explains its answers and cites itself with quotes from the transcript. I can offer it feedback and make it rewrite, or proceed.
When it’s ready, it calls the MCP server and creates the new cards in a batch in the specified deck. And just like that, it’s done. I’ll paste the Claude Project system prompt below.
Note, crucially, that I tell it to obey the Principle of Minimum Information as outlined in the SuperMemo wiki. Questions should ask for the smallest unit of information possible. Answers should supply only the answer to the minimal question. For added context, the supporting field can fill in gaps.
In previous editions I’d paste this whole wiki page in the project knowledge to be extra sure it was always obeyed: https://supermemo.guru/wiki/Minimum_information_principle
Cool courses I uplinked into my brain this way
All from The Teaching Company unless otherwise noted
The Fall and Rise of China
The Making of Modern Ukraine (Yale)
The US Civil War
The Rise and Fall of the Soviet Union
The Middle East in the 20th Century
Masters of War (military strategy)
America After the Cold War
A History of Eastern Europe
The Italian Renaissance
A History of Hitler’s Empire
Power and Politics in Today’s World (Yale)
Propaganda and Persuasion
History of United States
Western Civ parts 1 and 2
I also started dropping pods and articles from my read-it-later app into Anki this way, though that can risk blowing your deck up so be careful.
CSS for my cards
/* Base styling with border-box sizing */
* {
box-sizing: border-box;
}
.card {
display: flex;
flex-direction: column;
align-items: center;
font-family: "Liberation Sans", sans-serif;
line-height: 1.6;
color: #e0e0e0;
background-color: #121212;
padding: 15px;
width: 100%;
}
.card-content {
width: 100%;
max-width: 65ch;
background-color: #1e1e1e;
padding: 20px;
border-radius: 8px;
box-shadow: 0 4px 6px rgba(0, 0, 0, 0.3);
}
/* Question and Answer */
.question, .answer {
font-size: 1.5rem;
font-weight: bold;
margin-bottom: 15px;
}
/* Divider */
hr {
border: none;
border-top: 2px solid #333;
margin: 15px 0;
}
/* Explanation */
.explanation {
font-size: 1.1rem;
margin-bottom: 15px;
}
/* Quote */
blockquote {
font-style: italic;
padding: 12px 15px;
background-color: #2d2d2d;
border-left: 5px solid #bb86fc;
color: #e0e0e0;
margin: 15px 0;
}
/* Source */
.source {
font-style: italic;
color: #b0bec5;
text-align: right;
font-size: 0.9rem;
margin-top: 10px;
}
.source::before {
content: "— ";
}
/* Media queries for different screen sizes */
@media screen and (min-width: 768px) {
/* Larger screens */
.card-content {
padding: 30px;
}
.question, .answer {
font-size: 1.75rem;
margin-bottom: 20px;
}
.explanation {
font-size: 1.25rem;
margin-bottom: 20px;
}
blockquote {
padding: 15px 20px;
margin: 20px 0;
}
hr {
margin: 20px 0;
}
}
@media screen and (max-width: 320px) {
/* Very small screens */
.card-content {
padding: 15px;
}
.question, .answer {
font-size: 1.3rem;
}
.explanation {
font-size: 1rem;
}
blockquote {
padding: 10px;
}
}
FRONT TEMPLATE
<div class="card">
<div class="card-content">
<div class="question">{{Front}}</div>
</div>
</div>
BACK TEMPLATE
<div class="card">
<div class="card-content">
<div class="question">{{Front}}</div>
<hr>
<div class="answer">{{Back}}</div>
<div class="explanation">{{Explanation}}</div>
<blockquote>{{Quote}}</blockquote>
<div class="source">{{Source}}</div>
</div>
</div>System prompt for the Ankifying Claude Project
You create Anki cards using your anki-mcp server.
When I paste a lecture transcript plus a small header, execute the steps below.
Output NOTHING except the artifacts or yes/no prompts specified.
────────────────────────────────────────────────
HEADER: i will give you this, or you make it. ask me if you don't know. Look in 'Course Info'.
course: <short code, e.g. IR>
lecture_number: <integer, e.g. 3>
title: <full lecture title>
────────────────────────────────────────────────
☆☆ STEP 1 — Markdown Notes ☆☆
Make this an Artifact in markdown.
One sentence summary.
Take-away bullets (3-5 main points).
Ask 'Proceed? (Y/N)'
────────────────────────────────────────────────
☆☆ STEP 2 — Final Flashcard Blocks ☆☆
When I answer “Y”, draft 5-6 flashcards on the lecture in the following format:
***
Question
Answer
Supporting information (2-3 sentences)
Supporting quote
Quote attribution
- <Course title> · Lecture <lecture_number>
***
Rules
• One fact per card; shortest answer that unambiguously recalls the fact.
• Include years/dates when helpful.
• Replace any internal tabs/newlines with ⟦⟧ so JSON/TSV stay clean.
• No extra commentary outside the fences.
• Card content should be about what's most vital and useful to remember; not trivia.
- Use SuperMemo's philosophy and the latest in learning science to guide the way you write all these fields
In addition:
IF there are especially memorable quotes, from figures in the lecture or the lecturer himself, show them with attribution underneath the Q&A cards. 1 quote maximum.
Ask: “Ready to create these notes in Anki? (y/n)”
────────────────────────────────────────────────
☆☆ STEP 3 — MCP Anki Note Creation ☆☆
If I answer “y”, it's time to upload the notes using Model Context Protocol (MCP).
You are connected to the anki-mcp tool, and that should be the only thing you use. Use the Info in your knowledge to know what tool to use. First use the tool listDecks. Confirm Shunryu is there, and use it. batch_create_notes is the command to create many notes at once, so use that.
Use the Basic with Explanation card type. IF there are any memorable quotes worth adding, add them as the Reflection Quote type. Important: make sure the created cards are tagged with the same acronym and naming convention as what should be in the other lectures in the series: #whole_course_acronym #whole_course_acronym[number_of_lecture]. i.e., for "Democracy in America"'s 5th lecture, #DIA #DIA5. look at other cards for guidance (though if none are present, select the simplest, shortest acronym).





