Datos estructurados de acciones de libros (Book)

Las acciones de libros hacen que la Búsqueda de Google se convierta en un lugar donde los usuarios pueden descubrir libros y autores, así como comprar o tomar prestados con rapidez esos libros directamente desde los resultados de búsqueda. Por ejemplo, un usuario busca La sombra del viento y se le muestran resultados que le permiten comprar o tomar prestado el libro. Si eres proveedor de libros, puedes proporcionar un feed de datos a Google con el esquema de datos estructurados que se indica en este artículo. En nuestra especificación, se incluyen ReadAction y BorrowAction para que los usuarios puedan comprar o tomar prestados libros, respectivamente.

Una acción de libro en los resultados de búsqueda

Las acciones de lectura y de préstamo, que están integradas en los paneles, muestran opciones para comprar o tomar prestados libros. Con los enlaces que proporcionas, las acciones de lectura y de préstamo redirigen a los usuarios directamente del panel de información u otras funciones de Google a páginas de libros de tu sitio web o aplicación.

El orden en el que aparecen los proveedores en el panel de información es dinámico y se adapta a cada usuario. Es decir, cada usuario ve los proveedores en un orden diferente, y es posible que un mismo usuario los vea ordenados de forma distinta en diferentes momentos. Hay varios factores que determinan este orden. Por ejemplo, si un usuario hace clic a menudo en el enlace de un proveedor concreto en el panel de información, es probable que ese proveedor aparezca en una posición más alta. No es posible controlar el orden de las posiciones.

Primeros pasos

Para implementar acciones de libros correctamente, crea tu feed siguiendo las definiciones de tipos de datos estructurados de este tipo de acciones. Sin embargo, antes de empezar, consulta las siguientes secciones:

Directrices

Para asegurarte de que tus libros aparezcan a menudo en la Búsqueda, es importante que conozcas algunos conceptos clave y detalles importantes. Además, tu feed debe cumplir algunas especificaciones de formato estándar.

Para cumplir todos estos requisitos, te ayudará seguir las directrices que se indican a continuación, además de las directrices generales de datos estructurados y las Directrices básicas de la Búsqueda. Estas son las directrices:

Obras y ediciones

En esta documentación, nos referimos a los libros con dos términos distintos:

  • Obra: es el concepto abstracto de un libro. En concreto, el título, el autor y el idioma original son atributos de una obra.
  • Edición: se trata de una copia concreta de un libro. En particular, el año de publicación, el nombre de la edición y el número internacional normalizado del libro (ISBN) son atributos de una edición.

Por ejemplo, La sombra del viento es una obra, pero cada variación concreta de ella es una edición. Así, esta novela puede tener una primera edición, una segunda edición, una edición abreviada y una edición traducida al francés, entre otras.

Esta distinción es especialmente importante en el feed, donde puede que no resulte tan obvia. Hay dos entidades Book:

  • Book (Work) es la entidad Book de nivel superior:
    • workExample es una propiedad de Work e indica una única instancia de Book (Edition).
    • Debe haber al menos una propiedad workExample en cada objeto Work.
  • Book (Edition) es la entidad Book de nivel inferior.

Es útil recordar que puede haber varias ediciones de una misma obra. Te recomendamos que agrupes estas ediciones en la medida de lo posible. De esta forma, ayudas a los sistemas de Google a reunir toda la información importante sobre un libro y a mostrarlo en la Búsqueda. Si es necesario, puedes separar las diferentes ediciones en varias entradas de una obra, pero ten en cuenta que cada una de ellas debe tener lo siguiente:

  • Un valor @id distinto
  • Al menos una edición con un ISBN u otro identificador admitido

Sistemas de bibliotecas y sus miembros

Library entity es el tipo de entidad Library de nivel superior. Se trata de una abstracción que está formada por una entidad LibrarySystem, que representa un sistema de bibliotecas, y de entidades Library (member) de nivel inferior, que representan las diferentes bibliotecas de ese sistema.

La entidad LibrarySystem también es una abstracción que representa una red de bibliotecas que colaboran; cada una es miembro del sistema. Por ejemplo, se puede representar a la red de bibliotecas de Austin como una entidad LibrarySystem. El sitio web de la biblioteca pública de Austin la describe como un sistema de bibliotecas públicas que presta servicio en Austin, Texas, y en el que se incluyen las 20 bibliotecas públicas del estado, que serían los miembros del sistema.

Todas las entidades LibrarySystem necesitan al menos una entidad Library (member), aunque en realidad se trate de una biblioteca que no forme parte de ningún sistema de bibliotecas. En este caso, en lo que respecta a la implementación de acciones de libros, esa biblioteca sería el único miembro de su propio sistema de bibliotecas. A diferencia de los sistemas de bibliotecas, las diferentes bibliotecas no son abstracciones y tienen dirección física.

Del mismo modo, toda entidad Library (member) debe pertenecer como mínimo a una entidad LibrarySystem.

ISBN y otros identificadores admitidos

