Skip to the content.

Privacy Policy — RepCheck — Opening Repertoire Deviation Checker

Stand: 2026-11-09 · Geprüft gegen Version der Erweiterung: 1.74.1

Kurz gesagt

Ohne Verbindung: trainierte Chessable-Linien (opt-in)

Damit sich deine Chessable-Kurse auch ohne Einrichtung auf RookHub aufbauen, kann die Erweiterung die auf chessable.com trainierten Linien auch ohne RookHub-Token senden. Wichtig:

Mit Verbindung: was geht wann an die RookHub-Instanz?

Alle Aufrufe tragen deinen Extension-Token (Authorization: Bearer rkh_…, Scope extension) und gehen nur an die eine verbundene Instanz.

chess.com / lichess.org

Wann Was Endpunkt
Klick auf „Prüfen” (Repertoire-Check mit RookHub) oder „Aktualisieren” im Seiten-Panel SAN-Zugliste der angezeigten Partie POST /api/extension/analyze-game
Klick auf „Partie speichern” (💾) oder in einer Partienliste auf „an RookHub schicken” (↗) Züge, Spieler, Wertungen, Ergebnis, Datum, Bedenkzeit, Partie-Id (nur bei echten Partie-Adressen, nicht auf dem lichess-Analysebrett) und -Adresse POST /api/extension/games
Klick auf 📈 in einer Partienliste Startet die Analyse einer dort schon gespeicherten Partie POST /api/extension/games/{id}/analyze
Automatisch ohne Klick, sobald eine Partienliste offen ist (Archiv oder Profilseite — auch die eines anderen Spielers) Plattform und die öffentlichen Ids der sichtbaren Partien (keine Züge, keine Namen) — um anzuzeigen, welche schon bei RookHub liegen. Nachgeladene Zeilen werden im 2,5-s-Takt nachgefragt, laufende Analysen alle 30 s; scheitert eine Abfrage, fragt sie frühestens nach 5 s erneut, bei weiteren Fehlschlägen seltener (höchstens alle 2 min) POST /api/extension/games/known
Popup: Teilen-Link Zugfolge und Titel der aktuellen Stellung POST /api/extension/share-line
Popup öffnen, Verbindung von Hand prüfen Liest die Liste deiner Eröffnungsrepertoires GET /api/extension/repertoires

chessable.com

Wann Was Endpunkt
Automatisch beim Training Aktive Trainingszeit (Sekunden, Zahl trainierter Züge und Linien, Kurs-Id, -Name, -Art) POST /api/extension/training-activity
Automatisch beim Training „Linie trainiert” (Kurs-Id + Linien-Id) POST /api/extension/chessable/line-trained
Automatisch beim Training Das rohe getReview-JSON der trainierten Linie (Zugfolge, Alternativen, Kommentare, Pfeile) POST /api/extension/chessable/review-lines
Automatisch beim Training „Schwierige Züge” aus den ohnehin geladenen Chessable-Antworten: Schwierigkeitszähler nHard, deine Fehlzüge je Halbzug, Datum der letzten Wiederholung POST /api/extension/chessable/problem-moves
Automatisch beim Training Sitzungsergebnis je Zug aus dem REQUEST von Chessables eigenem Fortschritts-Report (falsch gespielte Züge, Overstudy-/Alternative-Markierung, Level, Punkte). Die ANTWORT dieses Reports enthält Konto-Daten und wird nicht angefasst POST /api/extension/chessable/session-moves
Automatisch beim Durchklicken eines Kurses Kapitel- und Linieninhalte, die die Seite ohnehin von Chessable lädt (Züge, Kommentare, Varianten); sie werden laufend an deinen Kurs auf RookHub angehängt POST /api/extension/chessable/ingest/live
Automatisch auf Kursseiten und auf der Chessable-Startseite Die Kurs-Ids (auf der Startseite: aller angezeigten Kurse), um zu zeigen, welche Linien schon bei RookHub liegen; auf Kursseiten zusätzlich die Liste deiner Repertoires GET /api/extension/chessable/progress, GET /api/extension/repertoires
Klick im Popup auf „⚡ Kurs holen” oder „Mitschnitt importieren” Vorab die Linien-Ids des Kurses (welche liegen schon im geteilten Linien-Cache?), dann Kursstruktur und Linieninhalte, in Portionen POST /api/extension/chessable/cached-lines, POST /api/extension/chessable/ingest, POST /api/extension/chessable/ingest/chunk, POST /api/extension/chessable/ingest/live
„⚡ Kurs holen” stoppt wegen einer unerwarteten Chessable-Antwort Kurs-Id und -Name, abgerufener Chessable-Endpunkt samt Kapitel-/Linien-Id, HTTP-Status, Chessables Fehlermeldung, die ersten 1000 Zeichen der Antwort (E-Mail- und IP-Adressen werden vorher entfernt), Version der Erweiterung POST /api/extension/chessable/unexpected-response
„⚡ Kurs holen” bricht mit einem anderen Fehler ab (etwa in der Erweiterung oder beim Senden) Kurs-Id und -Name, Ziel (Repertoire/Buch), Phase des Laufs, Fehlertext, Zahl geholter und gesendeter Linien, Version der Erweiterung, Browser mit Hauptversion (kein vollständiger User-Agent) POST /api/extension/chessable/crawl-error
Klick auf „Remember line” Aktuelle Stellung (FEN), Kurs-Id, Kursname, Seitenadresse POST /api/extension/remember-line

