Normalizar datos de producto
El mismo artículo llega de tres proveedores como 'iPhone 13 128GB Blk', 'Apple iPhone-13 128 GB Negro' e 'IPHONE13 NEGRO 128G', y su catálogo termina con tres fichas para un solo producto. Este endpoint lee nombres inconsistentes de proveedor y devuelve un único nombre canónico y limpio, para que la deduplicación, la búsqueda y la comparación de precios trabajen sobre una sola identidad y no sobre tres coincidencias parecidas.
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.
Por qué los nombres de proveedor nunca coinciden
Cada proveedor escribe los nombres de producto para su propio sistema interno, no para su vitrina: abreviaturas, mayúsculas inconsistentes, números de modelo pegados al código de color y unidades escritas de tres formas distintas se acumulan con los años. Multiplica eso por una docena de proveedores alimentando un solo catálogo y obtiene un problema que las hojas de cálculo resuelven mal, exactamente el vacío que cierra la normalización de nombres de producto.
Cómo funcionan la solicitud y la respuesta
Envía mediante POST un arreglo de cadenas de nombre de producto crudas a /text/product-normalize, opcionalmente con pistas de marca o categoría si el nombre solo es ambiguo. La tarea corre de forma asíncrona: el task_id llega de inmediato, y el nombre normalizado de cada entrada aparece en su webhook firmado o en un enlace firmado válido por 24 horas, formateado de manera consistente —mayúsculas correctas, notación estándar de unidades, marca y modelo separados con claridad— para que 'iPhone13 BLK 128G' y 'Apple iPhone-13 128 GB Negro' se resuelvan en la misma cadena canónica.
La lógica detrás de limpiar un nombre
Extrae la entidad subyacente —marca, modelo, especificaciones clave como almacenamiento o color— en vez de solo reformatear mayúsculas, y por eso puede reconocer que '128G' y '128GB' describen el mismo almacenamiento y que 'Blk' es una abreviatura de 'Negro' incluso sin una tabla de mapeo explícita que usted tenga que mantener. Es el mismo análisis mental que hace instintivamente un encargado de catálogo al ver un archivo importado desordenado y reconocer de inmediato qué filas describen el mismo producto físico.
Dónde ahorra más tiempo
Los proyectos de deduplicación de catálogo son la ganancia más clara: normaliza primero cada nombre crudo, y luego agrupa por la salida canónica para colapsar fichas duplicadas que una revisión manual tardaría días en detectar. También rinde frutos más arriba en el flujo, en la ingesta de feeds: normaliza los nombres de proveedor al entrar, antes de que toquen su base de datos de productos, para que los duplicados nunca se acumulen en primer lugar en vez de necesitar sprints periódicos de limpieza.
Lo que sigue siendo una decisión humana
La normalización limpia la cadena de texto; no decide que dos SKU visualmente distintos son en secreto el mismo producto (una variante de 128GB y otra de 256GB, por ejemplo, se normalizan correctamente como dos nombres canónicos distintos, no se fusionan), y ese es un límite deliberado, porque fusionar SKU genuinamente diferentes corrompería el conteo de inventario. Trátelo como el primer paso, y el más grande, de un trabajo de limpieza, dejando una revisión manual más pequeña para las entradas realmente ambiguas.
Qué puede hacer con ella
Deduplicación de catálogo con múltiples proveedores
Normalice los nombres de producto de cada feed de proveedor y agrupe por la salida canónica para colapsar fichas duplicadas automáticamente.
Herramientas de comparación de precios
Empareje el mismo producto entre distintos comercios comparando nombres normalizados en vez de mantener una tabla manual frágil.
Limpieza de publicaciones en marketplace
Estandarice miles de títulos de producto enviados por vendedores a un estilo consistente antes de que salgan en vivo.
Mejoras en la relevancia de búsqueda
Alimente nombres normalizados a su índice de búsqueda para que consultas como 'iphone 13 negro' encuentren fichas sin importar cómo escribió el título el proveedor original.
Preguntas frecuentes
¿Qué cambia exactamente esta api normalizar nombres de producto?
Limpia las mayúsculas, estandariza unidades y abreviaturas, y separa marca, modelo y especificaciones clave en un nombre canónico consistente para cada producto.
¿Puede distinguir variantes distintas, como 128GB frente a 256GB?
Sí, normaliza correctamente el nombre de cada variante sin fusionar SKU genuinamente diferentes en uno solo, porque esa distinción debe mantenerse exacta para el inventario.
¿Hay una prueba gratuita?
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ánto cuesta normalizar un lote grande de nombres?
$0.003 por solicitud más $0.0135 por ítem, así que normalizar miles de nombres tiene un costo fijo que puede calcular antes de enviar el lote.
¿Cómo obtengo los nombres normalizados?
La tarea corre de forma asíncrona: recibe un task_id de inmediato, y los resultados llegan por su webhook firmado o mediante un enlace firmado válido por 24 horas.
¿Esto reemplaza por completo la lógica de deduplicación?
Hace el trabajo pesado de limpiar los nombres para que pueda agrupar por la salida canónica, pero el paso final de deduplicación (emparejar según esa salida) sigue corriendo en su propio flujo.
¿Puedo enviar pistas como marca o categoría para mejorar el resultado?
Sí, las pistas opcionales ayudan a desambiguar nombres crudos cortos o poco claros, y se recomiendan cuando los nombres del proveedor son especialmente breves.
¿Puedo normalizar miles de nombres de producto en una sola solicitud?
Sí, los arreglos grandes son el caso de uso esperado, con el precio escalando por ítem y sin un límite arbitrario de tamaño 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-normalize \
-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-normalize", {
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-normalize",
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-normalize", 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-normalize", 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_normalize",
"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. |