{"id":291682,"date":"2026-04-30T03:14:08","date_gmt":"2026-04-30T03:14:08","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/whoknew-directory-seo-repository-ranking-readme-optimizer\/"},"modified":"2026-05-20T19:44:13","modified_gmt":"2026-05-20T19:44:13","slug":"whoknew-directory-seo","status":"publish","type":"plugin","link":"https:\/\/kir.wordpress.org\/plugins\/whoknew-directory-seo\/","author":23406156,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"2.0.1","stable_tag":"2.0.1","tested":"7.0","requires":"5.8","requires_php":"7.4","requires_plugins":null,"header_name":"WhoKnew Directory SEO - Repository Ranking & Readme Optimizer","header_author":"WhoKnew","header_description":"Optimize your plugin's visibility in the WordPress.org Plugin Directory. Track rankings for keywords, see how the directory ranks plugins (algorithm explainer), and get readme suggestions to rank for your chosen keywords. Free tier includes limited scans and full algorithm info; upgrade for more credits and more plugins.","assets_banners_color":"ffffff","last_updated":"2026-05-20 19:44:13","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"","header_author_uri":"https:\/\/whoknew.io","rating":0,"author_block_rating":0,"active_installs":0,"downloads":293,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"2.0.0":{"tag":"2.0.0","author":"whoknewio","date":"2026-04-30 03:13:53"},"2.0.1":{"tag":"2.0.1","author":"whoknewio","date":"2026-05-20 19:44:13"}},"upgrade_notice":[],"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3519108,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3519108,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256},"icon.svg":{"filename":"icon.svg","revision":3519108,"resolution":false,"location":"assets","locale":false}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3519108,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3519108,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["2.0.0","2.0.1"],"block_files":[],"assets_screenshots":[],"screenshots":[]},"plugin_section":[],"plugin_tags":[468,35473,261474,33218,261475],"plugin_category":[],"plugin_contributors":[255706],"plugin_business_model":[],"class_list":["post-291682","plugin","type-plugin","status-publish","hentry","plugin_tags-keyword-research","plugin_tags-plugin-directory","plugin_tags-plugin-ranking","plugin_tags-plugin-seo","plugin_tags-readme-optimizer","plugin_contributors-whoknewio","plugin_committers-whoknewio"],"banners":{"banner":"https:\/\/ps.w.org\/whoknew-directory-seo\/assets\/banner-772x250.png?rev=3519108","banner_2x":"https:\/\/ps.w.org\/whoknew-directory-seo\/assets\/banner-1544x500.png?rev=3519108","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":"https:\/\/ps.w.org\/whoknew-directory-seo\/assets\/icon.svg?rev=3519108","icon":"https:\/\/ps.w.org\/whoknew-directory-seo\/assets\/icon.svg?rev=3519108","icon_2x":false,"generated":false},"screenshots":[],"raw_content":"<!--section=description-->\n<p>WhoKnew Directory SEO tracks your plugin ranking inside the WordPress.org plugin directory \u2014 and gives you the tools to improve it. Most developers have no idea where their work appears in the plugin repository search results, or what drives those positions. This changes that.<\/p>\n\n<p><strong>This plugin is a frontend client for the whoknew.io ranking service.<\/strong> All keyword scans, readme analysis, ranking calculations, and keyword research are performed exclusively on whoknew.io's servers \u2014 this plugin contains no ranking or analysis logic of its own. An internet connection to whoknew.io is required for any scan or analysis to run.<\/p>\n\n<p>The ranking process requires querying the WordPress.org Plugin Directory API across a shared, rate-limited infrastructure, running a multi-signal scoring algorithm against hundreds of results, and caching those results in a shared pool so every user's scan benefits from work already done for the same keyword. This cannot be replicated locally inside a WordPress plugin \u2014 doing so would require every user's own server IP to hit WordPress.org directly for each scan, risking individual rate-limiting or blocking by WordPress.org. whoknew.io absorbs that infrastructure cost centrally.<\/p>\n\n<p>Usage is governed by the whoknew.io Terms of Service and Privacy Policy (linked in the External Services section below).<\/p>\n\n<p>The plugin directory indexes 7 specific fields in your readme and weighs them differently. Every field you're missing is a ranking signal your competitors are using against you. WhoKnew shows you exactly which fields are covered and which aren't \u2014 so you know precisely what to fix.<\/p>\n\n<p>The free service plan includes:<\/p>\n\n<ul>\n<li><strong>Keyword Scan<\/strong> \u2014 Enter your slug and a keyword to see your exact position in the plugin directory search. Track your plugin ranking for every term that matters to you.<\/li>\n<li><strong>Readme Optimizer<\/strong> \u2014 See which of the 7 indexed readme fields contain your keyword and which don't. Get concrete, field-by-field suggestions to improve your coverage and climb the repository rankings.<\/li>\n<li><strong>How Ranking Works<\/strong> \u2014 A transparent explainer of the repository's two-phase algorithm: relevance score (keyword coverage across your readme and metadata) and quality score (active installs, support threads, rating, freshness, compatibility).<\/li>\n<\/ul>\n\n<p>The free whoknew.io service plan includes 10 API credits per month. Each scan or readme analysis consumes one credit \u2014 this reflects real processing performed on whoknew.io's servers (querying the WordPress.org Plugin Directory API, running the ranking algorithm, and caching results). Upgrade to a paid plan for higher credit limits, competitor keyword intelligence, AI readme suggestions, and full ranking history with visual diffs.<\/p>\n\n<h3>External Services<\/h3>\n\n<p>This plugin contacts the following external services. No connection is made until you perform an action that requires it (a scan, a readme analysis, or a daily background sync). No data is sent passively on page load.<\/p>\n\n<h4>WhoKnew.io Ranking API (whoknew.io)<\/h4>\n\n<p>whoknew.io provides the ranking infrastructure this plugin depends on. It accepts scan requests from the plugin, queries the WordPress.org Plugin Directory API from its own servers, runs the multi-signal scoring algorithm, caches results in a shared pool, and returns ranked data to the plugin for display. None of this processing occurs inside the plugin or on the user's WordPress installation.<\/p>\n\n<p><strong>When contacted:<\/strong><\/p>\n\n<ul>\n<li>When you run a keyword scan \u2014 whoknew.io performs the full ranking analysis on its servers and records one API credit against your service account.<\/li>\n<li>When you run a Readme Analysis \u2014 whoknew.io analyses your readme content against a keyword on its servers.<\/li>\n<li>Once per day via a background task (WordPress Cron) \u2014 to sync your API credit balance locally so the plugin does not need to contact the service on every page load.<\/li>\n<li>When you click \"Test connection\" in Settings \u2014 to verify connectivity and retrieve the current credit balance.<\/li>\n<li>(Pro only) When you activate, deactivate, or refresh your licence \u2014 to validate the licence key and retrieve a JWT token used for higher service-tier credit limits.<\/li>\n<\/ul>\n\n<p><strong>Data sent:<\/strong> your site URL (used as an anonymous domain identifier for API credit tracking), the plugin slug and keyword you scan, and \u2014 for Pro users \u2014 a licence key and a signed JWT token. No personally identifiable visitor data is transmitted.<\/p>\n\n<p><strong>Service:<\/strong> https:\/\/whoknew.io\n<strong>Privacy policy:<\/strong> https:\/\/whoknew.io\/privacy\/\n<strong>Terms of service:<\/strong> https:\/\/whoknew.io\/terms\/<\/p>\n\n<h4>WordPress.org Plugin Directory API (api.wordpress.org)<\/h4>\n\n<p><strong>When contacted:<\/strong><\/p>\n\n<ul>\n<li>When you run a keyword scan \u2014 whoknew.io contacts the WordPress.org Plugin Directory API from its own servers to retrieve live search results, then scores and returns your ranking position.<\/li>\n<li>When you look up a plugin by slug or name in the Scan or Readme Optimizer tabs \u2014 your browser contacts api.wordpress.org directly (client-side) to fetch public plugin metadata. No credits are consumed and whoknew.io is not involved.<\/li>\n<li>When the Readme Optimizer loads a plugin's readme.txt \u2014 your WordPress installation fetches it directly from plugins.svn.wordpress.org. No credits are consumed and whoknew.io is not involved.<\/li>\n<li>When using the <strong>Competitor Keyword Spy<\/strong> feature (Pro) \u2014 whoknew.io contacts the WordPress.org Plugin Directory API on your behalf for each competitor keyword scan.<\/li>\n<\/ul>\n\n<p>All WordPress.org API requests made during a ranking scan originate from whoknew.io's servers (not your WordPress installation), using the public <code>plugins\/info\/1.2\/<\/code> and <code>query_plugins<\/code> endpoints. Results are cached on whoknew.io's servers for up to 6 hours and shared across all users scanning the same keyword, minimising total requests to WordPress.org.<\/p>\n\n<p><strong>Data sent:<\/strong> the search keyword, plugin slug, locale, and a standard WordPress HTTP user-agent string. No account credentials or personal data are sent.<\/p>\n\n<p><strong>Service:<\/strong> https:\/\/api.wordpress.org\n<strong>Privacy policy:<\/strong> https:\/\/wordpress.org\/about\/privacy\/<\/p>\n\n<h3>Affiliate Program<\/h3>\n\n<p>Earn 30% commission promoting WhoKnew\u2122 plugins.\nInstant approval, real-time tracking, monthly payouts.\nSign up free: https:\/\/whoknew.io\/affiliates\/<\/p>\n\n<h3>Third-Party Libraries<\/h3>\n\n<p>WhoKnew Directory SEO includes the following third-party libraries to enhance functionality and provide a better user experience. All minified files below link to their publicly accessible source code:<\/p>\n\n<p><strong>Chart.js<\/strong> (v4.5.1)\n- <strong>Author<\/strong>: Chart.js Contributors\n- <strong>Source<\/strong>: https:\/\/github.com\/chartjs\/Chart.js\/tree\/v4.5.1\n- <strong>Minified Files<\/strong>: <code>chart.min.js<\/code>\n- <strong>License<\/strong>: MIT License\n- <strong>License URI<\/strong>: https:\/\/opensource.org\/licenses\/MIT\n- <strong>Location<\/strong>: <code>\/assets\/js\/vendor\/chart.min.js<\/code><\/p>\n\n<p><strong>diff \/ jsdiff<\/strong> (v5.2.0)\n- <strong>Author<\/strong>: Kevin Decker and contributors\n- <strong>Source<\/strong>: https:\/\/github.com\/kpdecker\/jsdiff\/tree\/v5.2.0\n- <strong>Minified Files<\/strong>: <code>diff.min.js<\/code>\n- <strong>License<\/strong>: BSD 3-Clause License\n- <strong>License URI<\/strong>: https:\/\/opensource.org\/licenses\/BSD-3-Clause\n- <strong>Location<\/strong>: <code>\/assets\/js\/vendor\/diff.min.js<\/code><\/p>\n\n<p>All included libraries are used under their respective open-source licenses, which are compatible with this plugin's GPL-2.0-or-later licensing.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Upload the plugin folder to <code>\/wp-content\/plugins\/whoknew-directory-seo\/<\/code>.<\/li>\n<li>Activate the plugin through the <strong>Plugins<\/strong> screen (or via the <strong>WhoKnew<\/strong> menu if you use other WhoKnew plugins).<\/li>\n<li>Go to <strong>WhoKnew \u2192 WhoKnew Directory SEO<\/strong> to run scans and use the Readme Optimizer.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"do%20i%20need%20an%20account%20to%20track%20my%20plugin%20ranking%3F\"><h3>Do I need an account to track my plugin ranking?<\/h3><\/dt>\n<dd><p>No account required. The plugin connects to the whoknew.io service automatically using your site's domain as an anonymous identifier. The free whoknew.io service plan includes 10 API credits per month \u2014 enough to keep tabs on your most important keywords. Credits represent actual API processing on whoknew.io's servers, not a lock on local plugin features. For higher credit limits and Pro features like competitor keyword intelligence, upgrade at whoknew.io and enter a licence key.<\/p><\/dd>\n<dt id=\"why%20does%20ranking%20analysis%20require%20an%20external%20service%3F\"><h3>Why does ranking analysis require an external service?<\/h3><\/dt>\n<dd><p>The ranking algorithm must query the WordPress.org Plugin Directory API, score hundreds of results using a multi-signal model, and cache those results in a shared pool. If every user's WordPress site made these calls directly, each site's IP address would independently hit WordPress.org on every scan \u2014 risking rate-limiting or blocking by WordPress.org for that user. whoknew.io acts as a shared, caching proxy: it absorbs the API calls centrally, caches results across all users for the same keyword, and returns scored data to the plugin for display. The plugin itself contains no ranking algorithm \u2014 it is purely a display layer for the whoknew.io service.<\/p><\/dd>\n<dt id=\"how%20does%20the%20readme%20optimizer%20work%3F\"><h3>How does the readme optimizer work?<\/h3><\/dt>\n<dd><p>After a keyword scan, WhoKnew checks your readme against the 7 fields the plugin directory indexes \u2014 name, slug, tags, short description, description, author, and contributors. It shows you which fields contain your keyword and which don't, then gives you specific suggestions for each missing field. The plugin directory weights these fields differently, so fixing the right ones has the most impact on your ranking.<\/p><\/dd>\n<dt id=\"does%20this%20work%20for%20any%20plugin%20in%20the%20repository%3F\"><h3>Does this work for any plugin in the repository?<\/h3><\/dt>\n<dd><p>Yes. You can scan any slug listed in the plugin directory \u2014 your own or a competitor's. The Scan tab accepts any public slug from the WordPress.org plugin repository.<\/p><\/dd>\n<dt id=\"what%20data%20is%20sent%20externally%3F\"><h3>What data is sent externally?<\/h3><\/dt>\n<dd><p>When you run a scan, your site's domain (as an anonymous identifier) and the keyword + slug you are scanning are sent to whoknew.io, which performs all ranking analysis on its servers. whoknew.io then queries the public WordPress.org Plugin Directory API to retrieve current search results, runs the scoring algorithm, and returns the ranked results to your plugin. No visitor data, email addresses, or personally identifiable information are ever transmitted.<\/p><\/dd>\n<dt id=\"does%20it%20phone%20home%20on%20every%20page%20load%3F\"><h3>Does it phone home on every page load?<\/h3><\/dt>\n<dd><p>No. Credit usage is stored locally and refreshed once per day via WordPress Cron. Scans only run when you click \"Run scan\". No background tracking or passive telemetry occurs.<\/p><\/dd>\n<dt id=\"where%20is%20the%20algorithm%20information%20from%3F\"><h3>Where is the algorithm information from?<\/h3><\/dt>\n<dd><p>The \"How ranking works\" content is based on the public plugin directory source code (meta.trac.wordpress.org). We call its public APIs and explain the documented repository ranking logic \u2014 we don't host or modify WordPress.org in any way.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>2.0.0<\/h4>\n\n<ul>\n<li>Major release. Introduced Scan tab for tracking plugin keyword rankings in the WordPress.org directory. Added Readme Optimizer tab with field-level scoring and AI-powered rewrite suggestions. Added Rankings dashboard with plugin performance cards, keyword trend charts, sparklines, and position history. Added How Ranking Works tab explaining the WordPress.org search algorithm. Added Plugin Groups feature \u2014 create named competitive sets, assign any plugin to one or more groups, filter the rankings table and plugin grid by group, and manage groups via a dedicated modal. Added per-row and per-card group assignment with a quick dropdown. Added competitor tracking, starred plugins, sortable keyword table, pagination, palette picker, and Usage and Settings tabs.<\/li>\n<li>Added keyword search interest scoring \u2014 see a relative 0\u2013100 popularity score next to each keyword throughout the plugin so you can prioritise the terms worth targeting most.<\/li>\n<\/ul>","raw_excerpt":"Track your plugin ranking &amp; SEO in the WordPress.org plugin directory \u2014 optimize your readme &amp; understand how the repository search algorithm works","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/kir.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/291682","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/kir.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/kir.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/kir.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=291682"}],"author":[{"embeddable":true,"href":"https:\/\/kir.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/whoknewio"}],"wp:attachment":[{"href":"https:\/\/kir.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=291682"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/kir.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=291682"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/kir.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=291682"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/kir.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=291682"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/kir.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=291682"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/kir.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=291682"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}