Anki - intelligente Karteikarten, die wirklich hängen bleiben 🧠
Anki ist ein freies und Open-Source-Programm zum Lernen mit digitalen Karteikarten. Sein großer Vorteil: Anki nutzt bewährte Methoden aus der Kognitionswissenschaft – vor allem Active Recall (aktives Abrufen) und Spaced Repetition (verteiltes Wiederholen). Dadurch lernst du nicht nur „mehr“, sondern vor allem dauerhafter. ✨
Der Name „Anki“ stammt aus dem Japanischen „暗記“ und bedeutet wörtlich „Auswendiglernen“ bzw. „Memorisation“.
SchrittWarum 1:Anki Kompositionso vorbereitengut funktioniert
1. Active Recall: Wissen aktiv herausholen
WirStatt wollen,Inhalte dassnur zu lesen oder zu markieren, zwingt dich eine Domain eingerichtet wird,Karteikarte, die mit https://... aufgerufen werden kann, weshalb ich mich für Caddy entschieden habe.
Erstelle einen Ordner hier: /opt/bookstack Und darin zwei Dateien: Caddyfile und docker-compose.ymlFüge dort den folgenden Inhalt einAntwort undselbst passezu ihnproduzieren. an:Dieses aktive Abrufen ist deutlich effektiver als passives Wiedererkennen.
BookStack-YML2. (docker-compose.yml)Spaced Repetition: Wiederholen im richtigen Moment
services:Anki mariadb:zeigt image:dir lscr.io/linuxserver/mariadb:latestKarten container_name:nicht bookstack-mariadb
environment:
- PUID=1000
- PGID=1000
- TZ=Europe/Berlin
- MYSQL_ROOT_PASSWORD=PW_OF_MYSQL_ROOT
- MYSQL_DATABASE=bookstack
- MYSQL_USER=bookstack
- MYSQL_PASSWORD=PW_OF_MYSQL_DB
volumes:
- ./mariadb:/config
restart: unless-stopped
bookstack:
image: lscr.io/linuxserver/bookstack:latest
container_name: bookstack
depends_on:
- mariadb
environment:
- PUID=1000
- PGID=1000
- TZ=Europe/Berlin
- APP_URL=https://wiki.fabula.vision
# Wo wird BookStack aufrufbar sein? (Deine URL)
- APP_KEY=base64:...
# Zum Generieren das ausführen: docker run -it --rm --entrypoint /bin/bash lscr.io/linuxserver/bookstack:latest appkey
- APP_THEME=custom
#'custom' ermöglich es Hacks zu nutzen; mehr dazu hier: https://www.bookstackapp.com/hacks/applying/
- DB_HOST=mariadb
- DB_PORT=3306
- DB_DATABASE=bookstack
- DB_USERNAME=bookstack
- DB_PASSWORD=PW_OF_MYSQL_DB
# (Wie oben!)
- APP_DEFAULT_DARK_MODE=true
# (Geschmackssache)
volumes:
- ./bookstack:/config
restart: unless-stopped
caddy:
image: caddy:latest
container_name: caddy
depends_on:
- bookstack
ports:
- "80:80"
- "443:443"
volumes:
- ./Caddyfile:/etc/caddy/Caddyfile:ro
- ./caddy/data:/data
- ./caddy/config:/config
restart: unless-stopped
Caddyfile
wiki.fabula.vision {
# Deine URL natürlich...
encode zstd gzip
# Reverse Proxy zu BookStack (Container heißt "bookstack"zufällig, internersondern Port 80)
reverse_proxy bookstack:80
# sinnvolle Header (optional)
header {
# HSTS (nur setzen,dann, wenn du sichersie bist,vermutlich gerade zu vergessen drohst. So investierst du Zeit dort, wo sie den größten Effekt hat:
Der „Motor“ dahinter: Algorithmen (SM‑2 & FSRS) ⚙️
Historisch basiert Anki auf dem SM‑2-Ansatz (bekannt aus SuperMemo), wurde aber über die Jahre stark angepasst und deutlich konfigurierbarer gemacht.
Seit Anki 23.10 gibt es zusätzlich FSRS (Free Spaced Repetition Scheduler) als optionalen, modernen Scheduler. FSRS versucht, Wiederholungen noch genauer zu timen, indem es Gedächtniszustände modelliert (u. a. Schwierigkeit, Stabilität und Abrufbarkeit). In der Praxis berichten viele, dass HTTPSdamit dauerhaftbei aktivgleicher seinZiel-Behaltensquote soll)weniger Strict-Transport-SecurityReviews "max-age=31536000;nötig includeSubDomains;sind preload"– X-Content-Type-Optionsgerade "nosniff"bei X-Frame-Optionsgroßen "SAMEORIGIN"Lernprojekten.
SchrittWie Anki aufgebaut ist: Notes vs. Cards 📌
Ein Schlüsselkonzept, das Anki von vielen simplen Karteikarten-Apps unterscheidet:
Das ist praktisch, weil du aus einer Notiz mehrere Blickwinkel erzeugen kannst – und Korrekturen an einem Feld automatisch alle Karten aktualisieren.
Beispiel (Sprachenlernen)
Eine Notiz könnte so aussehen:
Daraus lassen sich mehrere Karten bauen, z. B.:
InsFranzösischVerzeichnis→wechseln:Deutsch/Englischcd /opt/bookstack/UnserAudioZeugs→installieren:dockerWortcompose up -dAktualisierengeht dann so:docker compose pull;erkennendocker compose up -dFertig,Deutsch/Englischaber→nunFranzösischschnell die URL aufrufen und die Standard-Zugangsdaten ändern!Standard-Login (User + Passwort):admin@admin.com+produzierenpassword
Beschränkungen
Cloze Deletion: Lücken lernen wie in echten Texten ✍️
Anki hat einen eingebauten Cloze-Notiztyp: Du markierst Teile eines Satzes als Lücke, z. B.:
Jede Cloze-Markierung erzeugt automatisch eine eigene Karte. Das ist besonders beliebt für:
Inhalte: von Text bis LaTeX und Audio 🎧📷
Anki ist inhaltlich agnostisch: Karten können u. a. enthalten:
Die lokalen Daten werden typischerweise in einem SQLite-Format gespeichert – gut für Stabilität und Portabilität.
Sync & Plattformen: Desktop als Zentrale, Mobile als Begleiter 📱💻
Typisch ist dieser Workflow:
Dazu gibt es mehrere „Bausteine“:
Außerdem existieren Möglichkeiten zum Self-Hosting (z. B. Sync-Server), was für fortgeschrittene Nutzer interessant ist, die Unabhängigkeit oder interne Infrastruktur möchten.
Add-ons & Community: Anki ist ein Baukasten 🧩
Ein großer Pluspunkt ist das Ökosystem aus Add-ons (Erweiterungen). Damit kannst du Anki z. B. aufrüsten um:
Shared Decks: schnell starten – aber mit Bedacht 📚
Es gibt dreieine Einschränkungen,große Sammlung an geteilten Decks, etwa für:
Trotzdem gilt oft die ichFaustregel:
bisherEigene festgestelltKarten habe:sind meist wertvoller als fremde, weil du beim Erstellen schon lernst und die Inhalte besser zu deinem Kontext passen.
Wofür Anki besonders stark ist (und wofür weniger)
✅ Ideal für …
⚠️ Weniger ideal für …
(Anki kann unterstützen – ersetzt aber nicht Übung und Anwendung.)
Mini-Leitfaden: So nutzt du Anki „smart“ 😌
- Karten
E-Mail-Versandklein halten („atomic“)(z.B.„Passwort - Lieber
vergessen“)einefunktioniertklarenicht,Fragebzw.promeineKarteExperimentealshabeneinnochganzeskeineKapitel.
Allerdings funktioniert das nicht mit der Export-Funktion, d.h. wenn ein Besucher Buch X als PDF beispielsweise exportiert, dann sieht er statt Formeln und Diagrammen nur Code-Blöcke.
Und das mit dem Exportieren funktioniert eh leider nicht bei mir, habe keine Ahnung warum und deshalb die Funktion einfach deaktiviert.
Ok, aber wie installiert man nun die Hacks? – Also den ersten Schritt haben wir getan, indem wir oben (in der YML-Datei) APP_THEME=custom definiert haben, was dafür sorgt, dass fortan Module geladen werden können, die sich hier befinden /opt/bookstack/bookstack/www/themes/custom/modules
Nun muss man per SSH das eingeben:
docker exec -it bookstack /bin/bashcd /app/www/Hier (https://example.com/settings/customization) bei „Custom HTML Head Content“ diesen Code eintragen:
<script>
window.addEventListener('editor-markdown::setup', event => {
event.detail.markdownIt.set({breaks: true});
});
</script>
Konsequent functions.phpbelohnt /opt/bookstack/bookstack/www/themes/<?phpMinuten useals BookStack\Theming\ThemeEvents;seltene useMarathon-Sessions.
Fazit:
WeitereAnki QoL-Fixesist (einzustellenkein hier:„Trick“, https://example.com/settings/customization)
sondern ein System ✅
EinfachAnki unter „Custom HTML Head Content“ eintragen:
Blockquotes haben keinen dicken Rand unten (liegt am CSS, weil u.a. alle <p>-Elemente margin-bottom haben):
<style>
/* 1) Letztes & erstes direktes Kindelementist im Blockquote:Kern Marginein */
.content-wrap blockquote > :last-child {
margin-bottom: .3em;
}
.content-wrap blockquote > :first-child {
margin-top: .3em;
}
/* 2) Blockquote: keine Scrollbalken */
.content-wrap blockquote {
overflow: visible; /* Standard „ohne Scrollen“ */
overflow-x: visible;
overflow-y: visible;
}
</style>
Codeblöcke haben Soft-Wraps (also man muss nicht horizontal scrollen, um die ganze Zeile zu sehen):
<script>
window.addEventListener('library-cm6::pre-init'Werkzeug, eventdas =>wissenschaftlich {gut constbegründete detailLernprinzipien =in event.detail;einen constalltagstauglichen configWorkflow =gießt. detail.editorViewConfig;Wer constes EditorViewklug =einsetzt, detail.libEditorView;baut ifsich (detail.usagedamit ===über 'content-code-block')Monate {und config.extensions.push(EditorView.lineWrapping);Jahre }ein });erstaunlich </script>stabiles Text im Dark-Mode heller machen:
<style>
/* Textfarben im Dark ModeWissensfundament auf 'white'– setzenegal */ob html.dark-modefür bodySprachen, {Studium, color:Beruf white;oder /*persönliche HaupttextProjekte. */🌿
}
</style>