Skip to content
Swil
  • Writing
  • Work
  • Vibe
  • Lab/lab3D scenes, a playable piano, the solar system.
  • 3D Models/modelsModels you can turn and look around.
  • Music/musicA listening room, an aespa archive and a piano.
  • Terminal/terminalA small command line in the browser.

Things to click, turn and listen to.

  • Planner/tools/workA week of tasks with a focus timer.
  • Image editor/tools/image-editCrop, resize and adjust in the browser.
  • Typing/tools/typingA typing trainer.
  • All tools →/tools

Small tools I use myself, all in the browser.

  • Finuwell↗finuwell.comAn atlas of how the body works.(opens in a new tab)
  • Swil News↗news.supwil.comAI and tech news, updated daily.(opens in a new tab)
  • SwirlRead↗swirl-read.vercel.appA Markdown reader for a notes folder.(opens in a new tab)

Separate apps I built, each on its own site.

  • Resources/resourceTools and reading I keep going back to.
  • Perf/perfThis site's own measurements.
  • Changelog/changelogWhat changed on the site, and when.

Reading I go back to, and how this site is measured and changed.

Writing/blogWork/projectVibe/vibe

Explore

Lab/lab3D scenes, a playable piano, the solar system.3D Models/modelsModels you can turn and look around.Music/musicA listening room, an aespa archive and a piano.Terminal/terminalA small command line in the browser.

Planner/tools/workA week of tasks with a focus timer.Image editor/tools/image-editCrop, resize and adjust in the browser.Typing/tools/typingA typing trainer.All tools →/tools

Finuwell ↗(opens in a new tab)finuwell.comAn atlas of how the body works.Swil News ↗(opens in a new tab)news.supwil.comAI and tech news, updated daily.SwirlRead ↗(opens in a new tab)swirl-read.vercel.appA Markdown reader for a notes folder.

Resources/resourceTools and reading I keep going back to.Perf/perfThis site's own measurements.Changelog/changelogWhat changed on the site, and when.

Site

  • Home
  • Writing
  • Work
  • Vibe
  • RSS

Playground

  • Lab
  • 3D Models
  • Music
  • Terminal

Tools

  • Planner
  • Image editor
  • Typing
  • All tools→

Apps

  • Finuwell↗
  • Swil News↗
  • SwirlRead↗

More

  • Resources
  • Perf
  • Changelog

Elsewhere

  • GitHub
  • LinkedIn
  • Bilibili
  • Email

Huahao Shang, 2026 · Privacy

Built with Next.js · measured at /perf

Writing/Essay

Swil News:把 AI 生成的新闻,做成一个真正能每天打开的东西

将 AI 的一次性新闻生成能力,整理成一个可持续更新、可分类阅读、真正适合每天打开的本地新闻产品。

11 Apr 20268 min readUpdated9 Jul 2026Next.js · DevOps · Ai

Contents

  1. 我想解决的,其实不是“搜索”,而是“组织”
  2. 为什么不只做 AI 新闻
  3. 我对这个产品的理解,其实很朴素
  4. 技术上,我是怎么把这件事串起来的
  5. 为什么我现在更愿意先做 local-first
  6. 这个项目对我来说,更像一种长期练习

