[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"$f8XIr6jxg94Suk4BW095kvL31Pn1ZT2h7nOhWDiIdAvI":3},{"slug":4,"name":5,"version":6,"author":7,"author_profile":8,"description":9,"short_description":10,"active_installs":11,"downloaded":12,"rating":13,"num_ratings":13,"last_updated":14,"tested_up_to":15,"requires_at_least":16,"requires_php":17,"tags":18,"homepage":24,"download_link":25,"security_score":26,"vuln_count":13,"unpatched_count":13,"last_vuln_date":27,"fetched_at":28,"vulnerabilities":29,"developer":30,"crawl_stats":27,"alternatives":38,"analysis":112,"fingerprints":583},"ai-seo-tools","AI SEO Tools","2.0.3","KingAddons.com","https:\u002F\u002Fprofiles.wordpress.org\u002Fkingaddons\u002F","\u003Cp>AI SEO Tools leverages generative AI to automate and enhance your WordPress SEO. Features include:\u003Cbr \u002F>\n* Automatic image alt text generation.\u003Cbr \u002F>\n* Content Refresh & SEO Optimizer: Analyze and refresh old posts, suggest AI-powered updates, keywords, and meta descriptions.\u003Cbr \u002F>\n* Auto Tagging for Posts: Automatically generate semantically relevant tags.\u003Cbr \u002F>\n* Bulk Alt Text Generation: Generate alt text for multiple images in bulk with configurable delay and detail level.\u003Cbr \u002F>\n* Bulk Tagging: Process multiple posts for auto-tagging in bulk.\u003Cbr \u002F>\n* Bulk Append Tags: Append new AI-generated tags to posts with existing tags.\u003Cbr \u002F>\n* Bulk Regenerate Tags: Regenerate tags for posts to keep metadata fresh.\u003Cbr \u002F>\n* Custom Alt Text Language: Generate alt text in any specified language (e.g., Spanish, French).\u003Cbr \u002F>\n* Custom Alt Text Prompt: Customize the AI prompt for alt text generation.\u003Cbr \u002F>\n* Dynamic OpenAI Model Selection: Choose vision models, refresh the model list, and cache results.\u003C\u002Fp>\n\u003Cp>Enjoy all AI features at OpenAI cost, with no additional fees from us!\u003C\u002Fp>\n\u003Ch3>Automatic Image Alt Text Generator\u003C\u002Fh3>\n\u003Cp>Summary: This module automatically generates descriptive alt text for your Media Library images using AI, improving accessibility and SEO.\u003C\u002Fp>\n\u003Cp>Return Value: The generated alt text is saved to each image’s ALT attribute.\u003C\u002Fp>\n\u003Cp>Examples:\u003Cbr \u002F>\n* Enable the Alt Text Generator module in Settings -> AI SEO Tools.\u003Cbr \u002F>\n* Visit the Alt Text Generator tab to view statistics and generate alt text for one or all images.\u003C\u002Fp>\n\u003Ch3>Content Refresh & SEO Optimizer\u003C\u002Fh3>\n\u003Cp>Summary: This module uses generative AI to analyze your existing posts and suggest updates or rewrites for outdated sections, recommend low-competition keywords, and auto-generate meta descriptions or summaries. It helps keep your content up-to-date and SEO-friendly, saving hours of manual editing and improving your site’s search rankings.\u003C\u002Fp>\n\u003Cp>Return Value: AI-powered content suggestions for your posts.\u003C\u002Fp>\n\u003Cp>Examples:\u003Cbr \u002F>\n– Enable the module in the plugin settings.\u003Cbr \u002F>\n– Visit the Content Refresh tab for more information and future controls.\u003C\u002Fp>\n\u003Ch3>Auto Tagging\u003C\u002Fh3>\n\u003Cp>Summary: Automatically generate semantically relevant tags for your posts using AI to enhance metadata and internal linking.\u003C\u002Fp>\n\u003Cp>Return Value: AI-generated tags applied to each post.\u003C\u002Fp>\n\u003Cp>Examples:\u003Cbr \u002F>\n* Enable the Auto Tagging module in Settings -> AI SEO Tools.\u003Cbr \u002F>\n* Visit the Auto Tagging tab to bulk tag your published posts.\u003C\u002Fp>\n\u003Ch3>Bulk Processing Overview\u003C\u002Fh3>\n\u003Cp>Summary: Perform bulk operations for alt text generation, tagging, appending tags, and regenerating tags with progress feedback.\u003C\u002Fp>\n\u003Cp>Settings:\u003Cbr \u002F>\n* Bulk Processing Delay: Seconds to wait between API calls to avoid rate limits.\u003Cbr \u002F>\n* Image Detail Level: Controls granularity of analysis (‘low’ or ‘high’).\u003C\u002Fp>\n\u003Cp>Examples:\u003Cbr \u002F>\n* In the Alt Text Generator tab, click ‘Start Bulk Generation’ to process multiple images.\u003Cbr \u002F>\n* In the Auto Tagging tab, click ‘Start Bulk Tagging’, ‘Start Bulk Append’, or ‘Start Bulk Regenerate’ as needed.\u003C\u002Fp>\n\u003Ch3>Customization\u003C\u002Fh3>\n\u003Cp>Summary: Customize alt text language, prompt, and OpenAI model selection for fine-tuned AI behavior.\u003C\u002Fp>\n\u003Cp>Settings:\u003Cbr \u002F>\n* Custom Alt Text Language: Generate alt text in any specified language.\u003Cbr \u002F>\n* Custom Alt Text Prompt: Provide a custom prompt for alt text generation.\u003Cbr \u002F>\n* Dynamic OpenAI Model Selection: Choose the model and refresh the available list.\u003C\u002Fp>\n\u003Cp>Examples:\u003Cbr \u002F>\n* Check ‘Generate alt text in a non-English language’ and enter ‘German’.\u003Cbr \u002F>\n* Click the ‘Refresh List’ button next to the Model selection in Settings to update available models.\u003C\u002Fp>\n\u003Ch3>External services\u003C\u002Fh3>\n\u003Cp>This plugin connects to the OpenAI API (https:\u002F\u002Fapi.openai.com) to generate AI-powered content for alt text, content refresh suggestions, and post tagging.\u003Cbr \u002F>\n– What data is sent: It sends your image metadata (for alt text), post content (for suggestions), and any custom prompts or language preferences you have configured.\u003Cbr \u002F>\n– When: Data is sent when you manually generate alt text, initiate bulk generation, analyze content refresh, or generate\u002Fappend\u002Fregenerate tags.\u003Cbr \u002F>\n– Why: AI processing is performed by OpenAI models to provide advanced SEO and accessibility enhancements.\u003Cbr \u002F>\n– Service provider: OpenAI Inc.\u003Cbr \u002F>\n  – Terms of Use: https:\u002F\u002Fopenai.com\u002Fpolicies\u002Fterms-of-use\u003Cbr \u002F>\n  – Privacy Policy: https:\u002F\u002Fopenai.com\u002Fpolicies\u002Fprivacy-policy\u003C\u002Fp>\n","AI SEO Tools uses AI to automatically improve your site's SEO, including generating image alt text, content refresh and auto tagging.",600,1849,0,"2025-06-23T21:47:00.000Z","6.8.5","6.0","8.0",[19,20,21,22,23],"accessibility","ai","alt-text","images","seo","","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fai-seo-tools.2.0.3.zip",100,null,"2026-03-15T15:16:48.613Z",[],{"slug":31,"display_name":7,"profile_url":8,"plugin_count":32,"total_installs":33,"avg_security_score":34,"avg_patch_time_days":35,"trust_score":36,"computed_at":37},"kingaddons",5,11200,84,13,83,"2026-04-03T21:31:02.522Z",[39,57,72,85,99],{"slug":40,"name":41,"version":42,"author":43,"author_profile":44,"description":45,"short_description":46,"active_installs":47,"downloaded":48,"rating":26,"num_ratings":49,"last_updated":50,"tested_up_to":51,"requires_at_least":52,"requires_php":53,"tags":54,"homepage":55,"download_link":56,"security_score":26,"vuln_count":13,"unpatched_count":13,"last_vuln_date":27,"fetched_at":28},"ai-auto-alt-text-generator","AI Auto Alt Text Generator","1.19","Connor Bulmer","https:\u002F\u002Fprofiles.wordpress.org\u002Fconnorbulmer\u002F","\u003Cp>\u003Cstrong>AI Auto Alt Text Generator\u003C\u002Fstrong> is a lightweight, privacy-conscious plugin that uses OpenAI vision-capable models (defaulting to GPT-4o mini, with GPT 5 Mini\u002FNano options) to create meaningful, screen-reader-friendly alt text and SEO-friendly titles for your images. Whether you add a single image, bulk-process your library, or just want a one-click fix in the Media Library, the plugin handles it all – no manual effort required.\u003C\u002Fp>\n\u003Cp>This solution is far cheaper than many alternatives because it cuts out the middle-person. You’ll just need to bring your own OpenAI API key.\u003C\u002Fp>\n\u003Ch3>✨ Key features\u003C\u002Fh3>\n\u003Cul>\n\u003Cli>\u003Cstrong>Automatic alt text on upload\u003C\u002Fstrong> – set-and-forget accessibility.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Optional automatic image titles\u003C\u002Fstrong> – improve SEO with descriptive titles.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>One-click manual generation\u003C\u002Fstrong> – “Generate Alt Text & Title” button in the Media Library.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Bulk update tool\u003C\u002Fstrong> – batch-process existing images (five at a time) with a configurable pause between batches.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Prompt fine-tuning\u003C\u002Fstrong> – supply site-wide context and optionally include the image file name.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Model selection\u003C\u002Fstrong> – choose GPT-4o mini (default) or GPT 5 Mini\u002FNano (BETA).\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Image size & detail control\u003C\u002Fstrong> – choose the resolution and level of visual detail sent.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>No extra servers\u003C\u002Fstrong> – data flows only between your site and OpenAI; nothing is stored off-site.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Multilingual output\u003C\u002Fstrong> – choose English (UK), English (US) or other popular languages. (English US is the default.)\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3>🧭 Where to find the bulk tool\u003C\u002Fh3>\n\u003Cul>\n\u003Cli>\u003Cstrong>Tools \u003Cspan aria-hidden=\"true\" class=\"wp-exclude-emoji\">→\u003C\u002Fspan> Bulk Alt Text Update\u003C\u002Fstrong>\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Media \u003Cspan aria-hidden=\"true\" class=\"wp-exclude-emoji\">→\u003C\u002Fspan> Bulk Alt Text Update\u003C\u002Fstrong> (shortcut that redirects to the Tools page)\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Settings \u003Cspan aria-hidden=\"true\" class=\"wp-exclude-emoji\">→\u003C\u002Fspan> Alt Text Generator\u003C\u002Fstrong> includes a button linking straight to the bulk page\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3>🧠 How it works\u003C\u002Fh3>\n\u003Col>\n\u003Cli>When an image is uploaded (or manually chosen), the plugin creates a temporary public URL for that image.\u003C\u002Fli>\n\u003Cli>It sends the image – plus optional context such as the parent post title, your custom site context and the file name – to your selected OpenAI vision model.\u003C\u002Fli>\n\u003Cli>OpenAI returns a concise description.\n\u003Cul>\n\u003Cli>Alt text is stored in WordPress’ native \u003Ccode>_wp_attachment_image_alt\u003C\u002Fcode> field.  \u003C\u002Fli>\n\u003Cli>(Optional) The returned title is stored as the attachment post title.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003C\u002Fli>\n\u003Cli>Nothing is cached or stored on OpenAI’s side; only the final strings live in your database.\u003C\u002Fli>\n\u003C\u002Fol>\n\u003Ch3>Settings overview\u003C\u002Fh3>\n\u003Cul>\n\u003Cli>\u003Cstrong>OpenAI API Key\u003C\u002Fstrong> – Required to connect to GPT-4o.  \u003C\u002Fli>\n\u003Cli>\u003Cstrong>OpenAI Model\u003C\u002Fstrong> – GPT-4o mini (default), GPT 5 Mini (BETA), or GPT 5 Nano (BETA).  \u003C\u002Fli>\n\u003Cli>\u003Cstrong>Image Size to Send\u003C\u002Fstrong> – Thumbnail, Medium, Large, or Full.  \u003C\u002Fli>\n\u003Cli>\u003Cstrong>Image Detail Quality\u003C\u002Fstrong> – ‘Low’ or ‘High’ (Low uses fewer tokens).  \u003C\u002Fli>\n\u003Cli>\u003Cstrong>Bulk batch size\u003C\u002Fstrong> – Number of images per batch (lower values reduce rate-limit risk).  \u003C\u002Fli>\n\u003Cli>\u003Cstrong>Site Context\u003C\u002Fstrong> – Optional free-form prompt guidance (brand voice, niche, etc.).  \u003C\u002Fli>\n\u003Cli>\u003Cstrong>Send Image File Name\u003C\u002Fstrong> – Include file name in the prompt for extra context.  \u003C\u002Fli>\n\u003Cli>\u003Cstrong>Automatically Generate Title\u003C\u002Fstrong> – Add descriptive titles alongside alt text.  \u003C\u002Fli>\n\u003Cli>\u003Cstrong>Use full context for image titles\u003C\u002Fstrong> – When enabled, title generation includes site context and file name (uses more tokens).  \u003C\u002Fli>\n\u003Cli>\u003Cstrong>Bulk optimiser delay (seconds)\u003C\u002Fstrong> – Pause between batches during bulk runs.  \u003C\u002Fli>\n\u003Cli>\u003Cstrong>OpenAI request timeout (seconds)\u003C\u002Fstrong> – Max wait time for OpenAI responses (10–120s) to reduce timeout failures on slower hosts.  \u003C\u002Fli>\n\u003Cli>\u003Cstrong>Output Language\u003C\u002Fstrong> – Default English (US). Choose English (UK) for British spellings or another popular language; outputs (alt text and titles) will be generated in the selected language.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3>External services\u003C\u002Fh3>\n\u003Cp>This plugin connects to the \u003Cstrong>OpenAI API\u003C\u002Fstrong> to generate alt text and (optionally) image titles.\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\u003Cstrong>Endpoint:\u003C\u002Fstrong> \u003Ccode>https:\u002F\u002Fapi.openai.com\u002Fv1\u002Fchat\u002Fcompletions\u003C\u002Fcode>  \u003C\u002Fli>\n\u003Cli>\u003Cstrong>When called:\u003C\u002Fstrong>\n\u003Cul>\n\u003Cli>On image upload (automatic)  \u003C\u002Fli>\n\u003Cli>Via “Generate Alt Text & Title” button in Media Library (manual)  \u003C\u002Fli>\n\u003Cli>Via \u003Cstrong>Tools \u003Cspan aria-hidden=\"true\" class=\"wp-exclude-emoji\">→\u003C\u002Fspan> Bulk Alt Text Update\u003C\u002Fstrong> (bulk)  \u003C\u002Fli>\n\u003C\u002Ful>\n\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Data sent:\u003C\u002Fstrong> image URL, optional file name, optional site context, optional parent post title  \u003C\u002Fli>\n\u003Cli>\u003Cstrong>Terms:\u003C\u002Fstrong> \u003Ca href=\"https:\u002F\u002Fopenai.com\u002Fpolicies\u002Fterms-of-use\" rel=\"nofollow ugc\">https:\u002F\u002Fopenai.com\u002Fpolicies\u002Fterms-of-use\u003C\u002Fa>  \u003C\u002Fli>\n\u003Cli>\u003Cstrong>Privacy:\u003C\u002Fstrong> \u003Ca href=\"https:\u002F\u002Fopenai.com\u002Fpolicies\u002Fprivacy-policy\" rel=\"nofollow ugc\">https:\u002F\u002Fopenai.com\u002Fpolicies\u002Fprivacy-policy\u003C\u002Fa>\u003C\u002Fli>\n\u003C\u002Ful>\n","Automatically generates alt text and image titles for your WordPress media uploads with selectable OpenAI models (defaulting to GPT-4o mini), improvin &hellip;",30,1196,1,"2026-03-03T09:05:00.000Z","6.9.4","5.5","7.4",[19,20,21,22,23],"https:\u002F\u002Fgithub.com\u002FConnorBulmer\u002Fai-auto-alt-text\u002F","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fai-auto-alt-text-generator.1.19.zip",{"slug":58,"name":59,"version":60,"author":61,"author_profile":62,"description":63,"short_description":64,"active_installs":65,"downloaded":66,"rating":13,"num_ratings":13,"last_updated":67,"tested_up_to":15,"requires_at_least":68,"requires_php":69,"tags":70,"homepage":24,"download_link":71,"security_score":26,"vuln_count":13,"unpatched_count":13,"last_vuln_date":27,"fetched_at":28},"ws-image-alt-text-generator","WS Image Alt Text Generator","1.0.4","Winning Solutions","https:\u002F\u002Fprofiles.wordpress.org\u002Fwinningsolutions\u002F","\u003Cp>Image Alt Text Generator by Winning Solutions uses advanced AI to automatically generate accurate and descriptive alt text for your images, improving both accessibility and SEO.\u003C\u002Fp>\n\u003Ch4>Key Features\u003C\u002Fh4>\n\u003Cul>\n\u003Cli>\u003Cstrong>One-Click Generation\u003C\u002Fstrong>: Generate alt text directly from the media library with a single click\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Bulk Processing\u003C\u002Fstrong>: Process multiple images at once with the bulk action feature\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Automatic Upload Processing\u003C\u002Fstrong>: Automatically generate alt text for images when they are uploaded to WordPress\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Customizable Options\u003C\u002Fstrong>: Choose to generate alt text, titles, and descriptions\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Language Support\u003C\u002Fstrong>: Support for multiple languages\u003C\u002Fli>\n\u003Cli>\u003Cstrong>WordPress Integration\u003C\u002Fstrong>: Seamlessly integrates with WordPress media library\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch4>Benefits\u003C\u002Fh4>\n\u003Cul>\n\u003Cli>\u003Cstrong>Improved Accessibility\u003C\u002Fstrong>: Make your website more accessible to visitors using screen readers\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Better SEO\u003C\u002Fstrong>: Enhance your SEO with descriptive image alt text that search engines can understand\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Time Saving\u003C\u002Fstrong>: Save hours of manual work with automatic generation\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Accuracy\u003C\u002Fstrong>: Get high-quality descriptions using state-of-the-art AI technology\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch4>How It Works\u003C\u002Fh4>\n\u003Col>\n\u003Cli>Install and activate the plugin\u003C\u002Fli>\n\u003Cli>Enter your API key in the settings page\u003C\u002Fli>\n\u003Cli>Configure automatic upload processing (optional) to generate alt text for new images automatically\u003C\u002Fli>\n\u003Cli>Select images in your media library\u003C\u002Fli>\n\u003Cli>Click “Generate Alt Text” on single images or use the bulk action feature\u003C\u002Fli>\n\u003Cli>Review and save the generated text\u003C\u002Fli>\n\u003C\u002Fol>\n\u003Ch4>API Key\u003C\u002Fh4>\n\u003Cp>This plugin requires an API key to function. You can get a free API key with limited credits at \u003Ca href=\"https:\u002F\u002Fwww.alt-text-generator.com\" rel=\"nofollow ugc\">alt-text-generator.com\u003C\u002Fa>. Premium plans with more credits are also available.\u003C\u002Fp>\n\u003Ch3>Privacy Policy\u003C\u002Fh3>\n\u003Cp>Image Alt Text Generator by Winning Solutions sends image URLs to our API service for processing. The image content is analyzed by our AI models to generate descriptive alt text.\u003C\u002Fp>\n\u003Cp>This plugin:\u003Cbr \u002F>\n* Collects and processes image URLs and content for alt text generation\u003Cbr \u002F>\n* Uses an API key to authenticate requests to our service\u003Cbr \u002F>\n* Does not collect personal user data\u003Cbr \u002F>\n* Includes a privacy policy statement that you can add to your site’s privacy policy\u003C\u002Fp>\n\u003Cp>For more details, visit our \u003Ca href=\"https:\u002F\u002Fwww.winning-solutions.de\u002Fdatenschutzerklaerung\" rel=\"nofollow ugc\">Privacy Policy\u003C\u002Fa>.\u003C\u002Fp>\n\u003Ch3>External services\u003C\u002Fh3>\n\u003Cp>This plugin uses Supabase Edge Functions to connect to OpenAI’s ChatGPT API for generating AI-powered alt text descriptions of images. This service is essential for the plugin’s core functionality.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>What data is sent and when:\u003C\u002Fstrong>\u003Cbr \u002F>\n* \u003Cstrong>Image URLs\u003C\u002Fstrong>: The plugin sends the public URL of images to our Supabase Edge Functions when you manually generate alt text or when automatic processing is enabled for new uploads\u003Cbr \u002F>\n* \u003Cstrong>API Key\u003C\u002Fstrong>: Your API key is sent with each request for authentication\u003Cbr \u002F>\n* \u003Cstrong>Language preference\u003C\u002Fstrong>: Your selected language code (e.g., ‘en’, ‘de’, ‘fr’) is sent to generate alt text in your preferred language\u003Cbr \u002F>\n* \u003Cstrong>Generation preferences\u003C\u002Fstrong>: Settings indicating whether to generate title, alt text, description, and caption\u003Cbr \u002F>\n* \u003Cstrong>SEO keywords\u003C\u002Fstrong>: If enabled, relevant keywords from your content are sent to help generate more SEO-friendly alt text\u003C\u002Fp>\n\u003Cp>\u003Cstrong>When data is sent:\u003C\u002Fstrong>\u003Cbr \u002F>\n* When you click “Generate Alt Text” on individual images in the media library\u003Cbr \u002F>\n* When you use the bulk action to process multiple images\u003Cbr \u002F>\n* When automatic processing is enabled and new images are uploaded to WordPress\u003Cbr \u002F>\n* When validating your API key in the settings\u003Cbr \u002F>\n* When checking your API credits (hourly, cached)\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Service provider information:\u003C\u002Fstrong>\u003Cbr \u002F>\n* \u003Cstrong>Primary Service\u003C\u002Fstrong>: Supabase Edge Functions (infrastructure)\u003Cbr \u002F>\n* \u003Cstrong>AI Service\u003C\u002Fstrong>: OpenAI ChatGPT API (image analysis and description generation)\u003Cbr \u002F>\n* \u003Cstrong>Domain\u003C\u002Fstrong>: lpsigsfofcsgnwkrasvn.supabase.co\u003Cbr \u002F>\n* \u003Cstrong>Purpose\u003C\u002Fstrong>: AI-powered image analysis and alt text generation using OpenAI’s vision models\u003Cbr \u002F>\n* \u003Cstrong>Supabase Terms of Service\u003C\u002Fstrong>: \u003Ca href=\"https:\u002F\u002Fsupabase.com\u002Fterms\" rel=\"nofollow ugc\">Supabase Terms of Service\u003C\u002Fa>\u003Cbr \u002F>\n* \u003Cstrong>Supabase Privacy Policy\u003C\u002Fstrong>: \u003Ca href=\"https:\u002F\u002Fsupabase.com\u002Fprivacy\" rel=\"nofollow ugc\">Supabase Privacy Policy\u003C\u002Fa>\u003Cbr \u002F>\n* \u003Cstrong>OpenAI Terms of Service\u003C\u002Fstrong>: \u003Ca href=\"https:\u002F\u002Fopenai.com\u002Fterms\" rel=\"nofollow ugc\">OpenAI Terms of Service\u003C\u002Fa>\u003Cbr \u002F>\n* \u003Cstrong>OpenAI Privacy Policy\u003C\u002Fstrong>: \u003Ca href=\"https:\u002F\u002Fopenai.com\u002Fprivacy\" rel=\"nofollow ugc\">OpenAI Privacy Policy\u003C\u002Fa>\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Data handling and privacy:\u003C\u002Fstrong>\u003Cbr \u002F>\nOur Supabase Edge Functions act as a secure intermediary that forwards your image URLs to OpenAI’s ChatGPT API for analysis. OpenAI’s ChatGPT processes the images to generate descriptive alt text but \u003Cstrong>does not use this data for training their models\u003C\u002Fstrong>. No personal user data beyond the API key and image URLs is transmitted. Images are processed temporarily for the purpose of generating alt text and are not stored permanently by either service.\u003C\u002Fp>\n","Automatically generate high-quality, SEO-friendly alt text for your images using AI technology.",10,159,"2025-11-06T21:53:00.000Z","5.0","7.0",[19,20,21,22,23],"https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fws-image-alt-text-generator.1.0.4.zip",{"slug":73,"name":74,"version":75,"author":76,"author_profile":77,"description":78,"short_description":79,"active_installs":13,"downloaded":80,"rating":13,"num_ratings":13,"last_updated":81,"tested_up_to":15,"requires_at_least":16,"requires_php":53,"tags":82,"homepage":83,"download_link":84,"security_score":26,"vuln_count":13,"unpatched_count":13,"last_vuln_date":27,"fetched_at":28},"aigude-tools","AiGude Tools","2.5.1","Pagemachine","https:\u002F\u002Fprofiles.wordpress.org\u002Fpagemachine\u002F","\u003Cp>\u003Cstrong>AiGude Tools\u003C\u002Fstrong> improves accessibility and SEO by automatically generating alternative text for your images using an AI-powered API.\u003Cbr \u002F>\nSave time, stay consistent, and enhance your site’s visibility in search engines, all without manually writing every alt text.\u003C\u002Fp>\n\u003Cp>Want to try it? \u003Ca href=\"https:\u002F\u002Faigude.io\u002Fen\u002FTry-It\u002F\" rel=\"nofollow ugc\">Visit our live demo.\u003C\u002Fa>\u003C\u002Fp>\n\u003Cp>To use the plugin you’ll need an AiGude API key, grab one for free at \u003Ca href=\"https:\u002F\u002Faigude.io\u002Fen\u002FProducts\u002F\" rel=\"nofollow ugc\">AiGude.io\u003C\u002Fa>.\u003C\u002Fp>\n\u003Cp>\u003Ca href=\"https:\u002F\u002Fwww.pagemachine.de\u002Fki-loesungen\u002Faigude-faq\" rel=\"nofollow ugc\">AiGude FAQ (German)\u003C\u002Fa>\u003C\u002Fp>\n\u003Ch3>Key Features\u003C\u002Fh3>\n\u003Cul>\n\u003Cli>\u003Cstrong>AI-Powered Alt Text\u003C\u002Fstrong> – Automatically generate descriptive alt text for your images using advanced AI.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Multilingual Support\u003C\u002Fstrong> – Translate prompts and alt texts via DeepL or Google with one click.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>List View\u003C\u002Fstrong> – Work through your Media Library in a powerful list interface:\n\u003Cul>\n\u003Cli>Search images by filename, title, or existing alt text\u003C\u002Fli>\n\u003Cli>Bulk-generate alt text for selected images (per page or across pages)\u003C\u002Fli>\n\u003Cli>Skip existing alt text or overwrite with new results\u003C\u002Fli>\n\u003Cli>Preview and edit a single image’s alt text before saving\u003C\u002Fli>\n\u003Cli>Select prompts with target languages for single or bulk actions\u003C\u002Fli>\n\u003C\u002Ful>\n\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Grid View\u003C\u002Fstrong> – Generate alt text directly from the Media Library’s grid:\n\u003Cul>\n\u003Cli>Quickly select multiple images\u003C\u002Fli>\n\u003Cli>Mini-grid shows your current selection\u003C\u002Fli>\n\u003C\u002Ful>\n\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Prompts\u003C\u002Fstrong> – Create template-driven prompts with placeholders (e.g., \u003Ccode>%filename%\u003C\u002Fcode>, \u003Ccode>%title%\u003C\u002Fcode>) and lock provider-specific target languages.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Settings\u003C\u002Fstrong> – Manage API keys, view remaining credits, in one place.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>Perfect for website owners, photographers, agencies, and content teams who want to improve accessibility and SEO without hours of manual work.\u003C\u002Fp>\n\u003Ch3>Data Processing and Privacy\u003C\u002Fh3>\n\u003Cp>This plugin connects to AiGude’s captioning service to generate and translate image alternative text.\u003C\u002Fp>\n\u003Cul>\n\u003Cli>Images and texts are transmitted to the service for processing.\n\u003Cul>\n\u003Cli>We do \u003Cstrong>not\u003C\u002Fstrong> store images after processing; they are held only in memory long enough to generate a response.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003C\u002Fli>\n\u003Cli>Alt-text generation is performed on AiGude–managed infrastructure located in the European Union. Image files are sent over HTTPS to this infrastructure. No third-party vendors are used for alt-text generation.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>Privacy Info:\u003Cbr \u002F>\n– \u003Ca href=\"https:\u002F\u002Faigude.io\u002FInformationen\u002FDatenschutz\" rel=\"nofollow ugc\">AiGude Privacy Policy\u003C\u002Fa>\u003Cbr \u002F>\n– \u003Ca href=\"https:\u002F\u002Faigude.io\u002FInformationen\u002FAGB\" rel=\"nofollow ugc\">AiGude Terms of Service\u003C\u002Fa>\u003Cbr \u002F>\n– \u003Ca href=\"https:\u002F\u002Fwww.pagemachine.de\u002Fki-loesungen\u002Faigude-faq\" rel=\"nofollow ugc\">AiGude FAQ (German)\u003C\u002Fa>\u003C\u002Fp>\n\u003Cp>Translations may be performed via the \u003Cstrong>DeepL API\u003C\u002Fstrong> or the \u003Cstrong>Google Cloud Translation API\u003C\u002Fstrong>, depending on your configuration.\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\n\u003Cp>\u003Cstrong>DeepL API\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cul>\n\u003Cli>Only the text to be translated and the selected language parameters are transmitted to DeepL.\u003C\u002Fli>\n\u003Cli>DeepL is headquartered in Germany and operates under EU GDPR standards.\u003C\u002Fli>\n\u003Cli>For details, see the \u003Ca href=\"https:\u002F\u002Fwww.deepl.com\u002Fprivacy\" rel=\"nofollow ugc\">DeepL Privacy Policy\u003C\u002Fa>.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003C\u002Fli>\n\u003Cli>\n\u003Cp>\u003Cstrong>Google Cloud Translation API\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cul>\n\u003Cli>Only the text to be translated and the selected language parameters are transmitted to Google.\u003C\u002Fli>\n\u003Cli>We use the Google Cloud Translation API v3 with the dedicated EU endpoint \u003Ccode>translate-eu.googleapis.com\u003C\u002Fcode>; see Google’s \u003Ca href=\"https:\u002F\u002Fdocs.cloud.google.com\u002Ftranslate\u002Fdocs\u002Fadvanced\u002Fendpoints\" rel=\"nofollow ugc\">endpoint documentation\u003C\u002Fa> for details.\u003C\u002Fli>\n\u003Cli>For more information on how Google handles translation data, see Google’s \u003Ca href=\"https:\u002F\u002Fcloud.google.com\u002Ftranslate\u002Fdata-usage\" rel=\"nofollow ugc\">Data Usage FAQ\u003C\u002Fa>.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003C\u002Fli>\n\u003C\u002Ful>\n","Generate and manage image alt text with AI; featuring bulk actions, multilingual prompts, and seamless Media Library integration.",637,"2026-03-12T11:05:00.000Z",[19,20,21,22,23],"https:\u002F\u002Fwordpress.org\u002Fplugins\u002Faigude-tools\u002F","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Faigude-tools.2.5.1.zip",{"slug":86,"name":87,"version":88,"author":89,"author_profile":90,"description":91,"short_description":92,"active_installs":13,"downloaded":93,"rating":13,"num_ratings":13,"last_updated":94,"tested_up_to":15,"requires_at_least":95,"requires_php":53,"tags":96,"homepage":97,"download_link":98,"security_score":26,"vuln_count":13,"unpatched_count":13,"last_vuln_date":27,"fetched_at":28},"altvision-ai-text-generator","AltVision AI Text Generator","4.3","eileen valedz","https:\u002F\u002Fprofiles.wordpress.org\u002Feileen2k\u002F","\u003Cp>AltVision AI Text Generator helps WordPress users automatically generate alt text for images in their Media Library using AI. This improves accessibility, SEO, and user experience across your website.\u003C\u002Fp>\n\u003Ch3>✨ Features\u003C\u002Fh3>\n\u003Cul>\n\u003Cli>Generates missing image alt text using AI for clear, concise descriptions.\u003C\u002Fli>\n\u003Cli>Processes images one-by-one to ensure stability and prevent server timeouts.\u003C\u002Fli>\n\u003Cli>Respects API rate limits, especially for free tiers.\u003C\u002Fli>\n\u003Cli>Displays the total number of images missing alt text before you start.\u003C\u002Fli>\n\u003Cli>Live progress bar and log show exactly what’s being processed.\u003C\u002Fli>\n\u003Cli>Simple admin dashboard to securely save your API key.\u003C\u002Fli>\n\u003Cli>Stores alt text automatically in the WordPress Media Library.\u003C\u002Fli>\n\u003Cli>Does not overwrite existing, manually-written alt text.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3>Credits\u003C\u002Fh3>\n\u003Cp>Developed by \u003Cstrong>Eileen\u003C\u002Fstrong> — \u003Ca href=\"https:\u002F\u002Fgetsocialguide.com\u002F\" rel=\"nofollow ugc\">GetSocialGuide.com\u003C\u002Fa>\u003C\u002Fp>\n","Automatically generate descriptive image alt text using AI to boost SEO and accessibility.",424,"2025-11-05T16:53:00.000Z","5.8",[19,20,21,22,23],"https:\u002F\u002Fgetsocialguide.com\u002Fauto-alt-text-generator\u002F","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Faltvision-ai-text-generator.4.3.1.zip",{"slug":100,"name":101,"version":102,"author":103,"author_profile":104,"description":105,"short_description":106,"active_installs":13,"downloaded":107,"rating":13,"num_ratings":13,"last_updated":108,"tested_up_to":51,"requires_at_least":68,"requires_php":53,"tags":109,"homepage":110,"download_link":111,"security_score":26,"vuln_count":13,"unpatched_count":13,"last_vuln_date":27,"fetched_at":28},"gistmag-alt-text-generator","GistMag Alt Text Generator","1.0.0","gistmag","https:\u002F\u002Fprofiles.wordpress.org\u002Folaverse\u002F","\u003Cp>GistMag Alt Text Generator helps you automatically generate high-quality alternative text for images in your WordPress media library.\u003C\u002Fp>\n\u003Cp>It uses the GistMag API to create descriptive, SEO-friendly alt text that improves accessibility for screen readers and helps search engines better understand your images.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Key features:\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cul>\n\u003Cli>Auto-generate alt text on image upload\u003C\u002Fli>\n\u003Cli>Generate alt text manually for individual images\u003C\u002Fli>\n\u003Cli>Bulk alt text generation for existing media library images\u003C\u002Fli>\n\u003Cli>Multiple modes: Short, Long, and SEO-optimized alt text\u003C\u002Fli>\n\u003Cli>Works in the Media Library list and grid views\u003C\u002Fli>\n\u003Cli>Usage statistics so you can track how many images you’ve processed\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>You will need a free GistMag account and API key to use this plugin.\u003C\u002Fp>\n","AI-powered alt text generation for your WordPress media library. Improve accessibility and SEO with high-quality alternative text for images.",113,"2026-01-03T22:54:00.000Z",[19,20,21,22,23],"https:\u002F\u002Fgistmag.co.uk\u002Fwordpress-plugin\u002Fgistmag-alt-text-generator","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fgistmag-alt-text-generator.1.0.0.zip",{"attackSurface":113,"codeSignals":279,"taintFlows":456,"riskAssessment":573,"analyzedAt":582},{"hooks":114,"ajaxHandlers":190,"restRoutes":273,"shortcodes":274,"cronEvents":275,"entryPointCount":278,"unprotectedCount":13},[115,121,125,129,132,137,142,146,151,155,158,162,167,171,174,176,179,183,186],{"type":116,"name":117,"callback":118,"file":119,"line":120},"action","admin_menu","add_settings_page","admin\\class-ai-seo-tools-settings.php",69,{"type":116,"name":122,"callback":123,"file":119,"line":124},"admin_init","register_settings",70,{"type":116,"name":126,"callback":127,"file":119,"line":128},"admin_enqueue_scripts","enqueue_settings_scripts",76,{"type":116,"name":126,"callback":130,"file":119,"line":131},"enqueue_settings_styles",78,{"type":116,"name":133,"callback":134,"file":135,"line":136},"plugins_loaded","ai_seo_tools_load_active_modules","ai-seo-tools.php",79,{"type":116,"name":138,"callback":139,"file":140,"line":141},"add_attachment","schedule_alt_text_generation","modules\\alt-text\\class-ai-seo-tools-alt-text.php",38,{"type":116,"name":143,"callback":144,"priority":65,"file":140,"line":145},"ai_seo_generate_alt_text","generate_alt_text_for_image",39,{"type":147,"name":148,"callback":149,"file":140,"line":150},"filter","manage_media_columns","add_alt_text_column",42,{"type":116,"name":152,"callback":153,"priority":65,"file":140,"line":154},"manage_media_custom_column","display_alt_text_column",43,{"type":116,"name":126,"callback":156,"file":140,"line":157},"enqueue_media_scripts",44,{"type":116,"name":159,"callback":160,"file":140,"line":161},"admin_notices","display_bulk_process_notice",56,{"type":147,"name":163,"callback":164,"file":165,"line":166},"manage_posts_columns","add_tagging_column","modules\\auto-tagging\\class-ai-seo-tools-auto-tagging.php",46,{"type":116,"name":168,"callback":169,"priority":65,"file":165,"line":170},"manage_posts_custom_column","display_tagging_column",47,{"type":116,"name":126,"callback":172,"file":165,"line":173},"enqueue_post_list_scripts",48,{"type":116,"name":159,"callback":160,"file":165,"line":175},60,{"type":147,"name":177,"callback":178,"priority":65,"file":165,"line":136},"bulk_actions-edit-post","register_bulk_clear_tags_action",{"type":147,"name":180,"callback":181,"priority":65,"file":165,"line":182},"handle_bulk_actions-edit-post","handle_bulk_clear_tags_bulk_action",80,{"type":116,"name":159,"callback":184,"file":165,"line":185},"bulk_clear_tags_admin_notice",81,{"type":116,"name":187,"callback":188,"file":189,"line":141},"add_meta_boxes","register_content_refresh_metabox","modules\\content-refresh\\class-ai-seo-tools-content-refresh.php",[191,197,200,204,208,212,216,220,223,226,229,233,237,241,245,249,253,256,259,262,265,269],{"action":192,"nopriv":193,"callback":194,"hasNonce":195,"hasCapCheck":195,"file":119,"line":196},"ai_seo_refresh_models",false,"handle_ajax_refresh_models",true,74,{"action":198,"nopriv":193,"callback":199,"hasNonce":195,"hasCapCheck":195,"file":140,"line":170},"ai_seo_generate_single_alt","handle_ajax_generate_single_alt",{"action":201,"nopriv":193,"callback":202,"hasNonce":195,"hasCapCheck":195,"file":140,"line":203},"ai_seo_start_bulk_alt","handle_ajax_start_bulk_alt",50,{"action":205,"nopriv":193,"callback":206,"hasNonce":195,"hasCapCheck":195,"file":140,"line":207},"ai_seo_get_bulk_alt_status","handle_ajax_get_bulk_alt_status",51,{"action":209,"nopriv":193,"callback":210,"hasNonce":195,"hasCapCheck":195,"file":140,"line":211},"ai_seo_stop_bulk_alt","handle_ajax_stop_bulk_alt",52,{"action":213,"nopriv":193,"callback":214,"hasNonce":195,"hasCapCheck":195,"file":140,"line":215},"ai_seo_get_stats","handle_ajax_get_stats",53,{"action":217,"nopriv":193,"callback":218,"hasNonce":195,"hasCapCheck":195,"file":140,"line":219},"ai_seo_get_image_details","handle_ajax_get_image_details",54,{"action":221,"nopriv":193,"callback":222,"hasNonce":195,"hasCapCheck":195,"file":165,"line":207},"ai_seo_generate_single_tags","handle_ajax_generate_single_tags",{"action":224,"nopriv":193,"callback":225,"hasNonce":195,"hasCapCheck":195,"file":165,"line":215},"ai_seo_regenerate_single_tags","handle_ajax_regenerate_single_tags",{"action":227,"nopriv":193,"callback":228,"hasNonce":195,"hasCapCheck":195,"file":165,"line":161},"ai_seo_start_bulk_tags","handle_ajax_start_bulk_tags",{"action":230,"nopriv":193,"callback":231,"hasNonce":195,"hasCapCheck":195,"file":165,"line":232},"ai_seo_get_bulk_tags_status","handle_ajax_get_bulk_tags_status",57,{"action":234,"nopriv":193,"callback":235,"hasNonce":195,"hasCapCheck":195,"file":165,"line":236},"ai_seo_stop_bulk_tags","handle_ajax_stop_bulk_tags",58,{"action":238,"nopriv":193,"callback":239,"hasNonce":195,"hasCapCheck":195,"file":165,"line":240},"ai_seo_start_bulk_append_tags","handle_ajax_start_bulk_append_tags",63,{"action":242,"nopriv":193,"callback":243,"hasNonce":195,"hasCapCheck":195,"file":165,"line":244},"ai_seo_get_bulk_append_tags_status","handle_ajax_get_bulk_append_tags_status",64,{"action":246,"nopriv":193,"callback":247,"hasNonce":195,"hasCapCheck":195,"file":165,"line":248},"ai_seo_stop_bulk_append_tags","handle_ajax_stop_bulk_append_tags",65,{"action":250,"nopriv":193,"callback":251,"hasNonce":195,"hasCapCheck":195,"file":165,"line":252},"ai_seo_start_bulk_regenerate_tags","handle_ajax_start_bulk_regenerate_tags",68,{"action":254,"nopriv":193,"callback":255,"hasNonce":195,"hasCapCheck":195,"file":165,"line":120},"ai_seo_get_bulk_regenerate_tags_status","handle_ajax_get_bulk_regenerate_tags_status",{"action":257,"nopriv":193,"callback":258,"hasNonce":195,"hasCapCheck":195,"file":165,"line":124},"ai_seo_stop_bulk_regenerate_tags","handle_ajax_stop_bulk_regenerate_tags",{"action":260,"nopriv":193,"callback":261,"hasNonce":195,"hasCapCheck":195,"file":165,"line":196},"ai_seo_clear_single_tags","handle_ajax_clear_single_tags",{"action":263,"nopriv":193,"callback":264,"hasNonce":195,"hasCapCheck":195,"file":165,"line":128},"ai_seo_clear_all_tags","handle_ajax_clear_all_tags",{"action":266,"nopriv":193,"callback":267,"hasNonce":195,"hasCapCheck":195,"file":189,"line":268},"ai_seo_content_refresh_analyze","handle_ajax_content_refresh_analyze",40,{"action":270,"nopriv":193,"callback":271,"hasNonce":195,"hasCapCheck":195,"file":189,"line":272},"ai_seo_content_refresh_apply","handle_ajax_content_refresh_apply",41,[],[],[276],{"hook":143,"callback":143,"file":140,"line":277},190,22,{"dangerousFunctions":280,"sqlUsage":281,"outputEscaping":283,"fileOperations":451,"externalRequests":452,"nonceChecks":453,"capabilityChecks":454,"bundledLibraries":455},[],{"prepared":13,"raw":13,"locations":282},[],{"escaped":284,"rawEcho":34,"locations":285},154,[286,289,291,293,295,297,299,301,303,305,307,309,311,313,315,317,319,321,323,325,327,329,331,333,335,337,339,341,343,345,347,349,351,353,355,357,359,361,363,365,367,369,371,373,375,377,379,381,383,385,387,389,391,393,395,397,399,401,403,405,407,409,411,413,415,417,419,421,423,425,427,429,431,433,435,437,439,441,443,445,446,447,448,450],{"file":119,"line":287,"context":288},482,"raw output",{"file":119,"line":290,"context":288},586,{"file":119,"line":292,"context":288},678,{"file":119,"line":294,"context":288},688,{"file":119,"line":296,"context":288},689,{"file":119,"line":298,"context":288},690,{"file":119,"line":300,"context":288},692,{"file":119,"line":302,"context":288},851,{"file":119,"line":304,"context":288},855,{"file":119,"line":306,"context":288},863,{"file":119,"line":308,"context":288},870,{"file":119,"line":310,"context":288},881,{"file":119,"line":312,"context":288},884,{"file":119,"line":314,"context":288},887,{"file":119,"line":316,"context":288},892,{"file":119,"line":318,"context":288},900,{"file":119,"line":320,"context":288},903,{"file":119,"line":322,"context":288},909,{"file":119,"line":324,"context":288},910,{"file":119,"line":326,"context":288},915,{"file":119,"line":328,"context":288},916,{"file":119,"line":330,"context":288},932,{"file":119,"line":332,"context":288},937,{"file":119,"line":334,"context":288},1026,{"file":119,"line":336,"context":288},1027,{"file":119,"line":338,"context":288},1040,{"file":119,"line":340,"context":288},1043,{"file":119,"line":342,"context":288},1048,{"file":119,"line":344,"context":288},1051,{"file":119,"line":346,"context":288},1052,{"file":119,"line":348,"context":288},1053,{"file":119,"line":350,"context":288},1054,{"file":119,"line":352,"context":288},1055,{"file":119,"line":354,"context":288},1070,{"file":119,"line":356,"context":288},1071,{"file":119,"line":358,"context":288},1093,{"file":119,"line":360,"context":288},1107,{"file":119,"line":362,"context":288},1111,{"file":119,"line":364,"context":288},1118,{"file":119,"line":366,"context":288},1143,{"file":119,"line":368,"context":288},1144,{"file":119,"line":370,"context":288},1268,{"file":119,"line":372,"context":288},1269,{"file":119,"line":374,"context":288},1278,{"file":119,"line":376,"context":288},1284,{"file":119,"line":378,"context":288},1289,{"file":119,"line":380,"context":288},1291,{"file":119,"line":382,"context":288},1293,{"file":119,"line":384,"context":288},1299,{"file":119,"line":386,"context":288},1302,{"file":119,"line":388,"context":288},1304,{"file":119,"line":390,"context":288},1305,{"file":119,"line":392,"context":288},1308,{"file":119,"line":394,"context":288},1309,{"file":119,"line":396,"context":288},1320,{"file":119,"line":398,"context":288},1323,{"file":119,"line":400,"context":288},1330,{"file":119,"line":402,"context":288},1333,{"file":119,"line":404,"context":288},1335,{"file":119,"line":406,"context":288},1336,{"file":119,"line":408,"context":288},1339,{"file":119,"line":410,"context":288},1340,{"file":119,"line":412,"context":288},1351,{"file":119,"line":414,"context":288},1354,{"file":119,"line":416,"context":288},1361,{"file":119,"line":418,"context":288},1364,{"file":119,"line":420,"context":288},1366,{"file":119,"line":422,"context":288},1367,{"file":119,"line":424,"context":288},1370,{"file":119,"line":426,"context":288},1371,{"file":119,"line":428,"context":288},1382,{"file":119,"line":430,"context":288},1385,{"file":119,"line":432,"context":288},1392,{"file":119,"line":434,"context":288},1393,{"file":119,"line":436,"context":288},1394,{"file":119,"line":438,"context":288},1404,{"file":165,"line":440,"context":288},597,{"file":189,"line":442,"context":288},66,{"file":189,"line":444,"context":288},67,{"file":189,"line":131,"context":288},{"file":189,"line":182,"context":288},{"file":189,"line":185,"context":288},{"file":189,"line":449,"context":288},82,{"file":189,"line":34,"context":288},2,4,28,25,[],[457,480,505,518,526,534,544,554,564],{"entryPoint":458,"graph":459,"unsanitizedCount":49,"severity":479},"handle_ajax_generate_single_alt (modules\\alt-text\\class-ai-seo-tools-alt-text.php:147)",{"nodes":460,"edges":476},[461,466,470],{"id":462,"type":463,"label":464,"file":140,"line":465},"n0","source","$_POST",161,{"id":467,"type":468,"label":469,"file":140,"line":465},"n1","transform","→ generate_alt_text_for_image()",{"id":471,"type":472,"label":473,"file":140,"line":474,"wp_function":475},"n2","sink","file_get_contents() [SSRF\u002FLFI]",237,"file_get_contents",[477,478],{"from":462,"to":467,"sanitized":193},{"from":467,"to":471,"sanitized":193},"medium",{"entryPoint":481,"graph":482,"unsanitizedCount":451,"severity":479},"\u003Cclass-ai-seo-tools-alt-text> (modules\\alt-text\\class-ai-seo-tools-alt-text.php:0)",{"nodes":483,"edges":500},[484,485,486,489,494,496,498],{"id":462,"type":463,"label":464,"file":140,"line":284},{"id":467,"type":472,"label":473,"file":140,"line":474,"wp_function":475},{"id":471,"type":463,"label":487,"file":140,"line":488},"$_POST (x2)",431,{"id":490,"type":472,"label":491,"file":140,"line":492,"wp_function":493},"n3","update_option() [Settings Manipulation]",456,"update_option",{"id":495,"type":463,"label":487,"file":140,"line":465},"n4",{"id":497,"type":468,"label":469,"file":140,"line":465},"n5",{"id":499,"type":472,"label":473,"file":140,"line":474,"wp_function":475},"n6",[501,502,503,504],{"from":462,"to":467,"sanitized":195},{"from":471,"to":490,"sanitized":195},{"from":495,"to":497,"sanitized":193},{"from":497,"to":499,"sanitized":193},{"entryPoint":506,"graph":507,"unsanitizedCount":13,"severity":517},"render_content_refresh_tab_content (admin\\class-ai-seo-tools-settings.php:952)",{"nodes":508,"edges":515},[509,512],{"id":462,"type":463,"label":510,"file":119,"line":511},"$_GET",964,{"id":467,"type":472,"label":513,"file":119,"line":340,"wp_function":514},"echo() [XSS]","echo",[516],{"from":462,"to":467,"sanitized":195},"low",{"entryPoint":519,"graph":520,"unsanitizedCount":13,"severity":517},"\u003Cclass-ai-seo-tools-settings> (admin\\class-ai-seo-tools-settings.php:0)",{"nodes":521,"edges":524},[522,523],{"id":462,"type":463,"label":510,"file":119,"line":511},{"id":467,"type":472,"label":513,"file":119,"line":340,"wp_function":514},[525],{"from":462,"to":467,"sanitized":195},{"entryPoint":527,"graph":528,"unsanitizedCount":13,"severity":517},"handle_ajax_start_bulk_alt (modules\\alt-text\\class-ai-seo-tools-alt-text.php:423)",{"nodes":529,"edges":532},[530,531],{"id":462,"type":463,"label":464,"file":140,"line":488},{"id":467,"type":472,"label":491,"file":140,"line":492,"wp_function":493},[533],{"from":462,"to":467,"sanitized":195},{"entryPoint":535,"graph":536,"unsanitizedCount":13,"severity":517},"handle_ajax_start_bulk_tags (modules\\auto-tagging\\class-ai-seo-tools-auto-tagging.php:421)",{"nodes":537,"edges":542},[538,540],{"id":462,"type":463,"label":464,"file":165,"line":539},427,{"id":467,"type":472,"label":491,"file":165,"line":541,"wp_function":493},446,[543],{"from":462,"to":467,"sanitized":195},{"entryPoint":545,"graph":546,"unsanitizedCount":13,"severity":517},"handle_ajax_start_bulk_append_tags (modules\\auto-tagging\\class-ai-seo-tools-auto-tagging.php:656)",{"nodes":547,"edges":552},[548,550],{"id":462,"type":463,"label":464,"file":165,"line":549},661,{"id":467,"type":472,"label":491,"file":165,"line":551,"wp_function":493},674,[553],{"from":462,"to":467,"sanitized":195},{"entryPoint":555,"graph":556,"unsanitizedCount":13,"severity":517},"handle_ajax_start_bulk_regenerate_tags (modules\\auto-tagging\\class-ai-seo-tools-auto-tagging.php:751)",{"nodes":557,"edges":562},[558,560],{"id":462,"type":463,"label":464,"file":165,"line":559},756,{"id":467,"type":472,"label":491,"file":165,"line":561,"wp_function":493},769,[563],{"from":462,"to":467,"sanitized":195},{"entryPoint":565,"graph":566,"unsanitizedCount":13,"severity":517},"\u003Cclass-ai-seo-tools-auto-tagging> (modules\\auto-tagging\\class-ai-seo-tools-auto-tagging.php:0)",{"nodes":567,"edges":571},[568,570],{"id":462,"type":463,"label":569,"file":165,"line":539},"$_POST (x6)",{"id":467,"type":472,"label":491,"file":165,"line":541,"wp_function":493},[572],{"from":462,"to":467,"sanitized":195},{"summary":574,"deductions":575},"The \"ai-seo-tools\" v2.0.3 plugin exhibits a generally good security posture based on the provided static analysis. The absence of known CVEs and a clean vulnerability history are strong indicators of responsible development and maintenance. The plugin also demonstrates good practices by utilizing prepared statements for all SQL queries and implementing a significant number of nonce and capability checks across its entry points, particularly its 22 AJAX handlers.\n\nHowever, there are areas that warrant attention. The static analysis revealed that 35% of output operations (approximately 83 outputs) are not properly escaped. This presents a risk of Cross-Site Scripting (XSS) vulnerabilities if user-supplied data is directly reflected in the output without sanitization. Additionally, the taint analysis identified two flows with unsanitized paths, which, although not classified as critical or high severity, still represent potential security weaknesses that could be exploited under certain circumstances.\n\nThe plugin's overall security is bolstered by its strong authentication and authorization checks on its entry points. The lack of any recorded vulnerabilities in its history is a significant positive. Nevertheless, the unescaped output and the presence of unsanitized paths in the taint analysis indicate that while the plugin is not actively known to be vulnerable, there are latent risks that could be exposed. Continued vigilance in escaping output and addressing taint flows is recommended.",[576,579],{"reason":577,"points":578},"Significant portion of outputs not properly escaped",8,{"reason":580,"points":581},"Taint analysis found unsanitized paths",6,"2026-03-16T19:26:58.371Z",{"wat":584,"direct":594},{"assetPaths":585,"generatorPatterns":589,"scriptPaths":590,"versionParams":591},[586,587,588],"\u002Fwp-content\u002Fplugins\u002Fai-seo-tools\u002Fadmin\u002Fjs\u002Fsettings-page.js","\u002Fwp-content\u002Fplugins\u002Fai-seo-tools\u002Fadmin\u002Fcss\u002Fsettings-page.css","\u002Fwp-content\u002Fplugins\u002Fai-seo-tools\u002Fassets\u002Fimages\u002Fmenu-icon.svg",[],[586],[592,593],"ai-seo-tools\u002Fadmin\u002Fjs\u002Fsettings-page.js?ver=","ai-seo-tools\u002Fadmin\u002Fcss\u002Fsettings-page.css?ver=",{"cssClasses":595,"htmlComments":603,"htmlAttributes":607,"restEndpoints":611,"jsGlobals":613,"shortcodeOutput":615},[596,597,598,599,600,601,602],"ai-seo-tools-settings-page-wrapper","ai-seo-tools-settings-section","ai-seo-tools-field-group","ai-seo-tools-field-label","ai-seo-tools-field-input","ai-seo-tools-refresh-button","ai-seo-tools-loader",[604,605,606],"\u003C!-- SVG Icon Logic -->","\u003C!-- End SVG Icon Logic -->","\u003C!-- Placeholder for dynamic content -->",[608,609,610],"data-plugin-name=\"ai-seo-tools\"","data-model-name=\"gpt-4o\"","data-model-display=\"GPT-4o (Default)\"",[612],"\u002Fwp-json\u002Fai-seo-tools\u002Fv1\u002Frefresh-models",[614],"ai_seo_settings_params",[]]