广告系统设计(摘自简书:二哈很冷很傲娇)
本文讲解广告系统设计的一些内容技巧,摘自简书——二哈很冷很傲娇原文链接点这里
第一部分
广告系统,是与产品并驾齐驱的,也是产品商业化的必要条件,每个人都有在使用产品过程中或多或少见到过广告,那么这些广告是如何产生,如何展现到用户面前的呢?下面咱们就来说说广告系统的设计。
一个常规的广告系统,从框架来说应该包含以下几个基本模块:
a、客户端(你看到广告的位置)
b、广告服务器(含第三方,和客户端交互广告数据)
c、广告编辑后台(配置广告素材的地方)
d、日志服务器(存放广告日志信息的地方,包含查询后台

1、客户端
客户端主要是用户看到广告的位置,也是唯一一个与用户有交互的模块,主要包含以下几个元素。
1.1 位置:开机页、首页顶部、侧边栏、详情页底部等
1.2 类型:弹窗、推送、信息流、轮播图、banner等
1.3 交互:自动消失、手动关闭、点击跳转等
1.4 素材:文本、静态图片、动画、音频、视频等
1.5 时机:在什么时候出现,由什么行为触发等
1.6 频次:长期展示、不定期出现等
2、广告服务器
这个模块主要是由技术主导,性能为最重要指标。主要是逻辑判断处理,以及跟客户端进行数据交互。
2.1 广告服务器:主要由http请求、接口、redis、数据库等组成,一般由客户端向服务器发起请求(也有保持长连接,服务端进行Push的形式进行),服务端根据请求中的参数(比如uid、IMEI、地域等),通过接口返回对应的广告数据。
2.2 第三方广告服务(API/SDK):按字面意思,就是直接上第三方获取广告数据,分为API(第三方提供定义好的接口规则,直接传递参数进行获取数据即可,由客户端或者服务端对接)、SDK(第三方提供一套完整解决方案,需要嵌入客户端,由客户端直接对接)两种方式,前者优点是相对可控,且无需发版,进度快;后者更依赖于第三方服务,需要客户端发版覆盖,进度稍慢,但开发量较小。
3、广告编辑后台
该模块主要是用于运营编辑去配置所需要的广告素材,以及投放条件,并将数据录入到数据库。(这里主要说和业务有关的东西,比如一般后台的用户管理、菜单管理之类的不做说明)
3.1 广告位:对应客户端展示的广告位
3.2 广告素材:文本、静态图片、动画、音频、视频等
3.3 落地页:用户点击广告后跳转的类型,比如H5还是原生的某个页面
3.4 投放条件:人口属性(性别、年龄等)、设备属性(地域、机型等)、应用属性(某个版本、某个渠道等)、标签属性(游戏用户、金融用户等)、用户属性(沉默、高频用户等),其中设备、应用属性都是直采且采样率极高,其他部分属性均需要进一步处理才能获得,属于用户画像方向的工作,这里暂不做详述
3.5 投放方式:CPT(按天起止)、CPM(按曝光起止)、CPC(按点击起止)等,本身这个指的是结算方式,但是用于广告投放配置也可
3.6 生效时间:广告配置的生效时间点,一般会在凌晨进行更新(压力小),但是对于比如电商秒杀活动之类的需要做到更即时。
3.7 统计ID:一般来说每条广告都会有唯一的统计ID,作为日志统计的标识,便于数据监控及优化
4、日志服务器(包含查询后台)
该模块主要存放客户端或服务端的日志,一般存放原始日志或者进行部分预处理,但是原日志数据量过大,需要定时备份、删除老旧的日志文件。
4.1 日志服务:存放、预处理日志
4.2 查询方式:一般按照需要的查询条件(时间段、统计ID、应用参数等)进行数据输出
4.3 可视化界面:针对需要长期监控的数据,需要查询后台支持图表的形式输出
4.4 日报周报:按照预先定义好的数据查询条件,进行按天、按周输出(一般以邮件形式进行)
第二部分
上一篇中,二哈简单的介绍了一下广告系统的整体架构,如果掌握的话,基本就可以搭建出一个完整的广告系统啦!
那么问题来了,广告系统搭出来是为了挣钱的,怎么才能挣更多的钱呢?这里就要说到广告流量提升的问题了。
1、广告指标拆解(暂不讨论成本)
下面来看几个简单的公式:
收入=广告流量*转化率
广告流量=产品用户数广告展示率广告点击率
那么最终得到:
收入=产品用户数广告展示率广告点击率*转化率
产品用户数:每天启动/打开产品的用户数
广告展示率:广告展示用户数/产品用户数
广告点击率:广告点击用户数/广告展示用户数
转化率:这个是最不好理解的地方,其实不同广告业务的定义是不一样的。如果只是单一的流量变现广告,且考核指标为CPC的话,那么转化率≈1;如果是增值、会员业务的话,那么转化率=付费用户数/广告点击用户数
到这里就完了吗?NONONO,对于互联网产品来说,挣钱的广告可不止一个哟!所以公式还可以拆解为:
收入=产品用户数(A广告展示率A广告点击率A转化率+B广告展示率B广告点击率*B转化率+……)
对了,额外说一下,相信大家都知道常规广告的投放形式(CPC、CPT、CPM、CPA等等),不同的投放形式对收入的考核也是不一样的。
CPC:按点击考核,故收入=产品用户数广告展示率广告点击率
CPT/CPM:按展示天数/次数考核,故收入=产品用户数*广告展示率
CPA:按行为(可以是注册、评论、付费等等)考核,故收入=产品用户数广告展示率广告点击率*行为转化率
以上是整体广告指标的拆分说明,其中转化率与广告业务密切相关,一般也由专门的业务部门负责,故本次不详述,重点来说说——广告流量。
2、广告流量提升
从上面可以知道,广告流量=产品用户数广告展示率广告点击率
那么要提升流量,只要提升这三个变量就好啦。
2.1、产品用户数(一般称为日活)
日活往往是一个产品的核心指标,对于日活的提升方法可能比流量的提升方法还要多,这里不详述,简单拆解指标如下:
产品用户数=新增用户+留存用户+回流用户=新增用户+之前的新增用户留存率+流失用户召回率
2.1.1、增加新增用户
2.1.2、提升留存率
2.1.3、提升流失召回率
2.2、广告展示率(展示/日活)
广告展示率主要反映的是广告的前端设计逻辑。按照经验来看,这个是提升流量最快捷的方式,但也是最容易引起用户反馈的方式,主要手段如下:
2.2.1、增加广告位:1个广告位变成2个广告位……
2.2.2、提升广告的页面层级:从3级页面变成2级页面,从底部变成顶部,从详情页变成默认页等
2.2.3、提升展示频次:比如之前启动时展示的插屏,从前后台切换时再展示一次;之前的静态广告变成轮播广告等
2.3、广告点击率(点击/展示)
广告点击率主要反映的是用户对广告的喜好程度,不过也有一定程度的误点击(骗点击)。优化点击率是一门细活,能做的方面非常多。
2.3.1、素材优化:说白了就是利用人性的弱点(主要是贪婪、色欲、猎奇)去制作一些具有诱惑力的素材,从经验上来讲,折扣、红包、美女、反常理的素材点击率普遍较高
2.3.2、增加效果:增加红点、动态效果等,这种提升效果很明显,但是要克制,频繁使用会导致用户免疫2.
2.3.3、提升关联:提升和用户的关联度,比如“同城”,或者有用户认知的元素比如“认识的人”,“买过的东西”等
2.3.4、迎合喜好:主要是个性化推荐方面的工作,通过分析用户历史数据,建立用户画像(标签),通过协同过滤等方式对不同的用户推荐不同的广告(关于协同过滤、用户画像也是一门大学问,有时间详细讲述)
2.3.5、结合场景:在合适的时间或合适的地点展示合适的广告,比如冬天来临之际羽绒服一定比短袖更好,比如晚上推直播比中午推更好(因为很多用户中午都在公司或外出)
2.3.6、结合行为:在用户某个前置行为后展示广告,比如在用户使用某个功能时,提示会员付费即可使用,结合用户的需求来展示解决需求的广告,点击率一定高于纯展示类
2.3.7、提升误点:比如弹窗广告从点击按钮变成全弹窗可点,插屏广告跳过按钮点击区域比实际要小(该类策略不推荐)
3、用户体验的平衡
有广告就有反馈,哪里有压迫就有战争,这是难以避免的,所以和用户体验的平衡也是流量提升的必经之路。商业产品和用户产品相爱相杀也不是一两天的事情了,那么怎么才能解决这个矛盾呢?
其实广告和内容一样,当需要的用户看见需要的东西时,用户不会感到反感甚至是愉悦的。这也反映出广告投放变化趋势:考核展示量——考核流量——考核有效流量。其中与有效流量对立的无效流量,就是平衡用户体验的核心。
无效流量特征:
重复展示:对单一用户频繁,甚至用户已经产生了有效行为(点击、转化等)
无价值:对单一用户无需求
3.1、重复展示问题
3.1.1、对于长时间展示无操作,考虑更换广告内容、减少展示频次或不展示
3.1.2、对于已经产生有效行为,考虑更换广告内容或不展示
3.2、无价值问题
解决这个问题的核心在于如何判断广告对用户无价值
3.2.1、增加关闭按钮:若用户主动关闭X次,考虑减少展示频次或不展示
3.2.2、直接用户反馈:考虑减少展示频次或不展示
3.2.3、分析用户需求:通过机器学习方法建立用户模型,分析判断用户喜好,考虑针对性投放/更换广告
以上是根据实际工作经验整理,当然二哈也没有很好的处理商业化和用户体验之间的关系,写出来也是和大家分享经验,共同讨论。
额外说一下,其实在大多数情况下均是明知到会伤害用户,但为了公司运转商业化是不可避免的,而这个时候又没有精力来做以上问题的分析,怎么办呢?
这个时候可以粗暴的引入用户价值来思考,比如单个用户原ARPU是X元,原日活是M,增加广告之后贡献的ARPU是Y元,但是日活降低到N,总价值P=YN-XM,若P为正,那么增加该广告是值得的。(但实际上这个公式并没有这么简单,比如若M-N,主要影响的是核心用户就得不偿失了,所以需要不断的测算,形成合理评估模型)
这里有个很经典的例子(广告-体验正循环):
在展示率、点击率不变,且要求收入提升的情况下,用户体验越好——用户数越多——广告越值钱——适当减少广告——用户体验越好
但反过来,也是成立的(广告-体验负循环):
在展示率、点击率不变,且要求收入提升的情况下,用户体验越差——用户数越少——广告越不值钱——适当增加广告——用户体验越差
所有的产品都希望走上正循环,但往往误入歧途,进入负循环。
所以作为商业产品,一定要设置不可逾越的底线,一旦超过了这个底线,那么离负循环肯定不远了。
第三部分
上一篇中,二哈讲述了广告业务的流量提升,在讲述提升广告点击率的时候,提到了迎合用户喜好的概念,本篇就来说说如何迎合用户喜好吧~
用户和广告交互的全过程可以表述为:看见广告—对素材产生兴趣—点击广告—对内容产生兴趣—消费广告。
注意,这里的广告泛指一切商业化行为,包括且不限于广告、直播、游戏、增值服务、会员业务等。
所以个性化推荐的重点为:
a、让用户看到喜欢的素材(核心指标为CTR,点击率)
b、点击后看见喜欢的内容(核心指标为后续转化率,比如会员则是付费率,应用广告则是安装率)
c、素材和内容之间保持相关性(核心指标为跳出率)
1、让用户看到喜欢的素材
虽然在上一篇中说到素材优化的点(诱惑性),但是每个人的兴趣点实际是千差万别的。就好比“吃鸡”这个词语,对于20岁的人和40岁的人来说,意义完全不一样。下面来详细介绍一下几种实操方法:
1.1、对比测试法
1.1.1、对于相同的一群用户,随机分为两个组别,一个组投放A素材,另一个组投放B素材,如果CTR(A)>CTR(B),那么A要优于B,以后是不是投放A就好啦?但是投着投着发现,点击率慢慢下降,这是为什么呢?因为长期不变的素材对于用户的吸引力变弱了(用户已经有了清楚的预期),该换新的素材了!
1.1.2、由编辑不断产出新的素材,同时上线多轮素材测试投放,选出最好的持续投放几天,再进行新的测试。慢慢的点击率保持稳定上升了,但是上升幅度慢慢变小,评估效果工作量也越来越大,这下该怎么办呢?其实交给电脑就好了。
1.1.3、素材优化系统开始搭建,包含素材库、统计服务、投放服务等。由编辑手动录入大量素材,配置好对应的广告位,初始时由服务端将大量素材平均分配给随机用户,一段时间后计算每个素材的CTR,进行权重更新,CTR高的素材占更大的权重,CTR低的素材占更小的权重,另外留一部分权重给新录入的素材,引入时间衰减函数,若长时间表现不好的素材,直接淘汰掉,编辑同学参照CTR最高的那些素材进行新的设计。
经过以上三步,CTR应该能提升100%以上(工作经验),但你会发现,很快就会到达天花板,因为这里有两个因素的问题:1、每个人被当做相同的个体;2、设计素材的能力。
那么怎么才能继续提升呢?进入下一个方法。
1.2、协同过滤法
设计素材的能力短期内无法提升的话,我只要把每个人当做不同个体来衡量就好啦,那么点击率就变成了CTR1、CTR2、CTR3……这里就需要开始引入协同过滤的概念了。
1.2.1、协同过滤(主要有两个方向):
基于物品(内容)推荐:比如你喜欢A,通过A的特征找到B和A很相似,C和A不相似,那么更倾向于给你推荐B
基于用户推荐:比如你喜欢A,他也喜欢A,通过你和他的共同特征(喜欢A),认为你和他相似,如果他还喜欢B,那么更倾向于给你推荐B
1.2.2、操作步骤为:选取推荐方法——对用户/物品打标签——计算相似度——产生推荐结果——测试结果修正算法
a、选取推荐方法:主要看数据是否丰富,如果用户特征丰富,那么选择基于用户,反之选择基于物品;
b、对用户/物品打标签:用户标签在用户画像的文章中有提到,想了解的可以看一下,物品的话以广告为例,可以分为类型(游戏、体育、财经)、载体(图片、文字)、内容(人、动物)、风格(可爱、成熟)等等,以及分配各标签的权重;
c、计算相似度:对每个用户/物品进行向量化,每个标签就是一维向量,最终计算的其实就是n维向量的相似度,常用方法有余弦相似度、欧式距离等(这里不详述);
d、产生推荐结果:C用户喜欢A,且A和B相似(以基于物品为例)
c、测试结果修正算法:将B投放给C用户,若效果不理想,主要考虑优化标签和权重。
经过以上两步,CTR应该能再提升30%以上(工作经验),主要限制提升率的因素在于标签库的丰富程度,实际工作中,尤其是广告业务,能拿到的有效标签很少,所以推荐出来的结果不尽如人意。
那么,试着提升设计素材的能力呢?
1.3、AI生成法(二哈没有实操经验,只是讨论)
最简单提升能力的方法就是换更厉害的设计!2333333……如果能换的话,请略过这个篇章。
不知道大家有没有了解过阿里的鲁班或者腾讯的Dreamwriter,他们都是通过机器学习的方式来达到自动生产内容的工具。核心流程如下:
a、拆解图片/文本,比如图片可拆解成:背景、框架、色彩、主产品、次要产品、标题、描述等等;而文本直接可以通过切词完成。
b、引入大量图片/文本作为元素集合,为训练做准备
c、通过机器学习的方式,让电脑知道A和B在一起是可以的,B和C在一起是不行的(学习规律)
d、生成大量内容,投放测试(其实类似于海量的对比测试+协同过滤的方式)
这里的核心点在于:1、有海量的历史数据作为训练样本;2、有足够专业的设计能力去干预;3、有足够的投放样本回收结果
2、点击后看见喜欢的内容/素材和内容之间保持相关性
这两点其实可以一起说,因为简单说来就是:1-转化率=跳出率,通过点击广告素材看到内容的用户,要不就是转化了,要不就是跳出了,无非这两种出路(第三种可能是产品有问题直接挂了,这里不谈)。
那么怎么提升呢?其实也就是和CTR优化一样,对比测试、协同过滤、AI生成,因为素材,也是内容的一种。
但一般情况下,素材和内容应该是绑定的,也会有多个素材对应一个内容的情况,但一般不会有多个内容对应一个素材的情况,所以大家经常看见,同一个业务,会在产品上有多个广告入口,而同一个广告入口对应多个业务,则会相互瓜分流量。
也就是说,在绑定的前提下,只要优化好前者(素材CTR),那么后者(内容后续转化率)自然就高了。
之前实际操作过一次,将后续的内容元素直接添加到了广告素材上(素材和内容保持一致),且用户对内容元素是认知的、是喜欢的,结果CTR提升了30%,后续付费转化提升了将近400%
但在实际工作中,大家经常会为了追求导入高流量(点击率)故意把广告素材做的很诱惑,甚至偏离了实际内容,这将会带来后续转化率降低,以及用户的信任度降低,这是为了追求短期利益导向,不优先推荐。(尽管二哈也做过类似的事情)
好啦,本篇基本也就讲完了,感觉很多地方都没有讲得很细,争取慢慢完善,不足之处请指教啦。