---
title: "Search query clustering report | SEO Skill"
description: "Group returned Search Console queries into repeated demand themes so content gaps, templates and competing pages are easier to inspect across the site."
canonical: "https://seoskill.dev/docs/reports/query-clusters"
language: "en"
---

# Search query clustering report

Cluster the queries Search Console actually returned into repeated themes. Use the groups to inspect demand and page coverage, not as an automatic site architecture.

## Install and run the report

Install the CLI once, then run `seo start` to connect your site and Google data. After setup you can run this report yourself or ask your agent to run it.

Install the SEO CLI globally.

```
npm i -g seo
```

Run setup after installation.

```
seo start
```

Group returned Search Console queries into repeatable themes.

```
seo query-cluster --project example
```

## What you get from this report

Group returned Search Console queries into repeated demand themes so content gaps, templates and competing pages are easier to inspect across the site.

Best for

You need compact themes for research, page review, or reporting.

Needs

Returned Search Console queries

You get

Group returned Search Console queries into repeated demand themes so content gaps, templates and competing pages are easier to inspect across the site.

Use next

Review query overlap and cannibalisation

Every report follows the same rules for missing data and outside estimates.[See how report data works](https://seoskill.dev/docs/reports#how-report-data-works).

## What you need before you run it

The report uses the information below. Optional sources are only used when you ask for them.

### Returned Search Console queries

Provides query wording and metrics from the selected property and date range.

### Clustering threshold and limits

Control the required token overlap, source rows, and number of groups returned.

## Use a different report for these jobs

These jobs need a different report or a manual review.

[

### You need to understand the opportunities and live content for one page rather than group query wording.

Run page opportunities for the URL. It adds exact-page Search Console rows and optional live-page verification instead of grouping property-wide query text.

Page SEO opportunities

](https://seoskill.dev/docs/reports/page-opportunities)

### You need a final information architecture or a definitive judgment that grouped queries share the same search intent.

No automated report can settle intent from token overlap alone. Review the cluster members, current search results, existing pages, and user task manually; use these repeatable groups to reduce the query set you need to inspect.

Needs more evidence

## Use the report with an agent or in code

The command above is enough for most work. These options let an agent, script or application run the same report with explicit input and structured output.

### CLI

Use the report catalog when an agent, script or CI job needs predictable JSON instead of the normal terminal output. Check the current input first, then run the report with the validated parameters.

Check the current input before the agent or script runs the report.

```
seo reports describe query-clusters --json
```

Once the input is valid, run the report through the report catalog.

```
seo reports run query-clusters --params '{"site":"sc-domain:example.com","scope":"/guides/","minImpressions":50,"limit":20,"includeBrand":false}' --json
```

### MCP

An MCP agent follows the same two-step flow. It inspects the current schema, fills the required fields and only then runs the report.

Ask the MCP server for the current report input.

```
{
  "id": "query-clusters"
}
```

Run the report after the agent has checked and filled the input.

```
{
  "id": "query-clusters",
  "params": {
    "site": "sc-domain:example.com",
    "scope": "/guides/",
    "minImpressions": 50,
    "limit": 20,
    "includeBrand": false
  }
}
```

### TypeScript

Install the package in a Node 22 project when your application needs to run the report directly. The result includes the same evidence, warnings and limits returned through the CLI and MCP server.

Add the SEO package to your project.

```
npm install seo
```

Run the report from your TypeScript application.

```
import { executeReport } from 'seo/mcp'

const result = await executeReport(
  'query-clusters',
  {
  "site": "sc-domain:example.com",
  "scope": "/guides/",
  "minImpressions": 50,
  "limit": 20,
  "includeBrand": false
},
)

console.log(result)
```

## What to do next

Open the queries and pages inside each useful cluster before changing site structure. Treat the groups as an investigation aid, then confirm intent and page overlap with live search evidence.

1.  01Inspect the pages receiving impressions for each useful cluster.
2.  02Run query overlap when several URLs appear for the same group.

## Related reports

[

Find Search Console queries associated with competing URLs and inspect where impressions, clicks or intent may be split across several pages.

Keyword cannibalization report

](https://seoskill.dev/docs/reports/cannibalisation)[

Compare one URL with its Search Console queries and live page evidence to find focused content, CTR and coverage opportunities before rewriting the page.

Page SEO opportunities

](https://seoskill.dev/docs/reports/page-opportunities)[

Build a content brief from one page, its Search Console queries and the headings or topics already present. Keep every suggestion tied to demand.

Content optimization report

](https://seoskill.dev/docs/reports/content-optimization)

## Sources used by this report

These primary sources define the provider data or search controls used by the result.

-   [Search Console Search Analytics API guidance](https://developers.google.com/webmaster-tools/v1/how-tos/search_analytics)
