---
title: "Programmatic SEO opportunities | SEO Skill"
description: "Find programmatic SEO opportunities by joining template and Search Console evidence with optional keyword, live SERP, competitor and data-source research."
canonical: "https://seoskill.dev/docs/reports/pseo-opportunities"
language: "en"
---

# Programmatic SEO opportunities

Start with repeated templates and query clusters already observed on the site. Add independent discovery and live results only when they help decide whether to extend a working template, research a different page type or stop.

## 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
```

Research template expansion without making paid calls by default.

```
seo reports run pseo-opportunities --params '{"site":"sc-domain:example.com","includeExternal":false}' --json
```

## What you get from this report

Extend observed template and query-cluster evidence with optional keyword discovery, live results, competitor patterns, costs, and data-source checks.

Best for

Repeated templates already earn impressions and need a careful expansion plan.

Needs

Programmatic template evidence

You get

Observed templates, query clusters, linked discovery candidates, optional live result evidence, and repeated competitor patterns.

Use next

Audit programmatic SEO templates

## What you need before you run it

This report uses bounded programmatic SEO audit and Search Console query-cluster evidence, plus optional provider discovery and live result snapshots for an explicit market.

### Programmatic template evidence

Provides bounded repeated URL families, populations, and representative pages through the existing programmatic SEO audit.

### Search Console query evidence

Provides returned impressions, clicks, average position, template queries, and bounded query clusters.

### Optional external research

Adds market-specific candidate terms only when explicitly enabled with a country, language, and bounded acquisition limits.

### Optional live result snapshots

Adds at most three exact market and device-specific result checks for selected candidates.

## How the report finds the opportunity

The report uses existing search and page evidence to build a limited review list. An opportunity is a reason to inspect a page, not a promise of more traffic.

01

Selects no more than five research seeds from search-evidenced templates and retained query clusters.

02

Separates existing first-party queries, observed-template extensions, and new-template research while preserving provider value states and cost.

03

Groups repeated domains and URL shapes from bounded live snapshots without assigning authority or feasibility scores.

04

Creates data-source research briefs that do not claim a suitable or reusable dataset exists.

## Check the evidence behind each opportunity

Start with the query, page and date range behind each suggestion. Thin or partial evidence belongs in the review pile, not the implementation queue.

| Read first | Why it matters |
| --- | --- |
| Result | Observed templates, query clusters, linked discovery candidates, optional live result evidence, and repeated competitor patterns. |
| More detail | Explicit selection limits, source coverage, cache state, warnings, known and unknown cost, caveats, findings, and up to three data-source briefs. |
| Read it with | Read the first-party templates and clusters first. Use provider metrics and live result patterns as added context, then complete the data-source brief before proposing any generated inventory. |

## What the result cannot prove

Search Console is bounded and omits anonymised queries. Provider metrics are estimates, while live results describe one market, device, and observation time. A repeated competitor URL pattern is not proof of page quality, authority, reusable data, or a template another site should reproduce.

Read the first-party templates and clusters first. Use provider metrics and live result patterns as added context, then complete the data-source brief before proposing any generated inventory. Run the programmatic SEO audit with bounded crawl and index samples before changing a generator.

## Use a different report for these jobs

You want one generated page per keyword without checking shared intent or data quality. You only need to audit the current technical and index state of existing pages.

[

### You need to validate the technical and indexed state of existing template pages.

Run the programmatic SEO audit with bounded crawl and URL Inspection samples. Opportunity research deliberately reuses its template contract without performing those deeper checks.

Programmatic SEO audit

](https://seoskill.dev/docs/reports/pseo-audit)

### You want to generate every keyword combination returned by the provider.

Do not generate the combinations. Review shared intent, representative results, bounded inventory, differentiated value, data rights, missing-value rules, crawl controls, canonicals, and internal links before proposing any page system.

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 pseo-opportunities --json
```

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

```
seo reports run pseo-opportunities --params '{"site":"sc-domain:example.com","includeExternal":false,"templateLimit":10,"clusterLimit":10}' --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": "pseo-opportunities"
}
```

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

```
{
  "id": "pseo-opportunities",
  "params": {
    "site": "sc-domain:example.com",
    "includeExternal": false,
    "templateLimit": 10,
    "clusterLimit": 10
  }
}
```

### 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(
  'pseo-opportunities',
  {
  "site": "sc-domain:example.com",
  "includeExternal": false,
  "templateLimit": 10,
  "clusterLimit": 10
},
)

console.log(result)
```

## What to do next

Review the first-party templates and clusters before adding external evidence. For the strongest candidates, inspect live results and complete the data-source checks before deciding to extend a template, create a different page type or do nothing.

1.  01Rerun with explicit external market and cost limits only when independent discovery would change the decision.
2.  02Inspect representative ranking pages and validate identifiers, fields, coverage, freshness, rights, missing-value rules, crawl controls, and internal links.
3.  03Run the programmatic SEO audit with bounded crawl and index samples before changing a generator.

## Related reports

[

Review repeated page families with search demand, limited crawl samples, and optional Google index evidence kept separate.

Programmatic SEO audit

](https://seoskill.dev/docs/reports/pseo-audit)[

Expand a small seed list into bounded market-specific ideas while preserving the discovery method, metric state, provider coverage, cache status, and request cost.

Keyword research report

](https://seoskill.dev/docs/reports/keyword-research)[

Inspect one bounded search snapshot with exact retained organic ranks, market context, result features, provider coverage, cache status, and request cost.

Live SERP results report

](https://seoskill.dev/docs/reports/serp-results)[

Turn a large returned Search Console query set into reproducible groups that are easier to review for shared demand.

Search query clustering report

](https://seoskill.dev/docs/reports/query-clusters)

## 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)
-   [Google sitemap guidance](https://developers.google.com/search/docs/crawling-indexing/sitemaps/overview)
-   [DataForSEO keyword ideas API reference](https://docs.dataforseo.com/v3/dataforseo_labs-google-keyword_ideas-live/)
-   [DataForSEO live Google SERP API reference](https://docs.dataforseo.com/v3/serp-google-organic-live-advanced/)
