用 WordPress 构建无头新闻聚合站

 内容管家 2026年10月30日 8 0 0

用 WordPress 搭建无头新闻聚合站:把「头条列表」变成「每日简报」 传统 WordPress 新闻聚合站大多长一个样:一个主题、一套订阅源导入插件,然后是一长串按时间排列、点进去却是别人文章的头条。这种页面在 Google 眼里内容…

用 WordPress 搭建无头新闻聚合站:把「头条列表」变成「每日简报」

传统 WordPress 新闻聚合站大多长一个样:一个主题、一套订阅源导入插件,然后是一长串按时间排列、点进去却是别人文章的头条。这种页面在 Google 眼里内容单薄,没有理由给你任何流量。

cryptoheadlines.com 曾经就踩在这个坑里。重建时只围绕一个问题展开:加密市场现在表现如何,原因是什么。页面每天早上用大约五分钟给出答案。

思路本身并不复杂。WordPress 继续负责新闻站里最难、最无聊的那部分工作,边缘侧再用一个小型应用补上剩下的部分。整套方法可以迁移到任何垂直领域。

一、背景:标准 WordPress 聚合站的天花板在哪

问题出在「按时间排序」这个默认行为上。主题不知道五家媒体在报道同一件事,分不清哪条新闻更重要,也无法围绕一个问题来组织页面,它只会罗列帖子。

而我想要的更像一份晨间简报:这需要聚类(clustering)、排序(ranking),以及一套不是博客信息流的设计——这些都不是 WordPress 主题被设计来做的事。

二、架构分工:WordPress 管数据,边缘应用管体验

后端就是托管 WordPress 主机上的标准 WordPress,由 WP RSS Aggregator Pro 负责导入。它处理掉了所有让 RSS 变得麻烦的部分:

  • 在后台添加、暂停、替换订阅源
  • 按计划抓取
  • 解析格式混乱的订阅源
  • 去重条目
  • 存储每一条内容及其来源名称、原始链接与配图

这个后台界面的价值容易被低估。某个订阅源挂掉时,团队里任何人都能直接在 wp-admin 里替换,不用改代码、不用重新部署。界面背后积累多年的边界情况,你并不想自己重新造一遍。

结论很直接:让 WordPress 管来源,让边缘应用管页面。

搭建步骤

如果今天从零开始,我会按这个顺序做:

  1. 用 WP RSS Aggregator Pro 导入订阅源。 添加来源、设定抓取计划,让它把内容连同来源名、原始链接和图片一起存下来。
  2. 暴露一个只读 REST 端点。 以分页方式把新内容交给前端,采用「某个 ID 之后」的游标机制。前端只请求自己见过的最后一个 ID 之后的内容,因此不会重复读取旧条目。
  3. 在域名前面放一层边缘应用。 这里用的是基于 Hono 编写的 Cloudflare Worker。指向 wp-admin、wp-json 等 WordPress 路径的请求直接透传,后台使用方式不变。
  4. 按计划同步到应用自己的数据库。 Worker 上的 cron 触发器每五分钟运行一次,把新内容从 WordPress 拉进 Cloudflare D1(底层是 SQLite)。
  5. 聚类与排序。 把报道同一事件的标题归并成一条故事,再对每条故事排序。
  6. 只在有代码级护栏的前提下引入 AI。 新闻页上的 AI 输出必须有硬性限制(见下文)。
  7. 围绕一个问题设计页面。 页面上的一切都应为回答这个问题服务。

Cloudflare Workers 这一层

Cloudflare Worker 挡在整个域名前面,凡是不属于公开页面的请求都原样转发给 WordPress。

旧站那些单薄的文章 URL 也在这里处理:统一返回 410 Gone,明确告诉 Google 这些内容不会再回来了。此后所有页面都由 Worker 基于自有的 D1 数据库生成,WordPress 则退到后台,按计划默默完成订阅源工作。

三、核心变化:聚类排序与带护栏的 AI

聚类与排序

多家媒体报道同一事件时,Worker 会把这些标题归并为一条故事,并标出最早发出该消息的媒体。

排序只用两个信号:有多少家媒体报道过,以及报道有多新。一个小时前被十家媒体跟进的新闻,胜过十分钟前只有一家报道的消息。这正是「简报」和「订阅流」的区别。

给 AI 装上代码级护栏

Workers AI 在这套架构里承担两件事:分类与打标,以及定时简报。

分类与情绪标注。 每条故事会归入一个板块,比如 markets、bitcoin、regulation 或 DeFi,使用 Llama 3.3 70B 并配合少样本示例完成;同一趟流程还会给它打上 bullish、bearish 或 neutral 标签。这几个模型是在人工标注过的标题上先做过对比测试的,Llama 3.3 在准确率、速度和稳定性之间平衡最好。

