Generar JSON-LD
Los datos estructurados son la parte de una página que los buscadores leen pero los visitantes nunca ven, y basta con una sola propiedad anidada mal puesta para que un resultado enriquecido quede descalificado en silencio. Este endpoint analiza una página o un conjunto de datos que le proporcione y genera JSON-LD válido para el tipo de schema correcto, para que el marcado funcione desde el primer intento.
Ejecútela online
Ejecute esto en nuestros servidores con su cuenta. Las herramientas gratuitas corren en su navegador; esta cobra de su saldo del KIT según el precio de arriba.
El problema del schema escrito a mano
Los vocabularios de datos estructurados definen decenas de tipos: Product, Article, Recipe, Event, LocalBusiness, FAQPage y muchos más, cada uno con sus propias propiedades obligatorias y recomendadas, y con reglas propias sobre qué tipos pueden anidarse dentro de otros. Escribir esto a mano implica consultar la documentación constantemente, y una sola propiedad mal ubicada o un tipo de dato incorrecto puede hacer que el marcado falle la validación sin romper visualmente la página, que es justo por qué pasa desapercibido durante meses.
Qué ocurre cuando envía una página
La tarea examina el contenido propio de la página (títulos, precios, fechas, disponibilidad, autores, calificaciones, lo que corresponda según el tipo detectado) y lo mapea al schema correcto, llenando los campos obligatorios y agregando los recomendados cuando los datos de origen lo permiten. También puede indicarle varios tipos sobre una misma página, como un Article combinado con un BreadcrumbList, y produce un solo bloque JSON-LD coherente en vez de dos scripts que compitan entre sí.
Una breve nota sobre el formato
JSON-LD se convirtió en la sintaxis recomendada para datos estructurados precisamente porque vive en su propia etiqueta script, separada del HTML visible, lo que permite generarlo y reemplazarlo de forma independiente de las plantillas de página. Esa separación es lo que hace práctico un enfoque basado en api: el marcado puede regenerarse cada vez que cambia el contenido subyacente, sin que nadie toque el HTML de la página a mano.
Generación en lote para un catálogo completo
Como el precio se cobra por página, esto escala de forma natural desde una sola landing page hasta un catálogo con miles de productos: envía la lista de URLs o los datos estructurados equivalentes, y cada una recibe su propio bloque JSON-LD validado, listo para insertarse en su propio espacio de plantilla.
Entrega y confiabilidad
La tarea corre de forma asíncrona: la envía y recibe un task_id de inmediato, con los resultados entregados por webhook o por un enlace firmado válido durante 24 horas cuando la generación concluye. Una página que no logra generar marcado válido tras tres intentos devuelve un error específico en vez de un cobro.
Qué puede hacer con ella
Páginas de producto en comercio electrónico
Generar schema Product con precio, disponibilidad y calificación para todo un catálogo sin escribir plantillas JSON-LD a mano para cada tipo de producto.
Editores de recetas y contenido
Producir schema Recipe o Article automáticamente cuando se publican nuevas entradas, para que los resultados enriquecidos sigan siendo elegibles sin un paso manual de marcado en el flujo de publicación.
Fichas de negocio local
Crear marcado LocalBusiness con dirección, horarios y coordenadas correctas para cada página de sucursal de un negocio con varias ubicaciones.
Páginas de preguntas frecuentes y guías
Convertir las preguntas y respuestas de una página de FAQ existente en JSON-LD válido de tipo FAQPage listo para incrustar, sin reestructurar la página.
Preguntas frecuentes
¿Qué tipos de schema soporta esta api generar schema markup?
Tipos comunes como Product, Article, Recipe, Event, LocalBusiness, FAQPage y BreadcrumbList, detectando el tipo correcto a partir de la página o los datos que envíe.
¿Valida la salida contra el schema oficial?
Sí, cada bloque generado se verifica contra el vocabulario de schema.org antes de devolverse, así que recibe JSON-LD estructuralmente válido.
¿Puedo generar schema para páginas que todavía no existen?
Sí, puede enviar datos crudos (título, precio, fecha, etcétera) en lugar de una URL en vivo y recibir el JSON-LD correspondiente.
¿Hay una prueba gratis disponible?
No hay capa gratuita: las capas gratis se abusan y ralentizan a todos. El acceso funciona con un saldo prepago de ForHosting KIT: se recarga desde $10.00 (no caduca) y cada solicitud se cobra a su precio publicado, así que una llamada sin saldo devuelve HTTP 402. Sin suscripción, sin tokens ni créditos inventados, y una tarea fallida no se cobra.
¿Cómo se calcula el precio para procesamiento masivo?
Una base de $0.003 por solicitud más $0.0135 por cada página procesada, así que un catálogo de 100 páginas cuesta $0.003 más $1.30.
¿Cómo recibo el JSON-LD generado?
Mediante un webhook firmado cuando la generación termina, o un enlace firmado válido por 24 horas.
¿Qué pasa si el contenido de una página no coincide con ningún tipo de schema conocido?
La tarea devuelve un error claro señalando la ambigüedad en vez de adivinar, y no se le cobra por esa página.
¿Varios tipos de schema en una misma página entran en conflicto?
No, cuando una página necesita más de un tipo la tarea los combina en un solo bloque JSON-LD coherente en lugar de producir scripts separados.
Para desarrolladores — acceso por API
Todo lo de esta página está disponible por programación. Esta sección es para equipos que quieren integrarlo en sus sistemas; el resto puede usar la herramienta de arriba sin más.
Endpoint de API
¿Prefiere automatizarlo? Un POST autenticado crea la tarea; el resultado llega por webhook o enlace firmado. La misma capacidad también se ejecuta aquí en la web, y pronto desde nuestra app, el email y Telegram.
Llámela desde su stack
curl -X POST https://api.kit.forhosting.com/seo/schema-generate \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"input":"…"}'const res = await fetch("https://api.kit.forhosting.com/seo/schema-generate", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"input": "…"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/seo/schema-generate",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"input": "…"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/seo/schema-generate", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"input":"…"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"input":"…"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/seo/schema-generate", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Ejemplo de solicitud
{
"input": "…"
}Ejemplo de respuesta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "seo.schema_generate",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}La API es asíncrona: la llamada devuelve un task_id al instante y el resultado llega por webhook. El polling está limitado a 1 req/s por tarea.
Precio
Precio publicado — sin tokens ni créditos inventados. Una tarea fallida no se cobra.
Errores
| HTTP | Código | Significado |
|---|---|---|
401 | unauthorized | API key ausente o inválida. |
402 | insufficient_balance | El saldo no cubre el precio de la tarea. |
404 | unknown_type | El tipo de tarea no existe. |
429 | rate_limited | Demasiadas peticiones. Use el webhook en vez de sondear. |
413 | input_too_large | El archivo supera el límite de tamaño. |
422 | task_failed | La tarea falló tras 3 reintentos. No se cobra. |