EN
Language · same page NLNederlands/tools-en-plugins/ai-transparantie-label/ ENEnglish (UK)/en/tools-and-plugins/ai-transparency-label/ ESEspañolnot translated yet We do not remember your choice and never redirect you automatically.
SRV · plugin · ai transparency reg. T.000 · WordPress · GPLv2 or later

AI transparency label for WordPress

Article 50 of the European AI Act, Regulation (EU) 2024/1689, requires in a number of cases that people are told when something has been created or edited with AI. This plugin handles the practical part of that: for each post or page, you record how much AI was involved, you show that to your visitor in a sentence you write yourself, and you publish the same fact in a form a machine can read. It is a record-keeping tool, not a lawyer and not a detector.

Download the plugin ↓ Book a call theseo-ai-transparantie-1.0.0.zip · 40 KB · version 1.0.0 · GPLv2 or later · no account, no registration, no key
Gianluca, who builds the tools and plugins on this site
image · whoever built the tool also explains it
FIG.01: From one choice to three outputssheet 1/3

You tick one box, and up to three things can come out of it

You make the choice exactly once, in the sidebar of the editor. What happens with it depends on three switches that work independently of each other and that are all off after installation. A fresh install therefore changes nothing on your public pages, and that is deliberate.

a postone choice · three switches
output 1

The label on the page

A sentence you have written, above or below the content, or via a block or the shortcode [theseo_ai_label] wherever you choose to place it.

You write two versions, one in Dutch and one in English. The language of the site determines which one is shown.

output 2

The meta element in the head

A line in the <head> of the page:

<meta name="ai-content-declaration" content="ai-assisted">

That name is a convention of this plugin, not a registered standard. The readme says so in as many words.

output 3

The JSON-LD block

A schema.org CreativeWork node with its own @id ending in #ai-declaration, with your label text in creditText.

It sits alongside the structured data from Yoast or Rank Math: the plugin adds its own block and does not touch theirs. That combination has not yet been tested with both plugins running together on a live WordPress site.

The setting that decides which statuses get a label also applies to the block and the shortcode. A status without a tick shows nothing anywhere, not even where you have placed the shortcode. That is deliberate: otherwise you would see a label in one place and not in another.
DOC.01

The question that comes up naturally as soon as you use AI

The point is rarely whether you use AI. Almost every editorial team does so somewhere in the process by now. The point is that nobody can tell afterwards which piece it happened to and which it did not, and that question is being asked more and more often: by a client, by whoever commissions the text, and since Article 50 of the European AI Act, in a number of cases, by the law as well.

What happens next is almost always the same

Someone adds a line under one article, forgets it on the next twenty, and six months later there is no way left to work out what actually happened. That is not bad intent, it is the absence of a place where that choice belongs.

This plugin creates that place

It sits in the sidebar of the editor, it asks one thing, and it keeps track of which pieces have not yet answered the question.

DOC.02

What the plugin actually does

Four parts.

The panel in the editor

A panel in the block editor and a block in the classic editor, with the three statuses and two optional fields: which model or tool, and who checked it.

The overview

Every published item with the status it carries, with the items that have no status yet at the top, and a bulk action to set many at once. Optionally a counter in the admin bar showing how many items have no declaration.

The label

The sentence your visitor reads is your sentence, not a translation from us. You write a Dutch and an English version on the settings screen, and the language of the site chooses between them. Placement above the content, below the content, or wherever you choose via the block or the shortcode [theseo_ai_label].

The machine-readable part

Two things, each with its own switch: the meta element in the head and the JSON-LD block. What each one contains is set out in FIG.01.

FIG.02: The three statusessheet 2/3

Three choices, and what each of the three delivers

There are three statuses and there will not be a fourth. The reason is that nobody fills in a seven-point scale consistently in practice, and a choice that is not filled in consistently is not record-keeping but a feeling. Alongside the status, you can optionally fill in two things per post: which model or tool, and who checked it.

the statusespost meta · _theseo_ai_stand
noneNo AI usedThe piece was written by a human. No IPTC value is added to the JSON-LD, because there is no algorithmic source to name.
assistedAI helped, a human edited and checked itThe status that is the truth for most editorial teams. The IPTC value compositeWithTrainedAlgorithmicMedia is added to the JSON-LD.
mostlyLargely AI-generatedThe IPTC value trainedAlgorithmicMedia is added to the JSON-LD. That is the vocabulary the industry uses for exactly this question.
emptyNo choice made yetNo status is a separate state, not a fourth answer. The overview puts these posts at the top, and a counter in the admin bar can show the number. Nothing is shown.
The overview shows every published item with the status it carries, and there is a bulk action to set many at once. That is the only way this stays workable on a site that already has three hundred posts.
DOC.04

How to install it, in four steps

No account is needed, no key and no registration. An ordinary WordPress site where you are an administrator is enough.

WordPress6.2 or higher. The plugin states it has been tested up to and including 6.8.
PHP7.4 or higher. The code has been checked against 8.5.
PermissionsYou need manage_options, so administrator.
Screen languageDutch on a Dutch site, English otherwise.
Also available on Full source code on GitHub The zip above and the source code on GitHub are the same version. This plugin is not yet in the official WordPress plugin directory. It is ready for submission; until that is complete, the download above is the only place to get it. Status recorded on 19 August 2026.
STEP 1 · DOWNLOAD

