刚把Telegram Bot的webhook配置完,服务器就报警CPU飙到90%——Reddit的anti-bot机制比想象中狠,同一个IP连续请求二十次就直接给你降权,返回的都是上个小时的旧数据。
这帮炒币的疯子根本不知道数据有多脏。Twitter上#bitcoin标签下一半是机器人刷的“To the moon”,Reddit的r/CryptoCurrency板块里恐慌和贪婪的帖子像潮汐一样每小时变一次,更别提电报群里那些用谷歌翻译都读不通的俄语、韩语喊单。但越是这样,那群凌晨三点还盯着K线图的人就越愿意为“情绪指标”付钱——他们太需要有个东西来告诉自己“该贪婪了”或者“该跑了”,哪怕这玩意儿只是我把五百个来源的脏数据扔进TextBlob里跑出来的情感分数。
上个月在某个币圈沙龙厕所里,听见两个穿纪梵希T恤的年轻人讨论“市场情绪”,其中一个说“我感觉现在群里都在喊空,是不是该抄底了”。那一刻我就知道,铲子生意成了。他们口中的“感觉”,就是我要封装成API的商品。
技术栈还是老一套:Scrapy爬虫集群分国家部署代理池,专门对付Twitter的滚动加载和Reddit的oauth2验证;MongoDB存原始文本,字段里除了内容还得带时间戳、来源渠道、点赞数(点赞数权重我设了0.3,毕竟群众用脚投票的情绪更真实);情感分析模块试了三个库,最后用NLTK的VADER而不是更花哨的BERT——VADER对网络俚语和感叹号的敏感度意外地高,“Lambo soon!!!”和“Rug pull???”这种句子,BERT反而会懵逼。
真正的魔鬼在分布式抓取的节奏控制。每个蜘蛛都得模拟人类阅读速度,随机睡眠0.5到3秒,遇到验证码立刻切换备用IP池。有次为了抓某个韩国交易所的官方电报群,我写了套模拟手机客户端登录的脚本,结果触发风控被封了三个服务器IP。后来发现更取巧的办法:直接买二手安卓机,插上海外SIM卡用ADB控制,真机数据抓取成功率98%——硬件成本每月多八百,但省下三天调试时间。
封装成Telegram Bot时故意做了极简交互。用户只有三个命令:/feargreed 返回当前指数(0-100分),/trend 显示过去24小时情绪曲线图(用Matplotlib生成PNG发送),/alert 设置阈值提醒(比如“当指数低于30时私信我”)。付费墙设在/trend命令上,免费用户只能看到当前数值,想看历史趋势就得跳转到Stripe付款页面——每月19.9美元,支持ETH直接支付。
第一批种子用户是从之前做SEO时积累的海外金融类博客导流的。在BitcoinTalk论坛发了篇技术文章,标题叫《用NLP量化市场恐慌:三种情感分析模型在加密货币社区的对比》,正文里埋了Bot链接。七十二小时内涌进来三百多个用户,其中四十七个完成了订阅。最让我愣住的是有个日本用户连续发了十条消息问“能否增加4小时RSI情绪背离提醒”——他根本不在乎模型准不准,他要的是“别人没有的指标参数”,好让自己在群里看起来更专业。
昨晚两点收到Stripe的周报邮件,显示新增89个订阅者。算了下,这台情绪铲子每月刨出来的现金流已经够覆盖我所有服务器和代理IP成本,还多出三千刀零花钱。而此刻窗外比特币正在暴跌15%,电报群里挤满了“HODL”和“割肉”的咆哮。
我把Bot的警报阈值调到25,给自己发了条测试消息:“极端恐惧指数已触发,历史数据表明此时买入72小时后盈利概率68%。” 当然,这条消息永远不会发给付费用户——铲子可以告诉你哪里土松,但绝不会替淘金客决定下镐的时机。














