Same Page 同页聊天项目

我决定把之前写过的关于这个项目的文章汇总在我的博客这里。

记录一下我最近在做的 side project,想法很简单 - 和正在浏览相同网页的人实时聊天,注意必须是具体到网页而不是整个网站,因为只有在相同网页上,人们才能就该网页的具体内容展开讨论,浏览相同网页的人通常也有相似的兴趣点,所以这也可以算是基于兴趣的陌生人交友方式。

要如何实现这个想法呢,我显然不可能命令全世界所有网站都加上在线聊天的功能,但我或许可以让对这个功能有需求的用户在他们的浏览器上安装一个小小的插件。我本身是全栈工程师,抽时间自学了一下怎么写 Chrome Extension,很快项目就初具雏形。

chat_done

和正在看同一个视频的人在线聊天

luna

用户资料页面,头像,名字,自我介绍

我很快将插件发布在了 Chrome Web Store,因为没有任何宣传,所以下载量并不高,但我仍然得到了一些反馈,有用户对于隐私问题表示担忧,确实,在使用这个插件的时候,当别人碰巧在和你相同的网页时,别人就知道了你也正在浏览这个网页,而你可能不想让任何人知道你在浏览某些特定的网页,即便对方是陌生人,更何况确实有可能碰到现实生话里认识的人。

隐私问题永远不容小觑,因此,我决定给插件添加白名单的限制或者黑名单的限制,黑名单可以让用户选择在哪些网站上不要运行这个插件,白名单则相反。白名单的限制远比黑名单多,在手动把网站加入白名单之前,这个插件永远不会运行。我想了很久,最终还是决定采取白名单的方式,毕竟对于隐私问题,还是稳妥一些好。

插件发布后等了一段时间,下载量龟速增长,于是我开始思考要怎么宣传一下这个产品。

不像写代码,宣传推广这方面我是一窍不通,在网上简单了解了一下后,我决定先写一篇软文试试。Chat Anywhere 这个产品主打的是根据兴趣出发的陌生人交友,于是我在 medium 上写了一篇名为 More casual way to make new friends on the Internet 的文章。

基本大意就是现在市场上已有的那些陌生人交友软件/网站都不好用,交友意图过于明显,聊起天来总觉得不自然,各种尬聊,反观这款 Chat Anywhere 则让人眼前一亮,从兴趣出发,完美解决聊天没有话题的痛点,在相同页面上偶遇,可以很自然的聊页面上的内容,可能是一集电视剧,一部电影,一首歌,一篇文章,等等等等。这篇软文表现非常”优秀”,一周过去了,总共只有 3 次点击,感觉我自己都点了不只 3 次。。。

软文已经尝试过了,接下来我想,不如录个视频介绍怎么使用这款插件好了,可以从用户的角度去介绍。很快我就录好了视频,但录完发现我的口语还是很不地道,不能让外国用户信服。我想起了之前用过一个叫 fiverr 的网站,可以很便宜的买别人提供的服务,于是找了一个配音服务,把我的声音换掉了,感觉最后出来的效果还不错。

我在 Fiverr 上看到还有一种用动画介绍你的产品的服务,价格也不贵,100 多美元就好,于是就顺便也做了一个。

我把第一个视频在知乎和 reddit 上都发了一下,得到了不错的反响,第二个动画广告则放在了 Youtube 的视频广告里,开销限制为每天最多花我 5 刀,可能一天顶多会有两三次点击,没办法,side project 嘛~

上一篇提到我做了一些宣传推广的尝试,视频介绍的效果还不错,但我很快发现一个重要的问题,那就是在同一个网页实时聊天这个核心功能,在前期用户量很小的情况下是根本不存在的!简单来说就是在只有几百人安装了这个插件的当下,有两个人碰巧在同一时刻在浏览同一个网页的概率近乎为零。结果就是很多感兴趣的人下载了插件,在尝试了几个网页都碰不到人后,就会失望的选择卸载插件。。。

这个问题我在做这个项目的中途也想到过,当时我在网上读了一些文章,还记得下面几篇文章对我比较有启发。

社交产品的冷启动

社交产品从零到 Critical Mass

第一篇讲了社交产品冷启动确实很难,一个解决办法是让这个产品有 Single User Utility,就是说当一个用户在使用你的产品时,即便没有任何其他用户,他也愿意因为你产品社交之外的其他功能继续使用你的产品。文章拿 Pinterest 举例,即便没有其他人,用户自己就可以单纯用 Pinterest 保存自己偶遇,感到喜欢的网页。