El ISBN es el identificador principal en el que se basa la Búsqueda de Google para buscar correspondencias entre los datos de tu feed y los datos de Google. Debes indicar el ISBN u otro identificador admitido de todos los libros que quieras que aparezcan en los resultados de la Búsqueda. Si no proporcionas ninguno, es probable que no se encuentre ninguna correspondencia y, por tanto, tus libros no se muestren en los resultados.

La Búsqueda de Google prefiere el ISBN-13, pero hay otras alternativas:

  • Número del Online Computer Library Center (OCLC)
  • Número de control de la Biblioteca del Congreso (LCCN)
  • Código electrónico para libros en Japón

Para que los usuarios tengan la mejor experiencia posible cuando busquen tus libros, los enlaces que incluyas en tu feed deben cumplir las siguientes directrices:

  • Si tienes páginas duplicadas de un mismo contenido, debes incluir la URL canónica que contiene el título y otros datos del libro.
  • Cuando los usuarios hagan clic en un enlace de acción de lectura o de préstamo, se les debe redirigir a una página donde puedan comprar o tomar prestado el libro directamente. Es decir, no utilices enlaces que lleven a los usuarios a una página con enlaces en los que deban hacer clic para comprar o tomar prestado el contenido. Por ejemplo, no envíes a los usuarios a una página de resultados de búsqueda o a una página de resumen del producto.

Crear un feed

Si en tu sitio se venden libros, debes subir un feed de tipo Book. Ponte en contacto con tu representante de Google y consulta los detalles sobre cómo y dónde subir el feed.

Si en tu sitio se prestan libros, debes subir dos feeds distintos: un feed de tipo Book y otro de tipo Library. Ponte en contacto con tu representante de Google y consulta los detalles sobre cómo y dónde subir tus feeds.

Cumplir los requisitos de tamaño, cantidad y formato de feeds

Estos son los requisitos:

  • Requisitos de tamaño de feeds:
    • El archivo sin comprimir de un feed debe tener un tamaño inferior a 1 GB.
    • El archivo de un feed también debe ser inferior a 1 GB si vas a comprimirlo. Si el archivo de tu feed supera ese tamaño antes de comprimirlo, tienes que dividirlo en varios archivos.
  • Los archivos de un feed se pueden comprimir. En ese caso, deben tener el formato zip, gz, tar, tar.gz, JAR, ar, arj o cpio, o deben ser un archivo de volcado.
  • Si tu feed tiene varios archivos, puedes subirlos tal cual o, si lo prefieres, incluirlos en un archivo de índice de sitemaps.
  • Los archivos de feed únicos deben tener la extensión .json en el nombre de archivo.

Cumplir los requisitos de contenido de feeds

Presta especial atención a los siguientes requisitos de contenido de feeds:

  • El feed no debe contener entidades obsoletas; es decir, entidades cuyo valor availabilityEnds sea una fecha que ya ha pasado o entidades que ya no están disponibles en tu sitio.
  • Todos los enlaces profundos, como los incluidos con urlTemplate, y todas las URLs, como las indicadas con url, que añadas a tu feed deben ser URLs de producción. No incluyas URLs de control de calidad, de desarrollo ni de ningún otro tipo que no sea de producción.
  • Todas las URLs, como las especificadas con url, deben ser canónicas.
  • En cada entidad de tu feed deben indicarse las siguientes propiedades:
    • Un ID único: @id
    • Una URL única: url
    • Un enlace profundo único: urlTemplate

Probar el feed con la herramienta de validación de feeds de datos

Para solucionar errores y advertencias que se indican habitualmente en la herramienta de validación de feeds de datos, te recomendamos que sigas estos pasos:

  • Asegúrate de haber seleccionado la opción correcta en el campo Validar en. Para validar entidades Book, selecciona Acción de libros.

  • Comprueba que el valor de @type esté bien escrito.
  • Asegúrate de que el valor de @context sea correcto. Debes incluir "@context": "https://schema.org" tanto en ReadAction como en BorrowAction.

Alojar el archivo del feed

Cuando el archivo de tu feed esté listo, alójalo en un lugar seguro. Google consulta el feed con regularidad para asegurarse de que tu contenido esté actualizado.

Métodos de alojamiento

Se admiten los siguientes métodos de alojamiento de feeds:

Alojamiento Métodos de autenticación admitidos
Google Cloud Storage Permiso Lector de objetos de Storage
HTTPS Nombre de usuario y contraseña o certificados de cliente HTTP
SFTP Contraseña, clave y frase, o ambas
AWS S3 ID de clave y clave de acceso

Enviar a revisión el archivo del feed

Para que tu contenido esté disponible en la Búsqueda de Google, un equipo de asistencia de Google revisa la calidad de los enlaces profundos que hay en tu feed. Te recomendamos que pruebes manualmente algunos enlaces profundos para comprobar que lleven a páginas en las que los usuarios puedan comprar o tomar prestados los libros.

Para solicitar que se revise tu feed, facilita la siguiente información:

  • Ubicación del host: la URL del archivo del feed.
  • Autenticación del host (si procede): credenciales de autenticación que permitan que Google obtenga el archivo del feed de donde está alojado.

Actualizar el feed según sea necesario

