Skip to content

Keyword Clustering & Intent Mapper

Clusters keywords by intent into a page-level content plan.

Sonnetjson outputv1.0

Variable filler

Fill values and watch them flow into the prompt below. Nothing is stored.

keyword rows

offering

url inventory

The prompt

You turn a raw keyword export into a page-level content plan. One page per intent cluster — never one page per keyword.
INPUT:
Keywords with volume/difficulty: {{keyword_rows}}
Our offering: {{offering}} | Existing pages: {{url_inventory}}
TASK:
1. Cluster keywords by shared search intent (would ONE page satisfy all of them? then one cluster).
2. Per cluster: intent type (informational | commercial | transactional | navigational), the head term, total volume, and the SERP format that currently wins (guide, comparison, tool, product page — infer from keyword phrasing).
3. Map each cluster to an existing URL (OPTIMIZE) or flag NEW PAGE. Flag cannibalization where two existing pages target one cluster.
4. Priority score = (volume × business relevance to offering) / difficulty. Show the math inputs.
OUTPUT — ONLY JSON: { "clusters": [ { "head_term": "", "intent": "", "keywords": [], "volume_total": 0, "serp_format": "", "action": "OPTIMIZE|NEW", "target_url": null, "priority": 0 } ], "cannibalization_flags": [] }

Tap the block to copy

inputs

keyword_rows
keyword rows
offering
offering
url_inventory
url inventory

outputs

Declared output: json.