CytrexSGR/news-microservices
GitHub: CytrexSGR/news-microservices
一个生产级的新闻情报平台,通过 34 个微服务将 RSS 订阅源经 AI 分析管道处理后构建知识图谱并生成自动化情报简报。
Stars: 0 | Forks: 0
# News MCP — 模块化新闻情报平台






一个生产级的新闻情报平台,可摄取 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, 偏见分析, 分布式系统, 叙事检测, 响应大小分析, 多阶段处理, 安全防御评估, 实体消重, 实体规范化, 实时分析, 微服务架构, 情报简报, 搜索引擎查询, 故事聚类, 数据处理管道, 数据管道, 新闻情报平台, 新闻聚合, 无后门, 机器学习管道, 测试用例, 版权保护, 自动化情报, 自定义请求头, 自托管, 软件工程