用户体验

梁汝波:今日头条在消息推送逻辑详解

0
登录或者登记去做吧。

这篇文章是来自 2014年6月15日 今日头条的梁汝波在一次分享会上讲解的。

欢迎各位!我是今日头条的梁汝波。首先简单介绍一下今日头条。今日头条是一个资讯APP,是根据用户兴趣给用户推荐感兴趣的内容,用户用得时间越长,我们对用户兴趣了解也就越多,推荐也就更准确。对于内容创作者而言,我们是一个内容分发平台,帮助他们将好的内容更好地到达合适的用户。今日头条现在用户超过1.2亿,DAU超过1300万。

下面谈谈推送。推送有两个特点,一个是“异步”,可以在用户没有使用APP的时候,将消息推送给他,所以可以作为用户召回的一种手段;另一个是“快”且“实时”,因此它也是提高用户活跃度的一种方式。

对于资讯产品而言,非常重要的一点是推送的信息要对用户有用,另一点是及时,当出现重大的新闻资讯的时候,能够非常及时的到达用户。我后面会讲一下今日头条是如何实践这两点的。

推送对今日头条的效果,召回方面大概有20%的用户影响DAU。如果要让推送更好的提升用户活跃度,就需要关注一些指标。我们关注的指标第一个是点击率,这个有关用户体验,一条消息如果点击率越高,越是用户需要的,如果点击率较低,说明消息对更多用户是打扰。其实点击率还不是特别准确,最准确的应该是召回率,因为用户不一定是通过点击进入APP的。如果做得更精细一点,你可以查看消息推送以后的15-30分钟之内阅读的用户,这是通过召回获取到的。另外是点击量,点击量是跟推送频率和范围相关的,这是我们真正对产品而言,对用户活跃度,我们到底有多大的影响。另外我们要关心的是卸载和推送禁用量,如果你频繁推送用户,这也是提示用户卸载不错的方式。

我们推送的内容主要是突发、热点资讯,除此之外还有少部分结合产品功能的内容,比如你的评论被回复,你有好友要加入等等。推送方面我们一定不能过犹不及,一定要控制好频率,不能让推送打扰到用户。

我们在早期打算做推送的时候,做了一些调研,有些用户反馈说我们推得太多,也有一些用户反馈说我们推得太少,我们发现这其实是重口难调的事情,所以我们一直在做个性化推送,这方便我们比较拿手。

在个性化推送方面,我们作了一些尝试,一个是频率个性化。我们统计发现,对于不同的人,他们在点击率上是有明显差别的,而同一个人在一天中的不同时段点击也有差别,所以我们将时间作为一个维度,人作为一个维度,除此之外,我们将内容也作为一个维度,我们会统计在每个维度上每个人的接收频率,对于接收度高的用户,我们会推送的比较频繁,这样就可以把推送做得更好一些。

另外是内容个性化,内容个性化主要有两个方面,一个是基于地域,在地域方面我们做得比较深入,不仅仅是当前的提示,更重要的是用户关心什么事情,比如对于我来说,我还关心我老家的内容;另一个是信息,也就是对你感兴趣的内容和时效性的内容,这些方面用户有强烈需求。

下面我举几个个性化例子,这个是按城市推送的例子。宜春的一个高三的学生和歹徒搏斗,夺刀受伤了,因此未能参加高考,这个事情发生的时间是5月31日,我是6月1日11点左右收到这个推送的,这条信息只推给了宜春的人,像这样的新闻,很好地满足了我刚才说的两个条件:第一个,我对它感兴趣,因为这是我老家一个镇的,非常亲切;第二个,它很好地满足了我对这个新闻实时性的要求,可能连我妈在家都不知道这个消息的时候,我已经知道了,我后来去百度新闻查了一下,最早的一篇是6月2日,也就是说,比我们推送还晚一点。这个新闻后来比较火,因为有比较多的后续,比如专门安排他单独考试,有学校希望保送,包括出国,这个是后续的新闻了,当然那个已经是在7、8、9号开始,到11、12号才到高峰,可是我是提前十天就了解这个消息了。

另外是一个基于兴趣推送的例子,6月11日UC并入阿里这条新闻,我们当时是个性化推送给互联网人群的,这个事情推送给我妈是没有任何意义的,因为她不关心。从这些例子来看,推送是你要在满足用户需求和防止打扰用户之间取得平衡的事情。

下面是我们所做的一些工具,一个系统的结构,最上面是用户,用户如果要接收到消息,那我们跟用户之间就要有一个推送通道,在通道之前我们要有一个推送的逻辑层,逻辑层会实现频率控制、个性化的逻辑。因为通道这一层,iOS和安卓是不一样的,iOS苹果已经提供了,安卓就需要用其它方式,但逻辑层是通用的。还有是我们的运营人员所依赖的工具,因为我们最终是从运营人员到达用户的。如果从时间线来说,事件发生后,我们要求用最短时间推送给用户,我们的消息到达用户的时间在几分钟之内,不管我们用户量有多少,希望都要这么快。

我们所用的一些工具,第一个是通道,因为我们的工具是分层的,所以每一块都要非常快,但也要可控,特别是在我们早期,服务器采购跟不上用户增长速度,如果做大量推送,召回大量用户,就容易影响服务的稳定性。因为通道有各种方式,推送也有各种方式,长连接的方式是可以做到足够快的,但是在可靠性上要做一些考虑。另外,不能只让在线用户收到消息,离线用户也需要收到,所以必须有离线消息,但离线消息要尽量避免用户一打开手机,消息全拥过来的情况。另外你需要在长连接网络不稳定的情况下实现可靠的推送消息,消息要避免重复,不能让用户看到两条重复性的消息。

