WorldMonitor:面向地缘政治监控的实时全球情报仪表盘
一个实时的AI驱动全球情报仪表盘,聚合新闻、地缘政治事件和基础设施追踪。59K stars。Palantir Gotham的开源替代方案。
- 更新于 2026-06-25
WorldMonitor:实时全球情报仪表盘 #
WorldMonitor 是一个开源的实时全球情报仪表盘,它将新闻、地缘政治事件和基础设施数据聚合到一个统一的态势感知界面中。凭借 59,524 个 GitHub Stars,它已成为商业平台(如 Palantir Gotham)在地缘政治监控和 OSINT 分析领域的首选开源替代方案。
本文涵盖安装、配置、数据源、API 使用、部署选项以及面向记者、研究人员和安全分析师的实际应用。
TL;DR #
WorldMonitor 将碎片化的全球数据流转化为单一的可操作情报仪表盘。它从 50 多个来源摄取新闻,实时追踪地缘政治事件,监控全球关键基础设施,并提供 AI 驱动的分析和可定制的警报功能。非常适合那些需要全面了解全球事件而不愿支付企业级价格的任何人。
什么是 WorldMonitor? #
WorldMonitor 是一个自托管的情报仪表盘,它将多个数据源整合为一个统一的全球事件视图。与仅仅收集标题的传统新闻聚合器不同,WorldMonitor 应用 AI 驱动的分析来关联事件、检测模式并呈现可操作的情报。
该平台专为需要在多个地理区域和数据类别中获取实时态势感知的记者、研究人员、政策分析师和安全专业人员而设计。它支持个人分析师的单实例部署,也支持团队范围操作的分布式架构。
核心功能包括:
- 多源新闻聚合:从 RSS 订阅源、API 和网络爬虫中聚合来自 50 多个全球新闻来源的内容
- 地缘政治事件追踪:实时地图和时间线可视化
- 基础设施监控:监控关键设施,包括电网、电信塔和交通枢纽
- AI 驱动的相关性引擎:识别看似无关的事件之间的关系
- 可定制警报:基于关键词、地区、事件类型或严重程度阈值
- 历史分析:支持搜索跨数月聚合数据的存档
- API 访问:便于与其他情报工具进行程序化集成
安装指南 #
前置条件 #
在安装 WorldMonitor 之前,请确保您的系统满足以下要求:
- 操作系统:Ubuntu 22.04 LTS、Debian 12 或 macOS 14+
- CPU:最低 4 核(生产环境推荐 8 核)
- 内存:最低 8GB(推荐 16GB)
- 存储:50GB SSD(随数据保留期限增长)
- 网络:需要出站互联网访问以进行数据采集
- 依赖项:Node.js 20+、Python 3.11+、PostgreSQL 15+
选项一:Docker Compose 部署(推荐) #
最快的入门方式是使用提供的 Docker Compose 配置:
git clone https://github.com/koala73/worldmonitor.git
cd worldmonitor
# 复制示例配置文件
cp config.example.yaml config.yaml
# 启动所有服务
docker compose up -d
这将启动应用服务器、PostgreSQL 数据库、Redis 缓存和 Web 前端。默认凭据设置在 .env 文件中——在生产使用前请立即更改它们。
选项二:手动安装 #
对于需要对部署进行精细控制的用户:
# 克隆仓库
git clone https://github.com/koala73/worldmonitor.git
cd worldmonitor
# 安装后端依赖
pip install -r requirements.txt
# 安装前端依赖
cd frontend && npm install && cd ..
# 设置数据库
createdb worldmonitor
psql worldmonitor < migrations/001_init.sql
# 配置应用程序
cp config.example.yaml config.yaml
# 用你的设置编辑 config.yaml
# 运行数据库迁移
python manage.py migrate
# 启动应用服务器
python manage.py runserver 0.0.0.0:8000
# 启动前端(在单独的终端中)
cd frontend && npm run start
选项三:Kubernetes 部署 #
适用于跨多个节点的生产规模部署:
apiVersion: apps/v1
kind: Deployment
metadata:
name: worldmonitor
spec:
replicas: 3
selector:
matchLabels:
app: worldmonitor
template:
metadata:
labels:
app: worldmonitor
spec:
containers:
- name: worldmonitor
image: ghcr.io/koala73/worldmonitor:latest
ports:
- containerPort: 8000
envFrom:
- configMapRef:
name: worldmonitor-config
resources:
requests:
memory: "2Gi"
cpu: "1000m"
limits:
memory: "4Gi"
cpu: "2000m"
配置深入解析 #
数据源配置 #
WorldMonitor 支持多种数据源类型。在 config.yaml 中配置它们:
data_sources:
rss_feeds:
enabled: true
sources:
- name: "Reuters"
url: "https://feeds.reuters.com/reuters/worldNews"
categories: ["politics", "business"]
refresh_interval: 300
- name: "BBC World"
url: "http://feeds.bbci.co.uk/news/world/rss.xml"
categories: ["politics", "health"]
refresh_interval: 300
- name: "Al Jazeera"
url: "https://www.aljazeera.com/xml/rss/all.xml"
categories: ["politics", "conflict"]
refresh_interval: 600
api_feeds:
enabled: true
sources:
- name: "GDELT"
api_key: "${GDELT_API_KEY}"
endpoint: "https://api.gdeltproject.org/api/v2/event/doc"
categories: ["conflict", "political"]
refresh_interval: 900
- name: "ACLED"
api_key: "${ACLED_API_KEY}"
endpoint: "https://api.acled.info/v1/events"
categories: ["conflict", "protest"]
refresh_interval: 3600
web_scrapers:
enabled: true
sources:
- name: "Government Press Releases"
urls:
- "https://www.state.gov/latest-releases/"
- "https://www.un.org/press/en/"
selectors:
title: "h2.article-title"
content: ".article-body"
date: ".article-date"
refresh_interval: 1800
AI 分析管道 #
AI 驱动的分析引擎通过多个阶段处理传入的数据:
from worldmonitor.ai.pipeline import AnalysisPipeline
from worldmonitor.ai.models import EventClassifier, CorrelationEngine
# 初始化分析管道
pipeline = AnalysisPipeline(
classifier=EventClassifier(model="worldmonitor/classifier-v3"),
correlation=CorrelationEngine(model="worldmonitor/correlation-v2"),
embedding_model="worldmonitor/embedding-multilingual"
)
# 处理一批新闻文章
results = await pipeline.process_batch(
articles=batch_data,
min_confidence=0.7,
include_correlations=True
)
# 获取特定区域的关联事件
correlated = await pipeline.get_correlated_events(
region="east_asia",
time_window="24h",
event_types=["political", "economic"]
)
警报配置 #
根据你的监控优先级设置自定义警报:
alerts:
rules:
- name: "重大冲突检测"
conditions:
- field: "event_type"
operator: "eq"
value: "armed_conflict"
- field: "severity"
operator: "gte"
value: 7
actions:
- type: "notification"
channels: ["email", "telegram"]
template: "high_severity_conflict"
- type: "dashboard_highlight"
duration: "3600"
- name: "基础设施中断"
conditions:
- field: "infrastructure_type"
operator: "in"
value: ["power_grid", "telecom", "transport"]
- field: "status"
operator: "eq"
value: "disrupted"
actions:
- type: "notification"
channels: ["email", "slack", "pagerduty"]
template: "infrastructure_alert"
- type: "geopoint_map"
zoom_level: 12
- name: "关键词激增检测"
conditions:
- field: "keywords"
operator: "contains_any"
value: ["sanctions", "embargo", "tariff", "trade_war"]
- field: "volume_change"
operator: "gte"
value: 200
actions:
- type: "notification"
channels: ["email"]
template: "keyword_surge"
cooldown: "1800"
核心功能详解 #
全球新闻聚合引擎 #
WorldMonitor 的新闻聚合引擎从多种语言的 50 多个来源提取数据。系统使用智能去重避免从多个渠道报道同一故事,同时保留对重大事件的地域视角。
# 使用过滤器查询聚合新闻
curl -X GET "https://your-worldmonitor/api/v1/news" \
-H "Authorization: Bearer *** \
-d "region=east_asia&categories=politics,economy&min_severity=5&hours=24"
# 获取去重后的故事
curl -X GET "https://your-worldmonitor/api/v1/news/deduplicated" \
-H "Authorization: Bearer *** \
-d "cluster_window=3600&language=en"
地缘政治事件映射 #
事件以颜色编码的严重程度级别绘制在交互式世界地图上。用户可以按事件类型、地区、日期范围和来源置信度评分进行过滤。时间线视图显示事件进展并识别级联效应。
基础设施追踪模块 #
基础设施模块维护全球关键设施的数据库,包括:
- 发电厂和电网
- 电信塔和光纤线路
- 交通枢纽(机场、海港、火车站)
- 水处理设施
- 数据中心和云基础设施
每个设施都标记有所有权、容量和风险等级。状态变化会触发自动警报和地图更新。
AI 相关性引擎 #
专有相关性引擎识别表面上看似无关的事件之间的关系。例如,它可能检测到某个国家的政治声明与另一个国家的市场波动相关,或者 A 地区的基础设施中断先于 B 地区的类似事件发生。
from worldmonitor.correlation import CorrelationEngine
engine = CorrelationEngine()
# 查找近期事件之间的相关性
correlations = engine.find_correlations(
events=event_list,
max_lag_hours=72,
min_strength=0.6,
correlation_types=["temporal", "geographic", "thematic"]
)
for corr in correlations:
print(f"强度: {corr.strength:.2f}")
print(f"类型: {corr.type}")
print(f"事件: {corr.event_ids}")
print(f"解释: {corr.explanation}")
API 参考 #
WorldMonitor 提供全面的 REST API 用于程序化访问:
认证 #
# 获取 API 令牌
curl -X POST "https://your-worldmonitor/api/v1/auth/login" \
-H "Content-Type: application/json" \
-d '{"username": "admin", "password": "${WM_PASSWORD}"}'
新闻 API #
# 列出最近的新闻(带分页)
curl "https://your-worldmonitor/api/v1/news?page=1&per_page=50" \
-H "Authorization: Bearer ***
# 按地区获取新闻
curl "https://your-worldmonitor/api/v1/news?region=south_asia&date_from=2026-06-01" \
-H "Authorization: Bearer ***
# 按关键词搜索
curl "https://your-worldmonitor/api/v1/news/search?q=trade+sanctions" \
-H "Authorization: Bearer ***
事件 API #
# 列用地缘政治事件
curl "https://your-worldmonitor/api/v1/events?type=political&severity_gte=6" \
-H "Authorization: Bearer ***
# 获取事件详情
curl "https://your-worldmonitor/api/v1/events/EVT-2026-0625-001" \
-H "Authorization: Bearer ***
# 获取事件时间线
curl "https://your-worldmonitor/api/v1/events/EVT-2026-0625-001/timeline" \
-H "Authorization: Bearer ***
警报 API #
# 列出活跃警报
curl "https://your-worldmonitor/api/v1/alerts?status=active" \
-H "Authorization: Bearer ***
# 确认警报
curl -X PUT "https://your-worldmonitor/api/v1/alerts/ALT-001/acknowledge" \
-H "Authorization: Bearer *** \
-H "Content-Type: application/json" \
-d '{"acknowledged_by": "analyst@example.com", "notes": "正在调查"}'
# 创建自定义警报规则
curl -X POST "https://your-worldmonitor/api/v1/alerts/rules" \
-H "Authorization: Bearer *** \
-H "Content-Type: application/json" \
-d '{
"name": "自定义规则",
"conditions": {
"regions": ["east_asia"],
"event_types": ["political"],
"severity_min": 5
},
"actions": {
"channels": ["email"],
"recipients": ["team@example.com"]
}
}'
部署选项 #
单实例(个人分析师) #
对于个人记者或研究人员,单个 Docker Compose 部署在 4 核 VPS 上就足够了:
服务器:4 vCPU,8GB RAM,100GB SSD
成本:约 $20/月(DigitalOcean / HTStack)
容量:约 1,000 个事件/天,30 天保留
团队部署 #
对于 5-20 人的分析师团队,添加 Redis 集群和 PostgreSQL 只读副本:
应用服务器:3x 4 vCPU,16GB RAM(位于负载均衡器后面)
数据库:PostgreSQL 主节点 + 2 个只读副本
缓存:Redis 集群(3 个节点)
存储:500GB SSD + S3 归档
成本:约 $200/月
容量:约 10,000 个事件/天,90 天保留
企业/分布式 #
适用于政府或大型组织部署:
具有数据主权控制的多区域部署
跨 10+ 应用节点的横向扩展
使用 Patroni 的 PostgreSQL 自动故障转移
对象存储用于历史数据归档
与现有 SIEM/SOC 平台集成
成本:定制定价
容量:无限制,支持地理分布式数据采集
与其他工具的集成 #
WorldMonitor 可与流行的情报和通信工具无缝集成:
Slack 集成 #
# 安装 Slack 应用
curl -X POST "https://your-worldmonitor/api/v1/integrations/slack" \
-H "Authorization: Bearer *** \
-H "Content-Type: application/json" \
-d '{
"channel": "#global-events",
"alert_rules": ["major_conflict", "infrastructure_disruption"],
"digest_frequency": "hourly"
}'
Telegram 机器人 #
# 创建 Telegram 机器人集成
curl -X POST "https://your-worldmonitor/api/v1/integrations/telegram" \
-H "Authorization: Bearer *** \
-H "Content-Type: application/json" \
-d '{
"bot_token": "${TELEGRAM_BOT_TOKEN}",
"chat_id": "${TELEGRAM_CHAT_ID}",
"alert_rules": ["all_high_severity"]
}'
Grafana 仪表盘 #
# 导出指标到 Grafana
curl -X POST "https://your-worldmonitor/api/v1/metrics/grafana" \
-H "Authorization: Bearer *** \
-H "Content-Type: application/json" \
-d '{
"datasource": "prometheus",
"dashboard_template": "worldmonitor-overview"
}'
ELK Stack / Elasticsearch #
# WorldMonitor Elasticsearch 输出配置
output:
elasticsearch:
hosts: ["https://es-cluster.internal:9200"]
index: "worldmonitor-%{+yyyy.MM.dd}"
username: "${ES_USER}"
password: "${ES_PASS}"
template_overwrite: true
bulk_size: 500
flush_interval: 5
对比:WorldMonitor 与商业替代品 #
| 功能 | WorldMonitor | Palantir Gotham | Meltwater | Brandwatch |
|---|---|---|---|---|
| 开源 | 是 | 否 | 否 | 否 |
| 自托管 | 是 | 否 | 否 | 仅云端 |
| 价格 | 免费 | $50K+/年 | $25K+/年 | $15K+/年 |
| 自定义数据源 | 无限 | 有限 | ~200 | ~500 |
| AI 相关性 | 内置 | 额外费用 | 基础 | 高级 |
| API 访问 | 完整 REST | GraphQL | 部分 | REST |
| 基础设施追踪 | 是 | 是 | 否 | 否 |
| 多语言 | 20+ | 10+ | 30+ | 25+ |
| 自定义警报 | 是 | 是 | 是 | 是 |
| 团队协作 | 内置 | 额外费用 | 额外 | 额外 |
实际应用场景 #
新闻调查 #
调查记者可以使用 WorldMonitor 同时追踪多个地区的事件,关联跨越国界的发展动态,并构建复杂情况的全面时间线。多语言支持使得能够监控英语聚合器遗漏的本地来源。
企业风险评估 #
跨国公司使用 WorldMonitor 评估影响其运营的地缘政治风险。通过监控基础设施中断、政治不稳定和监管变化,企业可以主动调整供应链并降低风险敞口。
学术研究 #
研究国际关系、冲突动态或全球经济趋势的研究人员利用 WorldMonitor 的历史数据存档和 API 进行定量分析。结构化的事件数据使地缘政治现象的统计建模成为可能。
应急响应协调 #
在危机期间,WorldMonitor 的实时事件追踪有助于协调人道主义救援工作。基础设施模块识别受影响的设施,而新闻聚合提供来自多个来源的一线报告。
局限性 #
虽然 WorldMonitor 功能强大,但用户应了解其局限性:
- 数据源依赖:质量取决于源 feeds 的可靠性。某些地区由于可用来源较少,覆盖范围有限。
- AI 准确性:相关性引擎是概率性的,而非确定性的。假阳性可能出现,特别是在复杂的地缘政治情况下。
- 资源密集:完整分析管道需要大量 CPU 和内存。小型部署可能需要减少并发数据源的数量。
- 设置复杂性:初始配置数据源、AI 模型和警报规则需要技术专业知识。
- 无内置翻译:虽然系统摄入多语言内容,但不提供源材料的自动翻译。
入门清单 #
# 1. 克隆和配置
git clone https://github.com/koala73/worldmonitor.git
cd worldmonitor
cp config.example.yaml config.yaml
# 2. 设置数据源的 API 密钥
export GDELT_API_KEY="your-gdelt-key"
export ACLED_API_KEY="your-acled-key"
# 3. 使用 Docker 启动
docker compose up -d
# 4. 验证安装
curl http://localhost:8000/api/v1/status
# 5. 添加第一个警报规则
curl -X POST http://localhost:8000/api/v1/alerts/rules \
-H "Content-Type: application/json" \
-d '{"name": "测试警报", "conditions": {"severity_gte": 8}, "actions": {"channels": ["email"]}}'
# 6. 访问仪表盘
# 在浏览器中打开 http://localhost:3000
结论 #
WorldMonitor 代表了开源地缘政治情报的重大进步。通过在单一自托管平台中结合多源新闻聚合、AI 驱动的相关性和基础设施追踪,它使以前只能通过昂贵商业解决方案获得的功能变得民主化。
无论你是追踪全球事件的记者、分析地缘政治模式的研究人员,还是监控运营风险的企业,WorldMonitor 都提供了你所需的工具。它的开源性质意味着你控制自己的数据、分析和隐私——没有供应商锁定,没有数据出售,没有意外。
该平台在活跃社区的贡献下持续快速演进,不断添加新的数据源、分析模型和集成模块。对于任何认真对待全球态势感知的人来说,WorldMonitor 现在已经是情报堆栈中不可或缺的工具。
来源 #
CTA #
加入我们的社区,持续关注全球事件。在 GitHub 上关注我们获取最新发行版,加入 Discord 参与社区讨论和支持。
对于那些希望快速部署 WorldMonitor 的人,可以考虑在 HTStack 上托管, affordable VPS 实例起价 $5/月,或使用 DigitalOcean 的团队部署托管 Kubernetes 选项。
FAQ #
问:我可以在没有互联网连接的情况下使用 WorldMonitor 吗? #
答:WorldMonitor 需要互联网访问来从外部来源收集数据。然而,一旦数据被收集,你可以将系统配置为在无网络隔离模式下运行,此时仪表盘正常工作但不再获取新数据。这在安全环境中很有用。
问:WorldMonitor 需要多少数据存储? #
答:存储量取决于你的保留策略。典型的单实例部署每月存储约 500MB 的聚合新闻和事件数据。通过压缩和归档到对象存储,50GB 可以在个人部署中提供约一年的保留期。
问:WorldMonitor 是否支持自定义数据源插件? #
答:是的。WorldMonitor 拥有插件架构,允许开发者创建自定义数据源连接器。插件 SDK 在 GitHub 仓库中有文档说明,支持 Python 和 TypeScript 插件。社区贡献的插件可在 plugins 目录中找到。
问:我可以从 WorldMonitor 导出数据进行分析吗? #
答:当然可以。WorldMonitor 支持多种格式的数据导出,包括 CSV、JSON、GeoJSON 和 Parquet。你也可以直接查询底层 Elasticsearch 索引,或使用 REST API 拉取特定数据集进行分析。
问:WorldMonitor 适合实时监控危机吗? #
答:是的。WorldMonitor 专门为实时监控而设计,具有可配置的警报阈值和分钟级的数据刷新间隔。许多应急响应组织将其作为活跃危机期间态势感知基础设施的一部分。
问:AI 相关性引擎如何处理冲突信息? #
答:相关性引擎根据历史准确性和交叉引用为每个数据源分配置信度评分。当来源冲突时,它应用加权投票机制并将差异标记供人工审查。系统还会跟踪源可靠性随时间的变化并相应地调整权重。
💬 留言讨论