Implementando Google Authorship en Liferay para multiples autores

(Lightning Talk en el Liferay Spain Symposium 2013)

Desde su aparición en verano de 2011 la implementación de Google Authorship ha ido extendiéndose de forma progresiva sobre todo en este último año.

Qué es y cuales son sus beneficios

Primero os hablaré de lo que no es: Como indicó John Mueller, analista de Google Webmaster Tools, en el Google Webmaster Central Hangout broadcast de 27 de septiembre 2013 “We don’t use Authorship for ranking at the moment,” . No es todavía un factor de ranking, no obstante es muy recomendable su implementación.

Lightning Talk Miguel Ángel Pau en el Liferay Spain Symposium 2013

Básicamente consiste en dar de alta en el programa Authorship al autor del contenido, cruzando links con su perfil de Google+ para obtener un fragmento enriquecido con la foto y enlaces relacionados con contenido publicado por dicho autor.

Pero el rich snnipet no es el único beneficio:

  • Al aparecer la foto del autor se genera una mayor confianza en ese contenido
  • El rich snnipet altera el patrón típico de eye tracking desapareciendo el tradicional “triángulo de oro” de las SERPs.
  • Conseguimos distinción frente a la competencia
  • Aumento del CTR (Click Through Rate) o tasa de clics, más tráfico para nuestro portal.

Proceso de alta

Disponéis de dos opciones:

  1. Mediante una dirección de correo electrónica válida: Si genero artículos en el portal www.dominio.com y tengo una dirección de correo electrónico xxxx@dominio.com sigo el proceso que me indica Google en https://plus.google.com/authorship
  2. Implementación: Google nos ofrece una segunda opción se disponga o no de una dirección de correo electrónico del portal en el que escriben estos autores. Para ello es necesario:

Añadir, a cada entrada de blog o contenido con autoría, un enlace hacia el perfil del Google+ del autor donde el href debe terminar en ?rel=author. Ejemplo:

<a href="https://plus.google.com/107700311423087074311?rel=author">Miguel</a>

Añadir el link recíproco hacia www.dominio.com en la sección “Enlaces > Otros perfiles” dentro del perfil de Google+ del autor.

Perfil de Google+ con foto

Consideraciones: Número de autores y visualización de contenido

Vamos a lo que importa, cómo hacer esto en Liferay.

Si tenéis un portal con un solo autor es muy sencillo, podéis optar por:

  • añadir el enlace de forma manual a cada contenido (opción menos recomendada)
  • añadir el enlace con el ?rel=author en el tema de apariencia, footer, etc..
  • añadir el enlace en un contenido que permanezca visible tanto en cualquier vista de resumen como visualizando el contenido completo, por ejemplo con una disposición de página de 70%-30%.

Si en el portal hay más de un autor estas opciones ya no son válidas y es cuando toca remangarse la camisa para programar.

La opción que sugiero precisa de lo siguiente:
Crear un campo personalizado (expando) para los usuarios: En este campo el usuario podrá poner en su cuenta la URL de su perfil de Google+ o bien un link a una página interna del portal dónde haya una “bio” del autor que contenga el enlace a su perfil si así hemos hecho la arquitectura del portal. La opción más sencilla sería la primera.

Modificar los ficheros view_entry_content.jsp y asset_metadata.jspf de los portlets Blog y Publicador de contenidos respectivamente para renderizar el link en caso de que el campo personalizado contenga datos.

Opciones para esta implementación

Desarrollar un plugin que

  • Contenga un evento para crear el campo personalizado de usuario en el momento del despliegue (deploy
  • Contenga las modificaciones del jsp y jspf
  • Compruebe si el campo personalizado contiene datos o no para añadir entonces el enlace con el ?rel=author

O más sencillo…. descargar del Liferay Market place el plugin Author Plus disponible desde el pasado martes día 15 :)

Para verificar que todo está correcto podéis usar esta herramienta de Google Webmaster Tools http://www.google.com/webmasters/tools/richsnippets

Si queréis información mucho más completa sobre el proceso de desarrollo de Author Plus, especialmente para la creación del expando en el deploy, podéis visitar esta entrada del blog de Moisés Belda donde explica el proceso con gran detalle:

Author Plus Hook Making off

El plugin es open source, tenéis disponible el fuente en GitHub

SEO para Liferay Portal (V): Aplicando semántica al contenido

