Skip to main content
drupalreleases

Use direct release data with your AI assistant.

Learn more

AI Disclosure

Security covered Under active development 70 sites

Part of the AI ecosystem · 345 projects

This module helps websites comply with the EU AI Act by recording how AI was used to create content. It determines if a visible label is required and displays the appropriate disclosure with official European Commission icons to readers.

AI Disclosure (ai_disclosure) is a Drupal module for AI content disclosure: it labels AI-generated and AI-assisted content, 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, on text, images, video and audio.

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.

Read Article 50 in the Official Journal

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.

Six 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.
  • AI Disclosure Image burns the EU icon into image derivatives and writes the IPTC digital source type into them.
  • AI Disclosure Audio and Video makes labelled copies of video and audio with FFmpeg, without changing the original upload.

Machine-readable AI content disclosure

A 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 translation

A disclosure belongs to an entity and a language, so a machine-translated version can say so on its own.

AI labels on images, video and audio

AI Disclosure labels the media files, not only the page. Every label on media starts from one question: is this file a deep fake? The editor answers it once per file, in an AI disclosure panel on the media form, with a preview of the label.

Images

The EU icon sits over AI images on the page, in the corner the site or the editor picks. Deep fake images get the icon burned into their derivatives by the AI Disclosure Image submodule, in the image styles a site picks. Derivatives of every AI image also carry the IPTC digital source type. With the C2PA Sign module, the signed manifest gets the same digital source type. The original upload never changes.

Video and audio

Video players get the icon over the picture, oEmbed video included, and audio players get a label next to them. For the files themselves, the AI Disclosure Audio and Video submodule renders labelled copies with FFmpeg, one at a time on cron. Deep fake video gets the icon, deep fake audio starts with a spoken disclaimer. An audiowmark watermark is optional. Download links of AI files say what the file is.

A status page for what is missing

A page under Reports lists the tools each feature needs, such as FFmpeg or ExifTool, and the problems the module ran into, with a link to fix each one.

If you only need three states (no AI, AI-modified, AI-generated) and a label burned into images, AI Content Disclosure (ai_content_disclosure) is a smaller, separate module with that scope. The two projects cover the same ground, so pick the one that fits the site. The overlap 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. None of the three ever lowers 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.

To add a row to the status page, a module tags a service with ai_disclosure.status_check. hook_ai_disclosure_media_preview_alter() changes the media preview.

Documentation

Installation, configuration, theming, the machine-readable AI disclosure output and the integrator guide.

Read the documentation

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.

AI Disclosure Image needs the Image Effects module, and ExifTool 12.24 or later for AVIF and HEIC derivatives. AI Disclosure Audio and Video needs the core Media module and FFmpeg with ffprobe, and a private file system for copies of private files. The requirements page has an install guide for each tool.

Maintainers

Ask your assistant about AI Disclosure

Check compatibility with your Drupal and PHP version, maintenance and security coverage, from current release data. How it works

Depends on

Dependencies of the latest stable release

No dependencies recorded for this project.

Required by

Tracked projects that depend on this one

No tracked projects depend on this one yet.

Activity

Tracked releases
5
Tracked since
Sep 2026
Latest release
1 week ago
Releases (12 mo)
5 ▲ from 0
Maintenance
Active

Release Timeline

Releases

Version Type Core PHP Release date
1.0.0-beta1 Pre-release 10–11 PHP 8.1 Oct 12, 2026
1.0.0-alpha3 Pre-release 10–11 PHP 8.1 Oct 6, 2026
1.0.0-alpha2 Pre-release 10–11 PHP 8.1 Sep 12, 2026
1.0.x-dev Dev 10–11 Sep 7, 2026
1.0.0-alpha1 Pre-release 10–11 Sep 7, 2026