{"id":349719,"date":"2026-08-10T08:23:19","date_gmt":"2026-08-10T08:23:19","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/ai-content-label\/"},"modified":"2026-08-10T08:23:07","modified_gmt":"2026-08-10T08:23:07","slug":"schnieders-ai-media-labels","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/schnieders-ai-media-labels\/","author":23543060,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.0.0","stable_tag":"1.0.0","tested":"7.0.3","requires":"6.5","requires_php":"7.4","requires_plugins":null,"header_name":"Schnieders AI Media Labels","header_author":"Kay Schnieders","header_description":"Mark images in the Media Library as AI-generated and display an EU AI Act compliant label on the front end. Fully configurable position, text and style.","assets_banners_color":"152035","last_updated":"2026-08-10 08:23:07","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"","header_author_uri":"","rating":0,"author_block_rating":0,"active_installs":0,"downloads":30,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.0.0":{"tag":"1.0.0","author":"kschnieders","date":"2026-08-10 08:23:07"}},"upgrade_notice":{"1.0.0":"<p>Initial release.<\/p>"},"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3640207,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3640207,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3640207,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3640207,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.0.0"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3640207,"resolution":"1","location":"assets","locale":"","width":1472,"height":841}},"screenshots":{"1":"The settings screen: labelling options, file metadata and auto-detection, with a live preview of the badge."}},"plugin_section":[],"plugin_tags":[2353,271023,23968,84,25098],"plugin_category":[50],"plugin_contributors":[274969],"plugin_business_model":[],"class_list":["post-349719","plugin","type-plugin","status-publish","hentry","plugin_tags-ai","plugin_tags-ai-act","plugin_tags-disclosure","plugin_tags-media","plugin_tags-transparency","plugin_category-media","plugin_contributors-kschnieders","plugin_committers-kschnieders"],"banners":{"banner":"https:\/\/ps.w.org\/schnieders-ai-media-labels\/assets\/banner-772x250.png?rev=3640207","banner_2x":"https:\/\/ps.w.org\/schnieders-ai-media-labels\/assets\/banner-1544x500.png?rev=3640207","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/schnieders-ai-media-labels\/assets\/icon-128x128.png?rev=3640207","icon_2x":"https:\/\/ps.w.org\/schnieders-ai-media-labels\/assets\/icon-256x256.png?rev=3640207","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/schnieders-ai-media-labels\/assets\/screenshot-1.png?rev=3640207","caption":"The settings screen: labelling options, file metadata and auto-detection, with a live preview of the badge."}],"raw_content":"<!--section=description-->\n<p>Schnieders AI Media Labels helps you comply with the transparency obligations of the EU AI Act (Article 50), which require AI-generated media to be disclosed.<\/p>\n\n<p>Open any image in the Media Library, tick <strong>\"This image is AI-generated\"<\/strong> (and optionally note the tool used, e.g. Midjourney), and the plugin displays a clear, configurable label wherever that image appears on your site.<\/p>\n\n<p><strong>Features<\/strong><\/p>\n\n<ul>\n<li>A simple checkbox in the Media Library to flag any image, video or audio file as AI-generated.<\/li>\n<li>Optional field to record the AI tool or model used.<\/li>\n<li>Automatic front-end labelling of flagged files \u2014 no theme edits required.<\/li>\n<li>Auto-detection: uploads that already declare AI provenance (IPTC\/XMP \"Digital Source Type\") are flagged automatically.<\/li>\n<li>Media Library column, AI-status filter and bulk mark\/unmark actions.<\/li>\n<li>Optional machine-readable marking: writes the IPTC \"Digital Source Type\" (trainedAlgorithmicMedia) into the image file (JPEG\/PNG) so the AI status travels with the file.<\/li>\n<li>Works with images in post content, Gutenberg blocks, featured images, theme templates, and video\/audio blocks.<\/li>\n<li>Settings page to control:\n\n<ul>\n<li>Whether labelling is enabled.<\/li>\n<li>Display mode: badge overlay, caption, or both.<\/li>\n<li>Badge position (all four corners).<\/li>\n<li>Badge shape: square, rounded, pill or circle.<\/li>\n<li>Font size and distance from the corner (in pixels).<\/li>\n<li>Indicator inside the badge: none, a dot, or a custom symbol (e.g. \"!\").<\/li>\n<li>Short badge text and full label text.<\/li>\n<li>Badge background and text colour.<\/li>\n<li>Whether to append the label to the image alt attribute (accessibility).<\/li>\n<\/ul><\/li>\n<li>Fully translation ready \u2014 translations are provided through translate.wordpress.org.<\/li>\n<li>No tracking, no external requests, no database tables.<\/li>\n<\/ul>\n\n<p><em>Disclaimer: this plugin is a tool to help with disclosure. It does not constitute legal advice; please verify your obligations under the EU AI Act.<\/em><\/p>\n\n<!--section=installation-->\n<ol>\n<li>Upload the <code>schnieders-ai-media-labels<\/code> folder to <code>\/wp-content\/plugins\/<\/code>, or install it through the Plugins screen.<\/li>\n<li>Activate the plugin through the \"Plugins\" screen in WordPress.<\/li>\n<li>Go to <strong>Settings &gt; Schnieders AI Media Labels<\/strong> to configure how labels appear.<\/li>\n<li>In the <strong>Media Library<\/strong>, open an image and tick \"This image is AI-generated\".<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"does%20this%20modify%20my%20images%3F\"><h3>Does this modify my images?<\/h3><\/dt>\n<dd><p>Only if you leave the \"File metadata\" option enabled. In that case, when you flag an image, the plugin writes a small machine-readable IPTC\/XMP marker into the JPEG\/PNG file (and its generated sizes). The pixels are not re-compressed, and the file is only replaced after the new version has been verified as a valid image. If you turn that option off, your files are never touched \u2014 the plugin then only stores a flag and displays a label on the front end.<\/p>\n\n<p>We strongly recommend testing on a staging site and keeping backups before enabling file-metadata writing on a large existing library.<\/p><\/dd>\n<dt id=\"what%20is%20the%20machine-readable%20marker%3F\"><h3>What is the machine-readable marker?<\/h3><\/dt>\n<dd><p>It is the IPTC \"Digital Source Type\" property with the value \"trainedAlgorithmicMedia\", stored as XMP inside the file. This is the same standard used by Google, Adobe and others to indicate AI-generated media.<\/p><\/dd>\n<dt id=\"which%20images%20get%20labelled%3F\"><h3>Which images get labelled?<\/h3><\/dt>\n<dd><p>Only images you explicitly flag as AI-generated in the Media Library.<\/p><\/dd>\n<dt id=\"does%20it%20work%20with%20page%20builders%3F\"><h3>Does it work with page builders?<\/h3><\/dt>\n<dd><p>It labels images rendered through the standard WordPress functions (post content, blocks, featured images, <code>wp_get_attachment_image<\/code>). Some page builders output custom markup that may not be covered.<\/p><\/dd>\n<dt id=\"does%20the%20plugin%20send%20data%20anywhere%3F\"><h3>Does the plugin send data anywhere?<\/h3><\/dt>\n<dd><p>No. It makes no external requests and stores nothing outside your own database.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Initial release.<\/li>\n<\/ul>","raw_excerpt":"Mark images as AI-generated in the Media Library and automatically label them on the front end for EU AI Act (Art. 50) transparency.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/349719","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=349719"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/kschnieders"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=349719"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=349719"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=349719"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=349719"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=349719"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=349719"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}