macOS-App, die Kommentare („Postings") unter Nachrichtenartikeln automatisch überwacht, speichert und gelöschte Kommentare als gelöscht markiert behält.
Aktuell unterstützte Quellen: derStandard.at, kurier.at, krone.at und kleinezeitung.at.
Hinweise:
- oe24.at / Österreich und diepresse.com bieten kein öffentliches Leser-Kommentarsystem (nur Umfragen bzw. redaktionelle „Kommentare/ Gastkommentare") – dort gibt es nichts zu überwachen.
- Kleine Zeitung nutzt dasselbe Coral wie Kurier; in anonymen Tests hatten die Artikel jedoch durchwegs 0 öffentlich sichtbare Kommentare (Kommentieren ist dort vermutlich abo-/login-gebunden). Technisch ist die Quelle korrekt integriert – vorhandene öffentlich lesbare Kommentare werden angezeigt.
Es wird kein Xcode benötigt – nur die Command Line Tools (swiftc).
./build.sh # erzeugt CommentMonitor.app
open CommentMonitor.appDas App-Icon liegt als Resources/AppIcon.icns bei und wird beim Build ins
Bundle kopiert. Neu erzeugen lässt es sich mit:
swiftc -O -framework AppKit -o /tmp/makeicon Tools/makeicon.swift
/tmp/makeicon /tmp/AppIcon.iconset
iconutil -c icns /tmp/AppIcon.iconset -o Resources/AppIcon.icns- Mit „+“ einen Artikel-Link einfügen, z. B.
https://www.derstandard.at/story/3000000318428/... - Die App ruft die Kommentare ab und zeigt sie mit Autor, Datum, Bewertungen und Thread-Verschachtelung.
- „Einstellungen“ → Abfrage-Intervall (Standard 5 min). Die Überwachung läuft, solange die App geöffnet ist.
- Über das Lupen-Symbol in der Toolbar lässt sich quellenübergreifend nach Artikeln suchen; Treffer können direkt mit „+“ zum Monitor hinzugefügt werden.
- Durchsucht derStandard (
/search-Trefferseite) und Kurier (efs-varnish.kurier.at/api/v1/cfs/search, liefert sogar Kommentarzahlen). - Krone hat keine frei aufrufbare Such-API – Krone-Artikel daher per Link über „+“ hinzufügen.
- In „Einstellungen“ ein Stichwort pro Zeile eintragen.
- Taucht in einem neuen Kommentar (Text, Autor oder Titel) ein Stichwort auf, gibt es eine macOS-Mitteilung und der Kommentar wird gelb hervorgehoben.
- In der Artikelansicht zeigt „N Treffer“ die Anzahl; mit „nur Treffer“ lässt sich auf Treffer filtern.
- Mitteilungen erscheinen nur, wenn die App als Bundle gestartet wird
(
open CommentMonitor.app) und beim ersten Start die Erlaubnis erteilt wurde.
- Gelöschte Postings werden nicht entfernt, sondern durchgestrichen mit rotem „gelöscht“-Badge und Zeitpunkt angezeigt.
- Zwei Erkennungswege:
- Direkt von der Quelle: derStandard liefert pro Posting einen
lifecycleStatus; alles außerPublishedgilt als gelöscht. - Verschwinden: fehlt ein zuvor gesehenes Root-Posting im vollständigen Snapshot, wird es als gelöscht markiert.
- Direkt von der Quelle: derStandard liefert pro Posting einen
- Textänderungen werden als Bearbeitung protokolliert (frühere Fassung aufklappbar).
~/Library/Application Support/CommentMonitor/data.json
(Pfad auch in den Einstellungen einsehbar.)
- SwiftUI, gebaut direkt mit
swiftc(kein Xcode-Projekt nötig). - derStandard: GraphQL
capi.ds.at/forum-serve-graphql/v1/über Persisted Queries (GetForumInfo,ThreadsByForumQuery). Kein Login/Token – nur der Apollo-CSRF-Headerx-apollo-operation-name. - Kurier: Kommentarsystem Coral (
community.kurier.at). Coral erlaubt nur Persisted Queries, aufgerufen perGET ?query=&id=<persistedId>&variables=…(AllCommentsTabQuery). Ebenfalls kein Login nötig. - Kleine Zeitung: gleiches moderne Coral wie Kurier
(
comments.kleinezeitung.at), eigene Persisted-Query-ID; storyURL ist die Kurz-URLkleinezeitung.at/<id>. Parser wird mit Kurier geteilt (KurierSource.parse). - Krone: älteres Coral „Talk" v4 (
talk.krone.at). Erlaubt rohe GraphQL-Queries perPOST /api/v1/graph/ql(asset(url:){comments{nodes…}}). Felder u. a.status,deleted_at(Löschungen),user.username,created_at,action_summaries.count(Reaktionen), verschachteltereplies. - Weitere Zeitungen lassen sich über das
NewsSource-Protokoll (Sources/Adapters.swift,Sources/KurierSource.swift) ergänzen.
Zum erneuten Erfassen der Coral-Query-IDs gibt es das Capture-Hilfsprogramm
Tests/coral_capture.swift (lädt das Embed in einer WKWebView und protokolliert
die echten GraphQL-Requests).
- Persisted-Query-Hashes (
Sources/Adapters.swift) sind an die aktuelle derStandard-Forum-App gebunden. Aktualisiert derStandard das Forum, können sich die Hashes ändern; die App meldet das dann als Fehler („Persisted-Query“). Dann müssen die Hashes neu erfasst werden (siehe unten). - Sehr tief verschachtelte Antworten jenseits der von der Query gelieferten Ebene werden nur über ihren Status erkannt, nicht über Verschwinden.
- Kurier: Es wird die erste Seite der Diskussion geladen (bis ~20 Wurzel-Kommentare samt verschachtelter Antworten). Bei sehr großen Diskussionen werden tiefere Seiten noch nicht nachgeladen (Pagination ist als Erweiterung vorgesehen).
Im Browser einen Artikel öffnen, Entwicklertools → Netzwerk, nach
forum-serve-graphql filtern und die sha256Hash-Werte von GetForumInfo
und ThreadsByForumQuery aus den Request-URLs übernehmen.