Skip to main content

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.yml
Fü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:
    Leichte Karten kommen seltener Schwierige Karten kommen häufiger und alles passt sich dynamisch an dein Antwortverhalten an

    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.

    Referrer-Policy "strict-origin-when-cross-origin" } }

    SchrittWie Anki aufgebaut ist: Notes vs. Cards 📌

    Ein Schlüsselkonzept, das Anki von vielen simplen Karteikarten-Apps unterscheidet:

      Notiz (Note) = ein Datensatz mit Feldern (z. B. „Vokabel“, „Übersetzung“, „Audio“, „Beispielsatz“) Karten (Cards) = konkrete Abfragen, die aus derselben Notiz generiert werden

      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:

        Feld 1: Ausdruck – „gâteau“ Feld 2: StartenAussprache – Audio Feld 3: Bedeutung – „cake“

        Daraus lassen sich mehrere Karten bauen, z. B.:

        1. InsFranzösisch Verzeichnis wechseln:
          cd /opt/bookstack/Deutsch/Englisch
        2. UnserAudio Zeugs installieren:
          dockerWort compose up -d
          Aktualisieren geht dann so:
          docker compose pull; docker compose up -derkennen
        3. Fertig,Deutsch/Englisch aber nunFranzösisch schnell die URL aufrufen und die Standard-Zugangsdaten ändern!
          Standard-Login (User + Passwort): admin@admin.com + passwordproduzieren

        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.:

          „Die Hauptstadt von Frankreich ist {{c1::Paris}}.“

          Jede Cloze-Markierung erzeugt automatisch eine eigene Karte. Das ist besonders beliebt für:

            Medizin & Module/HacksJura (Definitionen, Klassifikationen) Formeln & Faktenwissen Sprachen (Chunking, Redewendungen im Kontext)

            Inhalte: von Text bis LaTeX und Audio 🎧📷

            Anki ist inhaltlich agnostisch: Karten können u. a. enthalten:

              Text, Bilder, Audio, Video LaTeX (super für Mathe/Physik/Chemie) HTML/CSS (für Layout, Farben, Tabellen, etc.)

              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:

                Am Desktop Karten erstellen und pflegen Unterwegs am Handy/Tablet wiederholen

                Dazu gibt es mehrere „Bausteine“:

                  Anki (Desktop): Windows, macOS, Linux (u. a.) AnkiWeb: Online-Sync und Review im Browser AnkiDroid (Android): kostenlos, Open Source AnkiMobile (iOS): kostenpflichtig (oft als Finanzierung für das Projekt gesehen)

                  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:

                    bessere Statistiken und Lernanalysen Image Occlusion (z. B. Anatomie-Bilder abdecken) effizientere Editor-Workflows (Batch-Editing, Templates) TTS/Sprachsynthese-Integration UI-Verbesserungen und Automationen

                    Shared Decks: schnell starten – aber mit Bedacht 📚

                    Es gibt dreieine Einschränkungen,große Sammlung an geteilten Decks, etwa für:

                      Sprachen (häufig nach Wortfrequenz sortiert) Naturwissenschaften Geografie und Allgemeinwissen besonders prominent: medizinische Decks (z. B. große Community-Decks rund um USMLE)

                      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 …

                        Vokabeln, Formeln, Definitionen, Fakten, Diagnoseschemata Prüfungen mit hohem Recall-Anteil langfristiges Wissensmanagement („Second Brain“ für Fakten)

                        ⚠️ Weniger ideal für …

                          rein konzeptuelles Verstehen ohne „abfragbare Einheiten“ kreative Fähigkeiten, die viel Praxis statt Abruf brauchen
                          (Anki kann unterstützen – ersetzt aber nicht Übung und Anwendung.)

                          Mini-Leitfaden: So nutzt du Anki „smart“ 😌

                          1. Karten E-Mail-Versandklein halten („atomic“) (z.B. „Passwort
                          2. Lieber vergessen“)eine funktioniertklare nicht,Frage bzw.pro meineKarte Experimenteals habenein nochganzes keineKapitel.
                          Lösung hervorgebracht und ich brauche das auch nicht zwingend. Aber wenn man z.B. Kommentare aktivieren will (User bekommen eine Benachrichtigung, wenn ihre Seiten kommentiert werden), dann kommt man da nicht drumherum. Mehr dazu hier. Kontext Manhinzufügen kann
                            Beispielsatz, Bild, Mini-Erklärung – aber ohne die FunktionalitätKarte mitzu sogenannten „Hacks" erweitern und ich kann zwei Hacks schon mal empfehlen:
                              https://www.bookstackapp.com/hacks/mathjax-tex/
                              Mathe-Formeln darstellen;überladen. https://www.bookstackapp.com/hacks/mermaid-viewer/
                              (Mermaid-)Diagramme darstellen;

                              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/bash Damit kann man dann Befehle „von innen“ heraus ausführen; Dann: cd /app/www/; Und dort dann das Kommando ausführen, das hier angezeigt wird (am Beispiel Mermaid):
                                https://www.bookstackapp.com/hacks/mermaid-viewer/ (Dort dann im Abschnitt: „Install as Module“) Nicht Shift+Enteralles – Zeilenumbruch:importieren Da sichQualität die> EntwicklerQuantität. aufSchlechte denKarten CommonMark-Standarderzeugen festgelegt haben, bedeutet es, dass u.a. standardmäßig ein einfacher Zeilenumbruch nicht gerendert wird: Man muss zwei Spaces am Zeilenende schreibenFrust und dannReview-Berge. Enter, damit ein einfacher Linebreak stattfindet – das hat mich wahnsinnig gemacht, weil alle Markdown-Editoren, die ich kenne funktionieren da anders (einfach Shift+Enter). Das wollte ich unbedingt ändern und habe dafür ein paar Stunden Zeit investiert. Jedenfalls sieht der Fix folgendermaßen aus:

                                  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 Dannbleiben hier
                                  eineAnki functions.phpbelohnt anlegen:
                                  /opt/bookstack/bookstack/www/themes/
                                  MitRegelmäßigkeit: demlieber folgendentäglich Inhalt:15–30
                                  <?phpMinuten useals BookStack\Theming\ThemeEvents;seltene useMarathon-Sessions.
                                  BookStack\Facades\Theme; Theme::listen(ThemeEvents::COMMONMARK_ENVIRONMENT_CONFIGURE, function ($environment) { $environment->mergeConfig([ 'renderer' => [ 'soft_break' => "<br>", ] ]); return $environment; });

                                  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>