{"id":328484,"date":"2026-06-22T09:22:50","date_gmt":"2026-06-22T09:22:50","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/ai-media-toolkit\/"},"modified":"2026-06-22T09:22:34","modified_gmt":"2026-06-22T09:22:34","slug":"pewit-ai-media-toolkit","status":"publish","type":"plugin","link":"https:\/\/mfe.wordpress.org\/plugins\/pewit-ai-media-toolkit\/","author":11391715,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.3.1","stable_tag":"1.3.1","tested":"7.0","requires":"6.1","requires_php":"7.4","requires_plugins":null,"header_name":"Pewit AI Media Toolkit","header_author":"PEWIT Labs","header_description":"AI-powered image metadata generator for WordPress. Generates ALT, title, caption and description with smart scanning, language detection and background queue.","assets_banners_color":"","last_updated":"2026-06-22 09:22:34","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"","header_author_uri":"","rating":0,"author_block_rating":0,"active_installs":0,"downloads":52,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.3.1":{"tag":"1.3.1","author":"michalczajka","date":"2026-06-22 09:22:34"}},"upgrade_notice":{"0.9.6.1":"<p>First Freemius-packaged build. Recommended for licensing and auto-updates.<\/p>"},"ratings":[],"assets_icons":{"icon.svg":{"filename":"icon.svg","revision":3581532,"resolution":false,"location":"assets","locale":false}},"assets_banners":[],"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.3.1"],"block_files":[],"assets_screenshots":[],"screenshots":[]},"plugin_section":[],"plugin_tags":[1953,17214,84,194533,186],"plugin_category":[34,50,55],"plugin_contributors":[268312],"plugin_business_model":[],"class_list":["post-328484","plugin","type-plugin","status-publish","hentry","plugin_tags-accessibility","plugin_tags-alt-text","plugin_tags-media","plugin_tags-openai","plugin_tags-seo","plugin_category-accessibility","plugin_category-media","plugin_category-seo-and-marketing","plugin_contributors-michalczajka","plugin_committers-michalczajka"],"banners":[],"icons":{"svg":"https:\/\/ps.w.org\/pewit-ai-media-toolkit\/assets\/icon.svg?rev=3581532","icon":"https:\/\/ps.w.org\/pewit-ai-media-toolkit\/assets\/icon.svg?rev=3581532","icon_2x":false,"generated":false},"screenshots":[],"raw_content":"<!--section=description-->\n<p>AI Media Toolkit scans your media library, generates and completes image metadata (ALT, title, caption, description) with OpenAI, renames files to SEO-friendly names while keeping the same attachment ID, and protects you with backups and one-click rollback before any destructive operation.<\/p>\n\n<h4>Fully functional and free<\/h4>\n\n<p>Every feature in this plugin is free and fully functional: bring your own API key (OpenAI, Anthropic Claude or Google Gemini), scan your whole media library, generate or complete metadata one at a time or in the background for the entire library, bulk SEO filename rename, automatic backups, rollback &amp; recovery, duplicate\/quality analysis, client audit export, email reports, Media Library bulk actions and white-label branding. Nothing is locked behind a license.<\/p>\n\n<p>Optionally, you can subscribe to <strong>managed AI credits<\/strong> (so you don't need your own API key) and priority support at https:\/\/pewitlabs.com\/pricing\/ \u2014 this is a paid external service, not a requirement to use the plugin.<\/p>\n\n<h4>AI metadata generation<\/h4>\n\n<ul>\n<li>Generate ALT, title, caption and description from the image itself (vision model).<\/li>\n<li>Complete only the missing fields when some metadata already exists.<\/li>\n<li>Generation modes: Balanced, SEO, WCAG (accessibility-first).<\/li>\n<li>Multilingual: auto-detects language via WPML \/ Polylang \/ site locale, or forces a global language.<\/li>\n<li>Global website context field to steer tone and domain vocabulary.<\/li>\n<li>Configurable OpenAI model (default gpt-4o-mini) and API key test button.<\/li>\n<\/ul>\n\n<h4>Scanning &amp; usage detection<\/h4>\n\n<ul>\n<li>Smart scan of the whole library or only used images.<\/li>\n<li>Usage detection modes: Strict, Balanced, Debug.<\/li>\n<li>Detects usage in post content, featured images, WooCommerce galleries, Bricks, EtchWP and ACF fields.<\/li>\n<li>Filters: missing ALT, incomplete metadata, bad filename, supported only, skipped.<\/li>\n<\/ul>\n\n<h4>SEO filenames<\/h4>\n\n<ul>\n<li>Build SEO filenames from product\/page\/post usage context.<\/li>\n<li>Rename existing files keeping the same attachment ID (references via ID stay intact).<\/li>\n<li>Replace a media file in place (keep ID), optional thumbnail regeneration and WooCommerce cache clear.<\/li>\n<li>Bulk SEO rename: only bad filenames, or all listed images.<\/li>\n<\/ul>\n\n<h4>Background queue<\/h4>\n\n<ul>\n<li>Processes jobs in the background via WP-Cron.<\/li>\n<li>Configurable batch size and delay between batches.<\/li>\n<li>Pause, resume, stop and clear running jobs, with a live activity log.<\/li>\n<\/ul>\n\n<h4>Safety, backups &amp; recovery<\/h4>\n\n<ul>\n<li>Auto-backup before file changes, rename, replace and recovery operations.<\/li>\n<li>Snapshots of image files, attachment metadata and WooCommerce relations.<\/li>\n<li>One-click rollback of the last operation, manual snapshots, ZIP export.<\/li>\n<li>Emergency repair for broken \/ too-small product images after a bad rename.<\/li>\n<\/ul>\n\n<h4>Reports &amp; notifications<\/h4>\n\n<ul>\n<li>Duplicate and quality analysis with a media health score.<\/li>\n<li>CSV report export.<\/li>\n<li>Email notification when a background job finishes (basic \/ detailed \/ full).<\/li>\n<\/ul>\n\n<h3>External services<\/h3>\n\n<p>This plugin connects to third-party services to generate image metadata. Please review this before use.<\/p>\n\n<p>You choose the AI provider in the plugin settings and use your own API key (BYOK). No data is sent to any provider until you trigger a generation. Requests go directly from your site to the selected provider under your own key and that provider's terms. Nothing is sent to the plugin author.<\/p>\n\n<p>OpenAI API (https:\/\/openai.com):\n* What and when: when you generate image metadata (vision), generate an image (DALL\u00b7E), or run a text task, the image data\/URL and\/or text prompt are sent to OpenAI to produce ALT text, title, caption, description or image output.\n* Data sent: the image data\/URL, optional context text you configure, and the selected model name.\n* Terms: https:\/\/openai.com\/policies\/terms-of-use \u2014 Privacy: https:\/\/openai.com\/policies\/privacy-policy<\/p>\n\n<p>Anthropic (Claude) API (https:\/\/www.anthropic.com):\n* What and when: only if you select Claude as the text provider \u2014 when you run a text generation task, your text prompt (and image data, for vision-capable models) is sent to Anthropic to produce the requested text.\n* Data sent: the text prompt, optional context text you configure, and the selected model name.\n* Terms: https:\/\/www.anthropic.com\/legal\/consumer-terms \u2014 Privacy: https:\/\/www.anthropic.com\/legal\/privacy<\/p>\n\n<p>Google Gemini API (https:\/\/ai.google.dev):\n* What and when: only if you select Gemini as the text provider \u2014 when you run a text generation task, your text prompt (and image data, for vision-capable models) is sent to Google's Generative Language API to produce the requested text.\n* Data sent: the text prompt, optional context text you configure, and the selected model name.\n* Terms: https:\/\/ai.google.dev\/gemini-api\/terms \u2014 Privacy: https:\/\/policies.google.com\/privacy<\/p>\n\n<p>Freemius (licensing &amp; checkout \u2014 https:\/\/freemius.com):\n* What and when: used for license activation, updates and (for paid plans) checkout as Merchant of Record. Opt-in is optional.\n* Terms: https:\/\/freemius.com\/terms\/ \u2014 Privacy: https:\/\/freemius.com\/privacy\/<\/p>\n\n<h3>Source code<\/h3>\n\n<p>All JavaScript and CSS shipped in this plugin (in assets\/js and assets\/css) is the original, hand-written, human-readable source. Nothing is minified, compiled, transpiled or generated by a build tool, so no separate source files are required \u2014 what you read in the plugin is the source. The only bundled third-party library is the Freemius SDK (vendor\/freemius), whose source is available at https:\/\/github.com\/Freemius\/wordpress-sdk<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Upload the plugin ZIP through Plugins -&gt; Add New -&gt; Upload Plugin, or extract it to wp-content\/plugins\/pewit-ai-media-toolkit\/.<\/li>\n<li>Activate the plugin.<\/li>\n<li>Open AI Media Toolkit -&gt; Settings, paste your OpenAI API key, click Save &amp; Test.<\/li>\n<li>Run Scan images, then start generating metadata.<\/li>\n<\/ol>\n\n<p>The plugin folder must always be pewit-ai-media-toolkit\/ and the main file pewit-ai-media-toolkit.php.<\/p>\n\n<!--section=faq-->\n<dl>\n<dt id=\"do%20i%20need%20an%20openai%20api%20key%3F\"><h3>Do I need an OpenAI API key?<\/h3><\/dt>\n<dd><p>Yes. The plugin uses your own OpenAI API key with access to a vision-capable model. Managed AI credit packs (no key required) are planned.<\/p>\n\n<p><strong>How to get a key (quick steps):<\/strong>\n1. Sign up at https:\/\/platform.openai.com\/ (this is not the same as ChatGPT Plus).\n2. Add a payment method under Settings -&gt; Billing and set a monthly spend limit.\n3. Go to https:\/\/platform.openai.com\/api-keys -&gt; Create new secret key -&gt; copy the sk-... value immediately (shown only once).\n4. In WordPress: AI Media Toolkit -&gt; Settings -&gt; paste the key -&gt; Save &amp; Test.<\/p>\n\n<p>Default model gpt-4o-mini is inexpensive for image metadata (typically a fraction of a cent per image).<\/p><\/dd>\n<dt id=\"will%20renaming%20files%20break%20links%20to%20my%20images%3F\"><h3>Will renaming files break links to my images?<\/h3><\/dt>\n<dd><p>Renames keep the same attachment ID, so references made via attachment ID (most page builders, WooCommerce, ACF) stay intact. Always test on staging first and keep auto-backup enabled.<\/p><\/dd>\n<dt id=\"is%20there%20a%20ziparchive%20requirement%3F\"><h3>Is there a ZipArchive requirement?<\/h3><\/dt>\n<dd><p>Only for ZIP backup export. The rest of the plugin works without it.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.3.1<\/h4>\n\n<ul>\n<li>Fixed: removed all license\/plan gating of built-in features from the wordpress.org build \u2014 every shipped feature is unconditionally free and fully functional (no trialware).<\/li>\n<li>Changed: the white-label client audit (PDF-ready export) is no longer part of the free build; it is an optional add-on feature.<\/li>\n<li>Changed: white-label brand\/logo settings save for everyone in the free build.<\/li>\n<li>Added: \"Source code\" section documenting that all JS\/CSS is hand-written, unminified source.<\/li>\n<li>Fixed: prefixed remaining globals (AIMT_DeactivatePrompt, aimt_backup_root\/aimt_backup_base_dir) to avoid collisions.<\/li>\n<\/ul>\n\n<h4>1.3.0<\/h4>\n\n<ul>\n<li>Changed: renamed to \"Pewit AI Media Toolkit\" (new slug pewit-ai-media-toolkit) for a distinctive directory name.<\/li>\n<li>Changed: every feature is now free and fully functional \u2014 no license gating of built-in features. Optional paid managed AI credits and support remain available as an external service.<\/li>\n<li>Added: External services documentation for OpenAI, Anthropic (Claude) and Google Gemini, including terms\/privacy links.<\/li>\n<li>Fixed: removed Google Fonts (no external font requests); admin uses a system font stack.<\/li>\n<li>Fixed: client audit is rendered on demand and streamed instead of writing an HTML file to uploads.<\/li>\n<li>Fixed: removed unnecessary direct load of wp-admin\/includes\/media.php.<\/li>\n<li>Security: recovery candidates and folders are now strictly constrained to the uploads directory (realpath-based) to prevent path traversal from tampered meta.<\/li>\n<li>Fixed: dropped a filesystem-incompatible vendor filename; build now excludes spaced and *.dc.html artifacts.<\/li>\n<\/ul>\n\n<h4>1.2.8<\/h4>\n\n<ul>\n<li>Fixed: Plugin Check i18n errors (translators comment placement); silenced advisory warnings (set_time_limit, direct DB cleanup queries, WPML\/suite integration hooks, validated upload input).<\/li>\n<\/ul>\n\n<h4>1.2.7<\/h4>\n\n<ul>\n<li>Fixed: fatal error on load (\"Call to undefined function aimt_can_automate()\") that broke autopilot scheduling and upload hooks.<\/li>\n<\/ul>\n\n<h4>1.2.6<\/h4>\n\n<ul>\n<li>Fixed: remaining Plugin Check errors (i18n translators, rename fallback, inline AJAX nonce verification).<\/li>\n<\/ul>\n\n<h4>1.2.5<\/h4>\n\n<ul>\n<li>Fixed: WordPress Plugin Check \u2014 i18n translators comments, output escaping, filesystem helpers, WP 6.1 minimum for object cache API.<\/li>\n<\/ul>\n\n<h4>1.2.4<\/h4>\n\n<ul>\n<li>Fixed: WordPress.org Plugin Check i18n compliance for shared LLM client.<\/li>\n<\/ul>\n\n<h4>1.2.3<\/h4>\n\n<ul>\n<li>Added: Settings provider selector \u2014 OpenAI, Claude (Pro), Gemini (Pro). Vision metadata and DALL\u00b7E remain OpenAI-only.<\/li>\n<\/ul>\n\n<h4>1.2.2<\/h4>\n\n<ul>\n<li>Added: Agency client audit export (PDF-ready) with health score and white-label logo support.<\/li>\n<li>Changed: Pro backups use shared folder uploads\/pewit-labs-backups\/ai-media-toolkit\/.<\/li>\n<li>Changed: Dashboard callout when AI Content Assist is active.<\/li>\n<\/ul>\n\n<h4>1.2.1<\/h4>\n\n<ul>\n<li>Added: Send test email and Run scheduled scan now in Scheduled autopilot settings.<\/li>\n<li>Fixed: Scheduled scan no longer requires a verified API key for scan and email notifications.<\/li>\n<\/ul>\n\n<h4>1.2.0<\/h4>\n\n<ul>\n<li>Added: Auto metadata on upload (Pro) \u2014 background ALT\/title\/caption after new uploads.<\/li>\n<li>Added: Scheduled library scan with optional auto-fix queue and email reports (Pro).<\/li>\n<\/ul>\n\n<h4>1.0.3<\/h4>\n\n<ul>\n<li>Review prompt after 14 days of use (rate \/ snooze \/ dismiss).<\/li>\n<\/ul>\n\n<h4>1.0.2<\/h4>\n\n<ul>\n<li>New setting: choose WordPress image size sent to OpenAI for metadata (default Large ~1024 px).<\/li>\n<\/ul>\n\n<h4>1.0.1<\/h4>\n\n<ul>\n<li>Fixed: backup ZIP export now downloads (registered authenticated download handler).<\/li>\n<li>Fixed: saving settings no longer clears a stored API key when the key field is left empty.<\/li>\n<li>Changed: API key shown masked in Settings (last 4 characters only); Change key \/ Cancel flow.<\/li>\n<li>Changed: admin tab layout polish (Context, Language, Reports, Images, Recovery, Settings).<\/li>\n<li>See CHANGELOG.md for full history.<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Stable release: change history restore UI, first-run onboarding, broken-size audit\/filter, bulk thumbnail regen and selected repair.<\/li>\n<li>See CHANGELOG.md for full history.<\/li>\n<\/ul>\n\n<h4>1.0.0-alpha.7<\/h4>\n\n<ul>\n<li>Pro: background job to generate featured images for published posts that are missing one (Settings -&gt; Featured image AI).<\/li>\n<\/ul>\n\n<h4>1.0.0-alpha.6<\/h4>\n\n<ul>\n<li>Auto-generate featured image on publish when the post has no featured image yet (Pro, optional checkbox in Settings).<\/li>\n<\/ul>\n\n<h4>1.0.0-alpha.5<\/h4>\n\n<ul>\n<li>Featured image settings: style preset (photo, illustration, regional aesthetics) + custom style prompt field.<\/li>\n<\/ul>\n\n<h4>1.0.0-alpha.4<\/h4>\n\n<ul>\n<li>Pro: generate a featured image from post title\/content in the post editor and set it immediately.<\/li>\n<li>Settings for image model, size and optional metadata on the generated image.<\/li>\n<\/ul>\n\n<h4>1.0.0-alpha.3<\/h4>\n\n<ul>\n<li>Native Media Library: generate all metadata or change filename directly on each image (sidebar panel + list quick actions).<\/li>\n<li>API key must be saved and tested before generation; otherwise users see a link to Settings.<\/li>\n<li>Settings: hover help icon next to the OpenAI API key field.<\/li>\n<\/ul>\n\n<h4>1.0.0-alpha.2<\/h4>\n\n<ul>\n<li>Sidebar tabs now show one workspace section at a time (mockup-style), including automatic tab selection from the WordPress submenu.<\/li>\n<li>Images table: new <strong>Change filename<\/strong> button per row for single-file SEO rename (Pro).<\/li>\n<\/ul>\n\n<h4>1.0.0-alpha.1<\/h4>\n\n<ul>\n<li>Major admin UI redesign: Geist typography, modern sidebar navigation, dashboard KPI cards, light activity log, and refreshed forms\/tables\/buttons.<\/li>\n<li>OpenAI API key setup guide in Settings for beginners.<\/li>\n<li>Backup progress indicator, automatic ZIP\/CSV downloads, and security hardening from 0.9.9.x.<\/li>\n<\/ul>\n\n<h4>0.9.9.2<\/h4>\n\n<ul>\n<li>Manual recovery snapshots now show live progress and run in batches (no more \"is it working?\" or timeouts on large libraries).<\/li>\n<li>Fixed: backup ZIP \/ CSV downloads now start automatically instead of relying on a new-tab link that some browsers blocked.<\/li>\n<li>Fixed: CSV reports could download as .txt in some browsers; the download now sends the correct file type.<\/li>\n<\/ul>\n\n<h4>0.9.9<\/h4>\n\n<ul>\n<li>Security hardening: backup and report folders are now access-protected (no public listing or download).<\/li>\n<li>Backup ZIPs and CSV reports are served through an authenticated, nonce-checked download handler instead of a public URL.<\/li>\n<li>CSV exports escape values that could trigger spreadsheet formula injection.<\/li>\n<\/ul>\n\n<h4>0.9.8<\/h4>\n\n<ul>\n<li>Added a \"Your plan\" panel in the admin (current plan badge, manage license\/invoices and upgrade links).<\/li>\n<li>Agency white-label: replace the plugin name and logo in the admin menu, dashboard header and job emails.<\/li>\n<\/ul>\n\n<h4>0.9.7<\/h4>\n\n<ul>\n<li>Free\/Pro\/Agency feature gating: single-image generation, library scan and basic CSV report stay free; background bulk generation, bulk SEO rename, backups\/recovery, analysis and email reports are now Pro.<\/li>\n<li>Added upgrade prompts and a \"Upgrade to Pro\" banner for free users, plus server-side enforcement of Pro-only actions.<\/li>\n<\/ul>\n\n<h4>0.9.6.1<\/h4>\n\n<ul>\n<li>First build packaged for Freemius deployment. No functional changes versus 0.9.6.<\/li>\n<\/ul>\n\n<h4>0.9.6<\/h4>\n\n<ul>\n<li>Added Freemius licensing bootstrap and bundled the Freemius SDK.<\/li>\n<li>Moved uninstall logic to a Freemius after_uninstall handler (settings kept by default during beta).<\/li>\n<li>Hardened license helpers so the plugin runs safely without the SDK.<\/li>\n<\/ul>\n\n<h4>0.9.5<\/h4>\n\n<ul>\n<li>Media library menu and SEO filename UX fixes.<\/li>\n<\/ul>","raw_excerpt":"AI-powered image metadata (ALT, title, caption, description), SEO filenames, smart scanning and safe bulk media management with backups.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/mfe.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/328484","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/mfe.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/mfe.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/mfe.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=328484"}],"author":[{"embeddable":true,"href":"https:\/\/mfe.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/michalczajka"}],"wp:attachment":[{"href":"https:\/\/mfe.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=328484"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/mfe.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=328484"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/mfe.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=328484"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/mfe.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=328484"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/mfe.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=328484"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/mfe.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=328484"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}