Click the download button above. You get theseo-ai-transparantie-1.0.0.zip, 40 KB. Do not unzip it: WordPress wants the zip file itself.

STEP 2 · UPLOAD

In your WordPress: Plugins, Add New Plugin, Upload Plugin. Choose the file and click Install Now.

STEP 3 · ACTIVATE

Click Activate Plugin. A new item appears in your admin menu. Your site does not change yet at this point.

STEP 4 · CONFIGURE

Open the settings screen and go through the statuses. Everything that touches your public site stays off until you switch it on yourself.

DOC.03

What it does not do, and why that matters

Here are the two claims that plugins in this category usually get wrong.

  • It does not make you AI Act compliant, and be wary of any plugin that claims it does. Article 50 places the heaviest transparency obligations on providers of AI systems, not on everyone who writes a blog. Whether and how a disclosure obligation applies in your case depends on what you publish and on your role, and that is legal work. This plugin records a choice and displays it. That is a useful part of the work, not all of it.
  • It does not detect AI text. Nothing is scanned and nothing is guessed. Detection of AI text does not work reliably, so this plugin does not pretend otherwise. The status is your own declaration, not software's judgement of your text.
  • The name of the meta element is not a standard. ai-content-declaration is a convention of this plugin. The IPTC values in the JSON-LD are: that vocabulary is used across the industry for exactly this question.
FIG.03: What gets storedsheet 3/3

Four values per post, and nothing about who reads your site

Everything sits in the post meta of the item you are declaring, plus one settings row with your label text. There is no table, no log and no second location. The right-hand column is not a promise but the reason this plugin stays outside your record of processing activities.

post metafour keys · plus one options row
is stored
  • _theseo_ai_stand, one of three fixed values
  • _theseo_ai_tool, the model or tool you type in yourself, up to 200 characters
  • _theseo_ai_controleur, the person you type in yourself, up to 200 characters
  • _theseo_ai_gewijzigd, the moment you last changed the choice
  • One options row with your settings and your label text
is not stored
  • Anything about the visitor reading the page
  • A cookie or anything in localStorage or sessionStorage
  • An IP address
  • A request to a server outside your own site
  • The text of your post, anywhere other than where WordPress already stores it
Deleting the plugin removes all four keys and the options row, as you can read in uninstall.php. Search the code for wp_remote_get or curl and you will find nothing, because this is a plugin that only does something within your own editorial process.
DOC.05

Privacy: what is and is not recorded

This is the simplest privacy section of all eight of our plugins, because there is no visitor involved.

POINT 01

Nothing about your visitor is recorded

No IP address, no cookie, no browser storage, no user agent, no counter. The plugin does not look at your visitors; it looks at your editorial process.
POINT 02

No outgoing request

Search the unpacked zip for wp_remote_get, curl or file_get_contents. Zero hits. There is no account, no key and nothing that talks to the outside world.
POINT 03

Everything stays in your own WordPress

Four meta keys per post and one options row, nothing more. All four keys are named in FIG.03.
POINT 04

Deleting it leaves nothing behind

uninstall.php removes the meta keys and the options row. Deactivating leaves them in place, so you lose nothing if you switch it off for a while.
POINT 05

Nothing is on by default on your front end

The label, the meta element and the JSON-LD block are all three off after installation. A plugin that starts putting sentences on your site just because you installed it is a plugin you do not want.

What we publish ourselves about our own use of AI is on our AI transparency statement. That page was written by hand and not made with this plugin, because this site does not run on WordPress.

DOC.06

Frequently asked questions

Do I get two JSON-LD blocks if I use Yoast or Rank Math? No. This plugin's node has its own @id ending in #ai-declaration and sits alongside the structured data from your SEO plugin. Nothing of theirs is changed or overwritten.

Can I place the label myself instead of above or below the text?

Yes, with the block or with the shortcode [theseo_ai_label]. The setting that decides which statuses get a label also applies there.

Does it work on custom post types?

Yes. On the settings screen you choose for yourself which post types get the panel.

What happens to posts that already existed?

They carry no status until you give them one. They appear at the top of the overview, and the bulk action sets them all to the right status in one go.

Is the interface in Dutch?

The interface is translated and follows the language of your site. The label text your visitor reads is not a translation but your own sentence, written by you in both languages.

Does anything change on my site as soon as I activate it?

No. All three outputs are off. You only see a panel in the editor.

DOC.07 · Next step

What it gives you in the first week

The practical order is: install it, open the overview, use the bulk action for what is already there, and only turn the label on once you are happy with your own sentence. If you want to widen the view to what AI does with your content after it has been fetched, that is covered in the AI crawler log. What we publish ourselves about our own use of AI is on our own statement. If you would like to talk it through, book a call.

Section · Next step24/7 available · sales@theseo.nl
Book a call ↗
Written by GianlucaFounder. Has been building visibility for Dutch businesses since 2017, in Google and in AI answers. More about the institute.