<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>xiaokeai (Jamie Cole)</title>
    <link>https://beta.w2solo.com/xiaokeai</link>
    <description></description>
    <language>en-us</language>
    <item>
      <title>从 SaaS 模板到 Image to Video AI：独立开发一个月的真实复盘</title>
      <description>&lt;p&gt;大家好，最近差不多一个月，我一直在迭代自己的产品：&lt;/p&gt;

&lt;p&gt;&lt;a href="https://imagetovideoai.tools/" rel="nofollow" target="_blank" title=""&gt;Image to Video AI&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;这是一个把静态图片转换成 AI 视频的在线工具，也是我正在长期推进的商业项目。&lt;/p&gt;

&lt;p&gt;我最初给自己定的目标很直接：围绕 Image to Video AI 这个方向持续迭代，直到真正获得市场验证。&lt;/p&gt;

&lt;p&gt;现在回头看，这一个月最大的变化，并不是又接入了多少模型，而是我逐渐从 “做出一个能运行的网站”，走到了 “开始理解一个产品应该怎样成立”。&lt;/p&gt;
&lt;h2 id="从 SaaS 模板开始"&gt;从 SaaS 模板开始&lt;/h2&gt;
&lt;p&gt;这个项目不是从空目录创建的，而是基于一套已经具备登录、支付、积分、数据库和后台能力的 SaaS 模板。&lt;/p&gt;

&lt;p&gt;这样做的好处很明显：不用重新搭建所有基础设施，可以更快进入产品开发。&lt;/p&gt;

&lt;p&gt;但模板同样带来了旧品牌、旧页面、旧文案，以及不适合新产品的业务逻辑。&lt;/p&gt;

&lt;p&gt;一开始，我以为换掉域名、Logo 和首页文案，产品身份就完成了。后来才发现，真正困难的是判断哪些东西不属于这个产品，并且敢于将它们删除。&lt;/p&gt;

&lt;p&gt;我现在对模板的理解是：&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;模板只能帮你快速开始，不能替你完成产品定位。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="从制作页面到设计产品结构"&gt;从制作页面到设计产品结构&lt;/h2&gt;
&lt;p&gt;刚开始，我主要关心首页好不好看、SEO 页面够不够多、工具入口是否完整。&lt;/p&gt;

&lt;p&gt;后来页面越来越多，我发现如果每个页面都独立实现一套生成逻辑，项目很快就会失控。&lt;/p&gt;

&lt;p&gt;首页、完整工作台和不同工具页面承担的任务不一样，但模型能力、输入规则、积分计算、任务状态和生成结果又必须保持一致。&lt;/p&gt;

&lt;p&gt;这一阶段做了不少返工，也让我逐渐理解：&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;复用组件不等于复制页面。真正应该统一的是业务能力和状态协议，而不是强迫所有页面长得一样。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="接通模型只是整个流程的开始"&gt;接通模型只是整个流程的开始&lt;/h2&gt;
&lt;p&gt;在做这个项目之前，我以为最困难的事情是接入视频生成模型。&lt;/p&gt;

&lt;p&gt;真正做下来才发现，调用 API 反而是相对明确的部分。&lt;/p&gt;

&lt;p&gt;一个模型要真正成为产品能力，还需要处理：&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;不同输入模式和参数限制&lt;/li&gt;
&lt;li&gt;服务端积分计算&lt;/li&gt;
&lt;li&gt;任务提交与结果查询&lt;/li&gt;
&lt;li&gt;超时后的继续跟踪&lt;/li&gt;
&lt;li&gt;失败后的积分返还&lt;/li&gt;
&lt;li&gt;页面刷新后的任务恢复&lt;/li&gt;
&lt;li&gt;生成结果的保存与历史记录&lt;/li&gt;
&lt;li&gt;不同供应商返回结果的统一处理&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;特别是涉及积分以后，很多看起来很小的问题都会变成信任问题。&lt;/p&gt;

&lt;p&gt;Provider 已经收到请求，但网站没有拿到明确结果时，能不能直接重试？&lt;/p&gt;

&lt;p&gt;任务暂时没有返回，应该继续观察原任务，还是创建一个新任务？&lt;/p&gt;

&lt;p&gt;失败退款执行两次，会不会重复增加积分？&lt;/p&gt;