项目地址:[swil-news.vercel.app](https://swil-news.vercel.app)

我做 Swil News,不是因为这个世界上缺一个新闻网站,也不是因为 AI 不能帮我找新闻。恰恰相反,正是因为现在的 AI 已经很像一个很强的搜索引擎了,我才开始认真想另外一个问题:

如果我每次想看某一类新闻,都只是临时打开一个 AI,对它说一句“帮我总结今天的 AI 新闻”或者“帮我看看今天金融市场发生了什么”,这件事虽然能做,但它并不工程化,也不够长期。

它更像一次性的问答,而不是一个稳定的信息系统。而且人们好像已经很久不关注类似报纸这样的内容了,要么是每天面对自媒体,短视频和碎片化信息的噪音干扰,或许一个相信AI的新闻内容产出平台在这个时代下更值得。

我一直觉得,真正好用的东西,不只是“能做”,而是“可以持续地做,而且每次做出来的结果都比较稳定、比较有组织、比较容易回看”。所以我开始想,能不能把这件事从“每次手动问一次 AI”,变成“先把 AI 的行为规范好,再让它持续产出结构化内容,最后给人一个真正可读的界面”。

Swil News 就是从这个想法里长出来的。

Blog image 1

我想解决的,其实不是“搜索”,而是“组织”

现在大家都知道 AI 很强,尤其在搜索、整理、总结这些事情上,它已经非常能打了。你给它一个 prompt,它就能很快给你一份结果。

但问题是,这种方式天然有几个限制。

第一,它很临时。

你今天问一次,明天再问一次,输出风格可能不一样,重点可能不一样,结构也可能不一样。

第二,不够可积累。

这些结果大多数时候只是一次聊天记录,不太适合长期归档、持续回看,也不适合慢慢沉淀成你自己的信息资产。

第三,它对“人”的阅读体验并不好。

AI 可以给你一大段结果,但那不等于它已经是一个适合人类阅读的产品。搜索结果和日报产品,其实是两回事。

所以我真正想做的,不是单纯“让 AI 帮我找新闻”,而是想做一个更工程化一点的流程:

先把 prompt、格式、输出路径、主题分类这些东西提前设计好,再让 AI agent 按这个规则去稳定地产出不同类别的新闻内容,最后把这些内容整理成一个真正能每天打开、每天阅读、每天更新的界面。

Blog image 2

为什么不只做 AI 新闻

如果只是从“热门方向”出发,那做 AI 新闻当然很合理。毕竟我本身也关心模型、产品、工具链这些东西。

但我做这个项目的时候,脑子里想的并不只是 AI。

我更真实的状态是:我是一个对世界本身有好奇心的人。我想知道今天全球发生了什么,金融市场有什么变化,AI 和科技又在推什么新东西,科学、加密、供应链、能源、汽车这些方向有没有值得关注的变化。问题是,人的时间和精力其实都很有限,不可能每天自己把所有信息源都刷一遍。

所以我才更觉得,这件事值得被“系统化”。

与其每次想到什么看什么,不如提前把几个我长期关心的主题分出来,让它们各自跑自己的生成流程,然后统一汇总到一个地方。这样我每天只要打开这个站,就能用一个比较舒服、比较稳定的方式,快速看一遍今天值得知道的内容。

这也是为什么 Swil News 不是单一主题项目,而是一个多分类日报系统。

Blog image 3

我对这个产品的理解,其实很朴素

说实话,这个 app 的技术复杂度并没有高到哪里去。它不是那种看起来“非常重”的系统,也不是什么改变世界的大产品。

但我自己反而挺喜欢这种项目。

因为它不是为了炫技做出来的,而是真的能进入我的日常使用场景里。

如果我今天想快速看一眼新闻,我会打开它。

如果我今天想看某一个专题,我也可以直接点进去。

如果我想让内容每天自动更新,我可以在自己的电脑上让它跑。

如果我某天临时想手动更新一次,我也能自己触发。

它不一定是那种“影响特别大”的产品,但它是一个可以长期运行、长期迭代、并且真的对我自己有帮助的东西。

对我来说,这种项目反而很有价值。因为它不是一个演示,而是一个活的系统。

技术上,我是怎么把这件事串起来的

Swil News 的思路本质上是一个很简单但我觉得很顺的闭环:

先用预设好的 prompt 和脚本,把不同类别的日报生成出来;

再把这些结果以 Markdown 的形式存到本地;

然后用 Next.js 去做渲染、归档、分类、阅读和展示。

我刻意保留了“文件就是数据”这件事。因为我觉得这类内容并不一定需要一上来就进数据库。日报本身天然适合 Markdown:它可读、可版本管理、可迁移,也方便后续继续加工。对这种项目来说,先把内容资产稳定地落到 NEWS/ 目录里,本身就是一个很重要的设计选择。

整个流程大概是这样的:

  • 不同主题对应不同的生成脚本和 prompt 规范

  • AI agent 根据这些规则去搜索、筛选、整理、成文

  • 内容输出为结构化的 Markdown 日报

  • 构建时生成索引,方便按日期、主题和关键词去浏览

  • 前端再把这些内容用更适合阅读的方式展示出来

我也做了中英文双语支持,因为我本来就希望这个东西不是只能服务一种语言场景。对我来说,双语不是“为了国际化而国际化”,而是因为这本来就是更自然的使用方式。

在技术栈上,我用了 Next.js 来做渲染和页面组织。一方面它对这种内容型站点很顺,另一方面在 SEO、页面结构和部署体验上也比较成熟。虽然这个项目本身不是一个很复杂的 web app,但把这些基础能力做好,至少能让它更像一个完整产品,而不是一个只在本地凑合看的 demo。

Blog image 4

为什么我现在更愿意先做 local-first

这个项目其实还可以继续往更重的方向走,比如完全云端化、把生成和展示全部放到线上、做更复杂的调度和分发,等等。

但我现在反而觉得,local-first 对它来说是一个很合适的阶段性答案。

原因很简单:第一,我能控制成本;第二,我能控制生成过程;第三,我能确保这个系统真的先服务于我自己的日常使用,而不是一开始就为了“上线一个很大的平台”去设计很多其实还不必要的复杂度。

而且这件事本身也和现在很多开发者的真实使用场景很接近。我们都在用 agent coding,也都在消耗各种 plan、token、额度。既然这些能力已经在手上,那我自然会去想:能不能把它们用在一个持续运行、持续产生价值的地方,而不是只停留在零散的实验和一次性的调用上。

Swil News 某种程度上就是我对这个问题的一个回答。

这个项目对我来说,更像一种长期练习

我不觉得每个项目都一定要“特别大”才有意义。很多时候,一个项目的价值,不在于它多复杂,也不在于它多有商业想象力,而在于它是不是能真实运行,能不能持续迭代,能不能真的帮到人。

Swil News 对我来说就是这样一个东西。

它一方面是一个产品思考练习:如何把 AI 的一次性能力,整理成一个稳定、长期、可用的信息产品。

另一方面也是一个工程练习:如何用尽量克制的技术复杂度,把一个看起来不大、但其实有真实使用价值的系统做完整。

我现在并不觉得它已经做完了。它后面还有很多可以继续优化的地方,比如更强的搜索、更稳定的云端运行方式、更好的生成调度、更丰富的阅读体验,甚至可能进一步把它做成一个更完整的“个人信息中枢”。

但至少到现在为止,我已经很满意它完成了一件事:

它把“AI 能帮我找新闻”这件事,往前推了一步,变成了“我真的有一个地方,可以每天去看新闻”。

而对我来说,这一步就已经很值得了。

Filed under
  • Next.js
  • DevOps
  • Ai
  • Cursor cli
  • News
  • 新闻归纳
  • 产品
← PreviousRe: Theo 3月25对OpenAI的直播拷打 - AI独角兽们目前的混乱
Next →从 AWS Amplify 到 Vercel:部署和持续开发
← Back to Writing