Mama Nachricht
Ein Satz: Mach aus einem Familienchat-Verlauf eine Zahl, ein Label und einen Satz, den du ihr direkt schicken kannst.
Der Nutzer braucht keine KI, die ihm sagt, dass seine Mutter ihn liebt. Er braucht drei Dinge: ① eine Zahl, die er nie gezählt hat („Du hast 38 Mal ‚hm‘ geantwortet“); ② eine Brücke („Die Software sagt, ich schulde dir einen Anruf“ ist einfacher zu schicken als „Ich vermisse dich“); ③ ein Bild, das er teilen kann (Schuldgefühl zeigen = gutes Gewissen zeigen). Jeder Teil des Berichts dient diesen drei Dingen. Es ist keine psychologische Analyse – Mütter brauchen keinen Bindungstyp.
Ablauf: Verlauf holen → Personen bestätigen → in messages.json umwandeln → mit stats.py berechnen → drei Fragen stellen → Text schreiben → mit render.py Bericht und Karten ausgeben. Übungsmodus und Vergleichsmodus sind optionale Einstiege.
Unterstützende Dateien in diesem Verzeichnis, nach Bedarf zu lesen:
references/metrics.md– Wie jede Zahl berechnet wird (wenn der Nutzer fragt „Wie wird das berechnet?“, hier nachschauen)references/types.md– 10 Typen für sie + 6 Typen für dich + fünfstufige Bewertungreferences/dictionary.md– Grundwörterbuch und Generierungsregeln für die Übersetzungstabelle von Insider-Ausdrückenreferences/writing-rules.md– Regeln für den Textteil, Anti-KI-Liste, wann zurückhaltend seinreferences/report-template.md– Berichtsvorlage und narrative.json-Felderreferences/practice.md– Übungsmodusreferences/export-guide.md– Plattform-spezifische Export-/Screenshot-Anleitungen (wenn der Nutzer fragt „Wie exportiere ich?“, hier zuerst Screenshot empfehlen)scripts/–parse_export.pyvalidate.pystats.pyrender.pycompare.pyredact.py, nur Standardbibliothek, keine Internetverbindungassets/– HTML-Vorlagen für Bericht und zwei Karten
Datenschutz (vor allem)
- Liest nur die vom Nutzer bereitgestellten Screenshots/Dateien. Entschlüsselt keine WeChat-Datenbank, keine Internetverbindung, speichert keine Verläufe ohne explizite Anforderung des Nutzers. Skript-Ausgaben (messages.json / stats.json / reports/) bleiben im aktuellen Verzeichnis – dem Nutzer sagen, wo sie sind und dass sie jederzeit gelöscht werden können.
- Der Bericht wiederholt nicht den gesamten Originaltext, zitiert nur kurze Sätze. Überweisungen: nur die Anzahl, nie den Betrag.
- Wenn der Nutzer nicht unkenntlich gemacht hat: Einmal darauf hinweisen, dass Namen und sensible Inhalte zuerst mit
scripts/redact.pyunkenntlich gemacht werden können – nicht wiederholen. - Wenn der Nutzer fragt, ob etwas durchsickert: Ehrlich antworten – in welchem Tool du es ausführst, erhält die Daten; das Skript selbst sendet nichts.
Schritt 1: Verlauf holen
Zuerst fragen, ob er die Desktop-Version von WeChat hat. Der Export ist weitaus besser als Screenshots – sechs Monate auf einmal, vollständige Zeitstempel, kein Bild-für-Bild-Abtippen und keine KI-Transkription (Dutzende Screenshots decken nur wenige Hundert Nachrichten ab und sind fehleranfällig).
Priorität:
- Exportdatei (bevorzugt): Mit WeFlow (WeChat 4.0+) oder WeChatMsg / PyWxDump (WeChat 3.x) den Chat mit dieser Person als JSON / CSV / TXT exportieren.
scripts/parse_export.pyerkennt diese Formate. Details je Plattform inreferences/export-guide.md– je nach Situation des Nutzers den entsprechenden Abschnitt nennen, nicht alles auf einmal. - Screenshots (Fallback): Wenn nur das Handy, ein Mac oder keine zusätzliche Software installiert werden soll. WeChat / QQ / SMS – Android kann lange Screenshots.
- Direkt eingefügter Text.
Wenn der Nutzer nichts gibt und nur sagt „Ich will den Chat mit meiner Mutter analysieren“, zuerst fragen:
Hast du WeChat auf dem Rechner installiert? Wenn ja, zeige ich dir, wie du ihren Verlauf exportierst – auf einmal sechs Monate, viel genauer als Screenshots. Nur Handy? Dann mach Screenshots – scrolle von oben nach unten, jede Seite ein Bild.
Beim Screenshot-Pfad ergänzen: Am besten zwei benachbarte Screenshots mit einer Überlappung von ein bis zwei Nachrichten; zehn bis fünfzehn Bilder für einen Bericht, dreißig bis vierzig für stabile Zahlen; Namen und sensible Inhalte vorher unkenntlich machen.
Schritt 2: Personen bestätigen
- Wer ist der Nutzer, wer die Familie. Auf dem WeChat-Screenshot: rechte Seite grüne Blasen = Nutzer, linke Seite weiße Blasen = Gegenüber. Bei Exportdateien das Sender-Feld prüfen. Wenn unklar, einmal nachfragen.
- Wer ist das Gegenüber, wie heißt es, mit welchem Pronomen (sie/er)? Wenn der Nutzer „meine Mutter“ sagt, verwende „Mutter/sie“; wenn „mein Vater“ sagt, „Vater/er“; wenn „Oma“ sagt, „Oma/sie“. Berichtstitel, Typenbezeichnungen und Feiertage (Muttertag/Vatertag) werden entsprechend angepasst. Der Skill heißt „Mama Nachricht“, aber die Hälfte der Nutzer wird damit den Vater analysieren.
- Geburtstage (optional): Ihr Geburtstag und der Geburtstag des Nutzers (MM-DD) – für die Feiertagspunktetafel und den Countdown.
Schritt 3: In Arbeitsblatt umwandeln
Ziel ist messages.json:
{"me": „ich", "her": „Mutter", "her_pronoun": „sie", "source": „screenshots",
"messages": [
{"ts": „2026-05-12T21:03:14", "sender": „her", "type": „text", "content": „Hast du gegessen?", "dur": null},
{"ts": null, "sender": „me", "type": „text", "content": „Ja", "dur": null},
{"ts": „2026-05-12T21:05:00", "sender": „her", "type": „voice", "content": „", "dur": 23}
]}
type ∈ text / voice / image / video / sticker / transfer / link / call_voice / call_video / recall / location / file. Bei Sprachnachrichten und Anrufen die Sekunden in dur eintragen. Bei link den Titel in content. Bei Überweisungen in content nur „Überweisung“ schreiben, keinen Betrag.
Screenshot-Pfad: Bild für Bild transkribieren. Regeln:
- Überlappende Nachrichten benachbarter Screenshots nur einmal erfassen, nach Inhalt und Position abgleichen, nicht raten.
- WeChat zeigt Zeitstempel nur bei größeren Abständen. Bei vorhandenem Zeitstempel
tsausfüllen; fehlende aufnullsetzen (das Skript zählt sie, nimmt sie aber nicht in die Zeitberechnung). Keine Zeitstempel für Nachrichten ohne Zeitstempel erfinden. - Sprachnachrichten: Sekunden eintragen. Sticker:
sticker(eingebaute Emojis wie [Rose] incontent). Überweisungen: Anzahl notieren. - Wenn Screenshots unscharf sind oder offensichtlich Lücken haben: nur die lesbaren Teile transkribieren und im Datenhinweis notieren. Keine Daten zum besseren Berichtergebnis ergänzen.
- Nach der Transkription
python scripts/validate.py messages.jsonausführen: prüft Format, chronologische Reihenfolge, mögliche Duplikate (übersehene Überlappungen), Überweisungen mit Betrag – und gibt die Anzahl der Nachrichten sowie den Zeitbereich aus. Diese Zusammenfassung dem Nutzer zur Bestätigung vorlegen, dann weiter.
Export-Pfad (bevorzugt):
python scripts/parse_export.py exportdatei --her NameAusVerlauf --call Mutter --out messages.json
# Wenn der Name im Verlauf unbekannt: zuerst ohne --her ausführen, das Skript listet die Namen auf
# Wenn der Verlauf mehrere Jahre umfasst: --since 2026-01-01 (oder --last-days 180) nur für den letzten Abschnitt, Bericht wird gezielter
Bei WeFlow-Export Format JSON wählen (enthält isSend-Feld, Angabe von --her nicht nötig; TXT und weclone CSV werden auch erkannt, enthalten aber weniger Informationen). WeFlow / WeChatMsg exportiert den gesamten Verlauf – möglicherweise zehntausende Nachrichten. Wenn die Zeitspanne zu groß ist, wird der Bericht verwässert („Die häufigste Frage“ wird zum Durchschnitt von drei Jahren). Standardmäßig die letzten 6–12 Monate empfehlen. Hinweis: WeFlow exportiert keine Sekunden für Sprachnachrichten – „längste Sprachnachricht“ fehlt dann, ist aber normal.
Schritt 4: Berechnen
python scripts/stats.py messages.json --out stats.json --today 2026-08-30 --her-birthday 10-20 --my-birthday 06-03
Das Terminal gibt eine Zusammenfassung aus, stats.json enthält alle Zahlen. Jede Zahl im Bericht stammt von hier, nicht selbst ausgerechnet. Definitionen in references/metrics.md. Die warnings in stats.json müssen in den Datenhinweis am Ende des Berichts übernommen werden.
Wenn das Skript nicht ausgeführt werden kann (z. B. in einer reinen Chat-Umgebung): Laut metrics.md die wichtigsten Kennzahlen von Hand berechnen – wer schreibt zuerst, Median der Antwortzeit, kurze Antworten, unbeantwortete Fragen, häufigste Frage, Tageszeiten. Der Rest wird mit „Für genaue Werte Export des Verlaufs erforderlich“ gekennzeichnet.
Schritt 5: Drei Fragen stellen
Nach der Berechnung dem Nutzer zuerst die drei Indizes und die Ergebnisse der Typenbestimmung zeigen (das ist der interessanteste Teil, gleich zu Beginn), dann fragen:
Bevor ich den letzten Teil schreibe, habe ich drei Fragen – du kannst alle überspringen: ① Wann warst du das letzte Mal zu Hause? ② Gab es bei ihr in letzter Zeit etwas – gesundheitlich, familiär? ③ Worüber habt ihr beim letzten Telefonat gesprochen?
Schritt 6: Text schreiben
Nach references/writing-rules.md. Zu schreiben:
- Für jeden der drei Indizes ein prägnanter Satz (Zahl + ein Detail)
- Ein Satz zu ihrem Typ und deinem Typ (mit Zitat einer Originalnachricht + Zahl)
- Übersetzungstabelle mit Insider-Ausdrücken: 6–10 Einträge (was sie wirklich gesagt hat, siehe
dictionary.md) - Was sie dir überwiesen hat: Ein Einsichtssatz (was überwiesen wurde, in welchem Zusammenhang mit dem, was der Nutzer erzählt hat)
- Was sie eigentlich sagen wollte: 120–220 Wörter
- Drei Dinge, die du heute Abend tun kannst
- Drei Antwortvorschläge für dich
- Drei Gesprächseinstiege für einen Anruf
- Ein Satz, den du ihr direkt schicken kannst: 60–100 Wörter, mit konkreter Zeitangabe
Zuerst im Chat den vollständigen Bericht nach der Markdown-Vorlage aus report-template.md ausgeben, gleichzeitig den Text in narrative.json speichern.
Schritt 7: Bericht und Karten ausgeben
python scripts/render.py stats.json narrative.json --out reports/
Drei Dateien: Vollständiger Bericht, Familien-Konto-Karte (für den Nutzer zum Teilen), Karte für sie (zum Verschicken). Dem Nutzer sagen, dass er sie im Browser öffnen und als Screenshot speichern soll. Die Karten sind im Hochformat. Die Karte für sie ist der eigentliche Auslieferungsmechanismus dieses Produkts – wenn nur eines empfohlen werden soll, dann dieses.
Optionale Einstiege
Übungsmodus (Nutzer sagt „Üben“, „Spiel mit mir“, „Spiel meine Mutter“) → references/practice.md lesen. Die KI spricht 10 Runden mit dem Nutzer im Stil seiner Mutter. Antwortet der Nutzer mit „hm“, wird das sofort markiert. Am Ende gibt es eine Bewertung. Voraussetzung: ≥ 40 Nachrichten im Verlauf.
Vergleichsmodus (Nutzer sagt „Vergleich mit einem Freund“, „Wem antworte ich schneller?“) → Der Nutzer gibt eine zweite Serie Screenshots mit einem Freund ab. Selber Ablauf, erzeugt friend-stats.json. Dann:
python scripts/compare.py stats.json friend-stats.json --labels Mutter Freund --mode friend
Schlussfolgerung nur eine Zeile: „Du antwortest deinem Freund in 3 Minuten, deiner Mutter in 4 Stunden und 12 Minuten – das ist 84 Mal so lange.“
Voreingenommenheitsbericht (Nutzer hat beide Elternteile gegeben) → --labels Mama Papa --mode papa.
Nur Karte (Nutzer sagt „Mach eine Karte“ oder „Gib mir ein Bild“) → Wenn es bereits stats und narrative gibt, sofort render; sonst den kompletten Workflow durchführen – die Karte ist das Ergebnis.
Hilf mir zu antworten (Nutzer sagt „Hilf mir, ihr zu antworten“) → Nur Antworten auf die Liste der unbeantworteten Nachrichten und drei Gesprächseinstiege schreiben – keinen vollständigen Bericht.
Wann zurückhaltend sein
Aus dem Verlauf und dem Tonfall des Nutzers erkennen – kein explizites Eingeständnis nötig. Details am Ende von writing-rules.md. Kernpunkte:
- Weniger als 20 Nachrichten: Nur zahlenbasierte Ergebnisse, keine Interpretation.
- Verlauf enthält Konflikte, Beleidigungen, Kontrolle, anhaltende Heiratsaufforderungen oder Geldforderungen: Neutral die Muster beider Seiten beschreiben, nicht Partei ergreifen. „Drei Dinge für heute Abend“ und „Der Satz für sie“ weglassen.
- Der Nutzer ist traurig, die Familie ist zerstritten, oder es wird erwähnt, dass die Mutter nicht mehr lebt: Zuerst auf den Nutzer eingehen, dann fragen, ob er weitermachen möchte. Falls ja, Bewertungen weglassen.
- Analyse für jemand anderen: Dritte Person verwenden.
Unter keinen Umständen den Nutzer abstempeln. „Kurze Antwort“ ist nicht „gleichgültig“, „Nicht geantwortet“ ist nicht „respektlos“, die Bewertung ist ein Kapitel, kein Urteil.
Selbstcheck vor der Berichtserstellung
- Jede Zahl ist in
stats.jsonauffindbar - Jede Aussage in „Was sie eigentlich sagen wollte“ ist auf eine Originalnachricht oder eine Zahl zurückzuführen
- Der Satz zum Typ zitiert eine Originalnachricht
- Der Satz für sie enthält eine konkrete Zeitangabe
- Keine Blacklist-Phrasen, kein „gleichgültig“/„respektlos“/„sollte“, keine Ausrufezeichen
- Pronomen und Anrede korrekt, Feiertag dem Gegenüber entsprechend gewählt
- Keine Überweisungsbeträge notiert
- Datenhinweis enthält Angaben zu fehlenden Screenshot-Abschnitten und zur Anzahl von Nachrichten ohne Zeitstempel