{"id":299657,"date":"2026-06-20T21:04:20","date_gmt":"2026-06-20T21:04:20","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/siteiq-seo-link-auditor\/"},"modified":"2026-07-17T20:01:55","modified_gmt":"2026-07-17T20:01:55","slug":"seomedic-seo-link-auditor","status":"publish","type":"plugin","link":"https:\/\/ltz.wordpress.org\/plugins\/seomedic-seo-link-auditor\/","author":9682675,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"2.10.0","stable_tag":"2.10.0","tested":"7.0.2","requires":"5.8","requires_php":"7.4","requires_plugins":null,"header_name":"SEOMedic \u2014 SEO Booster & Link Auditor","header_author":"Andrew Murray","header_description":"Audit broken links, fix missing meta descriptions, detect H1 issues, repair YouTube embeds, audit Schema.org markup, and clean up internal linking \u2014 all from one dashboard.","assets_banners_color":"00d4b8","last_updated":"2026-07-17 20:01:55","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"","header_author_uri":"https:\/\/getseomedic.com","rating":0,"author_block_rating":0,"active_installs":0,"downloads":406,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"2.10.0":{"tag":"2.10.0","author":"andrewmurray","date":"2026-07-17 20:01:55"},"2.8.10":{"tag":"2.8.10","author":"andrewmurray","date":"2026-06-25 07:25:33"},"2.8.11":{"tag":"2.8.11","author":"andrewmurray","date":"2026-06-25 07:34:40"},"2.8.12":{"tag":"2.8.12","author":"andrewmurray","date":"2026-06-25 15:05:07"},"2.8.13":{"tag":"2.8.13","author":"andrewmurray","date":"2026-06-25 20:49:31"},"2.8.14":{"tag":"2.8.14","author":"andrewmurray","date":"2026-06-25 20:55:13"},"2.8.21":{"tag":"2.8.21","author":"andrewmurray","date":"2026-07-17 08:07:06"},"2.8.3":{"tag":"2.8.3","author":"andrewmurray","date":"2026-06-20 21:18:26"},"2.8.4":{"tag":"2.8.4","author":"andrewmurray","date":"2026-06-22 10:09:40"},"2.8.5":{"tag":"2.8.5","author":"andrewmurray","date":"2026-06-22 10:49:47"},"2.8.6":{"tag":"2.8.6","author":"andrewmurray","date":"2026-06-22 11:10:38"},"2.8.7":{"tag":"2.8.7","author":"andrewmurray","date":"2026-06-22 12:25:35"},"2.8.8":{"tag":"2.8.8","author":"andrewmurray","date":"2026-06-24 09:39:08"},"2.8.9":{"tag":"2.8.9","author":"andrewmurray","date":"2026-06-24 17:10:02"},"2.9.0":{"tag":"2.9.0","author":"andrewmurray","date":"2026-07-17 18:23:53"}},"upgrade_notice":{"2.10.0":"<p>New Search Analytics dashboard widget. Pro surfaces your biggest ranking movers \u2014 the Google queries gaining and slipping the most \u2014 with sparklines right on your WordPress dashboard. Safe to update.<\/p>","2.9.0":"<p>New in Pro: Refresh Impact tracking. Mark a post as refreshed and SEOMedic compares its Google Search Console clicks, position, and CTR before vs after the update \u2014 proof your content refreshes are working. Safe to update.<\/p>","2.8.21":"<p>SEO-optimize your pages with real Google Search Console data: sortable GSC clicks on the Posts screen, ranked queries + LSI gaps in the editor sidebar (Pro). This update also fixes query matching on www sites and upgrade fatals from older versions. Safe to update.<\/p>","2.5.1":"<p>Stability and polish release. Adds an in-plugin Support link and renames the plugin to &quot;SEOMedic \u2014 SEO Booster &amp; Link Auditor&quot;. Free-version features unchanged. Safe to update.<\/p>","2.4.0":"<p><strong>Plugin split.<\/strong> AI\/GSC\/Bing features moved to the separate SEOMedic Pro add-on. Content Pruning redirects and Image Rename are now free. Strongly recommended update.<\/p>"},"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3603851,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3603851,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256},"icon.svg":{"filename":"icon.svg","revision":3581485,"resolution":false,"location":"assets","locale":false}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3581489,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3581489,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["2.10.0","2.8.10","2.8.11","2.8.12","2.8.13","2.8.14","2.8.21","2.8.3","2.8.4","2.8.5","2.8.6","2.8.7","2.8.8","2.8.9","2.9.0"],"block_files":[],"assets_screenshots":{"screenshot-1.jpg":{"filename":"screenshot-1.jpg","revision":3581618,"resolution":"1","location":"assets","locale":"","width":2268,"height":1166},"screenshot-2.jpg":{"filename":"screenshot-2.jpg","revision":3581618,"resolution":"2","location":"assets","locale":"","width":2154,"height":1166},"screenshot-3.jpg":{"filename":"screenshot-3.jpg","revision":3581618,"resolution":"3","location":"assets","locale":"","width":2242,"height":1120},"screenshot-4.jpg":{"filename":"screenshot-4.jpg","revision":3581618,"resolution":"4","location":"assets","locale":"","width":2242,"height":1162},"screenshot-5.jpg":{"filename":"screenshot-5.jpg","revision":3581618,"resolution":"5","location":"assets","locale":"","width":2260,"height":1164},"screenshot-6.jpg":{"filename":"screenshot-6.jpg","revision":3581618,"resolution":"6","location":"assets","locale":"","width":2196,"height":1020}},"screenshots":{"1":"One dashboard \u2014 every audit in one place: broken links, meta descriptions, internal link health, outdated dates, mixed content, and more.","2":"AI traffic classification \u2014 see which pages are winning, leaking clicks, or dead weight, with Google + Bing data side by side (SEOMedic Pro).","3":"AI Search Readiness \u2014 score every post on whether ChatGPT, Google AI Overviews, and Perplexity will cite it as a source (SEOMedic Pro).","4":"Link audit table \u2014 browse, filter, and edit every external link across your posts in one view.","5":"Bulk rel-attribute editing \u2014 apply nofollow, sponsored, UGC, and open-in-new-tab to multiple links at once, then save in one click.","6":"YouTube &amp; Video Issues \u2014 find unembedded video links, wrong-aspect-ratio embeds, and hardcoded iframes."}},"plugin_section":[262246],"plugin_tags":[14279,201184,19933,5777,186],"plugin_category":[55],"plugin_contributors":[268115],"plugin_business_model":[],"class_list":["post-299657","plugin","type-plugin","status-publish","hentry","plugin_section-dashboard-widgets","plugin_tags-broken-links","plugin_tags-focus-keyword","plugin_tags-internal-linking","plugin_tags-meta-description","plugin_tags-seo","plugin_category-seo-and-marketing","plugin_contributors-andrewmurray","plugin_committers-andrewmurray"],"banners":{"banner":"https:\/\/ps.w.org\/seomedic-seo-link-auditor\/assets\/banner-772x250.png?rev=3581489","banner_2x":"https:\/\/ps.w.org\/seomedic-seo-link-auditor\/assets\/banner-1544x500.png?rev=3581489","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":"https:\/\/ps.w.org\/seomedic-seo-link-auditor\/assets\/icon.svg?rev=3581485","icon":"https:\/\/ps.w.org\/seomedic-seo-link-auditor\/assets\/icon.svg?rev=3581485","icon_2x":false,"generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/seomedic-seo-link-auditor\/assets\/screenshot-1.jpg?rev=3581618","caption":"One dashboard \u2014 every audit in one place: broken links, meta descriptions, internal link health, outdated dates, mixed content, and more."},{"src":"https:\/\/ps.w.org\/seomedic-seo-link-auditor\/assets\/screenshot-2.jpg?rev=3581618","caption":"AI traffic classification \u2014 see which pages are winning, leaking clicks, or dead weight, with Google + Bing data side by side (SEOMedic Pro)."},{"src":"https:\/\/ps.w.org\/seomedic-seo-link-auditor\/assets\/screenshot-3.jpg?rev=3581618","caption":"AI Search Readiness \u2014 score every post on whether ChatGPT, Google AI Overviews, and Perplexity will cite it as a source (SEOMedic Pro)."},{"src":"https:\/\/ps.w.org\/seomedic-seo-link-auditor\/assets\/screenshot-4.jpg?rev=3581618","caption":"Link audit table \u2014 browse, filter, and edit every external link across your posts in one view."},{"src":"https:\/\/ps.w.org\/seomedic-seo-link-auditor\/assets\/screenshot-5.jpg?rev=3581618","caption":"Bulk rel-attribute editing \u2014 apply nofollow, sponsored, UGC, and open-in-new-tab to multiple links at once, then save in one click."},{"src":"https:\/\/ps.w.org\/seomedic-seo-link-auditor\/assets\/screenshot-6.jpg?rev=3581618","caption":"YouTube &amp; Video Issues \u2014 find unembedded video links, wrong-aspect-ratio embeds, and hardcoded iframes."}],"raw_content":"<!--section=description-->\n<p>Broken links, missing meta descriptions, duplicate H1s, unembedded YouTube videos \u2014 small technical issues that quietly cost you rankings and clicks every day. SEOMedic finds all of them in one place and gives you the tools to fix them fast.<\/p>\n\n<p>No more crawling through posts one by one. No more spreadsheets. One dashboard, every issue, fixed in minutes.<\/p>\n\n<p><strong>\ud83d\udd17 Broken Link Detection<\/strong><\/p>\n\n<p>Scan every post and page for broken external links. SEOMedic checks the live HTTP status of each URL and flags anything returning an error. Fix the URL inline \u2014 no need to open the post editor \u2014 then re-check immediately to confirm.<\/p>\n\n<p><strong>\ud83d\udcdd Missing &amp; Broken Meta Descriptions<\/strong><\/p>\n\n<p>See every post missing a meta description in one sorted list. Flags meta descriptions that are too short (rewritten by Google) or too long (truncated in SERPs).<\/p>\n\n<p><strong>\ud83d\udd0d Focus Keyword Assistant<\/strong><\/p>\n\n<p>See every post missing a focus keyphrase. Bulk-sync focus keywords to Yoast SEO or Rank Math with one click.<\/p>\n\n<p><strong>\ud83e\uddf9 Content Pruning &amp; Redirects<\/strong><\/p>\n\n<p>Find low-performing posts that drag the rest of your site down. Save 301 redirect targets per post (stored locally \u2014 no external service). Decide which trashed posts should redirect somewhere and which should 404 cleanly.<\/p>\n\n<p><strong>\ud83d\uddbc\ufe0f Image Optimisation<\/strong><\/p>\n\n<p>Rename uploaded image files to SEO-friendly basenames, audit alt-text coverage, and find images embedded without dimensions.<\/p>\n\n<p><strong>H1 Tag Issues<\/strong><\/p>\n\n<p>Posts with more than one H1 confuse search engines. SEOMedic lists every offending post and shows you the exact text of each H1 so you know which ones to demote to H2 or H3.<\/p>\n\n<p><strong>\u25b6\ufe0f YouTube &amp; Video Issues<\/strong><\/p>\n\n<p>Three video problems caught in one panel: plain YouTube links that will never auto-embed, Gutenberg embed blocks missing the 16:9 aspect ratio class, and Classic Editor iframes with hardcoded dimensions that break on mobile.<\/p>\n\n<p><strong>\ud83d\udd00 Internal Link Health<\/strong><\/p>\n\n<p>Find orphan posts with no inbound internal links, and spot link opportunities where another post on your site already mentions the topic but does not link to it.<\/p>\n\n<p><strong>\ud83d\uddfa\ufe0f Sitemap &amp; Schema Audits<\/strong><\/p>\n\n<p>Verify your sitemap is reachable and well-formed. Scan every post for Schema.org markup coverage and surface missing types.<\/p>\n\n<p><strong>\u26a1 Core Web Vitals (optional)<\/strong><\/p>\n\n<p>Connect a free Google PageSpeed Insights API key and audit your site's Core Web Vitals (LCP, INP, CLS) per page. The API key is yours \u2014 the plugin never proxies through us.<\/p>\n\n<p><strong>\u2699\ufe0f Bulk Link Management<\/strong><\/p>\n\n<p>Browse every link across your entire site in one table. Apply nofollow, sponsored, UGC, or open-in-new-tab to hundreds of links at once. Find and replace a URL site-wide in seconds.<\/p>\n\n<p><strong>Works with Yoast SEO and Rank Math<\/strong><\/p>\n\n<p>Meta descriptions and SEO titles sync with Yoast SEO or Rank Math if active. Falls back to the native post excerpt when neither is installed.<\/p>\n\n<h4>Want AI generation, Search Console, and Bing?<\/h4>\n\n<p>Those features live in the separate <strong>SEOMedic Pro<\/strong> add-on plugin, which you can install alongside this one. Pro adds AI meta\/title generation (Claude), Google Search Console integration with CTR opportunity scoring, Bing Webmaster Tools integration, and a Gutenberg post-insights sidebar. Install Pro from your account at the plugin author's site \u2014 it is not hosted here.<\/p>\n\n<h3>External Services<\/h3>\n\n<p>This plugin only contacts third-party services in the two cases listed below, and only when you have explicitly opted in or provided your own credentials.<\/p>\n\n<h4>Google PageSpeed Insights API<\/h4>\n\n<ul>\n<li><strong>What it does:<\/strong> Retrieves Core Web Vitals (LCP, INP, CLS) for individual page URLs so you can audit performance.<\/li>\n<li><strong>When it connects:<\/strong> Only when you have entered a PageSpeed Insights API key under SEOMedic \u2192 Settings and you run the Core Web Vitals audit.<\/li>\n<li><strong>Data sent:<\/strong> The page URL being audited. No post content, no user data.<\/li>\n<li><strong>Service URL:<\/strong> https:\/\/www.googleapis.com\/pagespeedonline\/v5\/runPagespeed<\/li>\n<li><strong>Privacy Policy:<\/strong> https:\/\/policies.google.com\/privacy<\/li>\n<li><strong>Terms of Service:<\/strong> https:\/\/developers.google.com\/terms<\/li>\n<\/ul>\n\n<h4>Freemius<\/h4>\n\n<ul>\n<li><strong>What it does:<\/strong> Handles plugin activation, opt-in usage telemetry, and software updates.<\/li>\n<li><strong>When it connects:<\/strong> Upon plugin activation (opt-in only \u2014 users are shown a notice and can skip data sharing). Also during licence verification and update checks.<\/li>\n<li><strong>Data sent:<\/strong> Site URL, WordPress version, plugin version, PHP version, and (if opted in) admin email address.<\/li>\n<li><strong>Service URL:<\/strong> https:\/\/wp.freemius.com\/<\/li>\n<li><strong>Privacy Policy:<\/strong> https:\/\/freemius.com\/privacy\/<\/li>\n<li><strong>Terms of Service:<\/strong> https:\/\/freemius.com\/terms\/<\/li>\n<\/ul>\n\n<h3>Source code &amp; build instructions<\/h3>\n\n<p>The React admin UI in <code>admin\/build\/<\/code> is built from the human-readable\nTypeScript\/TSX sources in <code>admin\/src\/<\/code>, which are included in this zip.\nNo third-party AI\/Claude code is bundled into the free distribution \u2014\nthose features live in the separate SEOMedic Pro add-on plugin.<\/p>\n\n<p>To rebuild the admin UI from source:<\/p>\n\n<pre><code>cd admin\nnpm install\nnpm run build\n<\/code><\/pre>\n\n<p>Build tool: Vite 6 with @vitejs\/plugin-react. See <code>admin\/package.json<\/code>\nand <code>admin\/vite.config.ts<\/code> for the full configuration. The output is\nwritten to <code>admin\/build\/index.js<\/code> and <code>admin\/build\/index.css<\/code>.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Upload the <code>seomedic-seo-link-auditor<\/code> folder to <code>\/wp-content\/plugins\/<\/code>, or install via <strong>Plugins \u2192 Add New<\/strong> in your WordPress admin.<\/li>\n<li>Activate the plugin through the <strong>Plugins<\/strong> screen.<\/li>\n<li>Navigate to <strong>SEOMedic<\/strong> in the WordPress admin sidebar.<\/li>\n<\/ol>\n\n<p><strong>For Core Web Vitals audits (optional):<\/strong><\/p>\n\n<ol>\n<li>Get a free <a href=\"https:\/\/developers.google.com\/speed\/docs\/insights\/v5\/get-started\">Google PageSpeed Insights API key<\/a>.<\/li>\n<li>Enter it under <strong>SEOMedic \u2192 Settings \u2192 Performance<\/strong>.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"does%20this%20work%20with%20any%20theme%3F\"><h3>Does this work with any theme?<\/h3><\/dt>\n<dd><p>Yes. The plugin operates entirely through the WordPress admin area and the REST API \u2014 it is theme-independent.<\/p><\/dd>\n<dt id=\"which%20seo%20plugins%20are%20supported%20for%20focus%20keywords%3F\"><h3>Which SEO plugins are supported for focus keywords?<\/h3><\/dt>\n<dd><p>Yoast SEO and Rank Math. SEOMedic is compatible with both \u2014 use it as an SEO booster alongside either plugin. If neither is installed, the focus keyword is stored in the plugin's own post meta field.<\/p><\/dd>\n<dt id=\"will%20editing%20links%20here%20change%20my%20post%20content%3F\"><h3>Will editing links here change my post content?<\/h3><\/dt>\n<dd><p>Yes. When you save a link change the plugin updates the post content in the database via the WordPress REST API, exactly as if you had edited the post in the block editor.<\/p><\/dd>\n<dt id=\"does%20this%20plugin%20send%20any%20data%20to%20external%20servers%3F\"><h3>Does this plugin send any data to external servers?<\/h3><\/dt>\n<dd><p>Link checking, meta description scanning, focus keywords, redirect saving, image rename, H1\/video\/schema\/sitemap detection, and internal link health all run entirely within your WordPress site.<\/p>\n\n<p>Two optional connections exist:<\/p>\n\n<ul>\n<li>If you opt in to Freemius on activation (it shows a notice \u2014 you can skip), your site URL, WordPress version, PHP version, and admin email are sent to Freemius for licence management and usage telemetry.<\/li>\n<li>If you provide a Google PageSpeed Insights API key and run the Core Web Vitals audit, the plugin sends each page URL to Google PageSpeed Insights.<\/li>\n<\/ul>\n\n<p>Nothing else leaves your server.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>2.10.0<\/h4>\n\n<ul>\n<li>New: a \"Search Analytics\" widget on your WordPress dashboard home. See your search performance without leaving wp-admin.<\/li>\n<li>New (free): the dashboard widget shows a clearly-labelled sample preview of the Pro search-analytics charts \u2014 metric tiles, a clicks trend chart, and a Biggest Movers list \u2014 so you can see what upgrading unlocks.<\/li>\n<li>New (Pro): the widget adds a Biggest Movers section \u2014 the queries gaining and slipping the most in Google, each with an inline position sparkline, drawn from your existing snapshot history (no extra API calls).<\/li>\n<\/ul>\n\n<h4>2.9.0<\/h4>\n\n<ul>\n<li>New (Pro): Refresh Impact tracking \u2014 after updating a post, click \"\u2713 Done\" in Refresh Opportunities to snapshot its last 28 days of Search Console data. SEOMedic then compares clicks\/day, average position, and CTR before vs after the refresh, so you can see whether the update actually moved the needle.<\/li>\n<li>New (Pro): a \"Recently refreshed \u2014 impact\" panel at the top of Refresh Opportunities lists every tracked post with its before\/after readout; the SEO Performance trend expander shows the same line for tracked posts.<\/li>\n<\/ul>\n\n<h4>2.8.21<\/h4>\n\n<ul>\n<li>Fixed (Pro): the Gutenberg sidebar showed \"No GSC queries yet for this URL\" on www-hosted sites even when the post had Search Console data \u2014 the permalink was never matched against the normalised GSC URLs.<\/li>\n<li>Improved (Pro): LSI keywords missing from the post body now show as red pills (was grey) so gaps stand out at a glance.<\/li>\n<li>Improved (Pro): the \"Load search volumes\" buttons now note in a tooltip that each lookup spends Keywords Everywhere credits.<\/li>\n<\/ul>\n\n<h4>2.8.20<\/h4>\n\n<ul>\n<li>Fixed: \"Plugin could not be activated because it triggered a fatal error\" when activating a new version while an older copy (or the free version) was still active. All functions in the main plugin file are now redeclaration-safe, so two copies can coexist during an upgrade and the free \u2192 Pro auto-deactivation hand-off works as intended.<\/li>\n<\/ul>\n\n<h4>2.8.19<\/h4>\n\n<ul>\n<li>Smoother free \u2192 Pro upgrade: activating SEOMedic Pro now automatically deactivates the free version, so you're never left with both plugins active and duplicate menus.<\/li>\n<\/ul>\n\n<h4>2.8.18<\/h4>\n\n<ul>\n<li>New (Pro): sortable \"GSC clicks\" column on the Posts and Pages list screens \u2014 see 90-day Google Search clicks per post at a glance and sort by it. Populated automatically whenever Search Console data syncs.<\/li>\n<li>Improved (Pro): the Gutenberg sidebar's Ranked Queries list now shows a clicks chip next to impressions for each query.<\/li>\n<\/ul>\n\n<h4>2.8.17<\/h4>\n\n<ul>\n<li>Added a one-time, dismissible review request in wp-admin, shown two weeks after install. \"Maybe later\" snoozes it for 90 days; \"No, thanks\" hides it permanently. No tracking, no external calls \u2014 just a link to the WordPress.org review form.<\/li>\n<\/ul>\n\n<h4>2.8.14<\/h4>\n\n<ul>\n<li>Fixed (Pro): \"Analyze top 20\" for AI Search Readiness could stop early with \"Could not parse Claude response\" \u2014 the AI response token limit was too low and truncated longer results. Raised the limit, and the bulk run now skips any post that fails instead of aborting the whole batch.<\/li>\n<\/ul>\n\n<h4>2.8.13<\/h4>\n\n<ul>\n<li>Added an inline notice above the dashboard stat cards letting users know that on larger sites the counts can take a couple of minutes to populate, and each section scans on first expand \u2014 so a slower load isn't mistaken for a problem.<\/li>\n<\/ul>\n\n<h4>2.8.12<\/h4>\n\n<ul>\n<li>Fixed: rescanning a single section no longer throws you back to the full-screen loading screen (and no longer jumps the page to the top). The full loader now appears only on the first load; rescans show an inline spinner and keep the dashboard in place.<\/li>\n<li>Added a \"Couldn't load your content\" retry screen with the Low-resource mode toggle, shown if the initial scan fails on a resource-limited host \u2014 so you can enable gentler loading and try again without getting stuck.<\/li>\n<\/ul>\n\n<h4>2.8.11<\/h4>\n\n<ul>\n<li>Fixed a loading flicker where the dashboard briefly showed empty (0) stat cards before data finished loading. The staged loading screen now stays up \u2014 showing live progress and the Google Search Console \/ Bing steps \u2014 until your content has actually loaded.<\/li>\n<li>Clearer loading messaging that the first load can take a minute or more depending on how many posts and pages your site has.<\/li>\n<\/ul>\n\n<h4>2.8.10<\/h4>\n\n<ul>\n<li>New \"Low-resource mode\" toggle on the load screen for shared\/limited hosting \u2014 loads posts in smaller batches with a pause between them, so the scan is gentler on servers with CPU\/memory\/entry-process limits. Off by default; remembered per browser.<\/li>\n<\/ul>\n\n<h4>2.8.9<\/h4>\n\n<ul>\n<li>Load on demand: the dashboard no longer auto-scans on every page load. It opens instantly with a \"Load my content\" button, and the heavy scan runs only when you click it (remembered for the session). Big improvement on large sites and resource-limited hosts.<\/li>\n<\/ul>\n\n<h4>2.8.8<\/h4>\n\n<ul>\n<li>Resilience: if a dashboard module fails to load (e.g. a stale cached asset behind a CDN right after an update), the page now auto-reloads once to pull fresh files instead of showing an error.<\/li>\n<\/ul>\n\n<h4>2.8.7<\/h4>\n\n<ul>\n<li>Performance: the dashboard now loads posts in pages instead of all at once. Large sites (hundreds of posts) no longer hit a server memory error (HTTP 507) on load, and the loading screen shows live progress (e.g. \"150 \/ 504\").<\/li>\n<\/ul>\n\n<h4>2.8.6<\/h4>\n\n<ul>\n<li>Added a clearly-marked, staged loading screen so large sites don't look stuck while data loads.<\/li>\n<li>Hardened uninstall.php against direct file access.<\/li>\n<\/ul>\n\n<h4>2.8.5<\/h4>\n\n<ul>\n<li>Fixed: Claude-powered features (AI Search Readiness, meta generation) could show \"Configure Anthropic API key\" on first load even when a key was saved \u2014 the key status now resolves immediately on page load instead of waiting for a window-focus event.<\/li>\n<li>Refreshed plugin screenshots and screenshot captions.<\/li>\n<\/ul>\n\n<h4>2.8.4<\/h4>\n\n<ul>\n<li>Hardened the React dashboard against browser auto-translate extensions that could cause a \"removeChild\" crash on the main page.<\/li>\n<li>Compatibility and packaging polish.<\/li>\n<\/ul>\n\n<h4>2.4.7<\/h4>\n\n<ul>\n<li>WP.org compliance pass: removed all Pro-only Claude\/Anthropic handler code from the free distribution (moved to the separate SEOMedic Pro add-on plugin). The free zip no longer contains any calls to third-party AI APIs.<\/li>\n<li>Included the React UI source files (<code>admin\/src\/<\/code>) and build configuration in the zip so the compiled <code>admin\/build\/index.js<\/code> is reproducible from human-readable source.<\/li>\n<li>Tightened REST API permission checks: <code>GET\/POST \/seomedic\/v1\/settings<\/code> now requires <code>manage_options<\/code>; <code>POST \/seomedic\/v1\/posts\/{id}\/dismiss<\/code> and <code>\/undismiss<\/code> now verify <code>edit_post<\/code> on the specific target post.<\/li>\n<\/ul>\n\n<h4>2.4.0<\/h4>\n\n<ul>\n<li>Plugin split for WordPress.org compliance: AI generation, Google Search Console, Bing Webmaster Tools, and Keywords Everywhere features moved to a separate <strong>SEOMedic Pro<\/strong> add-on plugin.<\/li>\n<li>Unlocked: Content Pruning redirect saving and Image File Rename are now available to all users (no Pro requirement).<\/li>\n<li>Tightened REST API permission checks on <code>\/trashed-pending\/{id}\/dismiss<\/code> and <code>\/check-link<\/code>.<\/li>\n<li>Renamed plugin text domain to <code>seomedic-seo-link-auditor<\/code> (matches plugin slug).<\/li>\n<li>Cleaned readme \u2014 removed entries for services this plugin no longer contacts.<\/li>\n<\/ul>\n\n<h4>2.3.x<\/h4>\n\n<ul>\n<li>Dashboard refactor \u2014 bulk meta operations, scroll-to-top, sitemap audit upgrades, plugin checker fixes.<\/li>\n<li>Gutenberg post-insights sidebar (moved to Pro in 2.4.0).<\/li>\n<li>Various fixes for keyword cannibalisation detection, readme stable-tag sync, and WP.org plugin-checker warnings.<\/li>\n<\/ul>\n\n<h4>1.0.x<\/h4>\n\n<ul>\n<li>Initial public releases \u2014 see git history for full per-version notes.<\/li>\n<\/ul>","raw_excerpt":"Audit broken links, fix missing meta descriptions, detect H1 issues, fix YouTube embeds, and clean up internal linking \u2014 all from one dashboard.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/ltz.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/299657","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/ltz.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/ltz.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/ltz.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=299657"}],"author":[{"embeddable":true,"href":"https:\/\/ltz.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/andrewmurray"}],"wp:attachment":[{"href":"https:\/\/ltz.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=299657"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/ltz.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=299657"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/ltz.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=299657"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/ltz.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=299657"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/ltz.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=299657"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/ltz.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=299657"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}