让我损失一年的错误
去年,我随意访问一个网站,却无法下载高清视频。作为一名开发者,当遇到问题时,我会想:“那我们来自己做吧。”于是我开始研究,发现这些网站中只有约0.2%是有效的,但充满了低质量的广告。我查看了它们的流量,震惊地发现竟有数千万的访问量。
我开始用常规的MEAN栈进行开发。当时我17岁,虽然会编程,但经验不足,只是被这些流量数字所驱动。我使用yt-dlp作为核心抓取工具,并结合其他备用方案,如youtube-dl和非官方的TikTok API。从各方面来看,我是在过度设计,试图构建一个万无一失的系统,备用方案层层叠加。花了两个月时间,最后修改一行代码意味着要修改15到20个文件。这就是糟糕的代码。
我重写了代码,去掉了外部依赖,利用yt-dlp在Node.js中高效运行。尽管如此,获取信息仍然很慢,需要10到15秒,下载又要再花10到15秒。我尝试优化参数和预热连接池,但仍然卡在9到10秒。此时我对速度变得痴迷,三个月过去了。
我尝试了bun,但没有实质性改善,命令行处理时间没有变化。于是我转向Go语言,15天内学会了它,重新构建了一遍,结果成功了,启动时间缩短到4到5秒。我拖延了一整周,享受这个小小的胜利。
第五个月,我进一步优化。意识到我们不需要完整的yt-dlp --dump-json元数据(5秒),转而使用oembed和iframely来获取即时的基本元数据(250毫秒),同时让yt-dlp在后台处理下载。
经过六个月的努力,我以“videosaver”这个名字发布了产品,但这个名字太常见,谷歌几乎没有索引,甚至没有为自己的名字排名。我意识到命名和域名的年龄比我想象的更重要。
我陷入了抑郁,思考了一个月。第八个月,我重建了前端,并重新品牌为“buckty”,采用了AI聊天机器人风格的用户界面,技术SEO在各处得分100/100。第九个月发布,快速且功能齐全,但仍然没有真正的流量。博客文章从未被索引。我在Medium和其他平台上写作,仍然没有效果。Cookies问题和IP限流不断出现。我尝试使用aria2来提高速度,但在服务器端效果不佳。反向链接也没有带来任何变化。
我开始在Instagram上创建主题页面,发布电影片段,一个月内获得了5万粉丝和超过7000万的覆盖率。我尝试将其转化为buckty的流量,开始发布搞笑图片,但在三天内,Meta因“机器人活动”封锁了我的账户,至今未能恢复。
我意识到快速下载和良好的用户界面并不是独特的卖点。我用Kotlin构建了一个移动应用,采用了“seal”式的直接下载分享功能,但在服务器端下载后再流式传输给用户。增加了Google Drive自动上传作为另一个卖点,通过Nest.js中间件连接Web和移动端,处理历史记录、驱动上传等一切。仍然存在Cookies问题,依然没有受众。决定不再增加新功能,专注于流量。
最后一个月,我尝试了各种SEO策略,但没有效果。我意识到真正的问题在于杠杆,竞争对手在进行黑帽批量反向链接,每月花费1万美元来获取20万美元的CPM广告。另一个真正的路径是赞助一个拥有真实受众的创作者来展示产品。
经过这一切,我的最终收获是……没有,也是一切。我学到了很多关于优化、设计和扩展的知识。但真正的教训是:产品不重要,营销才是关键。那些构建“AI包装”的人获得了我无法得到的关注,尽管我构建了一个真正的系统,而不是炒作。
因此,我决定将整个生态系统开源,包括移动应用和Web应用。它也可以在本地运行,使用wails将Web应用打包为自托管的系统应用,连接自己的账户,备份所有内容。设计时考虑到最小的维护需求,应该可以在六个月内无须干预地正常运行。在开源一周内,我将其放手,转向下一个项目。离开这样的项目很难,但离开任何让你痛苦的事情的最佳时机是你后悔的那一刻,而第二个最佳时机就是现在。
查看原文
last year i was randomly visiting a website and couldnt download a video in hd quality. as a dev, when smoething doesnt work, you think "let's build it." so i started researching and found like 0.2% of these sites actually worked, but full of shitty ads. checked their traffic and got shokced, tens of millions of visits.<p>started building with a regular MEAN stack. i was 17, knew how to code but wasnt experienced, just pushed by those traffic numbers. used yt-dlp as the core scraper along with other fallbacks like youtube-dl and unofficial tiktok apis. by all means i was overengineering, tryign to build a bulletproof system with fallback on fallback. took two months, and by the end changing one line meant touching 15 to 20 files. that's bad code.<p>rewrote it, stripped external deps, used yt-dlp efficiently in node js. still slow, 10 to 15 sec just to fetch info, another 10 to 15 to start download. tried optimizing args and prewarmed pools, still stuck around 9 to 10 sec. obsessed with speed at this point, 3 months gone.<p>tried bun, no real improvement, cmd process time was the smae. switched to golang, learned it in 15 days, rebuilt again, and it worked, 4 to 5 sec startup. procrastinated a full week just enjoying that small win.<p>month 5, optimized further. realized we didnt need full yt-dlp --dump-json metadata (5 sec), switched to oembed and iframely for instant basic metadata (250ms) while yt-dlp handled the download in the bakcground.<p>launched after 6 months under the name "videosaver," too common a name, google barely indexed it, didnt even rank for its own name. learned naming and domain age matter more than i thought.<p>depression hit, overthought for a month. month 8, rebuilt frontend and rebranded to "buckty," ai chatbot style ui, technical seo scored 100/100 everywhere. launched month 9, fast and functional, but still zero real traffic. blog posts never got indexed. wrote on medium, other platforms, still nothing. cookies issues and ip throttling kept coming up. tried aria2 for speed, bad call server side. backlinks didnt move the needle either.<p>started an instagram theme page posting movie clips, hit 50k followers and 70m+ reach in a month. tried converting it into traffic for buckty, started posting memes, and within 3 days meta blocked the account for bot-like activity. never recovered.<p>realized fast downloads and decent ui isnt a usp. built a mobile app in kotlin with direct-download-with-share like "seal," but downloading server side then streaming to the user. added google drive auto-upload as another usp, connected web and mobile through a nest js middleware sitting on top of the golang backend, handling history, drive uploads, everything. still had the cookies issue. still no audience. decided no more features, just focus on traffic.<p>spent the last month trying every seo strategy, nothing worked. realized the real issue was leverage, competitors were doing blackhat bulk backlinking, spending 10k a month to pull 200k a month in cpm ads. the other real path is sponsoring a creator with real audience to showcase the product.<p>after all this, my final takeaway is... nothing, and everything. learned a ton about optimization, design, scaling. but the real lesson: product is nothing, marketing is everything. people building "ai wrappers" get traction i couldnt, even though i built an actual system, not hype.<p>so i'm open sourcing the whole ecosystem, mobile app, web app, all of it. built to run locally too, using wails to package the web app as a self hosted system app, connect your own accounts, back everything up. designed it to need minimal maintenance, should run fine for 6 months untouched. within a week of open sourcing it, i'm leaving it and moving to the next project. hard to walk away from something like this, but the best time to leave anything that hurts you was the moment you regretted it, and the second best time is now.