Quería un feed de noticias con mi criterio de siempre —tecnología, IA, motor, videojuegos— sin depender de que Google Discover o una app genérica decidieran qué me enseñan. La idea salió en un brainstorming con Claude y, a diferencia de otros candidatos que se quedaron en documento, esta se construyó y se desplegó en la misma sesión que se aprobó. Hoy es un producto con nueve temas, curación real, piezas propias, personalización y notificaciones — todo autoalojado, sin cuentas de terceros de por medio, y se puede visitar en feed.tato9689.com.
Qué es exactamente
Un feed de tarjetas: imagen, titular, subtítulo, franja de color por tema. En escritorio es una rejilla; en móvil, desde la sesión del 5 de septiembre, cada tarjeta ocupa la pantalla entera y el scroll hace tope tarjeta a tarjeta — el mismo gesto que un Reels o un TikTok, aplicado a noticias curadas en vez de a vídeo corto vertical. La estética se llama internamente "Portada de kiosco": papel color hueso, tipografía display muy bold para los titulares (Big Shoulders Display), y cada tema con su propio color, franja lateral incluida, para que reconocer de qué va una tarjeta no exija leer nada.
Nueve categorías en total, ocho de curación de texto más una específica para vídeo de noticiarios:
Los ocho primeros son intereses personales míos, elegidos a propósito frente a un algoritmo que optimizara por clics. Marketing es el más particular: nada de publicidad ni branding genérico —eso es lo que devuelve cualquier búsqueda de "marketing" a secas—, sino marketing digital en concreto: SEM, publicidad en redes, email marketing, automatización y growth. Salud y Militar formaban parte de esta lista hasta el 6 de septiembre de 2026 (ver más abajo por qué salieron).
Cómo decide qué proponer
Nada se publica solo. Un temporizador de sistema corre cada 45 minutos, cruza tres señales sobre lo que traen 50 fuentes RSS mapeadas y deja preparada la mejor candidata — propone, nunca publica. Es HTTP contra feeds, no gasta ninguna llamada a un modelo.
"Lo gordo de hoy"
Señal propia y la que más pesa: varios medios cubriendo la misma noticia, detectado agrupando por palabras significativas compartidas entre titulares, con un umbral mínimo de dos medios coincidiendo.
Social
Reddit (vía su RSS, porque la API JSON bloquea este VPS) y Hacker News, normalizados a un "calor" 0-100. El cruce funciona entre idiomas: casa por nombres propios que sobreviven a la traducción.
Google Trends
Señal secundaria y menor, sobre tendencias de búsqueda en España — de apoyo, no decide sola: se ha medido que la mayoría de tendencias del día no tocan ninguno de los nueve temas.
Las candidatas puntuadas —incluidas las que NO se eligieron— quedan registradas con su desglose de señales tal como estaban en ese momento, no recalculado después. Un proceso semanal compara la media de cada señal entre lo que yo aprobé y lo que descarté, y ajusta los pesos poco a poco: con tope por ronda para que ninguna señal se dispare con el tiempo, y solo si hay un mínimo de decisiones resueltas para que el ajuste tenga base real. Sin datos suficientes, no toca nada y lo dice.
Dos formas de entrar: curada o propia
El botón que enciende cada candidata decide qué tipo de tarjeta sale, y son dos cosas distintas a propósito:
Curada
- La tarjeta enlaza al medio original. Titular, imagen y subtítulo salen de lo que el medio ya publicó — nunca reproduzco el artículo entero, solo enlazo con contexto propio.
- No entra en el sitemap ni en Search Console: es tráfico de salida hacia la prensa, no contenido mío indexable.
- Compartir viaja con el enlace del medio, con "vía Kiosko" en el texto — atribución correcta, no apropiación.
Propia
- Un artículo real en
/p/<slug>, escrito por Claude Code en modo no interactivo a partir del ángulo elegido, con acceso a búsqueda web para documentarse. - Esta sí entra en sitemap y Search Console: es contenido mío, con su propia URL indexable.
- Antes de escribir nada, un paso intermedio genera 3-5 titulares con su ángulo y su porqué — un tema suelto no dispara la escritura a ciegas.
Salud y Militar salieron del feed el 6 de septiembre de 2026, en un pivote hacia SEO, marketing digital y desarrollo web para alinear Kiosko con el resto de mi web. Mientras existió, Salud era la única categoría que nunca generaba pieza propia —solo curación con enlace directo al medio—: era la vertical YMYL (que afecta a la salud del lector) más sensible de todas, y un dominio sin autoridad médica no debería sonar a que da consejos por su cuenta. Lo que de verdad me interesaba de esa categoría, la tecnología aplicada a la salud (wearables, biotecnología), ya lo cubre Tecnología, así que mantener una vertical médica aparte dejó de tener sentido.
El panel de administración
Todo el trabajo editorial pasa por /admin, protegido con la misma contraseña que el resto de mis paneles. Tres piezas hacen la mayor parte del trabajo:
- Candidatas. Lo que el disparador de 45 min preparó, más "Lo gordo de hoy" y "Petando en búsquedas" con sus propios botones de proponer tarjeta o escribir pieza propia. En móvil se deslizan tipo Tinder: izquierda descarta, derecha aprueba.
- Cola de salida. Aprobar no publica al instante — reserva turno y sale una candidata cada 45 minutos como máximo, para no saturar el feed con ráfagas. Si hace más de 45 minutos que no sale nada, la primera pendiente sale al momento.
- Medios. Encender o apagar cada una de las 50 fuentes, ver su salud (última vez que respondió, fallos seguidos) y detectar feeds congelados — que responden con HTTP 200 pero llevan meses sin publicar nada nuevo, el tipo de fallo que no se ve a simple vista porque técnicamente "funciona".
Un mapeador busca medios nuevos con IA y búsqueda web, valida cada feed RSS antes de guardarlo (los modelos se inventan URLs de RSS con más facilidad de la que gustaría) y los deja apagados hasta que yo decida encenderlos. Corre solo cada pocos días, rotando un tema por ronda para no disparar el gasto de golpe, con varios frenos automáticos: si hay demasiadas propuestas sin revisar, no busca más; si el consumo del plan de Claude anda alto, se salta la ronda.
Personalización: reordena, nunca esconde
Con login de Google (solo para quien quiera guardar, votar o descubrir — leer el feed no lo pide), cada persona tiene su propia afinidad por tema, que reordena las tarjetas del feed sin quitar ninguna. La única forma de que una tarjeta desaparezca de verdad es marcarla explícitamente como "No me interesa".
Descubrir
Una baraja aparte, estilo Tinder, para decir sí o no a temas rápido — nunca dentro del feed en sí: un feed se lee, no se clasifica. Aparece en el menú y, la primera vez, justo tras crear la cuenta.
Microlearning
Un cuestionario corto de 3 preguntas cada varias tarjetas, generado a diario y guardado aparte para no contaminar el sitemap. Tiene su propio corte de autoevaluación: si para el 25 de septiembre de 2026 menos del 40% de quienes lo empiezan llega al final, se retira.
Guardar, compartir, votar
Guardar es un estado personal, no una métrica pública. Compartir usa la hoja nativa en móvil. Los pulgares 👍/👎 llevan contador visible en la tarjeta y, a diferencia de la ✕, votar nunca la esconde — son cosas distintas a propósito.
Notificaciones push, la opción más ambiciosa
Cuando tocó elegir cómo avisar de contenido nuevo, la opción barata era un canal de Telegram, ya montado y probado en otros proyectos. Elegí la más ambiciosa a propósito: push nativo del navegador, con claves VAPID propias, service worker y un botón explícito "Activar avisos" — nunca un prompt automático nada más cargar la página. La invitación a activarlas sale tras la cuarta tarjeta leída, no al entrar.
Tocar un aviso lleva directo a la tarjeta correspondiente dentro del feed, con su contorno resaltado en el color de su tema — nunca al medio de fuera. Limitación real, sin resolver: en iPhone el push solo funciona si Kiosko se instala como PWA desde el icono de compartir de Safari; dentro del propio Safari, no llega.
Guardarraíles y encaje legal
Curar prensa ajena tiene un límite legal concreto en España: el derecho conexo de los editores de prensa (RDL 24/2021) protege contra reproducir extractos sustanciales de una noticia, no contra enlazarla con contexto propio. Cada tarjeta curada lleva enlace directo al medio y atribución visible del dominio — nunca el artículo reproducido, ni siquiera la foto de agencia del medio en una URL propia.
El resto de guardarraíles son los mismos que ya aplico en mis proyectos de IA sin supervisión constante, adaptados: ningún medio ni canal nuevo entra activo sin que yo lo revise primero (llegan siempre apagados); ninguna imagen de más de 300 KB; y ningún cambio automático se salta la revisión editorial — este proyecto, a diferencia de AI SEO Battle, nunca corre sin que yo lo apruebe primero.
Arquitectura técnica, de un vistazo
Mismo criterio que el resto de mi stack: autoalojado en mi propio VPS, sin cuentas de terceros nuevas ni facturas por uso salvo lo estrictamente necesario.
Servidor
- Python + FastAPI, plantillas Jinja2, SQLite como base de datos.
- Caddy por delante, mismo patrón que el resto de mis subdominios.
- Login con Google vía OIDC, sesión firmada propia.
Automatización
- Varios temporizadores de systemd en paralelo: cola de salida (cada 5 min), disparador de candidatas (cada 45 min), microlearning diario y mapeo de medios nuevos cada pocos días.
- Piezas propias escritas con
claude -pen modo no interactivo, con permisos acotados y directorio de trabajo temporal — nunca con acceso amplio a la base de datos de producción.
El repositorio vive en GitHub, privado, con historial de commits propio desde el primer día. Search Console está verificado como propiedad independiente, con sitemap real solo de piezas propias.
Por qué existe, y por qué no es AI SEO Battle
Es fácil confundirlos porque comparten motor por debajo —el mismo flujo de "IA propone, aviso por Telegram, apruebo en un panel" que ya usaba mi blog—, pero son proyectos con objetivos distintos. AI SEO Battle es un experimento: cuatro IAs sin supervisión diaria, compitiendo entre ellas, con mi nombre de por medio pero mis manos fuera del día a día. Kiosko es al revés — una extensión de mi propia marca personal, donde la IA hace el trabajo pesado (rastrear, puntuar, proponer, hasta escribir) pero nada sale sin que yo lo revise, igual que el resto de mi blog.