---
title: "AI Page Analysis Tools"
description: "MCP tools for AI-powered SEO analysis. Scan Vue and markdown files for issues, generate schema.org code, create OG image templates—through any MCP client."
canonical_url: "https://nuxtseo.com/pro/docs/reference/mcp/page-analysis"
last_updated: "2026-05-06T21:33:42.120Z"
---

AI-powered tools for page-level SEO. Your AI analyzes Vue and Nuxt Content files, identifies issues, and generates ready-to-paste code. Requires a Pro API key.

<callout type="info">

To extract rendered meta tags from a live URL, use `check_meta_tags` from the [free Nuxt SEO MCP](/docs/nuxt-seo/guides/mcp).

</callout>

## analyze_page

Analyze a Vue SFC or Nuxt Content markdown file for SEO. Auto-detects file type from the path extension (`.vue` or `.md`). Detects page type, existing SEO calls, installed modules, and returns prioritized suggestions.

<table>
<thead>
  <tr>
    <th>
      Parameter
    </th>
    
    <th>
      Type
    </th>
    
    <th>
      Description
    </th>
  </tr>
</thead>

<tbody>
  <tr>
    <td>
      <code>
        filePath
      </code>
    </td>
    
    <td>
      <code>
        string
      </code>
    </td>
    
    <td>
      Path to <code>
        .vue
      </code>
      
       or <code>
        .md
      </code>
      
       file
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        fileContent
      </code>
    </td>
    
    <td>
      <code>
        string
      </code>
    </td>
    
    <td>
      Content of the file
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        nuxtConfig
      </code>
    </td>
    
    <td>
      <code>
        string
      </code>
    </td>
    
    <td>
      nuxt.config.ts content (optional, for module detection)
    </td>
  </tr>
</tbody>
</table>

```ts
// Vue SFC
analyze_page({
  filePath: 'pages/blog/[slug].vue',
  fileContent: '...',
  nuxtConfig: '...'
})

// Nuxt Content markdown
analyze_page({
  filePath: 'content/blog/nuxt-seo-guide.md',
  fileContent: '---\ntitle: SEO Guide\n---\n\n# Content here...'
})
```

### Vue SFC Response

```json
{
  "filePath": "pages/blog/[slug].vue",
  "pageType": "BlogPosting",
  "installedModules": ["@nuxtjs/seo"],
  "hasSeoMeta": true,
  "hasSchemaOrg": false,
  "hasOgImage": false,
  "hasH1": true,
  "suggestions": [
    {
      "priority": "medium",
      "category": "schema",
      "issue": "No structured data found",
      "fix": "Add useSchemaOrg([defineBlogPosting({...})])"
    }
  ],
  "score": {
    "grade": "B",
    "breakdown": { "meta": "A", "schema": "F", "links": "A", "html": "A" },
    "summary": "Good foundation. A few improvements recommended."
  }
}
```

### Markdown Response

```json
{
  "filePath": "content/blog/nuxt-seo-guide.md",
  "pageType": "BlogPosting",
  "frontmatter": {
    "fields": ["title", "description", "date"],
    "hasTitle": true,
    "hasDescription": true,
    "hasImage": false
  },
  "content": {
    "wordCount": 1250,
    "h1Count": 1,
    "h2Count": 4,
    "imageCount": 2,
    "internalLinkCount": 3,
    "estimatedReadTime": 7
  },
  "suggestions": [
    {
      "priority": "medium",
      "category": "og-image",
      "issue": "No cover/OG image specified",
      "fix": "Add image: \"/path/to/image.jpg\" to frontmatter"
    }
  ],
  "score": {
    "grade": "B",
    "breakdown": { "meta": "A", "schema": "F", "links": "A", "html": "A" },
    "summary": "Good foundation. A few improvements recommended."
  }
}
```

### Page Type Detection

Detection uses file path and content patterns:

<table>
<thead>
  <tr>
    <th>
      Path Pattern
    </th>
    
    <th>
      Detected Type
    </th>
  </tr>
</thead>

<tbody>
  <tr>
    <td>
      <code>
        /blog/
      </code>
      
      , <code>
        /posts/
      </code>
      
      , <code>
        /articles/
      </code>
    </td>
    
    <td>
      <code>
        BlogPosting
      </code>
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        /tool
      </code>
      
      , <code>
        /generator
      </code>
      
      , <code>
        /converter
      </code>
    </td>
    
    <td>
      <code>
        SoftwareApplication
      </code>
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        /about
      </code>
    </td>
    
    <td>
      <code>
        Person
      </code>
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        /product
      </code>
      
      , <code>
        /shop
      </code>
    </td>
    
    <td>
      <code>
        Product
      </code>
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        /faq
      </code>
    </td>
    
    <td>
      <code>
        FAQPage
      </code>
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        /how-to
      </code>
      
      , <code>
        /tutorial
      </code>
      
      , <code>
        /guide
      </code>
    </td>
    
    <td>
      <code>
        HowTo
      </code>
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        /docs/
      </code>
      
      , <code>
        /documentation/
      </code>
    </td>
    
    <td>
      <code>
        TechArticle
      </code>
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        /learn/
      </code>
      
      , <code>
        /guides/
      </code>
    </td>
    
    <td>
      <code>
        Article
      </code>
    </td>
  </tr>
</tbody>
</table>

### Suggestion Priorities

<table>
<thead>
  <tr>
    <th>
      Priority
    </th>
    
    <th>
      Category
    </th>
    
    <th>
      Typical Issues
    </th>
  </tr>
</thead>

