先收敛产品定义
我没有上来就写代码,而是先把需求拆成几个关键决策:第三部分的 “skill” 指什么、社交媒体热榜要不要强依赖 X、这个站是只看今日还是支持历史与主题筛选、数据源是否允许第三方免费 API / RSS。这样做是为了把后续技术方案锁住,避免写了一半再返工。
这页不是在介绍最终网站,而是在拆解我这次实际的工作方式:我如何先收敛需求,再接管仓库、搭建工程骨架、实现数据抓取与自动更新、完成测试和构建,最后推送到 GitHub 并部署到 Vercel。
这是我这次实际的工作顺序,不是事后包装。整个过程先做需求收敛,再进入实现,最后做构建、推送和部署。
我没有上来就写代码,而是先把需求拆成几个关键决策:第三部分的 “skill” 指什么、社交媒体热榜要不要强依赖 X、这个站是只看今日还是支持历史与主题筛选、数据源是否允许第三方免费 API / RSS。这样做是为了把后续技术方案锁住,避免写了一半再返工。
在几个候选方案里,我收敛到 “GitHub 仓库 + GitHub Actions 定时更新 + Next.js 静态站 + Vercel 部署” 这条路线。原因很简单:成本低、稳定、适合个人产品,而且自动化链路清晰。
拿到你的 GitHub 仓库后,我先克隆到本地,发现是空仓库,所以直接用官方 Next.js 脚手架初始化项目,再补上测试依赖、数据脚本依赖和视觉字体资源。因为空仓库没有历史包袱,这一步反而很顺。
我先定义统一的 schema、打标规则、评分逻辑和快照结构,再写 GitHub / 社交媒体 / Agent Skills 三条抓取脚本。这样页面不会绑死在某个单一数据源上,后面换源或加源都比较轻松。
前端没有做成普通博客页,而是做成一个偏情报驾驶舱的结构:首页看当天三榜,History 看历史快照,Trends 看重复出现的信号与高频标签。页面本身只读仓库里的 JSON,不需要数据库。
最后我配置了 GitHub Actions:定时跑数据更新、写回 data 目录、再触发 Vercel 自动部署。然后我本地跑了 lint、test、build、build:data,确认通过后提交到 GitHub,再把项目和 Vercel scope 连接并发布上线。
这次不是只用一个“写代码工具”,而是组合了终端、补丁编辑、并行读取、Git、Vercel 和测试工具链。
这些都是真实碰到的工程问题。重点不是“没出问题”,而是出问题后如何快速定位并把链路继续往前推。
如果把这次工作抽象成一个方法论,它其实是一条很稳定的产品工程流水线:先定义边界,再搭骨架,再把数据与界面接起来,最后用测试和部署闭环收口。
如果你想从代码层面理解这次工作的结构,下面这些文件最值得先看。
src/app/page.tsxsrc/app/history/[date]/page.tsxsrc/app/trends/page.tsxsrc/components/dashboard-explorer.tsxsrc/lib/schema.tssrc/lib/normalize.tssrc/lib/scoring.tssrc/lib/tags.tsscripts/build-dashboard.tsscripts/fetch-github.tsscripts/fetch-social.ts.github/workflows/update-data.yml