{"id":4355,"date":"2025-06-30T21:28:44","date_gmt":"2025-06-30T19:28:44","guid":{"rendered":"https:\/\/germanmallo.com\/?p=764"},"modified":"2026-10-05T08:15:53","modified_gmt":"2026-10-05T06:15:53","slug":"proyecto-social-listening","status":"publish","type":"post","link":"https:\/\/germanmallo.com\/en\/proyecto-social-listening\/","title":{"rendered":"C\u00f3mo construimos un pipeline de Social Listening 100% autom\u00e1tico"},"content":{"rendered":"<p>Hace unos meses, a ra\u00edz de la asignatura \u00abProyectos III\u00bb de mi grado en Ciencia de Datos, nos vimos envueltos en un proyecto en colaboraci\u00f3n con PricewaterhouseCoopers, en el cual, nos ped\u00edan hacer un trabajo con la tem\u00e1tica \u00abSocial Listening\u00bb, sin dar ninguna indicaci\u00f3n extra. Por tanto, estuvimos los \u00faltimos 5 meses reuni\u00e9ndonos con ellos y fijando un objetivo com\u00fan: dise\u00f1ar una arquitectura de <strong>social listening<\/strong> que, solo con indicar el nombre de la empresa, recopilara los datos, los procesara y nos entregara <em>insights de marca<\/em> listos para presentar.<\/p>\n<p>Y as\u00ed es como naci\u00f3 este proyecto que desarroll\u00e9 junto a mis inseparables <a href=\"https:\/\/www.linkedin.com\/in\/adrian-castillo-port\/\" target=\"_blank\" rel=\"noopener\">Adri\u00e1n Castillo<\/a>, <a href=\"https:\/\/cserrano.dev\" target=\"_blank\" rel=\"noopener\">Carlos Serrano<\/a>.<\/p>\n<p>En este post te contamos c\u00f3mo lo hicimos, qu\u00e9 descubrimos analizando a Apple y qu\u00e9 aprendizajes nos llevamos para futuros proyectos de <strong>an\u00e1lisis de redes sociales<\/strong>.<\/p>\n<p><img fetchpriority=\"high\" decoding=\"async\" class=\"aligncenter wp-image-773\" src=\"https:\/\/germanmallo.com\/wp-content\/uploads\/2025\/06\/imagen-adrian-1024x768-1.jpg\" alt=\"\" width=\"743\" height=\"557\" \/><\/p>\n<p><!--more--><\/p>\n<h3>El reto: escuchar sin supervisi\u00f3n<\/h3>\n<p>Nuestro objetivo era claro: <strong>automatizar de extremo a extremo<\/strong> el proceso de escucha social y reducir las horas invertidas en configuraci\u00f3n y limpieza manual. Para conseguirlo, definimos cuatro hitos:<\/p>\n<ol>\n<li><strong>Captura sin API<\/strong><br \/>\nDesarrollamos un m\u00f3dulo de <em>web scraping<\/em> con Playwright que simula el comportamiento de un usuario real y esquiva los bloqueos habituales (rotaci\u00f3n de <em>User-Agent<\/em>, tiempos aleatorios, etc.). As\u00ed extraemos comentarios p\u00fablicos de cualquier red sin credenciales especiales.<\/li>\n<li><strong>Etiquetado tem\u00e1tico din\u00e1mico<\/strong><br \/>\nEn lugar de clasificar con listas fijas, usamos un LLM local (Llama 3 8B) que asigna a cada comentario una etiqueta de 1-3 palabras. Despu\u00e9s agrupamos esas etiquetas con HDBSCAN y <em>embeddings<\/em> para descubrir los <strong>temas latentes<\/strong> que preocupan a la audiencia.<\/li>\n<li><strong>Sentiment y puntuaci\u00f3n de reputaci\u00f3n online<\/strong><br \/>\nA cada comentario aplicamos un modelo <em>transformer<\/em> multiling\u00fce que decide si el tono es positivo, negativo o neutro. Con esa se\u00f1al calculamos un <em>Social Score<\/em> por tema (\u20131 a +1) que nos permite comparar r\u00e1pidamente.<\/li>\n<li><strong>Visualizaci\u00f3n instant\u00e1nea<\/strong><br \/>\nReact + Tailwind generan un dashboard que se autocompleta cuando termina el <em>pipeline<\/em>: m\u00e9tricas globales, evoluci\u00f3n temporal y un mapa 3D de temas para navegar la conversaci\u00f3n.<\/li>\n<\/ol>\n<p>En total, el flujo tarda unos <strong>10 min<\/strong> en descargar 1 000 comentarios y una hora en etiquetarlos con IA en una CPU est\u00e1ndar; todo escalable si pasamos a GPU o paralelizamos procesos.<\/p>\n<h4 id=\"datos-y-periodo-analizado\">Datos y periodo analizado<\/h4>\n<p>Para la prueba de concepto nos centramos en <strong>TikTok<\/strong> (por su volumen y lenguaje coloquial) y rastreamos menciones a \u201cApple\u201d entre <strong>julio 2022 y mayo 2025<\/strong>. El resultado fueron 45 000 comentarios listos para estudio.<\/p>\n<p><img decoding=\"async\" class=\"aligncenter wp-image-767\" src=\"https:\/\/germanmallo.com\/wp-content\/uploads\/2025\/06\/resultados_diagrama.png\" alt=\"\" width=\"930\" height=\"393\" \/><\/p>\n<h3 id=\"hallazgos-clave-apple-bajo-la-lupa\">Hallazgos clave: Apple bajo la lupa<\/h3>\n<p>Compartimos los <em>insights<\/em> m\u00e1s llamativos, \u00fatiles para cualquier marketer <em>junior-mid<\/em> que quiera aplicar <strong>social listening<\/strong> de forma pr\u00e1ctica:<\/p>\n<ul>\n<li><strong>Distribuci\u00f3n de sentimiento<\/strong>\n<ul>\n<li>31 % positivo, 42 % neutro y 26 % negativo. Aunque la marca genera entusiasmo, existe una bolsa cr\u00edtica que no debemos ignorar.<\/li>\n<\/ul>\n<\/li>\n<li><strong>Top 5 temas por volumen<\/strong>\n<ol>\n<li><strong>Bater\u00eda del iPhone<\/strong> (Social Score \u20130,22)<\/li>\n<li><strong>Ecosistema Apple<\/strong> (+0,35)<\/li>\n<li><strong>Precios<\/strong> (\u20130,48)<\/li>\n<li><strong>Privacidad<\/strong> (+0,41)<\/li>\n<li><strong>Dise\u00f1o<\/strong> (+0,44)<\/li>\n<\/ol>\n<\/li>\n<li><strong>Insight de marca<\/strong> revelador: los usuarios aplauden la integraci\u00f3n entre dispositivos, pero perciben los precios como el principal freno a la compra. El equipo de producto podr\u00eda explotar la ventaja competitiva del ecosistema mientras refuerza mensajes de valor para justificar el coste.<\/li>\n<li><strong>Tendencia temporal<\/strong><br \/>\nDurante los lanzamientos de septiembre, el sentimiento mejora hasta +0,12; tres meses despu\u00e9s vuelve a la media. Las campa\u00f1as de novedad funcionan, pero el efecto se diluye r\u00e1pido.<\/li>\n<\/ul>\n<h3 id=\"lo-que-aprendimos-en-el-proceso\">Lo que aprendimos en el proceso<\/h3>\n<ol>\n<li><strong>El prompt engineering vale oro<\/strong><br \/>\nPeque\u00f1os cambios en el prompt del LLM supon\u00edan pasar de etiquetas generalistas (\u201ccalidad\u201d) a menciones muy concretas (\u201cchip M3\u201d). Invertir tiempo aqu\u00ed elev\u00f3 la precisi\u00f3n del <em>clustering<\/em>.<\/li>\n<li><strong>La modularidad facilita la iteraci\u00f3n<\/strong><br \/>\nSeparar el <em>scraping<\/em>, el NLP y la capa de visualizaci\u00f3n nos permiti\u00f3 afinar cada pieza sin romper el resto. El pr\u00f3ximo paso ser\u00e1 conectar bases de datos gr\u00e1ficas para optimizar la b\u00fasqueda de hilos.<\/li>\n<li><strong>Velocidad vs. profundidad<\/strong><br \/>\nUna hora de CPU por 1 000 comentarios es aceptable para prototipos, pero en producci\u00f3n necesitaremos GPU o segmentar por lotes. La buena noticia es que el ahorro de configuraci\u00f3n compensa con creces ese coste.<\/li>\n<li><strong>Reputaci\u00f3n online \u2260 volumen de menciones<\/strong><br \/>\nA veces un tema minoritario (p. ej., \u201cprivacidad\u201d) pesa m\u00e1s en la percepci\u00f3n global que el <em>hype<\/em> alrededor de un nuevo dispositivo. Mirar solo las curvas de volumen puede llevar a conclusiones err\u00f3neas.<\/li>\n<\/ol>\n<h3 id=\"conclusi-n-y-pr-ximos-pasos\">Conclusi\u00f3n y pr\u00f3ximos pasos<\/h3>\n<p>Construir este pipeline nos ha ense\u00f1ado que el verdadero valor del <strong>social listening<\/strong> no es acumular datos, sino entregar <em>insights de marca<\/em> accionables en horas, no en semanas. Si est\u00e1s empezando en marketing anal\u00edtico, nuestro consejo es <strong>automatizar pronto<\/strong> las tareas repetitivas para dedicar tu tiempo a interpretar resultados y proponer acciones que mejoren la <strong>reputaci\u00f3n online<\/strong>.<\/p>\n<p>Tal fue la acogida del proyecto que incluso desde PwC nos invitaron a sus oficinas de Madrid para presentarlo en persona. Pero esa es otra historia\u2026 que quiz\u00e1 comparta en el pr\u00f3ximo post.<\/p>\n<hr \/>\n<p>\u00bfQuieres ver el proyecto completo?<\/p>\n<p>Aqu\u00ed te dejo los documentos que preparamos:<\/p>\n<p>&#8211; \ud83d\udcc4 <a href=\"https:\/\/germanmallo.com\/wp-content\/uploads\/2025\/06\/Report-Social-Listening.pdf\" target=\"_blank\" rel=\"noopener\">Download technical report (PDF)<\/a><\/p>\n<p>&#8211; \ud83c\udfaf <a href=\"https:\/\/germanmallo.com\/wp-content\/uploads\/2025\/06\/PwC-UPV-Social-Listening-1.pdf\" target=\"_blank\" rel=\"noopener\">View summary presentation (PDF)<\/a><\/p>","protected":false},"excerpt":{"rendered":"<p>Hace unos meses, a ra\u00edz de la asignatura \u00abProyectos III\u00bb de mi grado en Ciencia de Datos, nos vimos envueltos en un proyecto en colaboraci\u00f3n con PricewaterhouseCoopers, en el cual, nos ped\u00edan hacer un trabajo con la tem\u00e1tica \u00abSocial Listening\u00bb, sin dar ninguna indicaci\u00f3n extra. Por tanto, estuvimos los \u00faltimos 5 meses reuni\u00e9ndonos con ellos [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":1013,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[79],"tags":[219,92,240,270],"class_list":["post-4355","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-automatizacion","tag-analisis-de-datos","tag-automatizacion","tag-procesamiento-del-lenguaje-natural","tag-social-listening"],"acf":[],"_links":{"self":[{"href":"https:\/\/germanmallo.com\/en\/wp-json\/wp\/v2\/posts\/4355","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/germanmallo.com\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/germanmallo.com\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/germanmallo.com\/en\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/germanmallo.com\/en\/wp-json\/wp\/v2\/comments?post=4355"}],"version-history":[{"count":1,"href":"https:\/\/germanmallo.com\/en\/wp-json\/wp\/v2\/posts\/4355\/revisions"}],"predecessor-version":[{"id":4415,"href":"https:\/\/germanmallo.com\/en\/wp-json\/wp\/v2\/posts\/4355\/revisions\/4415"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/germanmallo.com\/en\/wp-json\/wp\/v2\/media\/1013"}],"wp:attachment":[{"href":"https:\/\/germanmallo.com\/en\/wp-json\/wp\/v2\/media?parent=4355"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/germanmallo.com\/en\/wp-json\/wp\/v2\/categories?post=4355"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/germanmallo.com\/en\/wp-json\/wp\/v2\/tags?post=4355"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}