Skip to content

raulfdeztdo/kernelia

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

93 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Contributors Forks Issues License Release


Kernelia

Agregador de noticias sobre Inteligencia Artificial, clasificadas y resumidas automáticamente.
kernelia.dev » · Reportar Bug · Solicitar Funcionalidad

Kernelia banner

Next.js TypeScript React Tailwind CSS Supabase Drizzle ORM Cerebras Vercel pnpm

Tabla de contenidos
  1. Sobre el proyecto
  2. Stack
  3. Funcionalidades
  4. Cómo funciona
  5. Estado del proyecto
  6. Licencia
  7. Contacto

Sobre el proyecto

Cada día salen decenas de novedades sobre Inteligencia Artificial repartidas por blogs, medios y feeds de empresas. Mantenerse al día sin sobrecargarse es difícil: una parte del contenido se repite, otra es ruido y lo verdaderamente relevante se pierde en el medio.

Kernelia recopila publicaciones de medios de referencia sobre IA, las deduplica, las clasifica por categoría y genera un resumen breve mediante un agente IA. La web pública muestra las noticias más recientes primero, con filtros por categoría y búsqueda libre. Sin login: cualquiera puede visitarla. Las más relevantes se publican automáticamente en Mastodon, Bluesky y Telegram.

¿Por qué este proyecto?

  • Sin ruido — Las noticias se clasifican en 10 categorías concretas y se resumen, para escanear el feed en segundos.
  • Auto-mantenido — Un cron ingesta nuevas publicaciones cada 3h, el agente IA las clasifica cada 30min y el broadcaster las distribuye a redes sociales sin intervención humana.
  • Bilingüe — Interfaz nativa en español e inglés. Títulos y resúmenes generados en ambos idiomas por el agente.
  • Newsletter semanal — Digest opcional cada domingo con los artículos más relevantes de la semana.
  • Coste cero — Stack íntegramente en planes gratuitos (Vercel + Supabase + Cerebras + Resend).

Stack

Capa Tecnología
Framework Next.js 15 (App Router, RSC)
Lenguaje TypeScript estricto
UI Tailwind v4 + shadcn/ui
i18n next-intl (ES default, EN)
Base de datos Supabase Postgres
ORM Drizzle
LLM Cerebras llama3.1-8b — SDK OpenAI-compatible
Ingesta rss-parser
Validación Zod
Email Resend
Broadcaster Mastodon · Bluesky · Telegram
Hosting Vercel (Hobby)
Cron GitHub Actions
Tests Vitest + Playwright

Funcionalidades

Feed público:

  • Listado de noticias — Ordenado por fecha descendente, paginación append-style sin recarga.
  • Filtros por categoría — Multi-selección: LLMs, agentes, investigación, productos, robótica, regulación, seguridad, multimodal, coding AI, otros.
  • Búsqueda libre — Por palabras clave en título y resumen, con debounce en cliente e ILIKE en servidor.
  • UI bilingüe — Español por defecto, inglés disponible. Títulos y resúmenes generados en ambos idiomas.
  • SEO — Metadata por locale (OG, canonical, hreflang + x-default), sitemap.xml, robots.txt.
  • RSS/rss.xml?lang=es|en con los últimos artículos clasificados.
  • Stats públicas/api/stats con métricas abiertas (artículos, tokens, actividad).
  • Share buttons — Copiar enlace, compartir por email, compartir en Mastodon.
  • Newsletter — Suscripción opcional con double opt-in. Digest semanal cada domingo.

Pipeline automático:

  • Ingesta — Cada 3h lee 15+ fuentes RSS, normaliza URLs, deduplica por hash SHA-256.
  • Clasificación — Cada 30min procesa lotes de artículos pending con Cerebras: categoría + resumen en ES y EN + relevance score, validados con Zod antes de persistir. Cola round-robin por fuente para evitar monopolios.
  • Broadcaster — Publica artículos con relevance_score >= 0.75 en Mastodon, Bluesky y Telegram. Idempotencia por (article_id, platform).

Cómo funciona

  GitHub Actions (cada 3h)          GitHub Actions (cada 30min)
         │                                    │
         │ GET /api/cron/ingest               │ GET /api/cron/classify
         ▼                                    ▼
  ┌─────────────────┐             ┌─────────────────────┐
  │  Fuentes RSS    │──── feeds ─▶│  Ingest              │
  │  (15+ medios)   │             │  - rss-parser        │
  └─────────────────┘             │  - canonicaliza URL  │
                                  │  - hash dedupe       │
                                  └──────────┬───────────┘
                                             │ insert pending
                                             ▼
                                  ┌──────────────────────┐
                                  │  Supabase Postgres    │
                                  │  (Drizzle ORM)        │
                                  └──────┬────────────────┘
                                         │ select pending (round-robin)
                                         ▼
  ┌─────────────────┐         ┌──────────────────────────┐
  │  Cerebras LLM   │◀────────│  Classify agent           │
  │  (llama3.1-8b)  │         │  - prompt + Zod schema   │
  └────────┬────────┘         │  - category + summary    │
           │                  │  - ES + EN + score        │
           └──── classified ──▶  update articles          │
                                  └──────────┬────────────┘
                                             │ relevance_score >= 0.75
                                             ▼
                                  ┌──────────────────────┐
                                  │  Broadcaster          │
                                  │  - Mastodon           │
                                  │  - Bluesky            │
                                  │  - Telegram           │
                                  └──────────────────────┘
                                             │
                                             ▼
                                  ┌──────────────────────┐
                                  │  Next.js (App Router) │
                                  │  - RSC + i18n         │
                                  │  - filtros + búsqueda │
                                  │  - RSS + sitemap      │
                                  └──────────────────────┘

El frontend solo lee. La ingesta, clasificación y distribución viven en endpoints protegidos que GitHub Actions invoca periódicamente. Toda la lógica de dominio está en lib/ingest/, lib/ai/ y lib/broadcast/, separada de la capa de UI.

Estado del proyecto

El plan de ejecución vivo está en PLAN.md.

Fase Estado
0 — Limpieza y rebranding ✅ done
1 — Bootstrap Next.js ✅ done
2 — Modelo de datos e ingesta RSS ✅ done
3 — Agente IA (Cerebras) ✅ done
4 — Web: listado, filtros, búsqueda ✅ done
5 — Pulido, SEO, accesibilidad ✅ done
6 — Release v0.1.0 a producción ✅ done
7 — Backoffice admin (auth + panel) ✅ done
8 — Distribución y propagación ⏳ in progress

Licencia

Distribuido bajo la licencia MIT. Ver LICENSE para más información.

Contacto

Raúl Fernández Tirado — @raulfdeztdo

Repositorio: https://github.com/raulfdeztdo/kernelia

About

Agregador de noticias sobre IA, clasificadas y resumidas automáticamente. Bilingüe ES/EN.

Topics

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages