Imagine que pudiera lanzar un boletín de noticias completamente automatizado. Con una codificación mínima y algunas credenciales API, ahora puedes. n8n, Bright Data y OpenAI nos dan el poder para hacer exactamente esto.
Hoy vamos a repasar este proceso para mostrarte lo fácil que es.
Primeros pasos
Empezaremos accediendo al flujo de trabajo (puedes empezar a utilizarlo gratis). Haga clic en el botón titulado “Usar flujo de trabajo” cerca de la parte superior de su post. Cuando se le solicite, asegúrese de ejecutar una instancia autoalojada de n8n.
Autoalojamiento n8n
sudo snap install docker
Inicie docker y ponga n8n en marcha.
sudo docker volume create n8n_data
sudo docker run -it --rm --name n8n -p 5678:5678 -v n8n_data:/home/node/.n8n docker.n8n.io/n8nio/n8n
Instalación de nodos comunitarios
Ahora es el momento de instalar un par de nodos comunitarios. Ve a “Configuración” y haz clic en “Nodos comunitarios”.
En la casilla de entrada “npm”, introduzca el nodo Bright Data.
n8n-nodes-brightdata
A continuación, haga lo mismo con el Generador de documentos.
n8n-nodes-document-generator
Una vez que hayas instalado estos nodos, mata tu instancia Docker con ctrl+c
.
A continuación, reinícialo.
sudo docker run -it --rm --name n8n -p 5678:5678 -v n8n_data:/home/node/.n8n docker.n8n.io/n8nio/n8n
Puede consultar la documentación completa sobre la instalación de nodos comunitarios aquí.
Obtención de las claves API
Datos brillantes
Si aún no lo has hecho, tienes que registrarte en Web Unlocker. Esta herramienta ofrece todo tipo de características interesantes de raspado como CAPTCHA bypass y la integración de proxy. En la zona de juegos, puedes obtener tu clave API.
Coge esta llave y guárdala en un lugar seguro.
OpenAI
Desde el panel de control de OpenAI, puede ver y crear nuevas claves en la pestaña Claves de API.
Una vez más, guarde las llaves en un lugar seguro.
SMTP
Para SMTP, estoy usando Elastic Email. En su plan gratuito, solo puedes enviarte correos electrónicos a ti mismo, pero eso es suficiente para este tutorial.
Nota: Me encontré con un error al crear la conexión SMTP. Desactivando SSL se ha solucionado.
Con SMTP, no importa que cliente uses (Elastic Email o cualquier otro), necesitas guardar tu nombre de usuario, contraseña y detalles de conexión. Con Elastic Email, puedes verlos aquí.
Ajustar el flujo de trabajo
Obtener el sitio con Web Unlocker
Haga clic con el botón derecho del ratón en el icono Bright Data de su flujo de trabajo y haga clic en “Abrir”. Haga clic en el icono del lápiz para editar la configuración.
Añada su clave API de Web Unlocker en la sección “Token”.
Ahora, vamos a ajustar nuestro esquema para que todo funcione correctamente. En la parte inferior de la configuración, asegúrese de que el formato se establece en “JSON”. En la imagen de abajo, nuestra url es https://www.mediamarkt.de/,
sustitúyela por la url que quieras escrapear. Reemplace el nombre de la zona con su propio nombre de zona de desbloqueo web.
Extracción del HTML
Ahora, asegurémonos de que nuestra extracción HTML está configurada correctamente. Asegúrese de que sus “Datos de origen” se establece en “JSON”. Los valores de extracción deben coincidir con lo que se ve en la imagen de abajo: Clave: título
, Selector CSS: título
, Valor de retorno: Texto
. Si está trabajando con un sitio diferente, puede ajustar estos campos para satisfacer sus necesidades, pero si una página no tiene un cuerpo
o título
, probablemente no vale la pena raspar de todos modos.
Antes de cerrarlo, desplácese hacia abajo y haga coincidir también estos otros campos: Clave: body
, Selector CSS: body
, Valor de retorno: Texto.
Pasar los datos a ChatGPT
ChatGPT analizará nuestros datos por nosotros. Con la potencia de los LLM, ni siquiera necesitamos escribir un analizador sintáctico. Puedes aprender más sobre scraping con modelos de IA aquí. El proceso aquí es bastante simple: le damos a ChatGPT una página web, y nos escupe una lista limpia de productos.
Ahora, es el momento de configurar su conexión ChatGPT. Abra la configuración del nodo titulado “Generar lista de ofertas por categoría”. Añada su clave API de OpenAI de la misma forma que añadió su clave API de Bright Data. A continuación, asegúrese de que los siguientes campos son correctos: Recurso: Texto
, Operación: Mensaje a Modelo
. Si desea utilizar un modelo diferente, siéntase libre de cambiarlo, pero estamos utilizando GPT-4o mini.
Desplácese hasta la parte inferior y asegúrese de que el resto de los campos son correctos.
Extracción de los resultados de ChatGPT
Ahora, abra la configuración del nodo titulado “Extraer elementos de los resultados”. Asegúrese de que “Fields to Split Out” está establecido en message.content.results
.
Generación del documento HTML
Ahora es el momento de generar el documento HTML. Este es el HTML en bruto que compone el correo electrónico real. Si ejecuta una prueba de flujo de trabajo, puede arrastrar y soltar los valores de entrada en la plantilla HTML. Asegúrese de que la “Cadena de la plantilla” se establece en Expresión
.
Si quieres, puedes copiar y pegar mi plantilla HTML de abajo. El HTML de abajo no es un requisito, sólo está ahí para ayudarte a empezar. Puedes darle el estilo que quieras a tus datos, solo asegúrate de insertar los datos JSON correctamente.
<h1>{{ $json.name }}</h1>
<p>{{ $json.description }}</p>
<a href={{ $('Generate List of Deals by Category').item.json.message.content.results[0].link }}>
{{ $('Generate List of Deals by Category').item.json.message.content.results[0].link }}
</a>
<h2>{{ $('Generate List of Deals by Category').item.json.message.content.results[1].name }}</h2>
<ul>
<li><p>{{ $('Generate List of Deals by Category').item.json.message.content.results[1].description }}</p></li>
<li>{{ $('Generate List of Deals by Category').item.json.message.content.results[1].price }}</li>
<li>
<a href={{ $('Generate List of Deals by Category').item.json.message.content.results[1].link }}>
{{ $('Generate List of Deals by Category').item.json.message.content.results[1].link }}
</a>
</li>
</ul>
<h2>{{ $('Generate List of Deals by Category').item.json.message.content.results[2].name }}</h2>
<ul>
<li><p>{{ $('Generate List of Deals by Category').item.json.message.content.results[2].description }}</p></li>
<li>{{ $('Generate List of Deals by Category').item.json.message.content.results[2].price }}</li>
<li>
<a href={{ $('Generate List of Deals by Category').item.json.message.content.results[2].link }}>
{{ $('Generate List of Deals by Category').item.json.message.content.results[2].link }}
</a>
</li>
</ul>
<h2>{{ $('Generate List of Deals by Category').item.json.message.content.results[3].name }}</h2>
<ul>
<li><p>{{ $('Generate List of Deals by Category').item.json.message.content.results[3].description }}</p></li>
<li>{{ $('Generate List of Deals by Category').item.json.message.content.results[3].price }}</li>
<li>
<a href={{ $('Generate List of Deals by Category').item.json.message.content.results[3].link }}>
{{ $('Generate List of Deals by Category').item.json.message.content.results[3].link }}
</a>
</li>
</ul>
<h2>{{ $('Generate List of Deals by Category').item.json.message.content.results[4].name }}</h2>
<ul>
<li><p>{{ $('Generate List of Deals by Category').item.json.message.content.results[4].description }}</p></li>
<li>{{ $('Generate List of Deals by Category').item.json.message.content.results[4].price }}</li>
<li>
<a href={{ $('Generate List of Deals by Category').item.json.message.content.results[4].link }}>
{{ $('Generate List of Deals by Category').item.json.message.content.results[4].link }}</a></li>
</ul>
<h2>{{ $('Generate List of Deals by Category').item.json.message.content.results[5].name }}</h2>
<ul>
<li><p>{{ $('Generate List of Deals by Category').item.json.message.content.results[5].description }}</p></li>
<li>{{ $('Generate List of Deals by Category').item.json.message.content.results[5].price }}</li>
<li>
<a href={{ $('Generate List of Deals by Category').item.json.message.content.results[5].link }}>
{{ $('Generate List of Deals by Category').item.json.message.content.results[5].link }}
</a>
</li>
</ul>
Notificación al usuario por correo electrónico
Ahora es el momento de conectarse al servidor SMTP. Si aún no has añadido tus claves API, haz clic en el icono del “lápiz” para editar los detalles de la conexión. Cambia “Correo electrónico del remitente” por el correo electrónico desde el que enviarás el mensaje. Pon en “Asunto” lo que quieras. Asegúrate de dejar “Formato de correo electrónico” como HTML
.
Ahora, añada las credenciales a su cuenta SMTP. Necesitas el Usuario, la Contraseña, el Host y el Puerto.
Informar al usuario del éxito
Ahora, vamos a crear la página que le dice a nuestro usuario que todo ha terminado. Cambia el “Mensaje de Finalización” y el “Título de Finalización” a lo que quieras. Todos los demás campos deben permanecer igual – simplemente estamos informando al usuario que el proceso ha terminado.
El correo electrónico resultante
Ahora que hemos terminado de configurarlo todo, vamos a probarlo. Haz clic en “Probar flujo de trabajo”. Debería aparecer una ventana emergente como ésta. Elige tu categoría e introduce una dirección de correo electrónico para recibir tus ofertas.
Haz clic en “Obtener ofertas”. Una vez que hayas enviado tu información, la ventana emergente debería tener este aspecto.
Por último, comprueba tu bandeja de entrada. Si no ves el mensaje de ofertas inmediatamente, mira en la carpeta de spam. La mayoría de los servicios de correo electrónico modernos marcan los correos masivos como spam. Cuando lo encuentres, ábrelo y echa un vistazo a tus ofertas.
Conclusión
Con n8n, Bright Data y OpenAI, ahora tiene las herramientas para automatizar completamente un boletín inteligente basado en datos. Aprovechando Web Unlocker para la extracción de datos, ChatGPT para la generación de contenidos y SMTP para el envío por correo electrónico, puede crear recomendaciones de ofertas personalizadas con el mínimo esfuerzo.
Pero, ¿por qué detenerse aquí? Bright Data ofrece un conjunto de soluciones de datos para mejorar aún más su automatización:
- Apoderados Residenciales
- Navegador de raspado
- API de raspado
- Conjuntos de datos
Lleve su automatización de marketing por correo electrónico al siguiente nivel. Suscríbase hoy mismo a una prueba gratuita y empiece a crear flujos de trabajo más inteligentes y eficientes.
No se requiere tarjeta de crédito