Te recomendamos que actualices tu feed cada día, pero en realidad basta con que lo hagas siempre que cambie tu catálogo. Ten en cuenta las siguientes condiciones y consejos:

  • La Búsqueda de Google no admite actualizaciones en tiempo real.
  • La Búsqueda de Google obtiene tu feed una vez al día y suele indexar el contenido en dos días.
  • Si prevés algún cambio en la disponibilidad de una edición, indica las fechas exactas con availabilityStarts y availabilityEnds. Si esa entidad ya no está disponible, quítala por completo.

Definiciones de tipos de datos estructurados

Para que tu contenido se pueda mostrar en los resultados de búsqueda estructurados, debes incluir las propiedades obligatorias que se indican en esta sección. Si quieres, puedes incluir también las propiedades recomendadas para proporcionar más información sobre tu contenido y, así, ofrecer una mejor experiencia a tus usuarios.

Entidad DataFeed

Todos los archivos de feeds de datos de schema.org que se envían a Google deben contener una única entidad DataFeed en el nivel raíz. Todas las entidades Book y Library deben estar incluidas en el campo dataFeedElement de la entidad DataFeed.

Las propiedades que admite Google son las siguientes:

Propiedades obligatorias
@context

Text

Su valor debe ser https://schema.org.

@type

Text

Su valor debe ser DataFeed.

dataFeedElement

Book o LibrarySystem

Su valor debe ser una única entidad Book o LibrarySystem, o bien una matriz que solo contenga entidades de tipo Book o de tipo LibrarySystem. Si usas una matriz, no mezcles entidades de tipo Book con entidades de tipo LibrarySystem.

Ejemplo de uso en un feed Book:

{
  "@context": "https://schema.org",
  "@type": "DataFeed",
  "dataFeedElement": [
    {
      "@context": "https://schema.org",
      "@type": "Book",
      "@id": "https://example.com/work/the_catcher_in_the_rye",
      "url": "https://example.com/work/the_catcher_in_the_rye",
      "name": "The Catcher in the Rye",
      "author": {
        "@type": "Person",
        "name": "J.D. Salinger"
      },
      "sameAs": "https://en.wikipedia.org/wiki/The_Catcher_in_the_Rye",
      "workExample": [
        {
          "@type": "Book",
          "@id": "https://example.com/edition/the_catcher_in_the_rye_paperback",
          "isbn": "9787543321724",
          "bookEdition": "Mass Market Paperback",
          "bookFormat": "https://schema.org/Paperback",
          "inLanguage": "en",
          ...
        },
        ...
      ]
   }
  ],
  "dateModified": "2018-09-10T13:58:26.892Z"
}

Ejemplo de uso en un feed LibrarySystem:

{
  "@context": "https://schema.org",
  "@type": "DataFeed",
  "dataFeedElement": [
    {
      "@context": "https://schema.org",
      "@type": "LibrarySystem",
      "@id": "https://example.com/library-systems/100",
      "name": "Santa Clara County Library District",
      "additionalProperty": [
        {
          "@type": "PropertyValue",
          "name": "librarytype",
          "value": "public"
        }
      ],
      ...
    },
    ...
  ],
  "dateModified": "2018-09-10T13:58:26.892Z"
}
dateModified

DateTime

Indica la fecha y la hora de la actualización más reciente del feed en formato ISO 8601.

Entidad Book

Puedes consultar la definición completa de Book en schema.org/Book, pero basta con que tengas en cuenta las propiedades que se indican a continuación. Debes definir las propiedades obligatorias de todos los libros que decidas incluir en tu feed. También puedes especificar propiedades recomendadas para proporcionar más información sobre tu contenido y, así, ofrecer una mejor experiencia a tus usuarios.

Book (Work)

La entidad Book es la de nivel superior y representa una obra.

Las propiedades que admite Google son las siguientes:

Propiedades obligatorias
@context

Text

Su valor debe ser https://schema.org.

@id

Text

Indica un ID único a nivel mundial del libro en formato de URL. Debe ser exclusivo de tu organización. El ID debe ser permanente y no cambiar con el tiempo. Se sugiere emplear el formato de URL, aunque no es obligatorio. Tampoco tiene por qué ser un enlace que funcione. El dominio que utilices en el valor de @id debe ser propiedad de tu organización.

@type

Text

Su valor debe ser Book.

author

Person o Organization

Indica los autores del libro.

name

Text

Indica el título del libro.

url

URL

Especifica la URL de tu sitio web en la que se presenta o se describe el libro. Este enlace ayuda a relacionar de forma precisa el contenido de tu feed con el contenido de las bases de datos de Google. Puede ser la misma URL que la que se indica en workExample.target.urlTemplate.

Como página de destino real, la Búsqueda de Google utiliza la URL proporcionada en workExample.target.urlTemplate.

workExample

Book (Edition)

Indica las ediciones de la obra.

Propiedades recomendadas
sameAs

URL

Indica la URL de una página de referencia en la que se identifica la obra. Por ejemplo, una página sobre el libro en Wikipedia, Wikidata, VIAF o en la Biblioteca Nacional.

Book (Edition)

En la propiedad workExample se utiliza esta entidad Book. Representa una edición de una obra.

Las propiedades que admite Google son las siguientes:

