{"id":351753,"date":"2026-08-12T12:29:48","date_gmt":"2026-08-12T12:29:48","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/pihlfelt-image-assistant\/"},"modified":"2026-08-12T13:26:06","modified_gmt":"2026-08-12T13:26:06","slug":"pihlfelt-image-assistant","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/pihlfelt-image-assistant\/","author":21133816,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.0.1","stable_tag":"1.0.1","tested":"7.0.4","requires":"6.2","requires_php":"8.1","requires_plugins":null,"header_name":"Pihlfelt Image Assistant","header_author":"Pihlfelt","header_description":"Fast metadata management and image optimization for the media library. AI-generated alt text in Pro.","assets_banners_color":"0f5652","last_updated":"2026-08-12 13:26:06","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/pihlfelt.se\/plugins\/pihlfelt-image-assistant","header_author_uri":"https:\/\/pihlfelt.se","rating":0,"author_block_rating":0,"active_installs":0,"downloads":41,"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":"pihlfelt","date":"2026-08-12 12:29:16"},"1.0.1":{"tag":"1.0.1","author":"pihlfelt","date":"2026-08-12 13:26:06"}},"upgrade_notice":{"1.0.1":"<p>Fixes the Pro update checker. Free installations are unaffected.<\/p>","1.0.0":"<p>First public version.<\/p>"},"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3643383,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3643383,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3643383,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3643383,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.0.0","1.0.1"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3643383,"resolution":"1","location":"assets","locale":"","width":1216,"height":376},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3643383,"resolution":"2","location":"assets","locale":"","width":1658,"height":911},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3643383,"resolution":"3","location":"assets","locale":"","width":1652,"height":874},"screenshot-4.png":{"filename":"screenshot-4.png","revision":3643383,"resolution":"4","location":"assets","locale":"","width":1440,"height":811}},"screenshots":{"1":"Dashboard \u2014 what needs attention today","2":"The image list with filters and inline editing","3":"The AI suggestion dialog with editable fields and language choice","4":"Settings \u2014 everything is a default; each action asks when you run it"}},"plugin_section":[],"plugin_tags":[1953,17214,3868,29161,15376],"plugin_category":[34],"plugin_contributors":[259098],"plugin_business_model":[],"class_list":["post-351753","plugin","type-plugin","status-publish","hentry","plugin_tags-accessibility","plugin_tags-alt-text","plugin_tags-compress","plugin_tags-image-optimization","plugin_tags-webp","plugin_category-accessibility","plugin_contributors-pihlfelt","plugin_committers-pihlfelt"],"banners":{"banner":"https:\/\/ps.w.org\/pihlfelt-image-assistant\/assets\/banner-772x250.png?rev=3643383","banner_2x":"https:\/\/ps.w.org\/pihlfelt-image-assistant\/assets\/banner-1544x500.png?rev=3643383","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/pihlfelt-image-assistant\/assets\/icon-128x128.png?rev=3643383","icon_2x":"https:\/\/ps.w.org\/pihlfelt-image-assistant\/assets\/icon-256x256.png?rev=3643383","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/pihlfelt-image-assistant\/assets\/screenshot-1.png?rev=3643383","caption":"Dashboard \u2014 what needs attention today"},{"src":"https:\/\/ps.w.org\/pihlfelt-image-assistant\/assets\/screenshot-2.png?rev=3643383","caption":"The image list with filters and inline editing"},{"src":"https:\/\/ps.w.org\/pihlfelt-image-assistant\/assets\/screenshot-3.png?rev=3643383","caption":"The AI suggestion dialog with editable fields and language choice"},{"src":"https:\/\/ps.w.org\/pihlfelt-image-assistant\/assets\/screenshot-4.png?rev=3643383","caption":"Settings \u2014 everything is a default; each action asks when you run it"}],"raw_content":"<!--section=description-->\n<p>Pihlfelt Image Assistant gives you one place to fix the two things most media libraries get wrong: <strong>missing alt text<\/strong> and <strong>oversized images<\/strong>.<\/p>\n\n<p><strong>Metadata management<\/strong><\/p>\n\n<ul>\n<li>Instant overview: filter your library by missing alt text, missing title, oversized dimensions or heavy file size<\/li>\n<li>Inline editing of alt text, title, caption and description \u2014 right in the list, no page reloads<\/li>\n<li>10 free AI-generated alt texts per month (opt-in, see External Services below)<\/li>\n<li>AI suggestions understand context: the file name and, if you enable it, the title of the page or product where the image is used<\/li>\n<li>Works in your language \u2014 alt text is generated in the site language by default, with per-run override<\/li>\n<li>CSV export and import for bulk editing or translation workflows<\/li>\n<\/ul>\n\n<p><strong>Image optimization<\/strong><\/p>\n\n<ul>\n<li>Scale oversized originals down to a sensible maximum (default 2560 px \u2014 the same limit WordPress core uses for \"big images\")<\/li>\n<li>Compress JPEG\/PNG with a quality you choose per run \u2014 with a never-heavier guarantee: if the result would be larger, the original is kept<\/li>\n<li>Generate WebP versions and optionally serve them automatically via <code>&lt;picture&gt;<\/code> markup<\/li>\n<li>Optionally scale, compress and create WebP for new uploads automatically \u2014 set it once, every upload arrives optimized<\/li>\n<li>Automatic backup before every destructive action \u2014 undo one step or restore the untouched original at any time<\/li>\n<li>All bulk actions run live in the list with per-image progress; background work (scanning, CSV import) runs via Action Scheduler<\/li>\n<\/ul>\n\n<p><strong>Safe by design<\/strong><\/p>\n\n<ul>\n<li>Nothing is ever sent to an external server without your explicit opt-in consent<\/li>\n<li>Backups are kept forever by default; automatic pruning is opt-in<\/li>\n<li>Settings are defaults, not commands \u2014 every action asks for its parameters when you run it<\/li>\n<\/ul>\n\n<p><strong>Pro<\/strong><\/p>\n\n<p><a href=\"https:\/\/pihlfelt.se\/plugins\/pihlfelt-image-assistant\">Pihlfelt Image Assistant Pro<\/a> adds AI for all metadata fields, bulk AI for the whole library, AI file-name suggestions on upload, server-side optimization with dedicated image binaries (mozjpeg\/pngquant), and priority support. Plans start at $69\/year.<\/p>\n\n<h3>External Services<\/h3>\n\n<p>The optional AI features connect to <strong>api.pihlfelt.se<\/strong>, a service operated by the plugin author (Pihlfelt). This is what you should know before enabling them:<\/p>\n\n<p><strong>When data is sent:<\/strong> Only when you actively run an AI action (a single image or a bulk run you start yourself), and only after you have accepted the consent dialog shown on first use. Nothing is ever sent automatically or in the background. All other plugin features work entirely locally without any external connection.<\/p>\n\n<p><strong>What is sent:<\/strong><\/p>\n\n<ul>\n<li>The image you request metadata for<\/li>\n<li>The image file name<\/li>\n<li>If enabled in the settings: the title of the page\/post (or WooCommerce product) where the image is used, and the existing alt text as context<\/li>\n<li>A pseudonymized site identifier (a one-way hash \u2014 the service cannot derive your email address or domain from it), used to enforce the free monthly quota<\/li>\n<li>For Pro users: the license key, to verify the plan and quota<\/li>\n<\/ul>\n\n<p><strong>How it is processed:<\/strong> Images are processed in memory and never stored on the server. The image is forwarded to OpenAI (as a sub-processor) for the actual image analysis via their API, under terms that exclude use for model training. Usage logs (request counts, timestamps, site identifier) are kept for quota management and abuse prevention.<\/p>\n\n<p><strong>Server-side optimization (Pro):<\/strong> works the same way \u2014 the image is optimized in memory, returned, and never stored.<\/p>\n\n<p>Privacy policy: <a href=\"https:\/\/pihlfelt.se\/integritetspolicy\">https:\/\/pihlfelt.se\/integritetspolicy<\/a><\/p>\n\n<!--section=installation-->\n<ol>\n<li>Install and activate the plugin via Plugins \u2192 Add New, or upload it to <code>\/wp-content\/plugins\/pihlfelt-image-assistant<\/code><\/li>\n<li>Open <strong>Image Assistant<\/strong> in the admin menu and run your first media library scan<\/li>\n<li>Use the filter tabs to find images that need attention<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"does%20everything%20work%20without%20the%20ai%20features%3F\"><h3>Does everything work without the AI features?<\/h3><\/dt>\n<dd><p>Yes. All metadata management, scaling, compression, WebP, backups and CSV import\/export run entirely locally. The AI features are optional and disabled until you actively enable them.<\/p><\/dd>\n<dt id=\"what%20exactly%20is%20sent%20to%20the%20ai%20service%3F\"><h3>What exactly is sent to the AI service?<\/h3><\/dt>\n<dd><p>Only when you run an AI action, and only after your explicit consent: the image itself, its file name, optionally the title of the page\/product where it is used and the existing alt text, plus a pseudonymized site identifier. See the External Services section for full details. Images are never stored on the server.<\/p><\/dd>\n<dt id=\"what%20languages%20can%20alt%20text%20be%20generated%20in%3F\"><h3>What languages can alt text be generated in?<\/h3><\/dt>\n<dd><p>The site language is used by default. You can set a different default in the settings, or pick a language for an individual run in the AI dialog.<\/p><\/dd>\n<dt id=\"will%20compressing%20images%20ever%20make%20them%20larger%3F\"><h3>Will compressing images ever make them larger?<\/h3><\/dt>\n<dd><p>No. The plugin has a never-heavier guarantee: if a compression or scaling result would be larger than the original, the change is reverted and the original kept.<\/p><\/dd>\n<dt id=\"can%20i%20undo%20an%20optimization%3F\"><h3>Can I undo an optimization?<\/h3><\/dt>\n<dd><p>Yes. A backup is taken before every destructive action. You can undo the last step or restore the untouched original at any time. Backups are kept forever by default.<\/p><\/dd>\n<dt id=\"how%20does%20the%20free%20ai%20quota%20work%3F\"><h3>How does the free AI quota work?<\/h3><\/dt>\n<dd><p>The free version includes 10 AI-generated alt texts per calendar month, enforced by the service. The counter resets on the 1st. <a href=\"https:\/\/pihlfelt.se\/plugins\/pihlfelt-image-assistant\/pricing\">Pro plans<\/a> include larger monthly quotas and AI for all metadata fields.<\/p><\/dd>\n<dt id=\"does%20it%20work%20with%20woocommerce%3F\"><h3>Does it work with WooCommerce?<\/h3><\/dt>\n<dd><p>Yes. Product images are handled like any other image, and Pro can use the product name as context for better alt text.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.0.1<\/h4>\n\n<ul>\n<li>Fixed: the Pro update checker called the wrong endpoints, so Pro users would never see updates. Free installations are unaffected.<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Initial release: metadata management with inline editing, media library scanner, scaling, compression and WebP with automatic backups and restore, CSV export\/import, and opt-in AI alt text (10\/month free).<\/li>\n<\/ul>","raw_excerpt":"Find images missing alt text, fix them fast \u2014 manually or with AI \u2014 and optimize your whole media library with automatic backups.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/351753","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=351753"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/pihlfelt"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=351753"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=351753"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=351753"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=351753"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=351753"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=351753"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}