Atributos de producto
Una descripción de proveedor como 'Camiseta algodón orgánico, talla M, azul marino' contiene cuatro atributos filtrables escondidos en una frase, y la barra de filtros de su tienda los necesita como campos separados, no como prosa. Este endpoint lee texto libre de producto y extrae color, talla, material, marca y otros atributos estructurados para que la búsqueda por facetas funcione sin que una persona retipee cada ficha.
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.
La brecha entre la prosa y los filtros
Las descripciones de producto se escriben para vender, no para llenar una base de datos: un redactor escribe 'una camiseta suave de algodón en azul marino, talla real' cuando su barra de filtros necesita color: azul marino, material: algodón, ajuste: talla real como tres campos separados. Ese paso de traducción, hecho a mano en un catálogo de tamaño real, es la razón principal por la que la búsqueda por facetas en tiendas pequeñas se siente rota: la mitad del inventario tiene campos de atributo vacíos porque nadie tuvo tiempo de llenarlos.
Qué espera el endpoint y qué devuelve
Envía mediante POST un arreglo de textos de producto —título más descripción, o solo un campo si es lo único que tiene— a /text/product-attributes, indicando opcionalmente qué atributos le interesan (color, talla, material, marca, estampado). La tarea corre de forma asíncrona: el task_id llega de inmediato, y el conjunto de atributos por producto aparece en su webhook firmado o en un enlace firmado válido por 24 horas, con cada valor normalizado a una forma consistente.
El razonamiento detrás de la extracción
Lee el texto completo en vez de buscar palabras sueltas, algo que importa porque los atributos se esconden en lugares incómodos: 'disponible en el clásico acabado roble' nombra un color sin que la palabra 'color' aparezca cerca, y una marca puede aparecer a mitad de frase en vez de en un campo etiquetado. La extracción reproduce cómo un editor de catálogo cuidadoso lee una descripción de principio a fin antes de decidir qué va en cada columna, solo que a la velocidad que exige una importación de feed.
Dónde encaja en un catálogo automatizado
Al cobrarse por ítem y entregarse de forma asíncrona, encaja de forma natural en un paso de enriquecimiento de PIM o en una importación masiva: toma el texto crudo del proveedor, extrae atributos estructurados en una llamada por lote y escribe los resultados directo en el esquema del producto sin control de calidad fila por fila. Los marketplaces que incorporan vendedores externos dependen especialmente de esto, porque las descripciones varían muchísimo en cuánta estructura contienen.
Lo que no va a inventar
Si un atributo genuinamente no se menciona en el texto —ningún material aparece en toda la descripción— el campo vuelve vacío en vez de una adivinanza fabricada, porque un 'material: algodón' falso en un producto que en realidad es poliéster genera una devolución, no una venta. Esa moderación es deliberada: la extracción solo saca a la luz lo que efectivamente está escrito, dejando los vacíos reales para que su equipo los complete con una ficha técnica o consultando al proveedor.
Qué puede hacer con ella
Enriquecimiento de búsqueda por facetas
Completa los campos de color, talla y material en un catálogo antiguo para que la barra de filtros realmente reduzca resultados y no quede mayormente vacía.
Publicaciones de vendedores en marketplace
Extrae atributos estructurados de las descripciones en texto libre que envían los vendedores externos antes de que sus publicaciones salgan en vivo.
Normalización de feeds de proveedores
Saca valores de atributo consistentes de textos de proveedor inconsistentes para que el mismo color no quede guardado como tres cadenas distintas.
Motores de comparación y recomendación
Alimenta atributos estructurados a un algoritmo de 'productos similares' que necesita campos reales, no párrafos, para comparar artículos.
Preguntas frecuentes
¿Qué atributos puede extraer esta api extraer atributos de producto?
Los más comunes son color, talla, material y marca, y puede indicar atributos adicionales como estampado o ajuste en la solicitud si su catálogo los necesita.
¿Funciona si la descripción es corta o informal?
Sí, lee cualquier texto libre que envíe, desde un párrafo completo hasta una sola línea de título, y devuelve solo los atributos que realmente puede encontrar.
¿Hay un plan gratuito?
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.
¿Cuál es el precio de extraer atributos en volumen?
$0.003 por solicitud más $0.0135 por ítem, así que un catálogo de cualquier tamaño tiene un costo fijo y predecible que puede calcular de antemano.
¿Cómo se devuelven los resultados?
La tarea es asíncrona: recibe un task_id de inmediato y los atributos extraídos llegan por su webhook firmado o mediante un enlace firmado válido por 24 horas.
¿Qué pasa si un atributo no se menciona en el texto?
El campo queda vacío en vez de adivinarse, así sabe exactamente qué productos todavía necesitan una revisión manual en lugar de confiar en un valor inventado.
¿Normaliza valores como los nombres de color?
Sí, expresiones equivalentes como 'navy' y 'azul marino' se resuelven a un valor consistente para que sus filtros no se fragmenten en opciones casi duplicadas.
¿Puedo extraer atributos para todo un catálogo de una vez?
Sí, enviar un arreglo completo de productos en una solicitud masiva es el patrón normal, con el precio escalando por ítem y sin un límite arbitrario de lote.
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/text/product-attributes \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"items":["valor-1","valor-2"]}'const res = await fetch("https://api.kit.forhosting.com/text/product-attributes", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"items": [
"valor-1",
"valor-2"
]
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/text/product-attributes",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"items": [
"valor-1",
"valor-2"
]
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/text/product-attributes", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"items":["valor-1","valor-2"]}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"items":["valor-1","valor-2"]}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/text/product-attributes", 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
{
"items": [
"valor-1",
"valor-2"
]
}Ejemplo de respuesta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "text.product_attributes",
"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.
Límites
max_tokens | 20000 |
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. |
422 | task_failed | La tarea falló tras 3 reintentos. No se cobra. |