Propiedades obligatorias
@id

Text

Indica un ID único a nivel mundial del libro en formato de URL. Debe ser exclusivo de tu organización. El ID debe ser permanente y no cambiar con el tiempo. Se sugiere emplear el formato de URL, aunque no es obligatorio. Tampoco tiene por qué ser un enlace que funcione. El dominio que utilices en el valor de @id debe ser propiedad de tu organización.

@type

Text

Su valor debe ser Book.

bookFormat

Enum

Indica el formato de la edición. Debe tener uno de los siguientes valores:

  • https://schema.org/AudiobookFormat
  • https://schema.org/EBook
  • https://schema.org/Hardcover
  • https://schema.org/Paperback
inLanguage

Text

Especifica el idioma principal del contenido de la edición. Utiliza uno de los códigos de dos letras de la lista de códigos ISO 639‑1 alfa‑2.

isbn

Text

Indica el ISBN-13 de la edición. Si solo tienes el ISBN-10, conviértelo a ISBN-13.

potentialAction

ReadAction o BorrowAction

La acción que se activará para que los usuarios compren o descarguen el libro. Puedes consultar más información en las secciones ReadAction o BorrowAction.

Propiedades recomendadas
author

Person o Organization

Indica los autores de la edición.

bookEdition

Text

La información sobre la edición del libro. Por ejemplo, 2nd Edition.

datePublished

Date

Indica la fecha de publicación de la edición en formato YYYY-MM-DD o YYYY. Puede ser una fecha concreta, pero también puedes especificar solo el año.

identifier

PropertyValue

Indica el ID externo o de otro tipo que identifica de forma inequívoca esta edición. Se permiten varios identificadores. Puedes consultar más información en la sección PropertyValue (identifier).

Esta propiedad se puede repetir.

name

Text

Indica el título de la edición. Incluye esta propiedad solo cuando el título de la edición sea diferente del título de la obra.

sameAs

URL

Indica la URL de una página web de referencia en la que se identifica de manera inequívoca la edición. Por ejemplo, puede ser una página de Wikipedia sobre esa edición concreta. No reutilices la propiedad sameAs de Work.

url

URL

Especifica la URL de tu sitio web en la que se presenta o se describe la edición. Puede ser la misma URL que la que se indica en workExample.target.urlTemplate.

Ejemplo de Book (Edition):

"workExample":
        {
          "@type": "Book",
          "@id": "https://example.com/book/100",
          "inLanguage": "en",
          "isbn": "9787543321724",
          "bookEdition": "20 Anniversary Edition",
          "datePublished": "2000-02-26",
          "bookFormat": "https://schema.org/Hardcover",
          "potentialAction": {...}
        }

Ejemplo de Book (Edition) con varias propiedades workExample:

"workExample": [
        {
          "@type": "Book",
          "@id": "https://example.com/book/200",
          "inLanguage": "zh",
          "isbn": "9787543321721",
          "bookEdition": "2nd Edition",
          "bookFormat": "https://schema.org/Hardcover",
          "potentialAction": {...}
        },
        {
          "@type": "Book",
          "@id": "https://example.com/book/300",
          "inLanguage": "zh",
          "isbn": "9787543321722",
          "bookEdition": "1st Edition",
          "bookFormat": "https://schema.org/EBook",
          "potentialAction": {...}
      }
 ]

Organization o Person (author)

La propiedad author del libro utiliza la entidad Person o Organization.

Propiedades obligatorias
@type

Text

Su valor debe ser Person o Organization.

name

Text

Indica el nombre de la persona o de la organización.

Propiedades recomendadas
sameAs

URL

Especifica la URL de una página web de referencia donde se identifica de manera inequívoca a la persona o a la organización; por ejemplo, puede ser una página de Wikipedia.

Ejemplo de author:

"author": {
  "@type": "Person",
  "name": "William Shakespeare"
}

Ejemplo con varias propiedades author:

"author": [
  {
    "@type": "Person",
    "name": "William Shakespeare"
  },
  {
    "@type": "Person",
    "name": "Victor Hugo",
    "sameAs": "https://en.wikipedia.org/wiki/Victor_Hugo"
  }
]

PropertyValue (identifier)

En la propiedad identifier de Edition se utiliza la entidad PropertyValue.

Propiedades obligatorias
@type

Text

Su valor debe ser PropertyValue.

propertyID

Text

Indica el tipo de ID. Tal como se describe en la sección ISBN y otros identificadores admitidos, debe ser uno de los siguientes:

  • OCLC_NUMBER
  • LCCN
  • JP_E-CODE
value

Text

El valor del ID. Indica el ID externo que identifica de forma inequívoca esta edición. Quita todos los prefijos no numéricos de este ID.

Ejemplo de identifier:

    "identifier": {
      "@type": "PropertyValue",
      "propertyID": "OCLC_NUMBER",
      "value":  "110123456"
    }

Ejemplo con varias propiedades identifier:

    "identifier": [
    {
      "@type": "PropertyValue",
      "propertyID": "OCLC_NUMBER",
      "value":  "110123456"
    },
    {
      "@type": "PropertyValue",
      "propertyID": "LCCN",
      "value":  "220123456"
    },{
      "@type": "PropertyValue",
      "propertyID": "JP_E-CODE",
      "value":  "12345678901234567890"
    }]

Ejemplo de un feed ReadAction Book en formato de archivo JSON

{
  "@context": "https://schema.org",
  "@type": "DataFeed",
  "dataFeedElement": [
    {
      "@context": "https://schema.org",
      "@type": "Book",
      "@id": "https://example.com/work/the_catcher_in_the_rye",
      "url": "https://example.com/work/the_catcher_in_the_rye",
      "name": "The Catcher in the Rye",
      "author": {
        "@type": "Person",
        "name": "J.D. Salinger"
      },
      "sameAs": "https://en.wikipedia.org/wiki/The_Catcher_in_the_Rye",
      "workExample": [
        {
          "@type": "Book",
          "@id": "https://example.com/edition/the_catcher_in_the_rye_paperback",
          "isbn": "9787543321724",
          "bookEdition": "Mass Market Paperback",
          "bookFormat": "https://schema.org/Paperback",
          "inLanguage": "en",
          "url": "https://example.com/edition/the_catcher_in_the_rye_paperback",
          "datePublished": "1991-05-01",
          "identifier": {
            "@type": "PropertyValue",
            "propertyID": "OCLC_NUMBER",
            "value": "1057320822"
          },
          "potentialAction": {
            "@type": "ReadAction",
            "target": {
              "@type": "EntryPoint",
              "urlTemplate": "https://example.com/store/9787543321724",
              "actionPlatform": [
                "https://schema.org/DesktopWebPlatform",
                "https://schema.org/AndroidPlatform",
                "https://schema.org/IOSPlatform"
              ]
            },
            "expectsAcceptanceOf": {
              "@type": "Offer",
              "category": "purchase",
              "price": 6.99,
              "priceCurrency": "USD",
              "availabilityStarts": "2020-01-01T11:0:00-04:00",
              "availabilityEnds": "2050-06-30T23:59:00-04:00",
              "eligibleRegion": {
                "@type": "Country",
                "name": "US"
              }
            }
          }
        },
        {
          "@type": "Book",
          "@id": "https://example.com/edition/the_catcher_in_the_rye_hardcover",
          "isbn": "9780316769532",
          "bookEdition": "Hardcover",
          "bookFormat": "https://schema.org/Hardcover",
          "inLanguage": "en",
          "url": "https://example.com/edition/the_catcher_in_the_rye_hardcover",
          "datePublished": "1951-07-16",
          "potentialAction": {
            "@type": "ReadAction",
            "target": {
              "@type": "EntryPoint",
              "urlTemplate": "https://example.com/store/9780316769532",
              "actionPlatform": [
                "https://schema.org/DesktopWebPlatform",
                "https://schema.org/AndroidPlatform",
                "https://schema.org/IOSPlatform"
              ]
            },
            "expectsAcceptanceOf": [
              {
                "@type": "Offer",
                "category": "nologinrequired",
                "availabilityStarts": "2020-01-01T11:0:00-04:00",
                "availabilityEnds": "2050-06-30T23:59:00-04:00",
                "eligibleRegion": [
                  {
                    "@type": "Country",
                    "name": "US"
                  },
                  {
                    "@type": "Country",
                    "name": "GB"
                  }
                ]
              },
              {
                "@type": "Offer",
                "category": "Subscription",
                "availabilityStarts": "2020-01-01T11:0:00-04:00",
                "availabilityEnds": "2050-06-30T23:59:00-04:00",
                "eligibleRegion": {
                  "@type": "Country",
                  "name": "IN"
                }
              }
            ]
          }
        }
      ]
    }
  ],
  "dateModified": "2018-09-10T13:58:26.892Z"
}

Ejemplo de un feed BorrowAction Book en formato de archivo JSON