另外一方面就是要节省资源,从用户角度,要节省流量,节省电量,而对于我们而言,是要节省带宽,所以通道这边还要做一个可扩展,不管是一千万用户还是一亿用户,我们都要保证这个速度。

在推送逻辑这一层,还是要快!怎么把人群选出来,这个也是要非常快。策略支持就是说我们要支持灵活的策略,我们要能够方便的把各种策略扩展或者插拔,我要支持一些个性推送的维度,比如跟机型、跟操作相关的,我们的策略要做出一些扩展或者可插拔的。因为推送是异步的事情,对用户的影响也非常大,我们要对这个系统非常可控,因为我们这个系统整个推送做到后面是很复杂的,会有很多逻辑,比如个性化频率推送,有人能收到,有人收不到,我可能在这个时间段收到这个内容。而且消息推送最好是可跟踪的,也就是我们做troubleshooting的时候,可以还原当时推送的情况,比如说我是哪种策略,有没有推出去,没有推出去是什么原因等等。另外我们很多地方都要用到我们系统推送的接口,接口方便使用也很重要。

然后是我们的运营平台,运营平台也是要快。当有新的热点新闻、突发新闻的时候,要非常快速地把它抓到,要能够识别出它的时效性,很快识别出它的热度,把它放到可推送的侯选列表里面,我们要能够自动建立它跟人群的关系,我们不能让人来判断这条消息应该推送到互联网人群,这件事情机器是可以做出来的。我们会提供非常方面的操作工具,比如我们有一个页面,三五秒钟刷新一次,当有可推送的新的侯选者出来以后,它后面要做的事情就非常简单了,比如第一是不是要推送,第二是文案可以优化一下,我们运营的同事,只要区别一下是否要优化,不要优化点推送就可以了。

下面讲一下运营分析。我们有一些指标,并且需要不断优化这些指标,有些是技术、工具上可做的,有些是运营本身的办法,比如说是高大上的,还是更吸引眼球的,这时候就需要我们提供一些运营的工具,我们现在有完整的数据后台,可以看到我们的推送时间、推送人群,有多少用户点击,点击率怎么样。资讯后台应该是全面的,历史上所有推送都是有记录的。第二,我们还可以提供一些非常细致的分析,从中可以得出一些结论,比如文案很重要;把“图”放上去,可能推送点击率更高;安卓用户的点击率是早上高,晚上低,但iOS用户正好相反。

还有是A/B Test的测试,把人群区分开推送才有意义,通过测试的结果,可以更好的让运营同事优化运营策略。

最后说一下我们做的这些决策上的成本考虑,我们服务端主要是考虑带宽,因为我们IDC是按照带宽收费的,如果到了一个量,就按峰值带宽收费,因为推送会非常强的拉动整个IDC流量,所以我们把推送系统部署到云端上面,云端是按照流量收费,而不是按照带宽收费。

我要分享的内容就是这些,谢谢大家!

提问:一个新的用户,需要通过多长时间对用户行为的轨迹分析,才能判断出他的兴趣,从而推送出他所感兴趣的内容,也就是个性化的问题。

梁汝波:个性化是有程度的,对不同用户也不一样。如果你授权给我们的话,我们会非常快的判断出来,在第一次请求、第二次请求时就能够获取到。比如按地域推送,我们第一次用的时候就可以用上。还有一些人际关系,比如你授权了,我们可以知道你关注了谁,谁关注了你,或者你发布了什么微博,也可以分析出你的兴趣。另外与时间相关的,其实只有用户的历史行为,我们现在用户历史行为可以是准实时的,就是这次的行为在下一次请求中就能够体现出它的效果。但是因为这不是离散的关系,是连续的,我们对你的信息探索了解,可能不能基于一两次的行为,是基于历史的持续过程,城市的获取是实时的。

提问:您大概会通过多长时间可以非常精准锁定到用户所感兴趣的内容。

梁汝波:如果你的微博帐号可以很好地反馈你的信息的话,你授权我们就可以知道了,我们可以了解你的信息是有一些途径的,这些途径我们能否到达, 以及质量的高低,都有关系。

提问:您刚刚说到推送个性化方面,可以根据频率的个性化,今日头条有针对用户活跃度或者行为,对用户分层次进行不同的推送吗?你能举一两个例子吗?

梁汝波:因为对于推送受众比较多的用户,他点得多我们就推得多,点得少我们就推得少。频率在时间上是有分布的,比如你早上喜欢一点,另外一个人可能晚上喜欢这一点,那我们推送给你的可能就是早上,对于晚上点击率更高的,就晚上推送概率更高,是否推送是动态值,会有一个概率的判断。

提问:你刚才举例举了一个宜春的新闻,但是这个新闻第一时间你们拿到这个新闻之后,你怎么判定它是重要还是不重要的?比如你关心宜春,宜春有一个地方开了一家饭馆,这个重要程度怎么判断?

梁汝波:这个事情我没法在这里解释清楚,因为这是比较复杂的过程,我们公司最擅长的就是判断新闻的热度、质量以及它的一些特征。当一个新闻出来的时候,我们有很多方法去判断它,首先它是不是具有时效性的,第二它是不是热门的。我们现在做的工作,因为对于推荐而言,对准确性是有要求的,对于推送而言,我们有运营人员把关要不要推,我们的推送并不是全自动的,在技术上也会帮助运营人员做判断,比如它的热门程度、时效性,以及哪些用户可能对它感兴趣。

运营如何在2年内从月薪3000升到30000
Principle:交互动画实例