---
title: "Bulk SEO audit | SEO Skill"
description: "Run the same technical SEO checks across an exact list of URLs for a release, migration or template sample without opening the crawl to the whole site."
canonical: "https://seoskill.dev/docs/reports/audit-urls"
language: "en"
---

# Bulk SEO audit

Audit a list of pages you already know about without opening the crawl to the rest of the site. This works well for launch checks, migration batches and representative template pages.

## Install and run the audit

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

Install the SEO CLI globally.

```
npm i -g seo
```

Run setup after installation.

```
seo start
```

Audit an explicit URL list without crawling the rest of the site.

```
seo crawl --mode list --urls https://example.com/a,https://example.com/b
```

## What you get from this audit

Run the same technical SEO checks across an exact list of URLs for a release, migration or template sample without opening the crawl to the whole site.

Best for

A release, template, migration batch, or priority list needs a limited audit.

Needs

Explicit URL list

You get

Run the same technical SEO checks across an exact list of URLs for a release, migration or template sample without opening the crawl to the whole site.

Use next

Find URLs affected by a crawl issue

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.

### Explicit URL list

Defines the exact pages to fetch and the maximum scope of the audit.

### Optional Search Console and Google Analytics project context

Adds available Search Console page metrics without widening the URL list.

## Use a different report for these jobs

These jobs need a different report or a manual review.

[

### You do not know which URLs are affected and need the crawler to discover pages from links and sitemaps.

Run a site crawl. It discovers an explicitly limited same-origin page set before applying the technical checks. A selected-URL audit never widens the supplied list.

Sitemap health check and technical site crawl

](https://seoskill.dev/docs/reports/site-crawl)[

### You already saved two crawl reports and need to compare new, resolved, and changed findings.

Compare the saved crawls. It checks whether both scopes are comparable and then reports page, issue, score, and summary movement between the two snapshots.

SEO crawl comparison

](https://seoskill.dev/docs/reports/compare-crawls)

## Use the audit 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 audit 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 audit with the validated parameters.

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

```
seo reports describe audit-urls --json
```

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

```
seo reports run audit-urls --params '{"urls":["https://example.com/","https://example.com/pricing"],"includeIssues":true,"saveReport":true}' --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 audit.

Ask the MCP server for the current audit input.

```
{
  "id": "audit-urls"
}
```

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

```
{
  "id": "audit-urls",
  "params": {
    "urls": [
      "https://example.com/",
      "https://example.com/pricing"
    ],
    "includeIssues": true,
    "saveReport": true
  }
}
```

### TypeScript

Install the package in a Node 22 project when your application needs to run the audit 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 audit from your TypeScript application.

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

const result = await executeReport(
  'audit-urls',
  {
  "urls": [
    "https://example.com/",
    "https://example.com/pricing"
  ],
  "includeIssues": true,
  "saveReport": true
},
)

console.log(result)
```

## What to do next

Separate repeated template problems from failures that affect one URL. Fix a representative page first, then run the same limited URL list again before changing the rest of the batch.

1.  01Inspect affected URLs for a repeated rule.
2.  02Save and compare the report after the release is fixed.

## Related reports

[

Find every URL affected by a technical SEO issue, inspect the crawl evidence on each page and turn one broad finding into a practical fix list.

Technical SEO affected URLs

](https://seoskill.dev/docs/reports/affected-urls)[

Compare two saved SEO crawls to find new, fixed and changed technical issues. Check the crawl scope before treating the difference as real or complete.

SEO crawl comparison

](https://seoskill.dev/docs/reports/compare-crawls)[

Audit one URL for technical SEO, metadata, canonicals, schema, links and Search Console queries. See the live evidence before changing the page.

SEO page audit

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

## Sources used by this audit

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

-   [Google JavaScript SEO guidance](https://developers.google.com/search/docs/crawling-indexing/javascript/javascript-seo-basics)
-   [Google canonical URL guidance](https://developers.google.com/search/docs/crawling-indexing/consolidate-duplicate-urls)
-   [Google structured data guidance](https://developers.google.com/search/docs/appearance/structured-data/intro-structured-data)