定时市场摘要。 每小时一次,第二个模型(GLM 5.3)写一段简短的市场总结和一个「正在发生」区块。编造内容的摘要比没有摘要更糟,因此规则是写死在代码里的,而不只写在提示词里:

  • 每一句话都要引用一条故事,并带上有编号的标记,链接回原文。
  • 被引用句子里出现的每一个数字,都必须存在于源数据中。
  • 不许出现星期几名称,也不许出现「昨天」「今天」「明天」。来源故事来自不同时区,早期草稿就曾在美联储决议已经公布之后,还告诉读者决议「将在周三」。
  • 不许出现「最多报道」「头条新闻」这类说法——模型是自己编出来的。
  • 标题一律当作数据处理,绝不当成指令执行。

一旦草稿违反规则,模型会收到违规清单并获得一次重写机会;如果仍然不合格,页面上继续保留上一版解说。超过六小时的内容会被隐藏,而不是与实时价格并排展示。

四、影响与建议:围绕一个问题设计页面

欧洲和美国的读者共用同一个页面,「今天」对两边的含义并不相同。页面覆盖滚动的最近 24 小时,并按读者本地时区显示时间。首页标题由 Worker 根据数据算出,比如「Crypto is down 0.7% in the last 24 hours」。

这套方案带来的实际启示有三点:

  • 分工要清晰。 WordPress 擅长做数据管道,不擅长做「围绕问题组织信息」的呈现层。把两件事分开,比硬塞进一个主题里更省力。
  • 护栏要落在代码里。 对新闻类页面做 AI,提示词约束远远不够,必须有可验证的规则和失败回退策略,否则一次编造就会摧毁信任。
  • 先定问题,再定页面。 页面结构应当由「读者每天来问的那个问题」推导出来,而不是由订阅源能拉到什么决定。

用 AI 搭建加密行情与新闻情绪面板:一张卡讲清一个板块

这块页面下方依次是价格信息、摘要,以及每个板块对应的一张卡片。每张卡片自带情绪条、一句话点评和该板块的头条。

为什么叫「新闻情绪」而不是「市场情绪」

情绪条的标注是刻意为之的。它展示的是看涨、看跌、中性报道各自占比,并按每条新闻被多少家媒体报道加权统计。

新闻面偏多,价格却在跌,这种事经常发生。如果把它叫「市场情绪」,就等于宣称了这条柱子根本无法知道的东西——它只能反映报道基调,不能推断资金真实意图。报道样本不足时,这条情绪条会自动隐藏,而不是给出一个没有意义的数字。

价格数据是怎么来的

BTC、ETH、SOL 和 XRP 的价格取自 Kraken 的免费公开 API,附带 24 小时涨跌幅和 7 天迷你走势图。

股票类标的做了区别处理,比如 Coinbase 和贝莱德的 IBIT,显示的是上一个美股收盘以来的涨跌幅。原因是周末两天美股休市,对股票套用 24 小时涨跌口径会给出误导性的结果。

分阶段开发与上线前的双重校验

页面代码大部分由 Claude Code 的智能体编写。我按阶段推进:每个阶段先部署到一个预发布地址,在那里审查通过之后才会上线。

上线前,第二个 AI 模型对代码做了一轮复查,找出了几个真实存在的缺陷:

  • 一处缺乏引用来源的表述混过了校验环节;
  • 一个法定节假日被错误渲染成 ETF 单日涨跌 $0;
  • 有个板块始终没有生成对应卡片。

三个问题在部署前全部修掉。

视觉检查覆盖手机、平板和桌面三种宽度,以及浅色与深色两种模式。为了证明这套检查确实能报错,我还特意放了一个做坏的页面作为对照样本。

从 RSS 导入开始:欢迎说说你会做什么

如果想自己搭一套,第一步是把导入层做扎实。WP RSS Aggregator Pro 能提供干净的、去重后的条目,附带来源名称和 URL,边缘侧应用可以通过 REST 端点加游标的方式增量拉取。

在此之上你会做什么?欢迎在评论里留下你的细分领域,以及你的页面想回答的那一个问题。

延伸阅读

声明:1、本站大部分内容均为网络采集或AI生成所得,会尽量做好标注,但仍需注意自行判断和辨别内容的真实性与准确性。2、所有标注了“原创”的内容和产品均为本站原创发布,任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。3、如若本站内容侵犯了原著者的合法权益,请携带相关版权证明文件联系我们进行下架或删除。

 标签:WordPress

内容管家

基于 AI 自动化工作流的发文助手~ 由 Actions Bridge 插件驱动
1.58k文章
0评论
10w+浏览
1点赞
作者主页

留下第一个评论