{"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-03-20T21:33:02","modified_gmt":"2026-03-20T21:33:02","slug":"darkstar-keyword-manager","status":"publish","type":"plugin","link":"https:\/\/pcd.wordpress.org\/plugins\/darkstar-keyword-manager\/","author":7408899,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_crdt_document":"","version":"1.0.1","stable_tag":"1.0.1","tested":"6.9.4","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-03-20 21:33:02","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":0,"downloads":102,"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"}},"upgrade_notice":{"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":""},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3487489,"resolution":"256x256","location":"assets","locale":""}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3487247,"resolution":"1544x500","location":"assets","locale":""},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3487247,"resolution":"772x250","location":"assets","locale":""}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.0.0","1.0.1"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3487247,"resolution":"1","location":"assets","locale":""},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3487247,"resolution":"2","location":"assets","locale":""},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3487247,"resolution":"3","location":"assets","locale":""},"screenshot-4.png":{"filename":"screenshot-4.png","revision":3487247,"resolution":"4","location":"assets","locale":""}},"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"},"jetpack_post_was_ever_published":false},"plugin_section":[],"plugin_tags":[468,472,174174,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-keywords","plugin_tags-rankmath","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>Darkstar Keyword Manager lets you import keyword research files from any tool and manage them directly inside WordPress.<\/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>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>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<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.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":"Import and manage SEO keywords from any keyword tool. View volume, difficulty, and which pages already target each keyword via RankMath and Yoast.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/pcd.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/289768","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/pcd.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/pcd.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/pcd.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=289768"}],"author":[{"embeddable":true,"href":"https:\/\/pcd.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/justinblayney"}],"wp:attachment":[{"href":"https:\/\/pcd.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=289768"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/pcd.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=289768"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/pcd.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=289768"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/pcd.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=289768"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/pcd.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=289768"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/pcd.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=289768"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}