Title: TransparAI: EU AI Act Compliance, AI Disclosure &amp; AI Image Detection
Author: Patrick Schlesinger
Published: <strong>September 8, 2026</strong>
Last modified: September 18, 2026

---

Search plugins

![](https://ps.w.org/transparai/assets/banner-772x250.png?rev=3686020)

![](https://ps.w.org/transparai/assets/icon-256x256.png?rev=3686020)

# TransparAI: EU AI Act Compliance, AI Disclosure & AI Image Detection

 By [Patrick Schlesinger](https://profiles.wordpress.org/contexlabs/)

[Download](https://downloads.wordpress.org/plugin/transparai.1.1.4.zip)

 * [Details](https://ido.wordpress.org/plugins/transparai/#description)
 * [Reviews](https://ido.wordpress.org/plugins/transparai/#reviews)
 *  [Installation](https://ido.wordpress.org/plugins/transparai/#installation)
 * [Development](https://ido.wordpress.org/plugins/transparai/#developers)

 [Support](https://wordpress.org/support/plugin/transparai/)

## Description

TransparAI is the EU AI Act compliance plugin for WordPress that covers AI transparency
and AI disclosure end to end: it detects AI-generated images in your media library,
labels them with a visible AI badge, writes the machine-readable AI disclosure (
the IPTC digital source type) into the image files, adds the note on AI-written 
text and the notice in front of a chatbot, and shows you where you stand with a 
readiness score, a self-assessment, an inventory of the AI systems on your site 
and a compliance report. Detection, labeling, structured data for SEO, audit trail,
REST API and WP-CLI, all on your own server, without a single external request.

**Who this plugin is for**

Publishers and bloggers who use AI images or AI-assisted text. WooCommerce shops
with AI product images or descriptions. Sites that run an AI chatbot. Agencies that
maintain many client sites and need a documented, exportable and scriptable state
per site. Anyone who has to answer “where do we use AI on this site” for management,
a customer or a lawyer.

**EU AI Act articles covered**

Article 50, the transparency obligations, applies from 2 August 2026: visitors must
be told when they talk to an AI system (50(1)), AI-generated content must carry 
a machine-readable marking (50(2)), and deepfakes as well as AI-written text on 
matters of public interest must be disclosed (50(4)). Which paragraph addresses 
you depends on whether you provide the AI system or deploy it; the plugin covers
the technical side of all of them. Article 4, AI literacy, applies since 2 February
2025: providers and deployers take measures so that the people who work with AI 
systems have sufficient AI literacy, and the plugin’s checklist records what your
organisation has done. The dashboard shows the whole timeline with the dates as 
adopted in Regulation (EU) 2024/1689.

**Readiness score, self-assessment and compliance report**

The TransparAI dashboard rates your compliance readiness from 0 to 100 with a traffic
light: each check stands for a decision or an artefact the plugin can verify on 
its own, such as an AI level on your AI-written posts, a worked-through review queue,
an answered chatbot question and an inventoried list of AI systems. A six-question
self-assessment (chatbot, AI text, AI images, personalisation, translation, synthetic
media) names the obligations likely to apply and the page that addresses each of
them. The Article 4 checklist counts toward the score. Two widgets on the WordPress
dashboard keep the score with its open checks and the key numbers in view. The score
is a technical self-check of the plugin state and your own answers, not a legal 
assessment.

**AI systems registry: which AI plugins run on your site**

A list of known AI tools ships with the plugin and is matched against your installed
plugins on your server, nothing is fetched. Chatbots an AI answers in are included,
plugins the list does not know are suggested by their own description, and anything
else (an external service, a script your theme calls) can be declared by hand. For
every system you decide whether visitors are told about it; the notice appears as
a line at the end of the page, a small badge or a dismissible banner and can be 
placed by block or shortcode too.

**Automatic AI image detection**

Most AI image generators leave traces in their files, and TransparAI reads all of
the common ones: C2PA manifests (Content Credentials) from OpenAI (ChatGPT, DALL-
E, GPT-Image), Adobe Firefly, Google Gemini including Nano Banana, and Bing Image
Creator; the IPTC digital source type in XMP as written by Midjourney and a growing
number of tools; generation parameters in PNG chunks from Stable Diffusion (AUTOMATIC1111),
ComfyUI, NovelAI and InvokeAI; EXIF and XMP signatures of Flux, Leonardo.Ai, Ideogram,
Recraft, Seedream and Photoshop Generative Fill; JPEG comment markers, C2PA in MP4
video and AI declarations in MP3 audio.

Detection parses the real file containers (JPEG segments, PNG chunks, RIFF, MP4 
boxes, ID3 frames) and matches only inside metadata blocks, never with a blind text
search over raw bytes, and never with guesses from image dimensions, file size or
file names. Cameras from Leica, Sony and Nikon embed Content Credentials into real
photos too, so a C2PA manifest alone never auto-labels anything here. Findings carry
a confidence level: explicit AI declarations are labeled automatically, strong but
informal signals land in a review queue where you confirm or dismiss them, single
or in bulk, right in the media library. New uploads are checked on arrival, the 
existing library in a batched, pausable scan. Media generated by AI plugins on your
own site (AI Engine, AI Power, Elementor AI, WordPress AI) is labeled at the source.

**The visible AI label**

A configurable AI badge marks labeled media in the front end: overlay or caption
line, four positions, three sizes, dark, light, outline or icon-only, your own background
and text colour with an opacity of your choosing, optional generator name, alt text
note for screen readers and start date so older content is not badged retroactively.
It renders server-side, so it survives page caching, and it works with the block
editor, the classic editor, template images, widgets, Elementor free and Pro including
Theme Builder, WPBakery Page Builder, Bricks Builder and WooCommerce, where the 
badge follows variation swaps and reappears inside the zoom and lightbox. A guard
checks the real paint order and moves a badge that a theme overlay covers to a free
corner or below the image. Per-image overrides and CSS utility classes give theme
builders full control, markup a theme renders itself goes through the `transparai_label_media`
filter, and an optional script also labels images printed without an attachment 
ID and CSS backgrounds. Page-cache plugins are told to refresh whenever a label 
changes.

**Machine-readable AI labeling, structured data and SEO**

For labeled files TransparAI writes the IPTC digital source type (trainedAlgorithmicMedia,
or compositeWithTrainedAlgorithmicMedia for AI-edited media) as XMP into JPEG, PNG,
WebP and AVIF, every size variant included. Google documents this field and can 
show an “AI-generated” label in Google Image Search, so the disclosure travels with
the image wherever it is indexed. Each page additionally carries Schema.org JSON-
LD structured data (ImageObject, VideoObject, AudioObject and an Article node for
AI-written posts) with digitalSourceType both as the Schema.org enumeration and 
as the IPTC vocabulary URI, so search engines and AI crawlers get the declaration
without opening a file. All of it is server-rendered with no extra request and no
layout shift, so the SEO signals arrive without a Core Web Vitals cost. The same
declarations serve GEO (generative engine optimization): AI search and answer engines
such as Google AI Overviews, ChatGPT search and Perplexity weigh structured data
and provenance signals when they decide what to cite. Existing metadata is merged,
not replaced; unlabeling removes exactly what the plugin wrote; writes are atomic
and validated. Because image optimizers and thumbnail regeneration strip metadata,
every labeled file is fingerprinted and an hourly sweep restores missing declarations.

**Camera photos and human work**

Not every declaration says “AI”. Any media file can be declared as a camera photo(
digitalCapture) or as human digital work (digitalCreation), from the attachment 
details, in bulk, or with WP-CLI. The declaration ends any AI label or pending detection,
appears in the structured data, and is written into the file, but only where no 
other digital source type exists: a camera’s own declaration stays untouched. A “
Human made” badge is optional and off by default.

**AI-written text: disclosure levels per post**

Every post, page and public custom post type carries an AI level for its text: no
AI used, AI-assisted, AI-generated, or AI-generated and reviewed by a person. Set
it in the block editor sidebar, the classic meta box, Quick Edit or Bulk Edit; the
post list gets a sortable column and a filter, the AI Content screen sums it up 
per post type. AI levels show a configurable note ahead of the content, after it
or on both sides, as a block, an inline note, a dismissible banner, a badge or a
button that opens a dialog, plus an optional AI badge behind the post title. Five
blocks (AI Notice, AI Image Label, AI Systems Notice, AI Systems List, Chatbot AI
Notice) and the `[transparai_notice]` shortcode place every notice by hand; “only
where a block or shortcode is placed” switches the automatic output off. Reviewed
texts record the reviewer, the date and a fingerprint of the content, so a later
edit shows as “changed since review”. The note can go into excerpts and RSS feed
items, including a dc:description element and an optional [AI] prefix on feed titles.

**Chatbot disclosure**

Chatbot transparency is the Article 50 duty every visitor notices first: people 
must know when they talk to an AI system. TransparAI puts that notice into the first
message of the bot for AI Engine, next to the chat launcher for every other widget,
or as a line at the end of each page. Your answer decides whether it appears and
who answers in the chat; the plugin recognizes more than 40 chat and chatbot vendors
locally (plugins, theme snippets, registered scripts, your own browser as administrator)
and tells you what it found, but never switches the notice on from a finding alone,
because a live chat with a person behind it is not an AI system.

**Audit trail, compliance report, REST API, WP-CLI**

Every label, review decision, declaration and repair is recorded per file with time,
previous state, trigger and the editor’s name, plus a site log of settings changes,
scans, sweeps, bulk actions and declarations that the dashboard shows as recent 
activity. Export the whole library as a CSV audit list, or open the compliance report:
a print view with the readiness score, the assessment answers, the Article 4 checklist,
the AI systems in use, the state of every disclosure notice, the AI-written content,
the media audit list and the recent activity, sealed with a document hash over the
facts, the guidance basis and the stated limitations, ready for print-to-PDF. A 
REST API under `transparai/v1` exposes rows, per-file detail, every action and the
same report for headless setups and agency tooling; nothing in it is public. WP-
CLI covers scanning, labeling, declaring, auditing, the score, the assessment, the
AI systems inventory, the AI levels of posts and the report. Other plugins can label
media through an action, detection rules and the AI systems list are extensible 
via filters, WPML and Polylang are configured, and uninstalling cleans up across
a multisite network on request.

**Privacy by design**

The plugin runs entirely on your server: no accounts, no telemetry, no external 
requests, and the list of AI tools ships with the plugin instead of being fetched.
The only HTTP request it can make is the optional delivery check, which asks your
own site for one image to see whether your CDN strips the declaration. The interface
is available in English, German, French, Spanish, Italian and Dutch. Please also
read the Disclaimer section.

Contact: TransparAI@cms-admins.de

### For developers

Everything below is stable API surface; hooks and options use the `transparai_` 
prefix, meta keys `_transparai_`. Every shape and example lives in the GitHub README:
https://github.com/cmsadmins/TransparAI

**Meta:** attachment keys `_transparai_ai`, `_transparai_type`, `_transparai_source`,`
_transparai_generator`, `_transparai_confidence`, `_transparai_detected`, `_transparai_human`,`
_transparai_badge_pos`, `_transparai_history`, `_transparai_delivery` (REST-exposed,`
upload_files`); post keys `_transparai_content_ai`, `_transparai_content_responsible`,`
_transparai_content_review` (`edit_post`). **Options:** `transparai_settings`, `
transparai_compliance`, `transparai_systems`, `transparai_log`.

**Hooks:** `do_action( 'transparai_mark_ai', $id, 'My Generator' )` labels media
from your code, `echo apply_filters( 'transparai_label_media', $html )` badges the
AI images in markup your theme renders; filters `transparai_signatures`, `transparai_detection_result`,`
transparai_badge_html`, `transparai_badge_wrap_classes`, `transparai_notice_text`,`
transparai_notice_html`, `transparai_chatbot_vendors`, `transparai_chatbot_notice`,`
transparai_systems_registry`, `transparai_systems_notice`.

**Shortcode and blocks:** `[transparai_notice type="content|media|systems|chatbot"
style="block|inline|banner|badge|modal" text="" id=""]` and the five blocks (AI 
Notice, AI Image Label, AI Systems Notice, AI Systems List, Chatbot AI Notice) render
only what is declared. **REST** (`/wp-json/transparai/v1/`, authenticated): `GET/
media`, `GET|POST /media/{id}`, `POST /media/{id}/scan`, `GET /report` with `document_hash`,`
compliance` and `log`. **WP-CLI** (`wp transparai`): `scan`, `flag`, `unflag`, `
human`, `status`, `score`, `content`, `assessment`, `systems`, `systems-declare`,`
systems-undeclare`, `systems-visible`, `report`, `write-meta`, `verify-meta`, `verify-
delivery`. **Theme control:** container classes `trai-badge-top-left` to `trai-badge-
hidden` and `trai-badge-manual`, stacking via `--trai-badge-z`, colours via `--trai-
badge-bg`, `--trai-badge-fg` and `--trai-badge-opacity`.

### External services

None. The plugin makes no request to any external service and never sends media 
or site data anywhere. The list of AI tools it matches installed plugins against
is a file inside the plugin. The only HTTP request it can make is the optional delivery
check, which fetches one image from your own site to see whether a CDN strips the
declaration; it is off by default, runs only on click, and stops if the image is
served from another host.

### Privacy

TransparAI processes media files locally on your server and stores its results in
the WordPress database (post meta and a few options). The per-file history records
the user ID and display name of whoever labeled, confirmed, declared or dismissed
a file (last fifty events), a site log keeps the last 200 administrative events,
the self-assessment and the AI literacy checklist keep the name and date of the 
last save, and a post marked as reviewed stores the reviewer’s name and user ID,
which is shown publicly only when you enable it. Everything is removed on uninstall
with data removal enabled. The plugin collects, transmits and shares nothing and
sets no cookies.

### Disclaimer

TransparAI is a technical tool, not legal advice, and is provided “as is” without
warranty of any kind, to the extent permitted by law (GNU GPL v2, sections 11 and
12). The author makes no representation that using it makes your site compliant 
with the EU AI Act, the Digital Services Act or any other law; legal obligations
depend on your situation and remain your responsibility as the site operator. The
readiness score and the self-assessment reflect your own answers and the checks 
this plugin can perform; they are not a legal assessment. Detection is based on 
metadata embedded by generators: stripped files carry no signals, and detected metadata
is an indication, not proof. No function is guaranteed to run without error in every
environment. You use this plugin at your own risk; to the extent permitted by law,
the author accepts no liability for damages arising from its use.

## Screenshots

[⌊Dashboard with the readiness score, the open check, the five steps in order and
the counters⌉⌊Dashboard with the readiness score, the open check, the five steps
in order and the counters⌉[

Dashboard with the readiness score, the open check, the five steps in order and 
the counters

[⌊Media library grid: AI badges, the badge for media declared as not AI and the 
AI status filter⌉⌊Media library grid: AI badges, the badge for media declared as
not AI and the AI status filter⌉[

Media library grid: AI badges, the badge for media declared as not AI and the AI
status filter

[⌊Attachment details: label, detection evidence, the declaration in every file size
and the raw XMP packet⌉⌊Attachment details: label, detection evidence, the declaration
in every file size and the raw XMP packet⌉[

Attachment details: label, detection evidence, the declaration in every file size
and the raw XMP packet

[⌊Media list filtered to the review queue, with the AI column and the bulk actions⌉⌊
Media list filtered to the review queue, with the AI column and the bulk actions⌉[

Media list filtered to the review queue, with the AI column and the bulk actions

[⌊Front end: title badge, the note above an AI-written text and the badge on a generated
image⌉⌊Front end: title badge, the note above an AI-written text and the badge on
a generated image⌉[

Front end: title badge, the note above an AI-written text and the badge on a generated
image

[⌊Self-assessment: the six questions that decide which transparency duties apply⌉⌊
Self-assessment: the six questions that decide which transparency duties apply⌉[

Self-assessment: the six questions that decide which transparency duties apply

[⌊The duties that follow from the answers, plus the Article 4 AI literacy checklist⌉⌊
The duties that follow from the answers, plus the Article 4 AI literacy checklist⌉[

The duties that follow from the answers, plus the Article 4 AI literacy checklist

[⌊AI systems in use: detected plugins, a suggestion to declare and the visibility
for the visitor notice⌉⌊AI systems in use: detected plugins, a suggestion to declare
and the visibility for the visitor notice⌉[

AI systems in use: detected plugins, a suggestion to declare and the visibility 
for the visitor notice

[⌊Post list with the AI text column, the level filter and Quick Edit⌉⌊Post list 
with the AI text column, the level filter and Quick Edit⌉[

Post list with the AI text column, the level filter and Quick Edit

[⌊Block editor: the TransparAI panel with level, responsible person and review stamp⌉⌊
Block editor: the TransparAI panel with level, responsible person and review stamp⌉[

Block editor: the TransparAI panel with level, responsible person and review stamp

[⌊Settings: badge look with a live preview, alt text, the not-AI badge and the page
notice⌉⌊Settings: badge look with a live preview, alt text, the not-AI badge and
the page notice⌉[

Settings: badge look with a live preview, alt text, the not-AI badge and the page
notice

[⌊Setup in three steps: scan the library, choose the badge, decide about the files⌉⌊
Setup in three steps: scan the library, choose the badge, decide about the files⌉[

Setup in three steps: scan the library, choose the badge, decide about the files

[⌊Compliance report in print view with the document hash⌉⌊Compliance report in print
view with the document hash⌉[

Compliance report in print view with the document hash

[⌊The two dashboard widgets: readiness and numbers⌉⌊The two dashboard widgets: readiness
and numbers⌉[

The two dashboard widgets: readiness and numbers

[⌊AI images screen: library status, batched scan, audit export and the media lists⌉⌊
AI images screen: library status, batched scan, audit export and the media lists⌉[

AI images screen: library status, batched scan, audit export and the media lists

[⌊EU AI Act timeline and the activity log that records every change⌉⌊EU AI Act timeline
and the activity log that records every change⌉[

EU AI Act timeline and the activity log that records every change

## Blocks

This plugin provides 5 blocks.

 *   Chatbot AI Notice Tells visitors that an AI answers in the chat, as Article
   50 of the EU AI Act requires, with the wording from the TransparAI settings. 
   Put it on the contact page or next to the chat widget. Stays hidden while the
   chatbot question is unanswered or no AI answers.
 *   AI Systems List A list of the AI systems marked as visible in the TransparAI
   registry, each with its category. The building block for an AI transparency statement,
   kept in sync with the registry: a system you add or hide appears or disappears
   on every page that carries the list.
 *   AI Systems Notice One sentence naming the AI systems this site uses, taken 
   from the TransparAI registry: chatbots, recommendations, image generation, translation.
   For the imprint, the privacy policy or a transparency page. Shows only when at
   least one system is marked as visible.
 *   AI Image Label The label of one image, video or audio file from the media library:
   AI-generated, with the generator name when known, or Human made. Place it under
   a gallery, in a caption or next to a builder image the automatic badge does not
   reach. Shows only for labeled files.
 *   AI Notice Disclosure note for AI-written text, as the EU AI Act asks for: a
   block, an inline note, a dismissible banner, a badge or a button that opens a
   dialog, with the wording from the TransparAI settings. Shows only when the post
   has an AI level.

## Installation

 1. Install the plugin from the WordPress plugin directory (Plugins, Add New, search
    for “TransparAI”) or upload the ZIP, then activate it. The activation opens **TransparAI,
    Settings** with a three-step setup: scan the library, choose the badge look with
    a live preview, decide whether declarations are written into the files. Every step
    can be undone, and “Not now” hides the card for you until you open it again.
 2. New uploads are checked automatically from now on.
 3. Click **Scan new/unscanned media** (on the AI Images screen or in the setup) to
    go through your existing library in small batches, pausable at any time.
 4. Clear declarations are labeled right away; strong signals land in the review queue.
    Follow the **Open review queue** link and confirm or dismiss each item, single 
    or in bulk. A camera photo with Content Credentials shows up here on purpose; dismiss
    it once and it stays dismissed. Media you have already decided on yourself is reported
    as skipped in the scan summary and is never overruled.
 5. Open **TransparAI, Dashboard** for the readiness score: answer the six questions
    of the self-assessment, tick the Article 4 checklist, check the AI Systems screen
    and decide which systems visitors are told about.
 6. Adjust the badge under **Settings, Visible badge**, and if your theme prints images
    without an attachment ID (ACF URL fields, sliders) or uses CSS backgrounds, enable
    the extra option there.
 7. Single image sitting awkwardly? Open its attachment details and pick a **Badge 
    position** there: another corner, a caption line below the image, or no visible
    badge for that one image.

Everything else runs on its own: labeled files get the IPTC digital source type 
written into the file (verify with `exiftool -XMP-iptcExt:DigitalSourceType image.
jpg`), and the hourly sweep restores metadata that optimizers strip.

## FAQ

### Can the plugin detect every AI image?

No, and no plugin can. Detection relies on metadata that generators embed. Images
whose metadata was stripped (social media re-uploads, screenshots, clipboard pastes)
carry no signals. Invisible pixel watermarks such as Google SynthID can only be 
verified by the vendor’s own service; TransparAI does not pretend otherwise. Detected
metadata is an indication, not cryptographic proof. That is exactly why the review
queue exists.

### Which AI image generators are recognized?

Anything that leaves a standard marking in the file. In practice that covers ChatGPT
and DALL-E, GPT-Image, Google Gemini including Nano Banana output, Adobe Firefly
and Photoshop Generative Fill, Bing Image Creator, Midjourney, Stable Diffusion (
AUTOMATIC1111, ComfyUI, InvokeAI, SwarmUI, Fooocus), NovelAI, Flux by Black Forest
Labs, Leonardo.Ai, Ideogram, Recraft and Seedream, plus every tool that writes a
C2PA manifest or the IPTC digital source type, which is the direction the whole 
industry is moving in. New signatures can be added with a filter, no code fork needed.
TransparAI is an independent plugin and is not affiliated with any of these vendors,
nor with the makers of the plugins in its AI systems list.

### Does the plugin make my site compliant with the EU AI Act?

It gives you the technical building blocks Article 50 asks for (a visible disclosure
and a machine-readable marking) and documents your decisions, but whether and how
the EU AI Act or any other law applies to your site, and whether your specific setup
satisfies it, is a legal question only you (or your lawyer) can answer. The readiness
score is a self-check, not a verdict. See the Disclaimer section.

### What does the readiness score mean?

It is the share of checks that are done, each check being something the plugin can
verify in its own state: AI-written posts carry a level (or you declared that none
exist), labeled media exist and nothing waits in the review queue, the chatbot question
is answered, the AI systems are inventoried with a visibility decision, and the 
self-assessment and Article 4 checklist are complete. 100 means every technical 
building block is in place and documented. It does not mean your site is compliant;
the Disclaimer applies.

### How does the self-assessment work?

Six yes-or-no questions about how your site uses AI: chatbot, AI-written text, AI
images, personalisation, translation and synthetic media. The answers list the obligations
likely to apply, with the article of the EU AI Act and the plugin page that addresses
each one. Answers are stored on your site with the name of the person who saved 
them, are editable any time and appear in the compliance report.

### What is the Article 4 AI literacy checklist?

Article 4 asks providers and deployers for measures, as far as they can, toward 
a sufficient level of AI literacy of the people who operate or use AI systems on
their behalf; it prescribes no training format or certificate. The five items are
the measures that usually serve as evidence: staff know which AI tools are in use,
an internal policy is written down, people who work with AI tools have had guidance,
a review date is set, and the context of use and the people affected were considered.
Tick what applies; the checklist counts toward the readiness score and is printed
in the compliance report with the name and date of the last save.

### How are AI systems detected without external requests?

A list of known AI plugins ships inside TransparAI and is compared with your installed
plugins on your server, the same way the chatbot detection works. The list updates
with the plugin, nothing is fetched and nothing about your site is sent anywhere.
Active plugins the list does not know are suggested when their own name or description
mentions AI, and any other system can be declared by hand. Developers can extend
the list with the `transparai_systems_registry` filter.

### Can I export a compliance report?

Yes. The print view covers the readiness score, the assessment answers, the Article
4 checklist, the detected and declared AI systems, the state of every disclosure
notice, the AI-marked content, the media audit list and the recent activity, together
with a document hash over the facts, so two reports of an unchanged site carry the
same hash. `GET /wp-json/transparai/v1/report` returns the same record as JSON, 
and the CSV export lists the media audit rows.

### Is this legal advice?

No. TransparAI is a technical tool, not legal advice, and using it creates no guarantee
of compliance with any regulation. See the Disclaimer section.

### Does the plugin change my image files?

Only when a file is labeled and the metadata option is enabled. The plugin then 
writes a small XMP block into the JPEG, PNG, WebP or AVIF file and its size variants.
The image pixels are untouched. Files are replaced atomically and validated first.
Unlabeling removes exactly the metadata this plugin wrote; foreign metadata is never
touched.

### Where can I see what was written into a file?

Open the attachment details and click “Show file metadata”. It lists every file 
of that attachment with its state (declaration present, missing, or a format that
cannot carry one), the digital source type currently declared, the detection evidence
in full, the recorded history and the raw XMP packet of the main file. Nothing is
written while you look; it is a read of the files as they are on disk right now.

### Does the marking survive my CDN?

Not always, and that is worth checking. Image optimizers at the edge, Cloudflare
Polish and Jetpack Photon among them, re-encode images while delivering them and
drop every metadata block in the process. The file on your server stays perfect 
while visitors and search engines receive a bare image, and nothing in WordPress
shows it. Enable the delivery check in the settings, then press “Check delivery”
on a labeled image: the plugin fetches that image from your own public URL and tells
you whether the declaration arrived. If it did not, the fix is in your CDN configuration(
keep metadata, or exclude labeled images from re-encoding), not in this plugin.

### Does AI labeling affect my SEO and GEO?

It gives search engines exactly the signals they document. Google reads the IPTC
digital source type that TransparAI writes into the image files and can show an “
AI-generated” label in Image Search; the Schema.org JSON-LD in the page carries 
the same declaration for search engines and AI crawlers that never open the file.
Everything is rendered server-side, adds no request and shifts no layout, so there
is no Core Web Vitals cost. Whether and how a search engine treats labeled images
in ranking is its decision, not something a plugin can promise; what the labeling
avoids is the opposite risk, an undisclosed AI image that a platform or a competitor
points out later. For GEO, generative engine optimization, the same structured data
tells AI search and answer engines where your images and texts come from, which 
is part of what they weigh when they cite a source.

### Does the plugin detect my chatbot?

It recognizes more than 40 chat and chatbot vendors by their plugin directory, their
script hosts, their JavaScript globals and their widget markup, entirely locally.
The finding shows on the settings page with a hint whether a bot or people usually
answer there. You decide whether the notice appears; the plugin never switches it
on from a finding alone, because a live chat with a person behind it is not an AI
system.

### Can I also label AI-written text?

Yes. Every post and page has an AI level in the editor sidebar (no AI used, AI-assisted,
AI-generated, AI-generated and reviewed), also available in Quick Edit and Bulk 
Edit of the post list. AI levels show a configurable note ahead of or after the 
content, or on both sides; the “AI Notice” block and the `[transparai_notice]` shortcode
place it by hand instead, exclusively so when the position is set to “only where
a block or shortcode is placed”. Reviewed texts record the reviewer, the date and
a fingerprint of the content, so a later edit is visible as “changed since review”.
Optionally the note goes into excerpts and RSS feed items too. There is also an 
optional site-wide note at the end of pages that contain labeled media.

### Can I change how the AI notice looks?

Yes. Under Settings, AI-written text you choose between a block on its own line,
an inline note inside the text, a dismissible banner, a small badge and a modal (
a button that opens a dialog), and whether it appears ahead of the content, after
it, on both sides or only where a block or shortcode is placed. Two further options
add a small AI badge to the post title in lists and archives and an [AI] prefix 
to feed item titles. Dismissing a banner hides it for that page view only; nothing
is stored in the visitor’s browser.

### Which blocks does the plugin add?

Five, all rendered on the server so a wording change in the settings reaches every
placed block at once, and all silent when nothing is declared. “AI Notice” places
the note of the current post in any of the five styles, also several times per post
or in a block theme template, where it replaces the automatic note. “AI Image Label”
shows the label of one file from the media library, AI-generated with the generator
name or Human made, for galleries, captions and builder images the automatic badge
does not reach. “AI Systems Notice” is the one-sentence notice naming the visible
AI systems, “AI Systems List” the same systems as a list with categories for a transparency
statement. “Chatbot AI Notice” tells visitors that an AI answers in the chat. Every
block has a shortcode twin in `[transparai_notice]`.

### Why was a real camera photo put into the review queue?

Modern cameras embed C2PA Content Credentials into real photos. A C2PA manifest 
alone therefore never auto-labels. It lands in the review queue unless the manifest
declares an AI source. Dismiss it with one click; dismissed files are not queued
again.

### Which page builders and editors are supported?

The visible badge covers the block editor (every image-bearing block incl. cover,
media-text, galleries, inline images in text, video and audio), the classic editor,
template images, text widgets, Elementor free and Pro (image, galleries, carousels,
slides, image box, hotspot, flip box, call to action, posts, Theme Builder), WPBakery
Page Builder (single images, galleries, carousels, row and column backgrounds, parallax,
grids) and Bricks Builder (every element that prints an image tag). Inside the builders’
own editing screens badges are deliberately not injected. Markup a theme renders
itself can be passed through `apply_filters( 'transparai_label_media', $html )`.
For images a theme prints without an attachment ID (ACF URL or array fields) and
for CSS backgrounds enable the option under Extras: a small script matches those
images against your labeled files. The machine-readable XMP labeling is independent
of any builder and always works.

### Can the badge match my design?

Yes. Under Settings, Visible badge you pick a background colour, a text colour and
an opacity next to the four styles. Both colour fields are empty out of the box,
and while they are empty the badge looks exactly as it always has, so an update 
changes nothing on a site that is happy with the neutral look. The text colour also
draws the border, which is what the outline style and the “Human made” badge use;
outline has no fill of its own, so a background colour does not show there. If you
would rather set the colours in your stylesheet, the three CSS custom properties`--
trai-badge-bg`, `--trai-badge-fg` and `--trai-badge-opacity` do the same job and
can be scoped to a single container.

### Will my own colours make the badge hard to read?

The settings tell you before your visitors find out. A traffic light next to the
colour fields rates the contrast between the badge text and its fill while you pick,
against the WCAG threshold of 4.5 to 1 that applies at the badge’s text size, and
it spells the verdict out in words rather than leaving the colour to say it. Because
a badge fill is see-through (the dark style is 70 per cent by default) and lands
on photos nobody can predict, the rating assumes the worst case: the badge is measured
on a white photo and on a black one, and the poorer of the two results is the one
you see. A disclosure only works if people can read it, and a light badge colour
on white text is the quickest way to lose that.

### My theme puts overlays on images; does the badge disappear under them?

Usually not, and never silently. Badges sit above typical theme layers (hover effects,
zoom icons, sale badges), and a small script additionally checks the real paint 
order: a badge that is still covered is raised, moved to a free corner or, as the
last resort, shown as a caption line below the image (this guard can be turned off
under Visible badge, Extras). For manual control, give any container one of the 
utility classes `trai-badge-top-left`, `trai-badge-top-right`, `trai-badge-bottom-
left`, `trai-badge-bottom-right`, `trai-badge-below` or `trai-badge-hidden`, or 
pick a position for a single image in its attachment details (“Badge position”).
Both ways switch the guard off for those badges, and `trai-badge-manual` does the
same without changing the position, for the rare case where the guard misjudges 
your layout. Hiding the visible badge of one image never touches the machine-readable
file metadata or the structured data in the page; that part of the disclosure stays
intact.

### Does the plugin phone home?

No. There are no external requests of any kind. All detection happens by reading
file bytes locally on your server, and the AI systems list is a file inside the 
plugin.

### Does the plugin process personal data?

It records who did what inside your own WordPress: the per-file history and the 
site log store the user ID and display name of whoever labeled, confirmed, declared
or dismissed something, the assessment and the checklist store the name and date
of the last save, and a post marked as reviewed stores the reviewer’s name, which
is shown publicly only when you enable it. Nothing leaves the server, no cookies
are set, and everything is removed on uninstall with data removal enabled. See the
Privacy section.

### What happens when I uninstall the plugin?

By default your labels stay in the database (reinstalling restores them) and metadata
already written stays in the files. If you prefer a full cleanup, enable “Delete
all plugin data” in the settings before uninstalling. Unlabel files first if you
also want the in-file metadata removed.

### Can I label media programmatically?

Yes. The meta key `_transparai_ai` is registered for the REST API, WP-CLI commands
cover bulk work, and other plugins can call `do_action( 'transparai_mark_ai', $attachment_id,'
Generator name' )`.

### Where do I get help?

Post in the support forum here on wordpress.org, or write to TransparAI@cms-admins.
de. The plugin is built and maintained by Patrick Schlesinger (cms-admins.de).

## Reviews

There are no reviews for this plugin.

## Contributors & Developers

“TransparAI: EU AI Act Compliance, AI Disclosure & AI Image Detection” is open source
software. The following people have contributed to this plugin.

Contributors

 *   [ Patrick Schlesinger ](https://profiles.wordpress.org/contexlabs/)

“TransparAI: EU AI Act Compliance, AI Disclosure & AI Image Detection” has been 
translated into 2 locales. Thank you to [the translators](https://translate.wordpress.org/projects/wp-plugins/transparai/contributors)
for their contributions.

[Translate “TransparAI: EU AI Act Compliance, AI Disclosure & AI Image Detection” into your language.](https://translate.wordpress.org/projects/wp-plugins/transparai)

### Interested in development?

[Browse the code](https://plugins.trac.wordpress.org/browser/transparai/), check
out the [SVN repository](https://plugins.svn.wordpress.org/transparai/), or subscribe
to the [development log](https://plugins.trac.wordpress.org/log/transparai/) by 
[RSS](https://plugins.trac.wordpress.org/log/transparai/?limit=100&mode=stop_on_copy&format=rss).

## Changelog

#### 1.1.4

 * The visible badge takes your own background colour, text colour and opacity next
   to the four styles it already had. Both colour fields start out empty, and while
   they are empty the badge looks exactly as before, so nothing changes on a site
   that keeps the neutral look.
 * A contrast rating next to the colour fields rates your choice against the WCAG
   threshold of 4.5 to 1 while you pick and says in words whether the badge stays
   readable, so a disclosure never disappears into its own colour.

#### 1.1.3

 * The first-run setup card no longer repeats the badge and file settings that the
   tabs below it already own. Its second and third step open the matching section
   instead, so every option exists once on the screen and only one form writes it.

#### 1.1.2

 * Ten more languages ship with the plugin: Polish, Portuguese, Swedish, Danish,
   Finnish, Czech, Romanian, Greek, Hungarian and a formal German variant, next 
   to the existing German, French, Spanish, Italian and Dutch.
 * The plugin name and the readme are translated for every one of those languages,
   so the plugin directory shows them in the reader’s own language.

#### 1.1.1

 * Compliance module: top-level “TransparAI” menu with Dashboard, Assessment, AI
   Systems, AI Content, AI Images and Settings; readiness score with traffic light
   over five checks; six-question self-assessment with the Article 4 AI literacy
   checklist on the same screen; EU AI Act timeline; two WordPress dashboard widgets(
   readiness and numbers); `wp transparai score`, `content`, `assessment`, `systems`
   and `report`.
 * AI systems registry: a bundled list of 130 wordpress.org plugins is matched on
   your server against the installed plugins, chatbots and manual declarations included;
   per-system visibility for a visitor notice as footer line, badge or dismissible
   banner. Nothing is fetched.
 * Five server-rendered blocks: AI Notice, AI Image Label, AI Systems Notice, AI
   Systems List and Chatbot AI Notice, each with its own block.json; shortcode type`
   chatbot`; new setting “only where a block or shortcode is placed” for the text
   note and the systems notice.
 * Text note styles block, inline, banner, badge and modal, position “ahead of and
   after the content”, optional title badge and [AI] feed title prefix; Bricks Builder
   image badges; filter `transparai_label_media` for markup a theme renders itself.
 * Report, print view and `GET /report` carry the compliance summary and the site
   log; the document hash covers the facts only.
 * Settings page under the new menu with tabs; footer notices print as one paragraph;
   page notice and structured data no longer depend on the visible badge; icon-only
   and mini badges keep their short label; new defaults for alt text, feed note,
   chatbot output and systems notice (stored settings are not changed).

#### 1.0.3

 * AI-written text: a disclosure level per post (no AI, AI-assisted, AI-generated,
   AI-generated and reviewed) in the block editor sidebar, the classic meta box,
   Quick Edit and Bulk Edit, with a sortable list column and filter. Reviewed texts
   record reviewer, date and a content fingerprint that flags later edits. New “
   AI notice” block and `[transparai_notice]` shortcode; the note can go into excerpts
   and RSS feeds (dc:description).
 * Camera photos and human work: media can be declared as digitalCapture or digitalCreation,
   in the details, in bulk or via `wp transparai human`; written into files that
   carry no other digital source type, shown in the structured data, optional “Human
   made” badge.
 * WooCommerce: the badge follows variation swaps, is re-created inside the zoom
   and PhotoSwipe lightbox and the core image lightbox, stays out of WooCommerce
   e-mails; HPOS compatibility declared.
 * REST API `transparai/v1` (media rows, per-file detail, actions, re-check, report),
   authenticated only.
 * Audit trail: fifty events per file with previous state, trigger and editor name;
   site log; CSV export with history, BOM and formula guard; print view with document
   hash, guidance basis and limitations; paginated exports.
 * First-run setup with three undoable steps; chatbot disclosure with local detection
   of more than 40 vendors and the notice as first bot message, next to the widget
   or in the footer.
 * Structured data: Article node for AI-written posts, stable ids, digitalSourceType
   as Schema.org enumeration and IPTC URI.

#### 1.0.2

 * Fixed: the library scan stopped after its first batch on some sites; large PNG
   files with metadata after the image data were reported as clean; images from 
   Bing Image Creator, Microsoft Designer and Copilot were only queued instead of
   labeled.
 * The file inspection says whether the attachment is labeled at all.

#### 1.0.1

 * Fixed: the hourly integrity sweep was not scheduled on sites created in a multisite
   network after activation.
 * Per-file history, CSV audit export, file inspection with the raw XMP packet, 
   optional delivery check for CDNs that strip metadata, translations for German,
   French, Spanish, Italian and Dutch.

#### 1.0.0

 * Initial release: C2PA, XMP/IPTC, PNG-chunk, EXIF, MP4 and MP3 detection with 
   a camera rule and a review queue; visible badge with overlay guard, per-image
   override and CSS utility classes; IPTC digital source type written as XMP into
   JPEG, PNG, WebP and AVIF with auto-repair; Schema.org JSON-LD; page-cache purging;
   WP-CLI; integrations for AI Engine, AI Power, Elementor AI and WordPress AI; 
   no external requests.

## Meta

 *  Version **1.1.4**
 *  Last updated **2 days ago**
 *  Active installations **Fewer than 10**
 *  WordPress version ** 6.2 or higher **
 *  Tested up to **7.1.1**
 *  PHP version ** 7.4 or higher **
 *  Languages
 * [Czech](https://cs.wordpress.org/plugins/transparai/), [English (US)](https://wordpress.org/plugins/transparai/),
   and [Swedish](https://sv.wordpress.org/plugins/transparai/).
 *  [Translate into your language](https://translate.wordpress.org/projects/wp-plugins/transparai)
 * Tags
 * [ai compliance](https://ido.wordpress.org/plugins/tags/ai-compliance/)[ai disclosure](https://ido.wordpress.org/plugins/tags/ai-disclosure/)
   [ai transparency](https://ido.wordpress.org/plugins/tags/ai-transparency/)[c2pa](https://ido.wordpress.org/plugins/tags/c2pa/)
   [eu ai act](https://ido.wordpress.org/plugins/tags/eu-ai-act/)
 *  [Advanced View](https://ido.wordpress.org/plugins/transparai/advanced/)

## Ratings

No reviews have been submitted yet.

[Your review](https://wordpress.org/support/plugin/transparai/reviews/#new-post)

[See all reviews](https://wordpress.org/support/plugin/transparai/reviews/)

## Contributors

 *   [ Patrick Schlesinger ](https://profiles.wordpress.org/contexlabs/)

## Support

Got something to say? Need help?

 [View support forum](https://wordpress.org/support/plugin/transparai/)