Back to notes

Note

Steam to Calendar 突然火了

记录 Steam to Calendar 突然获得真实访问后的开心、用户分析与博客大纲整理。

everydaysteam-to-calendaraiproduct

今天非常开心,这两天其实没管 Steam to Calendar 这个项目(我周末全顾着打守望先锋了,连着打了两天啥都没干),但是晚上看 umami 的时候,居然发现怎么突然火了,还这么多印尼的

image-20260610000324052

image-20260610000338373

而且是真实访问,我都有 reply 能看见操作了什么

同时让 Codex 去分析用户卡点,去读自部署的 umami,看看事件统计,分析下用户是哪一步卡住的,然后开 goal 自己去迭代

同时在准备一篇 blog 记录全流程,我大概整了些素材和大纲出来,下面是我和 ChatGPT 的对话

我一般习惯先把要写的内容、素材等等列出来,然后再看怎么组织出来,我目前想到这些(后面可能还有更多),你帮我组织一下,列个大纲

前言:一些背景信息,包括个人,项目,和现状(项目今天有100多个访问),全程靠 AI 没写过一行代码

  1. 为什么要尝试做独立产品

    目前大厂工作不满意、《纳瓦尔宝典》 想做独立开发

  2. 灵感来源

    在 V 站看到 weather in calendar,与 ChatGPT 称赞为什么别人总是能想到这么好的idea,并且让他发散思维

  3. 与 gstack 进行产品定位对话

    不断提问题挑战我,细化产品定位,受众人群,传播渠道,盈利途径等(虽然是玩具项目没考虑盈利)

  4. 生成多种设计效果图、生成 logo图

    感觉 image2 生图确实好,使用Codex,ChatGPT,banana nano来回倒腾

  5. 开发原型

    本来想在Cloudflare部署的,以及使用一些比较前沿的框架与技术栈,最终为快和好,使用了 next和 Vercel 部署,毕竟这个是 AI 最拿手的

  6. 期间遇到的主要问题

    1. 数据源问题,调用 steamdb,以及其他数据源,最终尝试写一个独立的 Steam CLI 把这部分工作分离

    2. 我以为是在写代码,其实是在做产品

      因为你后面其实花了大量时间:

      • Logo
      • Hero 区
      • Landing Page
      • 域名
      • 名字
      • 文案

      甚至比写代码时间还长。

    3. 不断重构,包括重新命名项目,重新进行用户定位,重新设计 CTA,生成新的设计图,

    4. AI 屎山问题,写了一个 3000 行的 ts,最终让 Codex 开 goal 模式,不断起 subagent 评价项目指出可修改项,我当时给的目标是评价这个项目有没有到教科书级别的实例项目,最终自己跑了 3 小时 40 分

  7. 疯狂打磨 UI 与交互

    关于 AI 生成 UI 方面的一些技巧和感悟(为什么 AI 生成的网站很没有品味,其实是因为大多数人本来也没有什么品味)

    指出问题,让 Codex 自己在浏览器里模拟操作,截图、不断修正迭代

    遗漏的未解决问题:感觉 AI 不是很能做成希望的那种风格,感觉文字有时候没法描述清楚,我其实也不是很会画画

    上班也在远程指挥 Codex,下班之后一直干到凌晨 3 点实在困的不行,把 plus 榨干,入了 100 刀的 Pro,然后把 Pro 的周配额榨干,最终想起来去年开了 TRAE 的 一年Pro(当时因为有 Claude),现在登上去其实感觉能力差距还挺大,每天限制自己的可能有两件事,一件是困,一件是 Codex 的 5h 配额

  8. 部署上线

    给他 Vercel 的 skill 以及 cli,基本上全程自己动手,以及看日志什么的

  9. V 站推广

    当天 post 有几百浏览,4 个 star,有收到几个人的鼓励

  10. 用户数据分析,与自动化迭代

    1. 尝试使用 Vercel event,但是要钱,转 umami,毕竟这个我之前的 blog 也一直用
    2. umami 的 reply 功能也要钱,幸好是开源的,自己自己部署一个,让他自己 ssh 到我的 macmini,在 k8s 集群上自己起实例,自己用 Cloudflare CLI 创建 tunnel 穿透出去
    3. 让 Codex 自己连到自托管 umami ,查看与分析数据,分析用户卡点(我们有很多事件,看用户是在哪一步卡住的,还有reply可以看)
  11. 未来架构演进展望

    把 SteamCLI 改造成 ts 的 sdk,更加利于集成

    使用 Cloudflare Page + Cloudflare Worker,提升性能

  12. 最终感悟

    从中我愈发清醒地感觉到构建基本可以交给 AI,反而是产品、设计、运营相关的技能越来越重要

  13. 最后补一个 Codex 自己总结的项目关键时间线

    关键时间线 2026-05-20 晚上:项目出生。 21:00 左右 GStack /office-hours 开始,主题还是 Wishlist in Calendar。21:04 Git 初始化。21:32 左右生成设计文档 Wishlist in Calendar — Weekend Magic Feed,核心问题是:能不能把 Steam wishlist 的时间节点放进用户真正使用的系统日历。22:02 到 22:40 做了工程计划 review,定成 Weekend Prototype。

    2026-05-21 凌晨:第一版原型跑起来。 00:04 feat: build Steam wishlist calendar prototype,之后很快接上 Steam wishlist service API、模拟 calendar preview、prototype progress docs 和 preview UI polish。这个阶段重点还是 wishlist release dates + .ics subscription。

    2026-05-21 深夜到 2026-05-22 凌晨:你开始追问“没有用户信息时能拿什么 Steam 数据”。 Claude 记录里你说“我昨天其实用 codex 改了不少”,然后问“不提供用户信息的情况下,我们能拿到什么 steam 数据”。这里第一次把产品从纯 wishlist 往 公共 Steam 活动/促销日历 推。接着你要求研究 SteamKit,最后判断 SteamKit 不适合直接当数据源,更适合的是 Steam Store 公开 events JSON endpoint,加本地 seed fallback。

    2026-05-22 01:04:Logo 方向出现。 Claude 记录里你说想做一个 Steam logo 和日历结合的 logo,已经下载了正版 Steam logo。这个时候产品还叫 wishlist in calendar,但品牌视觉已经开始往“Steam + Calendar”的组合靠。

    2026-05-23 凌晨:steam-cli 成为核心数据来源。 02:41 Integrate steam-cli for Vercel deployment,03:03 Organize assets and load public preview dynamically。这很关键,项目不再只是前端/手写数据,而是开始把 steam-cli vendored 进来,服务 Vercel 部署和运行时数据。

    2026-05-25:方向从 wishlist-only 转成 Steam calendar。 旧 docs/current-status.md 写得很直白:产品方向已经从 “wishlist releases only” 移到 Steam to Calendar。同一天 Git 里有 Build Steam sale calendar experience、Redesign Steam sale calendar、移动端 UI、list view、event range 等提交。GStack learning 也记录了你偏好的定位:直接说“把 Steam 游戏和事件放进系统日历”,不要抽象品牌词,也不要只叫 Sale,免得窄化。

    2026-05-26:疯狂 UI/产品打磨日。 这一天有 35 个 commit,是整个项目最密集的一天。包括 Refine Steam to Calendar UI positioning、setup panel、ready step、subscribe CTA、mobile spacing、region/currency、game image ratio、Vercel analytics 等。这个阶段产品从“能用”变成“像一个真的应用”。

    2026-05-28 凌晨:Claude 记录里开始以 steam-to-calendar 作为新项目路径做代码质量审查。 ~/.claude/projects/-Users-nx-Workspace-steam-to-calendar/… 里有多轮 senior review,关注结构是否专业、src/features/calendar-builder 是否是干净 composition root、runtime validation 和层边界是否足够好。最后一轮给了 PASS,并说 required changes 是 None。这说明在正式 commit 前后,你已经把它当成一个可教学、生产风格的 Next.js 项目在审。

    2026-05-29 22:36:正式重建为 Steam to Calendar。 f4ecc8c Rebuild as Steam to Calendar 是大节点:改产品名、删除旧 docs/design assets、移除 src/lib catch-all,把架构拆成 app / features / domain / integrations / server / shared。品牌资源也从 wishlist-in-calendar-logo.png rename 成 steam-to-calendar-logo.png。

    2026-05-31 凌晨:再次打磨公开定位。 GStack 新项目 nickxudotme-steam-to-calendar 里生成了 Deal-first positioning for Steam to Calendar。核心用户原话是:这个产品“能无感在日历查看最近关注的游戏打折情况”。这时定位变成:wishlist 是输入方式,不是产品本身;核心价值是低噪音地把关注游戏的折扣/发售/预购/活动放进系统日历。

    2026-06-01:wishlist preview 开始流式化。 17efff5 Stream wishlist preview updates 增加 NDJSON streaming,让连接 wishlist 后可以先逐步显示 wishlist games,再等最终 calendar preview。这是体验从“等接口返回”变成“逐步有反馈”的节点。

    2026-06-02 到 2026-06-03:移动端、地区、币种、文案细节收口。 这里包括移动端 intro sheet、locale selector、wishlist rate-limit 友好文案、历史价格币种格式化、币种 mismatch note、region refresh 时显示 loading currency。.gstack/browse-startup-error.log 也在 2026-06-03 00:02 留下一条浏览器启动失败记录,和当时本地/浏览器验证不太顺的记忆对得上。

    2026-06-03 到 2026-06-04:从产品变成可观测的生产服务。 先加 observability events,再切到 Umami,后来改成 self-hosted Umami,加 server analytics、ops reporting script、session replays、preview telemetry。到 2026-06-04,项目已经不只是能生成日历,而是能看部署和用户行为信号了。

