Micro-Moments Classifier
Classify keywords into Google's 4 micro-moments using OpenAI.
#about
GPT-powered classification into four intent categories: I-want-to-BUY (transactional), I-want-to-KNOW (informational), I-want-to-DO (instructional), I-want-to-GO (navigational).
Model selection: gpt-4o-mini (default), gpt-4o, gpt-4.1.
Configurable batch size (10-100 keywords per API call).
Temperature=0 for deterministic results.
1-5 confidence scoring.
Requires an API key
- Platform
- Python script (requires Python 3.x)
- Input
- OpenAI API keyKeywords via CSV or text inputBatch size: 10-100 (default 50)
- Output
- Excel with separate sheets per micro-moment: keyword, classification, confidence score (1-5).
- Category
- Keyword Research
Use cases
- Segmenting keywords by intent
- Prioritising transactional keywords
- Content strategy by intent
- PPC keyword intent analysis
#features
- Four micro-moment categories (BUY/KNOW/DO/GO)
- Model selection: gpt-4o-mini, gpt-4o, gpt-4.1
- Configurable batch size (10-100 per API call)
- 1-5 confidence scoring per classification
- Separate Excel sheets by intent type
#how-to-use
- Enter your OpenAI API key
- Select GPT model (gpt-4o-mini is the default)
- Upload a keywords CSV or paste keywords (an uploaded file takes precedence)
- Set batch size (larger batches risk the 4,000 output token cap)
- Classify; keywords the model misses are added as Unclassified
- Download CSV or Excel with a sheet per micro-moment
#faq
- Why do some keywords come back as 'Unclassified' with confidence 0?
- After all batches finish, the tool compares your input list against the model's output (case-insensitively). Any keyword the model failed to return is appended as 'Unclassified' with confidence 0 rather than dropped. A common cause is the model slightly rewriting a keyword; in that case the rewritten version appears classified and your original also appears as Unclassified, inflating the row count.
- Why did a whole batch fail on a large batch size?
- Each API call is capped at 4,000 output tokens. With the batch size at or near the 100 maximum, long keywords plus confidence scores can exceed that cap, truncating the JSON so the entire batch errors. If you see batch errors, lower the batch size; the default of 50 is usually safe.
- Which column does it use from my CSV?
- It preselects the first column whose name contains 'keyword' or 'query' (any case), but you can override this in the Column Selection expander. If no column matches, it defaults to the first column, so check the selection before running.
- Can I use both the CSV upload and the manual text box?
- No, the upload wins. Keywords typed into the manual expander are ignored whenever a file is uploaded, so remove the file first if you want to classify a pasted list.
- What do the confidence scores actually mean?
- They are self-reported by the model on a 1 to 5 scale as part of the same prompt, not calibrated probabilities. Classification runs at temperature 0 so repeated runs are near-deterministic, but treat the scores as a rough triage signal for manual review, not a statistical measure.
/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.