ex-akt/contao-ki-kennzeichnung

Kennzeichnung KI-generierter Bilder für Contao (Art. 50 EU-KI-VO): Haken an der Datei, Badge im Frontend, automatische Erkennung vorhandener Herkunftsmarker beim Upload.

Maintainers

Package info

github.com/ex-akt/contao-ki-kennzeichnung

Type:contao-bundle

pkg:composer/ex-akt/contao-ki-kennzeichnung

Transparency log

Statistics

Installs: 0

Dependents: 0

Suggesters: 0

Stars: 0

Open Issues: 0

v0.1.0 2026-08-11 09:58 UTC

This package is auto-updated.

Last update: 2026-08-11 10:27:23 UTC


README

Kennzeichnet KI-generierte Bilder dort, wo sie stehen — ein Haken an der Datei, der Hinweis erscheint überall von selbst.

Release Lizenz Contao ^5.7 PHP ^8.3 ex-akt

Bild mit dem Hinweis „KI-generiert“ unten rechts

Getestet mit Contao ^5.7 und PHP ^8.3

Worum es geht

Seit dem 2. August 2026 gilt Art. 50 Abs. 4 der EU-KI-Verordnung: Bildinhalte, die von einer KI erzeugt wurden und realen Personen, Gegenständen oder Orten ähneln, müssen beim Betrachten als künstlich erzeugt erkennbar sein. Ein Satz im Impressum genügt dafür nicht — der Hinweis gehört an das Bild.

Ob ein Motiv von einer KI stammt, hängt am Motiv selbst, nicht daran, in welchem Inhaltselement es gerade steckt. Deshalb sitzt der Haken in der Dateiverwaltung: einmal gesetzt, erscheint der Hinweis überall, wo das Bild eingebunden ist — im Beitrag, in der Übersichtsliste, im Hintergrundbild und auf jeder Seite, die erst später entsteht.

Funktionen

  • Haken „KI-generiert" an jeder Bilddatei (tl_files)
  • Badge im Frontend, automatisch in moderner und alter Template-Welt
  • Erkennung beim Upload: Bilder mit Herkunftsmarker werden markiert und gegen Abwählen gesperrt
  • Konsolenbefehl für Altbestände und nach contao:filesync
  • Kein Layout-Eingriff: Der Hinweis liegt auf dem Bild, das Seitenlayout bleibt unberührt
  • Barrierefrei: echtes Markup statt CSS-Pseudoelement (Art. 50 Abs. 5)

Installation

composer require ex-akt/contao-ki-kennzeichnung
vendor/bin/contao-console contao:migrate

Verwendung

Im Backend

Dateiverwaltung → Bild bearbeiten → Haken KI-generiert.

Wurde ein Bild automatisch erkannt, ist der Haken gesetzt und gesperrt; die Datei nennt dann im Feldhinweis den Beleg, etwa „Google SynthID (JPEG-Segment APP11)".

Bestand prüfen

# nur anzeigen
vendor/bin/contao-console ex-akt:ki-bilder:pruefen --dry-run

# markieren, auf ein Verzeichnis begrenzt
vendor/bin/contao-console ex-akt:ki-bilder:pruefen --pfad files/content

In eigenen Templates

Bilder, die ein Bundle selbst rendert — typisch Hintergrundbilder in Hero-Elementen — laufen an beiden Ausgabewegen vorbei. Dafür gibt es die Twig-Funktion:

{% if ki_bild(heroBackgroundImage|default) %}
    {{ include('@Contao/component/_ki_badge.html.twig', {}, false) }}
{% endif %}

ki_bild() nimmt, was zur Hand ist: ein Figure-Objekt, ein FilesModel, eine UUID (binär oder als Zeichenkette) oder einen Pfad.

Das false ist kein Beiwerk. Ohne es erbt das Badge-Template den Kontext des aufrufenden Elements, und ein dortiges Feld text überschreibt die Beschriftung — im Badge steht dann der komplette Elementtext.

Anpassen

Was Wie
Aussehen Klasse .ki-hinweis im Projekt-Stylesheet überschreiben
Beschriftung {{ include('@Contao/component/_ki_badge.html.twig', {ki_badge_text: 'Mit KI erstellt'}, false) }}
Markup Projekteigenes templates/component/_ki_badge.html.twig

Ausgegeben wird der Hinweis über zwei Templates, die die Contao-Fassungen erweitern statt sie zu ersetzen:

  • component/_figure.html.twig — Inhaltselemente, News, Galerien
  • image.html5 — alles, was noch über $this->insert('image', …) läuft

Ein projekteigenes Template gleichen Namens sticht sie aus; dann gehört der Hinweis dort ergänzt.

Was die Erkennung leistet — und was nicht

Als Beleg gelten die Werte, nicht der Container: trainedAlgorithmicMedia, compositeWithTrainedAlgorithmicMedia, compositeSynthetic (IPTC DigitalSourceType) und Googles SynthID.

Ein C2PA-Manifest allein belegt nichts. Content Credentials tragen auch echte Kameraaufnahmen (Leica, Sony) und schlichte Photoshop-Bearbeitungen. Wer auf c2pa oder jumbf prüft, markiert früher oder später ein echtes Foto als KI-generiert.

Ein fehlender Marker beweist nichts. Skalieren und Nachbearbeiten entfernen ihn rückstandslos — ein Lauf über den Bestand findet deshalb regelmäßig nur einen Teil der tatsächlich KI-generierten Bilder. Der manuelle Haken bleibt jederzeit setzbar, und die Automatik nimmt einen gesetzten Haken nie zurück.

Grenzen

  • Videos und Audio sind nicht abgedeckt. Art. 50 erfasst sie ebenso; das Feld sitzt auf tl_files und ließe sich erweitern.
  • contao:filesync vergibt bei Neuanlage neue UUIDs — der Haken hängt dann am alten Datensatz. Danach den Konsolenbefehl laufen lassen.
  • Die Kennzeichnung ersetzt keine Bildherkunftsdokumentation. Sie sagt, was markiert ist, nicht, woher jedes Motiv stammt. Wer Bilder generiert, hält die Herkunft am besten schon beim Erzeugen fest — hinterher ist sie an der Datei nicht mehr ablesbar.

Tests

composer install
composer test

Die Erkennung wird gegen selbst erzeugte JPEG- und PNG-Fixtures geprüft — darunter ausdrücklich die Fälle, die nicht anschlagen dürfen: ein C2PA-Manifest ohne KI-Wert, ein DigitalSourceType mit digitalCapture und Zufallstreffer in den Bilddaten hinter dem Start-of-Scan-Marker.

Rechtlicher Hinweis

Dieses Bundle ist ein Werkzeug zur technischen Umsetzung, keine Rechtsberatung. Ob und wie ein konkretes Bild zu kennzeichnen ist, entscheidet der Betreiber der Website.

Lizenz

LGPL-3.0-or-later — siehe LICENSE.

Entwickelt von ex-akt · IT · Media · Consulting, Neuenstein.