我看完之后有个感觉:

你现在列的是开发日志。

但真正有价值的其实是:

一个后端开发者如何借助 AI,在 14 天内完成第一个真实产品。

所以我建议不要按照时间顺序写。

而是按照「认知变化」组织。

因为很多读者根本不关心你哪天 commit 了什么,他们关心的是:

你为什么做?

怎么做的?

遇到了什么问题?

AI 到底能做到什么程度?

最后有什么收获?

我会这么组织:

Steam to Calendar:14 天,从一个想法到一个真实产品

前言

关于我

  • 腾讯云 DBA / SRE

  • 后端开发出身

  • 不会设计

  • 不会前端

关于项目

Steam to Calendar

一句话介绍

关于现状

  • 上线时间

  • GitHub Star

  • V2EX 数据

  • 当前访问量

以及最重要的一句话:

整个项目几乎完全由 AI 辅助完成,我没有手写过一行业务代码。

第一章 为什么我要做独立产品

大厂工作与理想的落差

  • 工作内容

  • 对未来的思考

《纳瓦尔宝典》

  • 为什么影响这么大

我想验证什么

不是赚钱

而是验证:

一个人能不能把脑海里的产品真正做出来

第二章 一个偶然出现的 Idea

Weather in Calendar

V2EX 上看到的项目

