{"id":366967,"date":"2026-09-19T16:32:49","date_gmt":"2026-09-19T16:32:49","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/focus-seo\/"},"modified":"2026-09-20T08:06:49","modified_gmt":"2026-09-20T08:06:49","slug":"ekom-seo-toolkit","status":"publish","type":"plugin","link":"https:\/\/am.wordpress.org\/plugins\/ekom-seo-toolkit\/","author":23431252,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"0.1.3","stable_tag":"0.1.3","tested":"7.1.1","requires":"6.2","requires_php":"7.4","requires_plugins":null,"header_name":"Ekom SEO Toolkit","header_author":"Ekom","header_description":"All-in-one local SEO toolkit for WordPress. Site audits, redirects, robots.txt, and Gutenberg editor panels \u2014 no cloud, no account, no external services.","assets_banners_color":"9278bd","last_updated":"2026-09-20 08:06:49","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"","header_author_uri":"https:\/\/x.com\/itsekomagain","rating":0,"author_block_rating":0,"active_installs":0,"downloads":81,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","faq","changelog"],"tags":{"0.1.0":{"tag":"0.1.0","author":"komexman","date":"2026-09-19 16:32:40","revision":3703467},"0.1.1":{"tag":"0.1.1","author":"komexman","date":"2026-09-19 16:55:38","revision":3703497},"0.1.2":{"tag":"0.1.2","author":"komexman","date":"2026-09-20 07:13:51","revision":3703952},"0.1.3":{"tag":"0.1.3","author":"komexman","date":"2026-09-20 08:06:49","revision":3704011}},"upgrade_notice":[],"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3703497,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3703497,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3703497,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3703497,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["0.1.0","0.1.1","0.1.2","0.1.3"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3703497,"resolution":"1","location":"assets","locale":"","width":1440,"height":900},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3703497,"resolution":"2","location":"assets","locale":"","width":1440,"height":900},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3703497,"resolution":"3","location":"assets","locale":"","width":1440,"height":900},"screenshot-4.png":{"filename":"screenshot-4.png","revision":3703497,"resolution":"4","location":"assets","locale":"","width":1440,"height":900},"screenshot-5.png":{"filename":"screenshot-5.png","revision":3703497,"resolution":"5","location":"assets","locale":"","width":1440,"height":900},"screenshot-6.png":{"filename":"screenshot-6.png","revision":3703497,"resolution":"6","location":"assets","locale":"","width":1440,"height":900}},"screenshots":{"1":"Dashboard with every module in one place.","2":"Site Audit: one combined score from every enabled scanner.","3":"Redirect Manager with 301\/302 rules and hit counts.","4":"Broken Link Detector results grouped by post.","5":"Image Alt Text Auditor.","6":"Settings: turn each module on or off."}},"plugin_section":[],"plugin_tags":[14279,148076,726,12753,186],"plugin_category":[55],"plugin_contributors":[281594],"plugin_business_model":[],"class_list":["post-366967","plugin","type-plugin","status-publish","hentry","plugin_tags-broken-links","plugin_tags-gutenberg","plugin_tags-redirects","plugin_tags-robots-txt","plugin_tags-seo","plugin_category-seo-and-marketing","plugin_contributors-komexman","plugin_committers-komexman"],"banners":{"banner":"https:\/\/ps.w.org\/ekom-seo-toolkit\/assets\/banner-772x250.png?rev=3703497","banner_2x":"https:\/\/ps.w.org\/ekom-seo-toolkit\/assets\/banner-1544x500.png?rev=3703497","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/ekom-seo-toolkit\/assets\/icon-128x128.png?rev=3703497","icon_2x":"https:\/\/ps.w.org\/ekom-seo-toolkit\/assets\/icon-256x256.png?rev=3703497","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/ekom-seo-toolkit\/assets\/screenshot-1.png?rev=3703497","caption":"Dashboard with every module in one place."},{"src":"https:\/\/ps.w.org\/ekom-seo-toolkit\/assets\/screenshot-2.png?rev=3703497","caption":"Site Audit: one combined score from every enabled scanner."},{"src":"https:\/\/ps.w.org\/ekom-seo-toolkit\/assets\/screenshot-3.png?rev=3703497","caption":"Redirect Manager with 301\/302 rules and hit counts."},{"src":"https:\/\/ps.w.org\/ekom-seo-toolkit\/assets\/screenshot-4.png?rev=3703497","caption":"Broken Link Detector results grouped by post."},{"src":"https:\/\/ps.w.org\/ekom-seo-toolkit\/assets\/screenshot-5.png?rev=3703497","caption":"Image Alt Text Auditor."},{"src":"https:\/\/ps.w.org\/ekom-seo-toolkit\/assets\/screenshot-6.png?rev=3703497","caption":"Settings: turn each module on or off."}],"raw_content":"<!--section=description-->\n<p>Ekom SEO Toolkit bundles a set of local SEO tools into a single WordPress plugin. Everything runs on your own server: no account to create, no license key to enter, no usage limits.<\/p>\n\n<p><strong>Site tools (wp-admin):<\/strong><\/p>\n\n<ul>\n<li>Broken Link Detector \u2014 scans posts and pages for dead links<\/li>\n<li>Canonical URL Checker \u2014 flags canonical tags that don't point at themselves<\/li>\n<li>Image Alt Text Auditor \u2014 finds media library images missing alt text<\/li>\n<li>Large Image Detector \u2014 finds images over 500KB<\/li>\n<li>Noindex Page Finder \u2014 finds published pages accidentally set to noindex<\/li>\n<li>Redirect Manager \u2014 301\/302 redirects with smart 404 auto-routing<\/li>\n<li>Robots.txt Editor \u2014 safely edit the virtual robots.txt output<\/li>\n<li>Scroll Depth Indicator \u2014 tracks how far readers scroll per post (no cookies, no personal data)<\/li>\n<\/ul>\n\n<p><strong>Editor tools (Gutenberg sidebar):<\/strong><\/p>\n\n<ul>\n<li>Content Analyzer \u2014 word count, keyword density, readability<\/li>\n<li>Heading Checker \u2014 live heading hierarchy outline<\/li>\n<li>Internal Link Checker \u2014 internal\/external link counts, orphan-post flag in the post list<\/li>\n<li>Schema Detector \u2014 shows JSON-LD schema present in the post's block content<\/li>\n<li>SEO Previews \u2014 Google search and social share card previews, with meta description + Open Graph\/Twitter output<\/li>\n<\/ul>\n\n<p>A Site Audit dashboard aggregates results from every enabled scanner into one combined report. Every module can be toggled on or off individually from Settings.<\/p>\n\n<p>Follow development updates on X: https:\/\/x.com\/itsekomagain<\/p>\n\n<h3>External Services<\/h3>\n\n<p>This plugin relies on one external service, used by a single optional feature:<\/p>\n\n<h4>Broken link checking (Broken Link Detector module)<\/h4>\n\n<p>This plugin scans your published posts and pages for hyperlinks, then sends HTTP requests to each linked URL to check whether the link is broken (returns a 404, 500, or similar error). This is the core function of the Broken Link Detector module.<\/p>\n\n<p><strong>What data is sent:<\/strong> An HTTP request to every external URL that appears as a hyperlink in your published post and page content. Links to your own site are checked locally against your database and uploads folder and usually need no request. Results are reused for 24 hours, so the same URL is not requested repeatedly. The request includes a user-agent header (\"Ekom SEO Toolkit Broken Link Detector\/1.0\") but no personal data, cookies, or authentication credentials.<\/p>\n\n<p><strong>When data is sent:<\/strong> Only when a broken link scan is triggered \u2014 manually from the Broken Links dashboard page, or automatically once a week if the optional weekly scan setting is enabled (disabled by default).<\/p>\n\n<p><strong>Where requests are sent:<\/strong> Whatever external URLs appear in your own post and page content \u2014 third-party sites you have linked to. The plugin does not control these destinations, and the terms of service of those sites apply to the request.<\/p>\n\n<p>No other module in this plugin makes outbound HTTP requests or transmits data to any external service.<\/p>\n\n<!--section=faq-->\n<dl>\n<dt id=\"does%20this%20require%20an%20account%20or%20license%20key%3F\"><h3>Does this require an account or license key?<\/h3><\/dt>\n<dd><p>No. Every feature in this plugin runs locally and is free, with no account and no usage limits.<\/p><\/dd>\n<dt id=\"does%20any%20data%20leave%20my%20site%3F\"><h3>Does any data leave my site?<\/h3><\/dt>\n<dd><p>Only the Broken Link Detector's link-checking feature makes outbound requests, and only to URLs that already appear as links in your own post\/page content \u2014 see External Services below. Nothing else in the plugin contacts an external server.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>0.1.3<\/h4>\n\n<ul>\n<li>Translation ready: editor panels, Site Audit, module names and all admin messages can now be translated at translate.wordpress.org.<\/li>\n<li>Adds a one-time, dismissible review request on the plugin's own pages, shown to administrators after a week of use.<\/li>\n<\/ul>\n\n<h4>0.1.2<\/h4>\n\n<ul>\n<li>Editor sidebar redesign: one consistent look across all five panels, clearer score summary, grouped tabs, accessible controls.<\/li>\n<li>Site Audit now shows a short summary per scanner (first 5 items, a count of the rest) with a link to the full tool to finish the job.<\/li>\n<li>Fix: Keyword Density gauge pointed to the wrong position and its value was clipped.<\/li>\n<li>Fix: Schema Detector now finds JSON-LD inside Custom HTML blocks.<\/li>\n<\/ul>\n\n<h4>0.1.1<\/h4>\n\n<ul>\n<li>Fix: Redirect Manager smart 404 matching no longer runs on normal pages, which caused redirect loops.<\/li>\n<li>Fix: no longer removes other plugins' admin notices; plugin notices limited to relevant screens.<\/li>\n<li>Fix: redirect type dropdown text was clipped.<\/li>\n<li>Broken Link Detector: links to your own site are checked locally instead of over HTTP; each URL is requested once and reused for 24 hours; scans run in short batches so large sites don't time out; external links use WordPress's safe HTTP API (private network addresses are refused) and verify SSL certificates.<\/li>\n<\/ul>\n\n<h4>0.1.0<\/h4>\n\n<ul>\n<li>Initial release \u2014 all 13 free-core modules (Product SEO\/WooCommerce support planned as a separate add-on).<\/li>\n<\/ul>","raw_excerpt":"All-in-one local SEO toolkit for WordPress. Site audits, redirects, robots.txt, and Gutenberg editor panels \u2014 no cloud, no account, no license key.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/am.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/366967","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/am.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/am.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/am.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=366967"}],"author":[{"embeddable":true,"href":"https:\/\/am.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/komexman"}],"wp:attachment":[{"href":"https:\/\/am.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=366967"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/am.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=366967"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/am.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=366967"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/am.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=366967"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/am.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=366967"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/am.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=366967"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}