¿Cómo optimizar tu proyecto para SEO antes de lanzarlo a producción?
Antes de enviar un proyecto a producción, es crucial realizar configuraciones a nivel de SEO para garantizar que sea fácilmente descubrible por los motores de búsqueda. Este proceso implica añadir varias características tanto en la configuración del head como en otras partes del proyecto, y aquí te mostraremos cómo hacerlo efectivamente.
¿Cuáles son los elementos clave para la configuración del SEO?
Configuración del head:
Definir un título dinámico utilizando ciertos props.
Añadir una descripción y una URL canónica para asegurar que los motores de búsqueda toman en cuenta estas etiquetas.
Crear un RSS:
Permite que la información de actualizaciones se transmita automáticamente al sistema adecuado cuando el sitio se prepare para producción.
Generar un sitemap:
Para que buscadores como Google indexen de manera eficiente cada una de las páginas de tu sitio, facilitando su descubrimiento.
¿Cómo configurar el head de tu proyecto?
Crear un componente llamado BaseHead.astro en tu editor de código es el primer paso. Dentro de este componente, define estructuras que van desde el title, hasta el description y la URL canónica usando JavaScript y Astro.
const title = astro.props.title;const description = astro.props.description;const canonicalURL =newURL(astro.props.url, astro.site);
Estos elementos dentro del head permiten a los motores de búsqueda comprender mejor el contenido de tu página.
¿Por qué son importantes los metadatos y favicons?
UTF-8 y viewport: Garantizan que se muestren correctamente caracteres especiales y emojis, además de crear una experiencia de usuario ideal en diferentes dispositivos.
Favicons e íconos: Son esenciales para que la web sea reconocible en dispositivos móviles y sistemas operativos como iOS y Windows.
Offering Graph (OG) e integración social: Facilitan la previsualización del contenido cuando se comparte en plataformas como Facebook, WhatsApp y Twitter, ampliando tu alcance social.
¿Cómo integrar el soporte para RSS y Sitemap?
Agregar soporte para RSS:
Crea un archivo llamado rss.xml.js para definir la estructura RSS. Usa la librería @astro/rss y la función getCollection para manejar el contenido.
importrssfrom'@astro/rss';import{ getCollection }from'astro:content';exportasyncfunctionget(context){const posts =awaitgetCollection('tips');returnrss({title:'astro.build.tips',description:'My First Pitch',site: context.site,items: posts.map(post=>({title: post.data.title,link:`/posts/${post.slug}/`,})),});}
Configurar el sitemap:
Instala @astrojs/sitemap y agrega la integración dentro del archivo de configuración de astro.
¿Cómo validar las configuraciones y corregir errores?
Asegúrate de probar tu configuración ejecutando el proyecto en un entorno local con npm run dev y verifica los resultados en la consola y el navegador. Puede ser necesario investigar un poco si aparece un error, ya que un mensaje de error podría no indicar el problema exacto. Por ejemplo, un error relacionado con URLs puede ser debido a una configuración de sitio faltante.
Finalmente, depura el proyecto eliminando cualquier console.log innecesario que pueda interferir con los registros del sitio. Realizar todos estos cambios te garantiza un portal bien optimizado, listo para competir en el vasto ecosistema digital. ¡Estos ajustes son clave para asegurar que tu proyecto tenga éxito en línea!
Durante la planeación de un sitio web, generalmente en un ciclo de vida de software, se habla de posicionamiento de un sitio o producto web.
.
ℹ️ DefiniciónSEO es la abreviación de Search Engine Optimization (optimización en motores de búsqueda), describiendo al conjunto de técnicas y estrategias centradas en optimizar el posicionamiento orgánico en búsquedas de internet.
.
Contar con una producto web para tu marca o empresa es la base de cualquier presencia digital, pero el esfuerzo de crearla no sirve de nada si no te aseguras de que tu audiencia la encuentre, es decir, que orgánicamente en su intención de búsqueda sea encontrada.
.
Orígenes del SEO y la relación con las etiquetas Open Graph
Si bien, el uso de navegadores modernos como Google nos parece de uso común, su significado e implementación se ha establecido desde las primeras épocas del Internet.
.
La mayoría de los productos web tienen en común un mismo objetivo: atraer tráfico de calidad.
.
La Ingeniería moderna explica que hay métodos y herramientas que aportan al desarrollo web, pero empleo de la herramienta, correctamente, significará en un diferenciador moderno donde la brecha entre productos similares son su marketing o formas de ventas.
.
¿Por qué es importante el SEO?
Entender qué es el SEO, es el primer paso en una estrategia de posicionamiento web, implicando en números de usuarios como audiencia. Algunos beneficios del SEO son:
.
Multiplica tu visibilidad. Imagina que consigues posicionar tu producto web para un término con 500.000 búsquedas mensuales. Si el primer resultado que aparece en los buscadores se lleva un 20% de los clics, estarías obteniendo 100.000 visitas mensuales orgánicas, esto es, que no te suponen ningún coste adicional.
.
Mejora tu producto web. Bien hechas, las técnicas de posicionamiento web no solo mejoran tu página de cara a los motores de búsqueda, sino a los propios usuarios. Y mejorar la experiencia de usuario significa mejorar tus resultados como ingresos.
.
Es una inversión a largo plazo. Optimizar tu producto web tiene unos ciertos costes iniciales pero, si consigues posicionarte entre los primeros puestos, tendrás una fantástica fuente de tráfico de calidad y sin coste. Siguiendo con el ejemplo anterior, imagínate que 1 de cada 100 los usuarios que visita tu web acaba haciendo una compra online y que el valor de tiempo de vida del cliente es de 100 euros. En ese caso, estarías generando 100.000 euros mensuales en ingresos. Y por supuesto, si posicionas para varias palabras clave o te lanzas al SEO internacional, los beneficios se multiplican.
.
Rentabiliza tu producto web. Si has realizado una inversión valiosa en dinero, tiempo y recursos para construir una web que represente a tu marca, lo lógico es hacer que la visiten el mayor número de usuarios posible para sacar partido a esa inversión.
.
Aumenta tu impacto en las redes sociales. El posicionamiento web crea sinergias con el social media, ya que los enlaces que se comparten en las redes hacen uso de los títulos y descripciones que habrás optimizado como parte de tu estrategia de posicionamiento.
.
Construye confianza y credibilidad. La autoridad y la relevancia son los dos factores clave del SEO. Por eso, cuando tu producto web aparece entre los primeros resultados de búsqueda, los usuarios saben que se trata de un sitio que contiene la información que buscan y que ha sido aprobado por muchos usuarios. En definitiva, les da la confianza que necesitan para lanzarse a convertir.
.
Se puede medir y optimizar. Es posible evaluar los resultados de todas las técnicas y factores que intervienen en tu SEO, para ver cuáles están dando los mejores resultados y corregir el rumbo en caso de necesidad.
.
Etiquetas Open Graph
ℹ️ DefiniciónOpen Graph es una herramienta que permite mostrar cualquier producto web con un formato para previsualización como enlace a tu aplicación.
.
Siendo etiquetas de HTML, son metadatos de un producto que solamente son entendibles entre los robots de procesamiento que procesan contenidos en la web.
.
Gracias a este recurso, los expertos en marketing pueden brindarle a los buscadores y a los usuarios detalles específicos y simples como el título de la página o la duración de un video en particular.
.
El propósito de Open Graph es ayudar en la mejora de experiencia de usuario y la visualización de los contenidos sin importar de qué producto web se trate.
.
Uno de las influencias más importantes que tiene las Open Graph es precisamente generar un impacto sustancial en las conversiones y las tasas de clics gracias a la optimización de las estrategias SEO.
Alguien revisa estos quiz?
En el archivo rss.xml.js con astro v4 el método get debe escribirse en mayusculas: GET
Gracias, con esto ya me genera el rss.xml !
SEO e Implementación de Open Graph en Astro
Las etiquetas core o de Facebook son:
og:title
Etiqueta encargada de señalar el propósito del producto web, la cual debe ser claro y conciso, con un máximo de 67 caracteres.
,
og:description
Etiqueta encargada de informar con mayor extensión sobre el contenido del producto web, con un máximo de 155 caracteres.
,
og:url
Etiqueta encargada de entregar la URL del producto web.
,
og:image
Etiqueta encargada de complementar la visualización de un producto web, sirviendo como referencia para la atracción por representación.
,
**og:type**
Etiqueta encargada de explicar el tipo de contenido como clasificación.
,
📌 Referencia
Tags Open Graph: qué son y cómo impactan el SEO
Open Graph | ¿Qué es y cómo influye en SEO? | SEO Alive
.
Para su implementación en Astro, se puede disponer como componente y cuyo nombre le antecedería un _ , debido a su denotación como meta-documento.
.
Se recomienda agrupar cada meta-documento según su propósito para su facilidad de modificación.
.
./src/components/sections/meta/_OGFacebook.astro
---const { title, description } = Astro.props
const canonicalURL = new URL(Astro.url.pathname, Astro.site)
const socialImageURL = new URL('/coffeeroasters.png', Astro.url)---<metaproperty="og:locale"content="es_ES"/><metaproperty="og:type"content="website"/><metaproperty="og:url"content={canonicalURL}/><metaproperty="og:title"content={title}/><metaproperty="og:description"content={description}/><metaproperty="og:image"content={socialImageURL}/>
📌 Referencia
Se emplea la clase URL de JavaScript para la personalización conical a partir de objetos globales URL de Astro.
API Reference
.
Un requerimiento del SEO de nuestro producto web, es la manipulación por dispositivo cliente que consumiera nuestro contenido. Por ello, se recomienda la generación de iconografía de nuestro favicon (por pestaña o por descarga del mismo).
,
📌 Referencia
Favicon Generator for perfect icons on all browsers
.
Una vez generados, los disponemos dentro de nuestro directorio public .
.
./src/components/sections/meta/_global.astro
Finalmente, los incorporamos en nuestro layout por default del sitio (o de aquello que emplearan los meta-documentos).
---import GlobalMeta from '@components/sections/meta/_global.astro'
import SiteMeta from '@components/sections/meta/_site.astro'
import OGFacebook from '@components/sections/meta/_OGFacebook.astro'
import OGTwitter from '@components/sections/meta/_OGTwitter.astro'
const title = 'Coffeeroasters'
const description = 'Website for coffee lovers'---<!DOCTYPEhtml><htmllang='en'><head><metacharset='UTF-8'/><metaname='viewport'content='width=device-width'/><linkrel='icon'type='image/svg+xml'href='/favicon.svg'/><linkrel='preconnect'href='https://fonts.googleapis.com'/><linkrel='preconnect'href='https://fonts.gstatic.com'crossorigin/><linkhref='https://fonts.googleapis.com/css2?family=Barlow:wght@400;500&family=Fraunces:wght@700&display=swap'rel='stylesheet'/><title>{title}</title><GlobalMeta/><SiteMetatitle={title}description={description}/><OGFacebooktitle={title}description={description}/><OGTwittertitle={title}description={description}/></head><body><slot/></body></html>
alguien puede explicar como cologar la og:image de forma dinamica
Asegurense de usar pubDate y title en sus archivos markdown caso contrario podrian tener problemas al integrar @astrojs/rss
me has salvado la vida, no encontraba el error y cuando vi habia puesto titulo en muchas partes de mis archivos en vez de title; mucha pero muchas gracias por este tremendo dato. Un abrazo.
Disculpa ¿cuál es el enlace a la pagina web que genera todos los iconos para diferentes tamaños?
Hola Martín. También estoy teniendo dificultades para ubicarlo, pero una buena alternativa podrían ser los íconos disponibles en Google Fonts. ✌️
como se agregan las og:image?
Se añaden en el head del proyecto con la etiqueta meta usando la propiedad 'content' para especificar la URL de la imagen. Ejemplo: <meta property='og:image' content='URL_de_tu_imagen'>. Es importante asegurar que la imagen represente adecuadamente el contenido del sitio cuando se comparta en redes sociales.
Porqué no se hizo integración de rss en el archivo "astro.config.mjs"?
cuando intento hacer build me da el siguiente error [WARN] [router] No API Route handler exists for the method "GET" for the route "/rss.xml".
Found handlers: "get"
y el archivo del rss no se genera dentro de public
Les comparto el blog que hice el otro dia cuando estaba aprendiendo a trabajar con Favicon:
Customize the Favicon
Tambien describo el error en el proyecto y como lo solucione. Espero les sirva.
En la última versión de astro 4.8.2, se deb devolver un Response o un Promise con la función:
Response.json, sino de lo contrarió el endpoint parece no funcionar, por tanto el archivo rss.xml.js quedó así:
importrssfrom"@astrojs/rss";import{ getCollection }from"astro:content";exportasyncfunctionGET(context){const posts =awaitgetCollection("tips");returnResponse.json({title:"AstroBuild.tips",description:"First Page",site: context.site,items: posts.map((post)=>({...post.data,link:`/posts/${post.slug}/`,})),});}```con este cambio me generó el archivo rss.xml
La documentación oficial no lo dice así
Here's how you can fix the rss.xml.js file:import rss from '@astrojs/rss';import { getCollection } from 'astro:content';export async function GET(context) {const posts = await getCollection('posts');const rssContent = await rss({title: 'uniDiversidad',description: 'Life blossoms when connected, as knowledge does, and so do we.',site: context.site,items: posts.map((post) => ({...post.data,link: /blog/${post.slug}/,})),});return new Response(rssContent, {headers: {'Content-Type': 'application/xml',},});}
importrssfrom'@astrojs/rss';import{ getCollection }from'astro:content';exportasyncfunctionGET(context){const posts =awaitgetCollection('posts');const rssContent =awaitrss({title:'yourBlog',description:'Life blossoms when connected, as knowledge does, and so do we.',site: context.site,items: posts.map((post)=>({...post.data,link:`/blog/${post.slug}/`,})),});returnnewResponse(rssContent,{headers:{'Content-Type':'application/xml',},});}
The changes made:* Wrap the rss() function call in a new Response().
Set the correct Content-Type header for XML.
>Con esto lo resolví.
Ojo con los typos en el nombre del archivo.
Mi version tenía uno invisible
rss.xlm.js
en lugar de
rss.xml.js
Yo me confundi y estuve deambulando
Hola, alguien que tenga el mismo error o que me pueda ayudar por favor, yo tengo 2 errores en los 2 archivos de pages/posts
-Property 'data' does not exist on type 'never'.
-No overload matches this call.
Overload 1 of 2, '(collection: never, filter?: ((entry: never) => entry is never) | undefined): Promise<never[]>', gave the following error.
Overload 2 of 2, '(collection: never, filter?: ((entry: never) => unknown) | undefined): Promise<never[]>', gave the following error.
El error es de esta parte: const posts: Post[] = (await getCollection("tips")).sort(
(a,b) => a.data.pubDate.valueOf() - b.data.pubDate.valueOf()
);
en tips y data
muy buena clase, seguiré explorando mas de astro para optimizar las webs para buscadores!
Hay un problema con algo, getCollection necesita que los posts estén en la carpeta 'content' como él mismo dice en el video, sin embargo durante todo el curso el los crea en la carpeta 'pages'
Ahora entiendo porqué esto no tiene lógica, el rss no vale para páginas dinámicas generadas desde un fetching API, es una clase que le falta al curso el consumo de una API, no tiene nada de especial es puro javascript pero estaría bien.
¿Qué es un Sitemap y cómo se utiliza en Astro?
Sitemap (Mapa del Sitio) es un archivo XML que enumera todas las páginas de un sitio web, proporcionando información sobre la estructura del sitio y las relaciones entre las páginas. Los sitemaps ayudan a los motores de búsqueda como Google a rastrear y indexar tu sitio web de manera más eficiente.
Uso de Sitemaps en Astro:
Astro puede generar automáticamente un sitemap para tu sitio web, lo que facilita a los motores de búsqueda encontrar y comprender la estructura de tu contenido. Un sitemap es especialmente útil para sitios web grandes o complejos con muchas páginas.
Beneficios de usar Sitemaps con Astro:
Mejor Indexación: Los motores de búsqueda pueden encontrar y rastrear todas las páginas de tu sitio web, incluyendo aquellas que pueden no estar bien vinculadas internamente.
SEO Mejorado: Al facilitar la indexación, puedes mejorar la visibilidad de tu sitio web en los resultados de búsqueda.
Monitoreo de Actualizaciones: Los motores de búsqueda pueden identificar rápidamente las páginas nuevas o actualizadas, asegurando que tu contenido reciente sea indexado rápidamente.
Facilidad de Uso: Generar y mantener un sitemap con Astro es sencillo, lo que te ahorra tiempo y esfuerzo.
Ejemplo práctico:
Cuando usas Astro para generar un sitemap, se crea un archivo XML que contiene todas las URLs de tu sitio web. Este archivo puede incluir información adicional como la última fecha de modificación de cada página, la frecuencia de cambios y la prioridad relativa de las páginas. Luego, puedes enviar este archivo a los motores de búsqueda a través de sus respectivas herramientas para webmasters (como Google Search Console).
Resumen:
Sitemaps en Astro son una herramienta esencial para mejorar la indexación y visibilidad de tu sitio web en los motores de búsqueda. Facilitan que los motores de búsqueda descubran y rastreen todas las páginas de tu sitio, lo que puede resultar en un mejor rendimiento de SEO y una mayor visibilidad en los resultados de búsqueda.
Espero que esta definición y explicación te ayuden a entender mejor qué es un sitemap y cómo puede ser beneficioso para tu sitio web utilizando Astro.
¿Qué es RSS y cómo se utiliza en Astro?
RSS (Really Simple Syndication) es un formato que se utiliza para distribuir y compartir contenido web actualizado con frecuencia, como blogs, noticias y otros tipos de publicaciones en línea. Los feeds RSS permiten a los usuarios recibir actualizaciones automáticas de los sitios web que les interesan, sin necesidad de visitarlos manualmente.
Uso de RSS en Astro:
Astro facilita la creación y gestión de feeds RSS para tu sitio web. Si tienes un blog o un sitio web con mucho contenido, un feed RSS proporciona una forma sencilla para que los usuarios se suscriban y reciban automáticamente las actualizaciones cada vez que publicas nuevo contenido.
Beneficios de usar RSS con Astro:
Facilidad para los usuarios: Los usuarios pueden suscribirse a tu contenido y recibir actualizaciones automáticas en su lector de RSS preferido, sin tener que visitar tu sitio web manualmente.
Ahorro de tiempo: Automatiza el proceso de informar a tus suscriptores sobre nuevas publicaciones.
Mayor alcance: Permite que tu contenido llegue a una audiencia más amplia y diversificada.
SEO mejorado: Los motores de búsqueda pueden indexar tu contenido más eficientemente a través de los feeds RSS.
Ejemplo práctico:
Cuando usas Astro para generar un feed RSS, el proceso es rápido y automático. Astro se encarga de crear un archivo XML que contiene todas tus publicaciones recientes. Los usuarios pueden suscribirse a este archivo XML utilizando un lector de RSS, y recibirán notificaciones cada vez que publiques algo nuevo.
Resumen:
RSS en Astro es una herramienta poderosa que simplifica la distribución de contenido y mejora la experiencia del usuario al permitirles suscribirse y recibir actualizaciones automáticas de tus publicaciones.