{"id":289768,"date":"2026-03-20T14:11:00","date_gmt":"2026-03-20T14:11:00","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/darkstar-keyword-manager\/"},"modified":"2026-05-28T19:27:05","modified_gmt":"2026-05-28T19:27:05","slug":"darkstar-keyword-manager","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/darkstar-keyword-manager\/","author":7408899,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.0.3","stable_tag":"1.0.3","tested":"7.0","requires":"5.6","requires_php":"7.4","requires_plugins":null,"header_name":"Darkstar Keyword Manager","header_author":"Darkstar Media","header_description":"Import keywords from CSV or XLSX files. View search volume, difficulty, and see which pages target each keyword via RankMath and Yoast SEO integration.","assets_banners_color":"fcd4a5","last_updated":"2026-05-28 19:27:05","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/www.darkstarmedia.net\/keyword-manager-seo-plugin\/","header_author_uri":"https:\/\/www.darkstarmedia.net","rating":5,"author_block_rating":0,"active_installs":10,"downloads":306,"num_ratings":1,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.0.0":{"tag":"1.0.0","author":"justinblayney","date":"2026-03-20 14:10:50"},"1.0.1":{"tag":"1.0.1","author":"justinblayney","date":"2026-03-20 21:33:02"},"1.0.2":{"tag":"1.0.2","author":"justinblayney","date":"2026-04-22 20:47:11"},"1.0.3":{"tag":"1.0.3","author":"justinblayney","date":"2026-05-28 19:27:05"}},"upgrade_notice":{"1.0.3":"<p>New: Unattached keywords filter surfaces SEO focus keywords not yet in any list. Tested up to WordPress 7.0.<\/p>","1.0.2":"<p>List filters, volume\/difficulty filters, manual keyword entry, and delete list are now free. CSV export is the only remaining Pro feature.<\/p>","1.0.0":"<p>Initial release.<\/p>"},"ratings":{"1":0,"2":0,"3":0,"4":0,"5":1},"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3487489,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3487489,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3487247,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3487247,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.0.0","1.0.1","1.0.2","1.0.3"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3487247,"resolution":"1","location":"assets","locale":"","width":1200,"height":900},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3487247,"resolution":"2","location":"assets","locale":"","width":1200,"height":900},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3487247,"resolution":"3","location":"assets","locale":"","width":1200,"height":900},"screenshot-4.png":{"filename":"screenshot-4.png","revision":3487247,"resolution":"4","location":"assets","locale":"","width":1200,"height":900}},"screenshots":{"1":"Keyword list \u2014 search, sort by any column, difficulty badges, targeted page column, and favourite controls","2":"Import Step 1 \u2014 upload a CSV or XLSX file and name your keyword list","3":"Import Step 2 \u2014 map your file columns to Keyword, Volume, and Difficulty with a live file preview","4":"Settings \u2014 configure keywords per page and uninstall behaviour"}},"plugin_section":[],"plugin_tags":[468,264840,472,186,2227],"plugin_category":[55,57],"plugin_contributors":[257108],"plugin_business_model":[],"class_list":["post-289768","plugin","type-plugin","status-publish","hentry","plugin_tags-keyword-research","plugin_tags-keyword-management","plugin_tags-keywords","plugin_tags-seo","plugin_tags-yoast","plugin_category-seo-and-marketing","plugin_category-taxonomy","plugin_contributors-justinblayney","plugin_committers-justinblayney"],"banners":{"banner":"https:\/\/ps.w.org\/darkstar-keyword-manager\/assets\/banner-772x250.png?rev=3487247","banner_2x":"https:\/\/ps.w.org\/darkstar-keyword-manager\/assets\/banner-1544x500.png?rev=3487247","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/darkstar-keyword-manager\/assets\/icon-128x128.png?rev=3487489","icon_2x":"https:\/\/ps.w.org\/darkstar-keyword-manager\/assets\/icon-256x256.png?rev=3487489","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/darkstar-keyword-manager\/assets\/screenshot-1.png?rev=3487247","caption":"Keyword list \u2014 search, sort by any column, difficulty badges, targeted page column, and favourite controls"},{"src":"https:\/\/ps.w.org\/darkstar-keyword-manager\/assets\/screenshot-2.png?rev=3487247","caption":"Import Step 1 \u2014 upload a CSV or XLSX file and name your keyword list"},{"src":"https:\/\/ps.w.org\/darkstar-keyword-manager\/assets\/screenshot-3.png?rev=3487247","caption":"Import Step 2 \u2014 map your file columns to Keyword, Volume, and Difficulty with a live file preview"},{"src":"https:\/\/ps.w.org\/darkstar-keyword-manager\/assets\/screenshot-4.png?rev=3487247","caption":"Settings \u2014 configure keywords per page and uninstall behaviour"}],"raw_content":"<!--section=description-->\n<p>When managing keyword strategy across multiple WordPress sites, every tool gives you a spreadsheet. Run a few campaigns and you end up with dozens of files \u2014 no way to track which keywords belong to which topic, and no visibility into which pages are actually targeting them.<\/p>\n\n<p>Darkstar Keyword Manager fixes that. Import from any keyword tool, organise keywords into named lists, and see exactly which page targets each keyword \u2014 free, inside WordPress.<\/p>\n\n<p>The free version includes what most SEO plugins charge for: direct integration with Yoast, RankMath, SEOPress, and AIOSEO.<\/p>\n\n<h4>Key Features<\/h4>\n\n<ul>\n<li><strong>Import from any tool<\/strong> \u2014 Upload CSV or XLSX files from Ahrefs, SEMrush, Google Keyword Planner, Moz, Ubersuggest, and more<\/li>\n<li><strong>Column mapping<\/strong> \u2014 After upload, choose which columns map to Keyword, Volume, and Difficulty \u2014 no reformatting required<\/li>\n<li><strong>Smart auto-detection<\/strong> \u2014 Common column names (Volume, KD, Keyword Difficulty, etc.) are detected automatically<\/li>\n<li><strong>Sortable table<\/strong> \u2014 Click any column header to sort ascending or descending<\/li>\n<li><strong>AJAX search<\/strong> \u2014 Filter keywords instantly with a live search field<\/li>\n<li><strong>Pagination<\/strong> \u2014 Configurable per-page count (10\u2013500) with smart page number controls<\/li>\n<li><strong>SEO plugin integration<\/strong> \u2014 See which published page targets each keyword. Supports Yoast SEO, RankMath, SEOPress, and All in One SEO (single DB query, no performance hit)<\/li>\n<li><strong>Favourite keywords<\/strong> \u2014 Star any keyword to mark it; filter to view only favourites<\/li>\n<li><strong>Bulk actions<\/strong> \u2014 Select multiple keywords to delete, favourite, or unfavourite in one click<\/li>\n<li><strong>Duplicate detection<\/strong> \u2014 Keywords targeted by more than one page are highlighted and filterable with a \"Duplicates only\" toggle<\/li>\n<li><strong>Unattached keywords<\/strong> \u2014 Instantly surface focus keywords set in your active SEO plugin that haven't been imported into any list yet, with a single checkbox<\/li>\n<li><strong>Difficulty badges<\/strong> \u2014 Easy \/ Medium \/ Hard colour-coded badges (0\u201330 \/ 31\u201360 \/ 61\u2013100)<\/li>\n<li><strong>List names<\/strong> \u2014 Each import is saved under a named list for organisation<\/li>\n<li><strong>Filter by list<\/strong> \u2014 Select any named list from a dropdown to narrow your view<\/li>\n<li><strong>Volume &amp; difficulty filters<\/strong> \u2014 Filter by min\/max volume or a difficulty range (0\u2013100)<\/li>\n<li><strong>Add keywords manually<\/strong> \u2014 Enter a keyword with optional volume and difficulty, no import required<\/li>\n<li><strong>Delete a list<\/strong> \u2014 Remove an entire keyword list and all its keywords in one click<\/li>\n<li><strong>Secure upload handling<\/strong> \u2014 Magic byte validation, MIME checking, size limits, randomised temp filenames, protected temp directory, automatic cleanup<\/li>\n<\/ul>\n\n<h4>Supported File Formats<\/h4>\n\n<ul>\n<li><strong>CSV<\/strong> \u2014 Comma, tab, or semicolon delimited. Auto-detected.<\/li>\n<li><strong>XLSX<\/strong> \u2014 Excel 2007+ format. Parsed natively via ZipArchive + SimpleXML (no library required).<\/li>\n<\/ul>\n\n<h4>How It Works<\/h4>\n\n<ol>\n<li>Go to <strong>Keyword Manager \u2192 Import Keywords<\/strong><\/li>\n<li>Enter a list name and upload your file<\/li>\n<li>Map the columns: which column is the Keyword? Volume? Difficulty?<\/li>\n<li>Click <strong>Import Keywords<\/strong><\/li>\n<li>View and manage your keywords at <strong>Keyword Manager \u2192 All Keywords<\/strong><\/li>\n<\/ol>\n\n<h4>SEO Plugin Integration<\/h4>\n\n<p>When Yoast SEO, RankMath, SEOPress, or All in One SEO is active, a <strong>Targeted Page(s)<\/strong> column appears in the keyword list. If a keyword is set as the focus keyword on multiple pages, all pages are listed \u2014 and the row is highlighted as a duplicate. A <strong>Duplicates only<\/strong> filter lets you see all conflicting keywords at a glance. RankMath's comma-separated multi-keyword fields and AIOSEO's JSON keyphrase format are fully supported. The lookup uses a single database query regardless of how many keywords are displayed.<\/p>\n\n<p>An <strong>Unattached keywords<\/strong> checkbox in the toolbar shows all focus keywords currently set in your active SEO plugin that have not yet been imported into any list \u2014 so you always have a full picture of your site's keyword coverage without running a separate audit.<\/p>\n\n<h4>Requirements<\/h4>\n\n<ul>\n<li>PHP ZipArchive extension (required for XLSX \u2014 enabled by default on most hosts)<\/li>\n<li>Yoast SEO, RankMath, SEOPress, or All in One SEO (optional, for the Targeted Page column)<\/li>\n<\/ul>\n\n<h3>Additional Information<\/h3>\n\n<h4>Privacy<\/h4>\n\n<p>This plugin stores keyword data in the WordPress database. No data is sent to external servers.<\/p>\n\n<h4>Support<\/h4>\n\n<p>For support, visit <a href=\"https:\/\/www.darkstarmedia.net\">Darkstar Media<\/a>.<\/p>\n\n<!--section=installation-->\n<h4>Automatic Installation<\/h4>\n\n<ol>\n<li>Log in to your WordPress admin panel<\/li>\n<li>Go to Plugins \u2192 Add New<\/li>\n<li>Search for \"Darkstar Keyword Manager\"<\/li>\n<li>Click Install Now and then Activate<\/li>\n<\/ol>\n\n<h4>Manual Installation<\/h4>\n\n<ol>\n<li>Download the plugin zip file<\/li>\n<li>Go to Plugins \u2192 Add New \u2192 Upload Plugin<\/li>\n<li>Choose the zip file and click Install Now<\/li>\n<li>Activate the plugin<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"what%20keyword%20tools%20are%20supported%3F\"><h3>What keyword tools are supported?<\/h3><\/dt>\n<dd><p>Any tool that exports CSV or XLSX: Ahrefs, SEMrush, Moz, Google Keyword Planner, Ubersuggest, KWFinder, Serpstat, and others. The column mapping step handles any column order or naming convention. If you have an ODS file, open it in Google Sheets and download as XLSX first.<\/p><\/dd>\n<dt id=\"does%20it%20work%20without%20yoast%2C%20rankmath%2C%20seopress%2C%20or%20aioseo%3F\"><h3>Does it work without Yoast, RankMath, SEOPress, or AIOSEO?<\/h3><\/dt>\n<dd><p>Yes. The Targeted Page column simply does not appear if none of the supported SEO plugins is active.<\/p><\/dd>\n<dt id=\"how%20many%20keywords%20can%20i%20import%3F\"><h3>How many keywords can I import?<\/h3><\/dt>\n<dd><p>There is no hard limit. For best performance, keep individual imports under 10,000 keywords and use the per-page setting to manage display speed.<\/p><\/dd>\n<dt id=\"can%20i%20import%20multiple%20files%3F\"><h3>Can I import multiple files?<\/h3><\/dt>\n<dd><p>Yes. Each upload creates a new named list. All keywords are visible in the combined keyword list.<\/p><\/dd>\n<dt id=\"how%20is%20volume%20stored%3F\"><h3>How is Volume stored?<\/h3><\/dt>\n<dd><p>As an integer. Commas are stripped during import (e.g. \"1,200\" becomes 1200).<\/p><\/dd>\n<dt id=\"how%20is%20difficulty%20stored%3F\"><h3>How is Difficulty stored?<\/h3><\/dt>\n<dd><p>As an integer 0\u2013100. Values above 100 are clamped to 100.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.0.3<\/h4>\n\n<ul>\n<li>New: Unattached keywords \u2014 a toolbar checkbox instantly shows all focus keywords set in your active SEO plugin that aren't in any list yet<\/li>\n<li>UI: Targeting page column is now right-aligned and table column widths are locked for a consistent layout<\/li>\n<li>Updated: tested up to WordPress 7.0<\/li>\n<\/ul>\n\n<h4>1.0.2<\/h4>\n\n<ul>\n<li>Free: list filter, volume\/difficulty filters, manual keyword entry, and delete list are now included in the free version<\/li>\n<li>Pro: CSV export remains the only Pro feature<\/li>\n<li>Updated: upgrade messaging throughout to reflect the new feature split<\/li>\n<\/ul>\n\n<h4>1.0.1<\/h4>\n\n<ul>\n<li>Performance: batch database inserts on import (up to 200 rows per query \u2014 eliminates timeout errors on large files)<\/li>\n<li>Fix: import now continues processing if Cloudflare or browser times out before PHP finishes<\/li>\n<li>Fix: column mapping validation now blocks submission if a non-numeric column (e.g. URLs, text) is selected for Volume or Difficulty<\/li>\n<li>New: one-click \"Delete All Duplicates\" button removes every duplicate keyword across all lists globally<\/li>\n<li>New: upgrade notice for Pro features shown on Keywords, Import, and Settings pages<\/li>\n<li>Updated: tested up to WordPress 6.9.4<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Initial release<\/li>\n<li>Import CSV and XLSX files<\/li>\n<li>Column mapping UI with auto-detection of common column names<\/li>\n<li>Sortable, searchable, paginated keyword list<\/li>\n<li>RankMath and Yoast SEO integration (targeted page column)<\/li>\n<li>Favourite keywords with filter<\/li>\n<li>Bulk delete, favourite, and unfavourite actions<\/li>\n<li>Delete individual keywords<\/li>\n<li>Difficulty colour badges (Easy \/ Medium \/ Hard)<\/li>\n<li>Named lists for each import<\/li>\n<li>Configurable per-page setting (10\u2013500)<\/li>\n<li>Translation ready<\/li>\n<\/ul>","raw_excerpt":"Free WordPress keyword plugin with Yoast, RankMath, SEOPress &amp; AIOSEO integration. Import keywords and see exactly which page targets each one.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/289768","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=289768"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/justinblayney"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=289768"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=289768"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=289768"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=289768"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=289768"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=289768"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}