<tbody>
  <tr>
    <td>
      <code>
        high
      </code>
    </td>
    
    <td>
      meta
    </td>
    
    <td>
      Missing title, description, or <code className="language-ts shiki shiki-themes github-light github-light material-theme-palenight" language="ts" style="">
        <span class="s0YkB">
          useSeoMeta
        </span>
        
        <span class="sqjlB">
          ()
        </span>
      </code>
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        medium
      </code>
    </td>
    
    <td>
      schema
    </td>
    
    <td>
      No structured data
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        medium
      </code>
    </td>
    
    <td>
      og-image
    </td>
    
    <td>
      No OG image
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        medium
      </code>
    </td>
    
    <td>
      meta
    </td>
    
    <td>
      Title/description length issues
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        medium
      </code>
    </td>
    
    <td>
      HTML
    </td>
    
    <td>
      Missing H1, no canonical URL
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        medium
      </code>
    </td>
    
    <td>
      accessibility
    </td>
    
    <td>
      Images missing alt attributes
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        low
      </code>
    </td>
    
    <td>
      HTML, performance
    </td>
    
    <td>
      No semantic elements
    </td>
  </tr>
</tbody>
</table>

## generate_seo

Generate ready-to-use schema.org or OG image template code. Use `type` to select which to generate.

<table>
<thead>
  <tr>
    <th>
      Parameter
    </th>
    
    <th>
      Type
    </th>
    
    <th>
      Description
    </th>
  </tr>
</thead>

<tbody>
  <tr>
    <td>
      <code>
        type
      </code>
    </td>
    
    <td>
      <code>
        string
      </code>
    </td>
    
    <td>
      <code>
        schema-org
      </code>
      
       or <code>
        og-image
      </code>
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        outputFormat
      </code>
    </td>
    
    <td>
      <code>
        string
      </code>
    </td>
    
    <td>
      <code>
        composable
      </code>
      
       (Vue) or <code>
        frontmatter
      </code>
      
       (markdown). Default: <code>
        composable
      </code>
    </td>
  </tr>
</tbody>
</table>

### type: schema-org

Generate `useSchemaOrg()` code.

<table>
<thead>
  <tr>
    <th>
      Extra Parameter
    </th>
    
    <th>
      Type
    </th>
    
    <th>
      Description
    </th>
  </tr>
</thead>

<tbody>
  <tr>
    <td>
      <code>
        schemaType
      </code>
    </td>
    
    <td>
      <code>
        string
      </code>
    </td>
    
    <td>
      <code>
        Article
      </code>
      
      , <code>
        BlogPosting
      </code>
      
      , <code>
        Product
      </code>
      
      , <code>
        Person
      </code>
      
      , <code>
        Organization
      </code>
      
      , <code>
        WebPage
      </code>
      
      , <code>
        FAQPage
      </code>
      
      , <code>
        HowTo
      </code>
      
      , <code>
        Recipe
      </code>
      
      , <code>
        Event
      </code>
      
      , <code>
        LocalBusiness
      </code>
      
      , <code>
        SoftwareApplication
      </code>
    </td>
  </tr>
</tbody>
</table>

```ts
generate_seo({
  type: 'schema-org',
  schemaType: 'BlogPosting',
  outputFormat: 'composable'
})
```

Returns ready-to-paste `useSchemaOrg()` code with the appropriate schema definitions.

### type: og-image

Generate OG image component or frontmatter.

<table>
<thead>
  <tr>
    <th>
      Extra Parameter
    </th>
    
    <th>
      Type
    </th>
    
    <th>
      Description
    </th>
  </tr>
</thead>

<tbody>
  <tr>
    <td>
      <code>
        pageType
      </code>
    </td>
    
    <td>
      <code>
        string
      </code>
    </td>
    
    <td>
      <code>
        blog
      </code>
      
      , <code>
        product
      </code>
      
      , <code>
        landing
      </code>
      
      , <code>
        docs
      </code>
      
      , <code>
        tool
      </code>
      
      , <code>
        portfolio
      </code>
      
      , <code>
        agency
      </code>
      
      , <code>
        recipe
      </code>
      
      , <code>
        event
      </code>
      
      , <code>
        ecommerce
      </code>
    </td>
  </tr>
</tbody>
</table>

```ts
generate_seo({
  type: 'og-image',
  pageType: 'blog',
  outputFormat: 'composable'
})
```

Returns a Vue component for `components/OgImage/` with usage instructions.

### Default Props by Page Type

<table>
<thead>
  <tr>
    <th>
      Page Type
    </th>
    
    <th>
      Default Props
    </th>
  </tr>
</thead>

<tbody>
  <tr>
    <td>
      <code>
        blog
      </code>
    </td>
    
    <td>
      <code>
        title
      </code>
      
      , <code>
        description
      </code>
      
      , <code>
        author
      </code>
      
      , <code>
        date
      </code>
      
      , <code>
        readTime
      </code>
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        product
      </code>
    </td>
    
    <td>
      <code>
        title
      </code>
      
      , <code>
        description
      </code>
      
      , <code>
        price
      </code>
      
      , <code>
        category
      </code>
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        landing
      </code>
    </td>
    
    <td>
      <code>
        title
      </code>
      
      , <code>
        description
      </code>
      
      , <code>
        siteName
      </code>
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        docs
      </code>
    </td>
    
    <td>
      <code>
        title
      </code>
      
      , <code>
        description
      </code>
      
      , <code>
        category
      </code>
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        tool
      </code>
    </td>
    
    <td>
      <code>
        title
      </code>
      
      , <code>
        description
      </code>
      
      , <code>
        category
      </code>
    </td>
  </tr>
</tbody>
</table>
