开发 Parakeet:我 18 岁时的第一个 SaaS 产品
· 7 分钟阅读
缘起
我与 Twitter 的故事始于 17 岁。那还是在疫情封控期间,我刚开始在 Fiverr 上接单做自由职业者,主要写一些小脚本和 Python 项目。
有一天,一位客户找我写个脚本来自动化管理一些 Twitter 账号。起初只是为了他自己用,但后来他让我加个简单的可视化界面以便操作。接着,他开始把这东西卖给身边的朋友,SeigRobotics 顺势成立。这家公司确实赚到了钱,但由于我们卖的是终身授权(买断制),每个月都要为寻找新客户发愁。最终,开发停滞,公司也就此解散。
几个月后,我仍然和 SeigRobotics 的老客户保持着联系。综合他们的反馈,我决定开发 Parakeet——一款专为 Twitter 自动化重度用户打造、功能更强大的工具。这一次,我决定采用订阅制的商业模式。
https://thibault.sh/assets/parakeet/Parakeet_IO_Promo_Video.m4v
市场切入点
当时,炒鞋是一个利润丰厚且极为火爆的行当。人们通过制作“抢购机器人(bots)”来拼手速,抢夺限量款球鞋。
这些机器人的售价甚至高达 4000 美元以上。为了做推广,这些机器人开发商会在 Twitter 上举办抽奖活动,给幸运用户免费赠送使用授权。
Parakeet 最初瞄准的就是这个利基市场的用户,帮他们自动参与抽奖,赢取抢鞋工具的授权。在 Parakeet 运营的最后一年里,大部分用户又转向了加密货币或在线赌场的抽奖活动(主阵地依然在 Twitter 上)。
开发阶段
软件构建
一切从零开始。我最终选择了 Electron 和 React 来构建 UI,并使用了 mantine.dev 组件库来设计界面。
为此,我还不得不从头学习 Node.js 开发和 TypeScript。
规避机器人检测
做 Twitter 自动化,最大的难题就是如何防止账号被封。为此我尝试了多种方案。
代理
起初我使用的是动态轮换代理,但事实证明这并非最优解。后来我重新设计了一套系统,让一小批账号(最多 3-4 个)固定使用同一个代理 IP。
浏览器自动化
一开始,我们用的是公开 API,后来切换到了“浏览器模式”。软件会在后台启动无头浏览器窗口,并在账号上执行各项任务。这种方案初期效果不错,但用户一直抱怨它太占资源(CPU 占用高、代理流量消耗大)。于是我只能去逆向工程 Twitter 网站,挖掘它的私有接口。
验证码与 Twitter 的“安全挑战”
有时,当 Twitter 发现账号存在异常活动时,就会将其“锁定”,直到你完成某项验证任务(如图形验证码、手机号验证,或是熬过临时封禁)才能解锁。我必须设计一套机制,在用户账号被锁定时自动检测并发送通知。最终,我还接入了 2captcha 的 API 来自动打码。
商业增长与挑战
项目初期,我身边有一小群核心用户,他们深度参与了产品的研发过程,积极提供反馈并提交 bug 报告。 我也在 Twitter 上做了一些营销推广,但很快就遇到了用户增长瓶颈。在砸钱做大规模营销或花钱雇人帮忙这方面,我显得不够自信,畏首畏尾。
后来有人主动联系我,提出用股权换取他为 Parakeet 做市场营销的方案,我答应了。现在回想起来,这可能是一个错误——营销效果并不理想,而我却因此白白流失了股权。
那时我还是个学生,只能利用课余时间开发和维护项目。毕业后,我开始全职从事自由职业,继续投入在 Parakeet 上的时间与其产生的收益已经不成正比,于是我最终放弃了这个项目。
后来埃隆·马斯克收购了 Twitter 并进行了一系列大刀阔斧的改革,Parakeet 的许多功能随之失效,用户也开始逐渐退订。
回顾与反思
尽管 Parakeet 并没有取得我所期望的那种巨大成功,但这段经历依然无比宝贵。 我在编程、商业运营甚至“税务”处理上都学到了极多的知识。这段履历也让我在开启全职自由职业生涯时,有了向客户展示自身实力的硬核资本。
自 Parakeet 之后,我更加渴望能够开启下一个成功的创业项目。
彩蛋:
产品的用户文档(内含部分 App 截图): Parakeet User docs
在这里,你可以看到 Parakeet 在我大学期间为我带来的总收入:

