【附自动化产品方法论】足球战报自动化复盘
写在前头:今年Q1 耗时一个多月把足球战报自动化做出来并上线,现在回过头看看这段坎坷的项目,发现也收获了不少东西,借此机会写篇自动化产品的文章与大家一起交流,也希望能给即将要接触的同学带来更多的启发与思考。
一、需求背景
不知道大家清不清楚很多的新闻是由兼职或者是专门的编辑撰写的,每场重要的比赛结束后都会发出一片篇对应的比赛战报,如果你是球迷的话,你一定看过这种类型的新闻。
别看这一篇战报本身报价不高,但是每天那么多场比赛加起来之后也是一比不小的开销,再加上战报对“快”和“准”的要求,人工撰写难免需要时间和精力还有可能各种出错,自动化战报需求就应运而生了。
二、需求前提
把一篇新闻做成自动化生产发布可不是无条件的,它也需要一些前提,例如新闻结构是相对统一的、内容是相对固定的,描述对象是穷尽的,这样才可以抽离出这种类型的共性,当触发对应条件的时候服务端填充数据并发布出去。
三、自动化前提
这个部分主要是自己做自动化产品所总结方法论的阐述,如果需要结合具体的案例可以往下翻翻足球自动化战报是如何具体执行的。
一个非自动化的产品要做成自动化是需要经历不少质疑(思考)的。
首当其冲要考虑的问题是:这个产品是否有自动化的价值?
例如说一个只针对于奥运会的H5活动或发布很频繁但是数据不好的GIF类型新闻,对我来说它们都没有自动化的价值,“频率高”且“数据好”这是值得做自动化至少要同时具备的两个条件。在满足这两个前提条件之后,还需要去追求是否能带来更多的赋能,例如时效性、准确性,ROI越高才能向上拿到更多的开发资源。
第二个问题是这个产品是否能被做成组件化?
就以前文为例,在新闻这个类型中花边娱乐新闻的各项数据都很好,发布频率也高,用户也喜欢看,但是它就没有被做成组件化的条件,因为它太多样了,主体与其行为是无法被穷尽的(至少在目前是这样的),产品能做的也只能是在花边新闻的生成效率、分发效率、阅读体验上去做提升。
当问题一和问题二的回答都为“是”的话,我们才正式进入了产品自动化的流程。
四、自动化核心流程
1. 自动化产品生产环节
我把「实现产品自动化」比喻为一家车间老板用「流水线的方式进行生产」代替「一个人从头到尾生产」,因为我的自动化步骤是把一个大的产品拆分若干部分,针对每个单独的部分去做自动化,最后再进行拼装。
1)功能拆解
在我们着手自动化的时候,要做的第一件事情就是把一个完整的产品拆分成相对独立的部分,拆分的标准可以是:提供服务的维度、技术实现的维度、大众认知的维度等。
在这里维度不重要,只需拆解出来的部分是相对独立的即可,这里也要用到的是共性的抽离。
2)定义理想态
定义理想态这个概念是出自策略产品,但同样也是自动化中不可或缺的重要步骤。简单来说是我们要去描绘拆分好的部分它们各自的最优形态是如何,这个阶段对理想态的描绘是不需要拘泥于自动化的实现问题。
3)验证理想态
在定义了理想态后,我们要做的是结合现实的开发情况,来验证这个理想态是否可以做成自动化,如果可以的话,那么就达到了最佳状态,排期并进入开发;如果验证为不可被自动化,则需要回到「定义理想态」这一步重新不断验证,直到确定一个可以被开发的方案。
4)功能组合
各个部分的自动化进入开发后,需要做的就是把其“组装”起来,合并为一个整体的自动化产品,同时确定好自动化产品的触发策略,整个的生产阶段就到此结束了。
2. 自动化产品分发管理环节
自动化产品可以被生产出来只完成了整个环节的一半,自动化产品如何被用户消费到,这个过程也是不可小觑的重要环节。
1)先发后审
「先发后审」很简单从字面上理解就是自动化产品生成后直接发布,运营再进行审核。
从形式上看,只有做到先发后审才能算得上是真正自动化。这一般用于自动化产品应用成熟阶段,整个产品的稳定性有很大的保证,不再需要人工介入来添加一道保障;另外是在一定的错误率以内,产品“时效性”要求要高于“准确性”时会用到,例如一些比赛中关键事件新闻。
2)先审后发
「先审后发」即自动化产品已经生产后,还需要经过一道人工审核,符合要求的直接发布,不符合要求的人工进行干预编辑再发布。
虽然这种形式没有做到完全的自动化,但却适用绝大多数的自动化产品。要时刻记住的是:做自动化产品千万不要为了做到极致的自动化而“走火入魔”,因为我们做的一切最终都指向用户。
3. 自动化产品流程图
以上的两个部分整合起来就是整个自动化产品的方法论,下文会结合足球战报自动化展示一下应用到实际例子中会如何处理。
五、足球战报自动化实操
足球战报主要包括战报封面、战报标题、战报正文、GIF图、球队数据、球员数据、球队阵容这七个板块,下文会挑典型的战报封面、战报标题和正文的自动化举例如何来实现。
1. 战报封面自动化
在很快地确认完自动化价值和理想态后,进度卡在了验证理想态的阶段。
我们花费了不少的时间去研究如何自动渲染出下图的最佳效果。最后是选择了aliyun的对象存储oss,因为仔细拆分这张封面,它可以由三个图层叠加而成,先是根据每个球队id给到映射色值的纯底色图片,第二个图层是取game_id对应两只球队的队徽,第三个图层是VS字样和game_id大比分数据。纯色图片当作底图,队徽作为水印打上去,合成一张图,再在这张图的基础上打上比分的水印,最后生成封面图。
- 将主图example.jpg缩略为宽高n:resize,w_n,h_n
- 将主图图片质量设为n%:quality,q_n
- 添加水印图片teambadge.png:watermark,image_cGFuZGEucG5n(cGFuZGEucG5n是teambadge.png进行Base64编码后的值)
- 字符串转译base64工具:https://simplycalc.com/base64url-encode.php?spm=a2c4g.11186623.2.18.59c767307kofBl
- 具体操作方法见:https://help.aliyun.com/document_detail/44957.html
2. 足球战报标题、段首自动化
战报标题和段首的自动化无非是需要穷尽各种比赛类型并提供对应的“模板”,在某个时间节点,例如中场休息或比赛结束的时候选取符合条件的“模板”生成。
1)战报标题
- 若比赛正常决出胜负,比赛标题格式为:(主队)比分 – 比分(客队),球员A、球员B进球。
- 若比赛最终通过加时赛决出胜负,比赛标题格式为:(主队)比分 – 比分加时战胜/不敌(客队),XXX(加时赛破门球员)建功。
- 若比赛最终通过点球大战决出胜负,比赛标题格式为:(主队)比分 – 比分(客队),点球大战(主队)(点球大战比分)战胜/不敌(客队)。
2)战报段首
当比赛90分钟有胜负时:北京时间{比赛时间},{赛事名称}在{比赛地点}打响,凭借(获胜方进球者1)(进球者2)(…)的进球,{获胜方A队}战胜了{B队}(列出获胜方最多三名进球球员,不包含点球大战的进球)。
当比赛平局时:北京时间{比赛时间},{赛事名称}在{比赛地点}打响,经过激烈的角逐,两队未能分出胜负,最终{A队}与{B队}握手言和。
当比赛加时有胜负是:北京时间{比赛时间},{赛事名称}在{比赛地点}打响,双方最终进入加时决战,凭借(获胜方在加时赛进球者1)(进球者2)(…)在加时赛的关键进球,{获胜方A队}加时战胜了{B队}(列出获胜方最多三名进球球员,不包含点球大战的进球)。
当比赛通过点球大战分胜负:北京时间{比赛时间},{赛事名称}在{比赛地点}打响,经过120分激战双方不分胜负,最终,{获胜方A队}通过点球大战{点球大战比分,胜者在前}战胜{B队}。
3. 足球战报分发与管理
在管理上因为战报上线时间不久会担心其不稳定性,所以我们选择了半自动化的「先审后发」模式:运营需要在比赛管理后台中找到对应的比赛,点击「半场战报」或「全场战报」弹出弹窗,确认战报的是否正确无误地生成了,确认完毕后选择发布频道和发布专区即可分发出去。
在分发上我们主要有四个分发渠道,第一个是在发布时运营可以选择发布到哪个频道的新闻列表中,例如国际足球、英超、西甲等;第二个是可以发布到指定专区,例如国际足球专区、足球话题区等;第三个是会通过game_id自动关联至赛后直播间;最后管理后台中也提供了push的分发功能。
足球自动化战报全量上线后,能力已经可以覆盖所有大小型的赛事,同时也新增了半场战报的类型,数据也是杠杠的。虽然在使用的过程还时不时会有一些小bug,但整个流程已经跑通。
至此整个自动化战报的需求就告一段落了,等后续自己对自动化产品有新的理解再来和大家一起交流吧~
本文作者 @OTTIS 。
版权声明
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处。如若内容有涉嫌抄袭侵权/违法违规/事实不符,请点击 举报 进行投诉反馈!