La automatización del resumen de reseñas con n8n convierte los comentarios dispersos sobre productos en resúmenes semanales estructurados sin escribir un backend personalizado. Los equipos de productos, los gerentes de marca y los vendedores de comercio electrónico necesitan un pulso continuo sobre lo que los clientes elogian y se quejan, pero leer manualmente cientos de reseñas no es práctico. Al conectar la API de búsqueda de Scavio a un flujo de trabajo n8n y enrutar los resultados a través de un nodo LLM, puede obtener reseñas de cualquier producto, generar un resumen conciso y enviarlo a Slack o enviarlo por correo electrónico según un cronograma. Este tutorial explica cómo crear ese flujo de trabajo desde cero.
Requisitos previos
- Cuenta n8n autohospedada o en la nube n8n
- Una clave API de Scavio de scavio.dev
- Una clave OpenAI o Anthropic API para el paso de resumen de LLM
- Familiaridad básica con el editor de flujo de trabajo n8n
Guia paso a paso
Paso 1: Crear el nodo Activador de programación
Agregue un nodo Programar desencadenador para activar el flujo de trabajo semanalmente (o con la frecuencia que prefiera). Configúrelo para que se ejecute todos los lunes a las 9 a.m. Este es el punto de entrada que inicia el proceso de búsqueda de revisión.
// n8n Schedule Trigger configuration
{
"rule": {
"interval": [
{ "field": "cronExpression", "expression": "0 9 * * 1" }
]
}
}Paso 2: Agregue un nodo de solicitud HTTP para obtener reseñas de Scavio
Agregue un nodo de solicitud HTTP que envíe a la API de búsqueda de Scavio la consulta del producto. Configure el método en POST, URL al punto final de Scavio y agregue el encabezado de su clave API. La respuesta contendrá datos de revisión bajo la clave revisiones o resultados_orgánicos.
// n8n HTTP Request node configuration
{
"method": "POST",
"url": "https://api.scavio.dev/api/v1/search",
"headers": {
"x-api-key": "={{ $env.SCAVIO_API_KEY }}",
"Content-Type": "application/json"
},
"body": {
"platform": "amazon",
"query": "B09G9FPHY6",
"marketplace": "US",
"action": "reviews"
}
}Paso 3: Agregue un nodo Código para extraer y formatear el texto de revisión
Agregue un nodo Código después de la solicitud HTTP. Este nodo extrae el texto del cuerpo de la revisión de la respuesta de API y los concatena en una sola cadena con números de revisión, listos para el resumen de LLM.
// n8n Code node (JavaScript)
const reviews = $input.first().json.reviews || [];
const formatted = reviews.map((r, i) => {
return 'Review ' + (i + 1) + ' (' + (r.rating || 'N/A') + ' stars): ' + (r.text || r.body || '');
}).join('\n\n');
return [{
json: {
reviewCount: reviews.length,
formattedReviews: formatted,
productName: $input.first().json.product?.title || 'Unknown Product'
}
}];Paso 4: Agregue un nodo LLM para resumir reseñas
Agregue un nodo OpenAI o AI Agent configurado para resumir las revisiones formateadas. El mensaje indica al LLM que extraiga los principales puntos de elogio, las principales quejas, el sentimiento general y un resumen ejecutivo de un párrafo. Sin estadísticas inventadas.
// Prompt for the LLM node
You are a product review analyst. Summarize the following customer reviews for {{ $json.productName }}.
Provide:
1. Top 3 praise points (what customers love)
2. Top 3 complaint points (what customers dislike)
3. Overall sentiment (positive / mixed / negative)
4. One-paragraph executive summary
Do not fabricate statistics. Base everything on the reviews provided.
Reviews ({{ $json.reviewCount }} total):
{{ $json.formattedReviews }}Paso 5: Agregar un nodo de entrega (Slack o correo electrónico)
Conecte un nodo de Slack o Enviar correo electrónico para entregar el resumen. Formatee el mensaje con el nombre del producto, el recuento de reseñas y el resumen generado por LLM. El flujo de trabajo ahora está completo: activa disparos semanales, busca revisiones, resume y entrega.
// Slack message template
*Weekly Review Summary: {{ $('Code').item.json.productName }}*
Reviews analyzed: {{ $('Code').item.json.reviewCount }}
{{ $json.text }}Ejemplo en Python
import os
import requests
API_KEY = os.environ.get('SCAVIO_API_KEY', 'your_scavio_api_key')
ENDPOINT = 'https://api.scavio.dev/api/v1/search'
def fetch_reviews(asin: str) -> list[dict]:
response = requests.post(
ENDPOINT,
headers={'x-api-key': API_KEY},
json={'platform': 'amazon', 'query': asin, 'marketplace': 'US', 'action': 'reviews'}
)
response.raise_for_status()
return response.json().get('reviews', [])
def format_reviews(reviews: list[dict]) -> str:
lines = []
for i, r in enumerate(reviews, 1):
lines.append(f'Review {i} ({r.get("rating", "N/A")} stars): {r.get("text", r.get("body", ""))}')
return '\n\n'.join(lines)
def summarize_with_llm(product_name: str, formatted_reviews: str, review_count: int) -> str:
prompt = f'''Summarize the following {review_count} customer reviews for {product_name}.
Provide:
1. Top 3 praise points
2. Top 3 complaint points
3. Overall sentiment
4. One-paragraph executive summary
Reviews:
{formatted_reviews}'''
# Replace with your preferred LLM API call
import anthropic
client = anthropic.Anthropic()
message = client.messages.create(
model='claude-sonnet-4-20250514',
max_tokens=1024,
messages=[{'role': 'user', 'content': prompt}]
)
return message.content[0].text
def main():
asin = 'B09G9FPHY6'
reviews = fetch_reviews(asin)
formatted = format_reviews(reviews)
summary = summarize_with_llm('Echo Dot 5th Gen', formatted, len(reviews))
print(f'Review Summary ({len(reviews)} reviews):')
print(summary)
if __name__ == '__main__':
main()Ejemplo en JavaScript
const API_KEY = process.env.SCAVIO_API_KEY || 'your_scavio_api_key';
const ENDPOINT = 'https://api.scavio.dev/api/v1/search';
async function fetchReviews(asin) {
const response = await fetch(ENDPOINT, {
method: 'POST',
headers: { 'x-api-key': API_KEY, 'Content-Type': 'application/json' },
body: JSON.stringify({ platform: 'amazon', query: asin, marketplace: 'US', action: 'reviews' })
});
if (!response.ok) throw new Error('HTTP ' + response.status);
const data = await response.json();
return data.reviews || [];
}
function formatReviews(reviews) {
return reviews.map((r, i) =>
'Review ' + (i + 1) + ' (' + (r.rating || 'N/A') + ' stars): ' + (r.text || r.body || '')
).join('\n\n');
}
async function summarizeWithLLM(productName, formatted, count) {
// Replace with your preferred LLM API call
const Anthropic = require('@anthropic-ai/sdk');
const client = new Anthropic();
const message = await client.messages.create({
model: 'claude-sonnet-4-20250514',
max_tokens: 1024,
messages: [{
role: 'user',
content: 'Summarize the following ' + count + ' customer reviews for ' + productName + '.\n\nProvide:\n1. Top 3 praise points\n2. Top 3 complaint points\n3. Overall sentiment\n4. One-paragraph executive summary\n\nReviews:\n' + formatted
}]
});
return message.content[0].text;
}
async function main() {
const reviews = await fetchReviews('B09G9FPHY6');
const formatted = formatReviews(reviews);
const summary = await summarizeWithLLM('Echo Dot 5th Gen', formatted, reviews.length);
console.log('Review Summary (' + reviews.length + ' reviews):');
console.log(summary);
}
main().catch(console.error);Salida esperada
Review Summary (47 reviews):
Top 3 praise points:
1. Excellent sound quality for the price point
2. Seamless smart home integration with Alexa routines
3. Compact design fits any room
Top 3 complaint points:
1. Bluetooth connection drops intermittently
2. Privacy concerns with always-on microphone
3. Power adapter is bulkier than previous generation
Overall sentiment: Positive
The Echo Dot 5th Gen receives broadly positive feedback with customers praising its audio quality and smart home capabilities relative to its price. Recurring complaints center on Bluetooth stability and the physical size of the power adapter.