| 开发者 | itsnothuman |
|---|---|
| 更新时间 | 2026年8月21日 23:22 |
| PHP版本: | 7.4 及以上 |
| WordPress版本: | 7.1 |
| 版权: | GPLv2 or later |
| 版权网址: | 版权信息 |
exiftool where your host has it. Every generated thumbnail is marked, not just the original.wpml-config.xml, which Polylang and WPML both read: it marks the source-type fields to be copied to translations, and exposes any badge or notice wording you have typed yourself for string translation. Leave that wording empty and the built-in text is used, already translated into 22 languages.
WPML is not tested yet. The integration uses WPML's own documented API and configuration file, so it is built for it, but we have not run it against a real WPML install and will not claim it works until we have. Using WPML? Tell us how it goes: support@aimtransparency.com.
Legal note
The EU AI Act (Regulation (EU) 2024/1689) has applied since 2 August 2026. Article 50 asks anyone publishing AI-generated or AI-manipulated content to disclose it clearly, in a way a person can notice. If your site displays AI images, you are a deployer and the duty is yours.
This plugin is tooling for that duty. It is not legal advice. Whether your content is in scope, what counts as a deepfake, and how you word your disclosure remain your decisions. If the answer matters to your business, consult a legal professional.
Who it is for
Anyone publishing AI-generated or AI-edited visuals to an EU audience: blogs, news and magazine sites, agencies building client sites, shops using AI product photography, and portfolios. A small site is not exempt on size alone, and the Act reaches sites outside the EU whose content is seen by people in it.
Shortcodes
[aicl_disclosure] takes type (ai-generated, ai-edited, ai-assisted, chatbot) and style (inline, badge, banner), with an optional text override.[aicl_ai_notice] is the chatbot notice.[aicl_text_disclosure] places the Article 50(4) line by hand on a post you have marked, instead of letting it sit above or below automatically. It prints nothing on a post you have not marked, or on one the exemption covers.http://cv.iptc.org/newscodes/digitalsourcetype/trainedAlgorithmicMediahttp://cv.iptc.org/newscodes/digitalsourcetype/compositeWithTrainedAlgorithmicMediahttp://cv.iptc.org/newscodes/digitalsourcetype/algorithmicMediahttp://cv.iptc.org/newscodes/digitalsourcetype/digitalCapturehttp://cv.iptc.org/newscodes/digitalsourcetype/digitalCreationhttp://cv.iptc.org/newscodes/digitalsourcetype/compositedirectory.aimtransparency.com lets you list your site publicly as one that discloses AI. It is off by default, nothing is shared without your explicit consent, and you can remove the listing whenever you like. See "External services" below.
A free site checker at https://aimtransparency.com/checker reads any URL's public code and lists the chatbots and generators it finds, grouped by the article that applies. No signup.
Built by itisnothuman, a small independent studio: https://itisnothuman.com . Docs at https://aimtransparency.com , guides at https://aimtransparency.com/guides/ .
/wp-content/plugins/, or install it from the Plugins screen in wp-admin.Yes, everything in this plugin is fully functional, nothing is locked. Flagging, the visible badge with all its styles and shapes (including the click-to-disclose modal and a custom logo), the in-dashboard media library, IPTC/XMP embedding for every supported format, JSON-LD, the AI-assistant notice, the AI-on-your-site detection card, and the CSV compliance export are all free. A separate, optional AIM Transparency Pro add-on (sold on our site, not hosted here) adds its own features on top: automatic flagging on upload, a library scanner (strip-guard plus retroactive discovery of provenance your files already declare), additional report export formats (a print-ready report you can save as PDF, plus JSON, Markdown & TXT), and a WooCommerce gallery cover for themes that replace WooCommerce's own gallery template.
The visible badge addresses the deployer's human-visible disclosure (Art. 50(4)); the embedded metadata addresses machine-readability. Both are on by default.
Yes, and without writing any CSS. Badge Studio is on the plugin's Badge screen. Choose the official EU icons, the built-in AIM label, or Custom, which gives you twelve shapes, your own colours, border, rounding and shadow, the wording for each source type, your own logo inside the badge, and an optional panel that opens when a visitor clicks it. If you need something the studio cannot make, every part of the badge has a stable class name and the plugin publishes its design as CSS custom properties. There is a guide for that, including the specificity trap that makes correct-looking CSS do nothing: https://aimtransparency.com/guides/style-the-ai-badge-with-css
It hooks WordPress's own image and template filters, including render_block for block/FSE themes, so any theme using standard functions is covered. For themes that hardcode <img> tags, enable Universal badge coverage in Settings.
When file embedding is on, it writes XMP into flagged image files (and every generated size). It is idempotent. Turn it off to use the visible badge + JSON-LD only.
JPEG and PNG are still marked by the built-in PHP writer. WebP and other formats need exiftool; the Metadata screen shows your current capability.
Disclosure is not only for images. [aicl_disclosure] places a labelled notice anywhere shortcodes run, so you can disclose AI-assisted writing, a generated hero image, or a chat widget in your own words and in the exact spot you choose. Pick a type (ai-generated, ai-edited, ai-assisted, chatbot) and a style (inline, badge, banner). [aicl_ai_notice] is the dedicated chatbot notice.
Yes. The Detection card matches your site against a registry of 672 AI systems and separates them by duty: chatbots and assistants fall under Article 50(1), which asks you to tell visitors they are talking to an AI, while image and content generators fall under 50(2), which asks you to label the output. It reports which tools are present, not that any specific image or message is AI.
No. It reads your active plugin list and fetches your own front page over a local loopback request, both on your server. Nothing is sent to any third party, and the result is cached so it does not run on every page load.
Tell us and we will fix it: support@aimtransparency.com. The translations were made with AI assistance and every visitor-facing string was checked against the EU AI Act's own language versions, but not by a native speaker of all 22. A correction from someone who actually speaks the language is the most useful thing you can send us.
Yes. The free checker at https://aimtransparency.com/checker scans any URL you paste and lists the AI systems it finds. It reads public page code only, never your files.
getmypid(). Kinsta and some other managed hosts make that function unavailable, and 2.1.5 began calling it to build a unique temporary filename. On those hosts every attempt to write the mark into a file ended in "Call to undefined function getmypid()", so marking failed outright, including from the Media Library bulk action. The temporary name no longer depends on it, and uniqueness now rests on the random component, which is widened when there is no process id to pair it with. Reported by @comankey.-scaled from the address. Only the served copy carried the disclosure, so the largest and most shareable version was the bare one. The new filter aicl_mark_original_image turns this off.aicl_featured_post_types for sites that want to change which post types show that panel.wpml-config.xml that both Polylang and WPML read. WPML itself is built for but not yet tested, and the readme says so rather than claiming otherwise.aicl_scan_urls filter lets you point detection at any page a widget only appears on, such as a checkout or a members area.[aicl_disclosure] takes bg and color, so a notice can match your theme instead of always being the default near-black pill. A pair below the WCAG AA minimum of 4.5:1 is rejected and the default renders instead, because a disclosure nobody can read is not a disclosure.mark chooses the glyph: aim (the built-in mark), eu (the official European Commission AI-content icon for the matching source type), or none. A logo attribute places your own image beside the mark, never instead of it.[aicl_disclosure] places an AI notice anywhere shortcodes run, with a type (generated, edited, assisted or chatbot) and a style (inline, badge or banner). [aicl_ai_notice] covers the chatbot case.digitalCapture), Human Created (digitalCreation, e.g. 3D renders or digital art made without generative AI) or Composite (composite, a non-AI mix such as photos + renders). Each embeds the current IPTC Digital Source Type into the file and the page JSON-LD, with no visible badge by default: honest provenance for human-made work, not just AI labels. (An optional visible badge for these types is available with the Custom badge style.)[aicl_ai_notice] shortcode into any page with a chat UI, or enable the optional floating notice that appears when a known chat widget is detected. Configurable disclosure text and position.