WP Manifestindependent plugin directory
manifest / media / robotstxt-mediaaudit

Media Audit (by ROBOTSTXT) WP Registry grade B. Medium-severity findings · 1 findingWP RegistryMedium-severity findings · 1 findingOpen the reportB git.robotstxt.es

Internal media library usage auditing and external reverse image search to detect potential copyright issues.

★ 0stars
193release downloads
≈20active sites
1.9.0latest · 2mo ago

Install

Download robotstxt-mediaaudit-1.9.0.zip From the 1.9.0 release on git.robotstxt.es, Aug 24, 2026

Upload it under Plugins → Add New Plugin → Upload Plugin, then activate.

Install straight from git.robotstxt.es with WP-CLI:

wp plugin install https://git.robotstxt.es/robotstxt/robotstxt-mediaaudit/releases/download/1.9.0/robotstxt-mediaaudit-1.9.0.zip
Updates itself. It ships its own updater (Update URI header), so new versions appear under Dashboard → Updates.

Audit your media library for copyright risks: track internal usage, run reverse image search via Google Vision, TinEye, and PicDefense, and classify results against configurable alert and ignored hostname lists.

Description

Media Audit helps site owners and editors understand where their media files are used and whether those files appear elsewhere on the internet — a key signal for detecting potential copyright violations.

Features

  • Internal usage scan — identifies every post, page, and custom post type that references each attachment as featured image, inline content, or post meta.
  • External reverse image search — submits images to Google Cloud Vision (Web Detection) and TinEye Commercial API to find matching pages across the web.
  • Consensus detection — surfaces domains independently confirmed by multiple providers, providing stronger copyright-risk signals.
  • Audit list — filterable admin page showing each attachment's external scan status, alert classification, and top matching domains.
  • Alert management — dedicated Alerts page to review active copyright-risk alerts and dismiss false positives with optional notes. Dismissed alerts are tracked separately and can be reactivated at any time.
  • WP-CLI support — run or schedule scans from the command line.
  • GDPR compliance — full WordPress privacy API integration for personal data export and erasure on request.
  • Async processing — all scanning runs via the bundled Action Scheduler library to avoid blocking web requests (no extra plugin needed).

Requirements

  • Manager (by ROBOTSTXT) plugin (recommended) — required to receive plugin updates.
  • Google Cloud Vision API key (for Web Detection scanning).
  • TinEye Commercial API key (for reverse image search).

Using the plugin

WP-CLI

Install tables manually (normally handled on activation):

wp mra install

Show current index and scan status:

wp mra status

Run an internal usage scan (queues a batch):

wp mra scan-internal [--batch=]

Run an external reverse image search (queues a batch):

wp mra scan-external [--batch=]

Extension hooks

  • mra/internal/scanner/post_types — filter the post types included in the internal usage scan.
  • mra/internal/scanner/meta_keys — filter the meta keys inspected during the internal scan.
  • mra/external/providers — register additional external scan providers.

Installation

Automatic download

Visit the plugin section in your WordPress admin, search for "Media Audit"; download and install the plugin.

Manual download

Extract the contents of the ZIP and upload the folder to /wp-content/plugins/robotstxt-mediaaudit/. Once uploaded it will appear in your plugin list.

After activation, visit Media Audit → Settings to enter your API credentials.

Frequently Asked Questions

Do I need both Google Vision and TinEye keys?

No. The plugin works with either provider configured. Results will only be collected from providers with a valid API key.

Will scanning slow down my site?

No. All scans are queued and processed asynchronously by Action Scheduler in small batches.

What is consensus detection?

When the same domain appears independently in both Google Vision and TinEye results for the same image, it is flagged as a consensus match — a stronger copyright-risk signal than a single-provider finding.

Is data deleted when I uninstall?

By default, no. Enable Settings → Delete data on uninstall if you want all plugin tables and options removed on uninstall.

Compatibility

  • WordPress: 5.3 - 7.1
  • PHP: 8.0 - 8.5
  • WP-CLI: 2.x

Changelog

Only the 3 latest versions. The full changelog is at www.robotstxt.software/plugins/robotstxt-mediaaudit/.

1.9.0

  • Action Scheduler is now bundled via Composer (woocommerce/action-scheduler): the external action-scheduler plugin is no longer required.
  • The library self-arbitrates when another plugin (e.g. WooCommerce) loads its own copy — only the newest version initializes.

