How do I apply Article 50(4) of the AI Act to the content of a Drupal site?

On a Drupal site, Article 50(4) of the AI Act comes down to four questions per content type: what was produced, whether it is an artistic work, whether it is published to inform the public, and whether it deals with matters of public interest. The AI Disclosure module stores those answers next to how much AI was involved, works out whether a label is due, and shows it on the page.

This article is not legal advice. It sets out what Regulation (EU) 2024/1689 and the European Commission FAQ say, and what the module does with those rules. Whether a piece of content needs a label is up to whoever publishes it.

What AI Disclosure is and how it is built is covered on the project page. This article looks only at how the module turns Article 50(4) into data and into a label on the page.

How does AI Disclosure decide whether content needs a label?

AI Disclosure keeps two things apart: how much AI went into the content, and whether the rule applies to that content at all.

The first is the grade, one of nine. Six grades say that AI generated or manipulated what was published: translation, summary, partial rewrite, text written with a person leading, text written with nobody leading, deep fake. The question about the rule only makes sense for those six. The other three, meaning no AI, metadata picked by AI and content rated by AI, stay out of it.

The second is the set of four scope answers:

Question What it decides
Is it a deep fake in image, audio or video, or is it text? which of the two rules in Article 50(4) applies
Is it part of an evidently artistic, satirical or fictional work? for deep fakes, how the label may be shown
Is it published to inform the public? for text, the first condition
Does it deal with matters of public interest? for text, the second condition

Each answer is yes, no or not assessed. The module infers none of them, neither from the content type nor from the grade.

What does Article 50(4) of the AI Act require?

Article 50(4) sets two separate obligations for publishers, each with its own trigger.

The first covers images, audio and video that make up a deep fake: whoever puts them out must disclose that they were artificially generated or manipulated. Human review does not remove the obligation. When the deep fake is part of an evidently artistic, creative, satirical or fictional work, the duty shrinks to disclosing that generated or manipulated content is there, in a way that does not get in the way of the work.

The second covers text generated or manipulated with AI and published to inform the public on matters of public interest. This one has an exemption, and it needs two conditions at once: the text went through human review or editorial control, and a natural or legal person holds editorial responsibility for it. The Commission FAQ defines editorial responsibility as holding the ultimate legal responsibility for the publication.

Since when does Article 50 of the AI Act apply?

Article 50 has applied since 2 August 2026, the general date set by Article 113 of the Regulation. Content generated before that date does not have to be labelled retroactively. The Commission encourages deployers to do it where possible.

Regulation (EU) 2026/1744, the Digital Omnibus on AI published in the Official Journal on 24 July 2026, left that date alone for publishers. It added a paragraph to Article 111 that applies to providers only: generative systems placed on the market before 2 August 2026 must comply with Article 50(2), the marking of the file itself, by 2 December 2026. That is the date often quoted as a general postponement. Article 50(4) is not among the amendments, so publishers are still on the August date.

What does "not assessed" mean in the verdict?

The AI Disclosure verdict has three values: label required, not required, not assessed. A single no on any condition settles the matter even when other answers are missing, and the same holds for the text exemption. "Not assessed" only appears when a missing answer would have changed the outcome.

On the page, content that has not been assessed still shows the disclosure card, with its own wording and a dashed border. Hiding the card would tell readers that no label is due, which is exactly what the site has not yet decided.

How do you answer once for a whole content type?

Answers live on the profile, and every piece of content inherits the default profile of its type. Individual content only steps in for exceptions. Grade and scope answers always come from the same level: the module does not mix answers taken from different levels.

A profile that claims human review without naming who is responsible cannot be saved, neither from the form nor through a configuration import.

On this site the editorial_default profile, set up on 20 September 2026, declares text, published to inform, with human review and a named person responsible.

The profile answers no to the public interest question, and that is my own call, not a fact. The Commission FAQ counts as public interest any economic, financial, political, scientific or cultural development that may become a subject of public debate, and a technical article about the AI Act could fall inside that. The verdict would not change: with a yes, human review and a named responsible person still trigger the exemption.

With these answers the verdict is "not required", and the page says so in its meta tag:

<meta name="ai-disclosure" content="ai_assisted_hitl; required=not-required; icon=ai_modified">

The card is still shown, because the site policy is set to "Always disclose AI involvement".

What happens when a label is required?

When a label is required, the official EU icon and the grade sentence appear, and the site cannot hide them. Card visibility is configurable, but a required label always renders. The rest of the card, meaning the legal line, the description and the link to the editorial policy, follows the site settings.

What happens if I change the grade configuration?

Content that inherits its settings reads grade and profile from configuration at the moment it is displayed. Changing the sentence of a grade therefore changes what every piece of content using it shows, including pages published months earlier. The Audit submodule is there for that reason: on every save it copies into its log what the grade meant at that moment, and later configuration changes do not rewrite that record.

What does AI Disclosure not do?

AI Disclosure does not decide whether content needs a label, and it does not check the answers. It accepts whatever name is entered as the editorially responsible person without judging it, and a generic role such as "the editorial team" will not hold up in an audit. It does not mark the file: the JSON-LD is a page-level signal, and the marking required by Article 50(2) is a job for the provider of the AI system, not for the publisher.

Sources and references

All sources were consulted on 27 September 2026.

  1. Regulation (EU) 2024/1689, Official Journal text (opens in a new tab), EUR-Lex. Article 50(4), and Article 113 on the date of application. Read from the rendered page, primary source.
  2. Regulation (EU) 2026/1744, Digital Omnibus on AI (opens in a new tab), EUR-Lex, Official Journal of 24 July 2026. Point 39 adds paragraph 4 to Article 111, setting 2 December 2026 for Article 50(2). Within Article 50 only paragraph 7 is amended. Read from the rendered page, primary source.
  3. FAQ on the transparency obligations under Article 50 (opens in a new tab), European Commission, last updated 24 July 2026. The three criteria for text, the areas of public interest, what counts as human review, editorial responsibility, 2 December 2026 limited to Article 50(2), and retroactive labelling. Read from the rendered page, primary source.
  4. AI Disclosure project page (opens in a new tab), drupal.org. Release 1.0.0-alpha2 of 12 September 2026, for Drupal 10.4 and 11. Read from the rendered page.
  5. AI Disclosure documentation on Article 50 (opens in a new tab), page "Article 50, and what this module does not do", updated on 11 September 2026. Primary source on how the module behaves.
  6. AI Disclosure Module Adds Article 50 Labelling Tools for Drupal (opens in a new tab), The Drop Times, 16 September 2026. News of the two alpha releases and of what the module does. Read from the rendered page.
  7. The meta tag quoted in the profile section is the one this very page writes in its <head>. You can check it by viewing the page source.
AI modified

This content was produced by AI and edited by a person.

How was AI used?

Drafts are produced with AI assistance and then directed, edited and fact checked by a person. Figures, dates and version numbers are verified against their public sources before publication, and the date of that check is stated in the text.

AI Disclosure

AI Disclosure is a Drupal module that records, for every piece of content and every translation, how much AI contributed to the text or the media. The reader sees it in a card carrying the official European Union icons, while engines and agents read it in the page source. The module also flags when Article 50(4) of the AI Act makes the label mandatory.

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.

Sector
AI, publishing, compliance
Role
Author and maintainer, with @marcus_johansson and @joevagyok
Year
2026

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

AI modified

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.

AI Content Migrate

AI modified

This content was produced by AI and edited by a person.

How was AI used?

Drafts are produced with AI assistance and then directed, edited and fact checked by a person. Figures, dates and version numbers are verified against their public sources before publication, and the date of that check is stated in the text.