Verbindung herstellen („🔗 Mit RookHub verbinden”)

Die Erweiterung öffnet einen Tab der eingetragenen Instanz (vorbelegt: https://rookhub.oberschmid.homes). Nach deinem Klick liest sie dort mit dem Recht scripting das Anmelde-JWT aus dem localStorage der RookHub-Seite (rookhub_user) — nur aus einem Tab genau dieser Instanz — und legt damit einmalig einen Extension-Token an (POST /api/profile/tokens, Name „RepCheck (Browser)”, gültig ein Jahr). Verbindest du denselben Browser erneut, widerruft sie mit demselben JWT den bisherigen Token dieses Browsers (DELETE /api/profile/tokens/{id}; bei einer Verbindung von vor Version 1.68.11 sucht sie ihn vorher in deiner Token-Liste, GET /api/profile/tokens). Das JWT wird nicht gespeichert und für nichts anderes verwendet; gespeichert werden nur der zurückgegebene rkh_-Token und seine Id. Alternativ trägst du URL und Token von Hand ein. „Trennen” widerruft den Token auch in RookHub (DELETE /api/extension/token/self); kennt die Instanz das noch nicht, wird er nur in der Erweiterung gelöscht, und das Popup sagt dir, dass du ihn im Profil löschen musst.

Verbindungen zu chess.com, lichess.org und chessable.com

Weitere Server kontaktiert die Erweiterung nicht. Der Discord-Link im Hinweis nach einer unerwarteten Chessable-Antwort öffnet nur auf Klick eine Seite.

Was wird lokal gespeichert?

Die Werte in chrome.storage.local gehören der Erweiterung; Webseiten können sie nicht lesen. Die beiden IndexedDB-Datenbanken legen Skripte der Erweiterung im Speicher der jeweiligen Website an (chess.com bzw. lichess.org, chessable.com) — sie liegen damit bei den Websitedaten dieser Seiten, nicht bei der Erweiterung (siehe „Wie werden Daten gelöscht?”).

Datum Speicherort Wofür
Repertoire-Stellungen (aus deinen PGNs) IndexedDB RepertoireCheckerDB im Websitespeicher von chess.com bzw. lichess.org Lokaler Repertoire-Vergleich auf chess.com/lichess
Ordner-Handle (File System Access API) IndexedDB RepertoireCheckerDB (wie oben) Den zuletzt gewählten PGN-Ordner ohne erneutes Auswählen lesen
RookHub-URL IndexedDB RepertoireCheckerDB (wie oben) und chrome.storage.local (rookhubConfig) Welche RookHub-Instanz angesprochen wird
RookHub-Token (rkh_…) nur chrome.storage.local (rookhubConfig) — von Webseiten nicht lesbar Anmeldung bei der verbundenen Instanz
Chessable-Token (JWT) chrome.storage.local (chessableToken) Abrufe bei Chessable (s. o.) und der Kopier-Knopf
Kursnamen, Kursstrukturen chrome.storage.local (chessableCourseNames, courseStructures, 7 Tage, höchstens 80 Kurse) Kursnamen anzeigen, Fortschrittszähler ohne erneuten Abruf
Zwischenspeicher von „⚡ Kurs holen” IndexedDB RepCheckCrawlCache im Websitespeicher von chessable.com Chessables Antworten auf getCourse und getList der zuletzt geholten Kurse (Kursstruktur, Kapitel mit ihren Linien, darin auch dein Trainingsstand wie der Schwierigkeitszähler nHard), damit ein zweiter Versuch nach einem Abbruch sie nicht erneut abrufen muss. Jeder Eintrag gilt 24 Stunden; ältere werden beim nächsten „Kurs holen” gelöscht. Geht nirgendwohin
Tägliche Trainingsstatistik chrome.storage.local (rcDailyStats) Anzeige im Popup; bleibt lokal
Einstellungen und Zustände chrome.storage.local (chessableButtons, crawlDelay, rcLang, rcReviewConsent, rcOnboarding, rcButtonsNotice, rcCourseFetched, rcCrawlAlert, rcBanRiskAck, rookhubPairing) Button-Auswahl, Pause beim Kurs holen, Sprache, deine Zustimmung, Einführung, Hinweise, ob der Hinweis zum Sperrrisiko vor „Kurs holen” noch erscheinen soll, Stand der Ein-Klick-Verbindung (ohne JWT)
Partiezüge, beim Training mitgelesene Chessable-Antworten nur im Arbeitsspeicher des Tabs (bis auf den Zwischenspeicher von „⚡ Kurs holen” oben) Vergleich, Speichern, Anhängen wie oben beschrieben

Wer hat Zugriff?

Wie werden Daten gelöscht?

Berechtigungen im Manifest

Open Source

Vollständiger Quellcode: https://github.com/kahalm/repcheck. Jeder kann das Verhalten der Erweiterung im Code nachprüfen.

Kontakt

GitHub-Issues: https://github.com/kahalm/repcheck/issues