&lt;p&gt;做完这些以后，我越来越觉得：&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;AI SaaS 的核心不只是生成质量，而是系统发生意外以后，仍然能够把任务、账目和结果处理正确。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="功能越多，越需要保证商业真实性"&gt;功能越多，越需要保证商业真实性&lt;/h2&gt;
&lt;p&gt;随着模型和套餐增加，另一个问题开始出现：信息很容易不一致。&lt;/p&gt;

&lt;p&gt;前端显示一个积分价格，服务端实际扣另一个价格；页面写着支持某个参数，当前模型却不支持；促销文案已经更新，但利润计算仍然使用旧成本。&lt;/p&gt;

&lt;p&gt;这些问题不一定会马上让网站崩溃，但会慢慢消耗用户信任。&lt;/p&gt;

&lt;p&gt;所以后来我开始把模型能力、积分扣费、促销价格和供应商成本分别建立明确的数据来源，并要求服务端根据真实生成参数独立计算费用。&lt;/p&gt;

&lt;p&gt;这件事看起来没有增加新功能，却让我第一次感觉这个项目正在从 “网站” 变成 “产品”。&lt;/p&gt;
&lt;h2 id="AI 提高了开发速度，也放大了过度开发的问题"&gt;AI 提高了开发速度，也放大了过度开发的问题&lt;/h2&gt;
&lt;p&gt;整个项目大量使用了 AI 协作开发。&lt;/p&gt;

&lt;p&gt;AI 确实让代码实现速度变快了，但速度越快，越容易产生一种错觉：好像只要继续增加模型、页面和功能，产品就会自然变好。&lt;/p&gt;

&lt;p&gt;实际上，开发能力提升以后，真正稀缺的反而变成了判断和取舍：&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;哪些功能现在必须做？&lt;/li&gt;
&lt;li&gt;哪些只是看起来很完整？&lt;/li&gt;
&lt;li&gt;哪些问题属于用户真正关心的体验？&lt;/li&gt;
&lt;li&gt;哪些只是开发者自己的自我满足？&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;我现在越来越警惕用 “继续开发” 回避 “市场验证”。&lt;/p&gt;
&lt;h2 id="目前还不能把它写成成功故事"&gt;目前还不能把它写成成功故事&lt;/h2&gt;
&lt;p&gt;现在，Image to Video AI 已经拥有比较完整的生成、计费、任务和结果链路。&lt;/p&gt;

&lt;p&gt;但产品能够运行，与产品获得市场验证，仍然是两件不同的事情。&lt;/p&gt;

&lt;p&gt;代码可以不断迭代，模型也可以不断增加，但市场不会因为项目写了很多代码，就自动给出用户和订单。&lt;/p&gt;

&lt;p&gt;下一阶段我更想验证的是：&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;用户为什么选择这个产品，而不是其他 AI 视频工具？&lt;/li&gt;
&lt;li&gt;什么样的用户会持续使用？&lt;/li&gt;
&lt;li&gt;产品能不能获得相对稳定的流量？&lt;/li&gt;
&lt;li&gt;用户是否愿意为生成体验付费？&lt;/li&gt;
&lt;li&gt;继续增加功能，究竟是在解决问题，还是在回避推广？&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;这篇文章不是成功复盘，只是记录产品从模板起步，到逐渐形成自己结构的第一个阶段。&lt;/p&gt;

&lt;p&gt;以后如果跨过了市场验证这道门槛，我会继续写下一篇。&lt;/p&gt;

&lt;p&gt;如果最后没有跨过去，也值得认真记录失败发生在哪里。&lt;/p&gt;</description>
      <author>xiaokeai</author>
      <pubDate>Thu, 20 Aug 2026 21:45:08 +0800</pubDate>
      <link>https://beta.w2solo.com/topics/8135</link>
      <guid>https://beta.w2solo.com/topics/8135</guid>
    </item>
    <item>
      <title>独立开发分享：基于 TanStack Start + Cloudflare 全家桶撸了一个 4 秒极速 AI 生图工具 NanoScene AI</title>
      <description>&lt;p&gt;各位 Solo 圈的朋友们好 &lt;/p&gt;

