GitHub - iliane5/meridian: Meridian cuts through news noise by scraping hundreds of sources, analyzing stories with AI, and delivering concise, personalized daily briefs.
Extracto
Meridian cuts through news noise by scraping hundreds of sources, analyzing stories with AI, and delivering concise, personalized daily briefs. - iliane5/meridian
Resumen
Resumen Principal
Meridian se posiciona como una agencia de inteligencia personal impulsada por inteligencia artificial, diseñada para democratizar el acceso a briefings de nivel presidencial. Su objetivo central es superar el ruido informativo al rastrear cientos de fuentes, analizar historias con IA y entregar resúmenes diarios concisos y personalizados. La plataforma está construida para el individuo curioso que busca profundidad más allá de los titulares sin la considerable inversión de tiempo que esto implicaría, proveyendo contexto, los impulsores subyacentes y el análisis de las implicaciones de los eventos globales. Utilizando procesamiento de LLM multi-etapa y técnicas avanzadas de clustering, Meridian promete una visión analítica y una continuidad en el seguimiento de noticias, haciendo posible que cualquier persona acceda a una inteligencia de alto nivel que antes estaba reservada para élites. Este enfoque aprovecha la IA no solo para la eficiencia, sino como un socio indispensable en la curación y el análisis a una escala inalcanzable para los humanos.
Elementos Clave
- Metodología de Análisis de Contenido Avanzada: Meridian emplea un sofisticado flujo de trabajo que incluye la recopilación de datos de cientos de fuentes RSS, extracción de contenido compleja que maneja paywalls (vía API de renderizado de navegador), y un análisis multi-etapa con LLMs de Gemini. Este proceso se complementa con clustering inteligente usando Embeddings, UMAP y HDBSCAN para agrupar artículos relacionados, asegurando una visión cohesionada de los eventos.
- Arquitectura Tecnológica Robusta y Escalable: La infraestructura de Meridian se basa en una pila tecnológica moderna y eficiente. Utiliza Cloudflare Workers y Workflows para el scraping y procesamiento, Hono y TypeScript para el backend, PostgreSQL para la base de datos, y una interfaz de usuario limpia construida con Nuxt 3 y Vue 3. La elección de Gemini Models (Flash, Pro) y embeddings como multilingual-e5-small subraya su compromiso con la vanguardia de la IA/ML.
- Colaboración Extensiva con IA en el Desarrollo: El proyecto se benefició significativamente de la asistencia de IA en su fase de desarrollo. Claude 3.7 Sonnet contribuyó al diseño arquitectónico y la refinación de prompts. Gemini 2.5 Pro fue crucial para tareas de contexto largo y la revisión del código, mientras que Gemini 2.0 Flash se identifica como el "héroe anónimo" por su velocidad, bajo costo y capacidad para manejar la carga de trabajo diaria, haciendo el proyecto económicamente viable a escala.
- Filosofía de Democratización y Eficiencia de la Inteligencia: Meridian existe para nivelar el campo de juego, ofreciendo a los individuos las mismas herramientas de inteligencia que los líderes mundiales. Su propuesta de valor se centra en proporcionar profundidad más allá de los titulares sin el consumo de tiempo tradicional, lo cual es posible solo mediante la automatización a escala que ofrece la IA. Esta aproximación no solo ahorra tiempo, sino que permite un análisis de miles de artículos y cientos de clusters de historias que sería inviable para cualquier equipo humano.
Análisis e Implicaciones
Meridian representa un salto cualitativo en la forma en que los individuos pueden interactuar con el panorama informativo global. Al democratizar el acceso a análisis de inteligencia de alto nivel, tiene el potencial de empoderar a los usuarios con una comprensión más profunda y matizada de eventos complejos, fomentando una toma de decisiones más informada y un compromiso cívico más significativo.
Contexto Adicional
El proyecto es de código abierto bajo licencia MIT, reflejando la visión de que la tecnología de IA avanzada debería ser accesible y utilizada para el beneficio general. Fue "Construido porque vivimos en una era de magia, y nos olvidamos de usarla", subrayando una filosofía de aprovechar al máximo las capacidades de la IA moderna.
Contenido
Meridian: Your Personal Intelligence Agency
Presidential-level intelligence briefings, built with AI, tailored for you.
Meridian cuts through news noise by scraping hundreds of sources, analyzing stories with AI, and delivering concise, personalized daily briefs.
Why It Exists
Presidents get tailored daily intelligence briefs. Now with AI, you can too. Meridian delivers:
- Key global events filtered by relevance
- Context and underlying drivers
- Analysis of implications
- Open-source transparency
Built for the curious who want depth beyond headlines without the time sink.
Key Features
- Source Coverage: Hundreds of diverse news sources
- AI Analysis: Multi-stage LLM processing (Gemini) for article and cluster analysis
- Smart Clustering: Embeddings + UMAP + HDBSCAN to group related articles
- Personalized Briefing: Daily brief with analytical voice and continuity tracking
- Web Interface: Clean Nuxt 3 frontend
How It Works
graph TD
A[RSS Feed URLs] --> B(Scraper Workflow CF);
B --> C[Article Metadata DB];
C --> D(Article Processor Workflow CF);
D -- Fetches --> E{Content Extraction};
E -- Standard --> F[Direct Fetch];
E -- Complex/Paywall --> G[Browser Rendering API];
F --> H[LLM Article Analysis];
G --> H;
H --> I[Processed Articles DB];
I --> J(Brief Generation Python);
J -- Embeddings --> K[UMAP/HDBSCAN Clustering];
K --> L[LLM Cluster Review];
L --> M[LLM Deep Analysis JSON];
M --> N[Markdown Summary Generation];
O[Previous Day TLDR DB] --> P{Final Briefing LLM};
N --> P;
P --> Q[Final Brief Markdown];
Q --> R[Reports DB];
R --> S(Frontend API CF);
S --> T[Frontend UI Nuxt];
- Scraping: Cloudflare Workers fetch RSS feeds, store metadata
- Processing: Extract text, analyze with Gemini for relevance and structure
- Brief Generation: Cluster articles, generate analysis, synthesize final brief
- Frontend: Display briefs via Nuxt/Cloudflare
Tech Stack
- Infrastructure: Turborepo, Cloudflare (Workers, Workflows, Pages)
- Backend: Hono, TypeScript, PostgreSQL, Drizzle
- AI/ML: Gemini models, multilingual-e5-small embeddings, UMAP, HDBSCAN
- Frontend: Nuxt 3, Vue 3, Tailwind
Setup
Prerequisites: Node.js v22+, pnpm v9.15+, Python 3.10+, PostgreSQL, Cloudflare account, Google AI API key
git clone https://github.com/iliane5/meridian.git cd meridian pnpm install # Configure .env files pnpm --filter @meridian/database db:migrate # Deploy via Wrangler, run Python briefing notebook manually
Status & Next Steps
- ✅ Core Pipeline: Scraping, processing, analysis working
- ⏳ Top Priority: Automate brief generation (currently manual Python notebook)
⚠️ Monitoring: Improve scraping robustness- 🔜 Future: Add testing, newsletter distribution
AI Collaboration
This project benefited significantly from AI assistance:
- Claude 3.7 Sonnet: Contributed to early architecture brainstorming, generated browser js scraping scripts, refined prompts, and called me out when I was overthinking or overengineering.
- Gemini 2.5 Pro: Excelled with long-context tasks - comparing outputs across different prompt variants, reviewing the entire codebase before opensourcing, and nailing the analytical tone for briefs
- Gemini 2.0 Flash: The true unsung hero of this project - blazing fast, dirt cheap, and surprisingly capable when prompted well. It's the workhorse that makes running meridian economically viable without sponsors or grants. Essentially free intelligence at scale.
The first two compressed months of dev work into days and made building this way more fun. But Flash isn't just a time-saver—it's the engine that makes Meridian possible at all. No human is reading 2000+ articles daily and analyzing 100+ story clusters. Having AI peers for brainstorming felt like cheating; having AI workers for the actual intelligence pipeline feels like living in the future.
License
MIT License - See LICENSE file for details.
Built because we live in an age of magic, and we keep forgetting to use it.
Fuente: GitHub