{
  "@context": "https://schema.org",
  "@type": "DataFeed",
  "dataFeedElement": [
    {
      "@context": "https://schema.org",
      "@type": "Book",
      "@id": "https://example.com/work/the_catcher_in_the_rye",
      "url": "https://example.com/work/the_catcher_in_the_rye",
      "name": "The Catcher in the Rye",
      "author": {
        "@type": "Person",
        "name": "J.D. Salinger"
      },
      "sameAs": "https://en.wikipedia.org/wiki/The_Catcher_in_the_Rye",
      "workExample": [
        {
          "@type": "Book",
          "@id": "https://example.com/edition/the_catcher_in_the_rye_paperback",
          "isbn": "9787543321724",
          "bookEdition": "Mass Market Paperback",
          "bookFormat": "https://schema.org/Paperback",
          "inLanguage": "en",
          "url": "https://example.com/edition/the_catcher_in_the_rye_paperback",
          "datePublished": "1991-05-01",
          "identifier": {
            "@type": "PropertyValue",
            "propertyID": "OCLC_NUMBER",
            "value": "1057320822"
          },
          "potentialAction": {
            "@type": "BorrowAction",
            "lender": {
              "@type": "LibrarySystem",
              "@id": "https://example.com/librarySystem/100"
            },
            "target": {
              "@type": "EntryPoint",
              "urlTemplate": "https://example.com/borrowpurchase?bookId=170",
              "actionPlatform": [
                "https://schema.org/DesktopWebPlatform",
                "https://schema.org/AndroidPlatform",
                "https://schema.org/IOSPlatform"
              ]
            }
          }
        },
        {
          "@type": "Book",
          "@id": "https://example.com/edition/the_catcher_in_the_rye_hardcover",
          "isbn": "9780316769532",
          "bookEdition": "Hardcover",
          "bookFormat": "https://schema.org/Hardcover",
          "inLanguage": "en",
          "url": "https://example.com/edition/the_catcher_in_the_rye_hardcover",
          "datePublished": "1951-07-16",
          "potentialAction": {
            "@type": "BorrowAction",
            "lender": {
              "@type": "LibrarySystem",
              "@id": "https://example.com/librarySystem/100"
            },
            "target": [
              {
                "@type": "EntryPoint",
                "urlTemplate": "https://example.com/borrowpurchase?bookId=170",
                "actionPlatform": [
                  "https://schema.org/DesktopWebPlatform"
                ]
              },
              {
                "@type": "EntryPoint",
                "urlTemplate": "https://example.com/mobile/borrowpurchase?bookId=170",
                "actionPlatform": [
                  "https://schema.org/AndroidPlatform",
                  "https://schema.org/IOSPlatform"
                ]
              }
            ]
          }
        }
      ]
    }
  ],
  "dateModified": "2018-09-10T13:58:26.892Z"
}

ReadAction (potentialAction)

En la propiedad potentialAction se utiliza la entidad ReadAction. En la entidad ReadAction se incluyen los enlaces profundos para acceder a los libros, las tiendas que los venden y los criterios que deben cumplir los usuarios para tener acceso a los libros. Entre los criterios se pueden incluir el estado de suscripción, de inicio de sesión, la ubicación o cualquier otro elemento necesario.

Propiedades obligatorias
@type

Text

Su valor debe ser ReadAction.

expectsAcceptanceOf

Offer

Define los requisitos que deben cumplir los usuarios para acceder a esta entidad. Si hay varias propiedades Offer, es posible que baste con cumplir los criterios de una de las propiedades Offer para acceder al contenido.

Esta propiedad se puede repetir.

expectsAcceptanceOf.@type

Text

Su valor debe ser Offer.

expectsAcceptanceOf.category

Text

Indica el tipo de Offer. Debe tener uno de los siguientes valores:

  • nologinrequired: los usuarios pueden realizar la acción sin tener que comprar ni iniciar sesión para acceder al contenido.
  • free: los usuarios pueden realizar la acción sin tener que comprar ni pagar por una suscripción, pero si deben iniciar sesión.
  • subscription: el libro está incluido en la suscripción de pago a tu servicio.
  • purchase: se puede acceder al libro comprándolo.
  • rental: se puede acceder al libro durante un periodo fijo después de pagar.
expectsAcceptanceOf.eligibleRegion

Country

Especifica el país en el que es válida la oferta de la propiedad Offer. De este modo, se puede controlar el país y la región en los que el contenido está o no disponible.

Esta propiedad se puede repetir.

expectsAcceptanceOf.eligibleRegion.@type

Text

Su valor debe ser Country.

expectsAcceptanceOf.eligibleRegion.name

Text

Indica el código de país según la norma ISO 3166-1 alfa-2.

target

EntryPoint

Indica las especificaciones del enlace profundo, en las que se incluye información sobre la plataforma admitida. Se pueden usar varias propiedades EntryPoint para definir distintos enlaces profundos de diferentes conjuntos de plataformas.

Esta propiedad se puede repetir.

target.@type

Text

Su valor debe ser EntryPoint.

target.actionPlatform

Text

Especifica las plataformas en las que este enlace profundo es válido. Debe tener uno de los siguientes valores:

  • https://schema.org/DesktopWebPlatform
  • https://schema.org/AndroidPlatform
  • https://schema.org/IOSPlatform

Esta propiedad se puede repetir.

target.urlTemplate

URL

Indica el enlace con el que los usuarios acceden directamente al contenido de la página de destino que incluye tu libro.

Propiedades recomendadas
expectsAcceptanceOf.availabilityEnds

DateTime

Indica la hora de finalización del periodo de disponibilidad. Con esta propiedad, puedes controlar el momento exacto en el que el libro se debe dejar de mostrar a los usuarios.

expectsAcceptanceOf.availabilityStarts

DateTime

Especifica la hora de inicio del periodo de disponibilidad. Te permite controlar el momento exacto en el que el libro se puede empezar a mostrar a los usuarios.

expectsAcceptanceOf.price

Number

Indica el precio de compra del libro. Es obligatorio cuando se asigna el valor purchase o rental al atributo category de la propiedad Offer.

expectsAcceptanceOf.priceCurrency

Text

Especifica la moneda del precio en el formato estándar ISO 4217 de tres letras.

Ejemplo de ReadAction:

