integrity_scanner_fuer_stat.../scanner
Dieter Schlüter cae3dbb985 feat: KI-gestützte Inhaltsanalyse via OpenRouter (hash-gegated)
Optionale semantische Prüfung von Text und Bildern (inkl. OCR) auf
problematische Inhalte ohne Link-Signal: Pornografie, Propaganda,
diffamierende/strafbare Texte, versteckter Spam, themenfremde Werbung,
widersprüchliche Aussagen. Bewertet die thematische Passung zum
deklarierten site_context — eingestreute Heimat-Begriffe täuschen die
Erkennung nicht.

Kern:
- scanner/ai_analyzer.py: run_ai_analysis + score_ai_findings.
  Hash-Gate über data/ai_ledger.json → unveränderte Inhalte = Cache-
  Treffer = kein API-Call. Nur neue/geänderte Inhalte kosten etwas.
- Modell-Kette mit zweifacher Eskalation (Stufe 1+2 free, Stufe 3
  günstig bezahlt); eskaliert bei Fehler ODER Timeout (attempt_timeout).
  Erfolgreiches Modell wird im Ledger vermerkt.
- KI-Funde sind auf GELB gedeckelt — ROT bleibt harten Integritäts-
  Signalen vorbehalten. Graceful degradation: ohne Key/bei Fehler wird
  übersprungen, Scan läuft unverändert weiter.

Integration:
- baseline.py: load/save_ai_ledger, dismiss_ai_entries.
- config.py: ai_analysis-Block + ai_* Scoring-Schlüssel.
- __main__.py: Einhängung in cmd_scan/cmd_check, ai-dismiss-Subcommand,
  approve quittiert zugehörige Funde, status-Anzeige, diff-only + report.
- alerter.py + __main__.py: beanstandete Dateien erscheinen mit URL,
  Begründung und Quittier-Fingerprint in E-Mail UND Markdown-Report.
- plain.py: laienverständliche KI-Sätze.

API-Key nur aus Umgebungsvariable (OPENROUTER_API_KEY). Audio/Video als
abschaltbare Hooks vorbereitet (default aus).

Modelle live gegen OpenRouter verifiziert; Demo auf bredelar.info zeigte
korrekte Erkennung (echter Inhalt clean, eingeschleuster Casino-Spam mit
Heimat-Begriffen als hidden_spam erkannt).

Tests: 227 grün (+26 für ai_analyzer, +1 für E-Mail-KI-Abschnitt).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-13 00:04:33 +02:00
..
__init__.py feat: initial implementation of website integrity scanner 2026-06-12 00:51:41 +02:00
__main__.py feat: KI-gestützte Inhaltsanalyse via OpenRouter (hash-gegated) 2026-06-13 00:04:33 +02:00
ai_analyzer.py feat: KI-gestützte Inhaltsanalyse via OpenRouter (hash-gegated) 2026-06-13 00:04:33 +02:00
alerter.py feat: KI-gestützte Inhaltsanalyse via OpenRouter (hash-gegated) 2026-06-13 00:04:33 +02:00
baseline.py feat: KI-gestützte Inhaltsanalyse via OpenRouter (hash-gegated) 2026-06-13 00:04:33 +02:00
checker.py feat: single-line progress indicator during crawl and ext-link check 2026-06-12 17:17:37 +02:00
config.py feat: KI-gestützte Inhaltsanalyse via OpenRouter (hash-gegated) 2026-06-13 00:04:33 +02:00
crawler.py feat: sitemap seeding — discover orphan pages not reachable via links 2026-06-12 17:58:52 +02:00
differ.py feat: exclude_paths — skip dynamic areas (RSS feeds, news archives) from scan 2026-06-12 13:14:06 +02:00
extractor.py fix: Bugfixes, toten Code entfernt, Cache-Normalisierung & Session 2026-06-12 03:20:32 +02:00
plain.py feat: KI-gestützte Inhaltsanalyse via OpenRouter (hash-gegated) 2026-06-13 00:04:33 +02:00