Transcription
Hola a todos, soy Christian con otro tutorial de HomeLab. El de hoy trata sobre la plataforma de automatización autoalojada N8N que acabo de probar recientemente. Y chicos, ¿qué puedo decir? Esta es una plataforma absolutamente increíble que puedes usar para automatizar literalmente todo. Y es súper simple de usar. Si conoces herramientas como Zapia o if this then that, esto funciona de manera bastante similar. Tiene un constructor interactivo de bajo código donde puedes arrastrar y soltar o conectar ciertos elementos para crear impresionantes flujos de automatización para varios tipos de casos de uso, como operaciones de TI, sec ops, dev ops, ventas. Las posibilidades son realmente infinitas. Por ejemplo, acabo de automatizar la publicación en mis redes sociales conectando mi base de datos de Notion que uso para gestionar todos mis proyectos de video y luego enviar publicaciones en redes sociales a varias plataformas como Discord, X, LinkedIn o conectar cualquier otra aplicación o plataforma que desee, lo que realmente me ayuda a ahorrar mucho tiempo. Pero, por supuesto, puedes expandir esto a cualquier otro caso de uso que desees. Hoy te mostraré cómo instalar esto en tu HomeLab completamente autoalojado y cómo puedes conectar múltiples aplicaciones y plataformas y usar algunos de los nodos de transformación de datos integrados de N8N o las expresiones de JavaScript para construir exactamente lo que necesitas. Creo que para las personas interesadas en la automatización, esta es definitivamente la plataforma a la que deberías echar un vistazo ahora. Entonces, hagámoslo juntos. Pero antes de empezar, déjame presentarte rápidamente otra herramienta increíble que estoy usando llamada AIFlow, el patrocinador del video de hoy. Porque AIFlow simplifica la gestión de tus proyectos y tiempo al combinar el bloqueo de tiempo y las integraciones en una plataforma intuitiva, puedes usarla para organizar todo tu horario y aumentar tu productividad simplemente arrastrando y soltando tareas directamente en tu calendario. Por ejemplo, siempre lo uso para planificar mi día cuando estoy trabajando en mis proyectos de tecnología o haciendo videos de YouTube para llevar un registro de todas las cosas importantes que tengo que hacer. Y lo que personalmente más me gusta de Echiflow es que se integra perfectamente en todas mis herramientas favoritas como Gmail, Slack, Notion y, por supuesto, puede integrarse en muchas otras, lo que es realmente genial para alguien como yo que siempre está haciendo malabares con diferentes proyectos al mismo tiempo. Y puedo sincronizar fácilmente mis bases de datos de Notion en EIFlow, actualizar los elementos y luego se sincroniza de nuevo. Y lo que también es bastante genial en Echlow, tiene un copiloto de IA que realmente aprende tus hábitos y te asigna tareas automáticamente. Así que si deseas aumentar tu productividad y organizar tus tareas y proyectos, definitivamente echa un vistazo a Flow. Es una herramienta realmente genial para eso. Y, por supuesto, te dejaré un enlace en la caja de descripción abajo. Ok chicos, así que ahora empecemos con N8N y construyamos algunas automatizaciones increíbles. Ahora, primero de todo, tenemos que instalar esto, por supuesto. Entonces, echemos un vistazo a la documentación. Por cierto, en este tutorial, solo cubrimos la edición comunitaria autoalojada. Si prefieres una oferta de servicio en la nube por cualquier motivo, entonces definitivamente deberías consultar los precios. Tienen diferentes niveles para su servicio en la nube, e incluso tienen algunas licencias empresariales para sus versiones autoalojadas si las usas en una empresa, por ejemplo. Estas son las características habituales que este tipo de herramientas les gusta poner detrás de un muro de pago. Pero si eres una persona individual o quizás un pequeño equipo de tecnología y solo quieres usar editn en un entorno privado controlado, quizás en tu home lab o en otro lugar, puedes usar la edición comunitaria gratuita. Así que solo consulta la documentación y allí encontrarás algunos excelentes tutoriales de instalación, algunas guías sobre cómo configurarlo, cómo agregar usuarios, autenticación, cómo lidiar con la escalabilidad y la seguridad. No vamos a repasar todos estos elementos en este video, pero lo que definitivamente te recomendaría, definitivamente deberías configurar esto en Docker. Esto es también lo que el equipo de NAN recomienda para el autoalojamiento porque proporciona un entorno limpio y aislado para que se ejecute toda la plataforma de automatización. Y, por supuesto, puedes usar Docker Desktop si quieres instalar esto en tu Mac, Windows o Linux local, o usar el motor Docker y Docker Compose para implementarlo en tu servidor home lab o lo que sea. Si no estás familiarizado con Docker, entonces definitivamente deberías consultar mis tutoriales de Docker. Allí explico todas estas cosas. Por supuesto, siempre prefiero escribir mi propia plantilla de Docker Compose que luego pondré en mi nuevo sitio web Christianer.te o en mi repositorio de plantillas de GitHub. Así que no necesitas escribir todas estas cosas mientras ves este video. Aquí, ya he preparado las plantillas. Por cierto, solo hay algunas cosas de las que realmente deberías ocuparte. La primera cosa es que siempre debes configurar la zona horaria correctamente porque esto es necesario cuando más tarde programes tareas que, por supuesto, no quieres que se ejecuten en el momento equivocado. Así que definitivamente revisa la zona horaria. Esto es realmente importante. Y también si no estás usando un proxy inverso como Traefik, tienes que deshabilitar la cookie segura de N8N. Si estás usando Traefik, puedes simplemente ignorar esto porque entonces puedes proteger N8N detrás de un proxy inverso seguro con certificados TLS de confianza. Si has visto mis videos tutoriales de Traefik, definitivamente deberías saber cómo funciona esto. Así que solo descomenta estas etiquetas, conéctalas a la red de Traefik y también deberías cambiar la URL base del editor de N8N. Ahora, para este tutorial, simplemente lo implementaré en mi Mac usando un proyecto de Docker Compose y una pila ORP. Así que no entraremos en las especificaciones de Traefik o también estoy usando una simple base de datos SQLite, que es la predeterminada. Pero si prefieres un backend de base de datos confiable con Postgress, también puedes descomentar estas variables de entorno, poner tus credenciales para conectarte a una base de datos y luego también puedes usarlo con Postgress. Sin embargo, la versión más simple es la pequeña plantilla que te estoy mostrando ahora. Así que esto solo se asegurará de que haya un volumen persistente de Docker donde podamos almacenar los datos. Esto es necesario para la base de datos SQLite y solo lo estoy ejecutando en mi dispositivo local. Cualquier otra cosa es estándar. Así que si no estás familiarizado con ninguna de las especificaciones de Docker, Traefik o Postgress, consulta mis otros tutoriales, consulta mis plantillas de boilerplates y entonces deberías saber cómo funciona todo esto. Muy bien, así que creo que esto es todo lo que necesitamos. Podemos implementarlo. Así que vamos a mi directorio local de N8. Por supuesto, debería iniciar la pila o antes, de lo contrario no funciona. y luego simplemente ejecuta un docker compos up-d para ejecutarlo en segundo plano. También podemos verificar los registros si todo está bien y si la aplicación se está iniciando y ahora podemos abrir la aplicación en el navegador. Así que simplemente abre la URL del editor que has configurado y eso iniciará la configuración inicial donde tenemos que ingresar nuestra dirección de correo electrónico, nombre, apellido y agregar una contraseña segura. Luego N8N también te hará algunas preguntas para una encuesta. No sé si eso es realmente importante, pero si seleccionas que no estoy usando N8N para el trabajo, entonces puedes ignorar todas las demás configuraciones. Quizás solo agrega YouTube aquí cuando te enteraste de mi video de YouTube. Eso es bueno. Y luego, lo que también es bastante genial, te ofrecen obtener funciones de pago gratis. Creo que no es realmente necesario, pero bueno, si puedes obtenerlo gratis, simplemente agrega tu dirección de correo electrónico y luego haz clic en envíame una clave de licencia gratuita. Lo he hecho en mi entorno de producción, por ejemplo, y eso agrega un historial de flujos de trabajo y depuración avanzada, esto puede ser bastante útil en algunos escenarios, así que ¿por qué no hacerlo? Aquí, para esta demostración, simplemente lo omitiré y este es el panel de control principal de N8N. Muy bien, así que si recién estás comenzando con esta plataforma, como puedes imaginar, al automatizar cosas, se vuelve muy específico, por lo que no es realmente fácil mostrar un tutorial donde todos simplemente dicen oh sí, qué bueno que muestras esto, oh puedo usar esto en mi entorno porque cada entorno y cada persona es diferente. Probablemente tendrás casos de uso diferentes. No usarás las mismas herramientas y plataformas que yo y podrías tener algo completamente diferente en mente, pero eso está bien. Puedes usar una de sus plantillas. Entonces, si haces clic en plantillas aquí, te mostrará más de 5,610 plantillas de automatización de flujos de trabajo que otras personas ya han creado y compartido. Así que estas puedes, yo diría, usarlas como fuente de inspiración para descubrir cómo otras personas han hecho varias cosas y puedes simplemente verificar cómo funcionan las cosas en general. Pero al final del día, cada uno necesita su propio tipo de flujo de trabajo de automatización personalizado. Por lo tanto, no empezamos con una plantilla. Solo quiero mostrarte cómo empezar desde cero y cómo usar realmente algunas de las funciones integradas para hacer lo que quieras. Así que cuando empiezas desde cero, simplemente comenzará con un espacio de trabajo vacío donde puedes simplemente hacer zoom, alejar o agregar o eliminar cualquier elemento. Lo importante que hay que saber es que cada flujo de trabajo comienza con un disparador. Por ahora, déjame hacer clic en disparar manualmente. Más tarde repasaremos algunos de los otros disparadores también. Así que esto simplemente se ejecuta cuando haces clic manualmente en él. Y lo que absolutamente me encantó de esta plataforma es que cuando estás planeando o construyendo tu flujo de automatización, siempre puedes probar los pasos individuales al hacer clic en ejecutar flujo de trabajo. Así que esto simplemente ejecutará todo o puedes hacer clic en los elementos individuales que simplemente ejecutarán ese elemento y siempre te muestra con una superposición verde qué nodos se han ejecutado realmente y qué nodos vendrían después de estos. Así que, por ejemplo, puedes ver con esta línea verde, hay un elemento en el flujo de automatización que fluiría hacia el siguiente elemento. Así que cuando hago clic aquí y puedo, por ejemplo, seleccionar algunas de las funciones principales integradas como ejecutar un comando. Eso me llevará a la vista de edición de ese nodo específico donde puedes ver a la izquierda las entradas. Así que lo que sea que los elementos anteriores envíen a este nodo y a la derecha verás la salida de los datos. Por ejemplo, si simplemente escribo hola mundo, este es un comando simple y lo ejecuto en el lado derecho verás el código de salida, la salida estándar con hola mundo y esta es también una salida de nodo que podría pasarse a un siguiente elemento. Ahora puedes empezar a arrastrar y soltar estos elementos. Puedes colocar otros elementos en este flujo de trabajo de automatización y reconectarlos si quieres. Así que elimina conexiones y usa estos puntos aquí para conectar elementos de una manera diferente. Eso siempre definirá el flujo de automatización y puedes realmente agregar, cambiar o ajustar cosas según lo necesites. Creo que esto es realmente súper potente y también te informará cuando algo no funciona como se espera o hay un error en algún nodo. Así que es realmente fácil e intuitivo de usar. Y por cierto, lo que también es bastante genial, también puedes colocar notas aquí. Puedes editarlo en lenguaje markdown. Y, por supuesto, también puedes compartir estos flujos de trabajo con otros usuarios. Y entonces es realmente bueno tener algunas notas que documenten o expliquen lo que realmente hace este complicado flujo de automatización. Así que esta es realmente una forma simple y muy intuitiva de crear automatizaciones sin escribir ninguna línea de código. Pero por supuesto, puede volverse bastante complejo, especialmente si usas expresiones de JavaScript u otros comandos y cómo acceder a los datos que pasan de un nodo a otro, autenticarse en plataformas, etc. Pero no te preocupes, explicaré cómo funciona todo eso. Primero hablemos de los disparadores. Como dije, puedes simplemente ejecutar un disparador manual o podrías usar algo que sucede en un evento de una aplicación. Por ejemplo, si conectas una base de datos de Notion, podrías ejecutar esta plataforma de automatización cada vez que alguien agrega una página a una base de datos o actualiza algo. N8N puede conectarse a muchas, muchas aplicaciones diferentes y recopilar eventos de ellas. Por ejemplo, hagamos algo genial con GitLab. Puedes decir que este flujo se ejecute siempre que alguien agregue un comentario o plantee un problema o fusione algo en un repositorio. Así que hay muchas cosas posibles aquí. Pero también puedes, por ejemplo, ejecutar esto en un horario específico. Por eso dije que es importante configurar tu zona horaria. Pero luego puedes ejecutar esto cada x segundos, minutos, horas, días o lo que también es súper potente, en una llamada webhook. Esto, por supuesto, solo funciona si has hecho que tu instancia de N8N esté disponible para Internet público o si estás ejecutando otra plataforma en tu red local que enviará una pequeña solicitud web a tu plataforma NAI con esa URL específica y eso ejecutará el flujo. También puedes enviar información desde la otra aplicación de terceros a tu plataforma NAI y luego procesar diferentes valores o elementos. Por ahora, nos quedaremos con el disparador manual porque es más simple para una demostración. Y luego echemos un vistazo a los diferentes elementos o nodos que puedes crear. Aquí, por ejemplo, la IA es bastante útil. Aquí encuentras un sofisticado agente de IA. Personalmente, no he jugado mucho con eso, pero podría hacerlo en el futuro. Si te interesa, déjame un comentario si quieres verlo. Pero por supuesto, puedes conectar cualquier otra plataforma de IA como Anthropic, Gemini de Google, OpenAI o quizás tu instancia local de Olama. También podrías hacer esto con una solicitud web. Eso es bastante útil. Y luego también puedes hacer otras acciones. Por ejemplo, puedes hacer cualquier acción en una base de datos, algo como Notion. No sé si no usas Notion, puede que no sea interesante, pero bueno, eso es lo que uso. Así que aquí, por ejemplo, puedo hacer cualquier modificación en las bases de datos. Puedo consultar elementos de una base de datos. Puedo agregar algo a las páginas o puedo actualizar elementos de la base de datos. Y puedes ejecutar este tipo de acciones para muchísimas aplicaciones diferentes nuevamente como GitLab o Slack. Enviar un mensaje a un canal o expulsar a un usuario de un canal. Sí. Así que las posibilidades son realmente infinitas y aún puedes hacer algunas actividades principales. Si no encuentras tu aplicación favorita pero tiene un backend de API o algo así, puedes usar elementos principales como una solicitud HTTP para enviarla a cualquier otra plataforma o enviar un webhook. Y lo que también es súper útil, más tarde profundizaremos en la transformación de datos donde puedes ejecutar código como JavaScript o Python. Puedes manipular valores, puedes filtrar, puedes separar elementos o agregar o fusionar. Esto es bastante útil si estás haciendo alguna lógica compleja que quieres construir en N8N o tienes algunas actividades de flujo como declaraciones if else, casos switch, detener un error, esperar unos segundos o lo que también es útil a veces, un humano en el bucle porque a veces solo necesitas una confirmación humana. Si quieres eliminar algo, ¿realmente quieres hacer esto? Entonces puedes enviar un mensaje a Discord, Gmail, Google Chat, Teams o Slack y luego esperar hasta que el usuario responda y confirme esta acción. Si quieres usar algunas de estas acciones o disparadores de aplicaciones en N8N, por supuesto necesitas autenticarte de forma segura en tu aplicación primero y eso se hace creando credenciales. Como por ejemplo, si quieres enviar un mensaje a un canal de Discord, puedes usar un simple webhook. Pero otras integraciones de aplicaciones como LinkedIn, por ejemplo, podrían necesitar una forma más complicada de autenticación utilizando OAuth y una URL de retorno y este tipo de cosas. Así que a veces puede ser un poco más difícil, pero N8N hace un gran trabajo al autenticarse en diferentes tipos de aplicaciones. En la mayoría de los casos, N8N tiene documentación sobre cómo completar estos campos. Así que cuando haces clic en abrir docs aquí para Notion, hay un pequeño documento que explicará algunos de los tokens de integración de API, cómo puedes crear estos tokens en Notion y qué necesitas poner en las diferentes capacidades y opciones. Así que nuevamente existen diferentes guías de integración para diferentes aplicaciones. También podrías administrar estas credenciales en la vista principal de N8N. Cuando haces clic en el más, haz clic en credencial. Por ejemplo, creemos una nueva credencial para Notion usando la API de Notion. Así que esto lo copiaré de mi plataforma de desarrollador de Notion. Lo pondré aquí y luego haré clic en guardar. Allí puedes ver si la autenticación funcionó correctamente y ahora podemos usar esta credencial en nuestro flujo de trabajo de automatización. Así que volvamos a la vista general. Abramos mi flujo de trabajo. Primero conectemos el disparador a la acción de Notion para obtener muchas páginas de la base de datos. Y cuando haga doble clic, se abrirá el menú de edición. Aquí puedo seleccionar la cuenta de Notion. Así que la credencial que he almacenado donde quiero conectarme a esto. Y ahora cuando selecciono una base de datos, debería buscar en mi plataforma de Notion dónde está la base de datos. Por ejemplo, esta es mi base de datos de publicaciones en redes sociales. Aquí puedes ver que es la última que quiero publicar para mi tutorial del servidor de copias de seguridad de Proxmox que debería publicarse en LinkedIn y X. Así que puedes ver que estoy almacenando la plataforma de redes sociales donde quiero publicarla. Y si abro esto, también puedes ver que he creado diferentes propiedades para una versión corta de la publicación. Esto se usa principalmente para X porque allí no puedes compartir tantos caracteres. Pero en LinkedIn tienes más espacio y puedes compartir una publicación más larga en esta plataforma. Es por eso que uso diferentes propiedades y más tarde en el flujo de automatización he creado una lógica if else, dependiendo de qué plataformas de redes sociales he seleccionado, entonces va a un nodo de automatización diferente usando las credenciales de API a las plataformas individuales, pero primero, quiero construir una automatización que lea todas estas páginas de la base de datos porque necesito averiguar cuándo es el momento adecuado para publicar la publicación. Así que dependiendo de cuál sea el elemento de fecha, allí almaceno la hora y la fecha en que quiero publicar la publicación y cuál es el estado, porque no quiero publicar la publicación varias veces. Así que también necesito actualizar los elementos de la base de datos más tarde cuando el flujo de automatización los haya publicado y los establezca como publicados. Espero que tenga sentido lo que quiero construir. Así que volvamos a N8N y luego seleccionemos la base de datos de publicaciones sociales. Aquí también puedes establecer un límite específico porque de lo contrario habrá demasiados elementos y el flujo de automatización se ejecutará extremadamente lento. Pero por supuesto, puedes usar filtros en estas aplicaciones, por ejemplo, cualquier filtro necesita coincidir. Así que esto es como una expresión lógica o si quieres que todos los filtros coincidan. Así que si tienes diferentes condiciones, por ejemplo, el estado de la propiedad debe ser igual a completado. Así que estas son todas las publicaciones que aún no se han publicado, pero he terminado y he terminado de escribir. Así que están listas para ser publicadas. Pero también necesito que coincida otra condición que es la fecha. Así que siempre debe compararse con la marca de tiempo actual cuando se ejecuta la aplicación. Y aquí necesitamos usar expresiones de JavaScript. Por cierto, estas expresiones también están bien documentadas. Cualquier cosa dentro de estas dos llaves se trata como una expresión en N8N. Y puedes usar el lenguaje y las expresiones regulares de JavaScript para obtener la fecha, hora actual o transformar datos y lo que sea. Así que, volvamos al flujo de trabajo. Por ejemplo, empecemos con dos llaves. Lo que también es bastante bueno, tiene autocompletado. Puedes usar el elemento now o lo que también podrías usar es la función datetime.now. Aquí puedes ver el resultado es la fecha y hora actual cuando estoy editando esto o cuando estoy ejecutando el flujo. Ok. Así que ambas condiciones deben coincidir. Así que todos los filtros, el estado debe ser completado y la fecha debe ser anterior a nuestra marca de tiempo actual. Entonces, este es un post de redes sociales válido que está listo para ser enviado a las plataformas. Por ejemplo, también podemos ejecutar este paso para ver si se devuelve algún dato. Como puedes ver aquí ahora, no tengo ninguna publicación en redes sociales que esté lista para ser publicada ahora. Así que creo que, tal vez, filtremos por algo más. Cambiemos temporalmente la condición de no antes a después. Eso significa todo lo que está en el futuro. Y cuando ahora hago clic en ejecutar paso, puedes ver que devuelve el elemento que te mostré en Notion. Aquí puedes ver la salida. Puedes ver la URL del video. Puedes ver la publicación corta y la publicación larga. Todo lo que se devuelve de esta base de datos en Notion aparece aquí. Y puedes usar expresiones de JavaScript para acceder a estos campos específicos. Más tarde te mostraré cómo se hace exactamente. Pero por ejemplo, si hiciéramos algo más como agregar una nueva página, publicación de prueba y esto es quizás en el futuro y también está completado. Entonces, por ejemplo, también deberíamos devolver este objeto aquí, tal vez abramos esto y digamos publicación de prueba. Muy bien, entonces tenemos una nueva entrada en la base de datos y cuando ahora la ejecuto de nuevo, puedes ver que hay dos elementos que fueron devueltos. Lo que es realmente increíble, puedes verlo en la vista general aquí, que se muestran dos elementos. Eso significa que este nodo devolvió dos elementos y ahora podemos decir qué queremos hacer realmente con esto. Ahora, si tienes algún nodo de procesamiento por lotes que pueda procesar varios elementos a la vez, puedes simplemente agregar otro nodo aquí. Pero en este caso, quiero procesar dos elementos aquí y más tarde también necesito diferenciarlos según la plataforma de redes sociales. Y para eso, necesito separar estos elementos porque todos estos elementos aquí podrían tener varios elementos para plataformas de redes sociales. Eso significa que se podrían enviar múltiples publicaciones a múltiples plataformas. Y si necesitas una ruta o un procesamiento diferente para cada plataforma de redes sociales, porque las integraciones de API son diferentes para Discord que para LinkedIn, entonces necesitamos usar los elementos de transformación de datos integrados de N8N. Por ejemplo, el split out. Esto convierte un elemento de lista en múltiples objetos de cadena. Y lo que es absolutamente increíble en N8N, si estás agregando una nota que sigue a un paso anterior que ya ejecutó algunos datos, puedes ver todos los campos que el nodo anterior devolvió y usarlos como valores de entrada y puedes arrastrar y soltar fácilmente los elementos que necesitas. Por ejemplo, la propiedad plataforma de redes sociales. Este es el elemento de lista que quiero transformar en múltiples elementos. Así que aquí puedo arrastrar esto a los campos para dividir y luego si ejecuto esto, puedes ver que de un elemento de entrada obtenemos dos salidas para cada una de las plataformas de redes sociales. Ahora estas salidas solo contienen el campo que he dividido. Pero por supuesto, necesito enviar todos los demás elementos también porque más tarde quiero acceder al valor de la publicación corta o al enlace del video o a cualquier otro. Así que necesito incluir todos los demás campos también. Cuando ahora ejecuto el paso de nuevo, puedes ver que hay dos elementos saliendo del elemento dividido pero con todos los campos que provienen del nodo anterior. Así que esto es exactamente lo que necesitamos. Y también puedes ver aquí, podemos crear algunas declaraciones if else. Así que si la plataforma de redes sociales es Discord o LinkedIn, entonces podemos agregar diferentes nodos dependiendo de cuál sea la plataforma de redes sociales. Tenemos diferentes integraciones de aplicaciones que queremos activar. Ahora, lo que puedes usar para esto es, si vas a declaraciones if else de flujo o filtros. Personalmente, para este tipo de integración, usaría un elemento switch case. Aquí podemos volver a arrastrar el elemento que contiene la plataforma de redes sociales al valor uno. Y aquí podemos decir, como esta es una cadena que contiene el resultado LinkedIn en nuestro caso, podemos decir si el valor es igual a LinkedIn, entonces esta es nuestra primera ruta. Podemos renombrar la salida a LinkedIn y luego agregar otra ruta para cada valor. Así que agarremos la plataforma de redes sociales de nuevo y digamos si esto es igual a, ¿cuál era la otra, Discord por ejemplo, sí, Discord, entonces queremos seguir una ruta diferente. Puedes ver cuando volvemos aquí que hemos creado dos rutas aquí ahora, así que dependiendo de qué switch case coincida, podemos decir que para Discord necesitamos una integración de Discord, algo como enviar un mensaje, sí, entonces podemos usar nuestra integración de webhook o API, lo que sea. Probablemente necesitaremos crear una nueva credencial aquí. Envíalo a Discord. Y aquí podemos decir LinkedIn. Entonces podemos enviar una publicación a LinkedIn. Agregar credenciales. No voy a hacer esto ahora mismo. Por cierto, si solo quieres probar algo y no quieres ejecutar activamente algunos nodos aquí, puedes seleccionarlos múltiples y hacer clic en desactivar. Así que no se ejecutan, pero aún puedes probar el flujo si funciona. Por ejemplo, si ejecutamos, puedes ver que hay dos elementos. Hay dos publicaciones. Sí. En la base de datos que se dividen en cuatro elementos porque cada una de las publicaciones tiene dos plataformas de redes sociales. Así que obtenemos cuatro elementos y van al switch case. Un elemento se envía a Discord. Así que probablemente esta publicación aquí. Y dos elementos, este aquí y el otro van a la ruta de LinkedIn. Y hay otro que va a X, así que puedo agregar otra ruta en el switch case y crear un caso para eso también. Lo único que necesito es actualizar las páginas para que cuando envíe la publicación, el flujo de automatización cambie de completado a publicado. Eso también es bastante fácil porque puedes agregar cualquier elemento intermedio también. Así que aquí, por ejemplo, Notion, y podemos actualizar una página de base de datos. Ahora necesitamos decir específicamente qué objeto queremos actualizar. Así que podemos hacerlo por ID y afortunadamente hay un campo de ID que proviene de get many database pages. Así que podemos arrastrarlo aquí. Así que para este elemento que consultamos primero, queremos cambiar una propiedad y queremos cambiar el estado a publicado. Bien, eso es todo. Por supuesto, no voy a ejecutar esto ahora mismo porque de lo contrario rompería mi base de datos de producción. Así que voy a desactivar esto. Y por cierto, lo que también es bastante genial, incluso puedes hacer esto en paralelo. Así que puedes conectar estos elementos de esta manera para que los dos elementos que salen de la consulta de la base de datos se envíen al elemento split out. Enviará la publicación de redes sociales a la plataforma y al mismo tiempo actualizará el estado a completado. Así que podemos ejecutar esto de nuevo. No debería pasar nada porque he desactivado todos los casos importantes y sí, todo funciona correctamente. Así es literalmente como he automatizado completamente mis publicaciones en redes sociales. Por supuesto, necesitas estar algo familiarizado con cómo funcionan las expresiones de JavaScript y necesitas probar algunas cosas. Pero creo que es tan fácil porque literalmente puedes probarlo sobre la marcha, desactivar algunos de los elementos que romperían algo o harían cosas dañinas, pero puedes simplemente ejecutarlo hasta que lo consigas. Y creo que esto es realmente súper potente. Ahora, básicamente podría dejarte ir y jugar con esto, construir tus propios flujos de automatización y agregar tus propias integraciones de aplicaciones, credenciales y cosas así. Pero todavía quiero mostrarte una cosa más que es realmente importante si te mudas a producción porque esto es solo una prueba. Si queremos activar esto, cambiaría el disparador de manual a programado para que cada 5 minutos o así recorra mi base de datos, vea si hay nuevas publicaciones que estén completadas y las envíe. Ahora, si hago esto y algo sale mal, como ocurre un error en la base de datos o algo así y el flujo de automatización ya no funciona, por supuesto necesito ser informado. Entonces definitivamente deberías configurar una notificación de error. Hay una buena documentación sobre cómo hacerlo. Por cierto, te mostraré esto en mi instancia de N8N de producción. Así que aquí están mis flujos de trabajo activos. Actualmente, solo tengo dos, pero todavía estoy experimentando con esto. Y aquí está mi flujo de trabajo de manejo de errores. Así que aquí puedes ver que he creado un disparador de error. Así que esto siempre se activará cuando un flujo de trabajo no esté funcionando correctamente, cuando se active un error, y esto desactivará automáticamente el flujo de trabajo. Así que este es un elemento central de N8N. Creo que es este aquí. N8N. Ahora los elementos centrales necesitarán un token de API a la plataforma en sí porque podrías conectar múltiples plataformas N8N y así sucesivamente. Así que solo ve a configuración, API de N8N y crea una clave de API para el proyecto interno. Luego puedes usarla. Y aquí puedes ver que no solo desactivo el flujo de trabajo que salió mal, sino que también envío un mensaje a mi canal de Discord. Así que recibo una notificación en mi teléfono o en mi portátil. Oye, algo anda mal. El flujo de trabajo XYZ tuvo un error y fue desactivado y puedo solucionar problemas manualmente, averiguar cuál fue el problema y luego arreglarlo. Sí. Y eso es todo sobre N8N. Como puedes ver, es una plataforma súper intuitiva y realmente potente. Puedes usarla para construir cualquier flujo de trabajo de automatización que desees. Y creo que en las próximas semanas y meses probablemente experimentaré más con eso. Como quizás sepas, también uso otras plataformas de automatización como Castra o GitLab CI/CD. Realmente quiero probar esto y ver cómo compite con estas otras plataformas de automatización. Así que por favor, ten un poco de paciencia. Dame un poco más de tiempo para jugar con esto. Y tal vez tengas algunas otras ideas para automatizaciones que quizás quieras ver o quizás quieras mostrarme. Pero ahora te dejo. Te dejo jugar con esto y divertirte. Experimenta. Así que, gracias a todos. Que tengan un buen día y nos vemos en el próximo. Cuídense. Adiós.