Practical guide · last reviewed August 2026
The short version
- Most sites are not covered. The text duty applies to writing published to inform the public on matters of public interest: news, journalism, public affairs, health or safety guidance. A shop, a portfolio or a personal blog is not that.
- If it does reach you, the exemption has two conditions, not one. Human review and a named person or organisation holding editorial responsibility. Review on its own is half the test.
- AIM Transparency asks the scope question once, records how each post was written in the editor, and prints the line only where one is actually owed.
One article, two different obligations
Article 50(4) is a single paragraph with two subparagraphs, and they ask for different things from different people. Mixing them up is the most common mistake in this area.
50(4), first subparagraph
Deep fakes
- What triggers it
- You publish AI-generated or manipulated image, audio or video resembling real people, objects or events.
- Who it reaches
- Any deployer publishing it. There is no public-interest test.
- The remedy
- A visible label, plus machine-readable provenance in the file.
50(4), second subparagraph
Text
- What triggers it
- You publish AI-generated or manipulated text to inform the public on matters of public interest.
- Who it reaches
- Only publishers meeting that purpose test. Most sites do not.
- The remedy
- Disclose that the text was artificially generated or manipulated.
This matters practically: answering “no” to the text question never removes the badge from your images. The two halves are judged separately, and a site can be outside the text duty while squarely inside the image one.
For the wider picture, read the EU AI Act guide for WordPress.
Does this reach your site at all?
The whole duty turns on one thing: whether you publish text in order to inform the public on matters of public interest. That is a purpose test, not a topic test, and it is narrower than it first sounds.
- Usually inside: news sites, magazines, trade press, public-affairs writing, health or safety guidance, anything doing the job journalism does.
- Usually outside: shops and product copy, portfolios, marketing pages, personal blogs, documentation, fiction and hobby writing.
The plugin asks this once, on the Posts tab, and then stops. Answer no and nothing below it is a compliance duty, your readiness score stops counting text either way, and you are never asked again. You can still switch the disclosure on if you want to: at that point it is transparency you are offering rather than something you owe, and the dashboard says so rather than showing you a gap you do not have.
If the honest answer is “some of it”, answer yes. The per-post control is where the nuance lives.
Recording how a post was written
Every post gets an AI content disclosure panel, in the block editor sidebar and as a meta box in the classic editor. It offers four answers:
- Written by AI — the Regulation’s artificially generated.
- You wrote it, AI rewrote it — artificially manipulated. A different claim, and the two are not interchangeable.
- AI involved, unspecified — for the honest middle, where a tool helped but neither label above is quite true.
- No AI in the text — recorded as a positive answer rather than left blank.
A disclosed post also carries schema.org JSON-LD describing the article, alongside the ImageObject data already written for any pictures in it.
Why human review on its own is not enough
Article 50(4) exempts text that has undergone human review or editorial control and where a natural or legal person holds editorial responsibility for publishing it. Two conditions joined by an and.
It is easy to collect only the first. Somebody reads the draft, ticks a box, and the disclosure disappears. But nobody has been named as answerable for it, so the second condition was never met and the exemption was never earned.
- Tick review and name someone: exempt, and both facts are recorded with the date.
- Tick review and name nobody: still discloses, and the dashboard tells you which half is missing.
The date matters more than it looks. An exemption you claimed is a position you may have to explain later, and “reviewed, by this person, on this date” is a far better answer than a checkbox with no history behind it.
The disclosure itself
Left alone, the wording follows how the post was made: This text was artificially generated using AI, or artificially manipulated. You can replace it with a single sentence of your own, which then applies everywhere.
It sits above the post by default. That is the safest reading of Article 50(5), which asks that people be told at the point they first meet the content, and a line underneath a long article arrives after the reader has already read it.
Appearance follows your theme rather than fighting it. The subtle style borrows your own colours so it reads the same on a light or a dark design; plain drops the box where a boxed notice would break the layout. If you set custom colours, the contrast ratio is checked live and a mark that falls below 4.5:1 is dropped in favour of a readable one. A disclosure nobody can read is not a disclosure.
Putting the line somewhere else
If above the post is wrong for your layout, place it yourself:
[aicl_text_disclosure]
Using it switches off the automatic copy for that post, so the two do not both appear, as long as the shortcode runs before the post content is filtered. That covers putting it in the content, or anywhere above it in a template; called below the content, the automatic line has already been written and you would get both. It respects the wording and appearance you set, and it prints nothing at all on a post you have not marked, or on one the exemption covers.
For AI content that is not a post, the general disclosure shortcodes cover widgets, pages and chat interfaces.
Frequently asked questions
I used AI to help with a product description. Do I need to disclose it?
My editor rewrote the AI draft heavily. Is it still AI-written?
Does answering “no” turn off my image badges?
What about old posts written before I installed this?
Does the disclosure appear in RSS?
[aicl_text_disclosure] in the post body, which travels with the content.Is this legal advice?
Related guides
The lawThe EU AI Act and WordPress (Article 50)
Who Article 50 covers, the 2 August 2026 deadline, the penalties, and exactly what a WordPress site owner must do, in plain English.
Read guide
The how-toHow to label AI images in WordPress
A step-by-step walkthrough: install the plugin, flag an image from the Media Library, and get the badge, embedded metadata and JSON-LD automatically.
Read guide
The metadataWhat IPTC DigitalSourceType actually is
The machine-readable tag behind “AI-generated”: what the IPTC DigitalSourceType vocabulary means, the values AIM Transparency writes for AI and human provenance alike, and why it future-proofs your images.
The shopDisclose AI product images in WooCommerce.
Selling with AI product photos? Put the “AI Generated” badge across your shop grid, your categories and the single-product gallery, free, plus embedded provenance, on any theme. Compliance and buyer trust, in one move.
Read guide
ChatbotsHow to disclose an AI chatbot on WordPress
Article 50(1) is the other half of the law: if visitors interact with an AI, you have to tell them. Where the notice belongs, and how to find widgets already running.
Read guide
LanguagesYour AI disclosure has to be in a language visitors read
Article 50 asks you to inform the person. An English badge on a Polish shop does not. How disclosure works across 22 EU languages, and where the wording comes from.
Read guide
For developersShow an AI disclosure automatically with WordPress hooks
One filter, one condition, one call to do_shortcode. Copy-paste recipes for categories, custom fields, WooCommerce and block themes.
Read guide
The releaseWhat WordPress 7.1 changes for AI image provenance
7.1 can rebuild your images in the browser before they ever reach your server. What that does to provenance written inside the file, what we measured against the release candidate, and the one line that turns it off.
Read guide