SEO
Componentes para optimización en motores de búsqueda con tipado TypeScript fuerte
Componentes modulares para SEO siguiendo el principio de composición sobre configuración. Totalmente tipados con TypeScript y extensibles mediante slots.
Componente Unificado (<SEO />)
Componente orquestador que incluye MetaTags, OpenGraph y TwitterCard.
---
import { SEO } from '@rubenvillar/design-system-astro';
---
<SEO
title="Mi Página Increíble"
description="Descripción optimizada para SEO"
image="/images/og-cover.png"
canonicalURL="https://midominio.com/mi-pagina"
type="article"
twitterCardType="summary_large_image"
locale="es-ES"
siteName="Mi Sitio"
/> SEO con JsonLd (Slots)
Usa el slot
json-ld para inyectar structured data.
---
import { SEO, JsonLd, type ArticleSchema } from '@rubenvillar/design-system-astro';
const schema: ArticleSchema = {
'@context': 'https://schema.org',
'@type': 'Article',
headline: 'Mi Artículo',
description: 'Descripción del artículo',
author: { '@type': 'Person', name: 'Autor' },
datePublished: '2024-01-15'
};
---
<SEO
title="Artículo SEO"
description="Optimiza tu contenido"
type="article"
locale="es-ES"
>
<JsonLd slot="json-ld" schema={schema} />
</SEO> Composición Atómica
Usa componentes separados para control granular sobre cada meta tag.
---
import { MetaTags, OpenGraph, TwitterCard, JsonLd } from '@rubenvillar/design-system-astro';
const schema = {
'@context': 'https://schema.org',
'@type': 'WebSite',
name: 'Mi Sitio',
url: 'https://midominio.com'
};
---
<head>
<MetaTags
title="Título"
description="Descripción"
canonicalURL="https://midominio.com"
charset="UTF-8"
viewport="width=device-width, initial-scale=1.0"
/>
<OpenGraph
title="Título OG"
description="Descripción OG"
image="/og-image.png"
type="website"
locale="es_ES"
siteName="Mi Sitio"
/>
<TwitterCard
title="Título Twitter"
description="Descripción Twitter"
cardType="summary_large_image"
site="@micuenta"
creator="@autor"
/>
<JsonLd schema={schema} />
</head> MetaRobots y Favicons
Controla indexación y define iconos de forma tipada.
---
import { MetaRobots, Favicons } from '@rubenvillar/design-system-astro';
const faviconItems = [
{ rel: 'icon', type: 'image/x-icon', href: '/favicon.ico' },
{ rel: 'icon', type: 'image/svg+xml', href: '/favicon.svg' },
{ rel: 'apple-touch-icon', href: '/apple-touch-icon.png' },
{ rel: 'manifest', href: '/site.webmanifest' }
];
---
<head>
<MetaRobots
index={true}
follow={true}
noarchive={false}
maxImagePreview="large"
/>
<Favicons
items={faviconItems}
themeColor="#000000"
/>
</head> Tipos TypeScript
Utiliza los tipos para validar schemas y props en tu IDE.
import {
type ArticleSchema,
type ProductSchema,
type FAQPageSchema,
type BreadcrumbListSchema,
type SEOProps,
type MetaTagsProps,
type OpenGraphProps,
type TwitterCardProps,
type FaviconItem
} from '@rubenvillar/design-system-astro';
// Usar tipos para validar schemas
const articleSchema: ArticleSchema = {
'@context': 'https://schema.org',
'@type': 'Article',
headline: 'Título del artículo',
description: 'Descripción',
author: { '@type': 'Person', name: 'Autor' }
}; Props del Componente SEO
title * Título de la página (requerido) description * Descripción meta (requerido) canonicalURL URL canónica (default: Astro.url.href) image URL de imagen OG/Twitter type 'website' | 'article' | 'profile' | 'book' twitterCardType 'summary' | 'summary_large_image' | 'app' | 'player' locale Locale OG (ej: 'es-ES') siteName Nombre del sitio para OG Slots Disponibles
metatags-prepend Contenido antes de meta tags base opengraph Meta tags OG custom adicionales twitter Meta tags Twitter custom json-ld JSON-LD structured data Tipos JSON-LD Disponibles
ArticleSchema ProductSchema FAQPageSchema BreadcrumbListSchema OrganizationSchema