HERRAMIENTA GRATUITA · GENERADOR DE SCHEMA DE PRODUCTO
Generador de schema de producto
Describe un producto y obtén sus datos estructurados en JSON-LD —Product con su Offer— comprobados mientras escribes contra las reglas de las fichas de comerciante de Google: precio mayor que cero y con punto decimal, moneda ISO 4217, una fecha de validez sin caducar y el EAN en cifras. Además, el bloque visible de la ficha con los mismos valores.
También enEnglish繁體中文日本語한국어EspañolFrançaisDeutschPortuguês (Brasil)
Obligatorio. Google sugiere la misma foto en varias proporciones: 1x1, 4x3 y 16x9.
Como mucho, una marca.
Solo cifras: 8, 12, 13 o 14. Un EAN de GS1 Spain empieza por 84; el del ejemplo usa 952, el prefijo que GS1 reserva para ejemplos. La forma de URL no se admite.
Cifras y un punto: 12.90, no 12,90 € ni 1.299,00. Si vendes a consumidores, con IVA: es el precio que enseña tu ficha, y el marcado tiene que coincidir con él.
AAAA-MM-DD. Una fecha ya pasada puede hacer que la ficha no se muestre.
La URL del nodo que marcaste en Organization. Google lo prefiere a una copia de la política en cada Offer.
Solo valoraciones que tu tienda recogió de sus compradores. Nunca las de un marketplace.
Si lo dejas vacío, Google entiende una escala de 5.
Todo se ejecuta en esta página: ningún nombre, precio ni URL sale de tu navegador. El bloque visible sale con las etiquetas en español y los valores tal como los declara el marcado.
Fuentes: Google sobre fichas de comerciante, schema.org/price, Merchant Center sobre el precio y las fichas gratuitas; en el BOE, el RD 3423/2000, el art. 20 del texto refundido de consumidores, el art. 20 de la Ley 7/1996, el RD 2032/2009 y el art. 3 de la Ley 37/1992; y GS1 Spain. Consultado el 26 de septiembre de 2026.
Cómo generar el schema de producto
Tres propiedades obligatorias en Product, dos en Offer y unas pocas reglas que deciden si la ficha llega a mostrarse. El generador comprueba cada una mientras escribes y construye el bloque visible con los mismos valores.
- Pon nombre al producto y añade imágenes. name e image son obligatorios. Mejor varias proporciones de la misma foto que una sola, y todas las URLs tienen que poder rastrearse.
- Rellena la oferta con el precio final. Un precio mayor que cero, con punto decimal, y la moneda en tres letras. Si vendes a consumidores, con IVA: el que enseña la ficha.
- Añade la disponibilidad y la fecha del precio. availability e itemCondition salen con el nombre corto (InStock, NewCondition), que Google admite. Mejor dejar priceValidUntil vacío que con una fecha de ayer.
- Apunta a tus políticas en vez de copiarlas. Marca envíos y devoluciones una vez en Organization y referéncialos aquí por @id, como recomienda Google.
- Pega las dos salidas. El JSON-LD va en la ficha de producto. El bloque visible lleva, con etiquetas en español, el precio, la disponibilidad y los códigos que declara el marcado: dale tu formato (12,90 €) sin cambiar las cifras.
Lo obligatorio: tres propiedades en Product y dos en Offer
Un generador de schema de producto convierte los datos de un artículo en JSON-LD de Product y Offer: los datos estructurados de producto que Google lee para mostrar el precio, la disponibilidad y los identificadores de lo que vendes. Google distingue las fichas de comerciante, para páginas donde se puede comprar, de los fragmentos de producto, para páginas que hablan de un producto sin venderlo. Este generador escribe las primeras, y lo obligatorio es poco:
| Nivel | Obligatorio | Qué pasa si falta |
|---|---|---|
| Product | name, image, offers | No hay ficha de comerciante. offers tiene que ser una Offer: AggregateOffer solo vale para los fragmentos de producto, porque la ficha exige que el vendedor seas tú. |
| Offer | price (o priceSpecification.price) y priceCurrency | Nada que listar. priceCurrency es obligatorio en cuanto hay price, y el precio tiene que ser mayor que cero. |
Lo demás —brand, sku, gtin, description, availability, itemCondition, priceValidUntil, aggregateRating— es recomendado, que no decorativo: el identificador es lo que relaciona tu página con el mismo producto en otra web. Pero un generador que no escribe nada hasta que rellenas catorce casillas impone su formulario, no las reglas de Google.
El precio: con IVA, con punto y sin el símbolo del euro
En una tienda española, el número que va en price lo decide la ley de consumo antes que schema.org:
- Con IVA, si vendes a consumidores. El Real Decreto 3423/2000 define el precio de venta como el precio final «incluidos el Impuesto sobre el Valor Añadido (IVA) y todos los demás impuestos», y el artículo 20 del texto refundido de consumidores exige en la oferta «el precio final completo, incluidos los impuestos». Merchant Center pide que ese mismo precio con IVA se vea en la página de destino y al pagar. Como el marcado describe la página,
pricelleva el IVA. - Con punto, aunque en la página escribas coma. El Real Decreto 2032/2009 prefiere la coma decimal «siempre que la tecnología y las aplicaciones donde se utilicen lo permitan», y los datos estructurados no lo permiten: schema.org pide punto decimal, ningún separador de miles y la moneda en
priceCurrency. En la ficha,12,90 €; en el marcado,12.90yEUR. Este generador marca como error12,90y1.299,00. - Cero no es un precio. A diferencia de los fragmentos de producto, las fichas de comerciante exigen un precio mayor que cero: un «consultar precio» guardado como 0 deja la oferta fuera.
- Una fecha caducada es peor que ninguna. Según Google, es posible que tu ficha no se muestre si
priceValidUntilindica una fecha pasada. El formulario la compara con hoy y la trata como error.
Un caso muy nuestro: Canarias, Ceuta y Melilla están fuera del territorio de aplicación del IVA (artículo 3 de la Ley 37/1992). Este formulario escribe un solo precio, el que enseña la ficha; si el importe cambia para esos envíos, explícalo en la página.
Rebajas y precio por litro: lo que la ley española añade
Para un precio rebajado, Google pide dejar el precio activo en price y añadir el original como UnitPriceSpecification con priceType: StrikethroughPrice, sin poner priceType en el precio activo. En España hay una regla previa sobre qué número puede ir tachado: desde el 28 de mayo de 2022, el artículo 20 de la Ley 7/1996 —en la redacción del Real Decreto-ley 24/2021, que traspuso la Directiva (UE) 2019/2161, la llamada Ómnibus— obliga a mostrar el precio anterior junto al reducido y lo define como «el menor que hubiese sido aplicado sobre productos idénticos en los treinta días precedentes». Ese es tu precio tachado y, como el marcado tiene que coincidir con la página, tu StrikethroughPrice.
El Real Decreto 3423/2000 exige además, en los productos que deben llevar indicada su cantidad, el precio por kilo, litro o metro, con IVA y en el mismo campo visual que el de venta. Google enseña a marcarlo con UnitPriceSpecification y referenceQuantity, y dice que es «especialmente importante en la UE». Este formulario escribe un único price: el tachado y el precio por litro se añaden a mano siguiendo el ejemplo de Google. Y si la oferta tiene fecha de fin, Google recomienda hora y zona horaria (2025-12-31T23:59:59+01:00 en su ejemplo); este campo solo acepta la fecha.
Envíos y devoluciones: opcionales en el marcado, no en Merchant Center
En la documentación de Google, shippingDetails y hasMerchantReturnPolicy son propiedades recomendadas de Offer, no obligatorias, y Google prefiere que no vivan en la oferta: «Te recomendamos que, en su lugar, proporciones una política de envío global para tu empresa con el marcado de Organization». Dice lo mismo de las devoluciones. Lo correcto es marcar cada política una vez en Organization y citarla desde cada oferta solo por su @id, que es lo que escriben los dos campos de este formulario.
Donde los gastos de envío sí son obligatorios es en Merchant Center: para las fichas gratuitas, España está en la lista de países en los que hay que configurar las opciones de envío o enviar el atributo shipping. Y Google aconseja las dos vías a la vez: datos estructurados en la página y un feed de Merchant Center.
EAN, GTIN y el prefijo 84
En España se suele pedir «el EAN»; GS1 Spain precisa que el GTIN-13 es el número y el EAN-13, el código de barras que lo representa. En schema.org va en gtin13 o en la genérica gtin, siempre en cifras: Google no admite la forma de URL y recomienda la propiedad más específica. Este formulario escribe gtin, que Google acepta; cámbiala a gtin13 si quieres afinar.
Los códigos de GS1 Spain empiezan por 84 (su rango va del 840 al 849), pero GS1 advierte de que el prefijo no indica el país de origen: dice dónde se dio de alta el código, no dónde se fabricó el producto. El EAN del ejemplo usa 952, el prefijo que GS1 reserva para ejemplos, así que no coincide con ningún producto real.
Las estrellas tienen que ser de tus compradores: copiar la media de un marketplace es lo que prohíben las directrices («No agregues reseñas ni valoraciones de otros sitios web»), y el artículo 20.4 del texto refundido de consumidores exige explicar cómo tratas las reseñas y, desde el 28 de diciembre de 2025, que se refieran a compras o usos de los 30 días anteriores. Las reglas del marcado de reseñas, y lo que exige esa ley, están en el generador de schema de reseñas.
Preguntas frecuentes
¿Qué es un generador de schema de producto?
Un generador de schema de producto convierte los datos de un artículo en JSON-LD de Product y Offer: los datos estructurados de producto que Google lee para mostrar el precio, la disponibilidad y los identificadores de lo que vendes. Este comprueba las reglas de las fichas de comerciante mientras escribes y genera, con los mismos valores, el bloque visible de la ficha.
¿Qué datos estructurados son obligatorios en una ficha de producto?
En Product: name, image y offers. En la Offer: price y priceCurrency, y para las fichas de comerciante el precio tiene que ser mayor que cero. offers debe ser una Offer y no una AggregateOffer, porque la ficha de comerciante da por hecho que el vendedor eres tú.
¿El precio del marcado va con IVA o sin IVA?
Con IVA, si vendes a consumidores en España. El Real Decreto 3423/2000 define el precio de venta como el precio final con el IVA y los demás impuestos incluidos, y Merchant Center exige que ese mismo precio se vea en la página de destino y al pagar. Como el marcado describe lo que muestra la página, price lleva el IVA.
¿Cómo escribo el precio en el schema: 12,90 o 12.90?
12.90, con punto, y la moneda aparte en priceCurrency: EUR. schema.org pide punto decimal y ningún separador de miles, y el símbolo € no va dentro del valor. En la página puedes escribir 12,90 €: la norma española de unidades prefiere la coma siempre que la tecnología lo permita, y los datos estructurados no lo permiten.
¿Cómo marco un precio rebajado o tachado?
Deja el precio actual en price y añade el original como UnitPriceSpecification con priceType StrikethroughPrice, sin priceType en el precio activo. En España, el precio anterior que tachas tiene que ser el más bajo que aplicaste al mismo producto en los 30 días anteriores, según el artículo 20 de la Ley 7/1996, y el marcado lleva ese mismo número.
¿Son obligatorios shippingDetails y hasMerchantReturnPolicy?
En el marcado, no: son propiedades recomendadas de Offer, y Google prefiere una política global de envíos y devoluciones en Organization, citada desde cada oferta con @id. En Merchant Center es distinto: para las fichas gratuitas, España está entre los países en los que hay que configurar los gastos de envío.
¿Puedo poner en mi web las estrellas que tengo en Amazon u otro marketplace?
No. Las directrices de Google dicen que no agregues reseñas ni valoraciones de otros sitios web: la media de un marketplace pertenece a esa ficha. Sí puedes marcar las valoraciones que tus propios compradores dejaron en tu tienda, siempre que no sean falsas ni incentivadas sin avisarlo.
Miles de fichas de producto. ¿Cuáles tiene Google de verdad?
Revisar tu propio dominio es gratis: cada página con su estado HTTP en vivo y si Google la tiene indexada, impresiones y posiciones frente al periodo anterior, y el tráfico por fuente con los motores de IA contados aparte. Un comando, desde tu agente.
$ npm i -g @clize/clize && clize install $ clize seo check --domain tutienda.es[ Agent SEO de Clize → ]