CytrexSGR/news-microservices

GitHub: CytrexSGR/news-microservices

一个生产级的新闻情报平台,通过 34 个微服务将 RSS 订阅源经 AI 分析管道处理后构建知识图谱并生成自动化情报简报。

Stars: 0 | Forks: 0

# News MCP — 模块化新闻情报平台 ![Services](https://img.shields.io/badge/services-34-blue) ![Python](https://img.shields.io/badge/Python-3.11+-blue) ![FastAPI](https://img.shields.io/badge/FastAPI-0.104+-009688) ![React](https://img.shields.io/badge/React-18-61DAFB) ![License](https://img.shields.io/badge/License-AGPL--3.0-blue) ![Docker](https://img.shields.io/badge/Docker-Compose-2496ED) 一个生产级的新闻情报平台,可摄取 RSS/Atom 订阅源,通过多阶段 AI 分析管道进行处理,根据 Wikidata 解析和去重实体,构建知识图谱,实时聚类新闻故事,检测叙事和偏见,并生成自动化情报简报——所有功能均作为独立可部署的微服务,通过 RabbitMQ 连接。 ## 架构 ### 服务地图 ``` ┌─────────────────────────────────────────────────────────────────────────────────┐ │ INGESTION LAYER │ │ │ │ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │ │ │ feed-service │ │ scraping- │ │ mediastack- │ │ research- │ │ │ │ :8101 │ │ service │ │ service │ │ service │ │ │ │ RSS/Atom │ │ Headless │ │ :8120 │ │ :8103 │ │ │ │ 61+ feeds │ │ Browser │ │ News API │ │ Perplexity │ │ │ └──────┬───────┘ └──────┬───────┘ └──────┬───────┘ └──────┬───────┘ │ │ └──────────────────┴─────────────────┴─────────────────┘ │ │ │ │ │ ▼ │ │ ┌────────────────────────┐ │ │ │ RabbitMQ Event Bus │ │ │ │ 12 Exchanges │ │ │ └───────────┬────────────┘ │ │ │ │ ├────────────────────────────────────┼────────────────────────────────────────────┤ │ ANALYSIS LAYER │ │ │ │ │ ┌───────────────────────────────┼───────────────────────────────┐ │ │ ▼ ▼ ▼ │ │ ┌──────────────┐ ┌──────────────────────┐ ┌──────────────┐ │ │ │content- │ │ entity- │ │ narrative- │ │ │ │analysis-v3 │ │ canonicalization │ │ service │ │ │ │ :8117 │ │ :8112 │ │ :8119 │ │ │ │ 4-Tier AI │ │ 5-Stage Dedup │ │ Frame/Bias │ │ │ │ Triage→Spec │ │ Wikidata │ │ Propaganda │ │ │ └──────┬───────┘ └──────────┬───────────┘ └──────┬───────┘ │ │ └──────────────────────┼──────────────────────┘ │ │ ▼ │ ├────────────────────────────────┼────────────────────────────────────────────────┤ │ INTELLIGENCE LAYER │ │ │ │ │ ┌──────────────┐ ┌──────────┴───┐ ┌──────────────┐ ┌──────────────┐ │ │ │ intelligence │ │ clustering- │ │ sitrep- │ │ knowledge- │ │ │ │ service │ │ service │ │ service │ │ graph │ │ │ │ :8118 │ │ :8122 │ │ :8123 │ │ :8111 │ │ │ │ Risk/Events │ │ UMAP+HDBSCAN│ │ AI Briefings │ │ Neo4j │ │ │ │ Overview │ │ Burst Detect │ │ Daily/Weekly │ │ Entity Rels │ │ │ └──────────────┘ └─────────────┘ └──────────────┘ └──────────────┘ │ │ │ ├─────────────────────────────────────────────────────────────────────────────────┤ │ PLATFORM LAYER │ │ │ │ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌────────┐ │ │ │ auth │ │ search │ │analytics │ │scheduler │ │ osint │ │ llm- │ │ │ │ :8100 │ │ :8106 │ │ :8107 │ │ :8108 │ │ :8104 │ │ orch │ │ │ │ JWT/RBAC │ │ FT+Sem │ │ Trends │ │ 40+ Cron │ │ 50+ Tpl │ │ :8121 │ │ │ └──────────┘ └──────────┘ └──────────┘ └──────────┘ └──────────┘ └────────┘ │ │ │ │ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌────────────────────┐ │ │ │ fmp │ │prediction│ │ ontology │ │ geoloc │ │ 8 MCP Servers │ │ │ │ :8113 │ │ :8116 │ │ :8109 │ │ :8115 │ │ :9001-9008 │ │ │ │ Markets │ │ Signals │ │ Schema │ │ GeoResolv│ │ 200+ AI Tools │ │ │ └──────────┘ └──────────┘ └──────────┘ └──────────┘ └────────────────────┘ │ │ │ ├─────────────────────────────────────────────────────────────────────────────────┤ │ DATA LAYER │ │ │ │ ┌──────────────────┐ ┌──────────────┐ ┌──────────┐ ┌──────────┐ │ │ │ PostgreSQL │ │ Neo4j │ │ Redis │ │ n8n │ │ │ │ 80+ tables │ │ Graph DB │ │ Cache │ │ :5678 │ │ │ │ Shared Schema │ │ Entities │ │ :6379 │ │ Workflows│ │ │ └──────────────────┘ └──────────────┘ └──────────┘ └──────────┘ │ │ │ │ ┌──────────────────┐ ┌──────────────┐ ┌──────────────────────────┐ │ │ │ Prometheus │ │ Grafana │ │ React Frontend :3000 │ │ │ │ Metrics │ │ Dashboards │ │ KG Admin, Trading UI │ │ │ └──────────────────┘ └──────────────┘ └──────────────────────────┘ │ │ │ └─────────────────────────────────────────────────────────────────────────────────┘ Total: 30 Services │ 8 MCP Servers │ 200+ AI Tools │ 250+ API Endpoints │ 57 Containers ``` ### 情报管道 ``` ┌─────────────────────────────────────────────────┐ │ News MCP Platform │ └─────────────────────────────────────────────────┘ ┌──────────┐ ┌──────────────┐ ┌─────────────────────┐ ┌───────────────────┐ │ RSS/Atom │───►│ Feed Service │───►│ Triage (Tier 0) │───►│ Foundation (T1) │ │ 61+ Feeds│ │ Circuit Break│ │ Keep/Discard │ │ Entities, Topics │ │ │ │ Celery Workers│ │ Priority 0-10 │ │ Impact, Urgency │ └──────────┘ │ Dedup (SHA256)│ │ 60% filtered out │ └────────┬──────────┘ └──────────────┘ └─────────────────────┘ │ ┌──────────────────────────────────────────────────────────────────┘ │ ▼ ┌─────────────────────┐ ┌──────────────────────┐ ┌──────────────────────┐ │ Specialist (Tier 2) │───►│ Entity Canonicalize │───►│ Knowledge Graph │ │ 6 Analysis Modules │ │ 5-Stage Pipeline │ │ Neo4j │ │ Weighted Budgets │ │ Fuzzy + Semantic │ │ Entity Relations │ │ 94.5% token savings │ │ Wikidata Enrichment │ │ Analytics APIs │ └─────────────────────┘ └──────────────────────┘ └──────────────────────┘ │ ▼ ┌─────────────────────┐ ┌──────────────────────┐ ┌──────────────────────┐ │ Clustering │───►│ Narrative Analysis │───►│ SITREP Generator │ │ Single-Pass (O(n)) │ │ Frame Detection │ │ GPT-4 Briefings │ │ UMAP + HDBSCAN │ │ Bias Scoring │ │ Daily + On-Demand │ │ Burst Detection │ │ Propaganda Detection │ │ Risk Assessments │ └─────────────────────┘ └──────────────────────┘ └──────────────────────┘ ┌──────────────────────────────────────────────────────────────────────────────┐ │ RabbitMQ Event Bus (12 Exchanges) │ │ PostgreSQL (80+ tables) │ Neo4j (Graph) │ Redis (Cache) │ └──────────────────────────────────────────────────────────────────────────────┘ ``` ## 核心功能 ### 订阅源管理与摄取 - **RSS/Atom 订阅源管理器** — 61+ 订阅源的完整 CRUD 操作,包含健康监控、质量评分和调度优化 - **来源评估** — Admiralty 代码系统(A-F 可靠性评级),可配置阈值和可信度评分 - **智能调度** — 每个订阅源的获取间隔,包含熔断器、指数退避和调度优化 - **内容去重** — SHA-256 哈希去重 + 近似重复检测,配合 HITL(人在环中)审核队列 - **全文抓取** — 通过无头浏览器提取被截断或付费墙遮挡的文章(通过 scraping-service) - **死信队列** — 失败消息保留以供调查和重放 - **MediaStack 集成** — 通过 MediaStack API 和 n8n 工作流获取替代新闻源 ### AI 分析管道(四层递进) - **第 0 层 — 分诊**(约 800 tokens)— 快速保留/丢弃决策,优先级评分 0-10,过滤约 60% 的噪音 - **第 1 层 — 基础**(约 2,000 tokens)— 核心实体/关系/主题提取,影响/可信度/紧急程度评分 - **第 2 层 — 专家**(约 8,000 tokens)— 6 个专业分析模块,加权预算分配,通过快速检查在无关内容上节省 94.5% 的 tokens - **第 3 层 — 情报**(计划中)— 事件时间线构建,跨文章综合 - **多 LLM 支持** — 可插拔的提供商:OpenAI(默认 GPT-4o-mini)、Anthropic(Claude)、Ollama(本地) - **节省 96.7% 成本** — V3 管道每篇文章成本 $0.00028,而 V2 为 $0.0085 ### 实体解析与知识图谱 - **五阶段规范化** — 精确匹配 → 模糊匹配 → 语义相似度 → Wikidata 丰富 → 批量重处理 - **Wikidata 集成** — 自动化实体链接和元数据丰富 - **Neo4j 知识图谱** — 实体关系,从分析管道自动摄取 - **本体提案** — OSS(本体建议系统),用于模式演化的提案/审核工作流 ### 情报与聚类 - **风险评分与事件检测** — 实时全局风险计算(0-100),从文本自动检测事件,情报概览仪表板 - **双模式聚类** — 实时文章分组的单次遍历 O(n) + 用于语义主题发现的 UMAP/HDBSCAN 批量处理 - **突发检测** — 基于增长率的自动突发新闻识别(Welford 算法),带有确认/忽略工作流 - **语义画像** — 自定义主题画像,通过嵌入与实时聚类匹配 - **升级分析** — 跨聚类的聚合升级摘要 - **21,000+ 活跃聚类** — 具有时间衰减排名的故事分组 ### 叙事情报 - **框架检测** — 识别每篇文章的叙事框架:受害者、英雄、威胁、解决方案、冲突、经济 - **政治偏见评分** — 从左到右的光谱分析,带置信度分数 - **宣传检测** — 自动化宣传模式识别 - **叙事网关** — 跨叙事分析结果的聚合层 - **SITREP 生成** — AI 生成的情况报告(每日/每周/突发),包含关键进展、风险评估和情感分析 ### 开源情报与研究 - **开源情报服务** — 50+ 调查模板,APScheduler 驱动的监控,异常检测钩子 - **研究自动化** — Perplexity AI 集成,带模板和成本跟踪 - **LLM 编排器** — DIA(动态情报增强),带两阶段规划,用于 AI 驱动的验证 - **地理位置提取** — 从文章内容进行地理实体解析和映射 ### 搜索与分析 - **全文 + 语义搜索** — 实时索引,高级查询(AND/OR/短语),通过嵌入的语义相似度,自动补全 - **保存的搜索** — 持久化搜索配置,带计划执行 - **实体图搜索** — Neo4j 支持的实体连接,关系路径,文章-实体链接 - **分析服务** — 趋势分析,情报信号,仪表板指标,生产优化查询 - **搜索历史** — 带有管理 API 的用户级搜索历史 ### 财务与预测分析 - **FMP 服务** — Financial Modeling Prep 集成:宏观指标、市场指数、部门数据,用于上下文丰富 - **预测服务** — 预测分析引擎,带交易信号、共识预测、策略回测 - **策略实验室** — 用于探索和调试预测策略的前端 ### 警报与投递 - **Telegram 警报** — 高紧张度叙事警报、突发新闻爆发,通过 n8n → Telegram Bot 投递 SITREP - **多渠道** — Telegram、Slack、Discord、Email、Webhooks — 全部通过 n8n 原生集成 ### 工作流自动化 - **n8n 集成** — 可视化工作流引擎,用于订阅源编排、内容管道、警报路由和计划任务 - **MediaStack 工作流** — 通过 n8n → MediaStack API → 订阅源摄取实现自动化新闻发现 ### 平台与集成 - **8 个 MCP 服务器** — 通过模型上下文协议提供 200+ 工具,用于 AI 代理集成(情报、搜索、分析、知识图谱、内容、核心、集成、编排) - **React 前端** — 知识图谱管理、实体管理、交易信号、策略调试器 - **认证与 RBAC** — JWT 访问/刷新令牌、API 密钥、每服务密钥、基于角色的访问 - **Nexus 代理** — 用于跨服务编排的自主代理 - **可观测性** — 每个服务的 Prometheus 指标、Grafana 仪表板、Loki 日志聚合 ## 技术栈 | 层级 | 技术 | |-------|-----------| | 后端 | Python 3.11+, FastAPI, Celery, SQLAlchemy 2.0 | | 前端 | React 18, TypeScript, Vite | | 数据库 | PostgreSQL(80+ 表), Neo4j(知识图谱)| | 消息队列 | RabbitMQ(12 个交换机,事件驱动)| | 缓存 | Redis | | AI/ML | OpenAI, Anthropic, Ollama, Perplexity, UMAP, HDBSCAN | | 工作流自动化 | n8n(可视化工作流引擎)| | 编排 | Docker Compose, Kubernetes(Tilt)| | 监控 | Prometheus, Grafana, Loki | ## 服务概览 | 服务 | 端口 | 用途 | |---------|------|---------| | **核心** | | | | auth-service | 8100 | JWT 认证、API 密钥、RBAC、密钥轮换 | | feed-service | 8101 | RSS/Atom 订阅源管理、摄取、HITL 审核、Admiralty 代码 | | search-service | 8106 | 全文 + 语义搜索、保存的搜索、实体图查询 | | scheduler-service | 8108 | Cron 任务、订阅源监控、实体去重调度 | | **分析与情报** | | | | content-analysis-v3 | 8117 | 四层 AI 分析管道(分诊 → 基础 → 专家)| | intelligence | 8118 | 风险评分、事件检测、情报概览 | | clustering-service | 8122 | 双模式聚类、突发检测、语义画像、升级 | | sitrep-service | 8123 | AI 生成的情报简报(每日/每周/突发)| | **知识与实体** | | | | entity-canonicalization | 8112 | 五阶段实体去重、模糊匹配、Wikidata、批量处理 | | knowledge-graph | 8111 | Neo4j 实体图、分析 API、手动丰富 | | ontology-proposals | 8109 | 模式演化提案 + 审核工作流 | | oss-service | 8110 | 本体建议系统 | | **财务与预测** | | | | fmp-service | 8113 | Financial Modeling Prep:宏观指标、市场数据 | | prediction-service | 8116 | 预测分析、交易信号、共识 | | **叙事与地理位置** | | | | narrative-service | 8119 | 框架检测、偏见分析、宣传检测 | | narrative-intel-gateway | 8114 | 叙事分析聚合 | | geolocation-service | 8115 | 地理实体解析 + 可视化 | | **数据获取** | | | | scraping-service | — | 无头浏览器全文内容提取 | | research-service | 8103 | Perplexity AI 研究自动化 | | mediastack-service | 8120 | MediaStack 新闻 API 包装器 | | **分析与监控** | | | | analytics-service | 8107 | 趋势分析、仪表板、情报信号 | | **编排与代理** | | | | llm-orchestrator | 8121 | 多 LLM 编排、DIA 验证 | | nexus-agent | 8124 | 用于跨服务任务的自主 AI 副驾驶 | | osint-service | 8104 | 50+ 开源情报调查模板、异常监控 | | **MCP 服务器** | 9001-9008 | 8 个服务器,200+ 工具用于 AI 代理集成 | ## 快速开始 ### 前置条件 - Docker 与 Docker Compose - Python 3.11+(用于本地开发) - Node.js 18+(用于前端) ### 快速启动 ``` git clone https://github.com/CytrexSGR/news-microservices.git cd news-microservices cp .env.example .env # Add your API keys docker compose up --build ``` ### 配置 将 `.env.example` 复制到 `.env` 并配置: ``` # 内容分析所需(选择一个或多个) OPENAI_API_KEY=sk-... # GPT-4o-mini for triage + analysis ANTHROPIC_API_KEY=sk-ant-... # optional, multi-provider support # 或使用 Ollama 运行完全本地化的 LLM(无需 API 密钥) # 可选集成 PERPLEXITY_API_KEY=pplx-... # for research automation FMP_API_KEY=... # for financial market data # 数据库(默认配置适用于 Docker Compose) DATABASE_URL=postgresql+asyncpg://news_user:your_db_password@postgres:5432/news_mcp ``` ### 访问点 | 服务 | URL | |---------|-----| | 前端 | http://localhost:3000 | | 认证 API | http://localhost:8100 | | 订阅源 API | http://localhost:8101 | | 内容分析 | http://localhost:8117 | | 知识图谱 | http://localhost:8111 | | 搜索 | http://localhost:8106 | | 分析 | http://localhost:8107 | | RabbitMQ 管理 | http://localhost:15672 | | Neo4j 浏览器 | http://localhost:7474 | | n8n 工作流编辑器 | http://localhost:5678 | ## 项目结构 ``` news-microservices/ ├── services/ # 30 FastAPI microservices │ ├── feed-service/ # RSS/Atom ingestion + management │ ├── content-analysis-v3/ # 4-tier AI analysis pipeline │ ├── entity-canonicalization-service/ # 5-stage entity dedup │ ├── knowledge-graph-service/# Neo4j graph + analytics │ ├── clustering-service/ # UMAP/HDBSCAN + real-time clustering │ ├── narrative-service/ # Frame, bias, propaganda detection │ ├── sitrep-service/ # AI intelligence briefings │ ├── search-service/ # Full-text search + indexing │ ├── analytics-service/ # Trend analytics + metrics │ ├── research-service/ # Perplexity AI integration │ ├── osint-service/ # OSINT monitoring + templates │ ├── auth-service/ # JWT auth, API keys, RBAC │ ├── mcp-*-server/ (x8) # Model Context Protocol servers │ └── ... # + scheduler, scraping, notifications, etc. ├── frontend/ # React 18 + Vite + TypeScript ├── shared/ # Shared packages (auth, events, DB helpers) ├── gateway/ # API gateway configuration ├── k8s/ # Kubernetes manifests + Tilt ├── monitoring/ # Prometheus, Grafana, Loki configs ├── scripts/ # Maintenance, backfill, migration scripts ├── tests/ # Cross-service integration + e2e tests ├── docker-compose.yml # Full stack (57 containers) ├── Makefile # lint, test, build, deploy └── Tiltfile # Live-reload K8s development ``` ## 文档 - **[ARCHITECTURE.md](ARCHITECTURE.md)** — 完整系统架构、数据流、数据库模式 - **[docs/guides/](docs/guides/)** — 部署、安全、扩展、备份指南 - **[docs/services/](docs/services/)** — 各服务文档 - **[docs/api/](docs/api/)** — API 参考 - **[docs/architecture/](docs/architecture/)** — 设计决策、事件驱动模式 ## 贡献 1. Fork 仓库 2. 创建功能分支 3. 运行代码检查与测试:`make lint && make test` 4. 提交 pull request 请参阅各服务的 README 以获取具体服务的开发说明。 ## 许可证 **双许可证:** - **AGPL v3** — 开源、互惠版税。如果您作为服务运行此软件,必须发布您的修改。 - **商业许可证** — 用于无需 AGPL 义务的专有使用,[联系 CytrexSGR](https://github.com/CytrexSGR)。 详见 [LICENSE](LICENSE)。 ## 作者 **Andreas** — 架构、设计、方向 **[Claude Code](https://claude.ai/code)**(Anthropic)— 实现合作伙伴
标签:AI分析, AI风险缓解, Atom订阅, AV绕过, Docker, ESC4, FastAPI, OSINT, Python, RabbitMQ, React, RSS订阅, Syscalls, Wikidata, 偏见分析, 分布式系统, 叙事检测, 响应大小分析, 多阶段处理, 安全防御评估, 实体消重, 实体规范化, 实时分析, 微服务架构, 情报简报, 搜索引擎查询, 故事聚类, 数据处理管道, 数据管道, 新闻情报平台, 新闻聚合, 无后门, 机器学习管道, 测试用例, 版权保护, 自动化情报, 自定义请求头, 自托管, 软件工程