CGW EU AI Act Labeler helps you implement the transparency obligations of Article 50 of the EU AI Act on your WordPress site. It gives your editorial team a simple way to record how much artificial intelligence was involved in a piece of content, and it outputs the matching notice to visitors where they will actually see it.
The plugin provides the technical implementation. It does not decide which of your content requires a disclosure, and it does not replace legal advice for your individual situation.
Each level has its own text, color and icon, and every one of them can be customized in the settings.
Article 50(5) of the EU AI Act requires the information to be provided in a clear and distinguishable manner, at the latest at the time of the first interaction or exposure. A single blanket notice in your footer does not achieve that, so the plugin places notices at the content itself:
picture element.Four notice formats are available: banner, inline text, badge and modal dialog. A live preview in the settings shows the result immediately, without saving.
The plugin can analyze your media library for signs of AI generation, entirely on your own server. Every signal it finds carries a weight, and the sum produces a score from 0 to 100 together with a confidence level of none, low, medium or high:
digitalSourceType, for example trainedAlgorithmicMedia) or a generator entry from a C2PA manifest or XMP field.Media is only labeled automatically from a configurable threshold upwards (70 by default) and only when at least one structured metadata signal is present. Every result is shown with its score, confidence level and the signals behind it, so you can always see why a suggestion was made. Existing disclosures are never overwritten.
Metadata is parsed per format for JPEG, PNG, WebP, GIF, PDF, audio and video, rather than searching raw file text. Uploads are analyzed automatically, and the media library can be scanned in batches at any time.
If you prefer to control placement yourself, set the position to “Shortcode (manual placement)” and use:
[cgw_eu_ai_act_labeler] – notice for the current content[cgw_eu_ai_act_labeler type="page"] – only output for a given content type, ideal for templates[cgw_eu_ai_act_labeler media="1"] – notice for AI-labeled media inside the content[cgw_eu_ai_act_labeler format="badge"] – force banner, inline, badge or modal[cgw_eu_ai_act_labeler id="42"] – notice for a specific item[cgw_eu_ai_act_labeler text="…"] – use your own textMedia captions always remain in place, even in manual mode. Sites upgraded from an earlier version keep the former shortcode names as aliases so existing content continues to work; new installations register only [cgw_eu_ai_act_labeler].
By default the plugin makes no connections to third parties. It does not send your content, media or metadata anywhere, it loads no external scripts or fonts from a CDN, and it sets no cookies. All libraries, including Chart.js, are bundled locally. Dismissed notices are remembered in the browser’s sessionStorage for the current session only.
The only exception is the optional external visual AI detection, which is disabled by default and only becomes active after you enable it and enter your own API credentials. See “External services” below for what is sent, when, and to whom.
Available filters: wpaal_scanner_signals, wpaal_scanner_score, wpaal_auto_label_threshold, wpaal_should_auto_label, wpaal_known_ai_generators, wpaal_media_caption_text, wpaal_media_notice_text, wpaal_compact_media_caption, wpaal_overlay_unsafe_widgets, wpaal_external_detection_providers. The action wpaal_shortcode_conflict fires if a legacy shortcode alias is already taken.
Developed by Thomas Frenken for CGW GmbH.
The plugin works entirely on your own server. It optionally connects to one of the following third-party services for visual AI image detection. This feature is disabled by default, requires your own account and API credentials with the provider, and is only used once you enable it under Settings Automatic AI detection and select a provider. When enabled, it supplements the local metadata analysis with a visual assessment of the image content. Its result alone never triggers an automatic disclosure; it only raises the analysis score and is shown in the scan results for manual review.
Used for visual AI-generated image detection (model “genai”). When enabled and selected, the plugin sends a request to https://api.sightengine.com/1.0/check.json each time a media file is analyzed, that is on upload and during a media scan. The request contains the public URL of the image in your media library together with your Sightengine API user and API secret. Sightengine fetches the image from that URL and returns a probability that the image is AI-generated. No other data about your site, your users or your visitors is sent.
Used for visual AI-generated image detection. When enabled and selected, the plugin uploads the image file itself to https://api.aiornot.com/v2/image/sync each time a media file is analyzed, that is on upload and during a media scan. The request contains the image file and your AI or Not API key. The service returns a verdict (AI or human) with a confidence value. No other data about your site, your users or your visitors is sent.
Both providers usually charge per request. Please review their terms and pricing before enabling the feature, and make sure that sending your images to the provider is compatible with your own privacy obligations.