第二篇文章举了 Youtube 和 Facebook 的例子,最开始没有用户的时候,新用户点进来看没有人,很快就会头也不回的走掉,但少数人走前可能会上传一些内容,逐渐的网站有了一些内容,新来的人离开没有那么快了,慢慢的网站会达到一个作者称为 Critical Mass 的用户量,这时候新来的用户大多会觉得社区是有内容,有人气的,并且愿意留下来,从那以后网站的发展就会顺利很多。

于是我做了两个新功能,一个是网页留言功能,和在线聊天不同,留言会永远的留在这个网页上,很久之后别的用户经过这个网站可以看到前人的留言,可以回复留言,也可以直接发私信联系对方。有时候你在某网站买了质量糟糕的产品,但网站本身没有地方留言让你给差评,就可以用这个插件留言告诫后人了,想想还是挺有用的功能呢!

另一个功能是允许用户暴露自己所在的位置让别人发现自己,这样即便在前期用户量很低的情况下也能找到别的活人。我专门在网站上做了一个页面,想用比较有意思的形式来展示在线的用户。

这个页面是实时的,显示哪些用户在哪些网站上,页面有简单的交互,可以拖动每个节点,点击节点可以显示用户名片,以及此时此刻在哪个网页上等等。

尽管我自己很满意上面这个新作品,觉得视觉上看起来挺有趣,但很快我发觉它并不好用,因为用户首先需要离开当前页面去打开一个独立的网页,而打开这个页面后也不能立刻知道别人在什么网页上,得一个个的打开具体的链接。于是最近我把这个页面去掉,并直接在插件里增加了查看邀请发送邀请的功能,它的交互很非常简单,并且可以直接看到邀请人所在页面的标题,点击邀请链接后会从当前页面直接跳到目标页面,整个过程中都不用打开新的页面。


如果该插件有了数量可观的活跃用户,这个邀请功能还可以做很多改进,假设有成千上万的邀请,那么用户应该可以选择只看自己感兴趣方面的邀请,比如电视剧,动漫,新闻,音乐,综艺等等,或者直接搜索关键字,比如只看含有“周杰伦”三个字的邀请。

然而!对于目前区区几百人的用户量来说,经过一周左右的实验,我发现实际情况是这个邀请栏经常是空的,偶尔会有一个两个邀请。更糟糕的是,多数用户平时是把聊天盒最小化或者关闭以免遮挡网页内容,所以难得有人发出了邀请其他用户也不会看到。

邀请弹幕

针对邀请没人会看到这个问题,我意识到可以利用之前已经开发好的弹幕功能,慢悠悠横穿过整个浏览器窗口的弹幕可以很好的引起用户注意,弹幕功能虽然设计之初只是用来显示聊天信息的,同时用它显示用户收到的邀请似乎也没什么问题。

邀请弹幕这个功能发布后,我终于偶尔能看到有人在使用这个插件了,尽管很多用户发邀请其实只是好奇是否真的有人会过来看看,并不是真的发现了什么有趣的网页内容想找人一起分享。我同时也意识到一个小问题,就是邀请弹幕非常醒目,如果用户上班的时候屏幕上突然划过一个少儿不宜的邀请弹幕就非常尴尬了。于是我增加了一个选项 - 只显示来自相同网站的邀请,即如果你正浏览着知乎,弹幕只会显示来自知乎的邀请,只有当你本身在浏览少儿不宜网站的时候,你才会看到少儿不宜的弹幕,这样就安全多了。

其他改进

在实现弹幕邀请功能的同时,我还收获了两条非常好的建议,都来自知乎用户@马小帅:

  1. 开发全中文版的用户界面
  2. 让访问相同网站的所有用户可以一起聊天

对于第一条,我原本一直以为该插件功能简单,区区几处的英文提示并不重要,经过提醒才认识到英文带来的不便和距离感。我本身作为开发者,对于插件的所有功能早已了若指掌,不太在意插件的文字提示,导致我忽视了软件本地化这个很基本的问题。

至于第二条,前面已经提到了,用户们同时访问相同页面的概率着实太低,与其让用户自己孤零零一个进入当前页面的聊天室,还不如让用户加入整个网站的聊天室,这样用户们聚到一块儿的概率大大增加了,果然,在做了这个改动后,我在知乎,百度,谷歌等热门网站的聊天室里总能看到一些用户,虽然他们不一定在聊天,至少看上去热闹多了,用户不用再怀疑是不是只有自己在使用这个插件,并且如果用户想,他随时可以一键切换回同网页的聊天室。

另外有趣的是,插件的邀请功能永远是邀请大家去用户所在的具体网页而非网站,因此如果用户加入网站的聊天室,当他按下发送邀请的按钮后,他会先被切换到当前网页的聊天室,然后再发出加入该网页的邀请。

好友功能

