Index of every page on this site: llms.txt
All skills
onmax avatar

/nuxt-seo

@2e74504 official
by Maxonmax/nuxt-skills722 stars
38
Run it yourself

Nuxt SEO meta-module with robots, sitemap, og-image, schema-org. Use when configuring SEO, generating sitemaps, creating OG images, or adding structured data.

Use this Skill: https://skilld.dev/gh/onmax/nuxt-skills/nuxt-seo

Nothing lands on disk. Nothing to clean up.

Fork this Skill

Edit a local copy. It keeps the author and licence.

referencesschema-org.md

≈1k tokens on demand. Your agent reads this file only when SKILL.md points to it.

Schema.org Structured Data

JSON-LD structured data for rich search results.

Site Identity

Configure once in nuxt.config.ts:

import { defineOrganization } from 'nuxt-schema-org/schema'

export default defineNuxtConfig({
  schemaOrg: {
    identity: defineOrganization({
      name: 'My Company',
      url: 'https://example.com',
      logo: '/logo.png',
      sameAs: ['https://twitter.com/mycompany', 'https://github.com/mycompany']
    })
  }
})

For personal sites:

import { definePerson } from 'nuxt-schema-org/schema'

export default defineNuxtConfig({
  schemaOrg: {
    identity: definePerson({
      name: 'John Doe',
      url: 'https://johndoe.com',
      image: '/avatar.jpg',
      sameAs: ['https://twitter.com/johndoe']
    })
  }
})

Page-Level Schema

Define functions are auto-imported in components (no import needed):

// Article page
useSchemaOrg([
  defineArticle({
    headline: 'My Article Title',
    description: 'Article description',
    image: '/article-image.jpg',
    datePublished: '2025-01-15',
    dateModified: '2025-01-20',
    author: { name: 'John Doe', url: 'https://johndoe.com' }
  })
])
// Product page (include url in offers for Google validation)
useSchemaOrg([
  defineProduct({
    name: 'Product Name',
    description: 'Product description',
    image: '/product.jpg',
    offers: {
      price: 99.99,
      priceCurrency: 'USD',
      availability: 'InStock',
      url: 'https://example.com/product'
    }
  })
])

Define Functions

Function Use Case
defineArticle() Blog posts, news
defineProduct() E-commerce products
defineFAQPage() FAQ pages
defineHowTo() Tutorial/guide pages
defineRecipe() Recipe pages
defineEvent() Events
defineLocalBusiness() Business info
defineVideo() Video content
defineBreadcrumb() Breadcrumb navigation
defineWebPage() Generic page
defineWebSite() Site-wide (auto-added)
defineJobPosting() Job listings
defineSoftwareApp() Software/apps
defineService() Services

Data Inference

Module auto-infers from page head:

  • title → WebPage name
  • description → WebPage description
  • og:image → WebPage image

Breadcrumbs

Auto-generated from route path, or customize:

useSchemaOrg([
  defineBreadcrumb({
    itemListElement: [
      { name: 'Home', item: '/' },
      { name: 'Blog', item: '/blog' },
      { name: 'My Post', item: '/blog/my-post' }
    ]
  })
])

Or use the useBreadcrumbItems() composable (from seo-utils):

const items = useBreadcrumbItems()
useSchemaOrg([defineBreadcrumb({ itemListElement: items })])

FAQ Page

useSchemaOrg([
  defineFAQPage({
    mainEntity: [
      { name: 'What is your return policy?', acceptedAnswer: 'You can return within 30 days.' },
      { name: 'How do I contact support?', acceptedAnswer: 'Email us at support@example.com' }
    ]
  })
])

Nuxt Content

Frontmatter:

---
title: My Article
schemaOrg:
  - type: BlogPosting
    headline: My Article
    datePublished: 2025-01-15
    author:
      type: Person
      name: John Doe
---

With asSeoCollection() (see main SKILL.md), ensure schema renders:

<script setup>
const { data: page } = await useAsyncData(() => queryCollection('posts').path(route.path).first())
useHead(page.value?.head || {})
</script>

Debug & Validation

Route Rules

export default defineNuxtConfig({
  routeRules: {
    '/blog/**': {
      schemaOrg: { type: 'Article' }
    }
  }
})

Source: SKILL.md on GitHub

skilld matched fixed text patterns in SKILL.md and file names. Patterns miss obfuscated code.

skilld run checks every file with the same patterns. It asks for approval before it loads a Skill with a behavior marked Needs approval.

No alerts1mo5 checks · Risk SAFE
  • Gen Agent Trust Hub1mo

    This skill provides documentation and configuration examples for the Nuxt SEO module suite. It covers site configuration, robots.txt, sitemaps, Open Graph images, schema.org structured data, and SEO utilities. No malicious patterns or security risks were identified.

  • Socket1mo

    No alerts

  • Snyk1mo

    Risk: LOW · No issues

  • Runlayer8mo

    6 files scanned · No issues

  • ZeroLeaks6mo

    Score: 93/100 · 2 sections analyzed

Signed by skilld at 2e74504. This ties the file your Agent reads to that commit on GitHub. It does not review the instructions.

Last checked against GitHub last week.

Activeupdated 9 months ago
  • Nuxt
  • SEO
  • sitemap
  • og-image
  • schema-org
  • robots-txt
  • structured-data
  • json-ld
  • metadata

README badge

README badge for onmax/nuxt-skills/nuxt-seo

Generates and manages SEO metadata for Nuxt apps: robots.txt, sitemap.xml, dynamic OG images, JSON-LD structured data, and canonical URLs. Use this skill when configuring site SEO foundation, building crawlable sitemaps, creating social media preview images, or adding schema.org markup to pages.

Generated from the current SKILL.md.

Does this work with Nuxt Content?
Yes. Use `asSeoCollection()` to automatically generate sitemaps, OG images, and schema-org from Nuxt Content v3 frontmatter. Load @nuxtjs/seo before @nuxt/content in the modules array.
Can I generate dynamic OG images?
Yes. The skill includes nuxt-og-image for dynamic OG image generation. Load references/og-image.md for implementation details.
What structured data formats does this support?
JSON-LD via schema.org through the nuxt-schema-org module. Access it with `useSchemaOrg()` and refer to references/schema-org.md for configuration.
Does this handle robots.txt and sitemaps?
Yes. The skill includes @nuxtjs/robots for robots.txt generation and @nuxtjs/sitemap for sitemap.xml. Use `useRobotsRule()` and `defineSitemapEventHandler()` respectively.
What is the base configuration requirement?
You must configure the `site` object in nuxt.config.ts and access it via `useSiteConfig()`. This is the foundation all SEO modules depend on.

Generated from the current SKILL.md. These answers refresh after source changes.