Back to Tools

Category Keyword Finder

Use cases

Finding new category opportunities Expanding e-commerce taxonomy Keyword gap analysis for categories

Uses NLTK ngrams utility to extract word sequences from cleaned product titles.

Text preprocessing: lowercase, number removal via regex, punctuation stripping, whitespace normalisation.

Groups products by URL path segment preceding product pattern.

Counts n-gram occurrences across corpus per category.

Configurable n-gram range (min 1-5, max 2-8), minimum product threshold (2-20).

Streamlit App

Platform

Browser-based (no installation required)

Input

Screaming Frog CSV with URL and H1/Title columns

Optional: keyword dataset CSV with search volumes

Output

Excel: all keywords, new opportunities, category summary. Metrics: total keywords, new opportunities count, categories analysed.

Launch App View Source

Features

  • NLTK n-gram extraction
  • Configurable n-gram length: min 1-5, max 2-8 words
  • Minimum product threshold (2-20, default 3)
  • Customisable product/category URL patterns
  • Optional search volume matching
  • UTF-8 and Latin-1 encoding support
  • Three-sheet Excel export via xlsxwriter

How to use

  1. 1 Crawl your site with Screaming Frog
  2. 2 Upload crawl file
  3. 3 Set product URL pattern (default: /product/)
  4. 4 Set category URL pattern (default: /category/)
  5. 5 Configure n-gram length range and minimum products
  6. 6 Optionally upload keyword volume data
  7. 7 Download three-sheet Excel with suggestions

Frequently asked questions

What export do I upload?
A Screaming Frog CSV (Excel exports are not accepted). The tool auto-selects the 'Address' column for URLs and 'H1-1' for titles, falling back to 'Title 1', and both can be remapped in the 'Map columns' expander. The optional keyword file is also CSV, with 'Keyword' and 'Volume' or 'Search Volume' auto-detected.
How is the parent category worked out from a product URL?
The tool splits the URL on slashes and returns everything before the first segment containing your product pattern, so /shop/sofas/product/blue-velvet maps to /shop/sofas/. If the pattern never appears in the path, it falls back to the URL minus its final segment, which can lump unrelated products together, so set the product pattern to match your real URL structure.
Why do the suggested keywords never contain numbers?
All digits are stripped from product titles before n-grams are generated, so '3 seater sofa' contributes 'seater sofa'. If numeric qualifiers matter for your categories (seat counts, sizes, capacities), you will need to add them back manually.
Are all possible phrases evaluated?
No. For each category and each n-gram length, only the 50 most common phrases are considered, and each must then substring-match at least the minimum number of product titles (default 3) to survive. Very large categories with diverse titles can therefore miss valid long-tail phrases outside the top 50.
How reliable is the 'exists as category' flag?
It is an exact string match: the phrase must equal an existing category page's H1 (lowercased) to be flagged as existing. A suggestion of 'velvet sofa' next to an existing category titled 'Velvet Sofas' still shows as a new opportunity, so sense-check the New Opportunities sheet against your live taxonomy before acting.

Need something built for your business?

This tool started as bespoke client work. I build custom scripts, data pipelines, and full apps for SEO and product data problems that off-the-shelf tools don't solve.

Tell Me What You Need