{"id":7,"date":"2026-09-20T05:31:09","date_gmt":"2026-09-20T05:31:09","guid":{"rendered":"https:\/\/prensabot.com\/blog\/?p=7"},"modified":"2026-09-21T10:12:47","modified_gmt":"2026-09-21T10:12:47","slug":"de-un-script-casero-en-lomas-de-tafi-a-una-plataforma-editorial","status":"publish","type":"post","link":"https:\/\/prensabot.com\/blog\/de-un-script-casero-en-lomas-de-tafi-a-una-plataforma-editorial\/","title":{"rendered":"De un script casero en Lomas de Taf\u00ed a una plataforma editorial"},"content":{"rendered":"<h2>Todo empez\u00f3 con una tarea repetitiva<\/h2>\n<p>Antes de existir <strong>PrensaBot<\/strong> como plataforma, hab\u00eda una necesidad mucho m\u00e1s simple y concreta: mantener actualizado <strong>Lomas de Taf\u00ed<\/strong> sin pasar horas copiando informaci\u00f3n desde distintas p\u00e1ginas. La agenda de eventos y las noticias locales se armaban con una tarea manual que consum\u00eda tiempo y hac\u00eda dif\u00edcil sostener una publicaci\u00f3n constante.<\/p>\n<p>El 19 de junio de 2026 la b\u00fasqueda de informaci\u00f3n todav\u00eda era artesanal. Hab\u00eda que recorrer el portal municipal, revisar los datos disponibles y trasladarlos al sitio. La pregunta era sencilla: <em>\u00bfpod\u00edamos automatizar una parte de ese trabajo sin perder el criterio editorial?<\/em><\/p>\n<h2>El primer experimento: <code>\/agente-ia\/<\/code><\/h2>\n<p>El 20 de junio, a las 22:23, naci\u00f3 el primer script en PHP nativo dentro de <code>\/agente-ia\/<\/code>. No era todav\u00eda un producto ni una plataforma multiusuario. Era una herramienta interna, construida para resolver un problema propio. Ten\u00eda un login simple, llamadas directas mediante cURL y l\u00f3gica de scraping concentrada en un mismo lugar.<\/p>\n<p>El prototipo permiti\u00f3 probar una idea fundamental: la inteligencia artificial pod\u00eda ayudar a <strong>extraer informaci\u00f3n, ordenar una noticia y preparar un borrador para WordPress<\/strong>. La conexi\u00f3n mediante la API REST de WordPress tambi\u00e9n demostr\u00f3 que era posible pasar de una fuente externa a un contenido editable en el sitio sin copiar y pegar cada p\u00e1rrafo.<\/p>\n<p>Ese primer resultado fue importante porque valid\u00f3 la necesidad. Hab\u00eda una tarea real, un ahorro de tiempo posible y una integraci\u00f3n que funcionaba. Pero que un prototipo funcione no significa que est\u00e9 preparado para crecer.<\/p>\n<h2>Cuando el prototipo empez\u00f3 a quedar chico<\/h2>\n<p>El mismo script que serv\u00eda para probar la idea comenz\u00f3 a mostrar sus l\u00edmites. La aplicaci\u00f3n monol\u00edtica creci\u00f3 hasta superar las 1.500 l\u00edneas en un \u00fanico archivo. Las llamadas cURL pod\u00edan sufrir timeouts, no exist\u00eda una persistencia s\u00f3lida para reconocer noticias ya procesadas y todo estaba pensado para un solo sitio.<\/p>\n<p>El problema m\u00e1s grande no era solamente que el c\u00f3digo resultara dif\u00edcil de mantener. Era que la herramienta estaba atada a Lomas de Taf\u00ed. No hab\u00eda una forma limpia de conectar otro WordPress, separar organizaciones, administrar usuarios o conservar configuraciones editoriales diferentes. Cada nuevo medio habr\u00eda exigido agregar m\u00e1s excepciones al mismo script.<\/p>\n<p>Tambi\u00e9n aprendimos algo sobre la automatizaci\u00f3n editorial: extraer una noticia no es lo mismo que dirigir una redacci\u00f3n. Hab\u00eda que controlar:<\/p>\n<ul>\n<li>\n<p>qu\u00e9 fuentes se le\u00edan;<\/p>\n<\/li>\n<li>\n<p>qu\u00e9 informaci\u00f3n se consideraba relevante;<\/p>\n<\/li>\n<li>\n<p>c\u00f3mo se evitaban duplicados;<\/p>\n<\/li>\n<li>\n<p>qui\u00e9n firmaba cada art\u00edculo;<\/p>\n<\/li>\n<li>\n<p>en qu\u00e9 momento se publicaba.<\/p>\n<\/li>\n<\/ul>\n<h2>La decisi\u00f3n de independizar el sistema<\/h2>\n<p>Durante agosto apareci\u00f3 una decisi\u00f3n que cambi\u00f3 el rumbo del proyecto. La herramienta ya no deb\u00eda ser solamente una soluci\u00f3n interna para un portal local. Si otros clientes pod\u00edan necesitar el mismo tipo de automatizaci\u00f3n, el motor deb\u00eda independizarse y convertirse en una plataforma editorial.<\/p>\n<p>La decisi\u00f3n no consisti\u00f3 en tirar todo lo anterior. El prototipo hab\u00eda permitido probar los scrapers, los prompts, la conexi\u00f3n con WordPress y varios criterios de redacci\u00f3n. Esas piezas ten\u00edan valor. Lo que hab\u00eda que cambiar era la base que las organizaba: autenticaci\u00f3n, organizaciones, aislamiento de datos, colas de trabajo, manejo de errores y un panel que pudiera ser utilizado por distintos medios.<\/p>\n<p>Por eso PrensaBot comenz\u00f3 a avanzar hacia una arquitectura SaaS sobre <strong>Laravel y Filament<\/strong>. La plataforma pod\u00eda conservar los aprendizajes del primer script, pero incorporaba una estructura preparada para conectar m\u00e1s de un WordPress y mantener separadas sus fuentes, periodistas, categor\u00edas y art\u00edculos.<\/p>\n<h2>Lo que aprendimos<\/h2>\n<p>El primer script no fue un fracaso. Fue un prototipo que cumpli\u00f3 su funci\u00f3n: permiti\u00f3 comprobar que el problema exist\u00eda y que la automatizaci\u00f3n pod\u00eda resolver una parte concreta del trabajo editorial. Tambi\u00e9n nos mostr\u00f3 cu\u00e1ndo dejar de agregar parches y empezar a construir una base diferente.<\/p>\n<p>La lecci\u00f3n principal fue simple: una herramienta puede nacer para un sitio y, si la necesidad se repite, transformarse en una plataforma. Pero ese salto exige separar lo que ya fue probado de lo que solamente era una soluci\u00f3n provisoria.<\/p>\n<p><strong>PrensaBot naci\u00f3 de esa tensi\u00f3n:<\/strong> resolver un problema cotidiano, probar r\u00e1pido, equivocarse con hechos concretos y convertir cada l\u00edmite del prototipo en una decisi\u00f3n de dise\u00f1o para el sistema que vendr\u00eda despu\u00e9s.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>PrensaBot naci\u00f3 para resolver una tarea concreta: dejar de copiar noticias y eventos a mano. El primer prototipo funcion\u00f3, pero tambi\u00e9n mostr\u00f3 r\u00e1pidamente los l\u00edmites de un script monol\u00edtico.<\/p>\n","protected":false},"author":2,"featured_media":18,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[3],"tags":[],"class_list":["post-7","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-historia-y-producto"],"_links":{"self":[{"href":"https:\/\/prensabot.com\/blog\/wp-json\/wp\/v2\/posts\/7","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prensabot.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prensabot.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prensabot.com\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/prensabot.com\/blog\/wp-json\/wp\/v2\/comments?post=7"}],"version-history":[{"count":2,"href":"https:\/\/prensabot.com\/blog\/wp-json\/wp\/v2\/posts\/7\/revisions"}],"predecessor-version":[{"id":11,"href":"https:\/\/prensabot.com\/blog\/wp-json\/wp\/v2\/posts\/7\/revisions\/11"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prensabot.com\/blog\/wp-json\/wp\/v2\/media\/18"}],"wp:attachment":[{"href":"https:\/\/prensabot.com\/blog\/wp-json\/wp\/v2\/media?parent=7"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prensabot.com\/blog\/wp-json\/wp\/v2\/categories?post=7"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prensabot.com\/blog\/wp-json\/wp\/v2\/tags?post=7"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}