作者:闲鱼技术——之诚
讲讲上下文
如果你是公众号《闲鱼技术》的老粉,也许你还记得,在去年的那个春天,我们给大家介绍了闲鱼PUSH的前世今生,给大家带来了Hermes-爱马仕,它是一个基于PUSH的用户运营系统。在接下来的一年里,我们的Hermes也发生了很多改变,它收到了很多很多热心用户的建议、吐槽还有宝贵的夸赞,我们也基于这些信息做了很多的优化,还有很多正在陆续上线。今天我想借这个机会和大家伙唠唠我们今年的进展(爱马仕升级啦!)
<img src="https://gw.alicdn.com/imgextra/i4/O1CN01bPW8ib21AOyF9kgtb_!!6000000006944-0-tps-1024-680.jpg" width="500">
过去这一年
作为一个技术同学,我想从三个视角给大家介绍一下目前闲鱼的推送还有哪些地方需要加把劲儿:
用户宝宝们:推送的内容相关性需要再提升,“有些时候推给我的东西感觉还是没啥兴趣”,“有些时候推送是不是发的有点多了,我其实最近不太想看推送,你说我关通知吧,我还想收到私聊或者订单的通知,不关吧,有些推送我真的不想收到啊”
业务大大们:“现在的闲鱼业务这么丰富,潮品、同城、社区....,但我们和目标用户连接不稳定啊(因为我们的Hermes系统是选择最好的内容给用户,每次推送可能都不一样,并没有稳定的通道直接连接用户和行业),这样推送带来的转化不够啊;而且我们希望用户的长留要好,不能光看短期点击的”。
头秃的我:作为Hermes平台的技术owner,我发现系统确实需要升级了,随着触达业务不断复杂,技术架构无法完美支持丰富的业务场景,而且当问题出现时,现有的技术链路无法全链路复现当时的问题。
So!这些问题怎么解?
打仗得有战略
我们要做的是:
To 用户宝宝:
• 只关注自己感兴趣的推送,不开心随时取关,免打扰,删除,怎么都可以。
• 推送的疲劳度全局管控,你喜欢多看就多发给你,不喜欢就不发给你。
To 业务大大:
• 有没有一种产品形态可以建立业务和用户稳定的连接和转化呢
To 自己:
• 技术如何帮助业务提效
• 如何更快更全面的排查问题
• 如何灵活的支持更复杂的业务
总结一下:我们需要探索一种新的推送形态,保证与用户的有效连接,基于这种连接推送用户感兴趣的内容,并且要优化发送频率和时机,只有这样,用户才会更喜欢看我们推送的内容。
所以,我们今年建立了闲鱼的服务号体系
<img src="https://gw.alicdn.com/imgextra/i1/O1CN015BwRKG1Rtu9mGcNsj_!!6000000002170-0-tps-592-1280.jpg" width="200"><img src="https://gw.alicdn.com/imgextra/i2/O1CN01oIjpNc1aEWuvMRIj3_!!6000000003298-2-tps-209-452.png" width="200">
它的特点是:
• 基于用户兴趣的推送
• 基于行业的私域运营
• 免打扰全局管控机制
服务号推送的粒度更细,按照用户兴趣和行业之间的关系进行了重新的映射,产生了多种多样的服务号,大多数服务号只给自己的粉丝推送消息,你喜欢就关注,不喜欢就bye bye。
接下来,让我们一起走进服务号背后的大杀器,HermesX-闲鱼一站式用户触达系统。
这是《HermesX一站式闲鱼用户触达》系列文章的开篇,更多的是承上启下,给大家介绍一下各个方面的概况,在接下来的日子里,我们会通过其他文章详细介绍一些关键的技术实现细节。
战术布置
战术1:整合目前闲鱼所有触达逻辑
去年的Hermes在触达时机,触达内容上已经做了很多优化,但依然无法有效的串联所有的触达系统(由于历史原因和业务诉求,闲鱼现存了多个触达平台),所以HermesX做的第一件事,就是整合所有平台,将链路进行归一,这样做最重要的目的是,对所有触达用户的内容进行统一管控,不光是内容上的择优,还包括了频次的控制和策略的下发。
<img src="https://gw.alicdn.com/imgextra/i3/O1CN01ESXanf1c1MlVGrdFk_!!6000000003540-2-tps-219-223.png" width="130"> <img src="https://gw.alicdn.com/imgextra/i1/O1CN01Dd5MGo28hYxbeFUmp_!!6000000007964-2-tps-339-225.png" width="200">
这里面技术的挑战在于如何抽象出统一的模型,定制统一的协议,以及对不同的推送类型做集中逻辑处理。由于推送的业务模型天然拆分为五个要素(who、when、what、how and where),如下图:
<img src="https://gw.alicdn.com/imgextra/i2/O1CN0109ZLQh272yF92gRBG_!!6000000007740-2-tps-649-441.png" width="500">
可以把串联五个要素的服务抽象为HermesXFlowService,每个要素作为一个HermesXFlowPoint的实例,HermesXFlowPoint明确知道执行逻辑的先决条件,具体执行逻辑以及执行后的检查工作。
<img src="https://gw.alicdn.com/imgextra/i3/O1CN01Uk35rK1gvw9Hr3mHk_!!6000000004205-0-tps-986-832.jpg" width="500">
这样的设计解耦了每一个触达要素,HermesXFlowService可以动态加载各个要素,根据推送的类型,不同的推送可以在各个要素节点有自己的实现逻辑,灵活实现但依然受到整体控制。
同时,由于触达策略和触达规则是一对多的关系,在触达规则这个模块,我们把多个规则进行动态的串联,通过FIlterChain的方式来进行规则的判断,使得代码结构非常清晰,排查链路简单明了。
<img src="https://gw.alicdn.com/imgextra/i1/O1CN01peohOQ1FqRm57Svsm_!!6000000000538-0-tps-506-454.jpg" width="500">
在触达通道侧我们对不同的通道进行了协议的抽象,可以根据配置信息灵活调度。
最后送上HermesX的架构大图,有兴趣的朋友们可以和我进行深入交流:
<img src="https://gw.alicdn.com/imgextra/i3/O1CN01o7qTbM1NWJI2EMEf4_!!6000000001577-2-tps-4459-1944.png" width="700">
战术2:内容召回优化,提升内容相关性
搭建好了工程链路的底子,现在可以把丰富的信息送到算法的嘴边了,先别急,借着这次重构,算法的小伙伴们也进行了基础建设能力的增强,之前由于热点时刻发送请求量巨大,导致算法的实时计算服务(TPP)经常超时。通过一系列的代码优化以及配置优化,并且对用户触达时间进行削峰,算法性能取得了显著的优化:
• 全天异常量降低35%
• 非高峰期异常降低90%
• 计算资源消耗减少65%
• 峰值接口耗时减少69%
基建优化之后,开始着手提升内容的相关性,发掘一些好玩的素材,扩充内容池。这里算法首先0-1建立了多体系内容投放系统,将用户在闲鱼端内的行为数据进行特征归类,分为多个场景,融入到模型中学习。举例来说,如果用户A喜欢逛社区,那A很有可能会有大量的帖子相关的内容,但哪个帖子用户A更感兴趣,需要算法根据帖子的特征进行大量的样本学习,从而算出该用户和他喜欢的帖子之间的匹配程度;其次,算法在内容的生产上,也尝试了通过热门搜索词匹配感兴趣的潜在用户群体,并通过自动化的链路将内容素材给到业务同学,业务同学根据该素材的相关数据,来进行进一步的修订和校验。(智能化文案的生产和全自动化推送需要更精准的匹配和文案的打磨,目前机器学习的推荐依然需要人工校验,确保没有负向风险)
在召回侧,从端内行为利用不足、trigger较单一、X2I覆盖不足,到构造11路X2I召回、补充数十亿x2i关系,算法极大的补充了内容召回的不足,为更充裕的内容择优提供了坚实的保障。
战术3:用户体验优化,客户端算法齐发力
HermesX整合的最重要的意义之一,就是对推送的发送频率进行统一控制,也就是疲劳度。系统设计了四层疲劳度,分别为用户级别的疲劳度、策略维度、素材维度和实际内容的疲劳度。进行全局收口后,工程侧统一把每天要给用户发送的不同类型推送统一给到算法侧,算法侧会预测该用户每日接收推送的个人喜好以及兴趣度,如果预测发现该用户不适合多条推送,算法会在产品推送的基础上不发送营销内容给用户,降低用户被打扰的次数;如果用户对服务号的内容感兴趣,算法可能会推送多于普通用户的条数。同时,工程侧也将发送PUSH和发送端内消息进行了分离,算法决策的粒度变为了主要发端内消息,PUSH为辅的策略,因为PUSH对用户是一种相对较强的通知方式,当算法预测该用户大概率今日会访问闲鱼的时候,发送消息就可以触达到用户。
我们还对N天不点击推送的用户添加了静默期功能,当用户长时间不点击推送内容,我们会在一定时间内不发送任何营销类推送给该用户,保持最低限度对用户的打扰。其次,如果算法发现某个发送内容点击和用户行为效果不好(点击率低,落地页用户行为少),说明这个内容对用户帮助少,那么我们会对这些内容进行降权甚至不发送相关的内容。
在端侧体验方面,客户端小伙伴将会话模型进行了重构,按照服务号粒度进行了拆分,支持更细粒度的运营订阅服务,用户可以随时取关或者静音某个服务号的推送,这样的设计方便后续我们更灵活的组装众多的服务号会话类型。
<img src="https://gw.alicdn.com/imgextra/i2/O1CN01a1WPdf1P6mRW02VUc_!!6000000001792-2-tps-1170-2532.png" width="200"> <img src="https://gw.alicdn.com/imgextra/i3/O1CN01NBW7MG21a39Xy1oYF_!!6000000007000-2-tps-1170-2532.png" width="200">
同时,为了丰富端上信息展示的样式,我们跟随服务号一期项目,同时新开发了多种消息卡片样式,这些卡片支持DX卡片动态下发内容,不需要跟版本发布,提升了需求迭代的效率,提升了用户获取内容的效率和体验。
<img src="https://gw.alicdn.com/imgextra/i4/O1CN01YyXdD91dBjLNPqESC_!!6000000003698-2-tps-752-453.png" width="500">
最后,悄悄地说,如果你点击进入了服务号,你会看到更多菜单内容以及和服务号聊天的功能,这个功能希望业务同学作为服务号的owner,可以给他们一个直面用户的通道,可以在自己的私域内和自己的粉丝进行交流,收获建议或者回答问题,多倾听用户的声音,反复打磨优化自己的服务号内容。(这么好的功能我们还在紧锣密鼓的开发中,不久就会上线,大家敬请期待呀)
战术4:全新交互的管理后台,运营效率杠杠的
说完了HermesX对用户侧的改进后,让我们也来讨论一下HermesX的另外一个”用户“-业务小伙伴们。如何帮助业务小伙伴们提升策略的配置效率,洞察更多的机会,是技术平台义不容辞的责任。HermesX天然的基于触达五要素的设计,从管理后台角度,也按照了自然思维配置触达策略和触达内容,如下图:
对比之前,配置一个策略多个内容要跳2-N个页面不等,现在在HermesX上面一个页面就可以全部搞定,业务同学可以看到策略相关的所有内容和策略对应的元数据信息,交互体验非常顺畅。
同时,新的管理后天对策略进行聚合,新增了场景的概念,这样的设计正好映射了服务号的产品理念,将相关的策略进行分组,不同的场景目标不同,所以设定场景目标,将转化目标和具体的每一个策略挂钩,据此来评估策略的效果,方便同行业的同学直接查看相关素材,有些时候自己创建的内容不好了,抄抄作业获取一下灵感也是极好的。
我前面提到了,HermesX管理后台不光全面升级了交互流程,还设计了丰富的数据看板,业务同学可以通过首页的dashboard 看到自己管理的策略的多维度表现情况,还可以和大盘的基本面进行比较,发现自己策略所处的位置,举例说明:我们给业务提供了大盘策略点击率、落地页、最终转化等排名,大家可以看到对用户效果好的策略都是什么样子;同时我们会对owner管辖的策略对用户的各项数据进行可视化展示,让业务知晓自己的策略覆盖了多少用户,不同用户的策略交互效果如何。后续我们计划引入对用户的更加细致的分层,帮助业务分析自己策略的特点,更好的帮助到不同维度的用户。
整套交互后台的技术方案,前端小伙伴都是基于一套中后台方案快速搭建起来的,数据和交互解耦,完全的数据模型驱动,交互组件高度可复用,这样的设计方便了以后内部运营系统的开发,可以实现多租户,高效解决同质需求。
阶段性总结
说了这么多,总结一下,今年HermesX系统的搭建:
• 营配置效率提升至少一倍
• 长期留存目前AB实验效果都有超过30%的提升
• 通知推送关闭的降低,APP卸载的下降有明显的收益
希望大家对今年的HermesX有更多的期待,现在有些功能还在开发中,陆陆续续会和用户见面。推送业务很不好做,我们一直在努力做的更好,希望今天介绍的这些小功能,有真的可以帮助到我们的用户,让他们获取更及时,更有效的内容。
前方的路
这仅仅是开始,今年的战役我们打响了第一枪,后面道阻且长,下一步的计划是:
• 进一步优化内容供给池,扩充内容的供给,并且细粒度的拆分内容场
• 更多维度的人群特征预测,精细化运营推送人群
• 服务号我们会进行更多更好玩的功能迭代,这里我先卖个关子,到时候大家就看到了。
我们的用户如今规模庞大,大家有着各自的兴趣和用户习惯,作为和用户连接的直接通到,服务号体系需要承担更多的使命和责任,作为支持服务号背后的技术平台HermesX,会不断沉淀自己,和业务一起服务好我们的用户。还是那句话,服务好我们的用户,是闲鱼触达的唯一愿景。