"potentialAction": {
  "@type": "ReadAction",
  "target": {
    "@type": "EntryPoint",
    "urlTemplate": "https://example.com/purchase?bookId=170",
    "actionPlatform": [
      "https://schema.org/DesktopWebPlatform",
      "https://schema.org/AndroidPlatform",
      "https://schema.org/IOSPlatform"
    ]
  },
  "expectsAcceptanceOf": {
    "@type": "Offer",
    "category": "purchase",
    "price": "9.99",
    "priceCurrency": "USD",
    "availabilityStarts": "2018-04-01T11:01:00-04:00",
    "availabilityEnds": "2018-06-30T23:59:00-04:00",
    "eligibleRegion": {
      "@type": "Country",
      "name": "US"
    }
  }
}

Ejemplo de ReadAction con varias propiedades EntryPoint:

"potentialAction": {
  "@type": "ReadAction",
  "target": [
    {
      "@type": "EntryPoint",
      "urlTemplate": "https://example.com/purchase?bookId=170",
      "actionPlatform": [
        "https://schema.org/DesktopWebPlatform"
      ]
    },
    {
      "@type": "EntryPoint",
      "urlTemplate": "https://example.com/mobile/purchase?bookId=170",
      "actionPlatform": [
        "https://schema.org/AndroidPlatform",
        "https://schema.org/IOSPlatform"
      ]
    }
  ],
  "expectsAcceptanceOf": [
    {
      "@type": "Offer",
      "category": "noLoginRequired",
      "availabilityStarts": "2018-04-01T11:01:00-04:00",
      "availabilityEnds": "2018-06-30T23:59:00-04:00",
      "eligibleRegion": [
        {
          "@type": "Country",
          "name": "US"
        },
        {
          "@type": "Country",
          "name": "GB"
        }
      ]
    },
    {
      "@type": "Offer",
      "category": "Subscription",
      "availabilityStarts": "2018-04-01T11:01:00-04:00",
      "availabilityEnds": "2018-06-30T23:59:00-04:00",
      "eligibleRegion": {
        "@type": "Country",
        "name": "IN"
      }
    }
  ]
}

BorrowAction (potentialAction)

En la propiedad potentialAction se utiliza la entidad BorrowAction. En la entidad BorrowAction se incluyen enlaces profundos para acceder a los libros, las bibliotecas en las que están y los criterios que deben cumplir los usuarios para tener acceso a los libros. Entre los criterios se pueden incluir el estado de suscripción, de inicio de sesión, la ubicación o cualquier otro elemento necesario.

Propiedades obligatorias
@type

Text

Su valor debe ser BorrowAction.

lender

LibrarySystem

Indica el sistema de bibliotecas que da acceso a esta edición.

lender.@id

URL

Especifica las referencias de ID de la entidad LibrarySystem, que se deben describir por separado en el feed de biblioteca.

lender.@type

Text

Su valor debe ser LibrarySystem.

target

EntryPoint

Indica las especificaciones del enlace profundo, en las que se incluye información sobre la plataforma admitida. Para definir enlaces profundos de diferentes conjuntos de plataformas, utiliza una matriz de EntryPoint.

Esta propiedad se puede repetir.

target.@type

Text

Su valor debe ser EntryPoint.

target.actionPlatform

Text

Especifica las plataformas en las que este enlace profundo es válido. Debe tener uno de los siguientes valores:

  • https://schema.org/DesktopWebPlatform
  • https://schema.org/AndroidPlatform
  • https://schema.org/IOSPlatform

Esta propiedad se puede repetir.

target.urlTemplate

URL

Indica el enlace con el que los usuarios acceden directamente al contenido de la página de destino que incluye tu libro.

Ejemplo de BorrowAction:

"potentialAction": {
  "@type": "BorrowAction",
  "lender": {
    "@type": "LibrarySystem",
    "@id": "https://example.com/librarySystem/100"
  },
  "target": {
    "@type": "EntryPoint",
    "urlTemplate": "https://example.com/borrow?bookId=170",
    "actionPlatform": [
      "https://schema.org/DesktopWebPlatform",
      "https://schema.org/AndroidPlatform",
      "https://schema.org/IOSPlatform"
    ]
  }
}

Ejemplo de BorrowAction con varias propiedades EntryPoint:

