{"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-09-13T06:40:54","modified_gmt":"2026-09-13T06:40:54","slug":"seomedic-seo-link-auditor","status":"publish","type":"plugin","link":"https:\/\/pan.wordpress.org\/plugins\/seomedic-seo-link-auditor\/","author":9682675,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"2.63","stable_tag":"2.63","tested":"7.1","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-09-13 06:40:54","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":1494,"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","revision":3611975},"2.11.1":{"tag":"2.11.1","author":"andrewmurray","date":"2026-07-22 09:48:53","revision":3618389},"2.11.2":{"tag":"2.11.2","author":"andrewmurray","date":"2026-07-23 09:26:24","revision":3619710},"2.11.3":{"tag":"2.11.3","author":"andrewmurray","date":"2026-07-23 09:44:02","revision":3619739},"2.11.4":{"tag":"2.11.4","author":"andrewmurray","date":"2026-07-23 10:29:41","revision":3619811},"2.11.5":{"tag":"2.11.5","author":"andrewmurray","date":"2026-07-23 10:54:37","revision":3619850},"2.11.6":{"tag":"2.11.6","author":"andrewmurray","date":"2026-07-23 11:45:13","revision":3619930},"2.12.0":{"tag":"2.12.0","author":"andrewmurray","date":"2026-07-23 12:21:52","revision":3619993},"2.12.1":{"tag":"2.12.1","author":"andrewmurray","date":"2026-07-23 16:52:09","revision":3620298},"2.12.2":{"tag":"2.12.2","author":"andrewmurray","date":"2026-07-23 17:25:07","revision":3620332},"2.13.0":{"tag":"2.13.0","author":"andrewmurray","date":"2026-07-23 17:44:36","revision":3620350},"2.13.1":{"tag":"2.13.1","author":"andrewmurray","date":"2026-07-24 07:52:12","revision":3620926},"2.13.2":{"tag":"2.13.2","author":"andrewmurray","date":"2026-07-24 13:03:12","revision":3621301},"2.15.0":{"tag":"2.15.0","author":"andrewmurray","date":"2026-07-31 10:09:08","revision":3629810},"2.15.2":{"tag":"2.15.2","author":"andrewmurray","date":"2026-08-07 05:53:40","revision":3637397},"2.15.4":{"tag":"2.15.4","author":"andrewmurray","date":"2026-08-07 20:49:50","revision":3638296},"2.16.0":{"tag":"2.16.0","author":"andrewmurray","date":"2026-08-11 17:04:00","revision":3642303},"2.16.1":{"tag":"2.16.1","author":"andrewmurray","date":"2026-08-11 17:20:37","revision":3642324},"2.16.3":{"tag":"2.16.3","author":"andrewmurray","date":"2026-08-19 11:28:59","revision":3654504},"2.17.0":{"tag":"2.17.0","author":"andrewmurray","date":"2026-08-21 14:49:16","revision":3659227},"2.18.0":{"tag":"2.18.0","author":"andrewmurray","date":"2026-08-21 14:52:12","revision":3659232},"2.19.0":{"tag":"2.19.0","author":"andrewmurray","date":"2026-08-21 19:58:22","revision":3659588},"2.19.1":{"tag":"2.19.1","author":"andrewmurray","date":"2026-08-23 07:56:44","revision":3661509},"2.19.2":{"tag":"2.19.2","author":"andrewmurray","date":"2026-08-29 16:09:31","revision":3671699},"2.19.8":{"tag":"2.19.8","author":"andrewmurray","date":"2026-08-30 18:26:56","revision":3672990},"2.36":{"tag":"2.36","author":"andrewmurray","date":"2026-09-06 06:13:55","revision":3683037},"2.37":{"tag":"2.37","author":"andrewmurray","date":"2026-09-06 10:23:54","revision":3683304},"2.39":{"tag":"2.39","author":"andrewmurray","date":"2026-09-07 12:16:44","revision":3684856},"2.40":{"tag":"2.40","author":"andrewmurray","date":"2026-09-07 12:25:17","revision":3684880},"2.41":{"tag":"2.41","author":"andrewmurray","date":"2026-09-07 15:27:56","revision":3685193},"2.42":{"tag":"2.42","author":"andrewmurray","date":"2026-09-07 15:38:08","revision":3685213},"2.43":{"tag":"2.43","author":"andrewmurray","date":"2026-09-07 16:11:09","revision":3685258},"2.44":{"tag":"2.44","author":"andrewmurray","date":"2026-09-08 14:33:22","revision":3686837},"2.45":{"tag":"2.45","author":"andrewmurray","date":"2026-09-09 20:35:42","revision":3688975},"2.46":{"tag":"2.46","author":"andrewmurray","date":"2026-09-09 20:58:37","revision":3688993},"2.47":{"tag":"2.47","author":"andrewmurray","date":"2026-09-09 21:10:19","revision":3689007},"2.48":{"tag":"2.48","author":"andrewmurray","date":"2026-09-09 21:18:23","revision":3689017},"2.51":{"tag":"2.51","author":"andrewmurray","date":"2026-09-10 14:18:50","revision":3690028},"2.58":{"tag":"2.58","author":"andrewmurray","date":"2026-09-11 19:54:39","revision":3692036},"2.59":{"tag":"2.59","author":"andrewmurray","date":"2026-09-12 12:20:48","revision":3692671},"2.60":{"tag":"2.60","author":"andrewmurray","date":"2026-09-13 05:32:33","revision":3693337},"2.61":{"tag":"2.61","author":"andrewmurray","date":"2026-09-13 05:43:52","revision":3693348},"2.62":{"tag":"2.62","author":"andrewmurray","date":"2026-09-13 06:10:15","revision":3693363},"2.63":{"tag":"2.63","author":"andrewmurray","date":"2026-09-13 06:40:54","revision":3693388},"2.8.10":{"tag":"2.8.10","author":"andrewmurray","date":"2026-06-25 07:25:33","revision":3585817},"2.8.11":{"tag":"2.8.11","author":"andrewmurray","date":"2026-06-25 07:34:40","revision":3585827},"2.8.12":{"tag":"2.8.12","author":"andrewmurray","date":"2026-06-25 15:05:07","revision":3586311},"2.8.13":{"tag":"2.8.13","author":"andrewmurray","date":"2026-06-25 20:49:31","revision":3586570},"2.8.14":{"tag":"2.8.14","author":"andrewmurray","date":"2026-06-25 20:55:13","revision":3586575},"2.8.21":{"tag":"2.8.21","author":"andrewmurray","date":"2026-07-17 08:07:06","revision":3611163},"2.8.3":{"tag":"2.8.3","author":"andrewmurray","date":"2026-06-20 21:18:26","revision":3580139},"2.8.4":{"tag":"2.8.4","author":"andrewmurray","date":"2026-06-22 10:09:40","revision":3581571},"2.8.5":{"tag":"2.8.5","author":"andrewmurray","date":"2026-06-22 10:49:47","revision":3581631},"2.8.6":{"tag":"2.8.6","author":"andrewmurray","date":"2026-06-22 11:10:38","revision":3581672},"2.8.7":{"tag":"2.8.7","author":"andrewmurray","date":"2026-06-22 12:25:35","revision":3581780},"2.8.8":{"tag":"2.8.8","author":"andrewmurray","date":"2026-06-24 09:39:08","revision":3584409},"2.8.9":{"tag":"2.8.9","author":"andrewmurray","date":"2026-06-24 17:10:02","revision":3585181},"2.9.0":{"tag":"2.9.0","author":"andrewmurray","date":"2026-07-17 18:23:53","revision":3611903}},"upgrade_notice":{"2.63":"<p>Adds an AI &quot;top 3 SEO tasks&quot; checklist (Pro) focused on your highest-impression pages.<\/p>","2.62":"<p>More accurate Broken Video Embeds detection (no more false positives on working videos) plus a one-click Refresh embed fix.<\/p>","2.61":"<p>Adds an optional Deep scan to Broken Video Embeds that checks every embed site-wide, including pages not viewed recently.<\/p>","2.60":"<p>Adds a Broken Video Embeds check (finds embeds that render as a blank box) and fixes a video-scanner false positive.<\/p>","2.59":"<p>Fixes the Focus Keyword vs Ranking section wrongly asking you to connect Search Console when it already had data.<\/p>","2.58":"<p>Adds an Internal Link Map (visual site-wide link structure) and a Pro Branded Search monitor.<\/p>","2.57":"<p>Maintenance release \u2014 internal cleanup only, no functional changes.<\/p>","2.56":"<p>Maintenance release \u2014 internal cleanup only, no functional changes.<\/p>","2.55":"<p>Fixes garbled characters in post titles (Internal Link Impact and other panels) and clarifies the &quot;Page vs. whole site&quot; column.<\/p>","2.54":"<p>Housekeeping release \u2014 WordPress.org compatibility fixes, no functional changes.<\/p>","2.53":"<p>Affiliate Link Clicks gains editable detection patterns and per-link notes.<\/p>","2.52":"<p>Adds Affiliate Link Clicks (Pro): per-link, per-page click tracking with a Search Console tie-in, so you can see which pages are working before any sale lands.<\/p>","2.51":"<p>The image-optimiser recommendation is now a disclosed affiliate link. No change to what the plugin reports.<\/p>","2.50":"<p>Maintenance rebuild \u2014 no functional changes from 2.49.<\/p>","2.49":"<p>Adds clear disclosure to affiliate links in the plugin and the FAQ.<\/p>","2.48":"<p>Core Web Vitals now names the element causing your LCP and flags pages served through redirects, using data already in the PageSpeed response.<\/p>","2.47":"<p>Adds a Save original link before resizing an image, since the resize can&#039;t be undone.<\/p>","2.46":"<p>Finds images stored far larger than your pages display them and resizes them in one click, and surfaces Google&#039;s own image-savings estimates in the Core Web Vitals table.<\/p>","2.45":"<p>Biggest Movers now focuses on the top 20, image issues stop double-reporting broken images, and filename suggestions can rename the file for you.<\/p>","2.44":"<p>Fixes the garbled text in the plugin update notice on the Plugins screen. Cosmetic only, no functional changes.<\/p>","2.43":"<p>Adds a Site Speed diagnostic to Settings showing how much autoloaded option data every request on your site is carrying \u2014 the most common cause of a slow WordPress admin, and previously invisible without database access.<\/p>","2.42":"<p>Fixes the dashboard freezing or showing &quot;Page unresponsive&quot; on load. Recommended for any site with more than a couple of hundred posts.<\/p>","2.41":"<p>Focus Keyword vs Ranking: Save no longer needs a sideways scroll, exact matches can be hidden, and the search-volume columns now say which term they measure.<\/p>","2.40":"<p>Fixes the URL Export &quot;Impressions (90d)&quot; column, which was showing 30-day data under a 90-day heading, and closes a spreadsheet formula-injection hole in its CSV export.<\/p>","2.39":"<p>Bulk-generate and save meta descriptions, hide noindexed pages from the audit (now including noindex set in Yoast or Rank Math), and see each page&#039;s top search query beside its focus keyword. Also carries 2.38&#039;s fix for the Settings page discarding your model and prompt changes.<\/p>","2.19.0":"<p>Fixes search-volume columns that wouldn&#039;t sort, stops the Google and Bing query tables from sorting each other, and stacks them so neither is cut off. Settings now spells out exactly which buttons spend Keywords Everywhere credits.<\/p>","2.13.2":"<p>Makes low-resource mode far gentler on limited hosting by caching the post list so reloads don&#039;t re-scan. Recommended if your dashboard ever hits a hosting resource limit.<\/p>","2.13.1":"<p>Fixes a crash when opening the new Just Started Ranking and Keyword Explorer reports. Recommended for anyone on 2.12.0\u20132.13.0.<\/p>","2.13.0":"<p>Adds Keyword Explorer \u2014 a sortable, filterable keyword table with per-query ranking page and Bing bonus columns. Safe to update.<\/p>","2.12.2":"<p>Fixes Top Queries overflowing the dashboard widget, and groups near-identical junk queries so they no longer crowd out real ones. Safe to update.<\/p>","2.12.1":"<p>Fixes duplicated rows and edge overflow in the dashboard widget, and adds Just Started Ranking to it. Safe to update.<\/p>","2.12.0":"<p>Adds &quot;Just Started Ranking&quot; \u2014 see which pages started showing in Google in the last two weeks, and the queries bringing them in. Safe to update.<\/p>","2.11.6":"<p>Completes the Find &amp; Replace fix for URLs containing &quot;&amp;&quot; \u2014 the previous release missed the numeric encoding WordPress most often uses. Safe to update.<\/p>","2.11.5":"<p>Extends the Find &amp; Replace &quot;&amp;&quot; fix to widgets, and links the dashboard&#039;s zero-impression count straight to the list of affected pages. Safe to update.<\/p>","2.11.4":"<p>Fixes Find &amp; Replace failing to match URLs containing &quot;&amp;&quot;, such as affiliate links with tracking parameters. Safe to update.<\/p>","2.11.3":"<p>Fixes Search Console data not matching pages with accented URLs, and credits traffic from tagged links (?utm_source=...) to the correct page. Page totals may rise slightly as a result. Safe to update.<\/p>","2.11.2":"<p>Adds a &quot;Pages Google Isn&#039;t Showing&quot; section listing published pages with no search impressions, and makes the dashboard widget&#039;s Biggest Movers readable. Safe to update.<\/p>","2.11.1":"<p>Fixes the top Google query shown for each page \u2014 it&#039;s now the query with the most impressions, and automated rank-tracker queries are filtered out. Query data also covers terms ranking below position 20. Safe to update.<\/p>","2.11.0":"<p>The Mixed Content audit now covers your whole site \u2014 theme footer and header, nav menus, widgets, and other plugins \u2014 not just post content, and separates browser-blocking resources from ordinary insecure links. Safe to update.<\/p>","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.11.1","2.11.2","2.11.3","2.11.4","2.11.5","2.11.6","2.12.0","2.12.1","2.12.2","2.13.0","2.13.1","2.13.2","2.15.0","2.15.2","2.15.4","2.16.0","2.16.1","2.16.3","2.17.0","2.18.0","2.19.0","2.19.1","2.19.2","2.19.8","2.36","2.37","2.39","2.40","2.41","2.42","2.43","2.44","2.45","2.46","2.47","2.48","2.51","2.58","2.59","2.60","2.61","2.62","2.63","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 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>Open PageRank (Keywords Everywhere)<\/h4>\n\n<ul>\n<li><strong>What it does:<\/strong> Returns a 0\u201310 PageRank-style authority score for your own domain, shown on the Backlinks card. This is Open PageRank, not Moz Domain Authority.<\/li>\n<li><strong>When it connects:<\/strong> Only when you have entered an Open PageRank API key under SEOMedic \u2192 Settings, and only when the Backlinks card is loaded or refreshed. Cached for 7 days.<\/li>\n<li><strong>Data sent:<\/strong> Your own site's domain name. No post content, no user data, no visitor data.<\/li>\n<li><strong>Service URL:<\/strong> https:\/\/openpagerank.com\/api\/v1.0\/getPageRank<\/li>\n<li><strong>Privacy Policy:<\/strong> https:\/\/www.domcop.com\/privacy-policy<\/li>\n<li><strong>Terms of Service:<\/strong> https:\/\/www.domcop.com\/terms-of-service<\/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<li>If you provide an Open PageRank API key, the plugin sends your own domain name to Open PageRank to retrieve an authority score.<\/li>\n<\/ul>\n\n<p>Nothing else leaves your server.<\/p><\/dd>\n<dt id=\"does%20this%20plugin%20contain%20affiliate%20links%3F\"><h3>Does this plugin contain affiliate links?<\/h3><\/dt>\n<dd><p>Yes, and they are labelled \"(affiliate link)\" wherever they appear in the plugin.<\/p>\n\n<p>There are currently two. SEOMedic earns a commission if you buy through either, at no extra cost to you:<\/p>\n\n<ul>\n<li><strong>WordPress-optimized hosting<\/strong> \u2014 shown on the loading screen, and only when the dashboard is running slowly.<\/li>\n<li><strong>ShortPixel image optimiser<\/strong> \u2014 shown in the Oversized images panel, next to the note explaining that SEOMedic deliberately does not compress or convert images itself.<\/li>\n<\/ul>\n\n<p>Both are marked <code>rel=\"nofollow sponsored\"<\/code> so search engines are told about the relationship too, not only you.<\/p>\n\n<p>Affiliate links never affect what the plugin reports. No audit result, score, or recommendation changes because of a commercial relationship, and no section exists in order to create one. Where the plugin recommends a category of tool it doesn't compete with \u2014 an image optimiser, for instance \u2014 it says so because that is the honest answer, whether or not the link earns anything.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>2.63<\/h4>\n\n<ul>\n<li>New (Pro): <strong>Your top 3 SEO tasks<\/strong> \u2014 a card near the top of the dashboard where AI picks the three highest-impact things to do this week to improve your rankings, focused on the pages that already get the most impressions in Google. Tick them off as you go; the list and progress are saved.<\/li>\n<\/ul>\n\n<h4>2.62<\/h4>\n\n<ul>\n<li>Improved: the Broken Video Embeds check is now more accurate \u2014 it only tests the video that actually renders on the page (not an old URL left in an edited block) and confirms against the same cache your visitors see, so working videos are no longer wrongly flagged.<\/li>\n<li>New: a one-click <strong>Refresh embed<\/strong> button on each broken embed \u2014 clears WordPress's cached copy and re-fetches, fixing embeds that went blank because the cache went stale (a deleted or private video still needs its URL replaced).<\/li>\n<\/ul>\n\n<h4>2.61<\/h4>\n\n<ul>\n<li>New: <strong>Deep scan<\/strong> button in Broken Video Embeds \u2014 optional, checks every video embed on every post and page (including pages nobody has viewed recently, which the fast scan can miss), with progress and a Stop button. The fast scan stays the default; deep scan only runs when you click it.<\/li>\n<\/ul>\n\n<h4>2.60<\/h4>\n\n<ul>\n<li>New: <strong>Broken Video Embeds<\/strong> check \u2014 finds posts where a YouTube\/Vimeo embed shows a blank box instead of the video (the embed stopped resolving after it was published). The regular video scanner can't see this because the stored block still looks fine; this checks each embed against its provider. Includes a per-video \"re-check\" button.<\/li>\n<li>Fixed: the video scanner no longer flags a working embed as \"not embedded\" when its block's saved URL had drifted from the one it actually displays.<\/li>\n<\/ul>\n\n<h4>2.59<\/h4>\n\n<ul>\n<li>Fixed: the Focus Keyword vs Ranking section could show a \"connect Google Search Console\" message even when it was connected and already displaying your keyword-vs-query summary. It now shows the data whenever it has it.<\/li>\n<\/ul>\n\n<h4>2.58<\/h4>\n\n<ul>\n<li>New: <strong>Internal Link Map<\/strong> \u2014 a whole-site visual map of how your posts link to each other, coloured into clusters, with zoom\/pan and click-to-edit. See your hubs, islands and orphaned posts at a glance.<\/li>\n<li>New (Pro): <strong>Branded Search<\/strong> \u2014 track how your brand name performs in Google Search Console (impressions, clicks, CTR, position) versus the previous period, with a per-query breakdown. The brand term is auto-detected from your domain and editable for multi-word brands.<\/li>\n<\/ul>\n\n<h4>2.57<\/h4>\n\n<ul>\n<li>Maintenance: further internal cleanup of how post titles are decoded for display; no functional changes.<\/li>\n<\/ul>\n\n<h4>2.56<\/h4>\n\n<ul>\n<li>Maintenance: internal code cleanup (consolidated a duplicated helper); no functional changes.<\/li>\n<\/ul>\n\n<h4>2.55<\/h4>\n\n<ul>\n<li>Fixed: post titles containing an apostrophe or ampersand showed raw codes (e.g. \"Why I&#8217;m\u2026\") in Internal Link Impact and a few other panels. Titles now display correctly, in the panels and in CSV exports.<\/li>\n<li>Improved: the Internal Link Impact \"vs site\" column is now \"Page vs. whole site\" and states plainly whether a page ran ahead of or behind the site-wide trend.<\/li>\n<\/ul>\n\n<h4>2.54<\/h4>\n\n<ul>\n<li>Housekeeping: WordPress.org compatibility fixes (plugin-checker), no functional changes.<\/li>\n<\/ul>\n\n<h4>2.53<\/h4>\n\n<ul>\n<li>New (Pro): <strong>manage which links count as affiliate<\/strong> \u2014 add your own networks or cloak paths (e.g. <code>mynetwork.com<\/code>, <code>\/go\/<\/code>) on top of the built-in list, from the Affiliate Link Clicks panel.<\/li>\n<li>New (Pro): <strong>notes on any affiliate link<\/strong> \u2014 jot \"offer expired\", \"swap for X\", etc. against a link; notes stay put even as click history rolls over.<\/li>\n<\/ul>\n\n<h4>2.52<\/h4>\n\n<ul>\n<li>New (Pro): <strong>Affiliate Link Clicks<\/strong> \u2014 see how many times visitors click your outbound affiliate links, per link and per page, with a trend line. On a newer site, sales are a slow signal; clicks show a page is working long before it earns a commission, and a link with lots of clicks but nothing to show for it is worth a look (the offer may be wrong, or the link dead).<\/li>\n<li>Ties into Search Console: a \"clicks per organic click\" column shows how well each page turns Google traffic into affiliate clicks.<\/li>\n<li>Counts are collected in the visitor's browser and stay on your site \u2014 nothing is sent anywhere. They're approximate (ad-blocked and no-JavaScript visits aren't counted) and track clicks, not sales.<\/li>\n<\/ul>\n\n<h4>2.51<\/h4>\n\n<ul>\n<li>Changed: the image-optimiser link in the Oversized images panel is now an affiliate link, and is labelled \"(affiliate link)\" like the hosting one, with <code>rel=\"nofollow sponsored\"<\/code>. The FAQ disclosure has been updated to list both.<\/li>\n<li>Nothing about what the plugin reports changes. The Oversized images panel recommended a dedicated optimiser before there was any commercial relationship, for the same reason it does now: resizing and compressing are different jobs, and this plugin only does the first.<\/li>\n<\/ul>\n\n<h4>2.50<\/h4>\n\n<ul>\n<li>Maintenance: rebuilt release with no functional changes from 2.49 (fresh package).<\/li>\n<\/ul>\n\n<h4>2.49<\/h4>\n\n<ul>\n<li>Changed: affiliate links in the plugin are now labelled \"(affiliate link)\" where they appear, with a note explaining that SEOMedic earns a commission at no extra cost to you and that it never affects what the plugin reports. A matching disclosure has been added to the FAQ. There is one such link today \u2014 WordPress-optimized hosting, shown only when the dashboard is loading slowly.<\/li>\n<\/ul>\n\n<h4>2.48<\/h4>\n\n<ul>\n<li>New: <strong>which element is your LCP<\/strong>, shown under each page in the Core Web Vitals table. An LCP of 3.4s tells you there's a problem but not what to fix \u2014 this names the actual element whose render time <em>is<\/em> that number, and flags when it's an image.<\/li>\n<li>New: <strong>redirect chains<\/strong>. If a page is served through one or more redirects, the row says so and how many milliseconds it costs. Linking the final URL directly removes it \u2014 and this is the kind of thing that's invisible until something measures it.<\/li>\n<li>Both come from the PageSpeed response the Core Web Vitals scan already makes. No extra requests, no extra quota.<\/li>\n<li>Note: the LCP element depends on which Lighthouse version PageSpeed happens to be running. Google removed the audit it came from and replaced it, so SEOMedic tries the old and new names and simply shows nothing if neither is available.<\/li>\n<\/ul>\n\n<h4>2.47<\/h4>\n\n<ul>\n<li>New: <strong>Save original<\/strong> link on every oversized image, next to the Resize button. Resizing overwrites the full-size file and can't be undone, so this is the one chance to keep a copy. The confirmation now points at it rather than just warning you.<\/li>\n<li>Changed: the Oversized images panel now links to an image optimiser for the half of the job it deliberately doesn't do, and explains the difference \u2014 an optimiser shrinks the file it's given, this decides the file is the wrong size.<\/li>\n<\/ul>\n\n<h4>Earlier versions<\/h4>\n\n<p>Older entries are trimmed here to meet WordPress.org\u2019s 5000-character changelog limit. The complete history ships with the plugin in changelog.txt.<\/p>","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:\/\/pan.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/299657","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/pan.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/pan.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/pan.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=299657"}],"author":[{"embeddable":true,"href":"https:\/\/pan.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/andrewmurray"}],"wp:attachment":[{"href":"https:\/\/pan.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=299657"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/pan.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=299657"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/pan.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=299657"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/pan.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=299657"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/pan.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=299657"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/pan.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=299657"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}