&lt;p&gt;最近把做的一个小产品 NanoScene AI 搞上线了，这是一个主打极速、低算力成本的 AI 图像生成与编辑的 Web App。因为是自己独立开发的第一步，想在这里真诚地和大家分享一下我的技术方案、遇到的坑以及开发初衷，顺便希望能收获大家的一些真实意见。&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;体验地址：&lt;a href="https://nanosceneai.com" rel="nofollow" target="_blank"&gt;https://nanosceneai.com&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;hr&gt;
&lt;h3 id="一、 为什么想做这个产品？"&gt;一、 为什么想做这个产品？&lt;/h3&gt;
&lt;p&gt;目前市面上的主流生图工具（比如 Midjourney，或者某些大厂的 SD 托管服务），普遍面临两个痛点：&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;生成延迟长&lt;/strong&gt;：生一张图往往要等 20s 到几十秒甚至更长，在做 UI Mockup 或者快速脑暴视觉时，频繁的等待非常容易打断工作流。&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;算力成本偏贵&lt;/strong&gt;：对于非重度用户来说，每个月高昂的订阅费有些浪费。&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;后来我注意到了 Nano Banana 2 Lite 模型。虽然它是一个 distilled（蒸馏）过的轻量级模型，但生图效率极高，单图推理成本折合下来很低。于是我想，为什么不利用这个引擎，做一个极速、低成本，且在浏览器里开箱即用的生图工作流呢？&lt;/p&gt;

&lt;hr&gt;
&lt;h3 id="二、 技术栈与架构分享"&gt;二、 技术栈与架构分享&lt;/h3&gt;
&lt;p&gt;为了让整套服务做到零硬件维护成本，且在冷启动阶段几乎不产生服务器开销，我采用了以下全 Serverless 架构：&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;strong&gt;前端 &amp;amp; 路由框架&lt;/strong&gt;：TanStack Start (V3)。这是我第一次在生产环境完整体验 TanStack Start，它的 Server Fn (服务端函数) 在处理数据请求时极度顺手，结合 TanStack Query 使得前端状态同步非常舒服。&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;样式与 UI&lt;/strong&gt;：Tailwind CSS 4 + shadcn/ui。Tailwind CSS 4 的配置比老版本精简了许多，对整体包体积优化也有帮助。&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;后端 &amp;amp; 基础设施&lt;/strong&gt;：Nitro 框架部署在 Cloudflare Workers。&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;数据库&lt;/strong&gt;：Cloudflare D1 (SQLite) 数据库，用来存放用户配置、积分和订单数据。&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;国际化&lt;/strong&gt;：Paraglide JS。对于独立开发出海来说，多语言几乎是标配。Paraglide 在 Nitro/TanStack Start 的路由重写中表现优秀，无缝适配了多语言路径。&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;因为服务器开销基本就是 Cloudflare 的免费额度或低额计费，所以我们有底气给所有注册用户每天赠送免费额度，供大家随便折腾。&lt;/p&gt;

&lt;hr&gt;
&lt;h3 id="三、 独立开发中踩到的坑"&gt;三、 独立开发中踩到的坑&lt;/h3&gt;
&lt;p&gt;在部署到 Cloudflare Workers 的过程中，有几个细节让我折腾了不少时间，分享给准备走类似技术路线的朋友：&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt; &lt;strong&gt;敏感 API 密钥的安全性&lt;/strong&gt;：
起初我打算直接将第三方 AI 接口的 Key 堆在 &lt;code&gt;.env&lt;/code&gt; 或 Workers 的环境变量中。但这样不方便在运行时灵活切换和控制。后来我们重新设计了流程：把 API 密匙加密存储在 D1 数据库中。读取时，通过一个统一的 &lt;code&gt;getAllConfigs()&lt;/code&gt; 在服务端读取，由解密 Key（存放在 Workers 环境变量中保护）实时解密，且有内存缓存。这个设计虽然多走了一步，但极大地提升了 SaaS 模板后续变现和多接口动态管理的灵活性。&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;i18n 路由匹配问题&lt;/strong&gt;：
由于使用了 Paraglide 编译多语言，非默认语言（如中文）会带有 &lt;code&gt;/zh&lt;/code&gt; 前缀。这在配合 Nitro 服务端 API 路由时，需要仔细编写重写规则，否则会导致 API 调用 404。建议使用 locale-free 的路径进行内联导航，让路由库自动补全前缀。&lt;/li&gt;
&lt;/ol&gt;

&lt;hr&gt;
&lt;h3 id="四、 目前的功能与下一步计划"&gt;四、 目前的功能与下一步计划&lt;/h3&gt;
&lt;p&gt;目前 NanoScene AI 已经实现了：&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt; &lt;strong&gt;极速生图&lt;/strong&gt;：平均生成时间在 4 秒左右。&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;角色一致性 (Character Consistency)&lt;/strong&gt;：允许在不同 prompt 里复用相同角色风格。&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;K-level Upscaler&lt;/strong&gt;：把 1K 的低分辨率快速生成重建为 4K/8K 生产级画面。&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;一键背景移除&lt;/strong&gt;。&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;下一步规划&lt;/strong&gt;：
目前在尝试做基于轻量模型的视频生成能力，如果大家有兴趣，我很乐意在后续帖子中继续分享视频 pipeline 在 Cloudflare Workers 上的踩坑体验。&lt;/p&gt;