在 Chat Anywhere 的论坛上,有网友建议增加好友功能,方便用户之间保持联系。不能否认,好友功能是社交应用的基本功能,我并没开发它的原因是觉得它和私信功能有一定重叠,因为只要向陌生人随便发一条信息,两个人的信箱里就会保留下这段对话,从而日后可以随时联系。

另外一个没开发的原因是我还没有想好这个好友功能是像微信那样申请好友后需要被申请者同意;还是像知乎,微博那样是一个关注与被关注的单方面关系。好友功能可以拓展出一些有用的功能,比如发送邀请时,用户可以选择让这个邀请只发给他的好友而不是全服务器所有用户,显示收到的邀请时用户也可以选择只显示自己好友发出的邀请。我还得继续考虑一下这个功能。

上篇讲到插件增加了邀请功能,并且让邀请以弹幕的形式划过屏幕,吸引其他用户注意力。

距离上篇文章已经过去一个月了,今天刚好是 2019 年 1 月 1 日,这期间开发有什么进展呢?

首先要说的还是邀请功能,这个功能虽然挺有趣,但不幸的是它被滥用了,因为没有任何管理措施,有的用户用它不停的发邀请宣传推广自己经营的小网站,有的用户则时不时发一些色情网站的邀请,不少用户不胜其烦,最终卸载了插件。

为了解决这个问题,邀请功能现在变成了三个选项:

  1. 邀请关注者

  2. 邀请同网站的用户

  3. 邀请全网所有用户。

这样邀请者自己可以决定邀请对象,因为有时候邀请者也不想骚扰全部用户。选项 2 和 3 就不用多解释了,字面意思,选项 1 则是来自一个全新的设计 - 关注系统。上一篇文章里提到过,有用户建议做一个加好友的功能,而我没有加入这个功能的主要原因就是没想清楚加好友具体有什么作用,如果仅仅是为了保持联系,已有的私信功能基本可以胜任。改良邀请功能的时候我发现微博、知乎这种单向的关注模式刚好可以搭配邀请功能,志同道合的人可以互相关注,发现了彼此都会感兴趣的网页,就发邀请叫来一起边看边聊,而不会打扰对此不感兴趣的其他用户。

同时也增加了一个积分系统对邀请功能进行更多的限制:

  1. 邀请关注者 不耗费积分

  2. 邀请同网站的用户 耗费 1 分积分

  3. 邀请全网所有用户。 耗费 10 分积分,暂定,随着用户增加会逐渐增加

用户每天登录可以自动获得 10 分积分,所以大概可以每天发 10 次同网站的邀请,1 次全网的邀请。发邀请给关注者没有积分限制,可以随便发,关注者如果不感兴趣随时取关即可。这个积分系统任重道远,还需要继续打磨,有想法的朋友欢迎联系我讨论!

同网页 vs 同网站聊天?

同网页还是同网站聊天,这个问题前面文章提到过,初衷自然是同网页聊天,后来因为人太少,同网页从来碰不到人,便改成了默认加入同网站聊天,并允许用户随时切换。改完之后,发现百度是用户使用最频繁的网站,总是有 100 多人在线。然而这 100 人却没有合适的话题,毕竟在国内大家都用百度搜索,在百度碰到一起根本没有什么出奇,最常见的话题可能是 - “大兄弟,你在哪里看到这个插件的?知乎。哈哈,我也是。”

尬聊是不会有结果的,对于同网页还是同网站聊天这个问题,我终于想到了更好的解决办法。其实很简单,就是先看用户所在的具体页面是否有其他人,如果有的话,就进入同网页聊天,如果没有,才进入同网站聊天。如果用户 A 打开了 bilibili 某个视频页面时并没有其他人也在这个页面,A 就会加入同网站聊天,但是如果五分钟后用户 B 恰好也打开了 bilibili 同一个视频页面,那么 B 就会进入同网页聊天,同时把 A 从同网站聊天拽进同网页聊天。A 和 B 两个人就可以针对相同网页内容聊天了。

同时我在网页右下角放置了一个小圆圈,里面的数字表示有多少人和你在相同的聊天室,如果是同网页的,则小圆圈是蓝色的。这个新增的小圆圈虽然简单,却是这个小插件功能的核心体现,毕竟我们不是每时每刻都有空聊天,但看看右下角获悉当前网站/网页有多少其他用户,倒也饶有趣味不是吗?

(这是 v2.6.1 才加入的功能,早期版本必须升级才能使用。)


本博客所有文章除特别声明外,均采用 CC BY-SA 3.0协议 。转载请注明出处!

留言

Avril洛杉矶演唱会 上一篇
告一段落,认识新朋友 下一篇

 目录