那个让我羡慕的瞬间

为什么别人总能想到这种 Idea

ChatGPT 的发散

从天气开始

扩展到:

  • Steam

  • 游戏

  • 愿望单

最终形成 Wishlist in Calendar

第三章 AI 像一个产品经理一样挑战我

这里其实特别有意思。

GStack 连续追问

  • 用户是谁

  • 为什么需要

  • 为什么用日历

  • 怎么传播

  • 为什么不是 App

产品定位不断变化

Wishlist in Calendar

Steam Events

Steam Sale Calendar

Steam to Calendar

我第一次意识到

产品定位比代码重要

第四章 我以为在写代码,其实在做产品

这是全文最精彩的一章。

Logo

域名

Hero 区

Landing Page

CTA

文案

名字

花的时间远超编码

第五章 AI 时代的开发方式

设计图生成

ChatGPT

Codex

Banana

Image2

来回切换

为什么 AI 生成的网站总有股 AI 味

这一段可以写你的思考

很有价值

我是怎么修的

截图

标注

重新生成

继续截图

继续改

AI 更像实习生

需要持续指导

而不是一句 Prompt 出奇迹

第六章 开发过程中踩过的坑

数据源问题

Steam

SteamDB

SteamCLI

最后为什么独立成 CLI

AI 屎山问题

3000 行 TypeScript

越来越难维护

用 AI 审查 AI

这是非常好的标题

让 Codex 开 Goal Mode

跑 3 小时 40 分钟

几十个 Sub-Agent

互相 Review

最终重构

不断推翻自己

产品名

定位

设计

架构

全部重来过

第七章 最疯狂的那几天

这里可以写得有画面感。

上班远程指挥 Codex

凌晨三点还在调 UI

Plus 配额打光

开 Pro

Pro 配额也打光

想起还有 Trae Pro

这部分其实特别有独立开发者味道。

第八章 部署、上线与推广

为什么选择 Next.js + Vercel

给 AI 配置 Vercel CLI

第一次真正上线

发到 V2EX

收获几个 Star

收获一句「牛逼」

收获第一次陌生人认可

第九章 产品上线后才是真正开始

这个标题很好。

Analytics

Vercel

Umami

Self-hosted Umami

让 Codex 自己 SSH

自己部署

自己创建 Tunnel

自动分析用户行为

看用户卡在哪一步

自动给出改进建议

第十章 Steam to Calendar 是怎么一步步长大的

这里直接放时间线。

你的时间线素材非常好。

用 Timeline 形式即可。

2026-05-20

2026-05-21

2026-06-04

让读者看到:

原来这个项目真的是一点一点长出来的。

第十一章 AI 改变了什么

这是全文真正想表达的东西。

构建能力越来越廉价

产品能力越来越重要

设计能力越来越重要

运营能力越来越重要

想法不再稀缺

执行与判断才稀缺

结语

这个项目成功了吗

也许没有

这个项目失败了吗

也没有

它最大的价值是什么

让我第一次完整经历:

发现问题

产品设计

开发

上线

推广

用户反馈

迭代

这一整条链路

我觉得这样组织以后,这篇文章会从:

「Steam Calendar 开发记录」

变成:

「一个后端工程师借助 AI 完成第一个真实产品的全过程」

后者的传播性和长期价值会大很多。因为几年后你自己回来看,真正重要的也不是 Steam,而是这次从 0 到 1 的经历。

回到时间线