&lt;hr&gt;
&lt;h3 id="五、 期待大家的反馈"&gt;五、 期待大家的反馈&lt;/h3&gt;
&lt;p&gt;产品刚上线，肯定有很多不完美的地方（尤其是移动端适配和生图参数的调节）。非常期待社区各位大佬的板砖：&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  这个 4 秒的生图速度，相比你现在用的工具有优势吗？&lt;/li&gt;
&lt;li&gt;  对于这种偏向独立开发者/设计师的 Placeholder 生成，你觉得最缺的刚需功能是什么？&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;再次感谢大家能读到这里！&lt;/p&gt;</description>
      <author>xiaokeai</author>
      <pubDate>Wed, 08 Jul 2026 15:02:39 +0800</pubDate>
      <link>https://beta.w2solo.com/topics/7692</link>
      <guid>https://beta.w2solo.com/topics/7692</guid>
    </item>
    <item>
      <title>做了个 Wend Game Today：一个独立的单词路径练习站</title>
      <description>&lt;p&gt;大家好，最近做了一个小作品：Wend Game Today&lt;/p&gt;

&lt;p&gt;&lt;a href="https://wendgame.today" rel="nofollow" target="_blank"&gt;https://wendgame.today&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;这是一个免费的单词路径练习站。玩法比较轻量，适合每天花几分钟玩一局。&lt;/p&gt;

&lt;p&gt;规则核心：&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;横向或纵向连接相邻字母，不能斜着连&lt;/li&gt;
&lt;li&gt;找到所有隐藏单词&lt;/li&gt;
&lt;li&gt;每个开放格子必须且只能使用一次&lt;/li&gt;
&lt;li&gt;单词路径之间不能重叠&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;我做这个站的时候，发现它不能按普通 word search 来做。普通找词游戏通常是 “找得越多越好”，但这个玩法更像 exact-cover puzzle：所有开放格子最后必须被几条正确单词路径完整覆盖一次。&lt;/p&gt;

&lt;p&gt;所以现在的判断逻辑不是 “你拼出了一个英文词就算对”，而是必须匹配这盘题预设的 word + path。&lt;/p&gt;

&lt;p&gt;目前已经做了：&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;首页直接可玩&lt;/li&gt;
&lt;li&gt;支持拖动/点选连接字母&lt;/li&gt;
&lt;li&gt;Hint / Undo / Reset / Next puzzle&lt;/li&gt;
&lt;li&gt;中英文页面&lt;/li&gt;
&lt;li&gt;本地离线生成题库，再静态发布到站点&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;技术上用的是 TanStack Start + React + TypeScript，部署目标是 Cloudflare Workers。题目生成目前没有放在用户浏览器里实时随机跑，而是先离线生成并校验，再放进静态题库里，这样比较稳定，也方便后续筛词和控难度。&lt;/p&gt;

&lt;p&gt;现在还比较早期，已知不足：&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;题库数量还不多&lt;/li&gt;
&lt;li&gt;词表质量还需要继续筛&lt;/li&gt;
&lt;li&gt;还没有 archive&lt;/li&gt;
&lt;li&gt;还没有真正的 unlimited seed 模式&lt;/li&gt;
&lt;li&gt;也没有登录、排行榜、streak 这些东西&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;想听听大家几个方面的反馈：&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;移动端拖动手感怎么样&lt;/li&gt;
&lt;li&gt;规则说明是否清楚&lt;/li&gt;
&lt;li&gt;题目难度是否合理&lt;/li&gt;
&lt;li&gt;如果后面继续做，你会更想要 Daily 固定一题，还是 Unlimited 随机练习&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;欢迎直接提问题，尤其是玩法、交互、题库质量这几个方面。&lt;/p&gt;</description>
      <author>xiaokeai</author>
      <pubDate>Sat, 13 Jun 2026 19:43:53 +0800</pubDate>
      <link>https://beta.w2solo.com/topics/7537</link>
      <guid>https://beta.w2solo.com/topics/7537</guid>
    </item>
  </channel>
</rss>
