Priskribo
Label your AI-generated images and meet EU AI Act Article 50 on WordPress, free. If your site publishes AI images, from 2 August 2026 you must disclose them. AIM Transparency adds a clear, visible “AI-generated” badge, embeds machine-readable provenance in the image file (IPTC/XMP), and outputs schema.org JSON-LD, on any theme, with no account and no data leaving your site.
The EU AI Act (Regulation (EU) 2024/1689), Article 50, requires transparency for AI-generated and AI-manipulated media from 2 August 2026. A website owner who displays AI images is a deployer, whose duty is a clear, human-visible disclosure at first exposure. Embedding machine-readable provenance in the file is best practice (and is what search engines and detection tools read to recognise AI images).
AIM Transparency gives you both, on any theme:
- Flag: mark an image as AI-generated, AI-edited or algorithmic from the Media Library (single, bulk action, and an “AI” column), or record human provenance (Camera Photo, Human Created, Composite) with embedded metadata and no badge by default.
- Visible badge: a configurable “AI-generated” badge renders on the front end across galleries, portfolio grids, masonry, featured images, content images and block/FSE themes. An optional Universal badge coverage mode extends to custom themes that hand-write their markup.
- Machine-readable metadata: writes the IPTC
Digital Source Type(Iptc4xmpExt:DigitalSourceType) into the file’s XMP, plus schema.org JSON-LD (ImageObject+IPTC:DigitalSourceType) on the page. - Compliance record: export a CSV audit trail of every disclosed image (file, type, disclosure label, embedded status and IPTC URI), plus your Article 4 AI-literacy checklist as evidence, for your own EU AI Act records. Free.
- Readiness score: a free EU AI Act readiness view that combines your Article 50 image disclosure (scored automatically from your settings) with an Article 4 AI-literacy checklist you tick off and document with evidence notes. Article 4 (AI literacy) has applied since 2 February 2025, ahead of the Article 50 deadline.
- AI-assistant (chatbot) disclosure: not just images. If your site runs a chatbot, an
[aicl_ai_notice]shortcode (and an optional floating notice) tells visitors when they are interacting with an AI, not a human, covering the EU AI Act Article 50(1) duty as well. - Detection: a free dashboard card, AI on your site, that surfaces AI you have not disclosed yet. It samples your unflagged Media Library images and lists any whose file provenance reads as AI-generated (an embedded IPTC Digital Source Type, or a known generator signature such as Midjourney, Stable Diffusion or Adobe Firefly), and it names the AI systems running on your site, matched against a curated registry of 671 AI tools (chatbots that fall under Article 50(1), plus image, content, audio, video and translation generators under 50(2)). It also reads your own front page to spot AI widgets running on it. Everything stays on your server: nothing is sent to any third party, and it never claims a specific image is AI. One-click bulk auto-flagging of what it finds is a Pro add-on.
A modern dashboard (under the top-level AIM Transparency menu) shows live coverage stats, the badge preview, the embedding-engine status, and settings, and follows your WordPress admin color scheme.
AIM Transparency is built by itisnothuman, a small independent studio (https://itisnothuman.com).
Who needs this
Anyone publishing AI-generated or AI-edited visuals to an EU audience: bloggers, news and magazine sites, agencies building client sites, WooCommerce and other shops using AI product imagery, and portfolios. Being a small site is not, by itself, an exemption, and the Act reaches non-EU sites whose content is seen by EU users.
IPTC vocabulary used (the same value C2PA uses, so it is forward-compatible):
- AI-generated:
http://cv.iptc.org/newscodes/digitalsourcetype/trainedAlgorithmicMedia - AI-edited/composite:
http://cv.iptc.org/newscodes/digitalsourcetype/compositeWithTrainedAlgorithmicMedia - Algorithmic (non-AI):
http://cv.iptc.org/newscodes/digitalsourcetype/algorithmicMedia - Camera photo:
http://cv.iptc.org/newscodes/digitalsourcetype/digitalCapture - Human created (non-generative tools):
http://cv.iptc.org/newscodes/digitalsourcetype/digitalCreation - Composite of non-AI elements:
http://cv.iptc.org/newscodes/digitalsourcetype/composite
File embedding uses exiftool when present (JPEG/PNG/WebP/GIF/TIFF); otherwise a built-in pure-PHP writer handles JPEG and PNG.
Optional, off by default: an opt-in AI Transparency Directory lets you list your site publicly as one that discloses AI content. Nothing is shared without your explicit consent, and you can remove your listing anytime.
Disclaimer: this plugin is tooling to help meet Article 50 transparency obligations. It is not legal advice. Whether content is in scope (e.g. what counts as a “deepfake”), your deployer status, and the wording of your disclosure remain your responsibility.
Shortcodes. Place a disclosure anywhere shortcodes run, in a post, a page, a widget or a block template:
[aicl_disclosure]withtype(ai-generated,ai-edited,ai-assistedorchatbot) andstyle(inline,badgeorbanner), plus an optionaltextoverride.[aicl_ai_notice]for the chatbot notice that tells visitors they are talking to an AI.
A free site checker. Not sure what AI is already running on your site? Paste your URL into the free checker at https://aimtransparency.com/checker and it will list the chatbots and generators it finds, grouped by the article that applies. No signup, and it reads only your pages’ public code.
Links. Home and docs: https://aimtransparency.com . Guides: https://aimtransparency.com/guides/ . Product Hunt: https://www.producthunt.com/products/aim-transparency . Built by https://itisnothuman.com
External services
This plugin can connect to the AIM Transparency service at directory.aimtransparency.com, operated by the plugin’s developer. Every connection is optional and user-initiated: nothing is sent on install, on activation, or during normal use.
-
AI Transparency Directory (opt-in, off by default). If you opt in from the dashboard, the plugin sends your site URL, site name, plugin and WordPress versions, the number of images you have labeled, an optional contact email, your consent version/time, and a one-time verification token to
https://directory.aimtransparency.com/api/register, so your site can be listed publicly as one that discloses AI content. The service then makes a single request back to a token endpoint on your site to verify you control it. You can remove your listing at any time, which deletes the stored data. -
Pro waitlist (sent only when you submit the form). If you enter your email in the optional “notify me about Pro” form, that email is sent to
https://directory.aimtransparency.com/api/waitlistso the developer can email you about the Pro add-on, and is stored only for that purpose.
The plugin makes no other external requests. The iptc.org, schema.org, ns.adobe.com and w3.org URLs in the code are standard metadata vocabulary identifiers written into your files and pages; they are not network requests.
Privacy policy: https://aimtransparency.com/privacy
Build
All of the plugin’s PHP and its front-end scripts (assets/js/*.js) are hand-written, human-readable source with no build step. The one exception is the admin dashboard, a small React + TypeScript app whose compiled bundle ships as dashboard/assets/app.js and dashboard/assets/app.css.
The complete, human-readable source of that bundle is included in this package at dashboard/src/ (a standalone Vite + React + TypeScript project: src/*.tsx, package.json, vite.config.ts, tsconfig.json). To rebuild, run npm install then npm run build inside dashboard/src/, and copy the resulting dist/assets/app.js and app.css into dashboard/assets/. Step-by-step notes are in docs/BUILD.md, also included.
Third-party libraries compiled into the bundle: React 18 and ReactDOM (MIT, https://github.com/facebook/react), lucide-react icons (ISC, https://github.com/lucide-icons/lucide), built with Vite (MIT). The bundled Geist / Geist Mono fonts are under the SIL OFL 1.1 (license text ships alongside them in dashboard/assets/fonts/). The badge artwork in assets/eu-icons/ is the European Commission’s official AI-content labelling icon set (© European Union, reused under CC BY 4.0 per Commission Decision 2011/833/EU; source, terms and modification notes in assets/eu-icons/LICENSE.txt). The sample scenes in dashboard/assets/scenes/ are first-party artwork created for this plugin (AI-generated, and labelled as such where shown), licensed with the plugin under the GPL.
Ekrankopioj











Instalo
- Upload the plugin to
/wp-content/plugins/, or install it from the Plugins screen in wp-admin. - Activate the plugin.
- Open the AIM Transparency menu, flag images in the Media Library (single, bulk action, or the per-image control), and configure the badge in Settings. The badge and machine-readable metadata are on by default; switch the badge to the official EU AI-content icons in Badge settings if you prefer them.
OD
-
Is it really free?
-
Yes, everything in this plugin is fully functional, nothing is locked. Flagging, the visible badge with all its styles and shapes (including the click-to-disclose modal and a custom logo), the in-dashboard media library, IPTC/XMP embedding for every supported format, JSON-LD, the AI-assistant notice, the AI-on-your-site detection card, and the CSV compliance export are all free. A separate, optional AIM Transparency Pro add-on (sold on our site, not hosted here) adds its own features on top: automatic flagging on upload, a library scanner (strip-guard plus retroactive discovery of provenance your files already declare), additional report export formats (a print-ready report you can save as PDF, plus JSON, Markdown & TXT), and a WooCommerce gallery cover for themes that replace WooCommerce’s own gallery template.
-
Does the badge satisfy the law on its own?
-
The visible badge addresses the deployer’s human-visible disclosure (Art. 50(4)); the embedded metadata addresses machine-readability. Both are on by default.
-
Will it work with my theme?
-
It hooks WordPress’s own image and template filters, including
render_blockfor block/FSE themes, so any theme using standard functions is covered. For themes that hardcode<img>tags, enable Universal badge coverage in Settings. -
Will it modify my files?
-
When file embedding is on, it writes XMP into flagged image files (and every generated size). It is idempotent. Turn it off to use the visible badge + JSON-LD only.
-
My host has no exiftool.
-
JPEG and PNG are still marked by the built-in PHP writer. WebP and other formats need exiftool; the Metadata screen shows your current capability.
-
What are the shortcodes for?
-
Disclosure is not only for images.
[aicl_disclosure]places a labelled notice anywhere shortcodes run, so you can disclose AI-assisted writing, a generated hero image, or a chat widget in your own words and in the exact spot you choose. Pick atype(ai-generated, ai-edited, ai-assisted, chatbot) and astyle(inline, badge, banner).[aicl_ai_notice]is the dedicated chatbot notice. -
Does it detect chatbots as well as images?
-
Yes. The Detection card matches your site against a registry of 671 AI systems and separates them by duty: chatbots and assistants fall under Article 50(1), which asks you to tell visitors they are talking to an AI, while image and content generators fall under 50(2), which asks you to label the output. It reports which tools are present, not that any specific image or message is AI.
-
Does Detection send my site anywhere?
-
No. It reads your active plugin list and fetches your own front page over a local loopback request, both on your server. Nothing is sent to any third party, and the result is cached so it does not run on every page load.
-
Can I check a site before installing anything?
-
Yes. The free checker at https://aimtransparency.com/checker scans any URL you paste and lists the AI systems it finds. It reads public page code only, never your files.
Pritaksoj
There are no reviews for this plugin.
Kontribuantoj k. programistoj
“AIM Transparency” estas liberkoda programo. La sekvaj homoj kontribuis al la kromprogramo.
KontribuantojTraduki “AIM Transparency” en vian lingvon.
Ĉu interesita en programado?
Browse the code, check out the SVN repository, or subscribe to the development log by RSS.
Ŝanĝprotokolo
1.2.9
- Fix: on a WooCommerce variable product, choosing a variation swapped the picture but left the previous image’s disclosure on it. A photograph could end up wearing an “AI Generated” badge, and an AI variation could end up with none. The badge now follows the image: WooCommerce publishes each variation, so the plugin adds its verdict there and the browser re-decides whenever the picture changes.
- Fix: the dashboard under-reported large libraries. Figures were gathered from a bounded page of attachments, so a site past that bound saw a smaller flagged count than it really had, and disclosure coverage was calculated over the truncated set. Totals are now aggregated in the database and are correct at any size. If your numbers jump after updating, the new ones are the true ones.
1.2.8
- Fix: the official EU mark on a disclosure notice rendered squashed. The Commission’s set has a square mark and two wider lockups that already spell out their own label; the notice now always uses the square one, undistorted, since the sentence beside it is already saying the same thing.
1.2.7
- New: a Shortcodes panel in the dashboard, under Disclosure. Pick the type, the style, your own wording, colours and mark, watch it render, and copy the finished shortcode. The shortcodes were previously documented but invisible in the plugin.
- New:
[aicl_disclosure]takesbgandcolor, so a notice can match your theme instead of always being the default near-black pill. A pair below the WCAG AA minimum of 4.5:1 is rejected and the default renders instead, because a disclosure nobody can read is not a disclosure. - New:
markchooses the glyph:aim(the built-in mark),eu(the official European Commission AI-content icon for the matching source type), ornone. Alogoattribute places your own image beside the mark, never instead of it. - Improvement: each source type has its own icon in the dashboard lists (camera, pen, layers, shapes) rather than one cog standing in for everything that is not AI.
- Fix: the toggle control centres its knob correctly on both themes.
1.2.6
- New: the dashboard has been redesigned. Every screen is now a single sheet divided by hairlines instead of a grid of separate cards, so Overview reads top to bottom: your readiness score, the figures behind it, what is running on your site, then your library. Readiness gained a numbered Article 4 checklist with proper evidence fields, Media shows each image’s disclosure state at a glance, and Upgrade sets out plainly what is free and what Pro adds.
- New: Detection now recognises 671 AI systems, up from a short list of image tools. It separates chatbots and assistants (Article 50(1)) from image and content generators (Article 50(2)), so you can see which duty applies to what.
- New: reusable disclosure shortcodes.
[aicl_disclosure]places an AI notice anywhere shortcodes run, with a type (generated, edited, assisted or chatbot) and a style (inline, badge or banner).[aicl_ai_notice]covers the chatbot case. - Improvement: Detection also reads your own front page, so AI widgets that load in the browser are found, not just plugins on disk. It stays on your server; nothing is sent to a third party.
- Improvement: uploading an image refreshes the Detection result straight away instead of waiting for the cache to expire.
- Improvement: clearer wording throughout the dashboard, and a refreshed getting-started screen in both the Neo and Classic themes.
1.2.5
- Improvement: the getting-started screen has fresh artwork that matches your Neo or Classic dashboard theme, in a cleaner full-bleed layout.
- Improvement: the Detection card is more reliable. Re-scanning clears resolved warnings right away, it respects images you have marked as human-made instead of re-flagging them, and it lists AI-capable plugins by their real names.
- Improvement: clearer, more natural wording across the dashboard and the getting-started screen.
- Fix: the dashboard now keeps your chosen theme (Neo or Classic) consistent everywhere, including the getting-started screen.
1.2.4
- New: a Detection card on the dashboard that surfaces AI you have not disclosed yet. It finds images in your library whose files read as AI-generated (a declared source type, or a known generator name like Midjourney, DALL·E or Firefly) but are not flagged, and lists active plugins that can generate AI images. Everything is computed locally, with no external requests.
1.2.3
- New: a one-screen welcome after activation that walks you to your first flagged image: pick an image, choose how it was made, and see it disclosed straight away. Reopen it any time from Transparency > Getting started.
- Maintenance: minor internal hardening and housekeeping.
1.2.2
- Improvement: the Pro library scan now runs to completion from one click: the dashboard processes the library in batches with a live progress bar (inspected / adopted / remaining) and a cancel button, instead of stopping after one pass.
- Improvement: the scan result now reports what discovery found (images adopted from provenance already declared inside the files), alongside the strip-guard counts.
- i18n: the disclosure modal footer, its close button and the badge screen-reader fallback are now translatable.
1.2.1
- New: human-provenance source types: flag images as Camera Photo (
digitalCapture), Human Created (digitalCreation, e.g. 3D renders or digital art made without generative AI) or Composite (composite, a non-AI mix such as photos + renders). Each embeds the current IPTC Digital Source Type into the file and the page JSON-LD, with no visible badge by default: honest provenance for human-made work, not just AI labels. (An optional visible badge for these types is available with the Custom badge style.) - Improvement: embedding is now idempotent: files that already carry the exact Digital Source Type value (for example C2PA-signed camera captures) are left byte-for-byte untouched.
- Improvement: source-type names and the visitor-facing disclosure texts are now translatable.
- Fix: images whose badge is hidden (e.g. the Algorithmic type) now correctly emit their machine-readable JSON-LD, as the settings always described.
- Accessibility: custom-style badges on non-AI types no longer announce “artificially generated” to screen readers.
1.2.0
- New: a fresh default dashboard style (“Neo”), with a one-click toggle back to the original monochrome look, in Settings > Appearance or the palette button in the top bar. Both styles support light and dark mode. Fonts are bundled locally (Inter + Bricolage Grotesque, SIL OFL); the plugin still makes no external requests.
- New: the badge live preview now demonstrates the badge on bundled sample images (our own AI-generated artwork, labelled as such), with a small slider to switch scenes. Docs and Support links added to the dashboard sidebar.
1.1.0
- New: AI-assistant (chatbot) disclosure for EU AI Act Article 50(1): tell visitors when they are interacting with an AI rather than a human. Drop the
[aicl_ai_notice]shortcode into any page with a chat UI, or enable the optional floating notice that appears when a known chat widget is detected. Configurable disclosure text and position.
1.0.0
- Initial release: media flag, bulk actions, visible badge across Enfold/standard/block themes, optional universal badge coverage, IPTC/XMP embedding (exiftool + pure-PHP JPEG/PNG), JSON-LD, free CSV compliance export, React dashboard, opt-in transparency directory.
