Cluster keywords by intent and map them to existing or proposed pages.
56
64%
Does it follow best practices?
Run evals on this skill
Adds up to 20 points to the overall score
View guide
Low
Low-risk findings worth noting
Fix and improve this skill with Tessl
tessl review fix ./plugins/openseo/skills/keyword-clustering/SKILL.mdGroup keywords into page-level clusters and decide which existing or new page should target each cluster. This is a keyword mapping workflow, not just a semantic grouping exercise.
projectIdIf keywords are not provided, use list_saved_keywords for saved sets, research_keywords for seed discovery, or get_ranked_keywords when the user starts from a target domain.
The project-context tools are free and shared with the app and other agents.
get_project_context first and ground the mapping in it — the saved key pages are the existing pages clusters should map to, and the business and goal decide which clusters are worth targeting.update_project_context (addKeyPages), then continue the clustering. Never front-load the full interview; suggest seo-project-setup at the end for the rest.update_project_context — new or corrected addKeyPages entries with the topic each page now targets — and append a research log entry: { appendResearchLog: { summary: "Keyword clustering: <keyword set>. Verdict: <conclusion>" } }.list_saved_keywords: fetch an existing keyword set, optionally filtered by tags.research_keywords: expand a seed when the user starts from a topic.get_ranked_keywords: gather exact ranking keywords and URLs when the user starts from a domain or page.get_search_console_performance: when Search Console is connected, pull real queries with dimensions: ["query","page"] to map terms to the pages already earning impressions and to surface cannibalization (one query splitting clicks across multiple URLs).get_serp_results: validate whether keywords belong on the same page by checking SERP overlap and intent.get_local_serp_results: use for local SEO clusters when Maps/local-pack intent should affect page mapping.save_keywords: optionally tag final clusters after user confirmation.get_search_console_performance (dimensions ["query","page"]) when Search Console is connected to start from real queries and the pages already ranking for them.get_ranked_keywords for domain/page-driven clustering.search_local_businesses and get_local_serp_results when proximity, local packs, or Google Business results determine whether terms belong on location pages.get_serp_results batch to check overlap.get_search_console_performance (dimensions: ["query","page"]) — the same query sending impressions to multiple URLs.save_keywords.Start with a short mapping summary:
Then include:
| Cluster | Primary keyword | Secondary keywords | Intent | Target page | Priority | Notes |
|---|
For each cluster, include a recommended page brief:
7b9ee0e
Also appears in
since Aug 22, 2026
If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.