1.8.3

  • Updates are now delivered through Manager (by ROBOTSTXT): the bundled self-updater (robotstxt-updater.php, update.json) was removed.
  • The Plugins page now shows a dismissible notice when Manager is not installed and active, and the Settings page shows a permanent notice until it is.
  • New Update URI header pointing to the plugin page at www.robotstxt.software; Plugin and Author URIs updated accordingly.

1.8.2

  • Contribution guidelines restructured: AGENTS.md is now an index to topic-specific AGENTS-*.md files (single source of truth).
  • Added bin/preflight.sh automated pre-deploy verification (PHPCS, PHPStan, PHPCompatibility, PHPUnit, composer audit, ZIP inspection).
  • Added plugin header tests validating header consistency (Stable tag ↔ Version ↔ version constant).
  • Added .claude/settings.json deny rules enforcing no-auto-deploy / no-push / no-tag / no-merge.
  • Added .claude/agents/security-auditor.md and .claude/commands/deploy-check.md for clean-context pre-deploy audits.
  • Fixed bin/deploy.sh excluding all AGENTS-*.md dev docs from the release ZIP (previously only AGENTS.md).

Previous versions

If you want to see the full changelog, visit www.robotstxt.software/plugins/robotstxt-mediaaudit/.

Compliance

This plugin adheres to the following security measures and review protocols for each version:

Releases

11 releases. Each count is every asset in that release; expand a row for the breakdown.

Tag
Published
Assets
Downloads
1.9.0 latest
Aug 24, 2026 2mo ago
robotstxt-mediaaudit-1.9.0.zip
3
Aug 17, 2026 2mo ago
robotstxt-mediaaudit-1.8.3.zip
2
Aug 9, 2026 2mo ago
robotstxt-mediaaudit-1.8.2.zip
6
Jun 8, 2026 4mo ago
robotstxt-mediaaudit-1.8.1.zip
21
Jun 3, 2026 4mo ago
robotstxt-mediaaudit-1.7.1.zip
25
Jun 3, 2026 4mo ago
robotstxt-mediaaudit-1.7.0.zip
25
Jun 3, 2026 4mo ago
robotstxt-mediaaudit-1.6.0.zip
26
Jun 3, 2026 4mo ago
robotstxt-mediaaudit-1.5.0.zip
23
Jun 3, 2026 4mo ago
robotstxt-mediaaudit-1.3.0.zip
22
Jun 3, 2026 4mo ago
robotstxt-mediaaudit-1.2.0.zip
21
Jun 3, 2026 4mo ago
robotstxt-mediaaudit-1.0.0.zip
19

Active-site estimate ≈20 comes from the median of recent superseded releases. Method.

B grade

Security

Media Audit (by ROBOTSTXT) 1.9.0 · audited by WP Registry

Medium-severity findings.

1 medium
Audited release
1.9.0
Findings
1
Worst severity
medium
Content hash
189006802f416e2e244e29bd…

Findings

  • medium Attachment full-report page allows Contributors to read other users' post usage and stored scan results

    information_disclosure

    The hidden submenu robotstxt-mediaaudit-detail is registered with capability edit_posts (Contributor+) while the rest of the Media Audit UI requires edit_others_posts (Editor+). AttachmentDetailPage::render repeats only current_user_can('edit_posts'), then loads any integer attachment_id from $_GET with no current_user_can('read_post'/'edit_post') check and no ownership test. fetch_usages JOINs wp_posts and prints post_title, post_type, post_status, and meta_key for every usage row, including other users' draft and private posts. The same page also dumps mra_external_results (provider matches, domains, Google Vision/TinEye/PicDefense raw JSON fields). Contributors normally cannot open the Media Library (no upload_files) or the audit list, so this is extra data. Subscriber/customer still cannot reach the page. Not XSS: output is escaped; the consumer is wp-admin HTML only.

    includes/Admin/AttachmentDetailPage.php:42-61

    Recommendation

    Register and gate the detail page with edit_others_posts (same as the audit list), or require current_user_can('edit_post', $attachment_id) and skip usage rows the user cannot read_post. Do not expose raw provider responses to roles that cannot access Media Audit.

WP Registry hashes the installable build and reports on that exact bytes-for-bytes copy. Embargoed findings are withheld until they are disclosed, so a clean verdict means nothing public is outstanding. WP Manifest does not audit code itself.