Keyword Topic Classifier
Use cases
Hierarchical theme/subtheme classification with a 0-1 confidence score per subtheme (copied to each keyword row in that subtheme).
Claude models: Sonnet 4.5, Sonnet 4, Haiku 4.5.
GPT models: gpt-4o-mini, gpt-4o, gpt-4.1.
OpenAI uses structured JSON schema validation.
Batch processing (10-50 keywords, default 30) with 1-second delays.
Platform
Browser-based (no installation required)
Input
Anthropic or OpenAI API key
Keywords: comma/newline separated or CSV/Excel
Optional: grouping column for page-level analysis
Output
Keywords with theme, subtheme, and subtheme-level confidence (0-1). Expandable theme groups. CSV/Excel export.
Features
- Claude Sonnet/Haiku and GPT-4o model options
- Hierarchical theme + subtheme classification
- 0-1 confidence scores assigned per subtheme
- Configurable batch size (10-50, default 30)
- Strict JSON schema enforcement on the OpenAI path
- Optional URL/page grouping column
How to use
- 1 Select AI provider and model
- 2 Configure batch size (higher = faster)
- 3 Paste keywords or upload file
- 4 Optionally group by URL column
- 5 Review expandable theme sections with confidence
Frequently asked questions
- Why are my theme names inconsistent across the output?
- Each batch is classified in a completely independent API call with no shared taxonomy, so the model may call the same topic 'Comparison' in one batch and 'Comparisons' in another. This is the main limitation for large lists: expect to normalise theme and subtheme names afterwards, or keep related keywords in the same batch by sorting your input first.
- Why did my one-per-line keyword list get mangled in the Single Batch tab?
- The Single Batch tab splits on commas if the input contains any comma at all, even when your keywords are one per line. A single keyword containing a comma flips the whole parse to comma mode. Remove commas from your list, or use the Bulk Classification tab where keywords come from a file column instead.
- Some keywords are missing from the results. Why?
- In bulk mode a failed batch is silently skipped: the tool moves on to the next batch without surfacing the error, so those keywords simply never appear in the output. There is also no check that the model returned every keyword it was sent. Always reconcile the output row count against your input before using the results.
- Is the confidence score per keyword?
- It is reported per subtheme, so every keyword in the same subtheme carries an identical score. It is also self-reported by the model rather than a calibrated probability, so use it for triage only.
- How do the Claude and OpenAI paths differ in reliability?
- The OpenAI path uses a strict JSON schema, so responses are structurally guaranteed. The Claude path relies on prompt instructions plus stripping of markdown code fences, so malformed JSON is possible and surfaces as a batch error. Both run batches with a 1 second delay between calls.
- Does the bulk mode deduplicate my keywords?
- Only when no grouping column is selected, in which case duplicates are removed before batching. If you group by a URL or page column, duplicates within and across groups are kept and each is classified (and billed) separately.
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.
Related Tools
Compare keyword lists to find gap opportunities with content matching.
Convert keyword phrases into natural questions for FAQ content.
Cluster keywords by shared SERP URLs via a FastAPI REST endpoint.
Cluster keywords by semantic similarity using sentence-transformers embeddings.
Convert marketing-heavy H1 headings into clean, natural search queries using Claude.
Follow redirect chains and see every hop along the way.
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