Mcp

AI Page Analysis Tools

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.

To extract rendered meta tags from a live URL, use check_meta_tags from the free Nuxt SEO MCP.

analyze_page

Analyze a Vue file for SEO. Detects page type, existing SEO calls, and returns prioritized suggestions. Detects installed modules to avoid suggesting what's already handled.

ParameterTypeDescription
filePathstringPath to Vue file (e.g., pages/about.vue)
fileContentstringContent of the Vue file
nuxtConfigstringnuxt.config.ts content (optional, for module detection)
analyze_page({
  filePath: 'pages/blog/[slug].vue',
  fileContent: '...',
  nuxtConfig: '...'
})

Returns:

{
  "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({...})])"
    },
    {
      "priority": "medium",
      "category": "og-image",
      "issue": "No OG image defined",
      "fix": "Add defineOgImage({ component: '...' }) or <OgImage />"
    }
  ]
}

Page Type Detection

Detection uses both file path and content patterns:

Path PatternDetected Type
/blog/, /posts/, /articles/BlogPosting
/tool, /generator, /converter, /checkerSoftwareApplication
/aboutPerson
/product, /shopProduct
/faqFAQPage
/how-to, /tutorial, /guideHowTo
/recipeRecipe
/eventEvent
/company, /teamOrganization

Content patterns also influence detection—prices suggest Product, dates suggest Article.

SEO Quality Checks

The tool now includes detailed SEO quality analysis:

CheckThresholdSuggestion
Title length> 60 charsWarns to shorten
Title length< 30 charsSuggests longer title
Description length> 160 charsWarns to shorten
Description length< 70 charsSuggests longer description
Multiple H1s> 1Warns to use single H1
Images without altAnyLists count, suggests fix

Suggestion Priorities

Suggestions are sorted by priority (high → medium → low), then by category importance:

PriorityCategoryTypical Issues
highmetaMissing title, description, or useSeoMeta()
mediumschemaNo structured data
mediumog-imageNo OG image
mediummetaTitle/description length issues
mediumhtmlMissing H1, multiple H1s, no canonical URL
mediumaccessibilityImages missing alt attributes
lowhtml, performanceNo semantic elements, using <img> instead of <NuxtImg>

Within the same priority level, schema suggestions appear before meta optimization suggestions.

analyze_content_page

Analyze a Nuxt Content markdown file for SEO. Parses frontmatter, analyzes content structure, and returns prioritized suggestions.

Use this for .md files in the content/ directory. For Vue SFCs (.vue files), use analyze_page instead.
ParameterTypeDescription
filePathstringPath to markdown file (e.g., content/blog/my-post.md)
fileContentstringContent of the markdown file
analyze_content_page({
  filePath: 'content/blog/nuxt-seo-guide.md',
  fileContent: '---\ntitle: SEO Guide\n---\n\n# Content here...'
})

Returns:

{
  "filePath": "content/blog/nuxt-seo-guide.md",
  "pageType": "BlogPosting",
  "frontmatter": {
    "fields": ["title", "description", "date"],
    "hasTitle": true,
    "hasDescription": true,
    "hasImage": false,
    "hasDate": true,
    "hasAuthor": false
  },
  "content": {
    "wordCount": 1250,
    "h1Count": 1,
    "h2Count": 4,
    "imageCount": 2,
    "internalLinkCount": 3,
    "externalLinkCount": 1,
    "estimatedReadTime": 7
  },
  "suggestions": [
    {
      "priority": "medium",
      "category": "og-image",
      "issue": "No cover/OG image specified",
      "fix": "Add image: \"/path/to/image.jpg\" to frontmatter"
    },
    {
      "priority": "medium",
      "category": "meta",
      "issue": "Missing author information",
      "fix": "Add author: \"Author Name\" to frontmatter"
    }
  ]
}

Page Type Detection

Detection uses file path and frontmatter:

Path PatternDetected Type
/blog/, /posts/, /articles/BlogPosting
/learn/, /guides/, /tutorials/Article
/docs/, /documentation/TechArticle
/recipes/HowTo
/faqFAQPage
/snippets/, /examples/Article

Content Analysis

The tool analyzes markdown structure:

MetricWhat It Checks
wordCountTotal words (excluding code blocks)
h1CountNumber of # headings (should be 0-1)
h2CountNumber of ## section headings
imageCountMarkdown images ![](...)
internalLinkCountLinks to same site
externalLinkCountLinks to other sites
estimatedReadTimeMinutes at 200 wpm

generate_schema_org

Generate ready-to-use useSchemaOrg() code. Pass metadata from analyze_page or provide manually.

ParameterTypeDescription
pageTypestringArticle, BlogPosting, Product, Person, Organization, WebPage, FAQPage, HowTo, Recipe, Event, LocalBusiness, SoftwareApplication
extractedMetaobjectMetadata for the schema (see below)
options.includeWebPagebooleanInclude defineWebPage() wrapper (default: true)
options.includeBreadcrumbsbooleanInclude breadcrumb schema (default: false)

extractedMeta Properties

PropertyTypesDescription
titlestringPage title / headline
descriptionstringPage description
authorstringAuthor name
publishedAtstringISO date published
modifiedAtstringISO date modified
imagestringPrimary image URL
pricestringProduct price
currencystringCurrency code (USD, EUR)
namestringEntity name
jobTitlestringPerson's job title
emailstringContact email
telephonestringContact phone
addressstringPhysical address
socialUrlsstring[]Social profile URLs
faqsarrayFAQ questions/answers
stepsarrayHowTo steps
ratingnumberAggregate rating value
reviewCountnumberNumber of reviews
applicationCategorystringApp category (default: DeveloperApplication)
operatingSystemstringOS requirement (default: Web)
generate_schema_org({
  pageType: 'BlogPosting',
  extractedMeta: {
    title: 'How to Add Meta Tags in Nuxt',
    description: 'Guide to using useSeoMeta...',
    author: 'Harlan Wilton',
    publishedAt: '2024-01-15',
    image: '/blog/meta-tags.png'
  },
  options: { includeBreadcrumbs: true }
})

Returns:

{
  "pageType": "BlogPosting",
  "code": "useSchemaOrg([\n  defineWebPage({...}),\n  defineBlogPosting({...}),\n  defineBreadcrumb({...})\n])",
  "requires": "@nuxtjs/schema-org",
  "imports": "import { useSchemaOrg, defineWebPage, defineBlogPosting, defineBreadcrumb } from '@unhead/schema-org/vue'"
}

generate_og_image_template

Generate a Vue component for OG images. Creates ready-to-use templates in components/OgImage/.

ParameterTypeDefaultDescription
pageTypestringrequiredblog, product, landing, docs, tool
propsstring[][]Additional props the template should accept
stylestringminimalminimal, gradient, image-bg
generate_og_image_template({
  pageType: 'blog',
  style: 'gradient',
  props: ['category']
})

Returns:

{
  "filename": "OgImageBlog.vue",
  "path": "components/OgImage/OgImageBlog.vue",
  "code": "<script setup lang=\"ts\">...</script>\n<template>...</template>",
  "usage": "defineOgImage({ component: 'OgImageBlog', title: '...' })",
  "requires": "nuxt-og-image"
}

Default Props by Page Type

Page TypeDefault Props
blogtitle, description, author, date, readTime
producttitle, description, price, category
landingtitle, description, siteName
docstitle, description, category
tooltitle, description, category
Did this page help you?