WarMap Live
一张展示被报道军事事件的世界地图,由公开新闻报道汇集而成。
72 个免费的公开新闻源,每五分钟读取一次。 模型读取标题,判断发生了什么并把它标在地图上;每个标记都能回到它出处的那篇文章。
它是公开报道的聚合器,不是经过核实的情报,并且如实这么说。无需账号,没有付费墙,也没有追踪弹窗。
概览
72
公开新闻源
5 分钟
刷新间隔
11
语言
$0
免费,无需账号
从一条 RSS 条目到地图上的一个标记。
四个阶段每五分钟运行一次。大多数文章根本到不了模型那一步,这是刻意为之。
读取新闻源
抓取 72 个免费的公开新闻 RSS 源。不涉及任何付费新闻 API。如果某个源的最新条目超过十天,或者解析后什么都没有,就会被判定为故障而不是正常——曾有两个已经失效的源连续数月报告成功,实际却一直在返回 2018 年的文章。
打分与淘汰
每篇文章都会按是否描述军事事件打分,约 95% 在任何模型运行之前就被淘汰。剩下的还会与已处理过的内容做比对,因此平静的时段调用模型的次数为零,不会为无事发生浪费一次请求。
分类与定位
模型只能对事件做分类,并估算它发生在哪里。它永远不被允许提供来源网址、媒体名称或时间戳——那些都从源条目原样照抄。任何通不过校验的内容一律丢弃,绝不修补。
标上地图,并附上来源
事件被写入数据库,并在刷新周期内出现在地图上,同时附带原文链接和一个可供引用的长期独立页面。
这个项目拒绝去做的事。
不得编造新闻。
早期草稿曾带着八条示例事件上线,还附有署名路透社、美联社和 BBC 的伤亡数字。在一个自称实时报道冲突的网站上,那就是捏造的新闻。它们已被移除,项目现在完全不带任何初始数据——在真实事件出现之前,地图就是空的。
从一个国家指向另一个国家的箭头是一项事实主张,因此只有当来源文章确实点名了攻击方或发射区域时才会画弧线。其余一律只用普通标记。
不得给平静的一小时注水。
地图过去会用窗口之外更早的事件来填补稀疏的时间段,好让近乎空白的世界看起来不像坏了。在每小时一到七起事件的量级上,这些填充构成了访客所见内容的大部分——以为自己在看“最近一小时”,其实大半在看昨天。
时间窗口现在是绝对的。平静的一小时就显示为平静的一小时,更长的时间范围也只需轻点一下。
在服务端渲染,因为爬虫不会执行 JavaScript。
WarMap Live 最初是一个 React 单页应用。它下发一个空的根元素,在浏览器里再构建事件列表,因此爬虫能读到的全部内容都躺在 noscript 兜底块里——而 Google 在渲染时会把它丢弃。大多数 AI 爬虫根本不执行 JavaScript:对它们来说,这个页面只是一个看不见内容的网址。
它被重写为在边缘渲染每一个页面,只把地图留作真正需要浏览器的部分。在同一个首页上的实测结果:
爬虫能读到的字数
10 404
下发的 JavaScript
104 KB 53 KB
关掉 JavaScript 也能用
除地图外一切可用
筛选器是普通链接而不是按钮,因此每个筛选后的视图都是真实网址,不用脚本也能打开;当浏览器支持 JavaScript 时,地图会把它们升级为原地更新。
这张地图不是什么。
这些限制写在网站本身、它的文档,以及它提供给 AI 助手的文件里——因为一张夸大自身可靠性的冲突地图,比没有地图更糟。
不是经过核实的情报。 它聚合的是公开新闻报道,整个流程中没有人工审核。
坐标是估算值。 模型只依据一条标题来定位事件。标记可能落在错误的城市、错误的地区,偶尔还会落在错误的国家。
来源只是一种归因。 那是文章的说法,不是观测到的发射位置。
早期数字之后会被修正。 伤亡数字是文章发布当时的说法。
部分信息源由国家控制。 它们会把说法当作事实来报道。
空白区域不等于平静。 它意味着没有任何受监控的源发布过匹配的报道。
在未核对原始来源之前,请勿据此做出安全、出行、行动、新闻报道、保险或法律方面的决定。
一个 Worker,一个数据库,一张地图。
整套系统都跑在 Cloudflare 上,包括读取新闻源的定时任务。没有需要长期维护的服务器,也没有单独的后端。
地图本身就是产品。
打开就能直接看到当前时间窗口——无需账号,没有 Cookie 弹窗,每起事件距离它的来源只有一次点击。
WarMap Live 聚合的是公开新闻报道。它不是经过核实的情报,也不对准确性作任何担保。在依据这里看到的内容行事之前,请务必核对链接的来源。