"potentialAction": {
  "@type": "BorrowAction",
  "lender": {
    "@type": "LibrarySystem",
    "@id": "https://example.com/librarySystem/100"
  },
  "target": [
    {
      "@type": "EntryPoint",
      "urlTemplate": "https://example.com/borrow?bookId=170",
      "actionPlatform": [
        "https://schema.org/DesktopWebPlatform"
      ]
    },
    {
      "@type": "EntryPoint",
`      "urlTemplate": "https://example.com/mobile/borrow?bookId=170",
      "actionPlatform": [
        "https://schema.org/AndroidPlatform",
        "https://schema.org/IOSPlatform"
      ]
    }
  ]
}

Entidad Library

Puedes consultar la definición completa de Library en schema.org/Library, pero basta con que tengas en cuenta las propiedades que se indican a continuación. Debes definir las propiedades obligatorias de todas las bibliotecas que incluyas en tu feed. También puedes especificar propiedades recomendadas para proporcionar más información sobre tu contenido y, así, ofrecer una mejor experiencia a tus usuarios.

Esta entidad Library es el tipo de entidad Library de nivel superior. Se trata de una abstracción, que está formada por una entidad LibrarySystem y todas las entidades Library (member) de nivel inferior de esa entidad LibrarySystem.

El feed Library es distinto del feed Book; por lo tanto, si implementas un feed Library, debe ser completamente independiente de tu feed Book. Consulta más información en la sección Crear un feed.

LibrarySystem

La entidad LibrarySystem representa una red de bibliotecas que colaboran, cada una es miembro del sistema.

Propiedades obligatorias
@context Text

Su valor debe ser https://schema.org.

@id URL

Indica un ID único a nivel mundial del sistema de bibliotecas en formato de URL. El ID debe ser permanente y no cambiar con el tiempo. La URL se trata como una cadena opaca y no tiene por qué ser un enlace que funcione. El dominio que incluyas en el valor @id debe ser propiedad de tu organización.

@type Text

Su valor debe ser LibrarySystem.

additionalProperty PropertyValue

Es la propiedad adicional con la que se indica el tipo de biblioteca.

additionalProperty.@type Text

Su valor debe ser PropertyValue.

additionalProperty.name Text

Su valor debe ser librarytype.

additionalProperty.value Text

Indica el tipo de biblioteca. Debe tener uno de los siguientes valores:

  • public
  • academic
  • corporate
  • government
  • school
  • special
member Library

Especifica los miembros del sistema de bibliotecas.

name Text

Indica el nombre del sistema de bibliotecas. Por ejemplo, The Southwestern League of Libraries.

url URL

Especifica la URL donde se presenta o se describe el sistema de bibliotecas. Con este enlace, la Búsqueda de Google relaciona el contenido de tu feed con el contenido de las bases de datos de Google. Como página de destino real, la Búsqueda de Google utiliza la URL proporcionada en workExample.target.urlTemplate.

Library (member)

En la propiedad member de la entidad LibrarySystem se utiliza la entidad Library (member). Library (member) representa una única biblioteca que es miembro de un sistema de bibliotecas determinado.

Propiedades obligatorias
@id URL

Indica un ID único a nivel mundial de la biblioteca miembro en formato de URL. El ID debe ser permanente y no cambiar con el tiempo. La URL se trata como una cadena opaca y no tiene por qué ser un enlace que funcione. El dominio que incluyas en el valor @id debe ser propiedad de tu organización.

@type Text

Su valor debe ser Library.

location PostalAddress

Indica la dirección postal de la biblioteca miembro. No todas las propiedades son pertinentes en todos los países, pero debes incluir todas las que correspondan a las direcciones de tus bibliotecas.

Ejemplo de location de Estados Unidos:

{
  "@type": "Library",
  "@id": "https://example.com/library-branches/1001",
  "name": "Campbell Library",
  "location": {
    "@type": "PostalAddress",
    "streetAddress": "77 Harrison Ave",
    "addressLocality": "Campbell",
    "addressRegion": "CA",
    "postalCode": "95008",
    "addressCountry": "US"
  }
}

Ejemplo de location de Japón:

{
  "@type": "Library",
  "@id": "https://example.com/library-branches/1003",
  "name": "Tokyo Metropolitan Central Library",
  "location": {
    "@type": "PostalAddress",
    "streetAddress": "7-13-5 Minamiazabu, Minato City",
    "addressLocality": "Tokyo",
    "postalCode": "106-0047",
    "addressCountry": "JP"
  }
}
location.@type Text

Su valor debe ser PostalAddress.

location.addressCountry Text

Indica el código de país con el formato ISO 3166-1. Por ejemplo, US.

location.addressLocality Text

Indica el municipio. Por ejemplo, Mountain View.

location.addressRegion Text

Especifica la región. Por ejemplo, CA.

location.postalCode Text

Indica el código postal. Por ejemplo, 94043.

location.streetAddress Text

Especifica la dirección postal. Por ejemplo, 1600 Amphitheatre Pkwy.

name Text

Indica el nombre de la biblioteca miembro.

Ejemplo de un feed LibrarySystem en formato de archivo JSON

{
   "@context": "https://schema.org",
   "@type":"LibrarySystem",
   "@id":"https://example.com/library-systems/100",
   "name":"Santa Clara County Library District",
   "additionalProperty":[
      {
         "@type":"PropertyValue",
         "name":"librarytype",
         "value":"public"
      }
   ],
   "member":[
      {
         "@type":"Library",
         "@id":"https://example.com/library-branches/1001",
         "name":"Campbell Library",
         "location":{
            "@type":"PostalAddress",
            "streetAddress":"77 Harrison Ave",
            "addressLocality":"Campbell",
            "addressRegion":"CA",
            "postalCode":"95008",
            "addressCountry":"US"
         }
      },
      {
         "@type":"Library",
         "@id":"https://example.com/library-branches/1002",
         "name":"Gilroy Library",
         "location":{
            "@type":"PostalAddress",
            "streetAddress":"350 W 6th St",
            "addressLocality":"Gilroy",
            "addressRegion":"CA",
            "postalCode":"95020",
            "addressCountry":"US"
         }
      }
   ]
}