# Nuxt SEO > Nuxt SEO is a collection of hand-crafted Nuxt Modules to help you rank higher in search engines. Canonical Origin: https://nuxtseo.com ## LLM Resources - [Full Content](https://nuxtseo.com/llms-full.txt) Complete page content in markdown format. ## Pages ### Schema.org Validator · Test Structured Data & Rich Results · Nuxt SEO Source: https://nuxtseo.com/tools/schema-validator Description: Free Schema.org validator for JSON-LD and Microdata. Test structured data markup, check Google rich results eligibility, and fix validation errors. No signup. Nuxt SEO on GitHub h1. **Schema.org Validator** Free structured data validator for JSON-LD and Microdata. Test Schema.org markup, check rich results eligibility, and fix validation errors. Try: h2. Schema.org Test Tool: What This Validator Checks This structured data testing tool validates Schema.org markup on any URL. Schema.org provides a shared vocabulary that search engines understand. When you add structured data to your pages, you're explicitly telling search engines what your content means, not just what it says. - **Rich snippets:** Enhanced search results with ratings, prices, availability - **Better understanding:** Help search engines comprehend your content's context - **Higher CTR:** Rich results can increase click-through rates by 30%+ h2. Popular Schema Types h3. **Content Types ** - **Article:** News, blog posts - **FAQPage:** FAQ sections - **HowTo:** Step-by-step guides - **Recipe:** Cooking instructions h3. **Business Types ** - **Product:** Physical or digital - **Organization:** Companies, NGOs - **LocalBusiness:** Stores, restaurants - **SoftwareApplication:** Apps, tools h2. What Happened to Google's Structured Data Testing Tool? For years, the **Google Structured Data Testing Tool (SDTT)** was the industry standard. In 2020, Google announced its retirement in favor of the Rich Results Test. However, the SEO community pushed back because the new tool only validates the subset of Schema.org types that trigger Google search features. Google eventually migrated the legacy tool to Schema.org, where it now lives as the **Schema Markup Validator**. While the official Google tool is best for checking search feature eligibility, the Schema.org validator remains essential for verifying the technical syntax of all 800+ schema types. h2. Comparing Google Schema Validators Most developers use a combination of tools to ensure their structured data is both technically correct and optimized for search visibility. | **Feature ** | **Google Rich Results Test ** | **Schema.org Validator ** | **This Tool ** | | --- | --- | --- | --- | | **All Schema Types ** | No (Google subset only) | Yes (Full vocabulary) | Yes (Full vocabulary) | | **Rich Result Preview ** | Yes | No | Proprietary Score | | **Missing Prop Alerts ** | Required only | Syntax only | Required & Recommended | | **Best For ** | Snippet eligibility | Technical debugging | Comprehensive SEO | h2. JSON-LD Implementation JSON-LD is Google's recommended format for structured data. Add it to your page's or : ``` { "@context": "https://schema.org", "@type": "Article", "headline": "Your Article Title", "author": { "@type": "Person", "name": "Author Name" }, "datePublished": "2024-01-15", "image": "https://example.com/image.jpg" } ``` h2. Schema.org vs JSON Schema These are commonly confused but serve entirely different purposes: h3. **Schema.org ** - Describes **meaning** of web content - Used by **search engines** for rich results - Formats: JSON-LD, Microdata, RDFa - Types: Article, Product, FAQPage, etc. h3. **JSON Schema ** - Validates **data structure** of JSON documents - Used by **developers** for API validation - Defines types, required fields, patterns - No SEO impact **Looking for SEO?** You want Schema.org validation (this tool). If you need to validate a JSON document against a JSON Schema definition, use a JSON Schema validator like [~~jsonschemavalidator.net~~](https://www.jsonschemavalidator.net). h2. Google Rich Results Requirements by Type Each schema type has specific required and recommended properties for Google rich results eligibility: **Article** **Required:** headline, author, datePublished **Recommended:** image, dateModified, publisher Enhanced article listing with date and author **Product** **Required:** name, offers (price, priceCurrency) **Recommended:** image, description, aggregateRating, brand Price, availability, reviews in SERP **FAQPage** **Required:** mainEntity (Question + Answer pairs) **Recommended:** name Expandable FAQ directly in search results **HowTo** **Required:** name, step (name + text) **Recommended:** image, totalTime, estimatedCost Step-by-step instructions in SERP **LocalBusiness** **Required:** name, address **Recommended:** telephone, openingHours, geo, image Business details in local search and Maps **Event** **Required:** name, startDate, location **Recommended:** image, description, endDate, offers Event cards in search results h2. Common Validation Errors Missing @type Every schema must specify its type (Article, Product, etc). `Fix: Add "@type": "Article" to your JSON-LD object` Invalid dates Dates must be in ISO 8601 format (YYYY-MM-DD or full datetime). `Fix: Use "2024-01-15" or "2024-01-15T09:00:00Z"` Missing required Each type has required properties that must be included for rich results. `Fix: Check the requirements table above for your schema type` Invalid URLs URLs in image, url, and sameAs properties must be absolute. `Fix: Use "https://example.com/image.jpg" not "/image.jpg"` h2. Structured Data with Nuxt Use the Nuxt Schema.org module for type-safe structured data: ``` ``` [~~Learn more about Nuxt Schema.org → ~~](https://nuxtseo.com/docs/schema-org/getting-started/introduction) h2. Frequently Asked Questions
**01**### **What is a schema markup validator?** A schema markup validator (also called a structured data testing tool) checks your website's Schema.org markup — JSON-LD, Microdata, or RDFa — for errors and compliance. It verifies required properties, validates data types, and checks whether your markup qualifies for Google rich results like stars, prices, and FAQs.
**02**### **How do I test my schema markup?** Enter your page URL above and click Validate. This schema testing tool will fetch your page, extract all structured data, and validate it against Schema.org requirements. You'll see any errors, warnings, and which properties are missing for rich results eligibility.
**03**### **What's the difference between this and Google's Rich Results Test?** Google's Rich Results Test only validates schemas that Google supports for rich results. This schema validator checks all Schema.org types and provides detailed property-level validation, making it useful for comprehensive structured data testing beyond just Google eligibility. See the comparison table below for a full breakdown.
**04**### **What is the difference between Schema.org and JSON Schema?** Schema.org is a vocabulary for describing web content (products, articles, events) that search engines use for rich results. JSON Schema is a specification for validating JSON data structure. They serve entirely different purposes — Schema.org describes meaning, JSON Schema validates format.
**05**### **What is structured data and why does it matter?** Structured data is code that helps search engines understand your content. Using Schema.org markup can enable rich snippets in search results (stars, prices, FAQs, etc.), potentially increasing click-through rates by 30% or more.
**06**### **Which schema types support rich results?** Google supports rich results for Article, Product, FAQPage, HowTo, Recipe, Event, LocalBusiness, Organization, Person, Review, BreadcrumbList, VideoObject, SoftwareApplication, and more. Each type has required and recommended properties for eligibility.
Validated one page. Nuxt SEO Pro tracks structured-data health and rich-result eligibility across your whole site. [**See it in Pro **](https://nuxtseo.com/pro) Part of [**Nuxt SEO **](https://nuxtseo.com/) — the all-in-one technical SEO toolkit for Nuxt. Sitemaps, robots.txt, meta tags, Schema.org, and OG images in one install. [**2026 SEO Checklist for Nuxt & Vue ** Schema valid? Check the full SEO checklist to make sure nothing else is missed.](https://nuxtseo.com/learn-seo/checklist) h3. **References** [**Schema.org Documentation** Official getting started guide for implementing structured data.](https://schema.org/docs/gs.html) [**Google Structured Data** Google's guide to structured data for rich results.](https://developers.google.com/search/docs/appearance/structured-data) [**Rich Results Test** Google's tool for testing structured data and preview rich results.](https://search.google.com/test/rich-results) [**Schema.org Types** Complete reference of all available Schema.org types and properties.](https://schema.org/docs/full.html) h3. **Related** [Schema.org Module](https://nuxtseo.com/docs/schema-org/getting-started/introduction) [Structured Data Guide](https://nuxtseo.com/learn-seo/nuxt/mastering-meta/schema-org) [Meta Tag Checker](https://nuxtseo.com/tools/meta-tag-checker) [Nuxt SEO Docs](https://nuxtseo.com/docs/nuxt-seo/getting-started/introduction) [Schema Types Guide](https://nuxtseo.com/docs/schema-org/guides/nodes) --- ### Free Meta Tag Checker · Check Title Length, Description & OG Tags · Nuxt SEO Source: https://nuxtseo.com/tools/meta-tag-checker Description: Free meta tag checker with title length counter, description character limit validator, and social media preview. Check Open Graph, Twitter Cards & Google SERP display. Nuxt SEO on GitHub h1. **Free Meta Tag Checker** Check title length, meta description & Open Graph tags from any URL. Preview how your page appears in Google search results and social media. h2. Title & Meta Description Length Checker h3. **Check Title Tag Length ** - Keep under **60 characters** to avoid truncation - 51-60 chars have **lowest rewrite rates** (39-42%) - Front-load keywords - users may only see first 50 [~~Learn title best practices ~~](https://nuxtseo.com/learn-seo/vue/mastering-meta/titles) h3. **Check Meta Description Length ** - Desktop: **~155-160 chars**, mobile: ~120 - Google rewrites **62-70%** of descriptions - Front-load value for mobile truncation [~~Learn description best practices ~~](https://nuxtseo.com/learn-seo/vue/mastering-meta/descriptions) h2. Why Pixel Width Matters Characters have different widths. "iiiiii" is narrower than "WWWWWW". This tool estimates actual pixel width, not just character count, giving you a more accurate picture of how your titles will display. h2. Are Your Meta Tags Server-Rendered? Search engines need meta tags in the initial HTML response. Client-side rendered meta tags (added by JavaScript after page load) may not be indexed. **Good news:** This tool fetches your page exactly like a search engine would - no JavaScript execution. If your meta tags appear above, they're server-rendered correctly. h3. **Manual Check ** 1. **1**View Page Source (Ctrl+U / Cmd+U) 2. **2**Search for your tag 3. **3**If it's missing or shows a placeholder, you have an SSR problem h2. Solutions by Framework Nuxt Use `useSeoMeta()` or `useHead()` - SSR by default. [~~Nuxt SEO Docs~~](https://nuxtseo.com/docs/nuxt-seo/getting-started/introduction) Vue Use [~~Unhead~~](https://unhead.unjs.io) with SSR or prerendering. [~~Vue SEO Guide~~](https://nuxtseo.com/learn-seo/vue/mastering-meta) Next.js Use `generateMetadata` (App Router) or `<Head>` (Pages Router). [~~Next.js Docs~~](https://nextjs.org/docs/app/building-your-application/optimizing/metadata) React Use [~~react-helmet~~](https://github.com/nfl/react-helmet) or [~~Unhead~~](https://unhead.unjs.io). Requires SSR framework (Next.js, Remix) for SEO. Astro Set tags in `<head>` directly or use [~~@astrojs/sitemap~~](https://docs.astro.build/en/guides/integrations-guide/sitemap/). SSR by default. SvelteKit Use `<svelte:head>` in pages. [~~Svelte Docs~~](https://svelte.dev/docs/svelte/svelte-head) Remix Export `meta` function from routes. [~~Remix Docs~~](https://remix.run/docs/en/main/route/meta) SolidStart Use `<Title>` and `<Meta>` from [~~@solidjs/meta~~](https://docs.solidjs.com/solid-meta). h2. Frequently Asked Questions <details> <summary>**01**### **What is a meta tag checker?** </summary> A meta tag checker is a tool that analyzes your page's HTML meta tags including title, description, Open Graph, and Twitter cards. It validates tag length, checks for missing tags, and previews how your page appears in search results and social shares. </details> <details> <summary>**02**### **What is the ideal title tag length?** </summary> Keep title tags under 60 characters to avoid truncation in search results. Titles between 51-60 characters have the lowest rewrite rates (39-42%). Google measures by pixel width (~580px), so character count is an approximation. </details> <details> <summary>**03**### **How long should a meta description be?** </summary> Meta descriptions should be 155-160 characters for desktop and around 120 characters for mobile. Front-load the most important information since mobile truncates earlier. Note: Google rewrites 62-70% of meta descriptions anyway. </details> <details> <summary>**04**### **What is the meta robots tag?** </summary> The meta robots tag controls how search engines crawl and index your page. Common values include index/noindex (whether to index), follow/nofollow (whether to follow links), and noarchive (prevent cached copy). It's placed in the <head> section. </details> <details> <summary>**05**### **Why are my meta tags not showing in search results?** </summary> Google may rewrite your title and description if it thinks they don't match the search query well. Ensure your tags accurately describe page content, include relevant keywords naturally, and are the right length. Server-side rendering is also essential - client-side rendered tags may not be indexed. </details> <details> <summary>**06**### **How do I check my meta description length?** </summary> Use the Title & Meta Description Length Checker above to paste your meta description and see the character count instantly. Aim for 155-160 characters on desktop and 120 on mobile. This meta description length checker also shows a live Google SERP preview so you can see exactly where truncation occurs. </details> <details> <summary>**07**### **What does a title tag checker look for?** </summary> A title tag checker validates character length (under 60 recommended), estimates pixel width (~580px max before Google truncates), and checks for common issues like missing titles, duplicate titles, or titles that are too short to be descriptive. Use the Title & Meta Description Length Checker above for instant feedback. </details> Checked one page. Nuxt SEO Pro monitors titles, descriptions and OG tags across every page and flags regressions before they cost you clicks. [**See it in Pro **](https://nuxtseo.com/pro) Part of [**Nuxt SEO **](https://nuxtseo.com/) — the all-in-one technical SEO toolkit for Nuxt. Sitemaps, robots.txt, meta tags, Schema.org, and OG images in one install. [**2026 SEO Checklist for Nuxt & Vue ** Meta tags are just the start. Walk through the complete SEO checklist.](https://nuxtseo.com/learn-seo/checklist) h3. **References** [**Google: Title Links in Search Results** Official documentation on how Google generates title links and best practices.](https://developers.google.com/search/docs/appearance/title-link) [**Google: Control Snippets in Search Results** How Google uses meta descriptions and generates snippets.](https://developers.google.com/search/docs/appearance/snippet) [**MDN: <meta> Element Reference** Complete HTML meta tag specification and attributes.](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/meta) [**The Open Graph Protocol** Official specification for Open Graph meta tags.](https://ogp.me/) h3. **Related** [Title Best Practices](https://nuxtseo.com/learn-seo/vue/mastering-meta/titles) [Description Best Practices](https://nuxtseo.com/learn-seo/vue/mastering-meta/descriptions) [Social Sharing Guide](https://nuxtseo.com/learn-seo/vue/mastering-meta/social-sharing) [useSeoMeta Docs](https://unhead.unjs.io/usage/composables/use-seo-meta) [Social Share Debugger](https://nuxtseo.com/tools/social-share-debugger) [Robots.txt Generator](https://nuxtseo.com/tools/robots-txt-generator) --- ### Free HTML to Markdown Converter · Convert URLs & HTML Online · Nuxt SEO Source: https://nuxtseo.com/tools/html-to-markdown Description: Free HTML to Markdown converter. Convert any webpage or HTML to clean Markdown for Nuxt Content, static sites, LLMs, or documentation. Nuxt SEO on GitHub h1. **Free HTML to Markdown Converter** Convert any webpage or HTML to clean Markdown. Extract article content for Nuxt Content, static sites, LLMs, or documentation. Try: **Extract article content only** Remove navigation, footer, ads h2. Convert Any Webpage to Markdown Enter a URL to extract and convert the page content to clean markdown. h3. **How It Works** Powered by [mdream](https://mdream.dev), a fast HTML to Markdown converter. 1. Fetches the webpage HTML 2. Extracts main content (removes nav, footer, ads) 3. Converts HTML elements to markdown syntax 4. Outputs clean, portable markdown h3. **Use Cases ** - **Documentation migration:** Move docs from legacy CMS to Nuxt Content - **LLM context:** Feed clean markdown to ChatGPT, Claude, or RAG pipelines - **Content archival:** Save articles in portable format - **Blog migration:** Convert WordPress posts to markdown files h2. Convert HTML to Markdown for LLMs Large language models work better with markdown than HTML: h3. **Smaller Token Count** Markdown is more compact than HTML, reducing API costs and fitting more content in context windows. h3. **Cleaner Structure** No style attributes, wrapper divs, or framework-specific markup cluttering the content. h3. **Better Parsing** LLMs understand markdown headings, lists, and links natively from training data. h3. **For RAG Pipelines** 1. Scrape source pages 2. Convert to markdown (this tool) 3. Chunk by headings 4. Embed and index h2. Frequently Asked Questions <details> <summary>**01**### **How do I convert HTML to Markdown?** </summary> Paste your HTML code or enter a URL above, then click Convert. This tool uses mdream (mdream.dev) to parse the HTML structure and convert it to clean Markdown syntax - headings become #, bold becomes **, lists become - or 1., and links become [text](url). </details> <details> <summary>**02**### **Can I convert a webpage URL to Markdown?** </summary> Yes, enter any public URL and this tool will fetch the page, extract the main content (removing navigation, ads, and footers), and convert it to Markdown. This is useful for migrating content to static site generators like Nuxt Content or Astro. </details> <details> <summary>**03**### **What is the "Extract Content" option?** </summary> Extract Content uses readability algorithms to identify the main article content on a page, removing headers, sidebars, footers, and ads. Disable it if you want the full HTML converted, including navigation and other page elements. </details> <details> <summary>**04**### **How do I convert HTML tables to Markdown?** </summary> This converter automatically transforms HTML tables into GitHub-flavored Markdown table syntax with proper column alignment. Complex tables with colspan/rowspan are simplified to basic Markdown table format. </details> <details> <summary>**05**### **Why use Markdown instead of HTML?** </summary> Markdown is easier to read and write, works with static site generators (Nuxt Content, Next.js, Astro), renders in GitHub/GitLab, and is the standard format for documentation. It's also the preferred input format for LLMs and AI tools. </details> Converted one page. Nuxt SEO Pro tracks how your whole site gets indexed, ranked and cited by AI engines. [**See it in Pro **](https://nuxtseo.com/pro) Part of [**Nuxt SEO **](https://nuxtseo.com/) — the all-in-one technical SEO toolkit for Nuxt. Sitemaps, robots.txt, meta tags, Schema.org, and OG images in one install. h3. **References** [**CommonMark Specification** The standard Markdown syntax reference used by most tools.](https://commonmark.org/help/) [**GitHub Flavored Markdown** Extended Markdown syntax with tables, task lists, and strikethrough.](https://docs.github.com/en/get-started/writing-on-github/getting-started-with-writing-and-formatting-on-github/basic-writing-and-formatting-syntax) [**Nuxt Content Documentation** Use converted Markdown with Nuxt Content for content-driven sites.](https://content.nuxt.com/) h3. **Related Resources** [Meta Tag Checker](https://nuxtseo.com/tools/meta-tag-checker) [Nuxt SEO Docs](https://nuxtseo.com/docs/nuxt-seo/getting-started/introduction) [llms.txt Guide](https://nuxtseo.com/learn-seo/nuxt/controlling-crawlers/llms-txt) [AI Ready Module](https://nuxtseo.com/docs/ai-ready/getting-started/introduction) [Vue SEO Guide](https://nuxtseo.com/learn-seo/vue) --- ### Free SEO Tools for Developers · Nuxt SEO Source: https://nuxtseo.com/tools Description: Free SEO tools: schema validator, sitemap checker, meta tag analyzer, robots.txt generator, social share debugger & more. No signup required. Nuxt SEO on GitHub h1. **SEO Tools ** Developer utilities for technical SEO. Free tools, no signup required. h2. **SEO Audit** Validate your markup, check your meta tags, and debug social sharing. [<h3>**Site Audit **</h3>Paste a URL, get one scored SEO/GEO diagnosis: indexability, meta, schema, social, sitemap & robots.](https://nuxtseo.com/tools/site-audit) [<h3>**Meta Tag Checker **</h3>Check title length, meta description & OG tags. Preview Google SERP appearance.](https://nuxtseo.com/tools/meta-tag-checker) [<h3>**Schema.org Validator **</h3>Free structured data validator for JSON-LD & Microdata. Check rich results eligibility.](https://nuxtseo.com/tools/schema-validator) [<h3>**Social Share Debugger **</h3>Preview and debug social share cards across Twitter, Facebook, LinkedIn, and more.](https://nuxtseo.com/tools/social-share-debugger) h2. **Technical SEO** Generate configs, validate sitemaps, and convert content formats. [<h3>**Robots.txt Generator **</h3>Free robots.txt generator with AI bot blocking. Block GPTBot, ClaudeBot & 20+ crawlers.](https://nuxtseo.com/tools/robots-txt-generator) [<h3>**Robots.txt Validator **</h3>Check your robots.txt for syntax errors, AI signals, and verify bot access rules.](https://nuxtseo.com/tools/robots-txt-validator) [<h3>**XML Sitemap Validator **</h3>Free sitemap checker with index support. Validate URLs, detect duplicates & errors.](https://nuxtseo.com/tools/xml-sitemap-validator) [<h3>**HTML to Markdown **</h3>Convert any webpage or HTML to clean Markdown for Nuxt Content or LLMs.](https://nuxtseo.com/tools/html-to-markdown) h2. **Keyword & SERP** Keyword ideas, SERP analysis, and domain intelligence. 2 free requests/day. [<h3>**Keyword Idea Generator **</h3>Free keyword idea generator for developers. Get volume, difficulty & intent data for your next project.](https://nuxtseo.com/tools/keyword-generator) [<h3>**Keyword Research **</h3>Advanced keyword research with history, filters, and SERP fallback analysis.](https://nuxtseo.com/tools/keyword-research) [<h3>**SERP Analyzer **</h3>See who ranks for any keyword and what SERP features are present.](https://nuxtseo.com/tools/serp-analyzer) [<h3>**Domain Rankings **</h3>Check what keywords any domain ranks for in Google.](https://nuxtseo.com/tools/domain-rankings) --- ### Nuxt SEO · SEO & AEO Toolkit for Nuxt Source: https://nuxtseo.com/ Description: Rank in Google and get cited by ChatGPT, Claude, and Perplexity. 8 modules for technical SEO and AI discoverability, 10 free tools, zero config. Nuxt SEO on GitHub h1. Fully equipped** **Technical SEO & AEO** for busy **Nuxters**. ** An ecosystem for Nuxt developers to win at search _and_ AI answers. 8 production ready [**modules **](https://nuxt.com/modules), 10 free tools, and education resources. [**Get Started **](https://nuxtseo.com/docs/nuxt-seo/getting-started/introduction) [**Install Nuxt SEO **](https://nuxtseo.com/docs/nuxt-seo/getting-started/installation) [**~~See your SEO in Pro ~~**](https://nuxtseo.com/pro) terminal $ npx nuxt module add **seo** [~~ docs → ~~](https://nuxtseo.com/docs/robots/getting-started/introduction) [~~ docs → ~~](https://nuxtseo.com/docs/sitemap/getting-started/introduction) [~~ docs → ~~](https://nuxtseo.com/docs/og-image/getting-started/introduction) [~~ docs → ~~](https://nuxtseo.com/docs/schema-org/getting-started/introduction) [~~ docs → ~~](https://nuxtseo.com/docs/link-checker/getting-started/introduction) [~~ docs → ~~](https://nuxtseo.com/docs/seo-utils/getting-started/introduction) [~~ docs → ~~](https://nuxtseo.com/docs/skew-protection/getting-started/introduction) [~~ docs → ~~](https://nuxtseo.com/docs/ai-ready/getting-started/introduction) 6 modulesvia @nuxtjs/seo [Robots v6.1.29.9M**520** Tame the robots crawling and indexing your site with ease.](https://nuxtseo.com/docs/robots/getting-started/introduction) [Sitemap v8.2.211M**436** Powerfully flexible XML Sitemaps that integrate seamlessly.](https://nuxtseo.com/docs/sitemap/getting-started/introduction) [Schema.org v6.2.34.7M**190** The quickest and easiest way to build Schema.org graphs.](https://nuxtseo.com/docs/schema-org/getting-started/introduction) [SEO Utils v8.3.13.1M**126** SEO utilities to improve your Nuxt sites discoverability and shareability.](https://nuxtseo.com/docs/seo-utils/getting-started/introduction) [OG Image v6.7.24.8M**540** Generate OG Images with Vue templates in Nuxt.](https://nuxtseo.com/docs/og-image/getting-started/introduction) [SEO Utils v8.3.13.1M**126** SEO utilities to improve your Nuxt sites discoverability and shareability.](https://nuxtseo.com/docs/seo-utils/getting-started/introduction) [Link Checker v5.1.23.4M**98** Find and magically fix links that may be negatively effecting your SEO.](https://nuxtseo.com/docs/link-checker/getting-started/introduction) [Skew Protection v1.3.015K**2** Solve Nuxt version skews with persistent assets and instant updates.](https://nuxtseo.com/docs/skew-protection/getting-started/introduction) - Zero-downtime deployments on Nuxt - Keeps stale chunks alive for active sessions - Prompts users to refresh on new releases [AI Ready v1.5.330K**11** Best practice AI & LLM discoverability for Nuxt sites.](https://nuxtseo.com/docs/ai-ready/getting-started/introduction) - Auto-generated `llms.txt` & `llms-full.txt` - On-demand `.md` for every route - MCP server & IndexNow built in ANSWER ENGINE OPTIMIZATION h2. **Be the source AI engines cite. ** ChatGPT search doubled this year. AI Overviews, Claude, and Perplexity only cite what they can parse. Nuxt SEO already gives you the foundation (clean HTML, Schema.org, sitemaps, robots); [**~~AI Ready ~~**](https://nuxtseo.com/docs/ai-ready/getting-started/introduction) adds `llms.txt`, `.md` endpoints, MCP, and IndexNow. [**Explore AI Ready **](https://nuxtseo.com/docs/ai-ready/getting-started/introduction) [**AEO guide **](https://nuxtseo.com/learn-seo/nuxt/launch-and-listen/ai-optimized-content) Agent-Readability With `@nuxtjs/seo` + AI Ready installed [npx @vercel/agent-readability audit ](https://github.com/vercel-labs/agent-readability) Principles h2. **What Nuxt SEO stands for. ** h3. **Delightful Developer Experience** Full featured modules that do everything you expect and more. h3. **Zero Config Defaults** Provide a site URL and all modules are good to go. Fully extensible with config and hooks. ![Nuxt I18n Icon](https://ipx.nuxt.com/s_80,f_auto/gh/nuxt/modules/main/icons/i18n.png) h3. **Integrate with Ecosystem** Modules integrate with themselves as well as Nuxt Content, Nuxt I18n and Nuxt DevTools. Learn SEO h2. **Guides with code that works. ** Technical SEO for Nuxt and Vue apps, written for developers. Meta tags, crawling, Schema.org, Core Web Vitals. [Nuxt<h3>**Nuxt SEO Guide **</h3>Meta tags, sitemaps, robots.txt, Schema.org, and more. Everything you need for Nuxt applications. - Mastering Meta Tags - Controlling Web Crawlers - Routes & Rendering Modes**Read the guide **](https://nuxtseo.com/learn-seo/nuxt) [Vue<h3>**Vue SEO Guide **</h3>SPA SEO challenges, SSR frameworks comparison, Unhead integration, and Core Web Vitals optimization. - SPA SEO Solutions - SSR Framework Comparison - Vue SEO Checklist**Read the guide **](https://nuxtseo.com/learn-seo/vue) Free Tools h2. **Ship without leaving the terminal. ** Validators, checkers, and generators built for developers. No signup, no ads. [**Browse all tools **](https://nuxtseo.com/tools) [<h3>**Schema.org Validator**</h3>Free structured data validator for JSON-LD & Microdata. Check rich results eligibility.](https://nuxtseo.com/tools/schema-validator) [<h3>**XML Sitemap Validator**</h3>Free sitemap checker with index support. Validate URLs, detect duplicates & errors.](https://nuxtseo.com/tools/xml-sitemap-validator) [<h3>**Meta Tag Checker**</h3>Check title length, meta description & OG tags. Preview Google SERP appearance.](https://nuxtseo.com/tools/meta-tag-checker) [<h3>**Social Share Debugger**</h3>Preview how links appear on Twitter, Facebook, LinkedIn, Slack & Discord.](https://nuxtseo.com/tools/social-share-debugger) [<h3>**Robots.txt Generator**</h3>Free robots.txt generator with AI bot blocking. Block GPTBot, ClaudeBot & 20+ crawlers.](https://nuxtseo.com/tools/robots-txt-generator) [<h3>**HTML to Markdown**</h3>Convert any webpage or HTML to clean Markdown for Nuxt Content or LLMs.](https://nuxtseo.com/tools/html-to-markdown) [<h3>**Keyword Research**</h3>**Pro ** Find long-tail opportunities with volume & difficulty data.](https://nuxtseo.com/tools/keyword-research) [<h3>**SERP Analyzer**</h3>**Pro ** See who ranks for any keyword. Analyze AI Overview & SERP features.](https://nuxtseo.com/tools/serp-analyzer) [<h3>**Domain Rankings**</h3>**Pro ** Check keyword positions, search volume & estimated traffic.](https://nuxtseo.com/tools/domain-rankings) Lighthouse audits h2. **Pass technical SEO audits out of the box. ** Everything needed to satisfy Google's Lighthouse SEO checks, shipping as sensible defaults. SEO Continuously maintained h2. **Shipping since 2022. ** Three years of continuous releases, bug fixes, and community contributions. Still compounding. ![GitHub User 5326365](https://avatars.githubusercontent.com/u/5326365?s=80&v=4)![GitHub User 38922203](https://avatars.githubusercontent.com/u/38922203?s=80&v=4)![GitHub User 28706372](https://avatars.githubusercontent.com/u/28706372?s=80&v=4)![GitHub User 44604921](https://avatars.githubusercontent.com/u/44604921?s=80&v=4)![GitHub User 12596485](https://avatars.githubusercontent.com/u/12596485?s=80&v=4)![GitHub User 6196533](https://avatars.githubusercontent.com/u/6196533?s=80&v=4)![GitHub User 4778485](https://avatars.githubusercontent.com/u/4778485?s=80&v=4)![GitHub User 70809675](https://avatars.githubusercontent.com/u/70809675?s=80&v=4)![GitHub User 1840026](https://avatars.githubusercontent.com/u/1840026?s=80&v=4)![GitHub User 7005614](https://avatars.githubusercontent.com/u/7005614?s=80&v=4)![GitHub User 1233149](https://avatars.githubusercontent.com/u/1233149?s=80&v=4)![GitHub User 37402126](https://avatars.githubusercontent.com/u/37402126?s=80&v=4)![GitHub User 59267857](https://avatars.githubusercontent.com/u/59267857?s=80&v=4)![GitHub User 127685984](https://avatars.githubusercontent.com/u/127685984?s=80&v=4)![GitHub User 6649305](https://avatars.githubusercontent.com/u/6649305?s=80&v=4)![GitHub User 1319995](https://avatars.githubusercontent.com/u/1319995?s=80&v=4)![GitHub User 43475742](https://avatars.githubusercontent.com/u/43475742?s=80&v=4)![GitHub User 83548](https://avatars.githubusercontent.com/u/83548?s=80&v=4)![GitHub User 45267552](https://avatars.githubusercontent.com/u/45267552?s=80&v=4)![GitHub User 10612835](https://avatars.githubusercontent.com/u/10612835?s=80&v=4)![GitHub User 60323306](https://avatars.githubusercontent.com/u/60323306?s=80&v=4)![GitHub User 96652894](https://avatars.githubusercontent.com/u/96652894?s=80&v=4)![GitHub User 4960853](https://avatars.githubusercontent.com/u/4960853?s=80&v=4)![GitHub User 13146097](https://avatars.githubusercontent.com/u/13146097?s=80&v=4)![GitHub User 10812694](https://avatars.githubusercontent.com/u/10812694?s=80&v=4)![GitHub User 88148092](https://avatars.githubusercontent.com/u/88148092?s=80&v=4)![GitHub User 1658644](https://avatars.githubusercontent.com/u/1658644?s=80&v=4)![GitHub User 3593197](https://avatars.githubusercontent.com/u/3593197?s=80&v=4)![GitHub User 58269084](https://avatars.githubusercontent.com/u/58269084?s=80&v=4)![GitHub User 52504463](https://avatars.githubusercontent.com/u/52504463?s=80&v=4)![GitHub User 13064722](https://avatars.githubusercontent.com/u/13064722?s=80&v=4)![GitHub User 2766008](https://avatars.githubusercontent.com/u/2766008?s=80&v=4)![GitHub User 469009](https://avatars.githubusercontent.com/u/469009?s=80&v=4)![GitHub User 2822227](https://avatars.githubusercontent.com/u/2822227?s=80&v=4)![GitHub User 34515355](https://avatars.githubusercontent.com/u/34515355?s=80&v=4)![GitHub User 1107521](https://avatars.githubusercontent.com/u/1107521?s=80&v=4)![GitHub User 7123667](https://avatars.githubusercontent.com/u/7123667?s=80&v=4)![GitHub User 78361788](https://avatars.githubusercontent.com/u/78361788?s=80&v=4)![GitHub User 77567](https://avatars.githubusercontent.com/u/77567?s=80&v=4)![GitHub User 13056429](https://avatars.githubusercontent.com/u/13056429?s=80&v=4)![GitHub User 49156174](https://avatars.githubusercontent.com/u/49156174?s=80&v=4)![GitHub User 17025257](https://avatars.githubusercontent.com/u/17025257?s=80&v=4)![GitHub User 12688139](https://avatars.githubusercontent.com/u/12688139?s=80&v=4)![GitHub User 51262009](https://avatars.githubusercontent.com/u/51262009?s=80&v=4)![GitHub User 20121604](https://avatars.githubusercontent.com/u/20121604?s=80&v=4)![GitHub User 144150970](https://avatars.githubusercontent.com/u/144150970?s=80&v=4)![GitHub User 30938967](https://avatars.githubusercontent.com/u/30938967?s=80&v=4)![GitHub User 2013388](https://avatars.githubusercontent.com/u/2013388?s=80&v=4)![GitHub User 731073](https://avatars.githubusercontent.com/u/731073?s=80&v=4)![GitHub User 6578052](https://avatars.githubusercontent.com/u/6578052?s=80&v=4)![GitHub User 1836701](https://avatars.githubusercontent.com/u/1836701?s=80&v=4)![GitHub User 33802653](https://avatars.githubusercontent.com/u/33802653?s=80&v=4)![GitHub User 85992002](https://avatars.githubusercontent.com/u/85992002?s=80&v=4)![GitHub User 78470999](https://avatars.githubusercontent.com/u/78470999?s=80&v=4)![GitHub User 2629739](https://avatars.githubusercontent.com/u/2629739?s=80&v=4)![GitHub User 2229946](https://avatars.githubusercontent.com/u/2229946?s=80&v=4)![GitHub User 11247099](https://avatars.githubusercontent.com/u/11247099?s=80&v=4)![GitHub User 7290030](https://avatars.githubusercontent.com/u/7290030?s=80&v=4)![GitHub User 7423087](https://avatars.githubusercontent.com/u/7423087?s=80&v=4)![GitHub User 70889873](https://avatars.githubusercontent.com/u/70889873?s=80&v=4)![GitHub User 72013831](https://avatars.githubusercontent.com/u/72013831?s=80&v=4)![GitHub User 106754824](https://avatars.githubusercontent.com/u/106754824?s=80&v=4)![GitHub User 15009722](https://avatars.githubusercontent.com/u/15009722?s=80&v=4)![GitHub User 5664215](https://avatars.githubusercontent.com/u/5664215?s=80&v=4)![GitHub User 18027877](https://avatars.githubusercontent.com/u/18027877?s=80&v=4)![GitHub User 50038825](https://avatars.githubusercontent.com/u/50038825?s=80&v=4)![GitHub User 8042044](https://avatars.githubusercontent.com/u/8042044?s=80&v=4)![GitHub User 51825926](https://avatars.githubusercontent.com/u/51825926?s=80&v=4)![GitHub User 1770543](https://avatars.githubusercontent.com/u/1770543?s=80&v=4)![GitHub User 5037600](https://avatars.githubusercontent.com/u/5037600?s=80&v=4)![GitHub User 5989846](https://avatars.githubusercontent.com/u/5989846?s=80&v=4)![GitHub User 110889225](https://avatars.githubusercontent.com/u/110889225?s=80&v=4)![GitHub User 47750560](https://avatars.githubusercontent.com/u/47750560?s=80&v=4)![GitHub User 20380298](https://avatars.githubusercontent.com/u/20380298?s=80&v=4)![GitHub User 25445516](https://avatars.githubusercontent.com/u/25445516?s=80&v=4)![GitHub User 6450536](https://avatars.githubusercontent.com/u/6450536?s=80&v=4)![GitHub User 1983246](https://avatars.githubusercontent.com/u/1983246?s=80&v=4)![GitHub User 40447](https://avatars.githubusercontent.com/u/40447?s=80&v=4)![GitHub User 1246641](https://avatars.githubusercontent.com/u/1246641?s=80&v=4)![GitHub User 7460168](https://avatars.githubusercontent.com/u/7460168?s=80&v=4)![GitHub User 2862673](https://avatars.githubusercontent.com/u/2862673?s=80&v=4)![GitHub User 640208](https://avatars.githubusercontent.com/u/640208?s=80&v=4)![GitHub User 73585109](https://avatars.githubusercontent.com/u/73585109?s=80&v=4)![GitHub User 122052334](https://avatars.githubusercontent.com/u/122052334?s=80&v=4)![GitHub User 904724](https://avatars.githubusercontent.com/u/904724?s=80&v=4) 8.1K Commits 1.4K Issues Closed 85 Contributors Testimonials h2. **Loved by Nuxt developers. ** Built for the community. Here's what some of them have to say. _![Israel Ortuño](https://pbs.twimg.com/profile_images/775688037741330432/Tp_cNdDn_x96.jpg)**Israel Ortuño**@IsraelOrtuno_ > I've been doing technical SEO for years, always liked it. With @nuxt_js SEO is way easier. It's a gem in the ecosystem. Amazing job by @harlan_zw. _![Ju Nogueira](https://pbs.twimg.com/profile_images/1413881210321911810/5j9VNqaN_normal.jpg)**Ju Nogueira**@nogueiraju_ > Nuxt SEO by @harlan_zw. Makes my life a lot easier. _![Estéban](https://avatars.githubusercontent.com/u/45267552?v=4)**Estéban**@soubiran__ > I have to say that your SEO modules are one of the things that make me stay on Nuxt for every one of my websites. _![Thomas ✪](https://pbs.twimg.com/profile_images/1650610309785108484/arOyrwG-_normal.png)**Thomas ✪**@eoThica_ > Just did schema markup for a whole webshop in 20 minutes cause of @harlan_zw. absolutely gorgeous. Check it out. nuxtseo.com _![Israel Ortuño](https://pbs.twimg.com/profile_images/775688037741330432/Tp_cNdDn_x96.jpg)**Israel Ortuño**@IsraelOrtuno_ > I've been doing technical SEO for years, always liked it. With @nuxt_js SEO is way easier. It's a gem in the ecosystem. Amazing job by @harlan_zw. _![Ju Nogueira](https://pbs.twimg.com/profile_images/1413881210321911810/5j9VNqaN_normal.jpg)**Ju Nogueira**@nogueiraju_ > Nuxt SEO by @harlan_zw. Makes my life a lot easier. _![Estéban](https://avatars.githubusercontent.com/u/45267552?v=4)**Estéban**@soubiran__ > I have to say that your SEO modules are one of the things that make me stay on Nuxt for every one of my websites. _![Thomas ✪](https://pbs.twimg.com/profile_images/1650610309785108484/arOyrwG-_normal.png)**Thomas ✪**@eoThica_ > Just did schema markup for a whole webshop in 20 minutes cause of @harlan_zw. absolutely gorgeous. Check it out. nuxtseo.com _![Thomas ✪](https://pbs.twimg.com/profile_images/1650610309785108484/arOyrwG-_normal.png)**Thomas ✪**@eoThica_ > Just did schema markup for a whole webshop in 20 minutes cause of @harlan_zw. absolutely gorgeous. Check it out. nuxtseo.com _![marcustoy](https://cdn.discordapp.com/avatars/716064643809804288/4895f3e4b7551e9ee03a98f7cd2675fb.webp?size=80)**marcustoy**marcustoy_ > Hey man, appreciate all your great work on those Nuxt modules. I'm using Nuxt SEO and it's awesome! 💪🏻 _![Sun](https://pbs.twimg.com/profile_images/1596204487948894209/SINw8xBj_normal.jpg)**Sun**@__Sun___ > how freaking cool is this ?! OG Image preview of community templates, as well as the ones i made, right in the @nuxt_js dev tools 🤯 amazing work @harlan_zw _![Sébastien Chopin](https://avatars.githubusercontent.com/u/904724?v=4)**Sébastien Chopin**@Atinux_ > What an impressive work done by @harlan_zw on Nuxt OG Image v3 🙌 _![Fabian B.](https://pbs.twimg.com/profile_images/1715052883899555840/L0TFwzp9_normal.jpg)**Fabian B.**@madebyfabian_ > Nuxt GraphQL middleware by @dulnan is really, really good. And Nuxt SEO by @harlan_zw is also something I use in almost every project. There are so many more though! _![Thomas ✪](https://pbs.twimg.com/profile_images/1650610309785108484/arOyrwG-_normal.png)**Thomas ✪**@eoThica_ > Just did schema markup for a whole webshop in 20 minutes cause of @harlan_zw. absolutely gorgeous. Check it out. nuxtseo.com _![marcustoy](https://cdn.discordapp.com/avatars/716064643809804288/4895f3e4b7551e9ee03a98f7cd2675fb.webp?size=80)**marcustoy**marcustoy_ > Hey man, appreciate all your great work on those Nuxt modules. I'm using Nuxt SEO and it's awesome! 💪🏻 _![Sun](https://pbs.twimg.com/profile_images/1596204487948894209/SINw8xBj_normal.jpg)**Sun**@__Sun___ > how freaking cool is this ?! OG Image preview of community templates, as well as the ones i made, right in the @nuxt_js dev tools 🤯 amazing work @harlan_zw _![Sébastien Chopin](https://avatars.githubusercontent.com/u/904724?v=4)**Sébastien Chopin**@Atinux_ > What an impressive work done by @harlan_zw on Nuxt OG Image v3 🙌 _![Fabian B.](https://pbs.twimg.com/profile_images/1715052883899555840/L0TFwzp9_normal.jpg)**Fabian B.**@madebyfabian_ > Nuxt GraphQL middleware by @dulnan is really, really good. And Nuxt SEO by @harlan_zw is also something I use in almost every project. There are so many more though! Downloads 160K downloads per day Used and trusted by thousands of developers and companies around the world. 4.8M Downloads / month 3.4K Total stars Sponsors h2. **Funded by the community. ** Free and open-source, sustained by the generosity of developers and companies who depend on it. [**Become a sponsor **](https://github.com/sponsors/harlan-zw) Top sponsors [![Daniel Roe](https://avatars.githubusercontent.com/u/28706372?u=c4a5aa5232c09c3248533366d5c93a138d7e8987&v=4)**Daniel Roe** roe.dev](https://roe.dev) Gold sponsors [![Massive Monster](https://avatars.githubusercontent.com/u/11852534?v=4)**Massive Monster** massivemonster.co](https://massivemonster.co) [![Localazy](https://avatars.githubusercontent.com/u/59409404?v=4)**Localazy** localazy.com](https://localazy.com) [![Encited (formerly LovableHTML)](https://avatars.githubusercontent.com/u/281390080?v=4)**Encited (formerly LovableHTML)** encited.com](https://encited.com) Backers [![Björn Büttner](https://avatars.githubusercontent.com/u/7874631?u=dbcb7fa18f2d10b54426fe10451472a0f5e5fca3&v=4)](https://github.com/Idrinth) [![Jan-Henrik Damaschke](https://avatars.githubusercontent.com/u/15030951?u=724eb8ee4cae7792ddf13e25c31589dd6c5cb1d1&v=4)](https://itinsights.org) [![timhanlon](https://avatars.githubusercontent.com/u/4340187?u=99d45e9548a0bf67d4c391f1fac10a0587566e2a&v=4)](https://github.com/timhanlon) [![Arash Ari Sheyda](https://avatars.githubusercontent.com/u/38922203?u=9dbd0fa921a11bc4b2842700008e2d08e33bb73f&v=4)](https://github.com/arashsheyda) [![Marko](https://avatars.githubusercontent.com/u/2497323?u=189c706b73e0495b56688589447d3e46b8045f73&v=4)](https://github.com/aussieboi) [![Christian Ducrot](https://avatars.githubusercontent.com/u/3525119?u=6b662d7c909bb2c725194f0f9290d2b8e78b7188&v=4)](https://ducrot.de) [![Maik](https://avatars.githubusercontent.com/u/16877165?u=51e3a642e812d53c7d51037f4cf421e9faf9a3f9&v=4)](https://github.com/just-maik) [![Leopold Kristjansson](https://avatars.githubusercontent.com/u/2579324?v=4)](https://github.com/leopoldkristjansson) [![Email Testing for Developers - SMTP Labs, Inc.](https://avatars.githubusercontent.com/u/89388475?v=4)](https://github.com/smtplabs) [![reshepe](https://avatars.githubusercontent.com/u/175365848?v=4)](https://reshepe.dev) [![Elmo](https://avatars.githubusercontent.com/u/229394758?v=4)](https://elmohq.com) [![AdKit](https://avatars.githubusercontent.com/u/242531394?v=4)](https://adkit.so) --- ### Social Share Debugger · Preview Facebook, Twitter & LinkedIn · Nuxt SEO Source: https://nuxtseo.com/tools/social-share-debugger Description: Free social share debugger. Preview how your links appear on Twitter, Facebook, LinkedIn, Slack & Discord. Debug OG tags and clear platform caches. Nuxt SEO on GitHub h1. **Social Share Debugger** Preview how your links appear on Twitter, Facebook, LinkedIn, Slack & Discord. Debug Open Graph tags and clear platform caches. Try: h2. Clear Platform Cache h3. **Facebook Sharing Debugger** Clear Facebook cache and force re-scrape [**Open Tool **](https://developers.facebook.com/tools/debug/) h3. **Twitter Card Validator** Validate and preview Twitter cards [**Open Tool **](https://cards-dev.twitter.com/validator) h3. **LinkedIn Post Inspector** Inspect and refresh LinkedIn previews [**Open Tool **](https://www.linkedin.com/post-inspector/) h2. Why Isn't My OG Image Updating? Social platforms cache link previews aggressively to reduce server load. After updating your OG tags, you'll need to manually clear each platform's cache. **Cache invalidation is unreliable** Platform cache clearing is flakey and may not work consistently. You may need to try multiple times or wait for the cache to expire naturally. h3. **Facebook ** Caches for approximately **30 days**. Force refresh via the [Facebook Sharing Debugger](https://developers.facebook.com/tools/debug/). Click "Scrape Again" to fetch fresh data. h3. **Twitter/X ** Caches until you request a re-scrape via the [Card Validator](https://cards-dev.twitter.com/validator). Note: The validator UI was removed but the API still works. h3. **LinkedIn ** Has a particularly sticky cache. Clear via [Post Inspector](https://www.linkedin.com/post-inspector/). May take up to 7 days for cache to fully refresh. h3. **WhatsApp ** Preview style varies by client version and context - some show **square (1:1)** crops, others show full **1.91:1** cards. No official cache clearing tool - cache typically refreshes within 24-48 hours. For best compatibility, use `1200x600px` with important content centered. h3. **Pro Tips for OG Images ** - Use **1200x600px** for optimal display across platforms - Keep important content in the center 800x400px safe zone - Use absolute URLs for og:image (relative URLs won't work) - Add cache-busting query params when updating: `?v=2` h2. Frequently Asked Questions <details> <summary>**01**### **What is a social share debugger?** </summary> A social share debugger lets you preview how your links will appear when shared on platforms like Twitter, Facebook, LinkedIn, and Slack. It checks your Open Graph (OG) tags and Twitter Card meta tags to ensure your content displays correctly with the right image, title, and description. </details> <details> <summary>**02**### **Why isn't my image showing when I share on Twitter?** </summary> Twitter caches your page's meta tags. If you updated your og:image after sharing, Twitter still shows the old image. Use this debugger to clear Twitter's cache by clicking "Clear Cache" next to the Twitter preview. Also ensure your image meets Twitter's requirements: minimum 120x120px, maximum 5MB, and accessible via HTTPS. </details> <details> <summary>**03**### **How do I clear Facebook's OG cache?** </summary> Facebook caches Open Graph data for about 7 days. To force a refresh, use Facebook's Sharing Debugger or this tool's "Clear Cache" button. Note that Facebook requires og:image to be at least 200x200px (1200x600px recommended) and accessible without authentication. </details> <details> <summary>**04**### **What Open Graph tags do I need?** </summary> The essential OG tags are og:title, og:description, og:image, and og:url. For better results, also include og:type (usually "website" or "article"), og:image:width, og:image:height, and og:site_name. Twitter also uses twitter:card, twitter:title, and twitter:image for Twitter Cards. </details> <details> <summary>**05**### **Why do LinkedIn and Slack show different previews?** </summary> Each platform has its own cache and rendering rules. LinkedIn and Slack both cache link previews for about 7 days. This debugger shows you exactly what each platform will display. To refresh Slack, use the [Slack URL Debugger](https://api.slack.com/tools/debug/url). </details> Debugged one URL. Nuxt SEO Pro monitors share previews across your entire site. [**See it in Pro **](https://nuxtseo.com/pro) Part of [**Nuxt SEO **](https://nuxtseo.com/) — the all-in-one technical SEO toolkit for Nuxt. Sitemaps, robots.txt, meta tags, Schema.org, and OG images in one install. [**2026 SEO Checklist for Nuxt & Vue ** Social sharing sorted? Check the full SEO checklist for everything else.](https://nuxtseo.com/learn-seo/checklist) h3. **References** [**The Open Graph Protocol** Official specification for og:title, og:description, og:image and more.](https://ogp.me/) [**Twitter Cards Documentation** Official X/Twitter Cards specification and card types.](https://developer.x.com/en/docs/twitter-for-websites/cards/overview/abouts-cards) [**Facebook Sharing Best Practices** Meta's guide to optimizing link shares on Facebook and Instagram.](https://developers.facebook.com/docs/sharing/webmasters/) h3. **Related** [OG Image Module](https://nuxtseo.com/docs/og-image/getting-started/introduction) [Open Graph Guide](https://nuxtseo.com/learn-seo/nuxt/mastering-meta/open-graph) [Twitter Cards](https://nuxtseo.com/learn-seo/nuxt/mastering-meta/twitter-cards) [Vue Social Sharing](https://nuxtseo.com/learn-seo/vue/mastering-meta/social-sharing) [Meta Tag Checker](https://nuxtseo.com/tools/meta-tag-checker) --- ### Free XML Sitemap Validator · Check Errors & Validate URLs Online · Nuxt SEO Source: https://nuxtseo.com/tools/xml-sitemap-validator Description: Free XML sitemap validator with sitemap index support. Check for errors, validate URLs, detect duplicates, and verify Google compliance. Export results as CSV. Nuxt SEO on GitHub h1. **Free XML Sitemap Validator** Validate XML sitemaps with sitemap index support. Check for errors, detect duplicates, verify Google compliance, and export results as CSV. Try: h2. What is an XML Sitemap? An XML sitemap is a file that lists all the important URLs on your website, helping search engines discover, crawl, and index your pages efficiently. Think of it as a roadmap for Google, Bing, and other crawlers. h3. **Discovery ** Helps search engines find pages that might not be discovered through internal linking alone. h3. **Freshness ** The `lastmod` date tells crawlers when content was last updated, prioritizing fresh content. h3. **Organization ** Large sites use sitemap indexes to organize URLs into logical groups (blog, products, pages). h2. Sitemap Validation Checklist **1**File is accessible at /sitemap.xml or declared in robots.txt **2**XML is well-formed with proper namespace declaration **3**All URLs use absolute paths (https://example.com/page) **4**File is under 50MB uncompressed and 50,000 URLs **5**lastmod dates use W3C format (YYYY-MM-DD) **6**No duplicate URLs in the same sitemap **7**No URLs blocked by robots.txt Disallow rules **8**URLs return 200 status codes (not 404, 301, or 500) **9**Sitemap is submitted to Google Search Console Use this validator to check items 2-6 automatically. For items 7-8, check your [~~robots.txt ~~](https://nuxtseo.com/tools/robots-txt-validator) and monitor [~~Google Search Console~~](https://search.google.com/search-console). h2. What Makes a Valid Sitemap? XML sitemaps help search engines discover and crawl your pages efficiently. A valid sitemap follows specific rules: - **Proper namespace:** Must include xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" - **Size limits:** Maximum 50,000 URLs and 50MB uncompressed - **Valid URLs:** Absolute URLs with proper encoding - **Date format:** W3C datetime format (YYYY-MM-DD) h2. Common Sitemap Errors h3. `Invalid XML` Missing closing tags, incorrect nesting, or unescaped characters (&, <, >). h3. `Wrong date` Using formats like "01/15/2024" instead of "2024-01-15". h3. `Relative URLs` Using "/page" instead of "https://example.com/page". h3. `Too large` Over 50,000 URLs or 50MB file size. Use sitemap index for large sites. h2. Generate Sitemaps Automatically Stop maintaining sitemaps manually. Use a module to generate them automatically from your routes. h3. **Nuxt ** Auto-generate sitemaps from your pages, supports dynamic routes, i18n, and sitemap indexes. h3. **Vue / Vite ** Generate sitemaps at build time from your Vue Router configuration. h2. Frequently Asked Questions <details> <summary>**01**### **What is a sitemap validator?** </summary> A sitemap validator is a tool that checks your XML sitemap for errors, validates URL format, and ensures compliance with the sitemaps.org protocol. It helps ensure search engines can properly crawl and index your website. </details> <details> <summary>**02**### **How do I check my sitemap for errors?** </summary> Enter your sitemap URL (e.g., example.com/sitemap.xml) above and click Validate. This sitemap checker will fetch your sitemap, parse all URLs, and validate against Google's sitemap requirements including lastmod dates, changefreq, and priority values. </details> <details> <summary>**03**### **What is changefreq in a sitemap?** </summary> Changefreq (change frequency) is an optional XML sitemap tag that tells search engines how often a page is likely to change. Values include always, hourly, daily, weekly, monthly, yearly, and never. Note: Google largely ignores this tag and relies on actual crawl data instead. </details> <details> <summary>**04**### **What is a sitemap index?** </summary> A sitemap index is a file that references multiple sitemaps. It's used when your site has more than 50,000 URLs or your sitemap exceeds 50MB. Each sitemap in the index can contain up to 50,000 URLs. </details> <details> <summary>**05**### **How do I validate my sitemap for Google?** </summary> Use this sitemap tester to validate your sitemap structure, then submit it to Google Search Console. Google will show any crawl errors. Ensure your sitemap uses absolute URLs, valid lastmod dates (YYYY-MM-DD), and doesn't exceed size limits. </details> Validated your sitemap. Nuxt SEO Pro shows which of those URLs Google has actually indexed — and why the rest aren't. [**See it in Pro **](https://nuxtseo.com/pro) Part of [**Nuxt SEO **](https://nuxtseo.com/) — the all-in-one technical SEO toolkit for Nuxt. Sitemaps, robots.txt, meta tags, Schema.org, and OG images in one install. [**2026 SEO Checklist for Nuxt & Vue ** Sitemap looking good? Make sure the rest of your SEO is covered too.](https://nuxtseo.com/learn-seo/checklist) h3. **References** [**Sitemaps Protocol** Official specification for XML sitemaps.](https://www.sitemaps.org/protocol.html) [**Google: Build a Sitemap** Google's guide to creating sitemaps.](https://developers.google.com/search/docs/crawling-indexing/sitemaps/build-sitemap) [**Google Search Console** Submit and monitor your sitemap.](https://search.google.com/search-console) h3. **Related** [Sitemap Module](https://nuxtseo.com/docs/sitemap/getting-started/introduction) [Robots.txt Generator](https://nuxtseo.com/tools/robots-txt-generator) [Robots.txt Validator](https://nuxtseo.com/tools/robots-txt-validator) [Meta Tag Checker](https://nuxtseo.com/tools/meta-tag-checker) [Schema Validator](https://nuxtseo.com/tools/schema-validator) --- ### Releases · Nuxt SEO Source: https://nuxtseo.com/releases Description: Nuxt SEO is a collection of hand-crafted Nuxt Modules to help you rank higher in search engines. Nuxt SEO on GitHub h1. **Nuxt SEO Releases** See what has been shipping recently. Last fetched just now. Updated every 24 hours. **Major releases only** - [OG Image](https://nuxtseo.com/docs/og-image/getting-started/introduction)yesterdayv6.7.2** Latest **### 🐞 Bug Fixes - **takumi**: Icon color not inheriting - by @harlan-zw [`**(c51a3)**`](https://github.com/nuxt-modules/og-image/commit/c51a3039) ##### [**~~View changes on GitHub~~**](https://github.com/nuxt-modules/og-image/compare/v6.7.1...v6.7.2) - [Nuxt SEO](https://nuxtseo.com/docs/nuxt-seo/getting-started/introduction)yesterdayv5.3.2** Latest ** _No significant changes_##### [**~~View changes on GitHub~~**](https://github.com/harlan-zw/nuxt-seo/compare/v5.3.1...v5.3.2) - [OG Image](https://nuxtseo.com/docs/og-image/getting-started/introduction)yesterdayv6.7.1 ### 🐞 Bug Fixes - Support takumi v2 rc - by @harlan-zw [`**(d7427)**`](https://github.com/nuxt-modules/og-image/commit/d74273de) ##### [**~~View changes on GitHub~~**](https://github.com/nuxt-modules/og-image/compare/v6.7.0...v6.7.1) - [AI Ready](https://nuxtseo.com/docs/ai-ready/getting-started/introduction)4 days agov1.5.3** Latest **### 🐞 Bug Fixes - Avoid crash when robots config is not explicitly set - by @harlan-zw in [**~~https://github.com/harlan-zw/nuxt-ai-ready/issues/41~~**](https://github.com/harlan-zw/nuxt-ai-ready/issues/41) [`**(eb969)**`](https://github.com/harlan-zw/nuxt-ai-ready/commit/eb9695a) ##### [**~~View changes on GitHub~~**](https://github.com/harlan-zw/nuxt-ai-ready/compare/v1.5.2...v1.5.3) - [AI Ready](https://nuxtseo.com/docs/ai-ready/getting-started/introduction)last weekv1.5.2 ### 🐞 Bug Fixes - Avoid sitemap timeouts - by @harlan-zw [`**(60665)**`](https://github.com/harlan-zw/nuxt-ai-ready/commit/6066556) ##### [**~~View changes on GitHub~~**](https://github.com/harlan-zw/nuxt-ai-ready/compare/v1.5.1...v1.5.2) - [Robots](https://nuxtseo.com/docs/robots/getting-started/introduction)last weekv6.1.2** Latest **### 🐞 Bug Fixes - Register robots Nitro types for node context - by @harlan-zw in [**~~https://github.com/nuxt-modules/robots/issues/305~~**](https://github.com/nuxt-modules/robots/issues/305) [`**(fa83f)**`](https://github.com/nuxt-modules/robots/commit/fa83fed) ##### [**~~View changes on GitHub~~**](https://github.com/nuxt-modules/robots/compare/v6.1.1...v6.1.2) - [Schema.org](https://nuxtseo.com/docs/schema-org/getting-started/introduction)last weekv6.2.3** Latest **### 🐞 Bug Fixes - **i18n**: Resolve default locale ids from code - by @harlan-zw in [**~~https://github.com/harlan-zw/nuxt-schema-org/issues/132~~**](https://github.com/harlan-zw/nuxt-schema-org/issues/132) [`**(37a4c)**`](https://github.com/harlan-zw/nuxt-schema-org/commit/37a4c84) ##### [**~~View changes on GitHub~~**](https://github.com/harlan-zw/nuxt-schema-org/compare/v6.2.2...v6.2.3) - [Sitemap](https://nuxtseo.com/docs/sitemap/getting-started/introduction)last weekv8.2.2** Latest **### 🐞 Bug Fixes - Decode discovered image HTML entities - by @harlan-zw in [**~~https://github.com/nuxt-modules/sitemap/issues/628~~**](https://github.com/nuxt-modules/sitemap/issues/628) [`**(7f58e)**`](https://github.com/nuxt-modules/sitemap/commit/7f58e6f) ##### [**~~View changes on GitHub~~**](https://github.com/nuxt-modules/sitemap/compare/v8.2.1...v8.2.2) - [AI Ready](https://nuxtseo.com/docs/ai-ready/getting-started/introduction)last weekv1.5.1 ### 🐞 Bug Fixes - Write markdown twins beside trailing slash routes - by @harlan-zw in [**~~https://github.com/harlan-zw/nuxt-ai-ready/issues/39~~**](https://github.com/harlan-zw/nuxt-ai-ready/issues/39) [`**(33ebd)**`](https://github.com/harlan-zw/nuxt-ai-ready/commit/33ebdee) - **prerender**: Always render HTML for prerender requests - by @harlan-zw in [**~~https://github.com/harlan-zw/nuxt-ai-ready/issues/36~~**](https://github.com/harlan-zw/nuxt-ai-ready/issues/36) and [**~~https://github.com/harlan-zw/nuxt-ai-ready/issues/37~~**](https://github.com/harlan-zw/nuxt-ai-ready/issues/37) [`**(39ff3)**`](https://github.com/harlan-zw/nuxt-ai-ready/commit/39ff3d8) ##### [**~~View changes on GitHub~~**](https://github.com/harlan-zw/nuxt-ai-ready/compare/v1.5.0...v1.5.1) - [Link Checker](https://nuxtseo.com/docs/link-checker/getting-started/introduction)last weekv5.1.2** Latest **### 🐞 Bug Fixes - Fold [**~~www~~**](http://www). - by @harlan-zw [`**(b3beb)**`](https://github.com/harlan-zw/nuxt-link-checker/commit/b3beb0a) ##### [**~~View changes on GitHub~~**](https://github.com/harlan-zw/nuxt-link-checker/compare/v5.1.1...v5.1.2) - [Schema.org](https://nuxtseo.com/docs/schema-org/getting-started/introduction)last weekv6.2.2 ### 🐞 Bug Fixes - Export schema-org v2 vue helpers - by @harlan-zw in [**~~https://github.com/harlan-zw/nuxt-schema-org/issues/130~~**](https://github.com/harlan-zw/nuxt-schema-org/issues/130) [`**(9cab5)**`](https://github.com/harlan-zw/nuxt-schema-org/commit/9cab54d) ### 🏎 Performance - **devtools**: Move nuxtseo-layer-devtools to dev dep - by @harlan-zw in [**~~https://github.com/harlan-zw/nuxt-schema-org/issues/128~~**](https://github.com/harlan-zw/nuxt-schema-org/issues/128) [`**(19808)**`](https://github.com/harlan-zw/nuxt-schema-org/commit/1980874) ##### [**~~View changes on GitHub~~**](https://github.com/harlan-zw/nuxt-schema-org/compare/v6.2.1...v6.2.2) - [Site Config](https://nuxtseo.com/docs/site-config/getting-started/introduction)last weekv4.1.1** Latest **### 🐞 Bug Fixes - Hydrate site config in spa mode - by @harlan-zw in [**~~https://github.com/harlan-zw/nuxt-site-config/issues/98~~**](https://github.com/harlan-zw/nuxt-site-config/issues/98) [`**(b9e6b)**`](https://github.com/harlan-zw/nuxt-site-config/commit/b9e6b2a) ### 🏎 Performance - **devtools**: Move nuxtseo-layer-devtools to dev dep - by @harlan-zw in [**~~https://github.com/harlan-zw/nuxt-site-config/issues/97~~**](https://github.com/harlan-zw/nuxt-site-config/issues/97) [`**(bc072)**`](https://github.com/harlan-zw/nuxt-site-config/commit/bc072be) ##### [**~~View changes on GitHub~~**](https://github.com/harlan-zw/nuxt-site-config/compare/v4.1.0...v4.1.1) - [Nuxt SEO](https://nuxtseo.com/docs/nuxt-seo/getting-started/introduction)last weekv5.3.1 ### 🐞 Bug Fixes - **devtools**: Quiter build output - by @harlan-zw [`**(b87ef)**`](https://github.com/harlan-zw/nuxt-seo/commit/b87ef12) ##### [**~~View changes on GitHub~~**](https://github.com/harlan-zw/nuxt-seo/compare/v5.3.0...v5.3.1) - [AI Ready](https://nuxtseo.com/docs/ai-ready/getting-started/introduction)last weekv1.5.0 ### 🚀 Features - Allow omitting Content-Usage from robots.txt - by @harlan-zw in [**~~https://github.com/harlan-zw/nuxt-ai-ready/issues/33~~**](https://github.com/harlan-zw/nuxt-ai-ready/issues/33) [`**(17ff7)**`](https://github.com/harlan-zw/nuxt-ai-ready/commit/17ff7be) ### 🐞 Bug Fixes - Repair pnpm workspace catalog - by @harlan-zw [`**(c2713)**`](https://github.com/harlan-zw/nuxt-ai-ready/commit/c2713be) - **db**: Fall back to writable temp dir for read-only libsql file db - by @harlan-zw in [**~~https://github.com/harlan-zw/nuxt-ai-ready/issues/35~~**](https://github.com/harlan-zw/nuxt-ai-ready/issues/35) [`**(60f89)**`](https://github.com/harlan-zw/nuxt-ai-ready/commit/60f89d8) - **i18n**: Use absolute hreflang link URLs - by @harlan-zw in [**~~https://github.com/harlan-zw/nuxt-ai-ready/issues/34~~**](https://github.com/harlan-zw/nuxt-ai-ready/issues/34) [`**(7b474)**`](https://github.com/harlan-zw/nuxt-ai-ready/commit/7b474fa) ##### [**~~View changes on GitHub~~**](https://github.com/harlan-zw/nuxt-ai-ready/compare/v1.4.0...v1.5.0) - [OG Image](https://nuxtseo.com/docs/og-image/getting-started/introduction)last weekv6.7.0 ### 🚀 Features - Support Takumi v2 compatibility - by @harlan-zw in [**~~https://github.com/nuxt-modules/og-image/issues/635~~**](https://github.com/nuxt-modules/og-image/issues/635) [`**(065ac)**`](https://github.com/nuxt-modules/og-image/commit/065ac3e8) - Sign og image urls by default - by @harlan-zw in [**~~https://github.com/nuxt-modules/og-image/issues/638~~**](https://github.com/nuxt-modules/og-image/issues/638) [`**(e6c5b)**`](https://github.com/nuxt-modules/og-image/commit/e6c5b53c) ### 🐞 Bug Fixes - Point Takumi installs at v2 beta - by @harlan-zw in [**~~https://github.com/nuxt-modules/og-image/issues/636~~**](https://github.com/nuxt-modules/og-image/issues/636) [`**(5aa6d)**`](https://github.com/nuxt-modules/og-image/commit/5aa6dbf0) - Prevent unauthenticated SSRF via font URL parameter - by @harlan-zw in [**~~https://github.com/nuxt-modules/og-image/issues/637~~**](https://github.com/nuxt-modules/og-image/issues/637) [`**(243ca)**`](https://github.com/nuxt-modules/og-image/commit/243cac22) ##### [**~~View changes on GitHub~~**](https://github.com/nuxt-modules/og-image/compare/v6.6.0...v6.7.0) - [Link Checker](https://nuxtseo.com/docs/link-checker/getting-started/introduction)2 weeks agov5.1.1 _No significant changes_##### [**~~View changes on GitHub~~**](https://github.com/harlan-zw/nuxt-link-checker/compare/v5.1.0...v5.1.1) - [Skew Protection](https://nuxtseo.com/docs/skew-protection/getting-started/introduction)2 weeks agov1.3.0** Latest **### 🚀 Features - Base path support - by @harlan-zw in [**~~https://github.com/harlan-zw/nuxt-skew-protection/issues/16~~**](https://github.com/harlan-zw/nuxt-skew-protection/issues/16) [`**(29ced)**`](https://github.com/harlan-zw/nuxt-skew-protection/commit/29ced77) ##### [**~~View changes on GitHub~~**](https://github.com/harlan-zw/nuxt-skew-protection/compare/v1.2.0...v1.3.0) - [Robots](https://nuxtseo.com/docs/robots/getting-started/introduction)3 weeks agov6.1.1 _No significant changes_##### [**~~View changes on GitHub~~**](https://github.com/nuxt-modules/robots/compare/v6.1.0...v6.1.1) - [Sitemap](https://nuxtseo.com/docs/sitemap/getting-started/introduction)3 weeks agov8.2.1 _No significant changes_##### [**~~View changes on GitHub~~**](https://github.com/nuxt-modules/sitemap/compare/v8.2.0...v8.2.1) - [Nuxt SEO](https://nuxtseo.com/docs/nuxt-seo/getting-started/introduction)3 weeks agov5.3.0 ### 🚀 Features - **devtools**: Provision UI toolchain on demand via nuxtseo-devtools - by @harlan-zw [`**(ab5e0)**`](https://github.com/harlan-zw/nuxt-seo/commit/ab5e04f) ### 🐞 Bug Fixes - **devtools**: - Reactive module update-check (version matching) - by @harlan-zw in [**~~https://github.com/harlan-zw/nuxt-seo/issues/577~~**](https://github.com/harlan-zw/nuxt-seo/issues/577) [`**(07f9c)**`](https://github.com/harlan-zw/nuxt-seo/commit/07f9c2b) - Guard possibly-undefined subprocess from startSubprocess - by @harlan-zw [`**(34545)**`](https://github.com/harlan-zw/nuxt-seo/commit/345458c) ### 🏎 Performance - **devtools**: Install devtools layer on demand - by @harlan-zw in [**~~https://github.com/harlan-zw/nuxt-seo/issues/578~~**](https://github.com/harlan-zw/nuxt-seo/issues/578) [`**(0e54d)**`](https://github.com/harlan-zw/nuxt-seo/commit/0e54d9b) ##### [**~~View changes on GitHub~~**](https://github.com/harlan-zw/nuxt-seo/compare/v5.2.6...v5.3.0) - [Skew Protection](https://nuxtseo.com/docs/skew-protection/getting-started/introduction)3 weeks agov1.2.0 ### 🚀 Features - **devtools**: Ship devtools as a layer - by @harlan-zw in [**~~https://github.com/harlan-zw/nuxt-skew-protection/issues/15~~**](https://github.com/harlan-zw/nuxt-skew-protection/issues/15) [`**(89861)**`](https://github.com/harlan-zw/nuxt-skew-protection/commit/8986120) ##### [**~~View changes on GitHub~~**](https://github.com/harlan-zw/nuxt-skew-protection/compare/v1.1.1...v1.2.0) - [Link Checker](https://nuxtseo.com/docs/link-checker/getting-started/introduction)3 weeks agov5.1.0 ### 🚀 Features - **devtools**: Ship devtools as a layer - by @harlan-zw in [**~~https://github.com/harlan-zw/nuxt-link-checker/issues/90~~**](https://github.com/harlan-zw/nuxt-link-checker/issues/90) [`**(a3c07)**`](https://github.com/harlan-zw/nuxt-link-checker/commit/a3c07cd) ##### [**~~View changes on GitHub~~**](https://github.com/harlan-zw/nuxt-link-checker/compare/v5.0.10...v5.1.0) - [OG Image](https://nuxtseo.com/docs/og-image/getting-started/introduction)3 weeks agov6.6.0 ### 🚀 Features - **devtools**: Ship devtools as a layer - by @harlan-zw in [**~~https://github.com/nuxt-modules/og-image/issues/630~~**](https://github.com/nuxt-modules/og-image/issues/630) [`**(d1a9b)**`](https://github.com/nuxt-modules/og-image/commit/d1a9b3c1) ### 🐞 Bug Fixes - Scope WebP warning to satori renderer only - by @canstand in [**~~https://github.com/nuxt-modules/og-image/issues/631~~**](https://github.com/nuxt-modules/og-image/issues/631) [`**(5622e)**`](https://github.com/nuxt-modules/og-image/commit/5622e440) - **devtools**: Exclude dist + devOnly debug + ^5.2.4 - by @harlan-zw in [**~~https://github.com/nuxt-modules/og-image/issues/632~~**](https://github.com/nuxt-modules/og-image/issues/632) [`**(25e64)**`](https://github.com/nuxt-modules/og-image/commit/25e6421d) ##### [**~~View changes on GitHub~~**](https://github.com/nuxt-modules/og-image/compare/v6.5.3...v6.6.0) - [SEO Utils](https://nuxtseo.com/docs/seo-utils/getting-started/introduction)3 weeks agov8.3.1** Latest ** _No significant changes_##### [**~~View changes on GitHub~~**](https://github.com/harlan-zw/nuxt-seo-utils/compare/v8.3.0...v8.3.1) - [Schema.org](https://nuxtseo.com/docs/schema-org/getting-started/introduction)3 weeks agov6.2.1 _No significant changes_##### [**~~View changes on GitHub~~**](https://github.com/harlan-zw/nuxt-schema-org/compare/v6.2.0...v6.2.1) - [Robots](https://nuxtseo.com/docs/robots/getting-started/introduction)3 weeks agov6.1.0 ### 🚀 Features - **devtools**: - Ship devtools as a layer - by @harlan-zw in [**~~https://github.com/nuxt-modules/robots/issues/301~~**](https://github.com/nuxt-modules/robots/issues/301) [`**(d8683)**`](https://github.com/nuxt-modules/robots/commit/d868362) - Use layer - by @harlan-zw [`**(b565c)**`](https://github.com/nuxt-modules/robots/commit/b565c9b) ### 🐞 Bug Fixes - **ci**: Use bare package names in minimumReleaseAgeExclude - by @harlan-zw [`**(b7405)**`](https://github.com/nuxt-modules/robots/commit/b74058f) - **devtools**: Exclude dist from typecheck, bump layer to 5.2.4 - by @harlan-zw in [**~~https://github.com/nuxt-modules/robots/issues/302~~**](https://github.com/nuxt-modules/robots/issues/302) [`**(ce757)**`](https://github.com/nuxt-modules/robots/commit/ce75791) ##### [**~~View changes on GitHub~~**](https://github.com/nuxt-modules/robots/compare/v6.0.9...v6.1.0) - [AI Ready](https://nuxtseo.com/docs/ai-ready/getting-started/introduction)3 weeks agov1.4.0 ### 🚀 Features - **devtools**: Ship devtools as a layer - by @harlan-zw in [**~~https://github.com/harlan-zw/nuxt-ai-ready/issues/29~~**](https://github.com/harlan-zw/nuxt-ai-ready/issues/29) [`**(6556e)**`](https://github.com/harlan-zw/nuxt-ai-ready/commit/6556e95) ##### [**~~View changes on GitHub~~**](https://github.com/harlan-zw/nuxt-ai-ready/compare/v1.3.9...v1.4.0) - [Sitemap](https://nuxtseo.com/docs/sitemap/getting-started/introduction)3 weeks agov8.2.0 ### 🚀 Features - **devtools**: Ship devtools as a layer - by @harlan-zw in [**~~https://github.com/nuxt-modules/sitemap/issues/620~~**](https://github.com/nuxt-modules/sitemap/issues/620) [`**(10bba)**`](https://github.com/nuxt-modules/sitemap/commit/10bba1d) ### 🐞 Bug Fixes - Include prerendered pages with no `**_sitemap**` - by @harlan-zw in [**~~https://github.com/nuxt-modules/sitemap/issues/624~~**](https://github.com/nuxt-modules/sitemap/issues/624) and [**~~https://github.com/nuxt-modules/sitemap/issues/625~~**](https://github.com/nuxt-modules/sitemap/issues/625) [`**(341c3)**`](https://github.com/nuxt-modules/sitemap/commit/341c3e1) - **devtools**: Typecheck-exclude + state re-fetch + real types + ^5.2.4 - by @harlan-zw in [**~~https://github.com/nuxt-modules/sitemap/issues/622~~**](https://github.com/nuxt-modules/sitemap/issues/622) [`**(05196)**`](https://github.com/nuxt-modules/sitemap/commit/0519695) - **i18n**: Avoid locale sitemap prefix collisions - by @harlan-zw in [**~~https://github.com/nuxt-modules/sitemap/issues/623~~**](https://github.com/nuxt-modules/sitemap/issues/623) [`**(760d3)**`](https://github.com/nuxt-modules/sitemap/commit/760d3b7) ##### [**~~View changes on GitHub~~**](https://github.com/nuxt-modules/sitemap/compare/v8.1.0...v8.2.0) - [Nuxt SEO](https://nuxtseo.com/docs/nuxt-seo/getting-started/introduction)3 weeks agov5.2.6 ### 🐞 Bug Fixes - **devtools**: Build client on demand without npx and surface progress - by @harlan-zw in [**~~https://github.com/harlan-zw/nuxt-seo/issues/576~~**](https://github.com/harlan-zw/nuxt-seo/issues/576) [`**(de615)**`](https://github.com/harlan-zw/nuxt-seo/commit/de61547) ##### [**~~View changes on GitHub~~**](https://github.com/harlan-zw/nuxt-seo/compare/v5.2.5...v5.2.6) - [Nuxt SEO](https://nuxtseo.com/docs/nuxt-seo/getting-started/introduction)3 weeks agov5.2.5 ### 🐞 Bug Fixes - **devtools**: Show all installed modules in the picker - by @harlan-zw in [**~~https://github.com/harlan-zw/nuxt-seo/issues/575~~**](https://github.com/harlan-zw/nuxt-seo/issues/575) [`**(20127)**`](https://github.com/harlan-zw/nuxt-seo/commit/2012746) ##### [**~~View changes on GitHub~~**](https://github.com/harlan-zw/nuxt-seo/compare/v5.2.4...v5.2.5) - [Nuxt SEO](https://nuxtseo.com/docs/nuxt-seo/getting-started/introduction)3 weeks agov5.2.4 ### 🐞 Bug Fixes - **devtools-layer**: Constrain rpc generics to object - by @harlan-zw [`**(82b2a)**`](https://github.com/harlan-zw/nuxt-seo/commit/82b2a94) ##### [**~~View changes on GitHub~~**](https://github.com/harlan-zw/nuxt-seo/compare/v5.2.3...v5.2.4) - [Site Config](https://nuxtseo.com/docs/site-config/getting-started/introduction)3 weeks agov4.1.0 ### 🚀 Features - **devtools**: Ship devtools as a layer - by @harlan-zw in [**~~https://github.com/harlan-zw/nuxt-site-config/issues/96~~**](https://github.com/harlan-zw/nuxt-site-config/issues/96) [`**(fcbb3)**`](https://github.com/harlan-zw/nuxt-site-config/commit/fcbb328) ##### [**~~View changes on GitHub~~**](https://github.com/harlan-zw/nuxt-site-config/compare/v4.0.8...v4.1.0) - [SEO Utils](https://nuxtseo.com/docs/seo-utils/getting-started/introduction)3 weeks agov8.3.0 ### 🚀 Features - **devtools**: Ship devtools as a layer - by @harlan-zw in [**~~https://github.com/harlan-zw/nuxt-seo-utils/issues/117~~**](https://github.com/harlan-zw/nuxt-seo-utils/issues/117) [`**(28b4c)**`](https://github.com/harlan-zw/nuxt-seo-utils/commit/28b4c10) ### 🐞 Bug Fixes - **test**: - Add vue as explicit devDependency - by @harlan-zw [`**(8605b)**`](https://github.com/harlan-zw/nuxt-seo-utils/commit/8605bb8) - Pin vue to 3.5.35 in compat-v2 fixture - by @harlan-zw [`**(d3062)**`](https://github.com/harlan-zw/nuxt-seo-utils/commit/d306266) ##### [**~~View changes on GitHub~~**](https://github.com/harlan-zw/nuxt-seo-utils/compare/v8.2.1...v8.3.0) - [Nuxt SEO](https://nuxtseo.com/docs/nuxt-seo/getting-started/introduction)3 weeks agov5.2.3 ### 🐞 Bug Fixes - **devtools**: - Wait for shiki - by @harlan-zw in [**~~https://github.com/harlan-zw/nuxt-seo/issues/572~~**](https://github.com/harlan-zw/nuxt-seo/issues/572) [`**(4b1cd)**`](https://github.com/harlan-zw/nuxt-seo/commit/4b1cddc) - Resolve 1 parent down - by @harlan-zw [`**(88140)**`](https://github.com/harlan-zw/nuxt-seo/commit/88140de) ##### [**~~View changes on GitHub~~**](https://github.com/harlan-zw/nuxt-seo/compare/v5.2.2...v5.2.3) - [Schema.org](https://nuxtseo.com/docs/schema-org/getting-started/introduction)3 weeks agov6.2.0 ### 🚀 Features - **devtools**: Ship devtools as a layer - by @harlan-zw in [**~~https://github.com/harlan-zw/nuxt-schema-org/issues/123~~**](https://github.com/harlan-zw/nuxt-schema-org/issues/123) [`**(5f314)**`](https://github.com/harlan-zw/nuxt-schema-org/commit/5f3147f) ### 🐞 Bug Fixes - Inline v2 schema-org copy to survive prod dependency trace - by @harlan-zw in [**~~https://github.com/harlan-zw/nuxt-schema-org/issues/122~~**](https://github.com/harlan-zw/nuxt-schema-org/issues/122) [`**(e9267)**`](https://github.com/harlan-zw/nuxt-schema-org/commit/e926775) - Vendor `**@unhead/schema-org**` majors, drop npm-alias dep - by @harlan-zw in [**~~https://github.com/harlan-zw/nuxt-schema-org/issues/126~~**](https://github.com/harlan-zw/nuxt-schema-org/issues/126) [`**(9c376)**`](https://github.com/harlan-zw/nuxt-schema-org/commit/9c3764b) ##### [**~~View changes on GitHub~~**](https://github.com/harlan-zw/nuxt-schema-org/compare/v6.1.3...v6.2.0) - [Nuxt SEO](https://nuxtseo.com/docs/nuxt-seo/getting-started/introduction)3 weeks agov5.2.1 _No significant changes_##### [**~~View changes on GitHub~~**](https://github.com/harlan-zw/nuxt-seo/compare/v5.2.0...v5.2.1) - [Nuxt SEO](https://nuxtseo.com/docs/nuxt-seo/getting-started/introduction)3 weeks agov5.2.2 ### 🐞 Bug Fixes - **devtools**: Version-resilient host adapter for client connections - by @harlan-zw in [**~~https://github.com/harlan-zw/nuxt-seo/issues/568~~**](https://github.com/harlan-zw/nuxt-seo/issues/568) [`**(d5abc)**`](https://github.com/harlan-zw/nuxt-seo/commit/d5abc2f) ##### [**~~View changes on GitHub~~**](https://github.com/harlan-zw/nuxt-seo/compare/v5.2.1...v5.2.2) - [Nuxt SEO](https://nuxtseo.com/docs/nuxt-seo/getting-started/introduction)4 weeks agov5.2.0 ### 🚀 Features - **devtools**: Unified devtools client + design alignment - by @harlan-zw in [**~~https://github.com/harlan-zw/nuxt-seo/issues/566~~**](https://github.com/harlan-zw/nuxt-seo/issues/566) [`**(7e7d3)**`](https://github.com/harlan-zw/nuxt-seo/commit/7e7d364) ### 🐞 Bug Fixes - **devtools**: Keep setupDevToolsUI backward compatible + bundle carbon icons - by @harlan-zw in [**~~https://github.com/harlan-zw/nuxt-seo/issues/567~~**](https://github.com/harlan-zw/nuxt-seo/issues/567) [`**(7464e)**`](https://github.com/harlan-zw/nuxt-seo/commit/7464ed7) ##### [**~~View changes on GitHub~~**](https://github.com/harlan-zw/nuxt-seo/compare/v5.1.4...v5.2.0) - [AI Ready](https://nuxtseo.com/docs/ai-ready/getting-started/introduction)4 weeks agov1.3.9 ### 🐞 Bug Fixes - Handle read-only filesystems and sitemap indexes at runtime - by @harlan-zw in [**~~https://github.com/harlan-zw/nuxt-ai-ready/issues/28~~**](https://github.com/harlan-zw/nuxt-ai-ready/issues/28) [`**(2f175)**`](https://github.com/harlan-zw/nuxt-ai-ready/commit/2f175e8) ##### [**~~View changes on GitHub~~**](https://github.com/harlan-zw/nuxt-ai-ready/compare/v1.3.8...v1.3.9) - [AI Ready](https://nuxtseo.com/docs/ai-ready/getting-started/introduction)4 weeks agov1.3.8 ### 🐞 Bug Fixes - Fail fast when better-sqlite3 is missing for the sqlite driver - by @harlan-zw in [**~~https://github.com/harlan-zw/nuxt-ai-ready/issues/27~~**](https://github.com/harlan-zw/nuxt-ai-ready/issues/27) [`**(5b0e3)**`](https://github.com/harlan-zw/nuxt-ai-ready/commit/5b0e37e) ##### [**~~View changes on GitHub~~**](https://github.com/harlan-zw/nuxt-ai-ready/compare/v1.3.7...v1.3.8) - [SEO Utils](https://nuxtseo.com/docs/seo-utils/getting-started/introduction)4 weeks agov8.2.1 ### 🐞 Bug Fixes - Detect renderer's unhead major for useSeoMeta treeshake - by @harlan-zw in [**~~https://github.com/harlan-zw/nuxt-seo-utils/issues/114~~**](https://github.com/harlan-zw/nuxt-seo-utils/issues/114) [`**(c7716)**`](https://github.com/harlan-zw/nuxt-seo-utils/commit/c77162b) ##### [**~~View changes on GitHub~~**](https://github.com/harlan-zw/nuxt-seo-utils/compare/v8.2.0...v8.2.1) - [SEO Utils](https://nuxtseo.com/docs/seo-utils/getting-started/introduction)4 weeks agov8.2.0 ### 🚀 Features - Support unhead v2 and v3 - by @harlan-zw in [**~~https://github.com/harlan-zw/nuxt-seo-utils/issues/113~~**](https://github.com/harlan-zw/nuxt-seo-utils/issues/113) [`**(03127)**`](https://github.com/harlan-zw/nuxt-seo-utils/commit/0312796) ### 🐞 Bug Fixes - Preserve descendant combinator in selector functions during CSS minify - by @harlan-zw in [**~~https://github.com/harlan-zw/nuxt-seo-utils/issues/112~~**](https://github.com/harlan-zw/nuxt-seo-utils/issues/112) [`**(d63a2)**`](https://github.com/harlan-zw/nuxt-seo-utils/commit/d63a294) ##### [**~~View changes on GitHub~~**](https://github.com/harlan-zw/nuxt-seo-utils/compare/v8.1.11...v8.2.0) - [Sitemap](https://nuxtseo.com/docs/sitemap/getting-started/introduction)4 weeks agov8.1.0 ### 🚀 Features - Support @nuxtjs/i18n experimental compactRoutes - by @harlan-zw in [**~~https://github.com/nuxt-modules/sitemap/issues/618~~**](https://github.com/nuxt-modules/sitemap/issues/618) [`**(48f65)**`](https://github.com/nuxt-modules/sitemap/commit/48f658f) ### 🐞 Bug Fixes - Degrade gracefully when content DB query fails on serverless - by @harlan-zw in [**~~https://github.com/nuxt-modules/sitemap/issues/619~~**](https://github.com/nuxt-modules/sitemap/issues/619) [`**(8c7d0)**`](https://github.com/nuxt-modules/sitemap/commit/8c7d062) - Sync lockfile for unbuild catalog specifier - by @harlan-zw [`**(cb18b)**`](https://github.com/nuxt-modules/sitemap/commit/cb18be9) ##### [**~~View changes on GitHub~~**](https://github.com/nuxt-modules/sitemap/compare/v8.0.15...v8.1.0) - [Nuxt SEO](https://nuxtseo.com/docs/nuxt-seo/getting-started/introduction)4 weeks agov5.1.4 ### 🚀 Features - Add Stackblitz starter examples - by @harlan-zw in [**~~https://github.com/harlan-zw/nuxt-seo/issues/549~~**](https://github.com/harlan-zw/nuxt-seo/issues/549) [`**(3c2f2)**`](https://github.com/harlan-zw/nuxt-seo/commit/3c2f2b5) ### 🐞 Bug Fixes - Raise nuxt-og-image compatibility floor to >=6.4.4 - by @harlan-zw in [**~~https://github.com/harlan-zw/nuxt-seo/issues/560~~**](https://github.com/harlan-zw/nuxt-seo/issues/560) [`**(c47ba)**`](https://github.com/harlan-zw/nuxt-seo/commit/c47ba2c) - **content**: - Re-export define* fns from sub modules - by @harlan-zw [`**(d8eb7)**`](https://github.com/harlan-zw/nuxt-seo/commit/d8eb73b) - **shared**: - Support i18n compact routes - by @harlan-zw in [**~~https://github.com/harlan-zw/nuxt-seo/issues/558~~**](https://github.com/harlan-zw/nuxt-seo/issues/558) [`**(330f6)**`](https://github.com/harlan-zw/nuxt-seo/commit/330f669) - Add resolveHostUnheadMajor helper - by @harlan-zw in [**~~https://github.com/harlan-zw/nuxt-seo/issues/561~~**](https://github.com/harlan-zw/nuxt-seo/issues/561) [`**(af7f9)**`](https://github.com/harlan-zw/nuxt-seo/commit/af7f927) - ResolveHostUnheadMajor searches nuxt install for pnpm - by @harlan-zw in [**~~https://github.com/harlan-zw/nuxt-seo/issues/563~~**](https://github.com/harlan-zw/nuxt-seo/issues/563) [`**(31f41)**`](https://github.com/harlan-zw/nuxt-seo/commit/31f4171) - Prefer nitro unhead for host detection - by @harlan-zw in [**~~https://github.com/harlan-zw/nuxt-seo/issues/564~~**](https://github.com/harlan-zw/nuxt-seo/issues/564) [`**(83bf4)**`](https://github.com/harlan-zw/nuxt-seo/commit/83bf402) ##### [**~~View changes on GitHub~~**](https://github.com/harlan-zw/nuxt-seo/compare/v5.1.3...v5.1.4) - [OG Image](https://nuxtseo.com/docs/og-image/getting-started/introduction)4 weeks agov6.5.3 ### 🐞 Bug Fixes - Escape `**"**` when inlining `` rules into `**style**` attr - by @danielroe in [**~~https://github.com/nuxt-modules/og-image/issues/629~~**](https://github.com/nuxt-modules/og-image/issues/629) [`**(c6cd3)**`](https://github.com/nuxt-modules/og-image/commit/c6cd3c7d) - Use sfc parser to find outer `` bounds - by @danielroe in [**~~https://github.com/nuxt-modules/og-image/issues/628~~**](https://github.com/nuxt-modules/og-image/issues/628) [`**(607fd)**`](https://github.com/nuxt-modules/og-image/commit/607fd9d9) ##### [**~~View changes on GitHub~~**](https://github.com/nuxt-modules/og-image/compare/v6.5.2...v6.5.3) - [Schema.org](https://nuxtseo.com/docs/schema-org/getting-started/introduction)4 weeks agov6.1.3 ### 🐞 Bug Fixes - Prefer nitro unhead for schema-org vendor - by @harlan-zw in [**~~https://github.com/harlan-zw/nuxt-schema-org/issues/121~~**](https://github.com/harlan-zw/nuxt-schema-org/issues/121) [`**(be520)**`](https://github.com/harlan-zw/nuxt-schema-org/commit/be520d1) - Serialize schema org identity config - by @harlan-zw in [**~~https://github.com/harlan-zw/nuxt-schema-org/issues/120~~**](https://github.com/harlan-zw/nuxt-schema-org/issues/120) [`**(e0878)**`](https://github.com/harlan-zw/nuxt-schema-org/commit/e08780a) ##### [**~~View changes on GitHub~~**](https://github.com/harlan-zw/nuxt-schema-org/compare/v6.1.2...v6.1.3) - [Schema.org](https://nuxtseo.com/docs/schema-org/getting-started/introduction)4 weeks agov6.1.2 ### 🐞 Bug Fixes - Detect host unhead major from nuxt's location under pnpm - by @harlan-zw in [**~~https://github.com/harlan-zw/nuxt-schema-org/issues/116~~**](https://github.com/harlan-zw/nuxt-schema-org/issues/116) [`**(bd366)**`](https://github.com/harlan-zw/nuxt-schema-org/commit/bd366da) ##### [**~~View changes on GitHub~~**](https://github.com/harlan-zw/nuxt-schema-org/compare/v6.1.1...v6.1.2) - [Schema.org](https://nuxtseo.com/docs/schema-org/getting-started/introduction)4 weeks agov6.1.1 ### 🐞 Bug Fixes - Align @unhead/schema-org major with host unhead - by @harlan-zw in [**~~https://github.com/harlan-zw/nuxt-schema-org/issues/114~~**](https://github.com/harlan-zw/nuxt-schema-org/issues/114) and [**~~https://github.com/harlan-zw/nuxt-schema-org/issues/115~~**](https://github.com/harlan-zw/nuxt-schema-org/issues/115) [`**(02be6)**`](https://github.com/harlan-zw/nuxt-schema-org/commit/02be6cf) ##### [**~~View changes on GitHub~~**](https://github.com/harlan-zw/nuxt-schema-org/compare/v6.1.0...v6.1.1) - [Schema.org](https://nuxtseo.com/docs/schema-org/getting-started/introduction)last monthv6.1.0 ### 🚀 Features - Support Unhead Vue v3 - by @harlan-zw in [**~~https://github.com/harlan-zw/nuxt-schema-org/issues/113~~**](https://github.com/harlan-zw/nuxt-schema-org/issues/113) [`**(88d94)**`](https://github.com/harlan-zw/nuxt-schema-org/commit/88d94a9) ### 🐞 Bug Fixes - Move devtools-only deps to devDependencies - by @harlan-zw [`**(db427)**`](https://github.com/harlan-zw/nuxt-schema-org/commit/db42719) ##### [**~~View changes on GitHub~~**](https://github.com/harlan-zw/nuxt-schema-org/compare/v6.0.4...v6.1.0) - [OG Image](https://nuxtseo.com/docs/og-image/getting-started/introduction)last monthv6.5.2 ### 🐞 Bug Fixes - Block embedded-IPv4 IPv6 bypasses - by @harlan-zw in [**~~https://github.com/nuxt-modules/og-image/issues/624~~**](https://github.com/nuxt-modules/og-image/issues/624) [`**(984df)**`](https://github.com/nuxt-modules/og-image/commit/984dfeec) - Resolve #og-image alias when no subpath is given - by @harlan-zw in [**~~https://github.com/nuxt-modules/og-image/issues/615~~**](https://github.com/nuxt-modules/og-image/issues/615) and [**~~https://github.com/nuxt-modules/og-image/issues/617~~**](https://github.com/nuxt-modules/og-image/issues/617) [`**(ba5df)**`](https://github.com/nuxt-modules/og-image/commit/ba5df609) - Skip renderer prompt in non-interactive environments - by @harlan-zw in [**~~https://github.com/nuxt-modules/og-image/issues/623~~**](https://github.com/nuxt-modules/og-image/issues/623) [`**(45222)**`](https://github.com/nuxt-modules/og-image/commit/452229af) - Degrade gracefully when cache backend is unreachable - by @harlan-zw in [**~~https://github.com/nuxt-modules/og-image/issues/613~~**](https://github.com/nuxt-modules/og-image/issues/613) and [**~~https://github.com/nuxt-modules/og-image/issues/619~~**](https://github.com/nuxt-modules/og-image/issues/619) [`**(a4154)**`](https://github.com/nuxt-modules/og-image/commit/a41548d7) - Skip runtime buffer cache during prerender - by @harlan-zw in [**~~https://github.com/nuxt-modules/og-image/issues/613~~**](https://github.com/nuxt-modules/og-image/issues/613) and [**~~https://github.com/nuxt-modules/og-image/issues/626~~**](https://github.com/nuxt-modules/og-image/issues/626) [`**(f5ae4)**`](https://github.com/nuxt-modules/og-image/commit/f5ae450e) - **content**: Declare zod as optional peer dependency - by @harlan-zw in [**~~https://github.com/nuxt-modules/og-image/issues/622~~**](https://github.com/nuxt-modules/og-image/issues/622) and [**~~https://github.com/nuxt-modules/og-image/issues/625~~**](https://github.com/nuxt-modules/og-image/issues/625) [`**(75bbb)**`](https://github.com/nuxt-modules/og-image/commit/75bbb058) ##### [**~~View changes on GitHub~~**](https://github.com/nuxt-modules/og-image/compare/v6.5.1...v6.5.2) - [Robots](https://nuxtseo.com/docs/robots/getting-started/introduction)last monthv6.0.9 ### 🐞 Bug Fixes - **types**: Broken nuxt v4 check - by @harlan-zw in [**~~https://github.com/nuxt-modules/robots/issues/300~~**](https://github.com/nuxt-modules/robots/issues/300) [`**(4b023)**`](https://github.com/nuxt-modules/robots/commit/4b02314) ##### [**~~View changes on GitHub~~**](https://github.com/nuxt-modules/robots/compare/v6.0.8...v6.0.9) - [OG Image](https://nuxtseo.com/docs/og-image/getting-started/introduction)2 months agov6.5.1 ### 🐞 Bug Fixes - Nuxt 4.4.6 island validation - by @harlan-zw [`**(7a28d)**`](https://github.com/nuxt-modules/og-image/commit/7a28d322) ##### [**~~View changes on GitHub~~**](https://github.com/nuxt-modules/og-image/compare/v6.5.0...v6.5.1) - [AI Ready](https://nuxtseo.com/docs/ai-ready/getting-started/introduction)2 months agov1.3.7 ### 🐞 Bug Fixes - Possible CI hang - by @harlan-zw [`**(60fd4)**`](https://github.com/harlan-zw/nuxt-ai-ready/commit/60fd4c6) ##### [**~~View changes on GitHub~~**](https://github.com/harlan-zw/nuxt-ai-ready/compare/v1.3.6...v1.3.7) - [AI Ready](https://nuxtseo.com/docs/ai-ready/getting-started/introduction)2 months agov1.3.6 ### 🐞 Bug Fixes - **markdown**: URL-encode paths in Link header to keep ASCII-only - by @harlan-zw [`**(60b16)**`](https://github.com/harlan-zw/nuxt-ai-ready/commit/60b1616) ##### [**~~View changes on GitHub~~**](https://github.com/harlan-zw/nuxt-ai-ready/compare/v1.3.4...v1.3.6) - [AI Ready](https://nuxtseo.com/docs/ai-ready/getting-started/introduction)2 months agov1.3.4 ### 🐞 Bug Fixes - **indexnow**: Chunk route IN clause to respect D1 100-param cap - by @harlan-zw [`**(16257)**`](https://github.com/harlan-zw/nuxt-ai-ready/commit/16257d6) ##### [**~~View changes on GitHub~~**](https://github.com/harlan-zw/nuxt-ai-ready/compare/v1.3.2...v1.3.4) - [AI Ready](https://nuxtseo.com/docs/ai-ready/getting-started/introduction)2 months agov1.3.2 ### 🐞 Bug Fixes - Honor markdown header - by @divine in [**~~https://github.com/harlan-zw/nuxt-ai-ready/issues/26~~**](https://github.com/harlan-zw/nuxt-ai-ready/issues/26) [`**(0e4c5)**`](https://github.com/harlan-zw/nuxt-ai-ready/commit/0e4c51a) ##### [**~~View changes on GitHub~~**](https://github.com/harlan-zw/nuxt-ai-ready/compare/v1.3.1...v1.3.2) - [AI Ready](https://nuxtseo.com/docs/ai-ready/getting-started/introduction)2 months agov1.3.1 ### 🐞 Bug Fixes - Broken middleware - by @harlan-zw [`**(22f40)**`](https://github.com/harlan-zw/nuxt-ai-ready/commit/22f404e) ##### [**~~View changes on GitHub~~**](https://github.com/harlan-zw/nuxt-ai-ready/compare/v1.3.0...v1.3.1) - [OG Image](https://nuxtseo.com/docs/og-image/getting-started/introduction)2 months agov6.5.0 ### 🚀 Features - **nuxt-ui**: Color mode aware token resolution via `**data-theme**` - by @harlan-zw in [**~~https://github.com/nuxt-modules/og-image/issues/598~~**](https://github.com/nuxt-modules/og-image/issues/598) [`**(82cec)**`](https://github.com/nuxt-modules/og-image/commit/82cec81e) ### 🐞 Bug Fixes - **fonts**: - Skip fontaine fallbacks - by @harlan-zw [`**(aa330)**`](https://github.com/nuxt-modules/og-image/commit/aa33012c) - **takumi**: - Treat single-entry variable fonts as axis-driven (defensive) - by @harlan-zw in [**~~https://github.com/nuxt-modules/og-image/issues/599~~**](https://github.com/nuxt-modules/og-image/issues/599) [`**(c053a)**`](https://github.com/nuxt-modules/og-image/commit/c053a795) - Keep variable WOFF2 over per-weight static fallback - by @harlan-zw in [**~~https://github.com/nuxt-modules/og-image/issues/600~~**](https://github.com/nuxt-modules/og-image/issues/600) [`**(31f3b)**`](https://github.com/nuxt-modules/og-image/commit/31f3bb7c) ##### [**~~View changes on GitHub~~**](https://github.com/nuxt-modules/og-image/compare/v6.4.11...v6.5.0) - [OG Image](https://nuxtseo.com/docs/og-image/getting-started/introduction)2 months agov6.4.11 ### 🐞 Bug Fixes - Resolve configured local fonts for OG images - by @harlan-zw in [**~~https://github.com/nuxt-modules/og-image/issues/597~~**](https://github.com/nuxt-modules/og-image/issues/597) [`**(9d1cb)**`](https://github.com/nuxt-modules/og-image/commit/9d1cbdd2) ##### [**~~View changes on GitHub~~**](https://github.com/nuxt-modules/og-image/compare/v6.4.10...v6.4.11) - [OG Image](https://nuxtseo.com/docs/og-image/getting-started/introduction)2 months agov6.4.10 ### 🐞 Bug Fixes - More helpful font warnings - by @harlan-zw [`**(78ca9)**`](https://github.com/nuxt-modules/og-image/commit/78ca997b) - Resolve Cloudflare runtime og image secret - by @harlan-zw in [**~~https://github.com/nuxt-modules/og-image/issues/596~~**](https://github.com/nuxt-modules/og-image/issues/596) [`**(0a6f4)**`](https://github.com/nuxt-modules/og-image/commit/0a6f4084) ##### [**~~View changes on GitHub~~**](https://github.com/nuxt-modules/og-image/compare/v6.4.9...v6.4.10) - [OG Image](https://nuxtseo.com/docs/og-image/getting-started/introduction)2 months agov6.4.9 ### 🐞 Bug Fixes - Runtime secret override via NUXT_OG_IMAGE_SECRET - by @harlan-zw in [**~~https://github.com/nuxt-modules/og-image/issues/593~~**](https://github.com/nuxt-modules/og-image/issues/593) [`**(611af)**`](https://github.com/nuxt-modules/og-image/commit/611af827) - Harden takumi WASM lock and expand Server-Timing instrumentation - by @harlan-zw in [**~~https://github.com/nuxt-modules/og-image/issues/592~~**](https://github.com/nuxt-modules/og-image/issues/592) [`**(94fb6)**`](https://github.com/nuxt-modules/og-image/commit/94fb65df) - **security**: Harden SSRF guard with redirect validation and IPv6 coverage - by @harlan-zw in [**~~https://github.com/nuxt-modules/og-image/issues/594~~**](https://github.com/nuxt-modules/og-image/issues/594) [`**(79db6)**`](https://github.com/nuxt-modules/og-image/commit/79db60f1) ##### [**~~View changes on GitHub~~**](https://github.com/nuxt-modules/og-image/compare/v6.4.8...v6.4.9) - [Sitemap](https://nuxtseo.com/docs/sitemap/getting-started/introduction)2 months agov8.0.15 ### 🏎 Performance - Share resolved-URL cache across sitemap chunks - by @harlan-zw in [**~~https://github.com/nuxt-modules/sitemap/issues/612~~**](https://github.com/nuxt-modules/sitemap/issues/612) [`**(b131f)**`](https://github.com/nuxt-modules/sitemap/commit/b131fa4) ##### [**~~View changes on GitHub~~**](https://github.com/nuxt-modules/sitemap/compare/v8.0.14...v8.0.15) - [Link Checker](https://nuxtseo.com/docs/link-checker/getting-started/introduction)2 months agov5.0.10 ### 🐞 Bug Fixes - Filter non-own rule messages from markdown processor - by @harlan-zw in [**~~https://github.com/harlan-zw/nuxt-link-checker/issues/88~~**](https://github.com/harlan-zw/nuxt-link-checker/issues/88) [`**(b443f)**`](https://github.com/harlan-zw/nuxt-link-checker/commit/b443ff3) ##### [**~~View changes on GitHub~~**](https://github.com/harlan-zw/nuxt-link-checker/compare/v5.0.9...v5.0.10) - [Sitemap](https://nuxtseo.com/docs/sitemap/getting-started/introduction)2 months agov8.0.14 ### 🐞 Bug Fixes - Escape all user-provided XML fields - by @harlan-zw in [**~~https://github.com/nuxt-modules/sitemap/issues/610~~**](https://github.com/nuxt-modules/sitemap/issues/610) [`**(33398)**`](https://github.com/nuxt-modules/sitemap/commit/33398bc) ### 🏎 Performance - Split static sitemap config into virtual module - by @harlan-zw in [**~~https://github.com/nuxt-modules/sitemap/issues/608~~**](https://github.com/nuxt-modules/sitemap/issues/608) [`**(9ef0a)**`](https://github.com/nuxt-modules/sitemap/commit/9ef0a8e) - Lazy load `**fast-xml-parser**` in parseSitemapIndex - by @harlan-zw in [**~~https://github.com/nuxt-modules/sitemap/issues/609~~**](https://github.com/nuxt-modules/sitemap/issues/609) [`**(a3ee4)**`](https://github.com/nuxt-modules/sitemap/commit/a3ee4a6) ##### [**~~View changes on GitHub~~**](https://github.com/nuxt-modules/sitemap/compare/v8.0.13...v8.0.14) - [AI Ready](https://nuxtseo.com/docs/ai-ready/getting-started/introduction)2 months agov1.3.0 ### 🚀 Features - I18n integration - by @harlan-zw in [**~~https://github.com/harlan-zw/nuxt-ai-ready/issues/24~~**](https://github.com/harlan-zw/nuxt-ai-ready/issues/24) [`**(a32b2)**`](https://github.com/harlan-zw/nuxt-ai-ready/commit/a32b2c7) - @nuxt/content integration - by @harlan-zw in [**~~https://github.com/harlan-zw/nuxt-ai-ready/issues/25~~**](https://github.com/harlan-zw/nuxt-ai-ready/issues/25) [`**(10f42)**`](https://github.com/harlan-zw/nuxt-ai-ready/commit/10f427f) ### 🐞 Bug Fixes - Redirect to .md on Accept negotiation; document CDN limitation - by @harlan-zw in [**~~https://github.com/harlan-zw/nuxt-ai-ready/issues/23~~**](https://github.com/harlan-zw/nuxt-ai-ready/issues/23) [`**(9ba23)**`](https://github.com/harlan-zw/nuxt-ai-ready/commit/9ba2343) ##### [**~~View changes on GitHub~~**](https://github.com/harlan-zw/nuxt-ai-ready/compare/v1.2.0...v1.3.0) - [OG Image](https://nuxtseo.com/docs/og-image/getting-started/introduction)2 months agov6.4.8 ### 🐞 Bug Fixes - **takumi**: Restore non-latin glyph support regressed in v6.2.0 - by @harlan-zw in [**~~https://github.com/nuxt-modules/og-image/issues/587~~**](https://github.com/nuxt-modules/og-image/issues/587) [`**(0b5e6)**`](https://github.com/nuxt-modules/og-image/commit/0b5e621e) ##### [**~~View changes on GitHub~~**](https://github.com/nuxt-modules/og-image/compare/v6.4.7...v6.4.8) - [AI Ready](https://nuxtseo.com/docs/ai-ready/getting-started/introduction)2 months agov1.2.0 ### 🚀 Features - Vercel agent-readability frontmatter and friendly 404 markdown - by @harlan-zw in [**~~https://github.com/harlan-zw/nuxt-ai-ready/issues/21~~**](https://github.com/harlan-zw/nuxt-ai-ready/issues/21) [`**(9d281)**`](https://github.com/harlan-zw/nuxt-ai-ready/commit/9d28196) ### 🐞 Bug Fixes - RFC-compliant content negotiation - by @harlan-zw in [**~~https://github.com/harlan-zw/nuxt-ai-ready/issues/19~~**](https://github.com/harlan-zw/nuxt-ai-ready/issues/19) [`**(36fd4)**`](https://github.com/harlan-zw/nuxt-ai-ready/commit/36fd439) ##### [**~~View changes on GitHub~~**](https://github.com/harlan-zw/nuxt-ai-ready/compare/v1.1.2...v1.2.0) - [OG Image](https://nuxtseo.com/docs/og-image/getting-started/introduction)2 months agov6.4.7 ### 🐞 Bug Fixes - **takumi**: Dedupe variable fonts so weights vary correctly - by @harlan-zw in [**~~https://github.com/nuxt-modules/og-image/issues/585~~**](https://github.com/nuxt-modules/og-image/issues/585) [`**(be325)**`](https://github.com/nuxt-modules/og-image/commit/be32596e) ##### [**~~View changes on GitHub~~**](https://github.com/nuxt-modules/og-image/compare/v6.4.6...v6.4.7) - [Robots](https://nuxtseo.com/docs/robots/getting-started/introduction)2 months agov6.0.8 ### 🐞 Bug Fixes - Augment NitroRouteConfig on both nitropack module paths - by @harlan-zw in [**~~https://github.com/nuxt-modules/robots/issues/295~~**](https://github.com/nuxt-modules/robots/issues/295) [`**(d0421)**`](https://github.com/nuxt-modules/robots/commit/d042115) ##### [**~~View changes on GitHub~~**](https://github.com/nuxt-modules/robots/compare/v6.0.7...v6.0.8) - [SEO Utils](https://nuxtseo.com/docs/seo-utils/getting-started/introduction)2 months agov8.1.11 _No significant changes_##### [**~~View changes on GitHub~~**](https://github.com/harlan-zw/nuxt-seo-utils/compare/v8.1.10...v8.1.11) - [SEO Utils](https://nuxtseo.com/docs/seo-utils/getting-started/introduction)2 months agov8.1.10 ### 🐞 Bug Fixes - Resolve @unhead/bundler + align vite plugin with nuxt 4.5 - by @harlan-zw in [**~~https://github.com/harlan-zw/nuxt-seo-utils/issues/109~~**](https://github.com/harlan-zw/nuxt-seo-utils/issues/109) [`**(b5d90)**`](https://github.com/harlan-zw/nuxt-seo-utils/commit/b5d90b8) ##### [**~~View changes on GitHub~~**](https://github.com/harlan-zw/nuxt-seo-utils/compare/v8.1.9...v8.1.10) - [OG Image](https://nuxtseo.com/docs/og-image/getting-started/introduction)2 months agov6.4.6 ### 🐞 Bug Fixes - IMessage Preview displaying multiple images - by @captnCC and **johanneskees** in [**~~https://github.com/nuxt-modules/og-image/issues/584~~**](https://github.com/nuxt-modules/og-image/issues/584) [`**(55336)**`](https://github.com/nuxt-modules/og-image/commit/55336baf) ##### [**~~View changes on GitHub~~**](https://github.com/nuxt-modules/og-image/compare/v6.4.5...v6.4.6) - [AI Ready](https://nuxtseo.com/docs/ai-ready/getting-started/introduction)2 months agov1.1.3 ### 🐞 Bug Fixes - RFC-compliant content negotiation - by @harlan-zw [`**(5e8df)**`](https://github.com/harlan-zw/nuxt-ai-ready/commit/5e8df80) ##### [**~~View changes on GitHub~~**](https://github.com/harlan-zw/nuxt-ai-ready/compare/v1.1.2...v1.1.3) - [OG Image](https://nuxtseo.com/docs/og-image/getting-started/introduction)2 months agov6.4.5 ### 🐞 Bug Fixes - **takumi**: Serialize WASM calls - by @harlan-zw in [**~~https://github.com/nuxt-modules/og-image/issues/583~~**](https://github.com/nuxt-modules/og-image/issues/583) [`**(7e935)**`](https://github.com/nuxt-modules/og-image/commit/7e9354fd) ##### [**~~View changes on GitHub~~**](https://github.com/nuxt-modules/og-image/compare/v6.4.4...v6.4.5) - [OG Image](https://nuxtseo.com/docs/og-image/getting-started/introduction)2 months agov6.4.4 ### 🐞 Bug Fixes - **devtools**: Safe broadcasting - by @harlan-zw [`**(0fbb5)**`](https://github.com/nuxt-modules/og-image/commit/0fbb5226) ##### [**~~View changes on GitHub~~**](https://github.com/nuxt-modules/og-image/compare/v6.4.3...v6.4.4) - [OG Image](https://nuxtseo.com/docs/og-image/getting-started/introduction)3 months agov6.4.3 ### 🐞 Bug Fixes - Dispose prior og:image head entry on client navigation - by @harlan-zw [`**(d709e)**`](https://github.com/nuxt-modules/og-image/commit/d709ecf1) - Add image fetch timeouts and Server-Timing instrumentation - by @harlan-zw in [**~~https://github.com/nuxt-modules/og-image/issues/581~~**](https://github.com/nuxt-modules/og-image/issues/581) [`**(6ae9a)**`](https://github.com/nuxt-modules/og-image/commit/6ae9a616) ##### [**~~View changes on GitHub~~**](https://github.com/nuxt-modules/og-image/compare/v6.4.2...v6.4.3) - [SEO Utils](https://nuxtseo.com/docs/seo-utils/getting-started/introduction)3 months agov8.1.9 ### 🐞 Bug Fixes - Support unhead v3 alongside v2 - by @harlan-zw in [**~~https://github.com/harlan-zw/nuxt-seo-utils/issues/106~~**](https://github.com/harlan-zw/nuxt-seo-utils/issues/106) [`**(5dfeb)**`](https://github.com/harlan-zw/nuxt-seo-utils/commit/5dfebe5) - Respect existing title separator - by @harlan-zw in [**~~https://github.com/harlan-zw/nuxt-seo-utils/issues/107~~**](https://github.com/harlan-zw/nuxt-seo-utils/issues/107) [`**(45a82)**`](https://github.com/harlan-zw/nuxt-seo-utils/commit/45a825d) ##### [**~~View changes on GitHub~~**](https://github.com/harlan-zw/nuxt-seo-utils/compare/v8.1.8...v8.1.9) - [Sitemap](https://nuxtseo.com/docs/sitemap/getting-started/introduction)3 months agov8.0.13 ### 🐞 Bug Fixes - Skip cache during prerender to prevent empty sitemap - by @harlan-zw in [**~~https://github.com/nuxt-modules/sitemap/issues/604~~**](https://github.com/nuxt-modules/sitemap/issues/604) [`**(b4570)**`](https://github.com/nuxt-modules/sitemap/commit/b457026) ##### [**~~View changes on GitHub~~**](https://github.com/nuxt-modules/sitemap/compare/v8.0.12...v8.0.13) - [OG Image](https://nuxtseo.com/docs/og-image/getting-started/introduction)3 months agov6.4.2 ### 🐞 Bug Fixes - Support @unhead/vue v3 - by @harlan-zw in [**~~https://github.com/nuxt-modules/og-image/issues/577~~**](https://github.com/nuxt-modules/og-image/issues/577) [`**(53d49)**`](https://github.com/nuxt-modules/og-image/commit/53d49f9c) - Remove auto SWR route rules; only set cache-control headers - by @harlan-zw in [**~~https://github.com/nuxt-modules/og-image/issues/579~~**](https://github.com/nuxt-modules/og-image/issues/579) [`**(834b1)**`](https://github.com/nuxt-modules/og-image/commit/834b1a0f) ##### [**~~View changes on GitHub~~**](https://github.com/nuxt-modules/og-image/compare/v6.4.1...v6.4.2) - [SEO Utils](https://nuxtseo.com/docs/seo-utils/getting-started/introduction)3 months agov8.1.8 ### 🐞 Bug Fixes - Run prerender minify via nitro render:html for CSP compat - by @harlan-zw in [**~~https://github.com/harlan-zw/nuxt-seo-utils/issues/105~~**](https://github.com/harlan-zw/nuxt-seo-utils/issues/105) [`**(ce1ef)**`](https://github.com/harlan-zw/nuxt-seo-utils/commit/ce1ef36) ##### [**~~View changes on GitHub~~**](https://github.com/harlan-zw/nuxt-seo-utils/compare/v8.1.7...v8.1.8) - [OG Image](https://nuxtseo.com/docs/og-image/getting-started/introduction)3 months agov6.4.1 ### 🐞 Bug Fixes - Update `**og:image**` on client-side navigation - by @harlan-zw in [**~~https://github.com/nuxt-modules/og-image/issues/575~~**](https://github.com/nuxt-modules/og-image/issues/575) [`**(f8cdc)**`](https://github.com/nuxt-modules/og-image/commit/f8cdc32e) ##### [**~~View changes on GitHub~~**](https://github.com/nuxt-modules/og-image/compare/v6.4.0...v6.4.1) - [OG Image](https://nuxtseo.com/docs/og-image/getting-started/introduction)3 months agov6.4.0 ### 🚀 Features - Add `**/_og/r/**` resolver endpoint - by @harlan-zw in [**~~https://github.com/nuxt-modules/og-image/issues/572~~**](https://github.com/nuxt-modules/og-image/issues/572) [`**(3aa76)**`](https://github.com/nuxt-modules/og-image/commit/3aa76445) ### 🐞 Bug Fixes - Avoid leaking useHead title into og:image URL - by @harlan-zw in [**~~https://github.com/nuxt-modules/og-image/issues/573~~**](https://github.com/nuxt-modules/og-image/issues/573) and [**~~https://github.com/nuxt-modules/og-image/issues/574~~**](https://github.com/nuxt-modules/og-image/issues/574) [`**(1902f)**`](https://github.com/nuxt-modules/og-image/commit/1902f67b) ##### [**~~View changes on GitHub~~**](https://github.com/nuxt-modules/og-image/compare/v6.3.10...v6.4.0) - [Link Checker](https://nuxtseo.com/docs/link-checker/getting-started/introduction)3 months agov5.0.9 ### 🐞 Bug Fixes - Exclude `**/llms.txt**` paths - by @harlan-zw [`**(67f80)**`](https://github.com/harlan-zw/nuxt-link-checker/commit/67f807d) ##### [**~~View changes on GitHub~~**](https://github.com/harlan-zw/nuxt-link-checker/compare/v5.0.8...v5.0.9) - [OG Image](https://nuxtseo.com/docs/og-image/getting-started/introduction)3 months agov6.3.10 _No significant changes_##### [**~~View changes on GitHub~~**](https://github.com/nuxt-modules/og-image/compare/v6.3.9...v6.3.10) - [Nuxt SEO](https://nuxtseo.com/docs/nuxt-seo/getting-started/introduction)3 months agov5.1.3 ### 🐞 Bug Fixes - **devtools**: Broken og image checklist - by @harlan-zw [`**(160f5)**`](https://github.com/harlan-zw/nuxt-seo/commit/160f5c8) ##### [**~~View changes on GitHub~~**](https://github.com/harlan-zw/nuxt-seo/compare/v5.1.2...v5.1.3) - [Robots](https://nuxtseo.com/docs/robots/getting-started/introduction)3 months agov6.0.7 ### 🐞 Bug Fixes - Move devtools-only deps to devDependencies - by @harlan-zw [`**(d5f87)**`](https://github.com/nuxt-modules/robots/commit/d5f87aa) ##### [**~~View changes on GitHub~~**](https://github.com/nuxt-modules/robots/compare/v6.0.6...v6.0.7) - [OG Image](https://nuxtseo.com/docs/og-image/getting-started/introduction)3 months agov6.3.9 ### 🐞 Bug Fixes - Fallback to internal handler when font origin is unreachable - by @harlan-zw in [**~~https://github.com/nuxt-modules/og-image/issues/566~~**](https://github.com/nuxt-modules/og-image/issues/566) [`**(3224a)**`](https://github.com/nuxt-modules/og-image/commit/3224a674) ##### [**~~View changes on GitHub~~**](https://github.com/nuxt-modules/og-image/compare/v6.3.8...v6.3.9) - [OG Image](https://nuxtseo.com/docs/og-image/getting-started/introduction)3 months agov6.3.8 ### 🐞 Bug Fixes - Resolve object literal bindings to inline CSS - by @harlan-zw in [**~~https://github.com/nuxt-modules/og-image/issues/562~~**](https://github.com/nuxt-modules/og-image/issues/562) [`**(60c85)**`](https://github.com/nuxt-modules/og-image/commit/60c85db6) - Misc cache improvements - by @harlan-zw in [**~~https://github.com/nuxt-modules/og-image/issues/564~~**](https://github.com/nuxt-modules/og-image/issues/564) [`**(0c530)**`](https://github.com/nuxt-modules/og-image/commit/0c5308c6) ##### [**~~View changes on GitHub~~**](https://github.com/nuxt-modules/og-image/compare/v6.3.7...v6.3.8) - [OG Image](https://nuxtseo.com/docs/og-image/getting-started/introduction)3 months agov6.3.7 ### 🐞 Bug Fixes - **prerender**: Compat issue with html validator - by @harlan-zw [`**(51aa0)**`](https://github.com/nuxt-modules/og-image/commit/51aa00d3) ##### [**~~View changes on GitHub~~**](https://github.com/nuxt-modules/og-image/compare/v6.3.6...v6.3.7) - [OG Image](https://nuxtseo.com/docs/og-image/getting-started/introduction)3 months agov6.3.6 ### 🐞 Bug Fixes - **prerender**: Edge cases in option caching - by @harlan-zw [`**(93ab1)**`](https://github.com/nuxt-modules/og-image/commit/93ab1c67) ##### [**~~View changes on GitHub~~**](https://github.com/nuxt-modules/og-image/compare/v6.3.5...v6.3.6) - [OG Image](https://nuxtseo.com/docs/og-image/getting-started/introduction)3 months agov6.3.5 ### 🐞 Bug Fixes - **prerender**: Sign dynamic URLs in strict mode and handle orphan hashes - by @harlan-zw in [**~~https://github.com/nuxt-modules/og-image/issues/560~~**](https://github.com/nuxt-modules/og-image/issues/560) [`**(7a9f0)**`](https://github.com/nuxt-modules/og-image/commit/7a9f03e4) ##### [**~~View changes on GitHub~~**](https://github.com/nuxt-modules/og-image/compare/v6.3.4...v6.3.5) - [OG Image](https://nuxtseo.com/docs/og-image/getting-started/introduction)3 months agov6.3.4 ### 🐞 Bug Fixes - Add missing nitro presets to compatibility map - by @harlan-zw in [**~~https://github.com/nuxt-modules/og-image/issues/559~~**](https://github.com/nuxt-modules/og-image/issues/559) [`**(c06cc)**`](https://github.com/nuxt-modules/og-image/commit/c06ccd04) ##### [**~~View changes on GitHub~~**](https://github.com/nuxt-modules/og-image/compare/v6.3.3...v6.3.4) - [Site Config](https://nuxtseo.com/docs/site-config/getting-started/introduction)3 months agov4.0.8 ### 🐞 Bug Fixes - **types**: Preserve named keys in SiteConfigInput - by @harlan-zw in [**~~https://github.com/harlan-zw/nuxt-site-config/issues/93~~**](https://github.com/harlan-zw/nuxt-site-config/issues/93) [`**(7b968)**`](https://github.com/harlan-zw/nuxt-site-config/commit/7b968a5) ##### [**~~View changes on GitHub~~**](https://github.com/harlan-zw/nuxt-site-config/compare/v4.0.7...v4.0.8) - [Link Checker](https://nuxtseo.com/docs/link-checker/getting-started/introduction)3 months agov5.0.8 ### 🐞 Bug Fixes - Move devtools-only deps to devDependencies - by @harlan-zw [`**(8821c)**`](https://github.com/harlan-zw/nuxt-link-checker/commit/8821cb6) - Add app.baseUrl to the excludeLinks list - by @khatastroffik in [**~~https://github.com/harlan-zw/nuxt-link-checker/issues/85~~**](https://github.com/harlan-zw/nuxt-link-checker/issues/85) [`**(4681b)**`](https://github.com/harlan-zw/nuxt-link-checker/commit/4681be4) ##### [**~~View changes on GitHub~~**](https://github.com/harlan-zw/nuxt-link-checker/compare/v5.0.7...v5.0.8) - [Nuxt SEO](https://nuxtseo.com/docs/nuxt-seo/getting-started/introduction)3 months agov5.1.2 _No significant changes_##### [**~~View changes on GitHub~~**](https://github.com/harlan-zw/nuxt-seo/compare/v5.1.1...v5.1.2) - [OG Image](https://nuxtseo.com/docs/og-image/getting-started/introduction)3 months agov6.3.3 ### 🐞 Bug Fixes - Expand variable font weights for all renderers - by @harlan-zw and **Claude Opus 4.6 (1M context)** in [**~~https://github.com/nuxt-modules/og-image/issues/549~~**](https://github.com/nuxt-modules/og-image/issues/549) [`**(fc30b)**`](https://github.com/nuxt-modules/og-image/commit/fc30b4f3) - Fall back across unicode-range font subsets for CJK rendering - by @harlan-zw in [**~~https://github.com/nuxt-modules/og-image/issues/554~~**](https://github.com/nuxt-modules/og-image/issues/554) [`**(57788)**`](https://github.com/nuxt-modules/og-image/commit/57788dba) - Auto-inject title and description from useSeoMeta into OG image props - by @harlan-zw [`**(b4290)**`](https://github.com/nuxt-modules/og-image/commit/b4290b37) - Use Takumi `**no-bundler**` path so binary not included when `**zeroRuntime: true**` - by @kane50613 and @harlan-zw in [**~~https://github.com/nuxt-modules/og-image/issues/556~~**](https://github.com/nuxt-modules/og-image/issues/556) [`**(b5cd7)**`](https://github.com/nuxt-modules/og-image/commit/b5cd7c6c) - Move devtools-only deps to devDependencies - by @harlan-zw [`**(0ea13)**`](https://github.com/nuxt-modules/og-image/commit/0ea13015) ##### [**~~View changes on GitHub~~**](https://github.com/nuxt-modules/og-image/compare/v6.3.2...v6.3.3) - [SEO Utils](https://nuxtseo.com/docs/seo-utils/getting-started/introduction)3 months agov8.1.7 ### 🐞 Bug Fixes - Use `**'low'**` alias for default tagPriority - by @harlan-zw in [**~~https://github.com/harlan-zw/nuxt-seo-utils/issues/104~~**](https://github.com/harlan-zw/nuxt-seo-utils/issues/104) [`**(c6e3b)**`](https://github.com/harlan-zw/nuxt-seo-utils/commit/c6e3bca) - Move devtools-only deps to devDependencies - by @harlan-zw [`**(e7d54)**`](https://github.com/harlan-zw/nuxt-seo-utils/commit/e7d546e) ##### [**~~View changes on GitHub~~**](https://github.com/harlan-zw/nuxt-seo-utils/compare/v8.1.6...v8.1.7) - [Sitemap](https://nuxtseo.com/docs/sitemap/getting-started/introduction)3 months agov8.0.12 ### 🐞 Bug Fixes - Move devtools-only deps to devDependencies - by @harlan-zw and **Claude Opus 4.6 (1M context)** in [**~~https://github.com/nuxt-modules/sitemap/issues/598~~**](https://github.com/nuxt-modules/sitemap/issues/598) [`**(0bbca)**`](https://github.com/nuxt-modules/sitemap/commit/0bbca72) - **content**: - Use passed zod instance in buildSchema callback - by @harlan-zw and **Claude Opus 4.6 (1M context)** in [**~~https://github.com/nuxt-modules/sitemap/issues/597~~**](https://github.com/nuxt-modules/sitemap/issues/597) [`**(b18da)**`](https://github.com/nuxt-modules/sitemap/commit/b18da47) - Warn on zod resolution issues - by @harlan-zw [`**(a3802)**`](https://github.com/nuxt-modules/sitemap/commit/a3802bc) ##### [**~~View changes on GitHub~~**](https://github.com/nuxt-modules/sitemap/compare/v8.0.11...v8.0.12) - [Nuxt SEO](https://nuxtseo.com/docs/nuxt-seo/getting-started/introduction)3 months agov5.1.1 ### 🐞 Bug Fixes - Use default export condition, add attw - by @harlan-zw and **Claude Opus 4.6 (1M context)** in [**~~https://github.com/harlan-zw/nuxt-seo/issues/527~~**](https://github.com/harlan-zw/nuxt-seo/issues/527) [`**(3c458)**`](https://github.com/harlan-zw/nuxt-seo/commit/3c4584c) - **devtools**: - Broken version check - by @harlan-zw [`**(f774c)**`](https://github.com/harlan-zw/nuxt-seo/commit/f774ccd) - Correct site-config debug endpoint URL - by @harlan-zw and **Claude Opus 4.6 (1M context)** in [**~~https://github.com/harlan-zw/nuxt-seo/issues/526~~**](https://github.com/harlan-zw/nuxt-seo/issues/526) [`**(3f387)**`](https://github.com/harlan-zw/nuxt-seo/commit/3f38776) - **shared**: - Handle zod version conflicts gracefully - by @harlan-zw [`**(e2ff4)**`](https://github.com/harlan-zw/nuxt-seo/commit/e2ff480) ##### [**~~View changes on GitHub~~**](https://github.com/harlan-zw/nuxt-seo/compare/v5.1.0...v5.1.1) - [Link Checker](https://nuxtseo.com/docs/link-checker/getting-started/introduction)3 months agov5.0.7 ### 🐞 Bug Fixes - **devtool**: Item status alignment - by @khatastroffik in [**~~https://github.com/harlan-zw/nuxt-link-checker/issues/81~~**](https://github.com/harlan-zw/nuxt-link-checker/issues/81) [`**(96d22)**`](https://github.com/harlan-zw/nuxt-link-checker/commit/96d22d4) - **markdown**: Change return value of preprocess when no links exist - by @dargmuesli in [**~~https://github.com/harlan-zw/nuxt-link-checker/issues/82~~**](https://github.com/harlan-zw/nuxt-link-checker/issues/82) [`**(98390)**`](https://github.com/harlan-zw/nuxt-link-checker/commit/98390f0) ##### [**~~View changes on GitHub~~**](https://github.com/harlan-zw/nuxt-link-checker/compare/v5.0.6...v5.0.7) - [SEO Utils](https://nuxtseo.com/docs/seo-utils/getting-started/introduction)3 months agov8.1.6 ### 🐞 Bug Fixes - Pass --pnpm to pkg-pr-new so catalog: specifiers are resolved - by @harlan-zw and **Claude Opus 4.6 (1M context)** [`**(20596)**`](https://github.com/harlan-zw/nuxt-seo-utils/commit/20596d9) ##### [**~~View changes on GitHub~~**](https://github.com/harlan-zw/nuxt-seo-utils/compare/v8.1.5...v8.1.6) - [OG Image](https://nuxtseo.com/docs/og-image/getting-started/introduction)3 months agov6.3.2 _No significant changes_##### [**~~View changes on GitHub~~**](https://github.com/nuxt-modules/og-image/compare/v6.3.1...v6.3.2) - [Skew Protection](https://nuxtseo.com/docs/skew-protection/getting-started/introduction)3 months agov1.1.1 ### 🐞 Bug Fixes - Infinite ping pong - by @harlan-zw [`**(800cc)**`](https://github.com/harlan-zw/nuxt-skew-protection/commit/800cc0c) ##### [**~~View changes on GitHub~~**](https://github.com/harlan-zw/nuxt-skew-protection/compare/v1.1.0...v1.1.1) - [AI Ready](https://nuxtseo.com/docs/ai-ready/getting-started/introduction)3 months agov1.1.2 _No significant changes_##### [**~~View changes on GitHub~~**](https://github.com/harlan-zw/nuxt-ai-ready/compare/v1.1.1...v1.1.2) - [AI Ready](https://nuxtseo.com/docs/ai-ready/getting-started/introduction)3 months agov1.1.1 _No significant changes_##### [**~~View changes on GitHub~~**](https://github.com/nuxt-seo-pro/nuxt-ai-ready/compare/v1.1.0...v1.1.1) - [SEO Utils](https://nuxtseo.com/docs/seo-utils/getting-started/introduction)3 months agov8.1.5 ### 🐞 Bug Fixes - Set og:locale at low priority so i18n can override - by @harlan-zw in [**~~https://github.com/harlan-zw/nuxt-seo-utils/issues/102~~**](https://github.com/harlan-zw/nuxt-seo-utils/issues/102) [`**(5633a)**`](https://github.com/harlan-zw/nuxt-seo-utils/commit/5633ac0) ##### [**~~View changes on GitHub~~**](https://github.com/harlan-zw/nuxt-seo-utils/compare/v8.1.4...v8.1.5) - [SEO Utils](https://nuxtseo.com/docs/seo-utils/getting-started/introduction)3 months agov8.1.4 ### 🐞 Bug Fixes - Support empty `**canonicalQueryWhitelist**` override - by @harlan-zw [`**(aa555)**`](https://github.com/harlan-zw/nuxt-seo-utils/commit/aa55573) ##### [**~~View changes on GitHub~~**](https://github.com/harlan-zw/nuxt-seo-utils/compare/v8.1.3...v8.1.4) - [Sitemap](https://nuxtseo.com/docs/sitemap/getting-started/introduction)3 months agov8.0.10 _No significant changes_##### [**~~View changes on GitHub~~**](https://github.com/nuxt-modules/sitemap/compare/v8.0.9...v8.0.10) - [Sitemap](https://nuxtseo.com/docs/sitemap/getting-started/introduction)3 months agov8.0.11 ### 🐞 Bug Fixes - `**zeroRuntime**` prerender detection when no manual `**nitro.prerender.routes**` - by @harlan-zw in [**~~https://github.com/nuxt-modules/sitemap/issues/593~~**](https://github.com/nuxt-modules/sitemap/issues/593) [`**(688d1)**`](https://github.com/nuxt-modules/sitemap/commit/688d189) ##### [**~~View changes on GitHub~~**](https://github.com/nuxt-modules/sitemap/compare/v8.0.10...v8.0.11) - [Skew Protection](https://nuxtseo.com/docs/skew-protection/getting-started/introduction)3 months agov1.1.0 ### 🚨 Breaking Changes - Change license to MIT - by @harlan-zw [`**(f29ec)**`](https://github.com/nuxt-seo-pro/nuxt-skew-protection/commit/f29ecdc) ##### [**~~View changes on GitHub~~**](https://github.com/nuxt-seo-pro/nuxt-skew-protection/compare/v1.0.6...v1.1.0) - [AI Ready](https://nuxtseo.com/docs/ai-ready/getting-started/introduction)3 months agov1.1.0 ### 🚨 Breaking Changes - MIT module - by @harlan-zw [`**(c4649)**`](https://github.com/nuxt-seo-pro/nuxt-ai-ready/commit/c4649c0) ##### [**~~View changes on GitHub~~**](https://github.com/nuxt-seo-pro/nuxt-ai-ready/compare/v1.0.4...v1.1.0) - [Nuxt SEO](https://nuxtseo.com/docs/nuxt-seo/getting-started/introduction)3 months agov5.1.0 ### 🚀 Features - Skew protection + ai ready standalone - by @harlan-zw [`**(d0fc2)**`](https://github.com/harlan-zw/nuxt-seo/commit/d0fc2d1) ##### [**~~View changes on GitHub~~**](https://github.com/harlan-zw/nuxt-seo/compare/v5.0.2...v5.1.0) - [OG Image](https://nuxtseo.com/docs/og-image/getting-started/introduction)3 months agov6.3.1 ### 🐞 Bug Fixes - Prefer runtime config for secret - by @harlan-zw [`**(65196)**`](https://github.com/nuxt-modules/og-image/commit/651962d0) ##### [**~~View changes on GitHub~~**](https://github.com/nuxt-modules/og-image/compare/v6.3.0...v6.3.1) - [Link Checker](https://nuxtseo.com/docs/link-checker/getting-started/introduction)3 months agov5.0.6 ### 🐞 Bug Fixes - **eslint**: Normalize trailing slashes in valid-route and valid-sitemap-link - by @harlan-zw in [**~~https://github.com/harlan-zw/nuxt-link-checker/issues/80~~**](https://github.com/harlan-zw/nuxt-link-checker/issues/80) [`**(9cfba)**`](https://github.com/harlan-zw/nuxt-link-checker/commit/9cfbaec) ##### [**~~View changes on GitHub~~**](https://github.com/harlan-zw/nuxt-link-checker/compare/v5.0.5...v5.0.6) - [Sitemap](https://nuxtseo.com/docs/sitemap/getting-started/introduction)3 months agov8.0.9 ### 🐞 Bug Fixes - Suppress hreflang extraction from HTML when `**autoI18n: false**` - by @harlan-zw in [**~~https://github.com/nuxt-modules/sitemap/issues/589~~**](https://github.com/nuxt-modules/sitemap/issues/589) [`**(28b65)**`](https://github.com/nuxt-modules/sitemap/commit/28b6514) - Fallback to `**article:published_time**` for lastmod - by @harlan-zw in [**~~https://github.com/nuxt-modules/sitemap/issues/590~~**](https://github.com/nuxt-modules/sitemap/issues/590) [`**(f537f)**`](https://github.com/nuxt-modules/sitemap/commit/f537fde) - `**chunkSize**` config precedence over `**chunks**` number - by @harlan-zw in [**~~https://github.com/nuxt-modules/sitemap/issues/591~~**](https://github.com/nuxt-modules/sitemap/issues/591) [`**(ad522)**`](https://github.com/nuxt-modules/sitemap/commit/ad5221b) ##### [**~~View changes on GitHub~~**](https://github.com/nuxt-modules/sitemap/compare/v8.0.8...v8.0.9) - [Skew Protection](https://nuxtseo.com/docs/skew-protection/getting-started/introduction)3 months agov1.0.6 ### 🐞 Bug Fixes - Deduplicate SSE/WS reconnection version checks - by @harlan-zw in [**~~https://github.com/nuxt-seo-pro/nuxt-skew-protection/issues/13~~**](https://github.com/nuxt-seo-pro/nuxt-skew-protection/issues/13) [`**(e2f67)**`](https://github.com/nuxt-seo-pro/nuxt-skew-protection/commit/e2f6704) ##### [**~~View changes on GitHub~~**](https://github.com/nuxt-seo-pro/nuxt-skew-protection/compare/v1.0.5...v1.0.6) - [SEO Utils](https://nuxtseo.com/docs/seo-utils/getting-started/introduction)3 months agov8.1.3 ### 🐞 Bug Fixes - Meta tag file detection only matches root public dir, support layers - by @harlan-zw in [**~~https://github.com/harlan-zw/nuxt-seo-utils/issues/101~~**](https://github.com/harlan-zw/nuxt-seo-utils/issues/101) [`**(4f17e)**`](https://github.com/harlan-zw/nuxt-seo-utils/commit/4f17ef5) ##### [**~~View changes on GitHub~~**](https://github.com/harlan-zw/nuxt-seo-utils/compare/v8.1.2...v8.1.3) - [Sitemap](https://nuxtseo.com/docs/sitemap/getting-started/introduction)3 months agov8.0.8 ### 🐞 Bug Fixes - Less noisy logs - by @harlan-zw [`**(e4ef2)**`](https://github.com/nuxt-modules/sitemap/commit/e4ef2cf) ##### [**~~View changes on GitHub~~**](https://github.com/nuxt-modules/sitemap/compare/v8.0.7...v8.0.8) - [Sitemap](https://nuxtseo.com/docs/sitemap/getting-started/introduction)3 months agov8.0.7 ### 🐞 Bug Fixes - Respect `**autoI18n: false**` to suppress hreflang tag generation - by @harlan-zw in [**~~https://github.com/nuxt-modules/sitemap/issues/587~~**](https://github.com/nuxt-modules/sitemap/issues/587) [`**(ee92b)**`](https://github.com/nuxt-modules/sitemap/commit/ee92ba1) ##### [**~~View changes on GitHub~~**](https://github.com/nuxt-modules/sitemap/compare/v8.0.6...v8.0.7) - [Skew Protection](https://nuxtseo.com/docs/skew-protection/getting-started/introduction)3 months agov1.0.5 _No significant changes_##### [**~~View changes on GitHub~~**](https://github.com/nuxt-seo-pro/nuxt-skew-protection/compare/v1.0.4...v1.0.5) - [SEO Utils](https://nuxtseo.com/docs/seo-utils/getting-started/introduction)3 months agov8.1.2 ### 🐞 Bug Fixes - **devtools**: False positives - by @harlan-zw [`**(46cd8)**`](https://github.com/harlan-zw/nuxt-seo-utils/commit/46cd8c3) ##### [**~~View changes on GitHub~~**](https://github.com/harlan-zw/nuxt-seo-utils/compare/v8.1.1...v8.1.2) - [Sitemap](https://nuxtseo.com/docs/sitemap/getting-started/introduction)3 months agov8.0.6 ### 🐞 Bug Fixes - Enable debug endpoints in dev when zeroRuntime: true - by @harlan-zw [`**(86327)**`](https://github.com/nuxt-modules/sitemap/commit/863270b) ##### [**~~View changes on GitHub~~**](https://github.com/nuxt-modules/sitemap/compare/v8.0.5...v8.0.6) - [AI Ready](https://nuxtseo.com/docs/ai-ready/getting-started/introduction)3 months agov1.0.4 ### 🐞 Bug Fixes - Allow sitemap v8 - by @harlan-zw [`**(b3cff)**`](https://github.com/nuxt-seo-pro/nuxt-ai-ready/commit/b3cffca) ##### [**~~View changes on GitHub~~**](https://github.com/nuxt-seo-pro/nuxt-ai-ready/compare/v1.0.3...v1.0.4) - [AI Ready](https://nuxtseo.com/docs/ai-ready/getting-started/introduction)3 months agov1.0.3 _No significant changes_##### [**~~View changes on GitHub~~**](https://github.com/nuxt-seo-pro/nuxt-ai-ready/compare/v1.0.2...v1.0.3) - [Skew Protection](https://nuxtseo.com/docs/skew-protection/getting-started/introduction)3 months agov1.0.4 _No significant changes_##### [**~~View changes on GitHub~~**](https://github.com/nuxt-seo-pro/nuxt-skew-protection/compare/v1.0.3...v1.0.4) - [Skew Protection](https://nuxtseo.com/docs/skew-protection/getting-started/introduction)3 months agov1.0.3 ### 🐞 Bug Fixes - Broken site config import - by @harlan-zw [`**(b9d0a)**`](https://github.com/nuxt-seo-pro/nuxt-skew-protection/commit/b9d0a29) ##### [**~~View changes on GitHub~~**](https://github.com/nuxt-seo-pro/nuxt-skew-protection/compare/v1.0.2...v1.0.3) - [SEO Utils](https://nuxtseo.com/docs/seo-utils/getting-started/introduction)3 months agov8.1.1 ### 🐞 Bug Fixes - False positive on missing i18n - by @harlan-zw [`**(4abac)**`](https://github.com/harlan-zw/nuxt-seo-utils/commit/4abac6d) ##### [**~~View changes on GitHub~~**](https://github.com/harlan-zw/nuxt-seo-utils/compare/v8.1.0...v8.1.1) - [Nuxt SEO](https://nuxtseo.com/docs/nuxt-seo/getting-started/introduction)3 months agov5.0.0Major Nuxt SEO v5 bumps every sub-module to a new major version (except OG Image, which stays on v6). The common thread is the **Site Config v4** dependency; addressing those changes first will make the rest of the migration smooth. For step-by-step upgrade instructions, see the [**~~v4 to v5 migration guide~~**](https://nuxtseo.com/docs/nuxt-seo/migration-guide/v4-to-v5). ## 🛠️ DevTools Unity The biggest change in v5 is that every Nuxt SEO module now shares a single DevTools foundation through our new **shared DevTools layer** ( `**nuxtseo-layer-devtools**`). Previously each module shipped its own DevTools client with inconsistent layouts, patterns, and capabilities. In v5, all DevTools clients extend a common Nuxt layer that provides: - **Consistent layout and navigation** across every module, with a module switcher to jump between them - **Setup checklist** that validates your configuration across all installed modules, flagging required and recommended actions - **Built-in troubleshooting**, update indicators, and production mode preview in every module Nuxt SEO Utils gets a brand new DevTools client for the first time, and the DevTools for Robots, Sitemap, Schema.org, and Link Checker have all been revamped to use the shared layer. ## 🔗 ESLint Link Checking Nuxt Link Checker v5 ships an [**~~ESLint~~**](https://eslint.org) integration with zero-config `**@nuxt/eslint**` support: - `**link-checker/valid-route**` (error): validates relative URLs match known routes with "did you mean?" suggestions - `**link-checker/valid-sitemap-link**` (warn): checks URLs exist in the sitemap - Scans Vue templates, TS/JS ( `**navigateTo**`, `**router.push**`), and Markdown links If you're using `**@nuxt/eslint**`, the rules are registered automatically. Otherwise, add them manually:eslint.config.ts ``` import linkChecker from 'nuxt-link-checker/eslint' export default [ linkChecker, ] ``` Example output when a link doesn't match any route: ``` error Link "/abut" does not match any known route. Did you mean "/about"? link-checker/valid-route ``` ## 📱 Social Share Links SEO Utils v8 introduces `**useShareLinks()**`, a composable for generating social sharing URLs (Twitter, Facebook, LinkedIn, WhatsApp, Telegram, Reddit, Pinterest, Email) with built-in UTM tracking. ``` const links = useShareLinks({ title: 'Check out Nuxt SEO v5!', twitter: { via: 'harlodev', hashtags: ['nuxt', 'seo'] }, utm: { campaign: 'v5-launch' }, }) Share on X Share on LinkedIn Share on Reddit ``` ## 🖼️ Favicon Generation CLI New `**nuxt-seo-utils icons**` CLI command generates all favicon and icon variants from a single source image: ``` npx nuxt-seo-utils icons --source logo.svg ``` This generates `**favicon.ico**`, `**apple-touch-icon.png**` (180x180), and PNG icons at 16, 32, 192, and 512px from your source image in `**public/**`. Requires `**sharp**` as a dev dependency. ## ⚡ Inline Minification SEO Utils v8 automatically minifies inline scripts and styles injected via `**useHead**`. **Before** (what you write): ``` useHead({ script: [{ innerHTML: \` // Track page view window.dataLayer = window.dataLayer || []; window.dataLayer.push({ 'event': 'page_view', 'page_path': window.location.pathname }); \`, }], style: [{ innerHTML: \` /* Critical above-the-fold styles */ .hero { display: flex; align-items: center; justify-content: center; min-height: 100vh; } \`, }], }) ``` **After** (rendered HTML): ``` window.dataLayer=window.dataLayer||[];window.dataLayer.push({event:"page_view",page_path:window.location.pathname}); .hero{display:flex;align-items:center;justify-content:center;min-height:100vh} ``` ## 📄 `**definePageMeta**` Sitemap Config Sitemap v8 lets you configure sitemap options directly in `**definePageMeta**`: ``` definePageMeta({ sitemap: { changefreq: 'daily', priority: 0.8, }, }) ``` ## 🌐 i18n Multi-Sitemap Improvements Custom sitemaps are now auto-expanded per locale when using i18n multi-sitemap mode. ## 🐛 Debug Production Endpoints Several modules now expose debug endpoints in production: - Robots: `**/__robots__/debug-production.json**` - Sitemap: `**/__sitemap__/debug-production.json**` - SEO Utils: `**/__nuxt-seo-utils**`## 🏷️ Site Config Priority Constants Named priority constants are now available via `**SiteConfigPriority.runtime**`, etc. ## ⚠️ Breaking Changes All modules now depend on **Site Config v4**, which removes implicit site name inference, legacy `**site***` runtime config keys, and several deprecated server-side APIs. Several Content v3 composables have also been renamed (e.g. `**asSitemapCollection()**` → `**defineSitemapSchema()**`). See the [**~~migration guide~~**](https://nuxtseo.com/docs/nuxt-seo/migration-guide/v4-to-v5) for the full list of breaking changes and how to address them. ## 🐞 Bug Fixes ### SSR Memory Leaks Fixed - **Schema.org**: reactive scopes not being disposed - **Site Config**: computed refs in i18n plugin ### i18n Fixes - Sitemap: base URL in multi-sitemap redirect, exclude filters with base URL/i18n prefixes, respect `autoI18n: false - SEO Utils: resolve fallback page titles from translation keys ### Other Fixes - Schema.org: `**@id**` URLs now respect `**app.baseURL**`, Nuxt context preserved in computed refs - Robots: `**skipSiteIndexable**` now skips `**Disallow: /**` rules, route rules nullish guard - SEO Utils: error pages preserve user-defined titles, `**useServerSeoMeta**` takes precedence over site defaults - Sitemap: chunked sitemaps path resolution, Content v3 `**.navigation**` path filtering - Link Checker: serialize RegExp in `**excludeLinks**` for client-side filtering ## 📚 Live Examples Every module now ships standalone examples in its repository. These are real Nuxt apps that stay in sync with the latest code, so they always reflect the current API. Open any example directly in [**~~StackBlitz~~**](https://stackblitz.com): | **Module** | **Examples** | | --- | --- | | **Robots** | [**~~basic~~**](https://stackblitz.com/github/nuxt-modules/robots/tree/main/examples/basic), [**~~i18n~~**](https://stackblitz.com/github/nuxt-modules/robots/tree/main/examples/i18n), [**~~custom-rules~~**](https://stackblitz.com/github/nuxt-modules/robots/tree/main/examples/custom-rules) | | **Sitemap** | [**~~basic~~**](https://stackblitz.com/github/nuxt-modules/sitemap/tree/main/examples/basic), [**~~i18n~~**](https://stackblitz.com/github/nuxt-modules/sitemap/tree/main/examples/i18n), [**~~dynamic-urls~~**](https://stackblitz.com/github/nuxt-modules/sitemap/tree/main/examples/dynamic-urls) | | **OG Image** | [**~~basic-satori~~**](https://stackblitz.com/github/nuxt-modules/og-image/tree/main/examples/basic-satori), [**~~basic-takumi~~**](https://stackblitz.com/github/nuxt-modules/og-image/tree/main/examples/basic-takumi), [**~~content~~**](https://stackblitz.com/github/nuxt-modules/og-image/tree/main/examples/content), [**~~i18n~~**](https://stackblitz.com/github/nuxt-modules/og-image/tree/main/examples/i18n) | | **Schema.org** | [**~~basic~~**](https://stackblitz.com/github/harlan-zw/nuxt-schema-org/tree/main/examples/basic), [**~~blog~~**](https://stackblitz.com/github/harlan-zw/nuxt-schema-org/tree/main/examples/blog), [**~~e-commerce~~**](https://stackblitz.com/github/harlan-zw/nuxt-schema-org/tree/main/examples/e-commerce) | | **Link Checker** | [**~~basic~~**](https://stackblitz.com/github/harlan-zw/nuxt-link-checker/tree/main/examples/basic), [**~~broken-links~~**](https://stackblitz.com/github/harlan-zw/nuxt-link-checker/tree/main/examples/broken-links), [**~~skip-inspection~~**](https://stackblitz.com/github/harlan-zw/nuxt-link-checker/tree/main/examples/skip-inspection) | | **SEO Utils** | [**~~basic~~**](https://stackblitz.com/github/harlan-zw/nuxt-seo-utils/tree/main/examples/basic), [**~~breadcrumbs~~**](https://stackblitz.com/github/harlan-zw/nuxt-seo-utils/tree/main/examples/breadcrumbs), [**~~meta-tags~~**](https://stackblitz.com/github/harlan-zw/nuxt-seo-utils/tree/main/examples/meta-tags) | | **Site Config** | [**~~basic~~**](https://stackblitz.com/github/harlan-zw/nuxt-site-config/tree/main/examples/basic), [**~~env-driven~~**](https://stackblitz.com/github/harlan-zw/nuxt-site-config/tree/main/examples/env-driven), [**~~multi-site~~**](https://stackblitz.com/github/harlan-zw/nuxt-site-config/tree/main/examples/multi-site) | Because examples live alongside each module's source, they are always tested against the latest version and never fall out of date. ## Module Version Summary | **Module** | **v4** | **v5** | | --- | --- | --- | | `**nuxt-site-config**` | v3 | **v4** | | `**nuxt-seo-utils**` | v7 | **v8** | | `**@nuxtjs/sitemap**` | v7 | **v8** | | `**@nuxtjs/robots**` | v5 | **v6** | | `**nuxt-schema-org**` | v5 | **v6** | | `**nuxt-link-checker**` | v4 | **v5** | | `**nuxt-og-image**` | v6 | v6 _(no major change)_ | ## Changelog ### 🐞 Bug Fixes - Deprecate `**asSeoCollection**` - by @harlan-zw [`**(40d4f)**`](https://github.com/harlan-zw/nuxt-seo/commit/40d4f44) - Add publish-packages input to reusable-nightly workflow - by @harlan-zw [`**(a149d)**`](https://github.com/harlan-zw/nuxt-seo/commit/a149d17) - Make Playwright install non-fatal in reusable CI - by @harlan-zw [`**(b55b7)**`](https://github.com/harlan-zw/nuxt-seo/commit/b55b78c) - **ci**: Use >= version constraints and fix workspace key order - by @harlan-zw and **Claude Opus 4.6** [`**(c67ce)**`](https://github.com/harlan-zw/nuxt-seo/commit/c67ce91) - **shared**: Add NormalisedLocale type with _sitemap and _hreflang fields - by @harlan-zw [`**(e51be)**`](https://github.com/harlan-zw/nuxt-seo/commit/e51bec5) ##### [**~~View changes on GitHub~~**](https://github.com/harlan-zw/nuxt-seo/compare/v4.0.2...v5.0.0) - [AI Ready](https://nuxtseo.com/docs/ai-ready/getting-started/introduction)3 months agov1.0.2 _No significant changes_##### [**~~View changes on GitHub~~**](https://github.com/nuxt-seo-pro/nuxt-ai-ready/compare/v1.0.1...v1.0.2) - [Skew Protection](https://nuxtseo.com/docs/skew-protection/getting-started/introduction)3 months agov1.0.2 _No significant changes_##### [**~~View changes on GitHub~~**](https://github.com/nuxt-seo-pro/nuxt-skew-protection/compare/v1.0.1...v1.0.2) - [Schema.org](https://nuxtseo.com/docs/schema-org/getting-started/introduction)3 months agov6.0.4 ### 🐞 Bug Fixes - **devtools**: Refine - by @harlan-zw [`**(774c8)**`](https://github.com/harlan-zw/nuxt-schema-org/commit/774c874) ##### [**~~View changes on GitHub~~**](https://github.com/harlan-zw/nuxt-schema-org/compare/v6.0.3...v6.0.4) - [Site Config](https://nuxtseo.com/docs/site-config/getting-started/introduction)3 months agov4.0.7 ### 🐞 Bug Fixes - **devtools**: Refine UI - by @harlan-zw [`**(b9eda)**`](https://github.com/harlan-zw/nuxt-site-config/commit/b9eda73) ##### [**~~View changes on GitHub~~**](https://github.com/harlan-zw/nuxt-site-config/compare/v4.0.6...v4.0.7) - [Link Checker](https://nuxtseo.com/docs/link-checker/getting-started/introduction)3 months agov5.0.5 _No significant changes_##### [**~~View changes on GitHub~~**](https://github.com/harlan-zw/nuxt-link-checker/compare/v5.0.4...v5.0.5) - [SEO Utils](https://nuxtseo.com/docs/seo-utils/getting-started/introduction)3 months agov8.1.0 ### 🚀 Features - **devtools**: Identity tab - by @harlan-zw [`**(31ed3)**`](https://github.com/harlan-zw/nuxt-seo-utils/commit/31ed322) ##### [**~~View changes on GitHub~~**](https://github.com/harlan-zw/nuxt-seo-utils/compare/v8.0.5...v8.1.0) - [Sitemap](https://nuxtseo.com/docs/sitemap/getting-started/introduction)3 months agov8.0.5 _No significant changes_##### [**~~View changes on GitHub~~**](https://github.com/nuxt-modules/sitemap/compare/v8.0.4...v8.0.5) - [Robots](https://nuxtseo.com/docs/robots/getting-started/introduction)3 months agov6.0.6 _No significant changes_##### [**~~View changes on GitHub~~**](https://github.com/nuxt-modules/robots/compare/v6.0.5...v6.0.6) - [SEO Utils](https://nuxtseo.com/docs/seo-utils/getting-started/introduction)3 months agov8.0.5 _No significant changes_##### [**~~View changes on GitHub~~**](https://github.com/harlan-zw/nuxt-seo-utils/compare/v8.0.4...v8.0.5) - [Link Checker](https://nuxtseo.com/docs/link-checker/getting-started/introduction)3 months agov5.0.4 _No significant changes_##### [**~~View changes on GitHub~~**](https://github.com/harlan-zw/nuxt-link-checker/compare/v5.0.3...v5.0.4) - [Schema.org](https://nuxtseo.com/docs/schema-org/getting-started/introduction)3 months agov6.0.3 _No significant changes_##### [**~~View changes on GitHub~~**](https://github.com/harlan-zw/nuxt-schema-org/compare/v6.0.2...v6.0.3) - [Sitemap](https://nuxtseo.com/docs/sitemap/getting-started/introduction)3 months agov8.0.4 _No significant changes_##### [**~~View changes on GitHub~~**](https://github.com/nuxt-modules/sitemap/compare/v8.0.3...v8.0.4) - [Robots](https://nuxtseo.com/docs/robots/getting-started/introduction)3 months agov6.0.5 _No significant changes_##### [**~~View changes on GitHub~~**](https://github.com/nuxt-modules/robots/compare/v6.0.4...v6.0.5) - [AI Ready](https://nuxtseo.com/docs/ai-ready/getting-started/introduction)3 months agov1.0.1 _No significant changes_##### [**~~View changes on GitHub~~**](https://github.com/nuxt-seo-pro/nuxt-ai-ready/compare/v1.0.0...v1.0.1) - [Skew Protection](https://nuxtseo.com/docs/skew-protection/getting-started/introduction)3 months agov1.0.1 ### 🐞 Bug Fixes - Broken module deps - by @harlan-zw [`**(58c6a)**`](https://github.com/nuxt-seo-pro/nuxt-skew-protection/commit/58c6ac9) ##### [**~~View changes on GitHub~~**](https://github.com/nuxt-seo-pro/nuxt-skew-protection/compare/v1.0.0...v1.0.1) - [Skew Protection](https://nuxtseo.com/docs/skew-protection/getting-started/introduction)3 months agov1.0.0Major Nuxt Skew Protection v1 marks the module's first stable release. The focus: giving you full control over **how** and **when** outdated clients respond to new deployments, while making version state observable on both client and server. This release also cleans up the API surface, shortening names and aligning conventions before committing to semver stability. Run the automated codemod to migrate your project, or paste the **~~LLM upgrade prompt~~** into Claude, [**~~ChatGPT~~**](https://chatgpt.com), etc. for a guided migration. ``` npx nuxt-skew-protection migrate ``` See the [**~~breaking changes~~**](#breaking-changes) below for details on what changed. ## 🔍 Server Version Awareness Every incoming request now carries `**event.context.skewVersion**` populated from the client's cookie. Use the new `getClientVersion(event)` server utility to read it explicitly, or `isClientOutdated(event)` to check staleness in API handlers. ``` export default defineEventHandler((event) => { if (isClientOutdated(event)) { // return stale-safe response or set cache headers } }) ``` ## ⏪ Rollback Detection The composable now exposes an `**isRollback**` computed ref that is `**true**` when the server version is **older** than the client version, indicating a deployment was rolled back. This lets you distinguish "user needs to update" from "we rolled back, the user is ahead." ## 🛠️ DevTools Panel A new Nuxt DevTools panel gives you full visibility into skew protection state during development. It includes four tabs: - **Overview** shows your resolved module configuration and, when connected to a production URL, displays real time health status and active connection stats. - **Versions** lists all stored deployment versions with build timestamps, asset counts, and expiration status. - **Connections** shows version distribution and route distribution across active users (requires `**connectionTracking: true**`). - **Docs** links directly to the module documentation. The panel is available at `**/__nuxt-skew-protection**` in dev mode and can proxy production endpoints for live debugging. ## ⚡ Multi-Tab Coordination Version detection gets faster when multiple tabs share discoveries. When one tab detects a deployment update, every other tab in the same browser learns about it instantly via `**BroadcastChannel**`, eliminating duplicate polling and reducing unnecessary network requests. Enabled by default; disable with `**multiTab: false**`. ## 🔄 Reload Strategies Previously the module always showed a notification and waited for the user to click reload. Now you choose the behaviour that fits your app with a single config option. ``` export default defineNuxtConfig({ skewProtection: { // 'prompt' (default) | 'immediate' | 'idle' | false reloadStrategy: 'idle', }, }) ``` `**immediate**` reloads the moment chunks are invalidated. `**idle**` waits until the user switches tabs or the browser is idle, avoiding mid-interaction disruption. Set `**false**` to disable built-in handling and drive your own logic through hooks. ## ⚠️ Breaking Changes ### Dependency Version Bumps The following internal dependencies have new minimum versions. These shouldn't have any direct effect on your site, however, you may want to double check their release notes. - **nuxt-site-config** v4: [**~~breaking changes~~**](https://github.com/harlan-zw/nuxt-site-config/releases/tag/v4.0.0) ### Hook Renamed: `**skew:chunks-outdated**` The Nuxt hook `**skew-protection:chunks-outdated**` has been shortened to `**skew:chunks-outdated**`. ``` // Before nuxtApp.hooks.hook('skew-protection:chunks-outdated', (payload) => { // ... }) // After nuxtApp.hooks.hook('skew:chunks-outdated', (payload) => { // ... }) ``` ### Composable Return: `**isAppOutdated**` `**isOutdated**` was renamed to `**isAppOutdated**` to distinguish it from chunk-level staleness. ``` // Before const { isOutdated } = useSkewProtection() // After const { isAppOutdated } = useSkewProtection() ``` ### Config: `**bundleAssets**` `**bundlePreviousDeploymentChunks**` was renamed to `**bundleAssets**` for brevity. ``` // Before const before = { skewProtection: { bundlePreviousDeploymentChunks: true } } // After const after = { skewProtection: { bundleAssets: true } } ``` ### Route Prefix: `**/__skew/**` Internal API routes moved from `**/_skew/**` to `**/__skew/**` (double underscore) to follow the Nuxt convention for internal routes. Update any custom proxy rules or firewall allowlists. ### Cookie Defaults `**sameSite**` changed from `**strict**` to `**lax**` so the cookie survives cross-origin navigations (e.g. OAuth redirects). `**maxAge**` shortened from 60 days to 7 days to reduce stale version drift. ### Standalone `**checkForUpdates**` Removed We removed the standalone export. Use the composable method instead: ``` // Before import { checkForUpdates } from '#skew-protection' // After const { checkForUpdates } = useSkewProtection() ``` ### Legacy `**_generate**` Compat Removed We removed the internal `**_generate**` compatibility check from early pre-releases. If you were on v0.4 or earlier, upgrade to v0.7.6 first, then to v1. ## 🤖 LLM Upgrade Prompt {#llm-upgrade-prompt} Paste this into Claude, ChatGPT, or any LLM to migrate your codebase automatically. ## ✅ Upgrading ``` # pnpm pnpm add nuxt-skew-protection@^1 # npm npm install nuxt-skew-protection@^1 # yarn yarn add nuxt-skew-protection@^1 ``` ## 📋 Changelog > [**~~Compare changes~~**](https://github.com/nuxt-seo-pro/nuxt-skew-protection/compare/v0.7.6...v1.0.0) ### 🚀 Enhancements - `**reloadStrategy**` option: `**prompt**`, `**immediate**`, `**idle**`, or `**false**` ([`**4b6a9fe**`](https://github.com/nuxt-seo-pro/nuxt-skew-protection/commit/4b6a9fe)) - Multi-tab coordination via `**BroadcastChannel**` ([`**4b6a9fe**`](https://github.com/nuxt-seo-pro/nuxt-skew-protection/commit/4b6a9fe)) - `**/__skew/health**` monitoring endpoint ([`**4b6a9fe**`](https://github.com/nuxt-seo-pro/nuxt-skew-protection/commit/4b6a9fe)) - `**event.context.skewVersion**` on all server requests ([`**4b6a9fe**`](https://github.com/nuxt-seo-pro/nuxt-skew-protection/commit/4b6a9fe)) - `getClientVersion(event)` server utility ([`**4b6a9fe**`](https://github.com/nuxt-seo-pro/nuxt-skew-protection/commit/4b6a9fe)) - `**isRollback**` detection on composable ([`**4b6a9fe**`](https://github.com/nuxt-seo-pro/nuxt-skew-protection/commit/4b6a9fe)) - `**serverVersion**` reactive ref on composable ([`**4b6a9fe**`](https://github.com/nuxt-seo-pro/nuxt-skew-protection/commit/4b6a9fe)) - `**isOpen**` slot prop on `**SkewNotification**` ([`**4b6a9fe**`](https://github.com/nuxt-seo-pro/nuxt-skew-protection/commit/4b6a9fe)) - SSR hydration via `**useState**` for `**isConnected**`, `**serverVersion**`, `**manifest**` ([`**4b6a9fe**`](https://github.com/nuxt-seo-pro/nuxt-skew-protection/commit/4b6a9fe)) - DevTools panel with overview, version history, connection monitoring, and production debug endpoints ([`**8dc6d1e**`](https://github.com/nuxt-seo-pro/nuxt-skew-protection/commit/8dc6d1e)) ### 🩹 Fixes - Handle possibly undefined manifest in multi-tab plugin ([`**d19bfcf**`](https://github.com/nuxt-seo-pro/nuxt-skew-protection/commit/d19bfcf)) ### 🏡 Chore - Bump and lint ([`**ce83636**`](https://github.com/nuxt-seo-pro/nuxt-skew-protection/commit/ce83636)) - Sync CI and kit utilities ([`**c59600e**`](https://github.com/nuxt-seo-pro/nuxt-skew-protection/commit/c59600e)) ### ❤️ Contributors - [**~~Harlan Wilton~~**](https://github.com/harlan-zw) - [AI Ready](https://nuxtseo.com/docs/ai-ready/getting-started/introduction)3 months agov1.0.0Major Nuxt AI Ready v1 focuses on **API consistency**, **security**, and **reliability**. The headline change is the migration to [**~~mdream v1~~**](https://github.com/harlan-zw/mdream), a rewrite of the HTML to markdown engine with a cleaner API and better output. Alongside this, v1 tightens endpoint security, unifies type inconsistencies, and fixes race conditions in the cron system. Most breaking changes have a **backward compatibility layer** that emits deprecation warnings, so upgrading won't immediately break your app. See the full [**~~migration steps~~**](#breaking-changes) and [**~~compat shims~~**](#migration-assistance) below, or paste the [**~~agent migration prompt~~**](#agent-migration-prompt) into your AI coding tool to upgrade automatically. ## 🧠 Mdream v1 The HTML to Markdown engine has been rewritten. mdream v1 ships a native Rust engine (up to 8x faster), [**~~WebAssembly~~**](https://webassembly.org) for edge runtimes, and a simpler declarative API while keeping the JS engine available as `**@mdream/js**` for users who need imperative hook based plugins. The `**preset**` option is replaced by top-level flags, and extraction plugins are now declarative objects instead of function wrappers. ``` // nuxt.config.ts export default defineNuxtConfig({ aiReady: { mdreamOptions: { minimal: true, clean: true } } }) ``` ## 📊 Enhanced CLI Status The `**nuxt-ai-ready status**` command now shows richer diagnostics: activity stats (1h/24h), recent pages, IndexNow backoff status, cron run history, and sitemap health. ## 🔐 Shared Auth Utility Endpoint authentication is consolidated into a single `requireAuth()` utility, replacing duplicated auth logic across 6 route handlers. ## ⚠️ Breaking Changes ### Dependency Version Bumps The following internal dependencies have new minimum versions. These shouldn't have any direct effect on your site, however, you may want to double check their release notes. - **nuxt-site-config** v4: [**~~breaking changes~~**](https://github.com/harlan-zw/nuxt-site-config/releases/tag/v4.0.0) - **@nuxtjs/robots** v6: [**~~breaking changes~~**](https://github.com/nuxt-modules/robots/releases/tag/v6.0.0) - **@nuxtjs/sitemap** v8: [**~~breaking changes~~**](https://github.com/nuxt-modules/sitemap/releases/tag/v8.0.0) ### mdream Options Shape `**mdreamOptions**` changed from `**HTMLToMarkdownOptions & { preset?: 'minimal' }**` to the new `**MdreamOptions**` type from mdream v1. The `**preset**` key no longer exists. ``` aiReady: { - mdreamOptions: { preset: 'minimal' }, + mdreamOptions: { minimal: true }, } ``` ### Config Rename `**cacheMaxAgeSeconds**` is now `**llmsTxtCacheSeconds**` to clarify it only controls the llms.txt cache, not markdown route caching. ``` aiReady: { - cacheMaxAgeSeconds: 600, + llmsTxtCacheSeconds: 600, } ``` ### Type Rename `**BulkDocument**` is now `**PageDocument**`. ``` -import type { BulkDocument } from 'nuxt-ai-ready' +import type { PageDocument } from 'nuxt-ai-ready' ``` ### Hook Rename The Nitro runtime hook `**ai-ready:markdown**` is now `**ai-ready:page:markdown**`, matching the build-time hook name. ``` -nitroApp.hooks.hook('ai-ready:markdown', (ctx) => { +nitroApp.hooks.hook('ai-ready:page:markdown', (ctx) => { ctx.markdown += '\n\nCustom footer' }) ``` ### Headings Type Unified `**PageEntry.headings**` and `**PageIndexedContext.headings**` changed from `**string**` (JSON) to `Array>` (already parsed). Remove any `JSON.parse()` calls on `**.headings**`. ``` const page = await queryPages(event, { route: '/about' }) -const headings = JSON.parse(page.headings) +const headings = page.headings // already parsed ``` ### Endpoint Auth: Header Instead of Query String All `**/__ai-ready/***` endpoints now require an `Authorization: Bearer` header instead of `?secret=` in the query string. This prevents secrets from leaking into server logs and referrer headers. ``` -fetch('/__ai-ready/poll?secret=TOKEN', { method: 'POST' }) +fetch('/__ai-ready/poll', { + method: 'POST', + headers: { Authorization: 'Bearer TOKEN' }, +}) ``` ``` -curl -X POST "https://site.com/__ai-ready/poll?secret=TOKEN" +curl -H "Authorization: Bearer TOKEN" -X POST "https://site.com/__ai-ready/poll" ``` Update any CI scripts, external cron jobs, or monitoring tools that call these endpoints. ## 🛟 Migration Assistance v1 includes a backward compatibility layer to ease migration. The following deprecated patterns still work but emit warnings: - **`**cacheMaxAgeSeconds**`** in `**nuxt.config.ts**` is auto-mapped to `**llmsTxtCacheSeconds**` with a build warning - **`**mdreamOptions.preset**`** triggers a build warning explaining the new shape - **`?secret=` query auth** still works on all `**/__ai-ready/***` endpoints but logs a deprecation warning per request These compatibility shims will be removed in v2. Update your config and endpoints at your earliest convenience. ## 🐛 Bug Fixes - Cron lock race condition fixed with atomic `**INSERT ... ON CONFLICT DO UPDATE ... WHERE**` instead of check-then-set ([`**854551f**`](https://github.com/nuxt-seo-pro/nuxt-ai-ready/commit/854551f)) - Unsafe `**JSON.parse**` calls replaced with `safeJsonParse()` across query layer ([`**854551f**`](https://github.com/nuxt-seo-pro/nuxt-ai-ready/commit/854551f)) - Input validation added to `**poll**`, `**prune**`, and `**indexnow**` endpoints (limit, timeout, ttl clamping) ([`**854551f**`](https://github.com/nuxt-seo-pro/nuxt-ai-ready/commit/854551f)) - `**console.warn**` replaced with `**logger.warn**` in cron runner ([`**854551f**`](https://github.com/nuxt-seo-pro/nuxt-ai-ready/commit/854551f)) - Markdown cache now varies by `**Accept**` headers ([`**f513c08**`](https://github.com/nuxt-seo-pro/nuxt-ai-ready/commit/f513c08)) ## Agent Migration Prompt Copy this prompt into your AI coding agent (Claude Code, Cursor, Copilot, etc.) to migrate automatically: ``` I'm upgrading nuxt-ai-ready to v1. Apply these breaking changes to my codebase: 1. mdream options: \`mdreamOptions\` in nuxt.config.ts changed shape. Replace \`{ preset: 'minimal' }\` with \`{ minimal: true }\`. The type changed from \`HTMLToMarkdownOptions\` to \`MdreamOptions\`. 2. Config rename: \`cacheMaxAgeSeconds\` is now \`llmsTxtCacheSeconds\` in nuxt.config.ts under the \`aiReady\` key. 3. Type rename: \`BulkDocument\` is now \`PageDocument\`. Update all imports from 'nuxt-ai-ready'. 4. Hook rename: The Nitro runtime hook \`ai-ready:markdown\` is now \`ai-ready:page:markdown\`. Update all hooks.hook() and hooks.callHook() calls. 5. Headings type change: \`PageEntry.headings\` and \`PageIndexedContext.headings\` changed from \`string\` (JSON) to \`Array>\` (parsed). Remove any JSON.parse() calls on .headings since it's now already parsed. 6. Auth mechanism change: All \`/__ai-ready/*\` endpoints now use \`Authorization: Bearer \` header instead of \`?secret=\` query parameter. Update any fetch calls, curl commands, CI scripts, or external cron jobs that hit these endpoints. Note: v1 includes backward compatibility shims for \`cacheMaxAgeSeconds\`, \`mdreamOptions.preset\`, and \`?secret=\` query auth. These emit deprecation warnings and will be removed in v2. After applying changes, verify no deprecation warnings remain in your build output or server logs. Search my entire codebase for these patterns and apply all necessary changes. ``` ## Changelog ### 🚨 Breaking Changes - Migrate to `**mdream**` v1 - by @harlan-zw [`**(931e6)**`](https://github.com/nuxt-seo-pro/nuxt-ai-ready/commit/931e6ef) - V1 breaking changes and quality improvements - by @harlan-zw in [**~~https://github.com/nuxt-seo-pro/nuxt-ai-ready/issues/15~~**](https://github.com/nuxt-seo-pro/nuxt-ai-ready/issues/15) [`**(c2bb4)**`](https://github.com/nuxt-seo-pro/nuxt-ai-ready/commit/c2bb45b) ### 🚀 Features - Support optional sections in llms.txt - by @harlan-zw in [**~~https://github.com/nuxt-seo-pro/nuxt-ai-ready/issues/18~~**](https://github.com/nuxt-seo-pro/nuxt-ai-ready/issues/18) [`**(16b2d)**`](https://github.com/nuxt-seo-pro/nuxt-ai-ready/commit/16b2d1d) - Add pagination to MCP pages resource - by @harlan-zw in [**~~https://github.com/nuxt-seo-pro/nuxt-ai-ready/issues/17~~**](https://github.com/nuxt-seo-pro/nuxt-ai-ready/issues/17) [`**(8827c)**`](https://github.com/nuxt-seo-pro/nuxt-ai-ready/commit/8827cd1) ### 🐞 Bug Fixes - Vary markdown cache by accept headers - by @harlan-zw [`**(f513c)**`](https://github.com/nuxt-seo-pro/nuxt-ai-ready/commit/f513c08) - **test**: - Disable mcp-toolkit in test fixtures (h3 v2 incompatibility) - by @harlan-zw [`**(b8536)**`](https://github.com/nuxt-seo-pro/nuxt-ai-ready/commit/b85366b) - Update llms.txt expectations for new format, skip cloudflare WASM - by @harlan-zw [`**(d31f6)**`](https://github.com/nuxt-seo-pro/nuxt-ai-ready/commit/d31f698) ##### [**~~View changes on GitHub~~**](https://github.com/nuxt-seo-pro/nuxt-ai-ready/compare/v0.12.1...v1.0.0) - [SEO Utils](https://nuxtseo.com/docs/seo-utils/getting-started/introduction)3 months agov8.0.4 ### 🐞 Bug Fixes - **devtools**: Conform - by @harlan-zw [`**(f4253)**`](https://github.com/harlan-zw/nuxt-seo-utils/commit/f42534d) ##### [**~~View changes on GitHub~~**](https://github.com/harlan-zw/nuxt-seo-utils/compare/v8.0.3...v8.0.4) - [AI Ready](https://nuxtseo.com/docs/ai-ready/getting-started/introduction)3 months agov0.12.2 ### 🐞 Bug Fixes - Vary markdown cache by accept headers - by @harlan-zw [`**(73ca6)**`](https://github.com/nuxt-seo-pro/nuxt-ai-ready/commit/73ca6ae) ##### [**~~View changes on GitHub~~**](https://github.com/nuxt-seo-pro/nuxt-ai-ready/compare/v0.12.1...v0.12.2) - [Link Checker](https://nuxtseo.com/docs/link-checker/getting-started/introduction)3 months agov5.0.3 _No significant changes_##### [**~~View changes on GitHub~~**](https://github.com/harlan-zw/nuxt-link-checker/compare/v5.0.2...v5.0.3) - [Schema.org](https://nuxtseo.com/docs/schema-org/getting-started/introduction)3 months agov6.0.2 _No significant changes_##### [**~~View changes on GitHub~~**](https://github.com/harlan-zw/nuxt-schema-org/compare/v6.0.1...v6.0.2) - [SEO Utils](https://nuxtseo.com/docs/seo-utils/getting-started/introduction)3 months agov8.0.3 _No significant changes_##### [**~~View changes on GitHub~~**](https://github.com/harlan-zw/nuxt-seo-utils/compare/v8.0.2...v8.0.3) - [Sitemap](https://nuxtseo.com/docs/sitemap/getting-started/introduction)3 months agov8.0.3 _No significant changes_##### [**~~View changes on GitHub~~**](https://github.com/nuxt-modules/sitemap/compare/v8.0.2...v8.0.3) - [Robots](https://nuxtseo.com/docs/robots/getting-started/introduction)3 months agov6.0.4 _No significant changes_##### [**~~View changes on GitHub~~**](https://github.com/nuxt-modules/robots/compare/v6.0.3...v6.0.4) - [Robots](https://nuxtseo.com/docs/robots/getting-started/introduction)3 months agov6.0.3 _No significant changes_##### [**~~View changes on GitHub~~**](https://github.com/nuxt-modules/robots/compare/v6.0.2...v6.0.3) - [Site Config](https://nuxtseo.com/docs/site-config/getting-started/introduction)3 months agov4.0.6 _No significant changes_##### [**~~View changes on GitHub~~**](https://github.com/harlan-zw/nuxt-site-config/compare/v4.0.5...v4.0.6) - [Site Config](https://nuxtseo.com/docs/site-config/getting-started/introduction)3 months agov4.0.5 _No significant changes_##### [**~~View changes on GitHub~~**](https://github.com/harlan-zw/nuxt-site-config/compare/v4.0.4...v4.0.5) - [Site Config](https://nuxtseo.com/docs/site-config/getting-started/introduction)3 months agov4.0.4 _No significant changes_##### [**~~View changes on GitHub~~**](https://github.com/harlan-zw/nuxt-site-config/compare/v4.0.3...v4.0.4) - [Site Config](https://nuxtseo.com/docs/site-config/getting-started/introduction)3 months agov4.0.3 _No significant changes_##### [**~~View changes on GitHub~~**](https://github.com/harlan-zw/nuxt-site-config/compare/v4.0.2...v4.0.3) - [Schema.org](https://nuxtseo.com/docs/schema-org/getting-started/introduction)3 months agov6.0.1 ### 🐞 Bug Fixes - **devtools**: Label module - by @harlan-zw [`**(3dc1f)**`](https://github.com/harlan-zw/nuxt-schema-org/commit/3dc1f67) ##### [**~~View changes on GitHub~~**](https://github.com/harlan-zw/nuxt-schema-org/compare/v6.0.0...v6.0.1) - [SEO Utils](https://nuxtseo.com/docs/seo-utils/getting-started/introduction)3 months agov8.0.2 ### 🐞 Bug Fixes - Normalize `**twitter:image:src**` paths - by @harlan-zw [`**(b606e)**`](https://github.com/harlan-zw/nuxt-seo-utils/commit/b606e8b) - Normalize paths in client for dev mode - by @harlan-zw [`**(3dc9c)**`](https://github.com/harlan-zw/nuxt-seo-utils/commit/3dc9c96) ##### [**~~View changes on GitHub~~**](https://github.com/harlan-zw/nuxt-seo-utils/compare/v8.0.1...v8.0.2) - [Sitemap](https://nuxtseo.com/docs/sitemap/getting-started/introduction)3 months agov8.0.2 ### 🐞 Bug Fixes - Preserve `**definePageMeta**` sitemap data during ssg - by @harlan-zw in [**~~https://github.com/nuxt-modules/sitemap/issues/585~~**](https://github.com/nuxt-modules/sitemap/issues/585) [`**(8b7d4)**`](https://github.com/nuxt-modules/sitemap/commit/8b7d4d3) - **devtools**: Label module - by @harlan-zw [`**(a528f)**`](https://github.com/nuxt-modules/sitemap/commit/a528fcd) ##### [**~~View changes on GitHub~~**](https://github.com/nuxt-modules/sitemap/compare/v8.0.1...v8.0.2) - [Robots](https://nuxtseo.com/docs/robots/getting-started/introduction)3 months agov6.0.2 ### 🐞 Bug Fixes - **devtools**: Label module - by @harlan-zw [`**(1c3e5)**`](https://github.com/nuxt-modules/robots/commit/1c3e5de) ##### [**~~View changes on GitHub~~**](https://github.com/nuxt-modules/robots/compare/v6.0.1...v6.0.2) - [Site Config](https://nuxtseo.com/docs/site-config/getting-started/introduction)3 months agov4.0.2 ### 🐞 Bug Fixes - **devtools**: Label module - by @harlan-zw [`**(0cb3a)**`](https://github.com/harlan-zw/nuxt-site-config/commit/0cb3a2a) ##### [**~~View changes on GitHub~~**](https://github.com/harlan-zw/nuxt-site-config/compare/v4.0.1...v4.0.2) - [Link Checker](https://nuxtseo.com/docs/link-checker/getting-started/introduction)3 months agov5.0.2 _No significant changes_##### [**~~View changes on GitHub~~**](https://github.com/harlan-zw/nuxt-link-checker/compare/v5.0.1...v5.0.2) - [Link Checker](https://nuxtseo.com/docs/link-checker/getting-started/introduction)3 months agov5.0.0Major The v5 release adds [**~~ESLint~~**](https://eslint.org) integration for instant broken link feedback in your editor, migrates DevTools to a shared layer, and bumps internal dependencies. ## ⚠️ Breaking Changes ### Site Config v4 Nuxt Site Config is a module used internally by Nuxt Link Checker. The major update to v4.0.0 shouldn't have any direct effect on your site, however, you may want to double-check the [**~~breaking changes~~**](https://github.com/harlan-zw/nuxt-site-config/releases/tag/v4.0.0). ### DevTools Migration The DevTools client has been migrated to `**nuxtseo-layer-devtools**`, a shared layer used across all Nuxt SEO modules. This means the DevTools panel is now consistent across modules and maintained in one place. No action is needed unless you were importing DevTools internals directly. ## 🔗 ESLint Integration Broken links are typically only caught at build time or during development server navigation. The new ESLint integration gives you instant feedback directly in your editor by validating relative URLs against your app's known routes and sitemap data. ### `**link-checker/valid-route**` Checks that relative URLs match a known vue-router route pattern. Uses radix3 for dynamic route matching and fuse.js for "did you mean?" typo suggestions. **Severity:** `**error**` ``` ``` ### `**link-checker/valid-sitemap-link**` Checks that relative URLs exist in the sitemap. For dynamic routes, warns when sibling URLs exist in the sitemap but the linked URL does not. **Severity:** `**warn**` ``` ``` ### What Gets Checked Both rules scan for relative URLs in: - **Vue templates:** `{lang="html"},`, ``{lang="html"} - **TypeScript/JavaScript:** `navigateTo('...')`, `router.push('...')`, `router.replace('...')` - **Markdown:** `[text](/url)` link syntax (via processor) External URLs, anchors, mailto/tel links, and dynamic bindings are automatically skipped. ### Zero Config with `**@nuxt/eslint**` If you're using `**@nuxt/eslint**`, both rules are automatically registered via the `**eslint:config:addons**` hook. Zero-config. For manual setup, import the standalone export: ``` import linkCheckerPlugin from 'nuxt-link-checker/eslint' export default [ { files: ['**/*.vue', '**/*.ts'], plugins: { 'link-checker': linkCheckerPlugin, }, rules: { 'link-checker/valid-route': 'error', 'link-checker/valid-sitemap-link': 'warn', }, }, ] ``` See the [**~~ESLint Integration guide~~**](https://nuxtseo.com/guides/eslint) for full details including markdown support, skipping links, and configuration options. ## Changelog ### 🚀 Features - Add ESLint integration with route validation rules - by @harlan-zw in [**~~https://github.com/harlan-zw/nuxt-link-checker/issues/76~~**](https://github.com/harlan-zw/nuxt-link-checker/issues/76) [`**(1c416)**`](https://github.com/harlan-zw/nuxt-link-checker/commit/1c416ed) - Add `**excludePages**` config to skip link checking on specific pages - by @harlan-zw [`**(f9a58)**`](https://github.com/harlan-zw/nuxt-link-checker/commit/f9a58c8) - Show source file paths in link inspection console output - by @harlan-zw in [**~~https://github.com/harlan-zw/nuxt-link-checker/issues/78~~**](https://github.com/harlan-zw/nuxt-link-checker/issues/78) [`**(b7109)**`](https://github.com/harlan-zw/nuxt-link-checker/commit/b7109c7) ### 🐞 Bug Fixes - Serialize RegExp in excludeLinks for client-side filtering - by @harlan-zw in [**~~https://github.com/harlan-zw/nuxt-link-checker/issues/77~~**](https://github.com/harlan-zw/nuxt-link-checker/issues/77) [`**(7e5d1)**`](https://github.com/harlan-zw/nuxt-link-checker/commit/7e5d149) ##### [**~~View changes on GitHub~~**](https://github.com/harlan-zw/nuxt-link-checker/compare/v4.3.9...v5.0.0) - [SEO Utils](https://nuxtseo.com/docs/seo-utils/getting-started/introduction)3 months agov8.0.1 ### 🏎 Performance - Optimize bundle - by @harlan-zw [`**(a9a6f)**`](https://github.com/harlan-zw/nuxt-seo-utils/commit/a9a6f63) ##### [**~~View changes on GitHub~~**](https://github.com/harlan-zw/nuxt-seo-utils/compare/v8.0.0...v8.0.1) - [SEO Utils](https://nuxtseo.com/docs/seo-utils/getting-started/introduction)3 months agov8.0.0Major The v8 release introduces social sharing composables, a CLI for icon generation, automatic inline minification, devtools integration, and several quality of life improvements for i18n and breadcrumb users. ## ⚠️ Breaking Changes ### Site Config v4 Nuxt Site Config is a module used internally by Nuxt SEO Utils. The major update to v4.0.0 shouldn't have any direct effect on your site, however, you may want to double-check the [**~~breaking changes~~**](https://github.com/harlan-zw/nuxt-site-config/releases/tag/v4.0.0). ## 🔗 `**useShareLinks()**` Composable Adding social share buttons to your site means wrangling platform specific URL formats, query parameters, and UTM tracking across every network. `**useShareLinks()**` handles all of that, giving you reactive share URLs for 8 platforms with built in UTM attribution. ``` const links = useShareLinks({ title: 'Check this out', utm: { campaign: 'launch' } }) Share on Twitter Share on Facebook Share on LinkedIn ``` Supported platforms: `**twitter**`, `**facebook**`, `**linkedin**`, `**whatsapp**`, `**telegram**`, `**reddit**`, `**pinterest**`, `**email**`. UTM tracking is enabled by default with automatic per-platform `**utm_source**` values. Disable with `**utm: false**` or provide a custom configuration. ``` useShareLinks({ utm: { source: 'auto', // uses platform name medium: 'social', campaign: 'spring-launch' }, twitter: { via: 'harloops', hashtags: ['nuxt', 'seo'] }, pinterest: { media: 'https://example.com/image.png' } }) ``` ## ⚡ Inline Script & Style Minification Nuxt minifies your bundled JS and CSS, but inline `**and**` tags injected via `**useHead()**` or hydration payloads ship unminified. On content heavy pages this adds meaningful weight to every SSR response. v8 now automatically minifies these inline tags in production with zero configuration. Two complementary modes work together: - **Build mode** uses [**~~Rolldown~~**](https://rolldown.rs/) (Vite 8+) or [**~~esbuild~~**](https://esbuild.github.io/) with [**~~lightningcss~~**](https://lightningcss.dev/) for full minification of prerendered HTML and `**app.head**` content. - **Runtime mode** uses lightweight pure JS minifiers (no native deps) to minify hydration payloads and `**useHead()**` injections on every SSR request, compatible with any deployment target. Enabled by default. Configure or disable per mode: ``` export default defineNuxtConfig({ seo: { minify: true, // default — both modes // minify: { build: true, runtime: false }, // minify: false, }, }) ``` See the [**~~Inline Minification guide~~**](https://nuxtseo.com/getting-started/guides/minification) for full details. ## 🖼️ `**nuxt-seo-utils icons**` CLI Command Every platform expects a different icon size and format: browsers want `**favicon.ico**`, iOS needs `**apple-touch-icon.png**`, PWAs require 192px and 512px variants. Manually exporting and maintaining all of these from a single logo is tedious. This CLI command generates every variant from one source image. ``` npx nuxt-seo-utils icons --source logo.svg ``` Generates the following files in your public directory: - `**favicon.ico**` (32x32) - `**icon-16x16.png**` - `**icon-32x32.png**` - `**apple-touch-icon.png**` (180x180) - `**icon-192x192.png**` - `**icon-512x512.png**` Accepts SVG, PNG, JPG, and WebP source formats. ## 🏷️ Configurable `**tagPriority**` for OG Meta Tags Some crawlers stop reading `**after a certain byte limit. If large style blocks appear before your OG meta tags, crawlers may never see them. This option lets you control where SEO meta tags are placed in the**` so they render before style blocks that could push them past the limit. ``` export default defineNuxtConfig({ seoUtils: { tagPriority: 30 // default } }) ``` Lower values place tags earlier in the ``. The default of `**30**` ensures SEO tags appear before style blocks (priority 40-60). ## 🛠️ Devtools Integration Debugging SEO issues usually means viewing page source, checking meta tags manually, and testing share previews through each platform. The new devtools panel at `**/__nuxt-seo-utils**` gives you a single dashboard to inspect all meta tags and preview social share cards during development. ## 📝 `**useFallbackTitle()**` Composable Pages without an explicit `**useHead({ title })**` still need a reasonable title for SEO and browser tabs. Previously this fallback logic was internal. Now it's exposed as a standalone composable so you can use the same resolution logic (route metadata, i18n keys, title cased URL segments) anywhere in your app. ``` const title = useFallbackTitle() // /about-us → "About Us" // 404 page → "404 - Not Found" ``` ## ⚡ Performance - Replaced `**fast-glob**` with `**tinyglobby**` for faster file matching - Inline minification reduces SSR HTML payload size with minimal runtime overhead ## 🐛 Bug Fixes - **Error pages**: Preserve user-defined titles on error pages instead of overwriting them - **i18n**: Resolve fallback page titles from i18n translation keys ( `**pages.{routeName}.title**`) - **Breadcrumbs**: Resolve Schema.org duplicate `**@id**` and double registration - **Meta precedence**: Ensure `**useServerSeoMeta**` takes precedence over site defaults ## Changelog ### 🚀 Features - Nuxt-seo-utils CLI with icons command - by @harlan-zw in [**~~https://github.com/harlan-zw/nuxt-seo-utils/issues/76~~**](https://github.com/harlan-zw/nuxt-seo-utils/issues/76) [`**(1edae)**`](https://github.com/harlan-zw/nuxt-seo-utils/commit/1edae77) - Devtools - by @harlan-zw [`**(494bc)**`](https://github.com/harlan-zw/nuxt-seo-utils/commit/494bce5) - Minify inline SSR scripts using esbuild/terser - by @harlan-zw [`**(4e939)**`](https://github.com/harlan-zw/nuxt-seo-utils/commit/4e939b6) - Support two minification modes (esbuild + lightweight) - by @harlan-zw [`**(d35cd)**`](https://github.com/harlan-zw/nuxt-seo-utils/commit/d35cd0d) - Support Rolldown (Vite 8) for build-time JS minification - by @harlan-zw [`**(c5682)**`](https://github.com/harlan-zw/nuxt-seo-utils/commit/c568225) - Minify inline scripts and styles in SSR - by @harlan-zw and **Copilot Autofix powered by AI** in [**~~https://github.com/harlan-zw/nuxt-seo-utils/issues/99~~**](https://github.com/harlan-zw/nuxt-seo-utils/issues/99) [`**(15ad7)**`](https://github.com/harlan-zw/nuxt-seo-utils/commit/15ad7b0) - **seo**: - Add configurable tagPriority for OG meta tags - by @harlan-zw in [**~~https://github.com/harlan-zw/nuxt-seo-utils/issues/89~~**](https://github.com/harlan-zw/nuxt-seo-utils/issues/89) [`**(e1125)**`](https://github.com/harlan-zw/nuxt-seo-utils/commit/e11250d) - Add useShareLinks composable for social sharing URLs - by @harlan-zw in [**~~https://github.com/harlan-zw/nuxt-seo-utils/issues/92~~**](https://github.com/harlan-zw/nuxt-seo-utils/issues/92) [`**(147a5)**`](https://github.com/harlan-zw/nuxt-seo-utils/commit/147a595) - Extract fallback title logic into useFallbackTitle composable - by @harlan-zw in [**~~https://github.com/harlan-zw/nuxt-seo-utils/issues/91~~**](https://github.com/harlan-zw/nuxt-seo-utils/issues/91) [`**(add78)**`](https://github.com/harlan-zw/nuxt-seo-utils/commit/add7801) ### 🐞 Bug Fixes - Ensure useServerSeoMeta takes precedence over site defaults - by @harlan-zw [`**(5fcd4)**`](https://github.com/harlan-zw/nuxt-seo-utils/commit/5fcd4df) - Narrow statusCode type before includes check - by @harlan-zw [`**(23116)**`](https://github.com/harlan-zw/nuxt-seo-utils/commit/23116ce) - Preserve user-defined titles on error pages - by @harlan-zw in [**~~https://github.com/harlan-zw/nuxt-seo-utils/issues/90~~**](https://github.com/harlan-zw/nuxt-seo-utils/issues/90) [`**(cede3)**`](https://github.com/harlan-zw/nuxt-seo-utils/commit/cede361) - Merge main, fix CodeQL HTML regex warnings - by @harlan-zw [`**(387ea)**`](https://github.com/harlan-zw/nuxt-seo-utils/commit/387ea7a) - Resolve typecheck errors in minifyPrerenderScripts - by @harlan-zw [`**(71a01)**`](https://github.com/harlan-zw/nuxt-seo-utils/commit/71a013e) - Suppress rolldown/experimental type error for Vite 7 projects - by @harlan-zw [`**(01499)**`](https://github.com/harlan-zw/nuxt-seo-utils/commit/0149984) - Use dynamic string import for rolldown to avoid TS2307 - by @harlan-zw [`**(5f5ca)**`](https://github.com/harlan-zw/nuxt-seo-utils/commit/5f5caea) - Add eslint-disable for template-curly-in-string in minify tests - by @harlan-zw [`**(dc9be)**`](https://github.com/harlan-zw/nuxt-seo-utils/commit/dc9be4c) - Use rolldown >=1.0.0-beta.0 peer dep to include pre-releases - by @harlan-zw [`**(ebcb1)**`](https://github.com/harlan-zw/nuxt-seo-utils/commit/ebcb160) - Resolve CI lint, typecheck errors - by @harlan-zw [`**(47fb3)**`](https://github.com/harlan-zw/nuxt-seo-utils/commit/47fb321) - **breadcrumbs**: Resolve schema.org duplicate @id and double registration - by @harlan-zw in [**~~https://github.com/harlan-zw/nuxt-seo-utils/issues/88~~**](https://github.com/harlan-zw/nuxt-seo-utils/issues/88) [`**(f52ae)**`](https://github.com/harlan-zw/nuxt-seo-utils/commit/f52ae32) - **docs**: Update link to `**infer-seo-meta-tags**` plugin - by @hacknug in [**~~https://github.com/harlan-zw/nuxt-seo-utils/issues/80~~**](https://github.com/harlan-zw/nuxt-seo-utils/issues/80) [`**(83b54)**`](https://github.com/harlan-zw/nuxt-seo-utils/commit/83b54b7) - **i18n**: Resolve fallback page titles from i18n translations - by @harlan-zw in [**~~https://github.com/harlan-zw/nuxt-seo-utils/issues/94~~**](https://github.com/harlan-zw/nuxt-seo-utils/issues/94) [`**(63067)**`](https://github.com/harlan-zw/nuxt-seo-utils/commit/630672a) ##### [**~~View changes on GitHub~~**](https://github.com/harlan-zw/nuxt-seo-utils/compare/v7.0.19...v8.0.0) - [Site Config](https://nuxtseo.com/docs/site-config/getting-started/introduction)3 months agov4.0.1 ### 🐞 Bug Fixes - Devtool refresh - by @harlan-zw [`**(458bf)**`](https://github.com/harlan-zw/nuxt-site-config/commit/458bf08) - **devtools**: Sync UI - by @harlan-zw [`**(93f7b)**`](https://github.com/harlan-zw/nuxt-site-config/commit/93f7b21) - **i18n**: Defer locale resolution to support no_prefix strategy - by @harlan-zw [`**(de334)**`](https://github.com/harlan-zw/nuxt-site-config/commit/de33423) ##### [**~~View changes on GitHub~~**](https://github.com/harlan-zw/nuxt-site-config/compare/v4.0.0...v4.0.1) - [Sitemap](https://nuxtseo.com/docs/sitemap/getting-started/introduction)3 months agov8.0.1 ### 🐞 Bug Fixes - Broken runtime paths - by @harlan-zw [`**(5eab0)**`](https://github.com/nuxt-modules/sitemap/commit/5eab0c1) ##### [**~~View changes on GitHub~~**](https://github.com/nuxt-modules/sitemap/compare/v8.0.0...v8.0.1) - [Schema.org](https://nuxtseo.com/docs/schema-org/getting-started/introduction)3 months agov6.0.0Major The v6 major of Nuxt Schema.org adds a new content composable, fixes SSR memory leaks, resolves `**@id**` URL generation issues, and migrates the devtools to the shared nuxtseo infrastructure. ## ⚠️ Breaking Changes ### Site Config v4 Nuxt Site Config is a module used internally by Nuxt Schema.org. Its major update to v4.0.0 shouldn't have any direct effect on your site, however, you may want to double check the [**~~breaking changes~~**](https://github.com/harlan-zw/nuxt-site-config/releases/tag/v4.0.0). ### Devtools Rewrite The devtools panel has been migrated to the shared `**nuxtseo-shared**` infrastructure. The UI has been cleaned up and now includes a schema validator, debug view, raw JSON view, and documentation links. If you relied on the previous devtools layout, the information is still available under new navigation tabs. ## 🚀 Features ### `**defineSchemaOrgSchema()**` Composable A new composable for `**@nuxt/content**` v3 that simplifies adding Schema.org fields to your content schema.content.config.ts ``` import { defineCollection, z } from '@nuxt/content' import { defineSchemaOrgSchema } from 'nuxt-schema-org/content' export default defineContentConfig({ collections: { pages: defineCollection({ type: 'page', source: '**/*.md', schema: z.object({ ...defineSchemaOrgSchema(z), }), }), }, }) ``` This replaces the previous `**asSchemaOrgCollection()**` helper, which is now deprecated. ## 🔧 Bug Fixes ### SSR Memory Leak from Reactive Scopes Reactive scopes created during SSR were not being disposed, causing memory to accumulate across requests. The plugin now resolves paths directly on the server without creating computed refs, avoiding leaked reactive watchers entirely. ### `**@id**` URLs Now Respect `**app.baseURL**` All `**defineXYZ**` helpers (e.g. `**defineWebPage**`, `**defineOrganization**`) now correctly include `**app.baseURL**` when generating `**@id**` values. Previously, sites deployed under a base path (e.g. `**/docs/**`) would produce `**@id**` URLs missing that prefix. ### Nuxt Context Preserved in Computed Refs Passing a computed ref to `**useSchemaOrg()**` could trigger "useNuxtApp() called outside of setup" errors when Unhead later evaluated the getter. The composable now wraps ref inputs with `**runWithContext()**` to preserve the Nuxt async context. ### 🚀 Features - **content**: Add `**defineSchemaOrgSchema()**` composable - by @harlan-zw in [**~~https://github.com/harlan-zw/nuxt-schema-org/issues/110~~**](https://github.com/harlan-zw/nuxt-schema-org/issues/110) [`**(8b2c4)**`](https://github.com/harlan-zw/nuxt-schema-org/commit/8b2c47c) ### 🐞 Bug Fixes - Dispose reactive scopes after SSR to prevent memory leak - by @harlan-zw in [**~~https://github.com/harlan-zw/nuxt-schema-org/issues/107~~**](https://github.com/harlan-zw/nuxt-schema-org/issues/107) [`**(c02ae)**`](https://github.com/harlan-zw/nuxt-schema-org/commit/c02aee6) - Ensure all defineXYZ helpers respect app.baseUrl for @id - by @harlan-zw in [**~~https://github.com/harlan-zw/nuxt-schema-org/issues/108~~**](https://github.com/harlan-zw/nuxt-schema-org/issues/108) [`**(52977)**`](https://github.com/harlan-zw/nuxt-schema-org/commit/52977d6) - **devtools**: Clean up UI - by @harlan-zw [`**(dede4)**`](https://github.com/harlan-zw/nuxt-schema-org/commit/dede404) - **docs**: Fix broken code-block in setup-identity guide - by @harlan-zw and **Claude Opus 4.5** in [**~~https://github.com/harlan-zw/nuxt-schema-org/issues/99~~**](https://github.com/harlan-zw/nuxt-schema-org/issues/99) [`**(b2e6e)**`](https://github.com/harlan-zw/nuxt-schema-org/commit/b2e6e10) - **useSchemaOrg**: Preserve Nuxt context when resolving computed refs - by @harlan-zw in [**~~https://github.com/harlan-zw/nuxt-schema-org/issues/109~~**](https://github.com/harlan-zw/nuxt-schema-org/issues/109) [`**(0700a)**`](https://github.com/harlan-zw/nuxt-schema-org/commit/0700a2f) ##### [**~~View changes on GitHub~~**](https://github.com/harlan-zw/nuxt-schema-org/compare/v5.0.10...v6.0.0) - [Robots](https://nuxtseo.com/docs/robots/getting-started/introduction)3 months agov6.0.1 _No significant changes_##### [**~~View changes on GitHub~~**](https://github.com/nuxt-modules/robots/compare/v6.0.0...v6.0.1) - [Robots](https://nuxtseo.com/docs/robots/getting-started/introduction)3 months agov6.0.0Major The v6 major of Nuxt Robots adds new content composables, improves validation with warnings support, and includes several important bug fixes. ## ⚠️ Breaking Changes ### Site Config v4 Nuxt Site Config is a module used internally by Nuxt Robots. Its major update to v4.0.0 shouldn't have any direct effect on your site, however, you may want to double check the [**~~breaking changes~~**](https://github.com/harlan-zw/nuxt-site-config/releases/tag/v4.0.0). ### `**robots:config**` Hook Context The `**HookRobotsConfigContext**` now includes a `**warnings: string[]**` field alongside the existing `**errors: string[]**`. If you use the `**robots:config**` Nitro hook and inspect the context, be aware of this new field. ## 🚀 Features ### `**defineRobotsSchema()**` Composable A new composable for `**@nuxt/content**` v3 that simplifies adding robots fields to your content schema.content.config.ts ``` import { defineCollection, z } from '@nuxt/content' import { defineRobotsSchema } from '@nuxtjs/robots/content' export default defineContentConfig({ collections: { pages: defineCollection({ type: 'page', source: '**/*.md', schema: z.object({ ...defineRobotsSchema(z), }), }), }, }) ``` This replaces the previous `**asRobotsCollection()**` helper, which is now deprecated. ### Validation Warnings The robots.txt validation system now supports warnings in addition to errors. The first warning checks for `**Disallow: /api**` rules, which may unintentionally block API routes that need to be accessible. Warnings appear in the devtools debug view alongside errors, helping you catch potential misconfigurations before they cause issues. ### Production Debug Route A new `**/__robots__/debug-production.json**` server route is available in development. It fetches your production site's `**robots.txt**`, validates it, and returns a structured response with errors, warnings, parsed groups, and sitemaps. This makes it easy to compare your local configuration against what's live in production. ## 🔧 Bug Fixes ### `**skipSiteIndexable**` Now Skips `**Disallow: /**` Previously, setting `**skipSiteIndexable: true**` (used by sitemap generation) only skipped the site config indexable check. It now also filters out `**Disallow: /**` root disallow rules from path matching, ensuring sitemap URLs are correctly generated on staging or non-indexable environments. Specific path rules like `**/admin**` still apply as expected. ### Route Rules Nullish Guard Route rules with `**undefined**` or `**null**` values no longer cause runtime errors. The `**normaliseRobotsRouteRule**` function now safely handles nullish input. ### Devtools Meta Tag Parsing Meta tag parsing in the devtools debug view is now attribute order agnostic, fixing cases where `` was not detected. ### 🚀 Features - **content**: Add `**defineRobotsSchema()**` composable - by @harlan-zw in [**~~https://github.com/nuxt-modules/robots/issues/283~~**](https://github.com/nuxt-modules/robots/issues/283) [`**(ac97d)**`](https://github.com/nuxt-modules/robots/commit/ac97d39) - **validation**: Add warnings support and warn on /api disallow - by @harlan-zw in [**~~https://github.com/nuxt-modules/robots/issues/287~~**](https://github.com/nuxt-modules/robots/issues/287) [`**(379bb)**`](https://github.com/nuxt-modules/robots/commit/379bb75) ### 🐞 Bug Fixes - Guard against undefined routeRules values - by @harlan-zw in [**~~https://github.com/nuxt-modules/robots/issues/277~~**](https://github.com/nuxt-modules/robots/issues/277) [`**(393d7)**`](https://github.com/nuxt-modules/robots/commit/393d788) - `**skipSiteIndexable**` now skips `**disallow: /**` robots.txt rules - by @harlan-zw in [**~~https://github.com/nuxt-modules/robots/issues/282~~**](https://github.com/nuxt-modules/robots/issues/282) [`**(57957)**`](https://github.com/nuxt-modules/robots/commit/579571f) - **devtools**: - Make meta tag parsing attribute order agnostic - by @harlan-zw in [**~~https://github.com/nuxt-modules/robots/issues/280~~**](https://github.com/nuxt-modules/robots/issues/280) [`**(37f52)**`](https://github.com/nuxt-modules/robots/commit/37f5297) - Production inspect mode - by @harlan-zw [`**(3a626)**`](https://github.com/nuxt-modules/robots/commit/3a626a3) ##### [**~~View changes on GitHub~~**](https://github.com/nuxt-modules/robots/compare/v5.7.1...v6.0.0) - [Sitemap](https://nuxtseo.com/docs/sitemap/getting-started/introduction)3 months agov8.0.0Major The v8 release focuses on a fully rewritten devtools experience and several quality of life improvements for Nuxt Content v3 and i18n users. ## ⚠️ Breaking Changes ### Site Config v4 Nuxt Site Config is a module used internally by Nuxt Sitemap. The major update to v4.0.0 shouldn't have any direct effect on your site, however, you may want to double-check the [**~~breaking changes~~**](https://github.com/harlan-zw/nuxt-site-config/releases/tag/v4.0.0). ### `**asSitemapCollection()**` Deprecated The `**asSitemapCollection()**` composable has been replaced by `**defineSitemapSchema()**`. The old API still works but will log a deprecation warning. ``` import { defineCollection, z } from '#content/collections' - import { asSitemapCollection } from '#sitemap/content' + import { defineSitemapSchema } from '#sitemap/content' export const collections = { - content: defineCollection(asSitemapCollection({ - type: 'page', - source: '**/*.md', - schema: z.object({ title: z.string() }) - })) + content: defineCollection({ + type: 'page', + source: '**/*.md', + schema: z.object({ + title: z.string(), + sitemap: defineSitemapSchema() + }) + }) } ``` ## 🚀 New Features ### `**defineSitemapSchema()**` Composable A new composable for Nuxt Content v3 that provides a cleaner API for integrating sitemap configuration into your content collections. Supports `**filter**`, `**onUrl**`, and `**name**` options. ``` import { defineCollection, z } from '#content/collections' import { defineSitemapSchema } from '#sitemap/content' export const collections = { content: defineCollection({ type: 'page', source: '**/*.md', schema: z.object({ title: z.string(), sitemap: defineSitemapSchema({ filter: entry => !entry.path?.startsWith('/draft'), onUrl: (url) => { // customize URL entries return url } }) }) }) } ``` ### `**definePageMeta**` Sitemap Configuration You can now configure sitemap options directly in your page components using `**definePageMeta**`. ``` definePageMeta({ sitemap: { changefreq: 'daily', priority: 0.8 } }) ``` ### i18n Multi-Sitemap with Custom Sitemaps Custom sitemaps with `**includeAppSources: true**` are now automatically expanded per locale, generating `**{locale}-{name}**` formatted sitemaps. ### Debug Production Endpoint A new `**/__sitemap__/debug-production.json**` endpoint is available in development mode, allowing you to inspect what the production sitemap output will look like during development. ## 🐛 Bug Fixes - **Content v3**: Filter `**.navigation**` paths from sitemap URL generation - **Content v3**: Guard `**afterParse**` hook to prevent silent HMR failures - **i18n**: Include base URL in multi-sitemap redirect - **i18n**: Fix exclude filters when base URL and i18n prefixes are present - **i18n**: Respect `**autoI18n: false**` to generate single sitemap instead of per-locale sitemaps - **Types**: Use `**robots**` instead of `**index**` in route rules type definition - **Chunked sitemaps**: Fix path resolution with `**sitemapsPathPrefix: '/'**`## ⚡ Performance - Replaced `**chalk**` with `**consola/utils**` for a smaller bundle - Use `**URL.canParse()**` instead of try/catch `**new URL()**` for URL validation - Use `**addPrerenderRoutes()**` API instead of manual route pushing ### 🚀 Features - **content**: Add `**defineSitemapSchema()**` composable - by @harlan-zw in [**~~https://github.com/nuxt-modules/sitemap/issues/576~~**](https://github.com/nuxt-modules/sitemap/issues/576) [`**(603e6)**`](https://github.com/nuxt-modules/sitemap/commit/603e669) ### 🐞 Bug Fixes - `**definePageMeta**` sitemap configuration not applied - by @harlan-zw in [**~~https://github.com/nuxt-modules/sitemap/issues/572~~**](https://github.com/nuxt-modules/sitemap/issues/572) [`**(9f74a)**`](https://github.com/nuxt-modules/sitemap/commit/9f74afb) - Include base URL in multi sitemap redirect - by @harlan-zw in [**~~https://github.com/nuxt-modules/sitemap/issues/573~~**](https://github.com/nuxt-modules/sitemap/issues/573) [`**(94bc2)**`](https://github.com/nuxt-modules/sitemap/commit/94bc20f) - Respect `**autoI18n: false**` to generate single sitemap - by @harlan-zw in [**~~https://github.com/nuxt-modules/sitemap/issues/570~~**](https://github.com/nuxt-modules/sitemap/issues/570) [`**(94458)**`](https://github.com/nuxt-modules/sitemap/commit/944584b) - Allow i18n multi-sitemap with custom sitemaps - by @harlan-zw in [**~~https://github.com/nuxt-modules/sitemap/issues/548~~**](https://github.com/nuxt-modules/sitemap/issues/548) [`**(e25b9)**`](https://github.com/nuxt-modules/sitemap/commit/e25b9f1) - **content**: - Guard afterParse hook to prevent silent HMR failures - by @harlan-zw in [**~~https://github.com/nuxt-modules/sitemap/issues/577~~**](https://github.com/nuxt-modules/sitemap/issues/577) [`**(0ce4e)**`](https://github.com/nuxt-modules/sitemap/commit/0ce4e6a) - Filter .navigation paths and document i18n onUrl pattern - by @harlan-zw in [**~~https://github.com/nuxt-modules/sitemap/issues/578~~**](https://github.com/nuxt-modules/sitemap/issues/578) [`**(c0058)**`](https://github.com/nuxt-modules/sitemap/commit/c00585d) - **i18n**: - Exclude filters with base URL and i18n prefixes - by @harlan-zw in [**~~https://github.com/nuxt-modules/sitemap/issues/571~~**](https://github.com/nuxt-modules/sitemap/issues/571) [`**(fbc69)**`](https://github.com/nuxt-modules/sitemap/commit/fbc69b3) - **types**: - Use `**robots**` instead of `**index**` in route rules - by @harlan-zw in [**~~https://github.com/nuxt-modules/sitemap/issues/569~~**](https://github.com/nuxt-modules/sitemap/issues/569) [`**(e9167)**`](https://github.com/nuxt-modules/sitemap/commit/e91679c) ### 🏎 Performance - Replace `**chalk**` with `**consola/utils**` - by @KazariEX in [**~~https://github.com/nuxt-modules/sitemap/issues/555~~**](https://github.com/nuxt-modules/sitemap/issues/555) [`**(ae520)**`](https://github.com/nuxt-modules/sitemap/commit/ae520f1) ##### [**~~View changes on GitHub~~**](https://github.com/nuxt-modules/sitemap/compare/v7.6.0...v8.0.0) - [Robots](https://nuxtseo.com/docs/robots/getting-started/introduction)3 months agov6.0.0-beta.5 _No significant changes_##### [**~~View changes on GitHub~~**](https://github.com/nuxt-modules/robots/compare/v6.0.0-beta.4...v6.0.0-beta.5) - [Robots](https://nuxtseo.com/docs/robots/getting-started/introduction)3 months agov6.0.0-beta.4 _No significant changes_##### [**~~View changes on GitHub~~**](https://github.com/nuxt-modules/robots/compare/v6.0.0-beta.3...v6.0.0-beta.4) - [Robots](https://nuxtseo.com/docs/robots/getting-started/introduction)3 months agov6.0.0-beta.3 ### 🐞 Bug Fixes - **devtools**: Production inspect mode - by @harlan-zw [`**(3a626)**`](https://github.com/nuxt-modules/robots/commit/3a626a3) ##### [**~~View changes on GitHub~~**](https://github.com/nuxt-modules/robots/compare/v6.0.0-beta.2...v6.0.0-beta.3) - [Robots](https://nuxtseo.com/docs/robots/getting-started/introduction)3 months agov6.0.0-beta.2 _No significant changes_##### [**~~View changes on GitHub~~**](https://github.com/nuxt-modules/robots/compare/v6.0.0-beta.1...v6.0.0-beta.2) - [Robots](https://nuxtseo.com/docs/robots/getting-started/introduction)3 months agov6.0.0-beta.1 ### 🚀 Features - **content**: Add `**defineRobotsSchema()**` composable - by @harlan-zw in [**~~https://github.com/nuxt-modules/robots/issues/283~~**](https://github.com/nuxt-modules/robots/issues/283) [`**(ac97d)**`](https://github.com/nuxt-modules/robots/commit/ac97d39) - **validation**: Add warnings support and warn on /api disallow - by @harlan-zw in [**~~https://github.com/nuxt-modules/robots/issues/287~~**](https://github.com/nuxt-modules/robots/issues/287) [`**(379bb)**`](https://github.com/nuxt-modules/robots/commit/379bb75) ### 🐞 Bug Fixes - Guard against undefined routeRules values - by @harlan-zw in [**~~https://github.com/nuxt-modules/robots/issues/277~~**](https://github.com/nuxt-modules/robots/issues/277) [`**(393d7)**`](https://github.com/nuxt-modules/robots/commit/393d788) - `**skipSiteIndexable**` now skips `**disallow: /**` robots.txt rules - by @harlan-zw in [**~~https://github.com/nuxt-modules/robots/issues/282~~**](https://github.com/nuxt-modules/robots/issues/282) [`**(57957)**`](https://github.com/nuxt-modules/robots/commit/579571f) - **devtools**: Make meta tag parsing attribute order agnostic - by @harlan-zw in [**~~https://github.com/nuxt-modules/robots/issues/280~~**](https://github.com/nuxt-modules/robots/issues/280) [`**(37f52)**`](https://github.com/nuxt-modules/robots/commit/37f5297) ##### [**~~View changes on GitHub~~**](https://github.com/nuxt-modules/robots/compare/v5.7.1...v6.0.0-beta.1) - [Site Config](https://nuxtseo.com/docs/site-config/getting-started/introduction)3 months agov4.0.0Major ## ⚠️ Breaking Changes ### 🏷️ Removed Implicit Site Name Inference Previously, `**site.name**` was automatically inferred from your `**package.json**` `**name**` field or project directory name. This caused package name leakage in public APIs (e.g., `**@nuxtjs/sitemap**` exposing internal package names). You must now explicitly set `**site.name**`:nuxt.config ``` export default defineNuxtConfig({ site: { name: 'My Website', } }) ``` Or via environment variable: ``` NUXT_SITE_NAME="My Website" ``` If not set, `**site.name**` will be `**undefined**`. ### 🔑 Removed Legacy `**site***` Runtime Config Keys The deprecated `**siteUrl**`, `**siteName**`, and `**siteDescription**` runtime config keys have been removed. ``` export default defineNuxtConfig({ - runtimeConfig: { - public: { - siteUrl: 'https://example.com', - } - }, + site: { + url: 'https://example.com', + } }) ``` ### 🔄 Removed Server-Side `**useSiteConfig**` Composable The server-side `**useSiteConfig()**`composable has been removed to resolve auto-import name collisions between client and server composables. Use `**getSiteConfig()**` on the server instead: ``` -const config = useSiteConfig(event) +const config = getSiteConfig(event) ``` The client-side `**useSiteConfig()**` composable is unchanged. ### 🗑️ Removed `**getSiteIndexable**` Composable The `**getSiteIndexable()**` composable has been removed. Check the `**indexable**` property directly: ``` -const indexable = getSiteIndexable(event) +const { indexable } = getSiteConfig(event) ``` ### 📦 Removed `**#internal/nuxt-site-config**` Barrel Export The legacy `**#internal/nuxt-site-config**` import path has been removed. Use the documented public APIs instead. ### 🏗️ Removed `**SiteConfig**` Type Alias The deprecated `**SiteConfig**` type alias has been removed. Use `**SiteConfigResolved**` instead: ``` -import type { SiteConfig } from 'nuxt-site-config' +import type { SiteConfigResolved } from 'nuxt-site-config' ``` ## ✨ New Features ### 🎯 Named Priority Constants Site config priority levels are now exposed as named constants for better readability when setting config priorities: ``` import { SiteConfigPriority } from 'site-config-stack' updateSiteConfig({ name: 'My Site', _priority: SiteConfigPriority.runtime, }) ``` Available priorities: `**system**`, `**vendor**`, `**nitro**`, `**config**`, `**i18n**`, `**build**`, `**runtime**`. ### 🚨 Breaking Changes - Remove implicit site name inference from package.json, rootDir, and legacy runtimeConfig - by @harlan-zw [`**(e7538)**`](https://github.com/harlan-zw/nuxt-site-config/commit/e753810) - Remove `**#internal/nuxt-site-config**` legacy barrel export - by @harlan-zw in [**~~https://github.com/harlan-zw/nuxt-site-config/issues/86~~**](https://github.com/harlan-zw/nuxt-site-config/issues/86) [`**(b3890)**`](https://github.com/harlan-zw/nuxt-site-config/commit/b3890a4) - Remove deprecated server useSiteConfig to resolve auto-import collision - by @harlan-zw in [**~~https://github.com/harlan-zw/nuxt-site-config/issues/82~~**](https://github.com/harlan-zw/nuxt-site-config/issues/82) [`**(bee54)**`](https://github.com/harlan-zw/nuxt-site-config/commit/bee548f) ### 🐞 Bug Fixes - Avoid SSR memory leak from computed refs in i18n plugin - by @harlan-zw [`**(2bef8)**`](https://github.com/harlan-zw/nuxt-site-config/commit/2bef847) - Avoid SSR memory leak from computed refs in i18n plugin - by @harlan-zw in [**~~https://github.com/harlan-zw/nuxt-site-config/issues/81~~**](https://github.com/harlan-zw/nuxt-site-config/issues/81) [`**(9bda3)**`](https://github.com/harlan-zw/nuxt-site-config/commit/9bda35f) ##### [**~~View changes on GitHub~~**](https://github.com/harlan-zw/nuxt-site-config/compare/v3.2.21...v4.0.0) - [Nuxt SEO](https://nuxtseo.com/docs/nuxt-seo/getting-started/introduction)4 months agov4.0.0Major This is a major release upgrading OG Image to v6 with a new Takumi renderer, multiple OG images per page, native Tailwind v4 support, and redesigned DevTools — plus stability fixes across Robots and Site Config. ### Highlights - **OG Image v6**: New [**~~Takumi renderer~~**](https://nuxtseo.com/docs/og-image) (2-10x faster), [**~~multiple OG images per page~~**](https://nuxtseo.com/docs/og-image), native [**~~Tailwind v4~~**](https://nuxtseo.com/docs/og-image) and [**~~@nuxt/fonts~~**](https://nuxtseo.com/docs/og-image) integration, and redesigned DevTools - **Robots**: [**~~Nuxt 4 compatibility~~**](https://github.com/nuxt-modules/robots/issues/272) support and DevTools fixes - **Site Config**: Improved dev mode URL handling and multi-tenancy fixes ### ⚠️ Breaking Changes - **OG Image v6**: See [**~~migration notes~~**](https://nuxtseo.com/docs/og-image/migration-guide/v6) ### ✅ Upgrading Our recommendation for upgrading is to run: ``` npx nuxt upgrade --dedupe ``` This will deduplicate your lockfile as well, and help ensure that you pull in updates from other dependencies that Nuxt relies on, particularly in the unjs ecosystem. For OG Image v6, run the migration CLI: ``` npx nuxt-og-image migrate v6 ``` Full migration guide: /og-image/migration-guide/v6 📦 Module Updates - 🐛 Site Config: Don't force https protocol in dev mode ([**~~https://github.com/harlan-zw/nuxt-site-config/commit/6788d81~~**](https://github.com/harlan-zw/nuxt-site-config/commit/6788d81)) - 🐛 Site Config: Strip port from host when matching multi-tenancy config ([**~~https://github.com/harlan-zw/nuxt-site-config/commit/863a8b3~~**](https://github.com/harlan-zw/nuxt-site-config/commit/863a8b3)) - 🐛 Site Config: Fix broken IPv6 loopback handling ([**~~https://github.com/harlan-zw/nuxt-site-config/commit/e5e09da~~**](https://github.com/harlan-zw/nuxt-site-config/commit/e5e09da)) [**~~https://github.com/harlan-zw/nuxt-seo/compare/v3.4.0...v4.0.0~~**](https://github.com/harlan-zw/nuxt-seo/compare/v3.4.0...v4.0.0) - [AI Ready](https://nuxtseo.com/docs/ai-ready/getting-started/introduction)4 months agov0.12.1 ### 🐞 Bug Fixes - Safer markdown serving logic - by @harlan-zw [`**(428ad)**`](https://github.com/nuxt-seo-pro/nuxt-ai-ready/commit/428adea) - Broken prerendering for index.md - by @harlan-zw [`**(3ff4c)**`](https://github.com/nuxt-seo-pro/nuxt-ai-ready/commit/3ff4cb9) ##### [**~~View changes on GitHub~~**](https://github.com/nuxt-seo-pro/nuxt-ai-ready/compare/v0.12.0...v0.12.1) - [Skew Protection](https://nuxtseo.com/docs/skew-protection/getting-started/introduction)4 months agov0.7.6 _No significant changes_##### [**~~View changes on GitHub~~**](https://github.com/nuxt-seo-pro/nuxt-skew-protection/compare/v0.7.5...v0.7.6) - [AI Ready](https://nuxtseo.com/docs/ai-ready/getting-started/introduction)4 months agov0.12.0 ### 🚀 Features - Add Vercel Edge & Neon Postgres support with Drizzle ORM - by @harlan-zw in [**~~https://github.com/nuxt-seo-pro/nuxt-ai-ready/issues/11~~**](https://github.com/nuxt-seo-pro/nuxt-ai-ready/issues/11) [`**(f21ab)**`](https://github.com/nuxt-seo-pro/nuxt-ai-ready/commit/f21aba8) ##### [**~~View changes on GitHub~~**](https://github.com/nuxt-seo-pro/nuxt-ai-ready/compare/v0.11.0...v0.12.0) - [Robots](https://nuxtseo.com/docs/robots/getting-started/introduction)4 months agov5.7.1 ### 🐞 Bug Fixes - Support nuxt 4 with compatibility version >= 4 - by @lumirelle in [**~~https://github.com/nuxt-modules/robots/issues/272~~**](https://github.com/nuxt-modules/robots/issues/272) [`**(1bf24)**`](https://github.com/nuxt-modules/robots/commit/1bf2418) - **devtools**: Broken indexable status - by @harlan-zw [`**(b0030)**`](https://github.com/nuxt-modules/robots/commit/b003020) ##### [**~~View changes on GitHub~~**](https://github.com/nuxt-modules/robots/compare/v5.7.0...v5.7.1) - [Site Config](https://nuxtseo.com/docs/site-config/getting-started/introduction)4 months agov3.2.21 ### 🐞 Bug Fixes - Don't force https protocol in dev mode - by @harlan-zw in [**~~https://github.com/harlan-zw/nuxt-site-config/issues/79~~**](https://github.com/harlan-zw/nuxt-site-config/issues/79) [`**(6788d)**`](https://github.com/harlan-zw/nuxt-site-config/commit/6788d81) - Strip port from host when matching multi-tenancy config - by @harlan-zw in [**~~https://github.com/harlan-zw/nuxt-site-config/issues/80~~**](https://github.com/harlan-zw/nuxt-site-config/issues/80) [`**(863a8)**`](https://github.com/harlan-zw/nuxt-site-config/commit/863a8b3) ##### [**~~View changes on GitHub~~**](https://github.com/harlan-zw/nuxt-site-config/compare/v3.2.20...v3.2.21) - [Site Config](https://nuxtseo.com/docs/site-config/getting-started/introduction)5 months agov3.2.20 ### 🐞 Bug Fixes - Broken ipv6 loopback handling - by @harlan-zw [`**(e5e09)**`](https://github.com/harlan-zw/nuxt-site-config/commit/e5e09da) ##### [**~~View changes on GitHub~~**](https://github.com/harlan-zw/nuxt-site-config/compare/v3.2.19...v3.2.20) - [AI Ready](https://nuxtseo.com/docs/ai-ready/getting-started/introduction)5 months agov0.11.0 _No significant changes_##### [**~~View changes on GitHub~~**](https://github.com/nuxt-seo-pro/nuxt-ai-ready/compare/v0.10.12...v0.11.0) - [Nuxt SEO](https://nuxtseo.com/docs/nuxt-seo/getting-started/introduction)5 months agov3.4.0 This release brings major updates to Robots and Sitemap with `**definePageMeta()**` integration, a new `**zeroRuntime**` sitemap mode, a redesigned sitemap.xsl, and improved i18n support across modules, plus stability fixes throughout. Highlights: - **Robots**: New [`**definePageMeta()**`**~~ integration~~**](https://nuxtseo.com/docs/robots/guides/define-page-meta) for per-page robot rules and improved [**~~i18n custom route path~~**](https://nuxtseo.com/docs/robots/guides/i18n) support - **Sitemap**: New [`**zeroRuntime**`**~~ mode~~**](https://nuxtseo.com/docs/sitemap/guides/zero-runtime), [`**definePageMeta()**`**~~ integration~~**](https://nuxtseo.com/docs/sitemap/guides/define-page-meta), [**~~redesigned~~****~~ sitemap.xsl~~**](https://nuxtseo.com/docs/sitemap/guides/xsl) with light/dark mode, and [**~~Nuxt Content collection filters~~**](https://nuxtseo.com/docs/sitemap/integrations/content) - **OG Image**: v6 beta opt-in now supported ## ✅ Upgrading Our recommendation for upgrading is to run: ``` npx nuxt upgrade --dedupe ``` This will deduplicate your lockfile as well, and help ensure that you pull in updates from other dependencies that Nuxt relies on, particularly in the unjs ecosystem. ## 📦 Module Updates Nuxt Robots (v5.6.4 → v5.7.0) - ✨ Robots `**definePageMeta**` integration - ✨ i18n support for custom route paths in allow/disallow expansion - 🐛 Fix runtime resolution bug on `**@nuxtjs/robots/util**` - 🐛 Fix `**useBotDetection()**` empty when ran client-side only - 🐛 Fix broken route rules for Nuxt v3 - 🐛 Fix type augmentation / definitions rework - 🐛 Fix Content-Usage/Content-Signal parsing with spaces after commas - 🐛 Fix broken `**useRobotsRule**` type, prevent `**_robots.txt**` in final bundle Nuxt Sitemap (v7.4.9 → v7.6.0) - ✨ `**zeroRuntime**` mode for fully static sitemap generation - ✨ Build-time hook `**sitemap:prerender:done**` - ✨ Support sitemap on `**definePageMeta**` - ✨ Sitemap.xsl redesign with light/dark mode and validation warnings - ✨ Nuxt Content collection filters and `**onUrl**` function - ✨ DevTools UI refresh - ✨ `**parseSitemapIndex()**` utility - ⚡ Optimized XML generation, faster entry resolution, precomputed filter functions - 🐛 Fix memory leak on recursive sitemap requests - 🐛 Fix discoverImages missing body - 🐛 Fix chunked sitemaps with sitemapsPathPrefix `**/**` - 🐛 Fix i18n custom route paths, don't extract alternatives when autoI18n enabled - 🐛 Fix h3 v2 resolution, sitemaps with slash in name - 🐛 Fix type augments / overrides rework Nuxt Site Config (v3.2.11 → v3.2.19) - 🐛 Fix env support for internal origin URL resolution - 🐛 Fix `**getNitroOrigin**` resolution rework - 🐛 Fix DevTools broken build and 500 error - 🐛 Fix respect `**devServer.host**` - 🐛 Fix i18n possible memory leak - 🐛 Fix handle undefined `**import.meta.env**`[**~~View changes on GitHub~~**](https://github.com/harlan-zw/nuxt-seo/compare/v3.3.0...v3.4.0) - [Robots](https://nuxtseo.com/docs/robots/getting-started/introduction)5 months agov5.7.0 ### 🚀 Features - Robots definePageMeta - by @harlan-zw [`**(d696a)**`](https://github.com/nuxt-modules/robots/commit/d696aea) - **i18n**: Support custom route paths in allow/disallow expansion - by @harlan-zw [`**(13294)**`](https://github.com/nuxt-modules/robots/commit/13294fc) ### 🐞 Bug Fixes - Rework type augmentation / definitions - by @harlan-zw [`**(a8294)**`](https://github.com/nuxt-modules/robots/commit/a829485) - Prevent _robots.txt from being emitted in final bundle - by @harlan-zw [`**(3c6b1)**`](https://github.com/nuxt-modules/robots/commit/3c6b13f) - Broken type for useRobotsRule - by @harlan-zw [`**(b236d)**`](https://github.com/nuxt-modules/robots/commit/b236d7e) - Broken type for useRobotsRule - by @harlan-zw [`**(439c6)**`](https://github.com/nuxt-modules/robots/commit/439c6db) - **validator**: - Handle Content-Usage/Content-Signal with spaces after commas - by @harlan-zw [`**(277a0)**`](https://github.com/nuxt-modules/robots/commit/277a0d6) - Handle Content-Usage/Content-Signal with spaces after commas - by @harlan-zw in [**~~https://github.com/nuxt-modules/robots/issues/261~~**](https://github.com/nuxt-modules/robots/issues/261) [`**(3958a)**`](https://github.com/nuxt-modules/robots/commit/3958a19) ##### [**~~View changes on GitHub~~**](https://github.com/nuxt-modules/robots/compare/v5.6.8...v5.7.0) - [Site Config](https://nuxtseo.com/docs/site-config/getting-started/introduction)5 months agov3.2.19 ### 🐞 Bug Fixes - Handle undefined `**import.meta.env**` - by @harlan-zw [`**(7190f)**`](https://github.com/harlan-zw/nuxt-site-config/commit/7190fe1) ##### [**~~View changes on GitHub~~**](https://github.com/harlan-zw/nuxt-site-config/compare/v3.2.18...v3.2.19) - [Sitemap](https://nuxtseo.com/docs/sitemap/getting-started/introduction)5 months agov7.6.0 ### 🚀 Features - Support sitemap on `**definePageMeta**` - by @harlan-zw [`**(b61c5)**`](https://github.com/nuxt-modules/sitemap/commit/b61c5c2) - Expose sitemap validation warnings on XSL - by @harlan-zw [`**(d5d84)**`](https://github.com/nuxt-modules/sitemap/commit/d5d8466) - Sitemap.xsl redesign, light/dark mode - by @harlan-zw [`**(acc20)**`](https://github.com/nuxt-modules/sitemap/commit/acc2064) - **content**: - Collection filters - by @harlan-zw in [**~~https://github.com/nuxt-modules/sitemap/issues/520~~**](https://github.com/nuxt-modules/sitemap/issues/520) [`**(ae9cc)**`](https://github.com/nuxt-modules/sitemap/commit/ae9cc3b) - `**onUrl**` function - by @harlan-zw [`**(0eebd)**`](https://github.com/nuxt-modules/sitemap/commit/0eebd70) - **devtools**: - UI refresh - by @harlan-zw [`**(94d01)**`](https://github.com/nuxt-modules/sitemap/commit/94d0109) - **utils**: - `**parseSitemapIndex()**` - by @harlan-zw [`**(6001c)**`](https://github.com/nuxt-modules/sitemap/commit/6001c52) ### 🐞 Bug Fixes - Dev tip for sitemaps that don't produce URLs - by @harlan-zw [`**(ac22c)**`](https://github.com/nuxt-modules/sitemap/commit/ac22c95) - Rework type augments / overrides - by @harlan-zw [`**(895a7)**`](https://github.com/nuxt-modules/sitemap/commit/895a746) - Generating sitemaps with a slash (/) in the name #467 - by @harlan-zw in [**~~https://github.com/nuxt-modules/sitemap/issues/467~~**](https://github.com/nuxt-modules/sitemap/issues/467) [`**(bded4)**`](https://github.com/nuxt-modules/sitemap/commit/bded44e) - Warn on missing sitemaps - by @harlan-zw [`**(bd610)**`](https://github.com/nuxt-modules/sitemap/commit/bd6100f) - Throw error when prerendering empty sitemap sources - by @harlan-zw [`**(52ea7)**`](https://github.com/nuxt-modules/sitemap/commit/52ea7f2) - Avoid external API requests for internal - by @harlan-zw [`**(22739)**`](https://github.com/nuxt-modules/sitemap/commit/227399a) ##### [**~~View changes on GitHub~~**](https://github.com/nuxt-modules/sitemap/compare/v7.5.2...v7.6.0) - [AI Ready](https://nuxtseo.com/docs/ai-ready/getting-started/introduction)5 months agov0.10.12 ### 🚀 Features - Implement proper database connection lifecycle and cleanup - by @harlan-zw [`**(63b45)**`](https://github.com/nuxt-seo-pro/nuxt-ai-ready/commit/63b45e6) ##### [**~~View changes on GitHub~~**](https://github.com/nuxt-seo-pro/nuxt-ai-ready/compare/v0.10.11...v0.10.12) - [AI Ready](https://nuxtseo.com/docs/ai-ready/getting-started/introduction)5 months agov0.10.11 ### 🚀 Features - **prerender**: Add concurrency option and use KB for file size logs - by @harlan-zw [`**(9e178)**`](https://github.com/nuxt-seo-pro/nuxt-ai-ready/commit/9e178eb) ### 🐞 Bug Fixes - **module**: Silence node:sqlite rollup warning in virtual module - by @harlan-zw [`**(8e046)**`](https://github.com/nuxt-seo-pro/nuxt-ai-ready/commit/8e046f5) ##### [**~~View changes on GitHub~~**](https://github.com/nuxt-seo-pro/nuxt-ai-ready/compare/v0.10.10...v0.10.11) - [AI Ready](https://nuxtseo.com/docs/ai-ready/getting-started/introduction)6 months agov0.10.10 ### 🐞 Bug Fixes - **cloudflare-worker**: Not rechecking sitemap - by @harlan-zw [`**(42619)**`](https://github.com/nuxt-seo-pro/nuxt-ai-ready/commit/42619f4) ##### [**~~View changes on GitHub~~**](https://github.com/nuxt-seo-pro/nuxt-ai-ready/compare/v0.10.9...v0.10.10) - [Site Config](https://nuxtseo.com/docs/site-config/getting-started/introduction)6 months agov3.2.18 ### 🐞 Bug Fixes - **i18n**: Possible memory leak - by @harlan-zw [`**(32ba8)**`](https://github.com/harlan-zw/nuxt-site-config/commit/32ba8d2) ##### [**~~View changes on GitHub~~**](https://github.com/harlan-zw/nuxt-site-config/compare/v3.2.17...v3.2.18) - [Skew Protection](https://nuxtseo.com/docs/skew-protection/getting-started/introduction)6 months agov0.7.5 _No significant changes_##### [**~~View changes on GitHub~~**](https://github.com/nuxt-seo-pro/nuxt-skew-protection/compare/v0.7.4...v0.7.5) - [Skew Protection](https://nuxtseo.com/docs/skew-protection/getting-started/introduction)6 months agov0.7.4 ### 🐞 Bug Fixes - Module telementry - by @harlan-zw [`**(e92bb)**`](https://github.com/nuxt-seo-pro/nuxt-skew-protection/commit/e92bb4d) ##### [**~~View changes on GitHub~~**](https://github.com/nuxt-seo-pro/nuxt-skew-protection/compare/v0.7.3...v0.7.4) - [Skew Protection](https://nuxtseo.com/docs/skew-protection/getting-started/introduction)6 months agov0.7.3 ### 🐞 Bug Fixes - Broken latest.json manifest when previewing - by @harlan-zw [`**(b3a99)**`](https://github.com/nuxt-seo-pro/nuxt-skew-protection/commit/b3a99ee) ##### [**~~View changes on GitHub~~**](https://github.com/nuxt-seo-pro/nuxt-skew-protection/compare/v0.7.2...v0.7.3) - [Robots](https://nuxtseo.com/docs/robots/getting-started/introduction)6 months agov5.6.8 ### 🐞 Bug Fixes - Broken route rules for nuxt v3 - by @harlan-zw [`**(dd853)**`](https://github.com/nuxt-modules/robots/commit/dd8532c) ##### [**~~View changes on GitHub~~**](https://github.com/nuxt-modules/robots/compare/v5.6.7...v5.6.8) - [Site Config](https://nuxtseo.com/docs/site-config/getting-started/introduction)6 months agov3.2.17 ### 🐞 Bug Fixes - Respect `**devServer.host**` - by @harlan-zw [`**(4f22a)**`](https://github.com/harlan-zw/nuxt-site-config/commit/4f22a71) ##### [**~~View changes on GitHub~~**](https://github.com/harlan-zw/nuxt-site-config/compare/v3.2.16...v3.2.17) - [Sitemap](https://nuxtseo.com/docs/sitemap/getting-started/introduction)6 months agov7.5.2 ### 🐞 Bug Fixes - H3 v2 resolution bug - by @harlan-zw [`**(d1cc3)**`](https://github.com/nuxt-modules/sitemap/commit/d1cc3c8) ##### [**~~View changes on GitHub~~**](https://github.com/nuxt-modules/sitemap/compare/v7.5.1...v7.5.2) - [Site Config](https://nuxtseo.com/docs/site-config/getting-started/introduction)6 months agov3.2.16 _No significant changes_##### [**~~View changes on GitHub~~**](https://github.com/harlan-zw/nuxt-site-config/compare/v3.2.15...v3.2.16) - [Site Config](https://nuxtseo.com/docs/site-config/getting-started/introduction)6 months agov3.2.15 ### 🐞 Bug Fixes - Lock `**h3**` to v1 - by @harlan-zw [`**(e1397)**`](https://github.com/harlan-zw/nuxt-site-config/commit/e139793) ##### [**~~View changes on GitHub~~**](https://github.com/harlan-zw/nuxt-site-config/compare/v3.2.14...v3.2.15) - [Skew Protection](https://nuxtseo.com/docs/skew-protection/getting-started/introduction)6 months agov0.7.2 ### 🐞 Bug Fixes - Avoid running in prerender context - by @harlan-zw [`**(a2ab4)**`](https://github.com/nuxt-seo-pro/nuxt-skew-protection/commit/a2ab4b4) ##### [**~~View changes on GitHub~~**](https://github.com/nuxt-seo-pro/nuxt-skew-protection/compare/v0.7.1...v0.7.2) - [Skew Protection](https://nuxtseo.com/docs/skew-protection/getting-started/introduction)6 months agov0.7.1 ### 🐞 Bug Fixes - **cloudflare-durable**: Stats not working - by @harlan-zw [`**(e5ff0)**`](https://github.com/nuxt-seo-pro/nuxt-skew-protection/commit/e5ff050) ##### [**~~View changes on GitHub~~**](https://github.com/nuxt-seo-pro/nuxt-skew-protection/compare/v0.7.0...v0.7.1) - [Skew Protection](https://nuxtseo.com/docs/skew-protection/getting-started/introduction)6 months agov0.7.0 ### 🚨 Breaking Changes - Authorized stats and live connection routes - by @harlan-zw and **Claude Opus 4.5** in [**~~https://github.com/nuxt-seo-pro/nuxt-skew-protection/issues/8~~**](https://github.com/nuxt-seo-pro/nuxt-skew-protection/issues/8) [`**(75c52)**`](https://github.com/nuxt-seo-pro/nuxt-skew-protection/commit/75c52cd) ### 🐞 Bug Fixes - Disable websocket heartbeat - by @harlan-zw [`**(73d37)**`](https://github.com/nuxt-seo-pro/nuxt-skew-protection/commit/73d372f) - Possible memory leak on SSE - by @harlan-zw [`**(6938c)**`](https://github.com/nuxt-seo-pro/nuxt-skew-protection/commit/6938c2e) ##### [**~~View changes on GitHub~~**](https://github.com/nuxt-seo-pro/nuxt-skew-protection/compare/v0.6.0...v0.7.0) - [Sitemap](https://nuxtseo.com/docs/sitemap/getting-started/introduction)6 months agov7.5.1 ### 🐞 Bug Fixes - Normalize `**sitemap:sources**` hook - by @harlan-zw [`**(a021e)**`](https://github.com/nuxt-modules/sitemap/commit/a021e4d) - **i18n**: Support custom route paths - by @harlan-zw [`**(785ce)**`](https://github.com/nuxt-modules/sitemap/commit/785ce93) ##### [**~~View changes on GitHub~~**](https://github.com/nuxt-modules/sitemap/compare/v7.5.0...v7.5.1) - [Sitemap](https://nuxtseo.com/docs/sitemap/getting-started/introduction)7 months agov7.5.0 ### 🚀 Features - `**zeroRuntime**` mode - by @harlan-zw in [**~~https://github.com/nuxt-modules/sitemap/issues/532~~**](https://github.com/nuxt-modules/sitemap/issues/532) [`**(1fa92)**`](https://github.com/nuxt-modules/sitemap/commit/1fa92ee) - Build-time hook `**sitemap:prerender:done**` - by @harlan-zw in [**~~https://github.com/nuxt-modules/sitemap/issues/534~~**](https://github.com/nuxt-modules/sitemap/issues/534) [`**(a4051)**`](https://github.com/nuxt-modules/sitemap/commit/a405106) - Mark entries as pre-encoded `**_encoded: true**` - by @harlan-zw [`**(b1b17)**`](https://github.com/nuxt-modules/sitemap/commit/b1b1777) ### 🐞 Bug Fixes - Don't extract alternatives from HTML when autoI18n is enabled - by @harlan-zw in [**~~https://github.com/nuxt-modules/sitemap/issues/537~~**](https://github.com/nuxt-modules/sitemap/issues/537) [`**(018de)**`](https://github.com/nuxt-modules/sitemap/commit/018de0f) - Chunked sitemaps with sitemapsPathPrefix '/' - by @harlan-zw in [**~~https://github.com/nuxt-modules/sitemap/issues/536~~**](https://github.com/nuxt-modules/sitemap/issues/536) [`**(2d7db)**`](https://github.com/nuxt-modules/sitemap/commit/2d7db5a) - Priority `**1**` -> `**1.0**` - by @harlan-zw [`**(f6b9c)**`](https://github.com/nuxt-modules/sitemap/commit/f6b9cb7) ##### [**~~View changes on GitHub~~**](https://github.com/nuxt-modules/sitemap/compare/v7.4.11...v7.5.0) - [Sitemap](https://nuxtseo.com/docs/sitemap/getting-started/introduction)7 months agov7.4.11 ### 🐞 Bug Fixes - Memory leak on recursive sitemap requests - by @harlan-zw [`**(09957)**`](https://github.com/nuxt-modules/sitemap/commit/099578a) ### 🏎 Performance - Precompute filter functions - by @harlan-zw [`**(117eb)**`](https://github.com/nuxt-modules/sitemap/commit/117ebb6) ##### [**~~View changes on GitHub~~**](https://github.com/nuxt-modules/sitemap/compare/v7.4.10...v7.4.11) - [Sitemap](https://nuxtseo.com/docs/sitemap/getting-started/introduction)7 months agov7.4.10 ### 🐞 Bug Fixes - **discoverImages**: Missing body - by @farnabaz and @harlan-zw in [**~~https://github.com/nuxt-modules/sitemap/issues/531~~**](https://github.com/nuxt-modules/sitemap/issues/531) [`**(b9582)**`](https://github.com/nuxt-modules/sitemap/commit/b95823d) ### 🏎 Performance - Optimize xml generation - by @harlan-zw [`**(690f4)**`](https://github.com/nuxt-modules/sitemap/commit/690f414) - Faster resolutions of entries - by @harlan-zw [`**(0f2df)**`](https://github.com/nuxt-modules/sitemap/commit/0f2dfef) ##### [**~~View changes on GitHub~~**](https://github.com/nuxt-modules/sitemap/compare/v7.4.9...v7.4.10) - [Skew Protection](https://nuxtseo.com/docs/skew-protection/getting-started/introduction)7 months agov0.6.0 ### 🚨 Breaking Changes - Require @nuxtjs/robots v5.6.7+ - by @harlan-zw [`**(60eae)**`](https://github.com/nuxt-seo-pro/nuxt-skew-protection/commit/60eae7e) - Standardize message ids and buildId access - by @harlan-zw [`**(232ee)**`](https://github.com/nuxt-seo-pro/nuxt-skew-protection/commit/232ee21) - Initialize connections only with explicit usage - by @harlan-zw [`**(47a8f)**`](https://github.com/nuxt-seo-pro/nuxt-skew-protection/commit/47a8f50) - Clean up - by @harlan-zw [`**(f852d)**`](https://github.com/nuxt-seo-pro/nuxt-skew-protection/commit/f852d37) ### 🚀 Features - Block bots from ws/SSE update checks - by @harlan-zw [`**(427fb)**`](https://github.com/nuxt-seo-pro/nuxt-skew-protection/commit/427fbaa) - `**useSkewProtection()**` lazy mode - by @harlan-zw [`**(f3179)**`](https://github.com/nuxt-seo-pro/nuxt-skew-protection/commit/f3179f3) ### 🐞 Bug Fixes - **cloudflare-durable**: Safer live tracking - by @harlan-zw [`**(e48a9)**`](https://github.com/nuxt-seo-pro/nuxt-skew-protection/commit/e48a92e) ##### [**~~View changes on GitHub~~**](https://github.com/nuxt-seo-pro/nuxt-skew-protection/compare/v0.5.0...v0.6.0) - [Robots](https://nuxtseo.com/docs/robots/getting-started/introduction)7 months agov5.6.7 ### 🐞 Bug Fixes - `**useBotDetection()**` empty when ran client side only - by @harlan-zw [`**(7aba3)**`](https://github.com/nuxt-modules/robots/commit/7aba38f) ##### [**~~View changes on GitHub~~**](https://github.com/nuxt-modules/robots/compare/v5.6.6...v5.6.7) - [Skew Protection](https://nuxtseo.com/docs/skew-protection/getting-started/introduction)7 months agov0.5.0 ### 🚀 Features - View active connections - by @harlan-zw in [**~~https://github.com/nuxt-seo-pro/nuxt-skew-protection/issues/6~~**](https://github.com/nuxt-seo-pro/nuxt-skew-protection/issues/6) [`**(b03f3)**`](https://github.com/nuxt-seo-pro/nuxt-skew-protection/commit/b03f369) ### 🐞 Bug Fixes - Broken public path resolution - by @harlan-zw [`**(b6c34)**`](https://github.com/nuxt-seo-pro/nuxt-skew-protection/commit/b6c34cf) - Dispose storage connections - by @harlan-zw [`**(b22f0)**`](https://github.com/nuxt-seo-pro/nuxt-skew-protection/commit/b22f0ef) - Nicer errors for storage connection issues - by @harlan-zw [`**(6ad50)**`](https://github.com/nuxt-seo-pro/nuxt-skew-protection/commit/6ad50f3) ##### [**~~View changes on GitHub~~**](https://github.com/nuxt-seo-pro/nuxt-skew-protection/compare/v0.4.3...v0.5.0) - [Site Config](https://nuxtseo.com/docs/site-config/getting-started/introduction)7 months agov3.2.14 ### 🐞 Bug Fixes - **devtools**: Incorrect property leads to 500 error - by @canstand in [**~~https://github.com/harlan-zw/nuxt-site-config/issues/70~~**](https://github.com/harlan-zw/nuxt-site-config/issues/70) [`**(63ad0)**`](https://github.com/harlan-zw/nuxt-site-config/commit/63ad059) ##### [**~~View changes on GitHub~~**](https://github.com/harlan-zw/nuxt-site-config/compare/v3.2.13...v3.2.14) - [Site Config](https://nuxtseo.com/docs/site-config/getting-started/introduction)7 months agov3.2.13 ### 🐞 Bug Fixes - **devtools**: Broken build - by @harlan-zw [`**(21d9d)**`](https://github.com/harlan-zw/nuxt-site-config/commit/21d9d38) ##### [**~~View changes on GitHub~~**](https://github.com/harlan-zw/nuxt-site-config/compare/v3.2.12...v3.2.13) - [Skew Protection](https://nuxtseo.com/docs/skew-protection/getting-started/introduction)7 months agov0.4.3 ### 🐞 Bug Fixes - **perf**: Less fs operations - by @harlan-zw [`**(f5898)**`](https://github.com/nuxt-seo-pro/nuxt-skew-protection/commit/f58980b) ##### [**~~View changes on GitHub~~**](https://github.com/nuxt-seo-pro/nuxt-skew-protection/compare/v0.4.2...v0.4.3) - [Robots](https://nuxtseo.com/docs/robots/getting-started/introduction)7 months agov5.6.6 ### 🐞 Bug Fixes - Runtime resolution bug on `**@nuxtjs/robots/util**`" - by @harlan-zw [`**(4c64e)**`](https://github.com/nuxt-modules/robots/commit/4c64e4e) ##### [**~~View changes on GitHub~~**](https://github.com/nuxt-modules/robots/compare/v5.6.5...v5.6.6) - [Robots](https://nuxtseo.com/docs/robots/getting-started/introduction)7 months agov5.6.5 ### 🐞 Bug Fixes - Runtime resolution bug on `**@nuxtjs/robots/util**` - by @harlan-zw [`**(6c9ad)**`](https://github.com/nuxt-modules/robots/commit/6c9ade8) ##### [**~~View changes on GitHub~~**](https://github.com/nuxt-modules/robots/compare/v5.6.4...v5.6.5) - [Skew Protection](https://nuxtseo.com/docs/skew-protection/getting-started/introduction)7 months agov0.4.2 _No significant changes_##### [**~~View changes on GitHub~~**](https://github.com/nuxt-seo-pro/nuxt-skew-protection/compare/v0.4.1...v0.4.2) - [Nuxt SEO](https://nuxtseo.com/docs/nuxt-seo/getting-started/introduction)7 months agov3.3.0 This release brings significant updates across all Nuxt SEO modules with new features for robots and sitemap, plus numerous stability improvements throughout the ecosystem. Highlights: - **Robots**: Improved work on [`**Content-Signal**`**~~ directive~~**](https://nuxtseo.com/docs/robots/guides/ai-directives) support and [**~~Bot Detection~~**](https://nuxtseo.com/docs/robots/guides/bot-detection) - **Nuxt Content**: Improved Zod peer dependency handling ## ✅ Upgrading Our recommendation for upgrading is to run: ``` npx nuxt upgrade --dedupe ``` This will deduplicate your lockfile as well, and help ensure that you pull in updates from other dependencies that Nuxt relies on, particularly in the unjs ecosystem. ## 📦 Module Updates **Nuxt Robots** [**~~https://github.com/nuxt-modules/robots/releases/tag/v5.5.5~~**](https://github.com/nuxt-modules/robots/releases/tag/v5.5.5) → [**~~https://github.com/nuxt-modules/robots/releases/tag/v5.6.4~~**](https://github.com/nuxt-modules/robots/releases/tag/v5.6.4) - ✨ Improved Content-Signal support ([**~~https://github.com/nuxt-modules/robots/pull/226~~**](https://github.com/nuxt-modules/robots/pull/226)) - ✨ Bot Detection ([**~~https://github.com/nuxt-modules/robots/pull/210~~**](https://github.com/nuxt-modules/robots/pull/210)) - 🐛 Fix broken utility imports, missing zod peer dep, mock composables, disabled module handling **Nuxt Sitemap** [**~~https://github.com/nuxt-modules/sitemap/releases/tag/v7.4.7~~**](https://github.com/nuxt-modules/sitemap/releases/tag/v7.4.7) → [**~~https://github.com/nuxt-modules/sitemap/releases/tag/v7.4.9~~**](https://github.com/nuxt-modules/sitemap/releases/tag/v7.4.9) - ✨ Chunking support with URL filtering - 🐛 Fix Windows unicode escape errors when reading sources - 🐛 Fix prerendering pages not consistently appearing in sources - 🐛 Fix robots meta rules respected during prerendering - 🐛 Fix XML spec compliance (snake_case for geo_location) **Nuxt Link Checker** [**~~https://github.com/harlan-zw/nuxt-link-checker/releases/tag/v4.3.2~~**](https://github.com/harlan-zw/nuxt-link-checker/releases/tag/v4.3.2) → [**~~https://github.com/harlan-zw/nuxt-link-checker/releases/tag/v4.3.9~~**](https://github.com/harlan-zw/nuxt-link-checker/releases/tag/v4.3.9) - 🐛 Fix ignore all /_* paths - 🐛 Fix pages hang edge case - 🐛 Fix hanging when pages dir is missing - 🐛 JSON report only shows failing results - 🐛 Tree sort for markdown reports **Nuxt OG Image** [**~~https://github.com/harlan-zw/nuxt-og-image/releases/tag/v5.1.11~~**](https://github.com/harlan-zw/nuxt-og-image/releases/tag/v5.1.11) → [**~~https://github.com/harlan-zw/nuxt-og-image/releases/tag/v5.1.13~~**](https://github.com/harlan-zw/nuxt-og-image/releases/tag/v5.1.13) - 🐛 Fix broken Google font mirror - 🐛 Fix WASM Satori API compatibility - 🐛 Fix _query params disrupting render path **Nuxt Schema.org** [**~~https://github.com/harlan-zw/nuxt-schema-org/releases/tag/v5.0.9~~**](https://github.com/harlan-zw/nuxt-schema-org/releases/tag/v5.0.9) → [**~~https://github.com/harlan-zw/nuxt-schema-org/releases/tag/v5.0.10~~**](https://github.com/harlan-zw/nuxt-schema-org/releases/tag/v5.0.10) - 🐛 Fix zod as optional peer dep **Nuxt SEO Utils** [**~~https://github.com/harlan-zw/nuxt-seo-utils/releases/tag/v7.0.16~~**](https://github.com/harlan-zw/nuxt-seo-utils/releases/tag/v7.0.16) → [**~~https://github.com/harlan-zw/nuxt-seo-utils/releases/tag/v7.0.19~~**](https://github.com/harlan-zw/nuxt-seo-utils/releases/tag/v7.0.19) - 🐛 Fix Vite plugin ordering - 🐛 Fix normalize incorrect BCP 47 locales **Nuxt Site Config** [**~~https://github.com/harlan-zw/nuxt-site-config/releases/tag/v3.2.7~~**](https://github.com/harlan-zw/nuxt-site-config/releases/tag/v3.2.7) → [**~~https://github.com/harlan-zw/nuxt-site-config/releases/tag/v3.2.11~~**](https://github.com/harlan-zw/nuxt-site-config/releases/tag/v3.2.11) - 🐛 Fix redundant baseUrl warning in development - 🐛 Fix IPv6 address support in host parsing - 🐛 Fix safe runtime type generation [**~~https://github.com/harlan-zw/nuxt-seo/compare/v3.2.0...v3.3.0~~**](https://github.com/harlan-zw/nuxt-seo/compare/v3.2.0...v3.3.0) - [Site Config](https://nuxtseo.com/docs/site-config/getting-started/introduction)7 months agov3.2.12 ### 🐞 Bug Fixes - Support env for internal origin URL resolutions - by @JackTYM [`**(55ee0)**`](https://github.com/harlan-zw/nuxt-site-config/commit/55ee019) - Rework `**getNitroOrigin**` resolution - by @harlan-zw [`**(8f2a5)**`](https://github.com/harlan-zw/nuxt-site-config/commit/8f2a5a7) ##### [**~~View changes on GitHub~~**](https://github.com/harlan-zw/nuxt-site-config/compare/v3.2.11...v3.2.12) - [Schema.org](https://nuxtseo.com/docs/schema-org/getting-started/introduction)7 months agov5.0.10 ### 🐞 Bug Fixes - **content**: Optional `**zod**` peer dependency - by @harlan-zw [`**(b9987)**`](https://github.com/harlan-zw/nuxt-schema-org/commit/b9987d7) ##### [**~~View changes on GitHub~~**](https://github.com/harlan-zw/nuxt-schema-org/compare/v5.0.9...v5.0.10) - [Robots](https://nuxtseo.com/docs/robots/getting-started/introduction)7 months agov5.6.4 ### 🐞 Bug Fixes - Broken util imports - by @harlan-zw [`**(99d50)**`](https://github.com/nuxt-modules/robots/commit/99d5060) - **content**: Missing `**zod**` optional peer dependency - by @harlan-zw [`**(29fef)**`](https://github.com/nuxt-modules/robots/commit/29fef22) ##### [**~~View changes on GitHub~~**](https://github.com/nuxt-modules/robots/compare/v5.6.3...v5.6.4) - [Skew Protection](https://nuxtseo.com/docs/skew-protection/getting-started/introduction)7 months agov0.4.1 ### 🚀 Features - Third-party adapters - by @harlan-zw in [**~~https://github.com/nuxt-seo-pro/nuxt-skew-protection/issues/5~~**](https://github.com/nuxt-seo-pro/nuxt-skew-protection/issues/5) [`**(1487e)**`](https://github.com/nuxt-seo-pro/nuxt-skew-protection/commit/1487e07) ##### [**~~View changes on GitHub~~**](https://github.com/nuxt-seo-pro/nuxt-skew-protection/compare/v0.3.11...v0.4.1) - [Skew Protection](https://nuxtseo.com/docs/skew-protection/getting-started/introduction)7 months agov0.4.0 ### 🚀 Features - Third-party adapters - by @harlan-zw [`**(924f3)**`](https://github.com/nuxt-seo-pro/nuxt-skew-protection/commit/924f341) ### 🐞 Bug Fixes - Broken debug logs - by @harlan-zw [`**(eadd0)**`](https://github.com/nuxt-seo-pro/nuxt-skew-protection/commit/eadd041) - Drop reverb - by @harlan-zw [`**(10059)**`](https://github.com/nuxt-seo-pro/nuxt-skew-protection/commit/1005919) - Drop reverb - by @harlan-zw [`**(c5ed3)**`](https://github.com/nuxt-seo-pro/nuxt-skew-protection/commit/c5ed3b6) ##### [**~~View changes on GitHub~~**](https://github.com/nuxt-seo-pro/nuxt-skew-protection/compare/v0.3.11...v0.4.0) - [Skew Protection](https://nuxtseo.com/docs/skew-protection/getting-started/introduction)7 months agov0.3.11 ### 🐞 Bug Fixes - More debug logs for version restoration - by @harlan-zw [`**(8dcf4)**`](https://github.com/nuxt-seo-pro/nuxt-skew-protection/commit/8dcf41c) - Warn when falling back from static mode - by @harlan-zw [`**(ad7ab)**`](https://github.com/nuxt-seo-pro/nuxt-skew-protection/commit/ad7ab6d) - Show number of files restored per release - by @harlan-zw [`**(1cd18)**`](https://github.com/nuxt-seo-pro/nuxt-skew-protection/commit/1cd18ab) ##### [**~~View changes on GitHub~~**](https://github.com/nuxt-seo-pro/nuxt-skew-protection/compare/v0.3.10...v0.3.11) - [Skew Protection](https://nuxtseo.com/docs/skew-protection/getting-started/introduction)7 months agov0.3.10 ### 🐞 Bug Fixes - Add warning when there may be a misconfiguration - by @harlan-zw [`**(cfb62)**`](https://github.com/nuxt-seo-pro/nuxt-skew-protection/commit/cfb6279) ##### [**~~View changes on GitHub~~**](https://github.com/nuxt-seo-pro/nuxt-skew-protection/compare/v0.3.9...v0.3.10) - [Skew Protection](https://nuxtseo.com/docs/skew-protection/getting-started/introduction)7 months agov0.3.9 ### 🐞 Bug Fixes - Broken hash restore keys - by @harlan-zw [`**(6d173)**`](https://github.com/nuxt-seo-pro/nuxt-skew-protection/commit/6d17325) ##### [**~~View changes on GitHub~~**](https://github.com/nuxt-seo-pro/nuxt-skew-protection/compare/v0.3.8...v0.3.9) - [Skew Protection](https://nuxtseo.com/docs/skew-protection/getting-started/introduction)7 months agov0.3.8 ### 🐞 Bug Fixes - Validate Nuxt SEO Pro license - by @harlan-zw [`**(7e868)**`](https://github.com/nuxt-seo-pro/nuxt-skew-protection/commit/7e86822) ##### [**~~View changes on GitHub~~**](https://github.com/nuxt-seo-pro/nuxt-skew-protection/compare/v0.3.7...v0.3.8) - [Skew Protection](https://nuxtseo.com/docs/skew-protection/getting-started/introduction)7 months agov0.3.7 _No significant changes_##### [**~~View changes on GitHub~~**](https://github.com/nuxt-seo-pro/nuxt-skew-protection/compare/v0.3.6...v0.3.7) - [Robots](https://nuxtseo.com/docs/robots/getting-started/introduction)7 months agov5.6.3 ### 🐞 Bug Fixes - Mock composables for legacy integrations - by @harlan-zw [`**(0f8ab)**`](https://github.com/nuxt-modules/robots/commit/0f8abc2) ##### [**~~View changes on GitHub~~**](https://github.com/nuxt-modules/robots/compare/v5.6.2...v5.6.3) - [Robots](https://nuxtseo.com/docs/robots/getting-started/introduction)7 months agov5.6.2 ### 🐞 Bug Fixes - Broken internal alias when `**enabled: false**` - by @harlan-zw [`**(f9577)**`](https://github.com/nuxt-modules/robots/commit/f957793) ##### [**~~View changes on GitHub~~**](https://github.com/nuxt-modules/robots/compare/v5.6.1...v5.6.2) - [Sitemap](https://nuxtseo.com/docs/sitemap/getting-started/introduction)7 months agov7.4.9 ### 🐞 Bug Fixes - Chunking support with URL filtering - by @JackTYM [`**(6593d)**`](https://github.com/nuxt-modules/sitemap/commit/6593dbe) - ReadSourcesFromFilesystem unicode escape error on windows - by @yamachi4416 in [**~~https://github.com/nuxt-modules/sitemap/issues/523~~**](https://github.com/nuxt-modules/sitemap/issues/523) [`**(ae7d3)**`](https://github.com/nuxt-modules/sitemap/commit/ae7d3af) - Check for undefined data in sitemap prerender - by @harlan-zw in [**~~https://github.com/nuxt-modules/sitemap/issues/525~~**](https://github.com/nuxt-modules/sitemap/issues/525) [`**(853e5)**`](https://github.com/nuxt-modules/sitemap/commit/853e5b0) - Add null safety checks in nuxt page sitemap processing - by @harlan-zw in [**~~https://github.com/nuxt-modules/sitemap/issues/526~~**](https://github.com/nuxt-modules/sitemap/issues/526) [`**(0589b)**`](https://github.com/nuxt-modules/sitemap/commit/0589bf2) - Use snake_case for ImageEntry.geo_location to match XML spec - by @harlan-zw [**~~https://github.com/nuxt-modules/sitemap/issues/527~~**](https://github.com/nuxt-modules/sitemap/issues/527) [`**(f3e5d)**`](https://github.com/nuxt-modules/sitemap/commit/f3e5dd6) - **content**: `**zod**` peer dependency for schema merge - by @harlan-zw [`**(9fca6)**`](https://github.com/nuxt-modules/sitemap/commit/9fca62d) ##### [**~~View changes on GitHub~~**](https://github.com/nuxt-modules/sitemap/compare/v7.4.8...v7.4.9) - [Skew Protection](https://nuxtseo.com/docs/skew-protection/getting-started/introduction)7 months agov0.3.6 ### 🐞 Bug Fixes - Don't check for updates while offline - by @harlan-zw [`**(1a61f)**`](https://github.com/nuxt-seo-pro/nuxt-skew-protection/commit/1a61f53) - Change default storage path for reusability - by @harlan-zw [`**(cfc6f)**`](https://github.com/nuxt-seo-pro/nuxt-skew-protection/commit/cfc6f2a) ##### [**~~View changes on GitHub~~**](https://github.com/nuxt-seo-pro/nuxt-skew-protection/compare/v0.3.5...v0.3.6) - [SEO Utils](https://nuxtseo.com/docs/seo-utils/getting-started/introduction)7 months agov7.0.19 _No significant changes_##### [**~~View changes on GitHub~~**](https://github.com/harlan-zw/nuxt-seo-utils/compare/v7.0.18...v7.0.19) - [Robots](https://nuxtseo.com/docs/robots/getting-started/introduction)7 months agov5.6.1 ### 🐞 Bug Fixes - Handle `**enabled: false**` mocks properly - by @harlan-zw [`**(77676)**`](https://github.com/nuxt-modules/robots/commit/7767661) ##### [**~~View changes on GitHub~~**](https://github.com/nuxt-modules/robots/compare/v5.6.0...v5.6.1) - [Link Checker](https://nuxtseo.com/docs/link-checker/getting-started/introduction)7 months agov4.3.9 ### 🐞 Bug Fixes - Ignore all `**/_***` paths - by @harlan-zw [`**(1e5dd)**`](https://github.com/harlan-zw/nuxt-link-checker/commit/1e5dd5e) ##### [**~~View changes on GitHub~~**](https://github.com/harlan-zw/nuxt-link-checker/compare/v4.3.8...v4.3.9) - [Sitemap](https://nuxtseo.com/docs/sitemap/getting-started/introduction)7 months agov7.4.8 ### 🐞 Bug Fixes - Expose site config on debug endpoint - by @silverbackdan [`**(02b72)**`](https://github.com/nuxt-modules/sitemap/commit/02b72f6) - Prerendering pages not always in source - by @harlan-zw in [**~~https://github.com/nuxt-modules/sitemap/issues/506~~**](https://github.com/nuxt-modules/sitemap/issues/506) [`**(c098f)**`](https://github.com/nuxt-modules/sitemap/commit/c098f38) - Respect robots meta rule when prerendering - by @harlan-zw in [**~~https://github.com/nuxt-modules/sitemap/issues/507~~**](https://github.com/nuxt-modules/sitemap/issues/507) [`**(77f7e)**`](https://github.com/nuxt-modules/sitemap/commit/77f7e07) ##### [**~~View changes on GitHub~~**](https://github.com/nuxt-modules/sitemap/compare/v7.4.7...v7.4.8) - [Link Checker](https://nuxtseo.com/docs/link-checker/getting-started/introduction)7 months agov4.3.8 ### 🐞 Bug Fixes - Ignore # hrefs for some rules - by @harlan-zw [`**(dace5)**`](https://github.com/harlan-zw/nuxt-link-checker/commit/dace59d) - **reports**: Only show failing results in json - by @harlan-zw [`**(70306)**`](https://github.com/harlan-zw/nuxt-link-checker/commit/703064a) ##### [**~~View changes on GitHub~~**](https://github.com/harlan-zw/nuxt-link-checker/compare/v4.3.7...v4.3.8) - [Link Checker](https://nuxtseo.com/docs/link-checker/getting-started/introduction)7 months agov4.3.7 ### 🐞 Bug Fixes - Use tree sort for markdown report - by @harlan-zw [`**(10a35)**`](https://github.com/harlan-zw/nuxt-link-checker/commit/10a3583) ##### [**~~View changes on GitHub~~**](https://github.com/harlan-zw/nuxt-link-checker/compare/v4.3.6...v4.3.7) - [Robots](https://nuxtseo.com/docs/robots/getting-started/introduction)7 months agov5.6.0 ### 🚀 Features - Improved `**Content-Signal**` support - by @harlan-zw in [**~~https://github.com/nuxt-modules/robots/issues/251~~**](https://github.com/nuxt-modules/robots/issues/251) [`**(93d52)**`](https://github.com/nuxt-modules/robots/commit/93d525f) ### 🐞 Bug Fixes - **devtools**: Show better production hints - by @harlan-zw in [**~~https://github.com/nuxt-modules/robots/issues/252~~**](https://github.com/nuxt-modules/robots/issues/252) [`**(0a3ce)**`](https://github.com/nuxt-modules/robots/commit/0a3ce43) ##### [**~~View changes on GitHub~~**](https://github.com/nuxt-modules/robots/compare/v5.5.6...v5.6.0) - [Site Config](https://nuxtseo.com/docs/site-config/getting-started/introduction)9 months agov3.2.11 ### 🐞 Bug Fixes - Redundant baseUrl warning for development - by @harlan-zw [`**(fea63)**`](https://github.com/harlan-zw/nuxt-site-config/commit/fea63c8) ##### [**~~View changes on GitHub~~**](https://github.com/harlan-zw/nuxt-site-config/compare/v3.2.10...v3.2.11) - [SEO Utils](https://nuxtseo.com/docs/seo-utils/getting-started/introduction)9 months agov7.0.18 ### 🐞 Bug Fixes - Normalize incorrect BCP 47 locales - by @harlan-zw [`**(e5a28)**`](https://github.com/harlan-zw/nuxt-seo-utils/commit/e5a286e) ##### [**~~View changes on GitHub~~**](https://github.com/harlan-zw/nuxt-seo-utils/compare/v7.0.17...v7.0.18) - [Robots](https://nuxtseo.com/docs/robots/getting-started/introduction)9 months agov5.5.6 ### 🐞 Bug Fixes - Broken `**robots:config**` normalizing - by @harlan-zw in [**~~https://github.com/nuxt-modules/robots/issues/234~~**](https://github.com/nuxt-modules/robots/issues/234) [`**(59c44)**`](https://github.com/nuxt-modules/robots/commit/59c4454) - Support `**Content-Signal**` - by @harlan-zw [`**(092c3)**`](https://github.com/nuxt-modules/robots/commit/092c3b9) ##### [**~~View changes on GitHub~~**](https://github.com/nuxt-modules/robots/compare/v5.5.5...v5.5.6) - [Site Config](https://nuxtseo.com/docs/site-config/getting-started/introduction)9 months agov3.2.10 ### 🐞 Bug Fixes - Support IPv6 addresses in getNitroOrigin host parsing - by @Eazash in [**~~https://github.com/harlan-zw/nuxt-site-config/issues/66~~**](https://github.com/harlan-zw/nuxt-site-config/issues/66) [`**(25eb3)**`](https://github.com/harlan-zw/nuxt-site-config/commit/25eb3cc) ##### [**~~View changes on GitHub~~**](https://github.com/harlan-zw/nuxt-site-config/compare/v3.2.9...v3.2.10) - [Link Checker](https://nuxtseo.com/docs/link-checker/getting-started/introduction)9 months agov4.3.6 ### 🐞 Bug Fixes - Pages hang issue edge case - by @harlan-zw [`**(ad8ad)**`](https://github.com/harlan-zw/nuxt-link-checker/commit/ad8adee) ##### [**~~View changes on GitHub~~**](https://github.com/harlan-zw/nuxt-link-checker/compare/v4.3.5...v4.3.6) - [Link Checker](https://nuxtseo.com/docs/link-checker/getting-started/introduction)9 months agov4.3.5 ### 🐞 Bug Fixes - Hanging when `**pages**` dir is missing - by @harlan-zw [`**(05602)**`](https://github.com/harlan-zw/nuxt-link-checker/commit/0560236) ##### [**~~View changes on GitHub~~**](https://github.com/harlan-zw/nuxt-link-checker/compare/v4.3.4...v4.3.5) - [Link Checker](https://nuxtseo.com/docs/link-checker/getting-started/introduction)9 months agov4.3.4 _No significant changes_##### [**~~View changes on GitHub~~**](https://github.com/harlan-zw/nuxt-link-checker/compare/v4.3.3...v4.3.4) - [Link Checker](https://nuxtseo.com/docs/link-checker/getting-started/introduction)9 months agov4.3.3 ### 🐞 Bug Fixes - Safer runtime remote URL compat check - by @harlan-zw [`**(2cbf1)**`](https://github.com/harlan-zw/nuxt-link-checker/commit/2cbf127) ##### [**~~View changes on GitHub~~**](https://github.com/harlan-zw/nuxt-link-checker/compare/v4.3.2...v4.3.3) - [Site Config](https://nuxtseo.com/docs/site-config/getting-started/introduction)9 months agov3.2.9 ### 🐞 Bug Fixes - Safe runtime type generation - by @harlan-zw [`**(8a7f2)**`](https://github.com/harlan-zw/nuxt-site-config/commit/8a7f2dd) ##### [**~~View changes on GitHub~~**](https://github.com/harlan-zw/nuxt-site-config/compare/v3.2.8...v3.2.9) - [Nuxt SEO](https://nuxtseo.com/docs/nuxt-seo/getting-started/introduction)10 months agov3.2.2 _No significant changes_##### [**~~View changes on GitHub~~**](https://github.com/harlan-zw/nuxt-seo/compare/v3.2.1...v3.2.2) - [SEO Utils](https://nuxtseo.com/docs/seo-utils/getting-started/introduction)10 months agov7.0.17 ### 🐞 Bug Fixes - Broken vite plugin ordering - by @harlan-zw [`**(a4dce)**`](https://github.com/harlan-zw/nuxt-seo-utils/commit/a4dce75) ##### [**~~View changes on GitHub~~**](https://github.com/harlan-zw/nuxt-seo-utils/compare/v7.0.16...v7.0.17) - [Nuxt SEO](https://nuxtseo.com/docs/nuxt-seo/getting-started/introduction)10 months agov3.2.1 _No significant changes_##### [**~~View changes on GitHub~~**](https://github.com/harlan-zw/nuxt-seo/compare/v3.2.0...v3.2.1) - [Nuxt SEO](https://nuxtseo.com/docs/nuxt-seo/getting-started/introduction)10 months agov3.2.0 This version implements [**~~module dependencies~~**](https://nuxt.com/blog/v4-1#module-development-enhancements) that are available with Nuxt v4.1, and improved [**~~Nuxt Content v3.7 compatibility~~**](https://github.com/nuxt/content/releases/tag/v3.7.0) and [**~~NPM trusted publishing~~**](https://docs.npmjs.com/trusted-publishers) for all modules for improved security. It bumps the Nuxt Robots versions, which include the new features: - `**Content-Usage**` directive [**~~https://github.com/nuxt-modules/robots/pull/226~~**](https://github.com/nuxt-modules/robots/pull/226) - Bot Detection [**~~https://github.com/nuxt-modules/robots/pull/210~~**](https://github.com/nuxt-modules/robots/pull/210) ### 🐞 Bug Fixes - Nuxt Content v3.7 compatibility - by @harlan-zw [`**(90214)**`](https://github.com/harlan-zw/nuxt-seo/commit/9021496) - Explicit `**moduleDependencies**` - by @harlan-zw [`**(73fd6)**`](https://github.com/harlan-zw/nuxt-seo/commit/73fd636) - NPM Trusted Publishing - by @harlan-zw [`**(ed173)**`](https://github.com/harlan-zw/nuxt-seo/commit/ed17362) ### 📦 Dependencies Updated SEO related packages: - [**~~@nuxtjs/robots~~**](https://github.com/nuxt-modules/robots): 5.2.11 → 5.5.5 - [**~~@nuxtjs/sitemap~~**](https://github.com/nuxt-modules/sitemap): 7.4.2 → 7.4.7 - [**~~nuxt-link-checker~~**](https://github.com/harlan-zw/nuxt-link-checker): 4.3.1 → 4.3.2 - [**~~nuxt-og-image~~**](https://github.com/harlan-zw/nuxt-og-image): 5.1.8 → 5.1.11 - [**~~nuxt-schema-org~~**](https://github.com/harlan-zw/nuxt-schema-org): 5.0.6 → 5.0.9 - [**~~nuxt-seo-utils~~**](https://github.com/harlan-zw/nuxt-seo-utils): 7.0.12 → 7.0.16 - [**~~nuxt-site-config~~**](https://github.com/harlan-zw/nuxt-site-config): 3.2.2 → 3.2.7 These updates bring the latest bug fixes and improvements from the Nuxt SEO ecosystem. ##### [**~~View changes on GitHub~~**](https://github.com/harlan-zw/nuxt-seo/compare/v3.1.0...v3.2.0) - [Site Config](https://nuxtseo.com/docs/site-config/getting-started/introduction)10 months agov3.2.8 ### 🐞 Bug Fixes - Broken `**dist**` publishing - by @harlan-zw [`**(74464)**`](https://github.com/harlan-zw/nuxt-site-config/commit/744648c) ##### [**~~View changes on GitHub~~**](https://github.com/harlan-zw/nuxt-site-config/compare/v3.2.7...v3.2.8) - [Site Config](https://nuxtseo.com/docs/site-config/getting-started/introduction)10 months agov3.2.7 _No significant changes_##### [**~~View changes on GitHub~~**](https://github.com/harlan-zw/nuxt-site-config/compare/v3.2.6...v3.2.7) - [Site Config](https://nuxtseo.com/docs/site-config/getting-started/introduction)10 months agov3.2.6 ### 🐞 Bug Fixes - NPM Trusted Publishing - by @harlan-zw [`**(f4948)**`](https://github.com/harlan-zw/nuxt-site-config/commit/f494873) ##### [**~~View changes on GitHub~~**](https://github.com/harlan-zw/nuxt-site-config/compare/v3.2.5...v3.2.6) - [Link Checker](https://nuxtseo.com/docs/link-checker/getting-started/introduction)10 months agov4.3.2 ### 🐞 Bug Fixes - Explicit `**moduleDependencies**` - by @harlan-zw [`**(9a380)**`](https://github.com/harlan-zw/nuxt-link-checker/commit/9a38054) - NPM trusted publishing - by @harlan-zw [`**(46335)**`](https://github.com/harlan-zw/nuxt-link-checker/commit/463353b) ##### [**~~View changes on GitHub~~**](https://github.com/harlan-zw/nuxt-link-checker/compare/v4.3.1...v4.3.2) - [SEO Utils](https://nuxtseo.com/docs/seo-utils/getting-started/introduction)10 months agov7.0.16 ### 🐞 Bug Fixes - Broken `**dist**` publishing - by @harlan-zw [`**(bfc4d)**`](https://github.com/harlan-zw/nuxt-seo-utils/commit/bfc4d16) ##### [**~~View changes on GitHub~~**](https://github.com/harlan-zw/nuxt-seo-utils/compare/v7.0.15...v7.0.16) - [Schema.org](https://nuxtseo.com/docs/schema-org/getting-started/introduction)10 months agov5.0.9 _No significant changes_##### [**~~View changes on GitHub~~**](https://github.com/harlan-zw/nuxt-schema-org/compare/v5.0.8...v5.0.9) - [Sitemap](https://nuxtseo.com/docs/sitemap/getting-started/introduction)10 months agov7.4.7 _No significant changes_##### [**~~View changes on GitHub~~**](https://github.com/nuxt-modules/sitemap/compare/v7.4.6...v7.4.7) - [Schema.org](https://nuxtseo.com/docs/schema-org/getting-started/introduction)10 months agov5.0.8 ### 🐞 Bug Fixes - Broken `**dist**` publishing - by @harlan-zw [`**(506a4)**`](https://github.com/harlan-zw/nuxt-schema-org/commit/506a4df) ##### [**~~View changes on GitHub~~**](https://github.com/harlan-zw/nuxt-schema-org/compare/v5.0.7...v5.0.8) - [Sitemap](https://nuxtseo.com/docs/sitemap/getting-started/introduction)10 months agov7.4.6 ### 🐞 Bug Fixes - Broken `**dist**` publishing - by @harlan-zw [`**(b77e1)**`](https://github.com/nuxt-modules/sitemap/commit/b77e1ae) - Broken `**dist**` publishing - by @harlan-zw [`**(6218d)**`](https://github.com/nuxt-modules/sitemap/commit/6218d32) - Add `**@nuxtjs/robots**` as optional dependency - by @harlan-zw [`**(da80a)**`](https://github.com/nuxt-modules/sitemap/commit/da80ab9) ##### [**~~View changes on GitHub~~**](https://github.com/nuxt-modules/sitemap/compare/v7.4.5...v7.4.6) - [SEO Utils](https://nuxtseo.com/docs/seo-utils/getting-started/introduction)10 months agov7.0.15 ### 🐞 Bug Fixes - NPM Trusted Publishing - by @harlan-zw [`**(6e225)**`](https://github.com/harlan-zw/nuxt-seo-utils/commit/6e2257b) - Explicit `**moduleDependencies**` - by @harlan-zw [`**(06f02)**`](https://github.com/harlan-zw/nuxt-seo-utils/commit/06f027c) ##### [**~~View changes on GitHub~~**](https://github.com/harlan-zw/nuxt-seo-utils/compare/v7.0.14...v7.0.15) - [Schema.org](https://nuxtseo.com/docs/schema-org/getting-started/introduction)10 months agov5.0.7 ### 🐞 Bug Fixes - NPM trusted publishing - by @harlan-zw [`**(8885d)**`](https://github.com/harlan-zw/nuxt-schema-org/commit/8885d9b) - Explicit `**moduleDependencies**` - by @harlan-zw [`**(3d5ba)**`](https://github.com/harlan-zw/nuxt-schema-org/commit/3d5ba02) - Nuxt Content v3.7 compatibility - by @harlan-zw [`**(2f845)**`](https://github.com/harlan-zw/nuxt-schema-org/commit/2f8455b) ##### [**~~View changes on GitHub~~**](https://github.com/harlan-zw/nuxt-schema-org/compare/v5.0.6...v5.0.7) - [Site Config](https://nuxtseo.com/docs/site-config/getting-started/introduction)10 months agov3.2.5 _No significant changes_##### [**~~View changes on GitHub~~**](https://github.com/harlan-zw/nuxt-site-config/compare/v3.2.4...v3.2.5) - [Site Config](https://nuxtseo.com/docs/site-config/getting-started/introduction)10 months agov3.2.4 ### 🐞 Bug Fixes - Broken export paths - by @harlan-zw [`**(1f131)**`](https://github.com/harlan-zw/nuxt-site-config/commit/1f1312c) ##### [**~~View changes on GitHub~~**](https://github.com/harlan-zw/nuxt-site-config/compare/v3.2.3...v3.2.4) - [Site Config](https://nuxtseo.com/docs/site-config/getting-started/introduction)10 months agov3.2.3 ### 🐞 Bug Fixes - Explicit `**moduleDependencies**` for i18n integrations - by @harlan-zw [`**(0ea8e)**`](https://github.com/harlan-zw/nuxt-site-config/commit/0ea8e25) - Peer dependency on h3 v1 - by @harlan-zw [`**(7c6e9)**`](https://github.com/harlan-zw/nuxt-site-config/commit/7c6e927) - **nitro**: Prefer `**get***` function names over `**use***` - by @harlan-zw [`**(94342)**`](https://github.com/harlan-zw/nuxt-site-config/commit/9434288) ##### [**~~View changes on GitHub~~**](https://github.com/harlan-zw/nuxt-site-config/compare/v3.2.2...v3.2.3) - [SEO Utils](https://nuxtseo.com/docs/seo-utils/getting-started/introduction)last yearv7.0.14 ### 🐞 Bug Fixes - **useBreadcrumbItems**: Ensure overrides take precedence over route.meta.breadcrumb - by @Vincentdevreede in [**~~https://github.com/harlan-zw/nuxt-seo-utils/issues/69~~**](https://github.com/harlan-zw/nuxt-seo-utils/issues/69) [`**(967d0)**`](https://github.com/harlan-zw/nuxt-seo-utils/commit/967d079) ##### [**~~View changes on GitHub~~**](https://github.com/harlan-zw/nuxt-seo-utils/compare/v7.0.13...v7.0.14) - [SEO Utils](https://nuxtseo.com/docs/seo-utils/getting-started/introduction)last yearv7.0.13 ### 🐞 Bug Fixes - Get latest match for nested routes - by @maartenvanhunsel [`**(29bcc)**`](https://github.com/harlan-zw/nuxt-seo-utils/commit/29bcc9d) ##### [**~~View changes on GitHub~~**](https://github.com/harlan-zw/nuxt-seo-utils/compare/v7.0.12...v7.0.13) - [Nuxt SEO](https://nuxtseo.com/docs/nuxt-seo/getting-started/introduction)last yearv3.1.0 ## 📦 Dependencies Updated SEO related packages: - [**~~@nuxtjs/robots~~**](https://github.com/nuxt-modules/robots): 5.2.10 → 5.2.11 - [**~~@nuxtjs/sitemap~~**](https://github.com/nuxt-modules/sitemap): 7.2.10 → 7.4.2 (minor version bump) - [**~~nuxt-link-checker~~**](https://github.com/harlan-zw/nuxt-link-checker): 4.3.0 → 4.3.1 - [**~~nuxt-og-image~~**](https://github.com/harlan-zw/nuxt-og-image): 5.1.2 → 5.1.8 - [**~~nuxt-schema-org~~**](https://github.com/harlan-zw/nuxt-schema-org): 5.0.5 → 5.0.6 - [**~~nuxt-seo-utils~~**](https://github.com/harlan-zw/nuxt-seo-utils): 7.0.9 → 7.0.12 - [**~~nuxt-site-config~~**](https://github.com/harlan-zw/nuxt-site-config): 3.1.9 → 3.2.2 (minor version bump) These updates bring the latest bug fixes and improvements from the Nuxt SEO ecosystem, namely: - 🐛 Improved stability for I18n integration - 🐛 Nuxt Content v3.6.0 compatibility - [Schema.org](https://nuxtseo.com/docs/schema-org/getting-started/introduction)last yearv5.0.6 ### 🐞 Bug Fixes - **content**: Support schema augmentation - by @harlan-zw [`**(e8a11)**`](https://github.com/harlan-zw/nuxt-schema-org/commit/e8a11db) ##### [**~~View changes on GitHub~~**](https://github.com/harlan-zw/nuxt-schema-org/compare/v5.0.5...v5.0.6) - [Link Checker](https://nuxtseo.com/docs/link-checker/getting-started/introduction)last yearv4.3.1 ### 🐞 Bug Fixes - Prefer `**nitro.static**` over `**_generate**` - by @danielroe in [**~~https://github.com/harlan-zw/nuxt-link-checker/issues/62~~**](https://github.com/harlan-zw/nuxt-link-checker/issues/62) [`**(a1953)**`](https://github.com/harlan-zw/nuxt-link-checker/commit/a195394) - **deps**: Upgrade to content v3.6 - by @dargmuesli in [**~~https://github.com/harlan-zw/nuxt-link-checker/issues/63~~**](https://github.com/harlan-zw/nuxt-link-checker/issues/63) [`**(13347)**`](https://github.com/harlan-zw/nuxt-link-checker/commit/13347e2) ##### [**~~View changes on GitHub~~**](https://github.com/harlan-zw/nuxt-link-checker/compare/v4.3.0...v4.3.1) - [SEO Utils](https://nuxtseo.com/docs/seo-utils/getting-started/introduction)last yearv7.0.12 ### 🐞 Bug Fixes - Honour site config `**defaultLocale**`, fallback to `**en**` - by @harlan-zw [`**(86f02)**`](https://github.com/harlan-zw/nuxt-seo-utils/commit/86f0296) - **useBreadcrumbItems**: Switch `**watch**` to sync mode - by @zumm in [**~~https://github.com/harlan-zw/nuxt-seo-utils/issues/63~~**](https://github.com/harlan-zw/nuxt-seo-utils/issues/63) [`**(75faa)**`](https://github.com/harlan-zw/nuxt-seo-utils/commit/75faae6) ##### [**~~View changes on GitHub~~**](https://github.com/harlan-zw/nuxt-seo-utils/compare/v7.0.11...v7.0.12) - [Nuxt SEO](https://nuxtseo.com/docs/nuxt-seo/getting-started/introduction)last yearv3.0.3 ## 📦 Dependencies Updated SEO related packages: - `**@nuxtjs/robots**`: ^5.2.8 → ^5.2.10 - `**@nuxtjs/sitemap**`: ^7.2.9 → ^7.2.10 - `**nuxt-og-image**`: ^5.1.1 → ^5.1.2 - `**nuxt-schema-org**`: ^5.0.4 → ^5.0.5 - `**nuxt-seo-utils**`: ^7.0.5 → ^7.0.8 - `**nuxt-site-config**`: ^3.1.7 → ^3.1.9 These updates bring the latest bug fixes and improvements from the Nuxt SEO ecosystem. When using PNPM please run `**pnpm dedupe**` after upgrade. ##### [**~~View changes on GitHub~~**](https://github.com/harlan-zw/nuxt-seo/compare/v3.0.2...v3.0.3) - [Schema.org](https://nuxtseo.com/docs/schema-org/getting-started/introduction)last yearv5.0.5 ### 🐞 Bug Fixes - **docs**: Fixed broken links to nodes and recipes for schema docs - by @ThomasWT in [**~~https://github.com/harlan-zw/nuxt-schema-org/issues/83~~**](https://github.com/harlan-zw/nuxt-schema-org/issues/83) [`**(46d03)**`](https://github.com/harlan-zw/nuxt-schema-org/commit/46d033f) ##### [**~~View changes on GitHub~~**](https://github.com/harlan-zw/nuxt-schema-org/compare/v5.0.4...v5.0.5) - [Nuxt SEO](https://nuxtseo.com/docs/nuxt-seo/getting-started/introduction)last yearv3.0.2 _No significant changes_##### [**~~View changes on GitHub~~**](https://github.com/harlan-zw/nuxt-seo/compare/v3.0.1...v3.0.2) - [Link Checker](https://nuxtseo.com/docs/link-checker/getting-started/introduction)last yearv4.3.0 ### 🚀 Features - **prerender**: Re-enable default 404 link checking - by @harlan-zw in [**~~https://github.com/harlan-zw/nuxt-link-checker/issues/56~~**](https://github.com/harlan-zw/nuxt-link-checker/issues/56) [`**(da0a2)**`](https://github.com/harlan-zw/nuxt-link-checker/commit/da0a23d) ### 🐞 Bug Fixes - **prerender**: Add issue summary to HTML report - by @harlan-zw [`**(b089b)**`](https://github.com/harlan-zw/nuxt-link-checker/commit/b089b83) ##### [**~~View changes on GitHub~~**](https://github.com/harlan-zw/nuxt-link-checker/compare/v4.2.0...v4.3.0) - [Link Checker](https://nuxtseo.com/docs/link-checker/getting-started/introduction)last yearv4.2.0 #### New Publishable Reports The markdown and HTML reports have been reworked for improved usability. Reports are now also publically publishable. Check a live example here: /**link-checker**/link-checker-report. ### 🚀 Features - New `**html**` and `**markdown**` report templates - by @harlan-zw in [**~~https://github.com/harlan-zw/nuxt-link-checker/issues/54~~**](https://github.com/harlan-zw/nuxt-link-checker/issues/54) [`**(ebd40)**`](https://github.com/harlan-zw/nuxt-link-checker/commit/ebd40c6) - Publishable reports - by @harlan-zw in [**~~https://github.com/harlan-zw/nuxt-link-checker/issues/55~~**](https://github.com/harlan-zw/nuxt-link-checker/issues/55) [`**(95e5b)**`](https://github.com/harlan-zw/nuxt-link-checker/commit/95e5b80) ### 🐞 Bug Fixes - Report emitted reports from cwd - by @harlan-zw [`**(9fa91)**`](https://github.com/harlan-zw/nuxt-link-checker/commit/9fa916b) - Only show stdout logs if reports are disabled - by @harlan-zw [`**(8f222)**`](https://github.com/harlan-zw/nuxt-link-checker/commit/8f222ae) - False positives from nuxt content hashes - by @harlan-zw [`**(0c00f)**`](https://github.com/harlan-zw/nuxt-link-checker/commit/0c00f7e) ### 🏎 Performance - `**ultrahtml**` for link parsing - by @harlan-zw in [**~~https://github.com/harlan-zw/nuxt-link-checker/issues/53~~**](https://github.com/harlan-zw/nuxt-link-checker/issues/53) [`**(270ae)**`](https://github.com/harlan-zw/nuxt-link-checker/commit/270aec7) - **prerendering**: Batch processing for reduced memory usage - by @harlan-zw [`**(63f49)**`](https://github.com/harlan-zw/nuxt-link-checker/commit/63f49fa) ##### [**~~View changes on GitHub~~**](https://github.com/harlan-zw/nuxt-link-checker/compare/v4.1.1...v4.2.0) - [Nuxt SEO](https://nuxtseo.com/docs/nuxt-seo/getting-started/introduction)last yearv3.0.1 _No significant changes_##### [**~~View changes on GitHub~~**](https://github.com/harlan-zw/nuxt-seo/compare/v3.0.0...v3.0.1) - [Nuxt SEO](https://nuxtseo.com/docs/nuxt-seo/getting-started/introduction)last yearv3.0.0Major ### 🚨 Breaking Changes - Bump modules to 3.16 compatibility - by @harlan-zw [`**(70963)**`](https://github.com/harlan-zw/nuxt-seo/commit/7096323) ##### [**~~View changes on GitHub~~**](https://github.com/harlan-zw/nuxt-seo/compare/v2.2.0...v3.0.0) - [Schema.org](https://nuxtseo.com/docs/schema-org/getting-started/introduction)last yearv5.0.4 ### 🐞 Bug Fixes - Don't depend on `**@unhead/schema**` implicitly - by @harlan-zw [`**(549b7)**`](https://github.com/harlan-zw/nuxt-schema-org/commit/549b723) - Disable schema.org on error pages - by @harlan-zw [`**(1f1cf)**`](https://github.com/harlan-zw/nuxt-schema-org/commit/1f1cf9e) - **devtools**: - Disable code lines - by @harlan-zw [`**(b7b73)**`](https://github.com/harlan-zw/nuxt-schema-org/commit/b7b73a0) - Runtime config not coming through - by @harlan-zw [`**(7d93e)**`](https://github.com/harlan-zw/nuxt-schema-org/commit/7d93e2a) - Reactive schema.org - by @harlan-zw [`**(ce58d)**`](https://github.com/harlan-zw/nuxt-schema-org/commit/ce58dad) ##### [**~~View changes on GitHub~~**](https://github.com/harlan-zw/nuxt-schema-org/compare/v5.0.3...v5.0.4) - [Nuxt SEO](https://nuxtseo.com/docs/nuxt-seo/getting-started/introduction)last yearv3.0.0-beta.3 _No significant changes_##### [**~~View changes on GitHub~~**](https://github.com/harlan-zw/nuxt-seo/compare/v3.0.0-beta.2...v3.0.0-beta.3) - [Schema.org](https://nuxtseo.com/docs/schema-org/getting-started/introduction)last yearv5.0.3 ### 🐞 Bug Fixes - Maybe resolve unref'd inLanguage - by @harlan-zw [`**(7a1ef)**`](https://github.com/harlan-zw/nuxt-schema-org/commit/7a1efaa) - Non explicit peer dependency - by @harlan-zw [`**(f02db)**`](https://github.com/harlan-zw/nuxt-schema-org/commit/f02dbcb) ##### [**~~View changes on GitHub~~**](https://github.com/harlan-zw/nuxt-schema-org/compare/v5.0.2...v5.0.3) - [Nuxt SEO](https://nuxtseo.com/docs/nuxt-seo/getting-started/introduction)last yearv3.0.0-beta.2 ### 🚨 Breaking Changes - Bump modules to 3.16 compatibility - by @harlan-zw [`**(24070)**`](https://github.com/harlan-zw/nuxt-seo/commit/2407033) ##### [**~~View changes on GitHub~~**](https://github.com/harlan-zw/nuxt-seo/compare/v3.0.0-beta.1...v3.0.0-beta.2) - [Schema.org](https://nuxtseo.com/docs/schema-org/getting-started/introduction)last yearv5.0.2 ### 🐞 Bug Fixes - Ensure `**host**` has trailing slash - by @harlan-zw [`**(c932f)**`](https://github.com/harlan-zw/nuxt-schema-org/commit/c932f37) - Resolve `**inLanguage**` ref - by @harlan-zw [`**(8bfe7)**`](https://github.com/harlan-zw/nuxt-schema-org/commit/8bfe747) ##### [**~~View changes on GitHub~~**](https://github.com/harlan-zw/nuxt-schema-org/compare/v5.0.1...v5.0.2) - [Nuxt SEO](https://nuxtseo.com/docs/nuxt-seo/getting-started/introduction)last yearv3.0.0-beta.1 ### 🚨 Breaking Changes - Bump modules to 3.16 compatibility - by @harlan-zw [`**(70963)**`](https://github.com/harlan-zw/nuxt-seo/commit/7096323) ##### [**~~View changes on GitHub~~**](https://github.com/harlan-zw/nuxt-seo/compare/v2.2.0...v3.0.0-beta.1) - [Schema.org](https://nuxtseo.com/docs/schema-org/getting-started/introduction)last yearv5.0.1 ### 🐞 Bug Fixes - Reactive options not unref'd - by @harlan-zw [`**(fe9a0)**`](https://github.com/harlan-zw/nuxt-schema-org/commit/fe9a02f) ##### [**~~View changes on GitHub~~**](https://github.com/harlan-zw/nuxt-schema-org/compare/v5.0.0...v5.0.1) - [Schema.org](https://nuxtseo.com/docs/schema-org/getting-started/introduction)last yearv5.0.0Major ### 🚨 Breaking Changes - Require Nuxt v3.16 - by @harlan-zw [`**(f3477)**`](https://github.com/harlan-zw/nuxt-schema-org/commit/f34770c) ##### [**~~View changes on GitHub~~**](https://github.com/harlan-zw/nuxt-schema-org/compare/v4.1.3...v5.0.0) - [Schema.org](https://nuxtseo.com/docs/schema-org/getting-started/introduction)last yearv4.1.3 ### 🐞 Bug Fixes - Correct translationOfWork reference - by @okj579 in [**~~https://github.com/harlan-zw/nuxt-schema-org/issues/77~~**](https://github.com/harlan-zw/nuxt-schema-org/issues/77) [`**(1ca3b)**`](https://github.com/harlan-zw/nuxt-schema-org/commit/1ca3bfc) ##### [**~~View changes on GitHub~~**](https://github.com/harlan-zw/nuxt-schema-org/compare/v4.1.2...v4.1.3) - [Schema.org](https://nuxtseo.com/docs/schema-org/getting-started/introduction)last yearv4.1.2 ### 🏎 Performance - **devtools**: Optimize `**shiki**` bundle - by @harlan-zw [`**(73fe9)**`](https://github.com/harlan-zw/nuxt-schema-org/commit/73fe96f) ##### [**~~View changes on GitHub~~**](https://github.com/harlan-zw/nuxt-schema-org/compare/v4.1.1...v4.1.2) - [Link Checker](https://nuxtseo.com/docs/link-checker/getting-started/introduction)last yearv4.1.1 ### 🏎 Performance - **devtools**: Optimize shiki bundle - by @harlan-zw [`**(9b4ce)**`](https://github.com/harlan-zw/nuxt-link-checker/commit/9b4ce02) ##### [**~~View changes on GitHub~~**](https://github.com/harlan-zw/nuxt-link-checker/compare/v4.1.0...v4.1.1) - [Schema.org](https://nuxtseo.com/docs/schema-org/getting-started/introduction)last yearv4.1.1 _No significant changes_##### [**~~View changes on GitHub~~**](https://github.com/harlan-zw/nuxt-schema-org/compare/v4.1.0...v4.1.1) - [Link Checker](https://nuxtseo.com/docs/link-checker/getting-started/introduction)last yearv4.1.0 ### 🚀 Features - Nuxt Content v3 - by @harlan-zw in [**~~https://github.com/harlan-zw/nuxt-link-checker/issues/52~~**](https://github.com/harlan-zw/nuxt-link-checker/issues/52) [`**(ecf35)**`](https://github.com/harlan-zw/nuxt-link-checker/commit/ecf35eb) ### 🐞 Bug Fixes - **client**: Add current node as possible component path - by @harlan-zw [`**(84a58)**`](https://github.com/harlan-zw/nuxt-link-checker/commit/84a58da) ##### [**~~View changes on GitHub~~**](https://github.com/harlan-zw/nuxt-link-checker/compare/v4.0.4...v4.1.0) - [Schema.org](https://nuxtseo.com/docs/schema-org/getting-started/introduction)last yearv4.1.0 ### 🚀 Features - Nuxt Content v3 integration - by @harlan-zw in [**~~https://github.com/harlan-zw/nuxt-schema-org/issues/75~~**](https://github.com/harlan-zw/nuxt-schema-org/issues/75) [`**(2cccd)**`](https://github.com/harlan-zw/nuxt-schema-org/commit/2cccdf8) ##### [**~~View changes on GitHub~~**](https://github.com/harlan-zw/nuxt-schema-org/compare/v4.0.4...v4.1.0) - [Link Checker](https://nuxtseo.com/docs/link-checker/getting-started/introduction)2 years agov4.0.4 ### 🐞 Bug Fixes - Treat links with non-http protocol as external - by @manniL in [**~~https://github.com/harlan-zw/nuxt-link-checker/issues/51~~**](https://github.com/harlan-zw/nuxt-link-checker/issues/51) [`**(99404)**`](https://github.com/harlan-zw/nuxt-link-checker/commit/994045d) ##### [**~~View changes on GitHub~~**](https://github.com/harlan-zw/nuxt-link-checker/compare/v4.0.3...v4.0.4) - [Link Checker](https://nuxtseo.com/docs/link-checker/getting-started/introduction)2 years agov4.0.3 ### 🐞 Bug Fixes - Ignore fragment-only links - by @manniL in [**~~https://github.com/harlan-zw/nuxt-link-checker/issues/49~~**](https://github.com/harlan-zw/nuxt-link-checker/issues/49) [`**(64c44)**`](https://github.com/harlan-zw/nuxt-link-checker/commit/64c44db) ##### [**~~View changes on GitHub~~**](https://github.com/harlan-zw/nuxt-link-checker/compare/v4.0.2...v4.0.3) - [Schema.org](https://nuxtseo.com/docs/schema-org/getting-started/introduction)2 years agov4.0.4 ### 🐞 Bug Fixes - Render schema.org when indexing is disabled - by @harlan-zw [`**(3d3d9)**`](https://github.com/harlan-zw/nuxt-schema-org/commit/3d3d9d6) ##### [**~~View changes on GitHub~~**](https://github.com/harlan-zw/nuxt-schema-org/compare/v4.0.3...v4.0.4) - [Link Checker](https://nuxtseo.com/docs/link-checker/getting-started/introduction)2 years agov4.0.2 ### 🐞 Bug Fixes - Nuxt context `**#link-checker**` alias - by @harlan-zw [`**(04fde)**`](https://github.com/harlan-zw/nuxt-link-checker/commit/04fde70) - Manual opt-in for checking external links - by @harlan-zw [`**(44ec3)**`](https://github.com/harlan-zw/nuxt-link-checker/commit/44ec341) ##### [**~~View changes on GitHub~~**](https://github.com/harlan-zw/nuxt-link-checker/compare/v4.0.1...v4.0.2) - [Schema.org](https://nuxtseo.com/docs/schema-org/getting-started/introduction)2 years agov4.0.3 ### 🐞 Bug Fixes - Prefer explicit imports over `**#imports**` - by @harlan-zw [`**(4225e)**`](https://github.com/harlan-zw/nuxt-schema-org/commit/4225ed2) ##### [**~~View changes on GitHub~~**](https://github.com/harlan-zw/nuxt-schema-org/compare/v4.0.2...v4.0.3) - [Link Checker](https://nuxtseo.com/docs/link-checker/getting-started/introduction)2 years agov4.0.1 ### 🐞 Bug Fixes - Enable devtools by default if not disabled - by @harlan-zw [`**(dc0f1)**`](https://github.com/harlan-zw/nuxt-link-checker/commit/dc0f11d) ##### [**~~View changes on GitHub~~**](https://github.com/harlan-zw/nuxt-link-checker/compare/v4.0.0...v4.0.1) Check GitHub for older releases. ---