La API de Text Suggestions aprovecha las herramientas de IA generativa de la API de Product Studio para generar y optimizar los títulos y las descripciones de los productos. Puedes usarlo para mejorar la participación y las conversiones de los clientes, y optimizar el proceso de administración y actualización de la información de los productos. Las funciones de la API de Product Studio pueden ayudarte a optimizar el rendimiento de tu comercio minorista.
¿Qué puedes generar con la API?
La API de Text Suggestions te ayuda a hacer lo siguiente:
- Sugerencias de títulos y descripciones de productos basadas en la imagen o los atributos del producto
- Títulos optimizados para SEO de tus productos
- Títulos con formato personalizado para tus productos
- Descripciones de productos de tu feed de productos
También puedes especificar el tono de voz de las descripciones y mantener la coherencia en todas tus fichas de productos.
Guía de inicio rápido
El método GenerateProductTextSuggestions
puede generar o optimizar títulos y descripciones de productos a partir de la información de tus productos.
La API acepta lo siguiente:
- Atributos del producto (diccionario JSON): Es un objeto JSON que contiene atributos del producto (como
{"title": "White Tee", "brand": "MyBrand", "size": "XL"}
). - Imagen del producto: Es un URI que apunta a la imagen del producto (por ejemplo,
{"uri": "https://my-store.com/img/1.png"}
). - Opciones de formato del título: Son parámetros para personalizar la generación de títulos, incluidos los siguientes:
attribute_separator
: Especifica el separador entre atributos.target_language
: Establece el idioma de salida.attribute_order
: Define el orden de los atributos en el título generado.
- Ejemplos de etiquetado de datos: Consulta un ejemplo de cómo generar un título a partir de una descripción.
- ID del flujo de trabajo (
output_spec.workflow_id
): El campoworkflow_id
dentro del objetooutput_spec
determina el tipo de generación de texto:title
: Genera o optimiza el título del producto.description
: Genera o optimiza la descripción del producto.tide
: Genera u optimiza el título y la descripción del producto.
Ejemplos
A continuación, se muestran ejemplos del uso de la API para generar o optimizar un título o una descripción, o ambos, a partir de diferentes entradas de datos de productos. También presentamos los errores y problemas comunes y sus soluciones.
Generación de títulos optimizados
En el ejemplo, se muestra cómo generar un título óptimo.
Solicitud
El cuerpo de la solicitud contiene la información del producto que se usará para la optimización del título. A continuación, se muestra un ejemplo de la estructura de la solicitud:
POST https://merchantapi.googleapis.com/productstudio/v1alpha/accounts/{ACCOUNT_ID}:generateProductTextSuggestions
{
"product_info": {
"product_attributes": {
"title": "Nike Mens shoes",
"description": "Give strength to your step with the Nike Air Zoom Pegasus 38 shoe for Men with shoe size 12. Ensuring the fit is loved by the runners. This shoes comes in Blue color.",
"brand": "Nike"
}
},
"output_spec": {
"workflow_id": "title"
}
}
Respuesta
Puedes esperar una respuesta como la siguiente:
{
"title": {
"text": "Nike Mens shoes Air Zoom Pegasus 38 Running Shoes, Blue, Size 12"
},
"metadata": {
"metadata": {
"attributes": {
"color": "Blue",
"size": "12",
"product": "Running shoes",
"model": "Air Zoom Pegasus 38"
},
}
}
}
Genera un título a partir de una imagen
En el ejemplo, se muestra cómo proporcionar una imagen del producto y generar un título óptimo.
Solicitud
POST https://merchantapi.googleapis.com/productstudio/v1alpha/accounts/{ACCOUNT_ID}:generateProductTextSuggestions
{
"product_info": {
"product_image":{
"uri": "https://cdn.shopify.com/s/files/1/0653/5879/0892/products/1672082339438_550x825.jpg?v=1672082415"
}
},
"output_spec": {
"workflow_id": "title",
"attribute_separator": "-"
}
}
Respuesta
{
"title": {
"text": "Rustic Ceramic & Leather Leaves Necklace"
},
"metadata": {
"metadata": {
"attributes": {
"material": "Rustic Ceramic & Leather",
"pattern": "Leaves",
"product": "Necklace"
},
}
}
}
Genera un título a partir de una descripción
En el ejemplo, se muestra cómo proporcionar una descripción del producto y generar un título óptimo.
Solicitud
POST https://merchantapi.googleapis.com/productstudio/v1alpha/accounts/{ACCOUNT_ID}:generateProductTextSuggestions
{
"product_info": {
"product_attributes": {
"description": "selling size 12 nike dunks. oh they are red by the way!"
}
},
"output_spec": {
"workflow_id": "title",
}
}
Respuesta
{
"title": {
"text": "Nike Dunks Red Size 12"
},
"metadata": {
"metadata": {
"attributes": {
"brand": "Nike",
"color": "Red",
"size": "12",
"product": "Dunks"
},
}
}
}
Optimiza títulos a partir de un título y una descripción (junto con un ejemplo personalizado)
En este ejemplo, etiquetamos de forma explícita los atributos del producto que queremos que identifique la IA y el orden de los atributos en el resultado.
Solicitud
POST https://merchantapi.googleapis.com/productstudio/v1alpha/accounts/{ACCOUNT_ID}:generateProductTextSuggestions
{
"product_info": {
"product_attributes": {
"title": "Volumizing & Lengthening Mascara - Dark Brown",
"description": "This high-impact mascara delivers both voluptuous volume and dramatic length without clumping or smudging.",
"brand": "Luxe Beauty"
}
},
"output_spec": {
"workflow_id": "title"
}
"title_examples": [
{
"product_info": {
"title": "Lash Paradise Volumizing & Lengthening Mascara - Waterproof - Blackest Black",
"colour": "Black"
},
"title_format": "product",
"category": "mascara",
"final_product_info": {
"product": "Mascara",
"brand": "Lash Paradise",
"mascara_type": "Volumizing & Lengthening",
"colour": "Blackest Black",
"waterproof": "Waterproof",
}
},
{
"product_info": {
"title": "Hypnose Drama Instant Full Body Volume Mascara - Black",
"colour": "Black"
},
"title_format": "product",
"category": "mascara",
"final_product_info": {
"product": "Mascara",
"brand": "Hypnose",
"sub_brand": "Drama",
"mascara_type": "Full Body Volume",
"colour": "Black",
"eye_lash_type": "All lash types"
}
}
]
}
Respuesta
{
"title": {
"text": "Luxe Beauty Dark Brown Volumizing & Lengthening Mascara"
},
"metadata": {
"metadata": {
"attributes": {
"brand": "Luxe Beauty",
"colour": "Dark Brown",
"mascara_type": "Volumizing & Lengthening",
"product": "Mascara"
},
}
}
}
Genera una descripción a partir de un título
En el ejemplo, se muestra cómo proporcionar un título del producto y pedirle a la API que genere una descripción del producto correspondiente.
Solicitud
POST https://merchantapi.googleapis.com/productstudio/v1alpha/accounts/{ACCOUNT_ID}:generateProductTextSuggestions
{
"product_info": {
"product_attributes": {
"title": "Rustic Ceramic & Leather Leaves Necklace",
}
},
"output_spec": {
"workflow_id": "description"
}
}
Respuesta
{
"description": {
"text": "Rustic Ceramic & Leather Leaves Necklace is a beautiful necklace made from high-quality ceramic and leather. It features a unique design that is sure to turn heads.
"
},
}
Generar un título y una descripción a partir de los atributos del producto (como la marca y el color)
En este ejemplo, se muestra cómo proporcionar atributos del producto para generar un título y una descripción óptimos del producto.
Solicitud
POST https://merchantapi.googleapis.com/productstudio/v1alpha/accounts/{ACCOUNT_ID}:generateProductTextSuggestions
{
"product_info": {
"product_attributes": {
"brand": "Mr. Beast",
"color": "purple",
},
"product_image":{
"uri": "https://mrbeast.store/cdn/shop/files/0015dlv_0000_327.jpg?v=1702754475&width=500"
}
},
"output_spec": {
"workflow_id": "description"
}
}
Respuesta
{
"title": {
"text": "Pajamas - Mr. Beast | Purple"
},
"description": {
"text": "Slip into the ultimate comfort and style with these Mr. Beast pajamas in a vibrant shade of purple. Crafted from the softest materials, these pajamas will envelop you in a cozy embrace, ensuring a restful night's sleep. The shorts feature a relaxed fit, allowing for easy movement, while the top boasts a classic design with a comfortable neckline. Whether you're lounging at home or drifting off to dreamland, these Mr. Beast pajamas are the perfect choice for a peaceful and stylish slumber."
},
}
Compatibilidad con idiomas de destino
Este campo especifica el idioma del texto de la descripción que se genera en la respuesta de la API. Puedes agregar target_language
como parte de los parámetros de output_spec
:
{
"output_spec": {
"target_language": "language"
}
}
Valores de ejemplo:
"korean" (Korean)
"english" (English)
"spanish" (Spanish)
"french" (French)
Ejemplo de solicitud
POST https://merchantapi.googleapis.com/productstudio/v1alpha/accounts/{ACCOUNT_ID}:generateProductTextSuggestions
{
"product_info": {
"product_attributes": {
"title": "Granos de café negro",
"description": "Los granos de café negro en California",
"brand": "Parfums de Paris",
"scent": "Floral",
},
"product_image":{
"uri": "https://mrbeast.store/cdn/shop/files/0015dlv_0000_327.jpg?v=1702754475&width=500"
}
},
"output_spec": {
"workflow_id": "description",
"target_language": "japanese",
"attribute_order": ["scent", "product"],
"tone": "playful",
}
}
Respuesta
{
"description": {
"text": "カリフォルニアの黒いコーヒー豆は、あなたの鼻をくすぐる、甘く、フローラルな香りです。この香りは、コーヒー豆の豊かな香りと、ジャスミンとバラの繊細な花の香りをブレンドしたものです。カリフォルニアの黒いコーヒー豆は、あなたの家を居心地の良いカフェに変え、あなたをリラックスした気分にさせてくれるでしょう。この香りは、コーヒー好きにも、フローラルな香り好きにも最適です。カリフォルニアの黒いコーヒー豆で、あなたの家を幸せな香りで満たしましょう!."
},
}
Personalización del tono de voz para la generación de descripciones
Para ayudarte a establecer tu marca y diferenciar tu tienda en línea de otras, puedes personalizar el tono de voz de las descripciones generadas. La API de Text ofrece dos opciones:
- Selección de tono predefinido: Puedes seleccionar un tono de una lista para generar descripciones nuevas. La lista incluye los siguientes estilos de tono:
- Predeterminado: Simple, claro y elegante.
- Juguetón: Alegre, con lenguaje positivo, humor (chistes, juegos de palabras) y exageración (sin ironía, sarcasmo ni emojis)
- Formal: Inglés estándar, gramática correcta, oraciones completas, sin jerga ni contracciones.
- Persuasivo: Lógico, conciso y basado en argumentos para convencer al lector
- Coloquial: Lenguaje amigable, fácil de entender y cotidiano.
- Tono específico de la marca: Puedes proporcionar descripciones existentes o cualquier otro recurso de texto con el tono de voz de tu marca. El modelo de IA generativa analizará el tono del texto y generará un "descriptor de estilo de escritura" según los siguientes aspectos:
- Nivel de formalidad (por ejemplo, formal, informal)
- Verbosidad (por ejemplo, concisa, muy verbosa)
- Tono (por ejemplo, profesional, informativo, positivo, persuasivo)
- Estructura de las oraciones (por ejemplo, "oración simple con pocas conjunciones")
- Palabras y frases más frecuentes
Bibliotecas cliente
Te recomendamos que uses bibliotecas cliente para enviar tus solicitudes. Compartiremos contigo las bibliotecas cliente que puedes instalar en tu proyecto de Maven.
Muestras de código
Elige tu método de autenticación y configura estas muestras de código siguiendo estas instrucciones. Aquí tienes una muestra que puedes usar para generar sugerencias de texto.
Java
import com.google.api.gax.core.FixedCredentialsProvider;
import com.google.auth.oauth2.GoogleCredentials;
import com.google.shopping.merchant.productstudio.v1alpha.GenerateProductTextSuggestionsRequest;
import com.google.shopping.merchant.productstudio.v1alpha.GenerateProductTextSuggestionsResponse;
import com.google.shopping.merchant.productstudio.v1alpha.OutputSpec;
import com.google.shopping.merchant.productstudio.v1alpha.ProductInfo;
import com.google.shopping.merchant.productstudio.v1alpha.TextSuggestionsServiceClient;
import com.google.shopping.merchant.productstudio.v1alpha.TextSuggestionsServiceSettings;
import shopping.merchant.samples.utils.Authenticator;
import shopping.merchant.samples.utils.Config;
/** This class demonstrates how to generate product text suggestions. */
public class GenerateProductTextSuggestionsSample {
private static String getName(String accountId) {
return String.format("accounts/%s", accountId);
}
public static void generateProductTextSuggestions(Config config) throws Exception {
// Obtains OAuth token based on the user's configuration.
GoogleCredentials credential = new Authenticator().authenticate();
TextSuggestionsServiceSettings textSuggestionsServiceSettings =
TextSuggestionsServiceSettings.newBuilder()
.setCredentialsProvider(FixedCredentialsProvider.create(credential))
.build();
String name = getName(config.getAccountId().toString());
// Calls the API and catches and prints any network failures/errors.
try (TextSuggestionsServiceClient textSuggestionsServiceClient =
TextSuggestionsServiceClient.create(textSuggestionsServiceSettings)) {
ProductInfo productInfo =
ProductInfo.newBuilder()
.putProductAttributes("title", "Mens shirt")
.putProductAttributes("description", "A blue shirt for men in size S")
.build();
OutputSpec outputSpec = OutputSpec.newBuilder().setWorkflowId("title").build();
GenerateProductTextSuggestionsRequest request =
GenerateProductTextSuggestionsRequest.newBuilder()
.setName(name)
.setProductInfo(productInfo)
.setOutputSpec(outputSpec)
.build();
System.out.println("Sending GenerateProductTextSuggestions request: " + name);
GenerateProductTextSuggestionsResponse response =
textSuggestionsServiceClient.generateProductTextSuggestions(request);
System.out.println("Generated product text suggestions response below:");
System.out.println(response);
} catch (Exception e) {
System.out.println("An error has occured: ");
System.out.println(e);
}
}
public static void main(String[] args) throws Exception {
Config config = Config.load();
generateProductTextSuggestions(config);
}
}
Errores y problemas habituales
A continuación, se indican algunos errores comunes y sus soluciones.
Se requiere información del producto para generar sugerencias de texto
Si recibes el siguiente mensaje de error
Error message:
"error": {
"code": 400,
"message": "[product_info] Product info is required to generate text suggestions.",
"status": "INVALID_ARGUMENT",
...
}
Agrega product_info
en el cuerpo de la solicitud y completa correctamente al menos uno de los campos product_attributes
o product_image
.
Por ejemplo, si publicas esto, se generará un error.
POST https://merchantapi.googleapis.com/productstudio/v1alpha/accounts/{ACCOUNT_ID}:generateProductTextSuggestions
{
"output_spec": {
"workflow_id": "title"
}
}
Se requiere al menos un campo de product_info para generar sugerencias de texto
Este error
{
"error": {
"code": 400,
"message": "[product_info.product_attributes] At least one field of product_info is required to generate text suggestions.",
"status": "INVALID_ARGUMENT",
...
}
es un indicador de que debes incluir al menos un campo product_info
en el cuerpo de la solicitud.
Por ejemplo, si publicas esto, se generará un error.
POST https://merchantapi.googleapis.com/productstudio/v1alpha/accounts/{ACCOUNT_ID}:generateProductTextSuggestions
{
"product_info": {
},
"output_spec": {
"workflow_id": "title"
}
}
En su lugar, usa algo como
"product_info": {
"product_attributes": {
"description": "Selling size 12 Nike dunks. Oh they are red by the way!"
}
}
o
"product_info": {
"product_image":{
"uri": "https://cdn.shopify.com/s/files/1/0653/5879/0892/products/1672082339438_550x825.jpg?v=1672082415"
}
}
(Algo) es obligatorio en cada title_example
Errores como los de los siguientes cuatro ejemplos
{
"error": {
"code": 400,
"message": "[title_examples.product_info] At least one field of product_info is required in each title_example.",
"status": "INVALID_ARGUMENT",
...
}
o
{
...
"message": "[title_examples.category] Category is required in each title_example.",
...
}
o
{
...
"message": "[title_examples.title_format] Title format is required in each title_example.",
...
}
o
{
...
"message": "[title_examples.final_product_info] At least one field of final_product_info is required in each title_example.",
...
}
indica que no completaste un subcampo obligatorio.
Por ejemplo, la siguiente solicitud generaría un error.
POST
https://merchantapi.googleapis.com/productstudio/v1alpha/accounts/{ACCOUNT_ID}:generateProductTextSuggestions
{
"product_info": {
"product_attributes": {
"description": "selling size 12 nike dunks. oh they are red by the way!"
}
},
"output_spec": {
"workflow_id": "title"
},
"title_examples": []
}
Para solucionar este problema, para cada title_example especificado en la solicitud, completa todos los siguientes subcampos:
product_info
category
title_format
final_product_info
Este es un ejemplo que funciona:
{
"product_info": {
"product_attributes": {
"title": "Volumizing & Lengthening Mascara - Dark Brown",
"description": "This high-impact mascara delivers both voluptuous volume and dramatic length without clumping or smudging.",
}
},
"output_spec": {
"workflow_id": "title"
},
"title_examples": [
{
"product_info": {
"title": "Lash Paradise Volumizing & Lengthening Mascara - Waterproof - Blackest Black",
"colour": "Black"
},
"title_format": "product",
"category": "mascara",
"final_product_info": {
"product": "Mascara",
"brand": "Lash Paradise",
"mascara_type": "Volumizing & Lengthening",
"colour": "Blackest Black",
"waterproof": "Waterproof",
}
}
]
}
workflow_id no admitido
Este tipo de error
{
"error": {
"code": 400,
"message": "[\u003ceye3 title='/ProductStudioTextGenerationService.GenerateProductText, INVALID_ARGUMENT'/\u003e APPLICATION_ERROR; ... ;Unsupported workflow_id: attributes. Supported workflows are: [\"title\", \"description\", \"tide\"];AppErrorCode=3;StartTimeMs=1740696804045;unknown;ResFormat=uncompressed;ServerTimeSec=0.005976589;LogBytes=256;Non-FailFast;EffSecLevel=none;ReqFormat=uncompressed;ReqID=4d1786f59faa3ea7;GlobalID=0;Server=[2002:a05:6e16:618:b0:2c2:7cfc:bebd]:14001] Invalid value",
"status": "INVALID_ARGUMENT",
...
}
sería el resultado de una solicitud como
POST https://merchantapi.googleapis.com/productstudio/v1alpha/accounts/{ACCOUNT_ID}:generateProductTextSuggestions
{
"product_info": {
"product_attributes": {
"title": "Volumizing & Lengthening Mascara - Dark Brown",
"description": "This high-impact mascara delivers both voluptuous volume and dramatic length without clumping or smudging.",
},
"output_spec": {
"workflow_id": "attributes"
}
}
La solicitud establece workflow_id
en "attributes", pero este campo solo admite uno de los siguientes valores:
- title: Genera o optimiza el título del producto.
- description: Genera o optimiza la descripción del producto.
- tide: Genera u optimiza el título y la descripción del producto.
Tono no compatible
Un error de "Tono no admitido", como el siguiente:
{
"error": {
"code": 400,
"message": "[\u003ceye3 title='/ProductStudioTextGenerationService.GenerateProductText, INVALID_ARGUMENT'/\u003e APPLICATION_ERROR; ... ; Unsupported tone: 'asdf'. Supported tones are: [\"default\", \"playful\", \"formal\", \"persuasive\", \"conversational\"];AppErrorCode=3;StartTimeMs=1740697325058;unknown;ResFormat=uncompressed;ServerTimeSec=7.45346E-4;LogBytes=256;Non-FailFast;EffSecLevel=none;ReqFormat=uncompressed;ReqID=f7d9bbbc73a1d342;GlobalID=0;Server=[2002:a05:6918:3486:b0:2bc:ccd4:79e6]:14001] Invalid value",
"status": "INVALID_ARGUMENT",
...
}
sería el resultado de una solicitud como
POST https://merchantapi.googleapis.com/productstudio/v1alpha/accounts/{ACCOUNT_ID}:generateProductTextSuggestions
{
"product_info": {
"product_attributes": {
"title": "Volumizing & Lengthening Mascara - Dark Brown",
"description": "This high-impact mascara delivers both voluptuous volume and dramatic length without clumping or smudging.",
},
"output_spec": {
"workflow_id": "description"
"tone": "cheerful"
}
}
Ten en cuenta que tone
se establece en "alegre", pero este campo solo admite uno de los siguientes valores:
- default: Simple, clara y elegante.
- Juguetón: Alegre, con lenguaje positivo, humor (chistes, juegos de palabras) y exageración (sin ironía, sarcasmo ni emojis).
- Formal: Inglés estándar, gramática correcta, oraciones completas, sin jerga ni contracciones.
- Persuasivo: Lógico, conciso y basado en argumentos para convencer al lector
- Conversacional: Lenguaje amigable, fácil de entender y cotidiano.