Continuando con la edición de contenidos en Liferay Portal y con aquellos aspectos que quedan dentro del marco del posicionamiento en buscadores, toca en esta ocasión contaros cómo aplicar semántica a vuestros contenidos usando microdatos de schema.org, opción recomendada por Google entre ésta, microformatos y RDFa.

Los microdatos ayudan a los motores de búsqueda a identificar y “entender”, dentro de nuestro contenido y de una manera estructurada, descripciones de productos, eventos, recetas, música o comentarios entre otros.

Cuando hemos facilitado correctamente a los motores de búsqueda esta información nos podremos encontrar que la presentan en forma de los conocidos fragmentos enriquecidos (rich snippets):

Rich Snippets - Fragmentos enriquecidos

Para estructurar estos datos debe utilizarse un etiquetado específico y estandarizado. Por ejemplo, si queremos facilitar datos de un libro tendríamos un código HTML similar a este:

<div itemscope itemtype="http://schema.org/Book">

Título <div itemprop="name"><strong>Canción de hielo y fuego: Vientos de invierno</strong></div>

Autor <div itemprop="author" itemscope itemtype="http://schema.org/Person">

Written by: <span itemprop="name">George R. R. Martin</span></div>

</div>

Imaginad un sitio web/portal en el que se van a publicar fichas de libros, imaginad que queremos dotar de estos microdatos a cada libro, imaginad que tenemos que hacerlo con el editor de contenido cada vez que añadamos uno nuevo...un peñazo! ¿Verdad?

Por suerte para esto podemos aprovechar una de las funcionalidades en Liferay que dota de gran flexibilidad a la edición de contenido: La combinación de estructuras y plantillas.

Analizando el sencillo ejemplo del libro podemos extraer 2 campos definidos en ese código, el título del libro y el autor, con lo que nuestra estructura deberá contener dos campos de tipo texto a los que llamaremos bookname y bookauthor (por ejemplo).

Panel de control > Contenido web > Estructuras > Añadir Estructura

Estructura Rich Snippet Liferay

Con la estructura ya creada el paso siguiente será añadir una plantilla en la que se maquete el contenido con los microdatos y con los valores que se introduzcan posteriormente con cada ficha de libro. Para ello el método más sencillo, partiendo de un código de ejemplo del tipo de “cosa” que queremos estructurar, es copiar y pegar el código HTML y sustituir el valor que contenga por las variables de nuestras estructuras.

Panel de control > Contenido web > Estructuras > Sobre el botón ACCIONES de la estructura anterior > Añadir Plantilla

Las variables del ejemplo anterior son $bookname y $bookauthor por lo que el código en la plantilla quedaría así:

<div itemscope itemtype="http://schema.org/Book">

Título <div itemprop="name"><strong>$bookname.getData()</strong></div>

Autor <div itemprop="author" itemscope itemtype="http://schema.org/Person">

Written by: <span itemprop="name">$bookauthor.getData()</span></div>

</div>

Cuando el responsable de contenido necesite crear una ficha nueva de libro, utilizando esta combinación de estructura y plantilla, simplemente se le solicitará que introduzca el título y el autor de dicho libro sin necesidad de “picar” ni una sola línea de HTML.

Este es un ejemplo muy sencillo con solo dos campos pero si profundizais en las posibilidades de schema.org veréis que podemos añadir mucha información y aquí es dónde el uso de estructuras y plantillas facilita enormemente la tarea de generar contenido estructurado.

Para conseguir el código del que partir podéis coger de schema.org uno a uno los elementos que deseéis incluir o bien hacerlo más sencillo y rápido usando la herramienta online http://schema-creator.org/ dónde la mayoría de ocasiones no os hará falta añadir ningún campo adicional.

Más información y herramientas sobre fragmentos enriquecidos y datos estructurados:

https://support.google.com/webmasters/answer/99170?hl=es

http://schema.org/docs/documents.html

http://www.google.com/webmasters/tools/richsnippets

SEO en Liferay Portal (IV): Meta etiquetas optimizadas para contenidos

Hace unas semanas me topaba con una pregunta planteada en StackOverflow que suele aparecer en más de una sesión de formación sobre gestión de contenidos con Liferay Portal cuando abordamos temas relacionados con la optimización para buscadores. Aproveché para contestarla y pensé que quizá, además de ese usuario al que encima "castigaron" con un voto negativo, habría más gente con dudas y me decidí a escribir esta breve entrada.

