Función @meta para Blogger

Función utilitaria diseñada para automatizar la generación de etiquetas meta esenciales, optimización SEO y protocolos de redes sociales (Open Graph y Twitter Cards) en Blogger. Genera favicons responsivos, directrices de indexación para motores de búsqueda y la resolución de imágenes destacadas para plataformas externas. Esta función fue creada como un reemplazo moderno a all-head-content

Esta función forma parte del proyecto Hamlet. Puedes revisar el código fuente en GitHub.

Definición de la función

<b:includable id='@meta'>
  <b:comment>
  Generates essential metadata, SEO, and Open Graph/Twitter Cards.
  @author zkreations
  @param {String} [icon] - Base URL to generate responsive favicons.
  @param {Array[Number]} [iconSizes=[32,96,180,192]] - Dimensions for the favicons.
  @param {String} [robots] - Custom meta robots configuration for homepage/posts.
  @param {String} [defaultImage] - Default image URL for social networks.
  @param {String} [twitterCard="summary_large_image"] - Twitter Card type (summary, summary_large_image).
  @param {String} [twitterSite] - Twitter/X handle of the website (e.g., @zkreations).
  </b:comment>
  <meta expr:charset='data:blog.encoding'/>
  <meta content='width=device-width,initial-scale=1' name='viewport'/>
  <b:if cond='data:icon'>
    <b:loop values='data:iconSizes ?: [32,96,180,192]' var='size'>
      <link expr:href='resizeImage(data:icon, data:size, "1:1")' rel='icon' expr:sizes='data:size + "x" + data:size' type='image/png'/>
    </b:loop>
  <b:else/>
    <link expr:href='data:blog.blogspotFaviconUrl' rel='icon' type='image/x-icon'/>
  </b:if>
  <b:if cond='data:view.description'>
    <meta expr:content='data:view.description.escaped' name='description'/>
    <meta expr:content='data:view.description.escaped' property='og:description'/>
    <meta expr:content='data:view.description.escaped' name='twitter:description'/>
  </b:if>
  <link expr:href='data:view.url.canonical' rel='canonical'/>
  <meta expr:content='data:view.url.canonical' property='og:url'/>
  <meta expr:content='data:view.url.canonical' name='twitter:url'/>
  <meta expr:content='data:view.title.escaped' property='og:title'/>
  <meta expr:content='data:view.isHomepage or data:view.isSingleItem
    ? (data:robots ?: "index,follow,max-snippet:-1,max-image-preview:large,max-video-preview:-1")
    : "noindex,follow"' name='robots'/>
  <meta expr:content='data:view.isSingleItem ? "article" : "website"' property='og:type'/>
  <b:with value='data:view.featuredImage ? data:view.featuredImage : (data:defaultImage ? data:defaultImage : false)' var='rawImage'>
    <b:if cond='data:rawImage'>
      <b:if cond='data:rawImage.isResizable'>
        <meta expr:content='resizeImage(data:rawImage, 1200, "1200:630")' property='og:image'/>
        <meta expr:content='resizeImage(data:rawImage, 1200, "1200:630")' name='twitter:image'/>
        <meta content='1200' property='og:image:width'/>
        <meta content='630' property='og:image:height'/>
      <b:else/>
        <meta expr:content='data:rawImage' property='og:image'/>
        <meta expr:content='data:rawImage' name='twitter:image'/>
      </b:if>
    </b:if>
  </b:with>
  <meta expr:content='data:twitterCard ?: "summary_large_image"' name='twitter:card'/>
  <b:if cond='data:twitterSite'>
    <meta expr:content='data:twitterSite' name='twitter:site'/>
  </b:if>
</b:includable>

Especificación de Parámetros

Parámetro Tipo Descripción
icon string URL base para generar los favicons.
iconSizes number[] Tamaños para generar los favicons.
robots string Directiva para los motores de búsqueda.
defaultImage string Imagen de respaldo para tarjetas sociales.
twitterCard string Tipo de tarjeta de Twitter/X (Ej: "summary", "summary_large_image").
twitterSite string Usuario de Twitter/X del sitio o autor.

Modo de uso

Para implementar esta función, añade el fragmento en los marcados predeterminados (<b:defaultmarkups type='Common'>) de tu tema e inclúyela directamente dentro de la etiqueta <head>.

icon

Recibe la ubicación de la imagen que actuará como icono del sitio. Si se omite, el código recurre automáticamente al favicon predeterminado hospedado por el servicio de Blogger.

<b:include data='{
  icon: "https://blogger.googleusercontent.com/img/b/U3VhcG8/logo.png"
}' name='@meta'/>
<link href='/w32-h32-p-k-no-nu/logo.png' rel='icon' sizes='32x32' type='image/png'/>

iconSizes

Especifica el listado de tamaños en píxeles que generará el bucle interno para las declaraciones de los iconos adaptables. Requiere que el parámetro icon esté definido.

<b:include data='{
  icon: "https://blogger.googleusercontent.com/img/b/U3VhcG8/logo.png",
  iconSizes: [32, 128]
}' name='@meta'/>
<link href='/w32-h32-p-k-no-nu/favicon.ico' rel='icon' sizes='32x32' type='image/png'/>
<link href='/w128-h128-p-k-no-nu/favicon.ico' rel='icon' sizes='128x128' type='image/png'/>

robots

Inyecta reglas explícitas de indexación para la página principal o artículos individuales. En vistas secundarias de archivos o etiquetas, la función forzará automáticamente el valor "noindex,follow" para evitar contenido duplicado.

<b:include data='{ robots: "index,follow,noimageindex" }' name='@meta'/>
<meta content='index,follow,noimageindex' name='robots'/>

defaultImage

Determina la imagen utilizada para las metaetiquetas og:image y twitter:image. Si la vista actual cuenta con una imagen destacada (featuredImage), esta tendrá prioridad absoluta sobre la imagen por defecto declarada en este parámetro.

<b:include data='{
  defaultImage: "https://blogger.googleusercontent.com/img/b/U3VhcG8/og-default.png"
}' name='@meta'/>
<meta content='https://blogger.googleusercontent.com/img/b/U3VhcG8/og-default.png' property='og:image'/>

twitterCard

Define la estructura visual y de presentación del enlace al ser compartido en la red social Twitter/X. El formato predeterminado es "summary_large_image".

<b:include data='{ twitterCard: "summary" }' name='@meta'/>
<meta content='summary' name='twitter:card'/>

twitterSite

Añade la cuenta de usuario encargada o propietaria de la publicación en las tarjetas compartidas para optimizar la vinculación de la marca dentro de la plataforma social.

<b:include data='{ twitterSite: "@zkreations" }' name='@meta'/>
<meta content='@zkreations' name='twitter:site'/>