AI Disclosure labels AI-generated and AI-assisted content in Drupal, so a site can meet the transparency rules of Article 50 of the EU AI Act. Editors record how AI was used on each piece of content, the module works out whether a visible AI label is legally required, and readers see the disclosure with the official European Commission icons.
Not legal advice
This module helps a site comply with Article 50 of the EU AI Act. It is not legal advice. It records the disclosure decision the site makes and shows it to the reader. It does not make that decision and does not certify compliance. In the spirit of open source, the maintainers take no legal liability for how it is used.
AI disclosure under the EU AI Act, Article 50
Since 2 August 2026, a site that publishes AI-generated or AI-manipulated text on matters of public interest, or deep fake images, audio and video, has to disclose it. Content reviewed by a person who holds editorial responsibility is exempt. AI Disclosure records that decision for every piece of content and shows the AI label when the law requires it.
Features
Nine levels of AI involvement, from human only to deep fake
Each grade describes one degree of AI involvement and sets the sentence the reader sees, the EU icon, whether Article 50(4) requires an AI label, and whether human review removes that requirement. Grades are configuration, so a site can change the wording and the icons.
Reusable disclosure profiles
A profile holds the grade, the human review flag, who holds editorial responsibility and the shared "How AI was used" text. Content references the profile instead of repeating the text, so editing the profile updates every page that uses it.
AI labels with the official EU icons
The field formatter shows the EU icon, the grade's sentence, the Article 50(4) line when an AI label is legally required, and an expandable section with the details. A legally required label always appears, whatever the display settings say.
The editor decides, and sees the consequence
The widget sits in the entity form sidebar. It offers the bundle default, a profile, a custom disclosure, or an explicit decision not to label. While the editor works, it states whether the chosen grade needs an AI label and which icon the reader will get.
A compliance report for AI-generated content
The report lists the disclosure of every node: grade, whether a label is required, where the value came from, the human review flag and pending suggestions. It filters by content type, language, grade family and label requirement, and exports to CSV.
No storage cost for default labels
Content left in inherit mode takes its disclosure from the field's default profile and stores no row at all.
Suggestions from AI tools
AI modules can leave suggestions the editor accepts or dismisses. A dedicated view lists them with content, language, grade, source module, status, note, author and date, and filters on status, grade and source.
Built for themers
The disclosure renders as a single directory component, so a theme overrides the component instead of chasing a template.
Say who is responsible
A grade can show the person or team that holds editorial responsibility next to the disclosure. It stays off until a site turns it on.
Link to the site's own statement
The editorial statement URL takes an external address, an internal path, or a link to content the site already publishes.
Four optional submodules
Each one installs on its own:
- AI Disclosure Audit keeps an append-only trail of disclosure decisions, frozen at the time each one was recorded.
- AI Disclosure Workflow maps disclosure profiles to Workflows and Content Moderation states and transitions, and can accept a matching suggestion automatically.
- AI Disclosure Tool exposes the recorder to AI agents as a Tool API plugin.
- AI Disclosure CSV Export adds the CSV export to the compliance report.
Machine-readable AI disclosureA schema.org JSON-LD block and a meta tag carry the IPTC digital source type on the canonical page, so search engines can read how the content was made. |
One AI label per translationA disclosure belongs to an entity and a language, so a machine-translated version can say so on its own. |
AI-generated images
AI Disclosure marks the page. Its JSON-LD block and meta tag sit on the canonical page, so the disclosure stays behind when an image is downloaded and republished somewhere else. Labelling the file itself is not part of AI Disclosure today.
A separate project burns a label into image derivatives, one Image Style at a time. The overlap between the two projects is discussed in issue #3621703.
For AI module developers
AI tools record their own involvement through the recorder service. suggest() leaves a suggestion the editor accepts or dismisses on the entity form, apply() and applyProfile() write the disclosure directly for headless pipelines and cron. Neither ever downgrades a disclosure that is already there, and an unknown grade or a bundle without the field never breaks the caller's save.
The dependency direction is inverted: AI modules call AI Disclosure, and AI Disclosure knows nothing about any AI tool.
The ai_disclosure.grade_lookup service resolves a grade from an IPTC digital source type URI, in the result format the caller asks for.
Documentation
Installation, configuration, theming, the machine-readable AI disclosure output and the integrator guide.
Installation
Install with Composer, then enable the module.
composer require drupal/ai_disclosure
drush en ai_disclosure
Installing creates the nine grades and the module settings. Start at /admin/config/content/ai-disclosure: set the site policy, create the profiles the site needs, then add the disclosure field to the content types that need an AI label.
Requirements
Drupal 10.4 or later, or Drupal 11, and PHP 8.1. league/commonmark ^2.8, which Composer installs with the module, renders the markdown description shown to readers.
The submodules add requirements of their own. AI Disclosure CSV Export needs the core rest and serialization modules. AI Disclosure Workflow needs core content_moderation. AI Disclosure Tool needs Drupal 10.5 or later, PHP 8.2 and the Tool API module, which Composer does not install with AI Disclosure.
The shipped grade configuration states when Article 50(4) requires a label. Editing it changes that statement, not only its wording. Read the Article 50 page in the documentation before you do.
Project information
- Project categories: Artificial Intelligence (AI)
- Ecosystem: AI (Artificial Intelligence)
70 sites report using this module
- Created by sjpagan on , updated
Stable releases for this project are covered by the security advisory policy.
There are currently no supported stable releases.
Releases
Development version: 1.0.x-dev updated 14 Sep 2026 at 11:51 UTC





