Automatice su boletín de noticias con n8n, Bright Data y OpenAI

Aprenda a automatizar un boletín inteligente con n8n, Bright Data y OpenAI. Raspe datos, genere contenido y envíe correos electrónicos personalizados.
9 min de lectura
Forms + Bright Data + GPT-4o-mini integration on n8n blog image

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.

Utilizar el flujo de trabajo 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”.

Instalar un nodo comunitario

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
Añadir generador de documentos

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.

Obtenga la clave API de Bright Data

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.

Claves de la API de OpenAI

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.

SSL desactivado

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í.

Consiga sus credenciales SMTP

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.

Editar datos de Bright

Añada su clave API de Web Unlocker en la sección “Token”.

Añadir clave API de Web Unlocker

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.

Establecer formato a JSON

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.

Propiedades HTML

Antes de cerrarlo, desplácese hacia abajo y haga coincidir también estos otros campos: Clave: body, Selector CSS: body, Valor de retorno: Texto.

Más propiedades HTML

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.

Configuración de OpenAI

Desplácese hasta la parte inferior y asegúrese de que el resto de los campos son correctos.

Configuración de OpenAI Parte 2

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.

Ajustes de extracción de ChatGPT

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.

Cómo escribir la estructura HTML

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.

Configuración del correo electrónico

Ahora, añada las credenciales a su cuenta SMTP. Necesitas el Usuario, la Contraseña, el Host y el Puerto.

Credenciales SMTP

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.

Ajustes de finalización

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.

Formulario de inscripción

Haz clic en “Obtener ofertas”. Una vez que hayas enviado tu información, la ventana emergente debería tener este aspecto.

Formulario cumplimentado

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.

Ofertas Email

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