Category Keyword Finder
Discover new category opportunities by extracting n-grams from product titles.
#about
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 columnsOptional: keyword dataset CSV with search volumes
- Output
- Excel: all keywords, new opportunities, category summary. Metrics: total keywords, new opportunities count, categories analysed.
- Category
- Keyword Research
Use cases
- Finding new category opportunities
- Expanding e-commerce taxonomy
- Keyword gap analysis for categories
#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
- Crawl your site with Screaming Frog
- Upload crawl file
- Set product URL pattern (default: /product/)
- Set category URL pattern (default: /category/)
- Configure n-gram length range and minimum products
- Optionally upload keyword volume data
- Download three-sheet Excel with suggestions
#faq
- 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.
/contact
Want me to run this for you? I run this tool as a managed service, or build something custom around your data. You get the insights without touching the code.