¿Cómo puedo hacer para que en la visualización de contenido web o de entradas de blog aparezcan meta etiquetas description y keywords relacionadas con el contenido y no las de la página?

Cuando se utiliza el Publicador de Contenidos y/o el Blog para la generación de noticias/contenido cada uno de los artículos cuenta con una URL propia en la que puede visualizarse desplegado a través del clásico "Leer más" o al hacer clic sobre el título del artículo . Si no hemos configurado nada para remediarlo podemos encontrarnos en Google Webmaster Tools con mensajes sobre duplicación de meta descriptions y/o meta keywords (el título html se genera con el del contenido por lo que en este sentido no habrá conflicto con el de la página).

Para contar con una descripción y algunas palabras clave específicas bastará con hacer 2 cosas:

Añadir etiquetas: cada etiqueta que añadamos al contenido web o la entrada de blog aparecerá al principio del contenido del meta keywords junto a las que estén configuradas en el meta keywords de la página.

meta etiqueta keywords específica para contenidos en Liferay

Rellenar campo Resumen: Al completar el resumen (abstract) obtendremos un resultado similar para la meta etiqueta description, todo el texto que se introduzca se añadirá al meta description de la página.

meta etiqueta description específica para contenidos en Liferay

Resultado:

Resultado meta description y keywords en código fuente de Liferay

jsessionid y otros parámetros en las URLs de Liferay

Todo Webmaster y/o Head SEO que desee cuidar la salud de las URLs indexadas por los motores de búsqueda pasa en alguna ocasión por la necesidad de eliminar de estos índices alguna url no deseada o de obviar algún parámetro incluido en las url’s.

En el caso de Liferay por defecto tenemos varios parámetros más o menos...”molestos” que deberían ser tratados con anterioridad al lanzamiento a producción de un portal web con el objetivo de evitar estas indexaciones.

Entre estos parámetros tenemos _33_redirect en las entradas de blog, p_p_state, p_p_auth, img_id, p_r_p_564233524_tag o el tan “detestado" por algunos... jsessionid.

Muchos de estos parámetros son detectados, por suerte, de forma automática por herramientas como Google Webmaster Tools y obviados de la indexación pero otros, como jsessionid es necesario gestionarlos de forma específica.

¿Qué opciones tenemos?

Lo primero de todo es decidir si realmente necesitamos usar jsessionid o no. Si podemos basar el seguimiento de sesiones en nuestro portal con cookies podemos desactivar este parámetro, aunque debemos tener claro que nos exponemos a navegadores dónde esté desactivado el uso de cookies y/o a aplicaciones de bloqueo de cookies.

Para desactivar el uso de jsessionid basta con añadir esta línea en el portal-ext.properties:

session.enable.url.with.session.id=false

Si por el contrario queremos usar jsessionid habrá que decirle a Google que no tenga en cuenta este parámetro, para ello hay que “Añadir un parámetro” en Webmaster Tools > Configuración > Parámetros de URL e indicarle que el parámetro no cambia el contenido de la página.

jsessionid, Liferay y SEO

Aprovecho para añadir también que si necesitamos desactivar las cookies debemos añadir esta otra línea al portal-ext.properties:

session.enable.persistent.cookies=false

Más información sobre gestión de parámetros en:

Google Webmaster Tools: LINK

Bing Webmaster Tools: LINK

Primer proyecto del LSUG, Quota Control Portlet

El pasado sábado 26 celebrábamos de nuevo una reunión de "LSUGers", integrantes del Liferay Spain User Group. La particularidad de este evento respecto a los realizados anteriormente fue el objetivo principal de la reunión: un maratón de programación o codeathon para desarrollar el primer proyecto de un grupo de usuarios de Liferay, una aplicación capaz de gestionar las cuotas de almacenamiento de instancias, sitios web, grupos de usuarios, etc.

Como tenía ganas de probar alguna de las herramientas en cloud disponibles para hacer infografías y gracias a que Juan Fernández recopiló muchos datos interesantes, me animé a hacer una infografía que resuma lo acontecido.

Estaba entre Infogr.am y Picktochart, y me decidí a probar la primera. A continuación tenéis el resultado.

Para los que queráis saber más sobre el LSUG, el proyecto, cómo participar o cómo organizar un evento en su ciudad os dejo algunos enlaces:

Mostrando el intervalo 21 - 25 de 32 resultados.

Proyectos en los que colaboro

XML Portlet Factory: CRUD portlet development