AI Disclosure
AI Disclosure started in the Drupal AI Initiative in August 2026, when Article 50 of the AI Act had only just begun to apply and Drupal still had no way of telling the reader how a piece of content had been written. I developed it, starting from a plan by Marcus Johansson.
Who builds AI Disclosure, and since when
What problem AI Disclosure solves
Since 2 August 2026 the AI Act has required publishers to label deep fakes and some AI-generated text. Today they declare it with a handwritten line at the foot of the page. Every editor words it differently, nobody knows how many items carry it, and engines do not read it.
How AI Disclosure solves the problem
A field that travels with each piece of content and says how much AI contributed, chosen from nine levels. The team answers once per content type, the module works out whether the label is due, and shows it to the reader with the European Commission icons.
What AI Disclosure achieved
The project was created on Drupal.org on . The latest release is 1.0.0-alpha2, dated . It is used by 70 sites (Drupal.org, as of ). On 20 September 2026 there were 8.
What the AI Act asks of anyone who publishes content
Since 2 August 2026, Article 50 of the AI Act has required publishers to declare two kinds of content: images, audio and video that imitate real people, places or events closely enough to pass as authentic, and AI-generated text that informs the public on matters of public interest. There is an exception for text. If a person has reviewed it and takes editorial responsibility for it, the label is not mandatory.
So the rule does not ban AI, and it does not require you to declare it every time. What it requires is that you know, content by content, whether one of those cases applies.
How AI Disclosure decides whether the label is due
AI Disclosure sorts every piece of content into one of nine grades, from "Human only" to "AI deep fake". Six of the nine carry the precondition for the obligation: without it the module does not even ask the questions that follow, and the verdict is "not required". The full list, with the sentence each grade shows the reader and the icon it carries, is in the module documentation (opens in a new tab).
With the precondition in place, the rule splits into two branches, depending on the medium.
Audiovisual deep fake: paragraph 1
The label is due unconditionally. Human review, editorial responsibility and public interest are never even consulted.
AI-generated text: paragraph 2
The label is due if the content informs the public and concerns a matter of public interest. A no to either one settles the verdict as "not required", even when the other is still unanswered.
Text has an exemption, and it applies only when both conditions hold: substantive review with editorial control and a named editorial responsibility. Review on its own is not enough. That is the difference between "I read it again" and "someone signs it".
What AI Disclosure solves for an editorial team
AI Disclosure turns the labelling assessment into data the content carries. The team describes, once per content type, how it uses AI: articles drafted with AI and reviewed by a journalist, say, or machine translations that someone has read through. Every new item inherits that description, and you only change it for the exceptions.
From there the module does three things. It shows the reader a card with the official icon published by the European Commission and a plain sentence. It writes the same information into the page source, where search engines and agents read it. And it keeps a site-wide report saying, for each item, whether the label is due, not due, or still waiting for an answer.
The module follows the Commission's guidance on Article 50, but it does not decide for the publisher. It records the assessment and makes it visible.
How I built AI Disclosure in Drupal
On 3 August 2026 Marcus Johansson published the module plan in the Drupal AI Initiative: sixteen steps, from the foundations to the integrations with the other Drupal AI modules. I wrote to him and took the development over, and on 17 August I opened the project on drupal.org.
Between 18 and 24 August I finished the first three phases of the plan, ten steps out of sixteen: the structure of the AI levels, the reusable descriptions, the field on content, the reader-facing card, the machine-readable data, the report and the handling of translations. Still open are the project documentation and the integrations with five existing AI modules, which will let translators and generators declare their own contribution.
Who I develop AI Disclosure with
AI Disclosure has three maintainers. Marcus Johansson (@marcus_johansson (opens in a new tab)) wrote the plan in the Drupal AI Initiative and is a co-maintainer of the project. Adam Nagy (@joevagyok (opens in a new tab)) joined later as a co-maintainer. His drupal.org profile says he works as a Drupal consultant for the European Commission on the Europa Web Platform. I write the code. As of 22 September 2026, 221 of the repository's 226 commits are mine.
How I use AI Disclosure on this site
Every page on this site carries the AI Disclosure card at the foot of the text. The Italian originals declare that they were written with AI assistance and reviewed by me. The English versions declare that they were translated with AI and read through.
On 22 September 2026, while I was writing this page, I found that the site was not doing what the module promises. There was a single disclosure covering both languages, and the English pages were describing how the Italian had come about. I fixed it the same day. This is the case the module exists for: a disclosure holds for the language the reader has in front of them.
The two versions of this page show the two ways the module gets its answer. The Italian original carries no disclosure of its own. Its field is empty, and the module falls back to a default profile, Editorial default, which says grade "AI assisted (human led)", human review done, editorial responsibility in my name, medium text, content that informs the public, matter of public interest no. This English page carries an explicit one instead, the Translation, reviewed profile, whose grade is "AI translated".
Different grades, same verdict: both pages work out required=not-required, and the reason is worth stating. Not the review exemption, which would in fact be satisfied on both. Paragraph 2 asks for two conditions together, and these pages carry only one. A project page informs the public, yet it is not a matter of public interest. If I ever wrote here about European politics, the same configuration would produce required=required without my touching anything, and the label would appear on its own.
The card at the foot of this page is that calculation made visible: the European Commission's ai_modified icon, the grade's sentence, and a collapsible detail holding the profile description. The line naming editorial responsibility does not appear because the grade keeps it switched off among the visible parts, not because the name is missing.
You do not have to take the card's word for it: the same information sits in the page source, and you read it from the command line.
curl -s https://giorgiopagano.org/en/projects/ai-disclosure | grep 'name="ai-disclosure"'It answers ai_translated; required=not-required; icon=ai_modified: the grade, the verdict on the obligation, and which European Commission icon to show. Installing and configuring it is covered in the module documentation (opens in a new tab).
Sources on AI Disclosure and on Article 50
- The AI Disclosure project page on Drupal.org (opens in a new tab): maintainers, creation date, releases and 70 sites. Accessed 22 September 2026, primary source.
- Issue #75 on this site: 8 sites as of 20 September 2026, measured internally.
- The module plan in the Drupal AI Initiative (opens in a new tab): opened 3 August 2026, ten steps out of sixteen closed between 18 and 24 August 2026. Accessed 22 September 2026, primary source.
- The AI Disclosure repository on git.drupalcode.org (opens in a new tab): 226 commits, 221 by Giorgio Alfredo Pagano. Accessed 22 September 2026, primary source.
- Adam Nagy's Drupal.org profile (opens in a new tab): role and organisation, as stated by him. Accessed 22 September 2026.
- EU icons for labelling AI-generated content (opens in a new tab), European Commission. Primary source.
- FAQ on the transparency obligations of Article 50 (opens in a new tab), European Commission. Accessed 22 September 2026, primary source.
- AI Disclosure Module Adds Article 50 Labelling Tools for Drupal (opens in a new tab), The Drop Times. Trade press.
This text was translated by AI.
How was AI used?
Translated from the Italian original with AI assistance, then read and corrected by a person, who holds editorial responsibility.