SEO e Meta Tags no Nuxt 4 em 2026: useHead, useSeoMeta e Perguntas de Entrevista
Guia completo sobre os composables useHead e useSeoMeta do Nuxt 4. Otimização SEO, Open Graph, Twitter Cards e perguntas técnicas para entrevistas Vue.

O Nuxt 4 oferece dois composables para gerenciar meta tags de SEO: useHead para elementos head gerais e useSeoMeta para metadados SEO com tipagem segura. Com o fim de vida do Nuxt 3 programado para 31 de julho de 2026, dominar esses composables no Nuxt 4.5 torna-se essencial para qualquer desenvolvedor Vue que esteja se preparando para entrevistas técnicas.
useSeoMeta gerencia tags específicas de SEO (title, description, Open Graph, Twitter Cards) com suporte completo a TypeScript. useHead gerencia todo o resto: scripts, folhas de estilo, URLs canônicas e meta tags personalizadas. Ambos os composables trabalham juntos para um gerenciamento completo do head.
useSeoMeta: Metadados SEO com Tipagem Segura no Nuxt 4
O composable useSeoMeta aceita um objeto plano com mais de 100 propriedades tipadas. Essa abordagem elimina erros comuns como confundir os atributos name com property nas tags Open Graph.
<!-- pages/product/[id].vue -->
<script setup lang="ts">
const product = await useFetch(`/api/products/${route.params.id}`)
useSeoMeta({
title: () => product.data.value?.name,
description: () => product.data.value?.description,
ogTitle: () => product.data.value?.name,
ogDescription: () => product.data.value?.description,
ogImage: () => product.data.value?.imageUrl,
ogType: 'product',
twitterCard: 'summary_large_image',
twitterTitle: () => product.data.value?.name,
twitterDescription: () => product.data.value?.description,
twitterImage: () => product.data.value?.imageUrl,
})
</script>A sintaxe com arrow function () => value cria getters reativos. Quando product.data muda, as meta tags são atualizadas automaticamente. Para páginas estáticas onde as tags SEO nunca mudam após a renderização inicial, essa reatividade adiciona overhead desnecessário.
Meta Tags Apenas no Servidor para Melhor Performance
Os rastreadores de mecanismos de busca e bots de IA como GPTBot e ClaudeBot leem apenas a resposta HTML inicial. Eles não executam JavaScript. Isso significa que atualizações de meta tags no lado do cliente são invisíveis para eles.
<!-- pages/about.vue -->
<script setup lang="ts">
if (import.meta.server) {
useSeoMeta({
title: 'Sobre o SharpSkill',
description: 'Plataforma de preparação para entrevistas técnicas para desenvolvedores',
ogTitle: 'Sobre o SharpSkill',
ogDescription: 'Plataforma de preparação para entrevistas técnicas para desenvolvedores',
ogImage: 'https://sharpskill.dev/og-about.png',
robots: 'index, follow',
})
}
</script>Envolver useSeoMeta em import.meta.server garante que o composable só execute durante o SSR. As meta tags aparecem no HTML enviado aos rastreadores, mas nenhum watcher reativo é criado no cliente. Isso reduz o tamanho do bundle e melhora a performance de hidratação.
useHead para Scripts, Links e URLs Canônicas
Enquanto useSeoMeta cobre os metadados SEO, useHead gerencia todo o resto: scripts externos, folhas de estilo, URLs canônicas e atributos HTML/body.
<!-- pages/blog/[slug].vue -->
<script setup lang="ts">
const route = useRoute()
const config = useRuntimeConfig()
useHead({
link: [
{
rel: 'canonical',
href: `${config.public.siteUrl}/blog/${route.params.slug}`,
},
{
rel: 'alternate',
hreflang: 'pt',
href: `${config.public.siteUrl}/pt/blog/${route.params.slug}`,
},
],
script: [
{
type: 'application/ld+json',
innerHTML: JSON.stringify({
'@context': 'https://schema.org',
'@type': 'Article',
headline: article.value?.title,
author: { '@type': 'Person', name: 'Anthony Fillion-Maillet' },
datePublished: article.value?.publishedAt,
}),
},
],
})
</script>O array link gerencia URLs canônicas e tags hreflang para internacionalização. O array script injeta dados estruturados para resultados enriquecidos. Ambos são críticos para SEO, mas ficam fora do escopo do useSeoMeta.
Pronto para mandar bem nas entrevistas de Vue.js / Nuxt.js?
Pratique com nossos simuladores interativos, flashcards e testes tecnicos.
Hierarquia de Meta Tags: Níveis App, Layout e Página
O Nuxt 4 mescla as meta tags de três níveis: nuxt.config.ts (valores padrão do app), layouts e páginas. As tags no nível da página sobrescrevem as do layout, que sobrescrevem as do app.
export default defineNuxtConfig({
app: {
head: {
titleTemplate: '%s | SharpSkill',
meta: [
{ charset: 'utf-8' },
{ name: 'viewport', content: 'width=device-width, initial-scale=1' },
],
link: [
{ rel: 'icon', type: 'image/x-icon', href: '/favicon.ico' },
],
},
},
})<!-- layouts/default.vue -->
<script setup lang="ts">
useSeoMeta({
ogSiteName: 'SharpSkill',
twitterSite: '@sharpskill',
})
</script><!-- pages/index.vue -->
<script setup lang="ts">
useSeoMeta({
title: 'Preparação para Entrevistas Técnicas',
description: 'Prepare-se para sua próxima entrevista técnica com questões práticas e simulações',
})
</script>O título final se torna "Preparação para Entrevistas Técnicas | SharpSkill" porque a página fornece o valor do placeholder %s e a config fornece o template. Essa hierarquia evita repetição enquanto permite sobrescritas específicas por página.
Perguntas Comuns de Entrevista sobre SEO no Nuxt
Entrevistas técnicas para posições Vue/Nuxt frequentemente incluem perguntas sobre SSR e otimização SEO. Estes são os padrões que os entrevistadores esperam.
Quando useSeoMeta deve usar getters reativos versus valores estáticos?
Valores estáticos funcionam para páginas com conteúdo fixo: landing pages, páginas sobre, páginas legais. Getters reativos são necessários quando as meta tags dependem de dados buscados ou parâmetros de rota. A diferença de performance importa em escala: 50 páginas com watchers desnecessários desperdiçam memória e desaceleram a hidratação.
Como os rastreadores de IA diferem do Googlebot?
O Googlebot executa JavaScript e aguarda a renderização do lado do cliente. Rastreadores de IA como GPTBot e ClaudeBot buscam HTML bruto sem executar scripts. Meta tags renderizadas no servidor alcançam ambos. Tags apenas do cliente não alcançam nem bots de IA nem mecanismos de busca antigos.
O que mais frequentemente quebra as tags Open Graph?
A ausência das dimensões de og:image. Facebook e LinkedIn fazem cache agressivo de dados OG. Quando as dimensões da imagem estão ausentes, as plataformas podem exibir miniaturas incorretamente ou não exibir nada.
<script setup lang="ts">
useSeoMeta({
ogImage: 'https://example.com/og-image.png',
ogImageWidth: 1200,
ogImageHeight: 630,
ogImageAlt: 'Prévia do artigo mostrando editor de código com sintaxe Vue',
})
</script>Incluir ogImageWidth, ogImageHeight e ogImageAlt previne problemas de renderização e melhora as pontuações de acessibilidade.
useHeadSafe para Conteúdo Gerado por Usuários
Quando meta tags incluem entrada de usuários, vulnerabilidades XSS se tornam uma preocupação. O composable useHeadSafe sanitiza os valores antes da injeção.
<!-- pages/profile/[username].vue -->
<script setup lang="ts">
const user = await useFetch(`/api/users/${route.params.username}`)
useHeadSafe({
title: user.data.value?.displayName,
meta: [
{ name: 'description', content: user.data.value?.bio },
],
})
</script>Um nome de usuário malicioso como <script>alert('xss')</script> é escapado em vez de executado. O useHead padrão não sanitiza, então useHeadSafe é obrigatório para qualquer conteúdo não confiável.
Módulo Nuxt SEO para Requisitos Avançados
O módulo Nuxt SEO agrupa geração de sitemap, gerenciamento de robots.txt, marcação schema.org e geração de imagens OG. Para projetos que requerem ferramentas SEO abrangentes além dos composables integrados, esse módulo reduz código repetitivo.
export default defineNuxtConfig({
modules: ['@nuxtjs/seo'],
site: {
url: 'https://sharpskill.dev',
name: 'SharpSkill',
},
})O módulo auto-gera sitemaps a partir das rotas, gerencia a normalização de trailing slashes e fornece composables para dados estruturados. Equipes mantendo sites grandes se beneficiam da configuração centralizada.
Comece a praticar!
Teste seus conhecimentos com nossos simuladores de entrevista e testes tecnicos.
Melhores Práticas de SEO no Nuxt 4 para Produção
- Usar
useSeoMetapara todas as tags SEO (title, description, Open Graph, Twitter Cards) com autocompletar TypeScript - Usar
useHeadpara URLs canônicas, tags hreflang, dados estruturados e scripts externos - Envolver meta tags estáticas em
import.meta.serverpara eliminar o overhead de reatividade no cliente - Incluir
ogImageWidth,ogImageHeighteogImageAltpara prévias de compartilhamento em redes sociais - Usar
useHeadSafepara qualquer conteúdo gerado por usuários para prevenir ataques XSS - Definir valores padrão no nível do app em
nuxt.config.tse sobrescrever no nível da página apenas quando necessário - Testar com Google Rich Results Test para validar dados estruturados
- Verificar a renderização na aba Network do DevTools do navegador com JavaScript desabilitado para simular o comportamento dos rastreadores
Você saberia encontrar o bug em Vue.js / Nuxt.js?
Um trecho real, um bug escondido, uma tentativa por dia. Sem conta para testar.

Escrito por
Anthony Fillion-MailletFundador da SharpSkill
Desenvolvedor fullstack há mais de 10 anos. Dirige a SharpSkill e responde por tudo o que é publicado aqui.
Atualizado em 12 de setembro de 2026
Compartilhar
Artigos relacionados

Vue 3 Script Setup e defineModel em 2026: Sintaxe Moderna e Perguntas de Entrevista
Guia completo sobre a sintaxe script setup do Vue 3 e defineModel. Exploração de padrões modernos, TypeScript e preparação para entrevistas técnicas de Vue.js.

Vue 3 Reactivity Transform em 2026: $ref, $computed e Perguntas de Entrevista
Guia completo sobre Reactivity Transform do Vue 3, incluindo $ref, $computed, macros de reatividade e perguntas frequentes em entrevistas técnicas.

Vue 3 Teleport e Suspense: Padrões Avançados e Perguntas de Entrevista 2026
Domine Teleport e Suspense no Vue 3.5 com padrões de produção, tratamento de erros e as perguntas de entrevista técnica mais frequentes para desenvolvedores Vue.