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.
check_meta_tags from the free Nuxt SEO MCP.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.
| Parameter | Type | Description |
|---|---|---|
filePath | string | Path to Vue file (e.g., pages/about.vue) |
fileContent | string | Content of the Vue file |
nuxtConfig | string | nuxt.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 />"
}
]
}
Detection uses both file path and content patterns:
| Path Pattern | Detected Type |
|---|---|
/blog/, /posts/, /articles/ | BlogPosting |
/tool, /generator, /converter, /checker | SoftwareApplication |
/about | Person |
/product, /shop | Product |
/faq | FAQPage |
/how-to, /tutorial, /guide | HowTo |
/recipe | Recipe |
/event | Event |
/company, /team | Organization |
Content patterns also influence detection—prices suggest Product, dates suggest Article.
The tool now includes detailed SEO quality analysis:
| Check | Threshold | Suggestion |
|---|---|---|
| Title length | > 60 chars | Warns to shorten |
| Title length | < 30 chars | Suggests longer title |
| Description length | > 160 chars | Warns to shorten |
| Description length | < 70 chars | Suggests longer description |
| Multiple H1s | > 1 | Warns to use single H1 |
| Images without alt | Any | Lists count, suggests fix |
Suggestions are sorted by priority (high → medium → low), then by category importance:
| Priority | Category | Typical Issues |
|---|---|---|
high | meta | Missing title, description, or useSeoMeta() |
medium | schema | No structured data |
medium | og-image | No OG image |
medium | meta | Title/description length issues |
medium | html | Missing H1, multiple H1s, no canonical URL |
medium | accessibility | Images missing alt attributes |
low | html, performance | No semantic elements, using <img> instead of <NuxtImg> |
Within the same priority level, schema suggestions appear before meta optimization suggestions.
Analyze a Nuxt Content markdown file for SEO. Parses frontmatter, analyzes content structure, and returns prioritized suggestions.
.md files in the content/ directory. For Vue SFCs (.vue files), use analyze_page instead.| Parameter | Type | Description |
|---|---|---|
filePath | string | Path to markdown file (e.g., content/blog/my-post.md) |
fileContent | string | Content 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"
}
]
}
Detection uses file path and frontmatter:
| Path Pattern | Detected Type |
|---|---|
/blog/, /posts/, /articles/ | BlogPosting |
/learn/, /guides/, /tutorials/ | Article |
/docs/, /documentation/ | TechArticle |
/recipes/ | HowTo |
/faq | FAQPage |
/snippets/, /examples/ | Article |
The tool analyzes markdown structure:
| Metric | What It Checks |
|---|---|
wordCount | Total words (excluding code blocks) |
h1Count | Number of # headings (should be 0-1) |
h2Count | Number of ## section headings |
imageCount | Markdown images  |
internalLinkCount | Links to same site |
externalLinkCount | Links to other sites |
estimatedReadTime | Minutes at 200 wpm |
Generate ready-to-use useSchemaOrg() code. Pass metadata from analyze_page or provide manually.
| Parameter | Type | Description |
|---|---|---|
pageType | string | Article, BlogPosting, Product, Person, Organization, WebPage, FAQPage, HowTo, Recipe, Event, LocalBusiness, SoftwareApplication |
extractedMeta | object | Metadata for the schema (see below) |
options.includeWebPage | boolean | Include defineWebPage() wrapper (default: true) |
options.includeBreadcrumbs | boolean | Include breadcrumb schema (default: false) |
| Property | Types | Description |
|---|---|---|
title | string | Page title / headline |
description | string | Page description |
author | string | Author name |
publishedAt | string | ISO date published |
modifiedAt | string | ISO date modified |
image | string | Primary image URL |
price | string | Product price |
currency | string | Currency code (USD, EUR) |
name | string | Entity name |
jobTitle | string | Person's job title |
email | string | Contact email |
telephone | string | Contact phone |
address | string | Physical address |
socialUrls | string[] | Social profile URLs |
faqs | array | FAQ questions/answers |
steps | array | HowTo steps |
rating | number | Aggregate rating value |
reviewCount | number | Number of reviews |
applicationCategory | string | App category (default: DeveloperApplication) |
operatingSystem | string | OS 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 a Vue component for OG images. Creates ready-to-use templates in components/OgImage/.
| Parameter | Type | Default | Description |
|---|---|---|---|
pageType | string | required | blog, product, landing, docs, tool |
props | string[] | [] | Additional props the template should accept |
style | string | minimal | minimal, 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"
}
| Page Type | Default Props |
|---|---|
blog | title, description, author, date, readTime |
product | title, description, price, category |
landing | title, description, siteName |
docs | title, description, category |
tool | title, description, category |
Installation
Add the Nuxt SEO Pro MCP server to Claude Desktop, Claude Code, or Cursor. One config file change and your AI assistant gains SEO tools.
Keyword Research
MCP tools for keyword research and SERP analysis. Find long-tail keywords, analyze competition, and discover content gaps—through your AI assistant.