Metadatos, SEO y redes sociales

Dos visitantes llegan a tu página sin verla de la forma en que lo hace una persona. Uno es un motor de búsqueda decidiendo si incluir la página y qué decir sobre ella. El otro es una plataforma de redes sociales construyendo la pequeña tarjeta de vista previa que aparece cuando alguien comparte el enlace. Ambos leen un pequeño bloque de etiquetas en el <head>, no el contenido visible en pantalla. Este capítulo trata sobre escribir ese bloque para que tu página aparezca correctamente en un resultado de búsqueda, una pestaña del navegador y un enlace compartido.
Título y descripción
Cada página necesita un <title>. Es el texto que aparece en la pestaña del navegador, en tus marcadores y como el titular clickeable cuando la página aparece en una lista de resultados de búsqueda. Vive en el head, y es una sola línea corta:
<title>Pan de masa madre para principiantes: tu primer pan, paso a paso</title>Debajo de ese titular en un resultado de búsqueda generalmente hay una oración describiendo la página. Eso viene de la meta descripción, otra etiqueta que pones en el head:
<meta name="description" content="Recetas simples de pan de masa madre, desde mezclar tu primera masa hasta una corteza dorada crujiente, con tiempos para cada paso." />Imagina un libro en un estante. El título está impreso en el lomo para que lo encuentres, y la descripción es el resumen en la contraportada que te ayuda a decidir si lo abrirás.
El elemento <title> es requerido, y hay exactamente uno por documento. Tiene tres funciones: etiqueta la pestaña del navegador, es el nombre predeterminado cuando alguien marca la página, y es el titular que muestra un motor de búsqueda para tu resultado. Escríbelo para una persona que escanea una lista, pon las palabras distintivas primero, y mantenlo en aproximadamente 60 caracteres para que no se corte con puntos suspensivos.
La etiqueta <meta name="description"> es la oración que aparece bajo ese titular. No es un factor de ranking, pero es tu presentación a la persona decidiendo si hacer clic, así que hazla específica y escribe una diferente para cada página. Apunta a alrededor de 150 a 160 caracteres. Si la omites, el motor de búsqueda escribe su propio resumen extrayendo un fragmento del texto de la página, y su suposición rara vez es tan buena como tu oración.
<title>Pan de masa madre para principiantes: tu primer pan</title>
<meta name="description" content="Un primer pan de masa madre paso a paso, con tiempos y una solución para cada error común." />El <title> es la pieza de texto en la página más fuerte que controlas completamente para lo que dice un resultado en la SERP (la página de resultados del motor de búsqueda, la lista de resultados que devuelve una consulta). Vale la pena tratarlo como contenido, no una etiqueta: las palabras distintivas van primero, porque el final se trunca. El recuento de caracteres que todos citan es realmente un límite de ancho de píxeles de aproximadamente 600 píxeles, así que un título con caracteres amplios se corta más pronto de lo que sugiere un recuento. Los motores de búsqueda también reescriben títulos que juzgan como poco útiles, por ejemplo uno que repite una palabra para efecto o no coincide con la consulta, así que un título claro y preciso sobrevive más a menudo que uno rellenado.
La descripción no es una entrada para el ranking. Su único trabajo es el click-through, la parte de personas que ven tu resultado y hacen clic en él, y una descripción más precisa aumenta esa parte. Dos reglas de producción importan más que la longitud. Primero, cada página obtiene su propio título y descripción; enviar un par global a través de un sitio completamente templado significa resultados casi idénticos que compiten entre sí y se leen como genéricos. Segundo, en un sitio que construye páginas a partir de datos, genera ambos a partir de los propios campos de la página en lugar de una cadena fija, así que una página de producto nombra su producto y una página de receta nombra su receta.
<title> es tu etiqueta de pestaña y el titular en el que la gente hace clic en resultados de búsqueda, así que hazlo claro. El <meta name="description"> es el resumen debajo. Ambos viven en el head, y dar a cada página su propio par me requirió mucho menos esfuerzo de lo que esperaba por lo mucho que ayuda. <title> por página, palabras distintivas primero, alrededor de 60 caracteres. La descripción no afecta el ranking, solo gana el clic, así que escribe una específica por página en lugar de una línea global. Si la omites, el motor inventa un fragmento que no elegiste. Charset y viewport, revisitados
El esqueleto en Tu primera página HTML abrió con dos meta etiquetas que son rápidas de pegar y olvidar. Vale la pena una segunda mirada, porque ambas cambian cómo se lee y se representa la página antes de que aparezca cualquier contenido.
La primera etiqueta es la codificación de caracteres:
<meta charset="UTF-8" />Le dice al navegador en qué alfabeto están escritas las letras, así que los caracteres acentuados, comillas tipográficas y emoji se muestran correctamente en lugar de convertirse en símbolos extraños. Siempre usa UTF-8; cubre cada idioma y cada emoji.
La segunda etiqueta es la viewport, y hace que la página se ajuste a una pantalla de teléfono:
<meta name="viewport" content="width=device-width, initial-scale=1" />Sin ella, un teléfono asume que la página fue construida para un escritorio ancho y encoge todo hasta que el texto es demasiado pequeño para leer. Con ella, la página coincide con el ancho del dispositivo. Piénsalo como decirle al navegador el tamaño real del papel en el que está imprimiendo.
<meta charset="UTF-8"> establece la codificación de caracteres, la asignación de los bytes sin procesar del archivo a los caracteres que representan. Tiene que aparecer temprano, dentro de los primeros 1024 bytes del documento y como lo primero en el head, porque el analizador necesita saber la codificación antes de decodificar el texto que sigue. UTF-8 es la única respuesta que deberías usar; codifica cada carácter en cada idioma.
<meta name="viewport" content="width=device-width, initial-scale=1"> es lo que hace que una página sea responsiva en teléfonos. width=device-width hace que el ancho del diseño de la página coincida con el ancho del dispositivo, e initial-scale=1 la abre con zoom normal en lugar de alejada. Omite esta etiqueta y los navegadores móviles caen en la suposición de un diseño de escritorio de aproximadamente 980 píxeles, luego lo escalan para caber. No agregues user-scalable=no o una maximum-scale para bloquear el zoom; detiene que la gente pellizque para agrandar el texto, en lo que muchos lectores confían.
La declaración charset existe porque el análisis es un problema de dos etapas: el navegador tiene una secuencia de bytes y necesita una codificación para convertirlos en caracteres. Si la codificación se declara tarde, o entra en conflicto con lo que el analizador adivinó de los primeros bytes, el navegador puede descartar su trabajo y re-analizar desde el principio bajo la codificación correcta, un pequeño costo que evitas poniendo <meta charset="UTF-8"> primero. Si la respuesta también lleva un charset en su encabezado HTTP Content-Type, el encabezado gana, pero igualmente incluyes la meta etiqueta para que el archivo sea correcto cuando se guarda o se sirve sin ese encabezado. UTF-8 es el estándar asentado de la web; cualquier otra cosa es una situación heredada de la que emigrar.
La etiqueta viewport es el interruptor entre dos modos de renderización. Sin ella un navegador móvil renderiza en un lienzo virtual ancho (históricamente alrededor de 980 píxeles CSS) y escala el resultado, que es por qué una página sin etiquetar parece un escritorio encogido. width=device-width vincula la viewport de diseño al dispositivo, que es la precondición para que cualquier CSS responsivo se comporte correctamente. Suprimir el zoom con user-scalable=no o una maximum-scale baja es un fallo de accesibilidad: se menciona en WCAG (las Directrices de Accesibilidad del Contenido Web, la referencia estándar para contenido web accesible, cubierto en Accesibilidad) porque bloquea que la gente agrande el texto que de otro modo no puede leer.
<meta charset="UTF-8"> evita que letras acentuadas y emoji se conviertan en basura, así que siempre inclúyelo. La línea viewport hace que la página se ajuste a un teléfono en lugar de encogerse a un escritorio diminuto. Dos etiquetas que copias una vez y rara vez tocas de nuevo, pero omitirlas se nota rápido. UTF-8, nada más. La etiqueta viewport con width=device-width es lo que hace que el CSS responsivo funcione en teléfonos, y nunca desactives el zoom, la gente confía en él. user-scalable=no falla en WCAG, así que no lo hagas. Open Graph y tarjetas de redes sociales
Cuando pegas un enlace en un chat o una publicación de redes sociales, a menudo aparece una pequeña tarjeta de vista previa con una imagen, un título y una línea de texto. Esa tarjeta no es la plataforma adivinando. La página le entrega la imagen y palabras para mostrar, usando un conjunto de etiquetas llamadas Open Graph en el head:
<meta property="og:title" content="Pan de masa madre para principiantes" />
<meta property="og:description" content="Tu primer pan, paso a paso." />
<meta property="og:image" content="https://escuelapan.example/pan.jpg" />Nota que estas usan property donde la etiqueta description anterior usó name. Esa es la forma que toman las etiquetas Open Graph; copia el patrón y cambia las palabras y la dirección de la imagen. Piénsalo como empacar una pequeña vista previa en la página, lista para cuando alguien la comparta.
Open Graph es un vocabulario compartido de meta etiquetas que describen una página como un objeto compartible. Comenzó en Facebook y ahora es leído por casi cada plataforma que muestra vistas previas de enlaces. Las etiquetas usan property="og:..." y lo esencial son cinco:
<meta property="og:title" content="Pan de masa madre para principiantes" />
<meta property="og:description" content="Tu primer pan, paso a paso, con tiempos." />
<meta property="og:image" content="https://escuelapan.example/pan.jpg" />
<meta property="og:url" content="https://escuelapan.example/masadremadre" />
<meta property="og:type" content="article" />Twitter, ahora X, lee sus propias etiquetas twitter: pero regresa a las de Open Graph, así que solo necesitas agregar la parte que cambia el diseño:
<meta name="twitter:card" content="summary_large_image" />Eso te da la tarjeta de imagen grande en lugar de la miniatura pequeña. Haz el og:image alrededor de 1200 por 630 píxeles para que llene la tarjeta limpiamente, y verifica tu resultado en el depurador de vista previa de enlaces propios de la plataforma antes de confiar en él.
La audiencia para estas etiquetas es un scraper social: un bot que una plataforma ejecuta cuando se publica un enlace, que obtiene la página, lee solo el head, y no se desplaza, hace clic o generalmente ejecuta JavaScript. Todo sobre cómo escribes Open Graph sigue de eso. El og:image debe ser una URL absoluta, incluyendo el https:// y dominio, porque una ruta relativa como /pan.jpg no tiene contexto de página para resolverse cuando un scraper remoto la lee. Las etiquetas usan el atributo property en lugar de name porque Open Graph se define en RDFa, un estándar más antiguo para incrustar datos estructurados en marcado; el beneficio práctico es solo que las etiquetas og: usan property y no deberías "corregir" a name.
Dos realidades de producción atrapan a la gente. Primero, las plataformas cachean la tarjeta que hicieron scrape, así que editar tus etiquetas no actualiza un enlace ya compartido hasta que obligas a una re-extracción a través del depurador de la plataforma. Segundo, porque la mayoría de los scrapers no ejecutan JavaScript, las etiquetas Open Graph inyectadas en el cliente por una aplicación de una sola página a menudo no se ven en absoluto; la tarjeta regresa a un título básico o nada. Si tus páginas se construyen por JavaScript, la solución es renderizar el head en el servidor para que las etiquetas estén presentes en la primera respuesta que el scraper lee. Esta es la misma restricción que forma el rastreo, cubierto en la siguiente sección.
og:title, og:description, y og:image. Usan property en lugar de name, que se ve extraño al principio pero así es como se escriben. Establécelas y tus enlaces dejan de aparecer desnudos. og:title, og:description, og:image, og:url, og:type. Agrega twitter:card establecido a summary_large_image para la imagen grande, y dimensiona la imagen alrededor de 1200 por 630. Siempre verifica la tarjeta en un depurador de plataforma antes de confiar en ella. og:image relativa falla silenciosamente. Las plataformas cachean la tarjeta, así que un cambio necesita una re-extracción forzada en su depurador. Y las etiquetas renderizadas en el cliente a menudo nunca se ven, que es por qué una aplicación JavaScript tiene que renderizar el head en el servidor. Favicons y otras etiquetas link
El pequeño icono en la pestaña del navegador, junto al título de la página, es el favicon. Es cómo alguien nota tu pestaña entre una docena de otras. Agregás uno con una etiqueta <link> en el head:
<link rel="icon" href="/favicon.png" />La parte rel="icon" le dice al navegador que este archivo es el ícono de la página, y href apunta a la imagen. Una pequeña imagen cuadrada, alrededor de 32 por 32 píxeles, es suficiente. Es un pequeño detalle, y hace que un sitio se vea terminado.
El elemento <link> conecta tu página a un archivo relacionado, y el atributo rel dice qué es ese archivo. El favicon usa rel="icon", y un PNG o SVG moderno es una mejor opción que el antiguo formato .ico. Agrega también un ícono de toque de Apple, que es la imagen que iOS usa cuando alguien guarda tu sitio en su pantalla de inicio:
<link rel="icon" href="/favicon.svg" />
<link rel="apple-touch-icon" href="/apple-touch-icon.png" />Otro <link> gana su lugar aquí: la URL canónica. Cuando la misma página es accesible en más de una dirección, por ejemplo con y sin una barra diagonal al final o con parámetros de rastreo al final, rel="canonical" nombra la dirección que quieres que se trate como la real:
<link rel="canonical" href="https://escuelapan.example/masadremadre" />Eso les dice a los motores de búsqueda que acrediten todos los duplicados a esa única URL en lugar de dividir el estatus de la página entre ellos.
El atributo rel es una palabra clave de relación: establece qué es el recurso vinculado para este documento, que es por qué un elemento cubre iconos, canónicos, hojas de estilo y precargas. Para iconos, los navegadores aceptan varios y eligen por tamaño y formato; un ícono SVG se escala a cualquier pantalla sin un archivo separado por tamaño, con un respaldo PNG para navegadores más antiguos. El heredado favicon.ico es un formato multi-resolución mantenido por compatibilidad y ya no es el formato al que llegar primero.
El enlace canónico es el que tiene consecuencias reales de ranking, así que vale la pena hacerlo exactamente bien. Consolida link equity, el valor de ranking pasado por enlaces que apuntan a una página, en la URL que nombras, en lugar de dispersarlo entre direcciones duplicadas. La buena práctica es un canónico auto-referenciador en cada página (cada página nombra su propia URL limpia), lo que elimina la ambigüedad cuando aparecen parámetros o rutas alternativas. El modo de fallo es apuntar el canónico a la página incorrecta: una plantilla que codifica uno canónico en toda una sección le dice a los motores de búsqueda que cada página en ella es una copia de uno, y el resto se cae del índice. Otros valores de rel tales como preload y preconnect son sugerencias de rendimiento que obtienen o calientan una conexión a un recurso temprano; pertenecen a una discusión de velocidad de página en lugar de esta, así que trátalos como un puntero, no una tarea aquí.
<link rel="icon"> y una pequeña imagen cuadrada. Es algo diminuto que hace que un sitio se vea terminado. La etiqueta <link> en el head es cómo señalas a una página archivos adicionales como este. rel="icon" con un PNG o SVG en lugar del antiguo .ico, y agrega un apple-touch-icon para guardado en pantalla de inicio. El enlace canónico, rel="canonical", nombra la dirección real cuando una página es accesible en varios, así que los motores de búsqueda acreditan una URL en lugar de dividirla. rel es una palabra clave de relación, que es por qué un elemento maneja iconos, canónicos y precargas. Un ícono SVG se escala sin un archivo por tamaño. El canónico es el de altas apuestas: un canónico auto-referenciador por página es seguro, pero una plantilla apuntando cada página a una URL deja el resto fuera del índice. Conceptos básicos de rastreabilidad
Los motores de búsqueda envían programas que visitan páginas web, las leen, y las agregan a una lista grande para que la gente pueda encontrarlas más tarde. Ese programa es un rastreador, y la mayoría del tiempo quieres que haga su trabajo y no haces nada especial. Si tienes una página que prefieres mantener fuera de la búsqueda, un borrador o una página de agradecimiento privada, lo dices con una meta etiqueta robots:
<meta name="robots" content="noindex" />noindex significa "por favor no incluyas esta página en los resultados de búsqueda." Imagina el rastreador como un bibliotecario caminando los estantes y catalogando cada libro; esta etiqueta es una nota pidiendo que el bibliotecario omita este.
Un rastreador lee tu HTML, sigue los enlaces que encuentra para llegar a más páginas, e indexa el contenido para poder servirlo en resultados. Lo diriges con la meta etiqueta robots. noindex mantiene una página fuera de resultados, y nofollow le dice al rastreador que no pase crédito de ranking a través de los enlaces en la página:
<meta name="robots" content="noindex, nofollow" />No confundas esto con robots.txt, un archivo separado en la raíz de tu sitio que controla qué páginas se permite a un rastreador obtener. La meta etiqueta controla la indexación de una página que el rastreador ya ha alcanzado; el archivo controla el acceso.
Omite completamente la vieja etiqueta <meta name="keywords">. Una vez permitió que las páginas listaran sus propias palabras clave, los motores de búsqueda dejaron de confiar en ella hace muchos años, y no hace nada hoy. Lo que realmente ayuda a una página a rankear es construcción ordinaria buena: un título claro, encabezados reales, HTML semántico que nombra cada parte de la página, texto de enlace descriptivo, y una página que se carga rápidamente.
Ayuda separar tres pasos que un motor de búsqueda toma, porque las etiquetas actúan en diferentes. Rastrear es obtener la página. Indexar es almacenarla y entenderla para después. Rankear es ordenarla contra otras páginas para una consulta dada. La meta etiqueta robots con noindex actúa sobre la indexación; robots.txt actúa sobre el rastreo; un encabezado HTTP X-Robots-Tag puede aplicar las mismas reglas de indexación a archivos no-HTML como PDFs. El error clásico es bloquear una página en robots.txt y también agregar noindex a ella: al rastreador no se le permite obtener la página, así que nunca ve el noindex, y la URL puede permanecer en resultados sin descripción. Si quieres una página fuera del índice, déjala ser rastreada y deja que el noindex sea leído.
Los rastreadores modernos renderizam JavaScript, pero con un retraso y dentro de un presupuesto limitado, así que el contenido que solo aparece después de una obtención del lado del cliente se indexa lentamente o no en absoluto; la respuesta confiable es pre-renderizar en el servidor cualquier cosa que deba ser encontrada. Para describir una página en una forma que un motor de búsqueda pueda usar directamente, agrega datos estructurados, hechos legibles por máquina sobre la página. La forma estándar es un bloque JSON-LD, datos estructurados escritos en JSON usando el vocabulario Schema.org, colocado en el head o body dentro de una etiqueta <script type="application/ld+json">:
{
"@context": "https://schema.org",
"@type": "Recipe",
"name": "Pan de masa madre para principiantes",
"totalTime": "PT24H",
"recipeYield": "1 pan"
}Esto no aumenta tu ranking por sí solo; hace que una página sea elegible para resultados enriquecidos, los listados mejorados con estrellas, precios, o detalles de receta que se destacan en la SERP. En cuanto al ranking en sí, la mayoría de lo que la gente ajusta es mito. La meta etiqueta keywords ha sido ignorada desde alrededor de 2009. Repetir una palabra clave para parecer más relevante es detectado y funciona en tu contra. La descripción no es una entrada de ranking. Lo que consistentemente gana es contenido que responde la consulta, marcado semántico que hace legible la estructura, enlaces de otros sitios, y una página que es rápida y estable de cargar. Las etiquetas en este capítulo hacen que una página sea presentable y correctamente entendida; no sustituyen que la página merezca rankear.
<meta name="robots" content="noindex">. Ese es el control principal que alcanzarás en esta etapa, así que no necesitas pensar demasiado en el resto todavía. noindex, nofollow); el archivo robots.txt separado controla el rastreo. La vieja meta etiqueta keywords está muerta, así que ignórala. El ranking real viene de un título claro, HTML semántico, buenos enlaces, y una página rápida, no de una etiqueta mágica. robots.txt y agregar noindex, ya que el rastreador nunca obtiene la página para leer la etiqueta. JSON-LD gana resultados enriquecidos, no un impulso de ranking. Meta keywords está muerto; el contenido y la semántica son lo que realmente gana. 
