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.
Package info
github.com/ex-akt/contao-ki-kennzeichnung
Type:contao-bundle
pkg:composer/ex-akt/contao-ki-kennzeichnung
Requires
- php: ^8.3
- contao/core-bundle: ^5.7
Requires (Dev)
- contao/manager-plugin: ^2.0
- phpunit/phpunit: ^10.5
Conflicts
- contao/manager-plugin: <2.0 || >=3.0
README
Kennzeichnet KI-generierte Bilder dort, wo sie stehen — ein Haken an der Datei, der Hinweis erscheint überall von selbst.
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
falseist kein Beiwerk. Ohne es erbt das Badge-Template den Kontext des aufrufenden Elements, und ein dortiges Feldtextü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, Galerienimage.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
c2paoderjumbfprü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_filesund ließe sich erweitern. contao:filesyncvergibt 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.