【附自動(dòng)化產(chǎn)品方法論】足球戰(zhàn)報(bào)自動(dòng)化復(fù)盤
編輯導(dǎo)語(yǔ):產(chǎn)品自動(dòng)化在一定程度上可以降低人力與時(shí)間成本,不過,產(chǎn)品自動(dòng)化的實(shí)現(xiàn)并非可以無(wú)條件實(shí)現(xiàn),產(chǎn)品自動(dòng)化的最終目的仍舊是為了更好地服務(wù)用戶。如何實(shí)現(xiàn)有效的產(chǎn)品自動(dòng)化?本文作者復(fù)盤了足球戰(zhàn)報(bào)自動(dòng)化的案例,總結(jié)了一套自動(dòng)化產(chǎn)品方法論,一起來(lái)看一下。
寫在前頭:今年Q1 耗時(shí)一個(gè)多月把足球戰(zhàn)報(bào)自動(dòng)化做出來(lái)并上線,現(xiàn)在回過頭看看這段坎坷的項(xiàng)目,發(fā)現(xiàn)也收獲了不少東西,借此機(jī)會(huì)寫篇自動(dòng)化產(chǎn)品的文章與大家一起交流,也希望能給即將要接觸的同學(xué)帶來(lái)更多的啟發(fā)與思考。
一、需求背景
不知道大家清不清楚很多的新聞是由兼職或者是專門的編輯撰寫的,每場(chǎng)重要的比賽結(jié)束后都會(huì)發(fā)出一片篇對(duì)應(yīng)的比賽戰(zhàn)報(bào),如果你是球迷的話,你一定看過這種類型的新聞。
別看這一篇戰(zhàn)報(bào)本身報(bào)價(jià)不高,但是每天那么多場(chǎng)比賽加起來(lái)之后也是一比不小的開銷,再加上戰(zhàn)報(bào)對(duì)“快”和“準(zhǔn)”的要求,人工撰寫難免需要時(shí)間和精力還有可能各種出錯(cuò),自動(dòng)化戰(zhàn)報(bào)需求就應(yīng)運(yùn)而生了。
二、需求前提
把一篇新聞做成自動(dòng)化生產(chǎn)發(fā)布可不是無(wú)條件的,它也需要一些前提,例如新聞結(jié)構(gòu)是相對(duì)統(tǒng)一的、內(nèi)容是相對(duì)固定的,描述對(duì)象是窮盡的,這樣才可以抽離出這種類型的共性,當(dāng)觸發(fā)對(duì)應(yīng)條件的時(shí)候服務(wù)端填充數(shù)據(jù)并發(fā)布出去。
三、自動(dòng)化前提
這個(gè)部分主要是自己做自動(dòng)化產(chǎn)品所總結(jié)方法論的闡述,如果需要結(jié)合具體的案例可以往下翻翻足球自動(dòng)化戰(zhàn)報(bào)是如何具體執(zhí)行的。
一個(gè)非自動(dòng)化的產(chǎn)品要做成自動(dòng)化是需要經(jīng)歷不少質(zhì)疑(思考)的。
首當(dāng)其沖要考慮的問題是:這個(gè)產(chǎn)品是否有自動(dòng)化的價(jià)值?
例如說一個(gè)只針對(duì)于奧運(yùn)會(huì)的H5活動(dòng)或發(fā)布很頻繁但是數(shù)據(jù)不好的GIF類型新聞,對(duì)我來(lái)說它們都沒有自動(dòng)化的價(jià)值,“頻率高”且“數(shù)據(jù)好”這是值得做自動(dòng)化至少要同時(shí)具備的兩個(gè)條件。在滿足這兩個(gè)前提條件之后,還需要去追求是否能帶來(lái)更多的賦能,例如時(shí)效性、準(zhǔn)確性,ROI越高才能向上拿到更多的開發(fā)資源。
第二個(gè)問題是這個(gè)產(chǎn)品是否能被做成組件化?
就以前文為例,在新聞這個(gè)類型中花邊娛樂新聞的各項(xiàng)數(shù)據(jù)都很好,發(fā)布頻率也高,用戶也喜歡看,但是它就沒有被做成組件化的條件,因?yàn)樗鄻恿?,主體與其行為是無(wú)法被窮盡的(至少在目前是這樣的),產(chǎn)品能做的也只能是在花邊新聞的生成效率、分發(fā)效率、閱讀體驗(yàn)上去做提升。
當(dāng)問題一和問題二的回答都為“是”的話,我們才正式進(jìn)入了產(chǎn)品自動(dòng)化的流程。
四、自動(dòng)化核心流程
1. 自動(dòng)化產(chǎn)品生產(chǎn)環(huán)節(jié)
我把「實(shí)現(xiàn)產(chǎn)品自動(dòng)化」比喻為一家車間老板用「流水線的方式進(jìn)行生產(chǎn)」代替「一個(gè)人從頭到尾生產(chǎn)」,因?yàn)槲业淖詣?dòng)化步驟是把一個(gè)大的產(chǎn)品拆分若干部分,針對(duì)每個(gè)單獨(dú)的部分去做自動(dòng)化,最后再進(jìn)行拼裝。
1)功能拆解
在我們著手自動(dòng)化的時(shí)候,要做的第一件事情就是把一個(gè)完整的產(chǎn)品拆分成相對(duì)獨(dú)立的部分,拆分的標(biāo)準(zhǔn)可以是:提供服務(wù)的維度、技術(shù)實(shí)現(xiàn)的維度、大眾認(rèn)知的維度等。
在這里維度不重要,只需拆解出來(lái)的部分是相對(duì)獨(dú)立的即可,這里也要用到的是共性的抽離。
2)定義理想態(tài)
定義理想態(tài)這個(gè)概念是出自策略產(chǎn)品,但同樣也是自動(dòng)化中不可或缺的重要步驟。簡(jiǎn)單來(lái)說是我們要去描繪拆分好的部分它們各自的最優(yōu)形態(tài)是如何,這個(gè)階段對(duì)理想態(tài)的描繪是不需要拘泥于自動(dòng)化的實(shí)現(xiàn)問題。
3)驗(yàn)證理想態(tài)
在定義了理想態(tài)后,我們要做的是結(jié)合現(xiàn)實(shí)的開發(fā)情況,來(lái)驗(yàn)證這個(gè)理想態(tài)是否可以做成自動(dòng)化,如果可以的話,那么就達(dá)到了最佳狀態(tài),排期并進(jìn)入開發(fā);如果驗(yàn)證為不可被自動(dòng)化,則需要回到「定義理想態(tài)」這一步重新不斷驗(yàn)證,直到確定一個(gè)可以被開發(fā)的方案。
4)功能組合
各個(gè)部分的自動(dòng)化進(jìn)入開發(fā)后,需要做的就是把其“組裝”起來(lái),合并為一個(gè)整體的自動(dòng)化產(chǎn)品,同時(shí)確定好自動(dòng)化產(chǎn)品的觸發(fā)策略,整個(gè)的生產(chǎn)階段就到此結(jié)束了。
2. 自動(dòng)化產(chǎn)品分發(fā)管理環(huán)節(jié)
自動(dòng)化產(chǎn)品可以被生產(chǎn)出來(lái)只完成了整個(gè)環(huán)節(jié)的一半,自動(dòng)化產(chǎn)品如何被用戶消費(fèi)到,這個(gè)過程也是不可小覷的重要環(huán)節(jié)。
1)先發(fā)后審
「先發(fā)后審」很簡(jiǎn)單從字面上理解就是自動(dòng)化產(chǎn)品生成后直接發(fā)布,運(yùn)營(yíng)再進(jìn)行審核。
從形式上看,只有做到先發(fā)后審才能算得上是真正自動(dòng)化。這一般用于自動(dòng)化產(chǎn)品應(yīng)用成熟階段,整個(gè)產(chǎn)品的穩(wěn)定性有很大的保證,不再需要人工介入來(lái)添加一道保障;另外是在一定的錯(cuò)誤率以內(nèi),產(chǎn)品“時(shí)效性”要求要高于“準(zhǔn)確性”時(shí)會(huì)用到,例如一些比賽中關(guān)鍵事件新聞。
2)先審后發(fā)
「先審后發(fā)」即自動(dòng)化產(chǎn)品已經(jīng)生產(chǎn)后,還需要經(jīng)過一道人工審核,符合要求的直接發(fā)布,不符合要求的人工進(jìn)行干預(yù)編輯再發(fā)布。
雖然這種形式?jīng)]有做到完全的自動(dòng)化,但卻適用絕大多數(shù)的自動(dòng)化產(chǎn)品。要時(shí)刻記住的是:做自動(dòng)化產(chǎn)品千萬(wàn)不要為了做到極致的自動(dòng)化而“走火入魔”,因?yàn)槲覀?strong>做的一切最終都指向用戶。
3. 自動(dòng)化產(chǎn)品流程圖
以上的兩個(gè)部分整合起來(lái)就是整個(gè)自動(dòng)化產(chǎn)品的方法論,下文會(huì)結(jié)合足球戰(zhàn)報(bào)自動(dòng)化展示一下應(yīng)用到實(shí)際例子中會(huì)如何處理。
五、足球戰(zhàn)報(bào)自動(dòng)化實(shí)操
足球戰(zhàn)報(bào)主要包括戰(zhàn)報(bào)封面、戰(zhàn)報(bào)標(biāo)題、戰(zhàn)報(bào)正文、GIF圖、球隊(duì)數(shù)據(jù)、球員數(shù)據(jù)、球隊(duì)陣容這七個(gè)板塊,下文會(huì)挑典型的戰(zhàn)報(bào)封面、戰(zhàn)報(bào)標(biāo)題和正文的自動(dòng)化舉例如何來(lái)實(shí)現(xiàn)。
1. 戰(zhàn)報(bào)封面自動(dòng)化
在很快地確認(rèn)完自動(dòng)化價(jià)值和理想態(tài)后,進(jìn)度卡在了驗(yàn)證理想態(tài)的階段。
我們花費(fèi)了不少的時(shí)間去研究如何自動(dòng)渲染出下圖的最佳效果。最后是選擇了aliyun的對(duì)象存儲(chǔ)oss,因?yàn)樽屑?xì)拆分這張封面,它可以由三個(gè)圖層疊加而成,先是根據(jù)每個(gè)球隊(duì)id給到映射色值的純底色圖片,第二個(gè)圖層是取game_id對(duì)應(yīng)兩只球隊(duì)的隊(duì)徽,第三個(gè)圖層是VS字樣和game_id大比分?jǐn)?shù)據(jù)。純色圖片當(dāng)作底圖,隊(duì)徽作為水印打上去,合成一張圖,再在這張圖的基礎(chǔ)上打上比分的水印,最后生成封面圖。
- 將主圖example.jpg縮略為寬高n:resize,w_n,h_n
- 將主圖圖片質(zhì)量設(shè)為n%:quality,q_n
- 添加水印圖片teambadge.png:watermark,image_cGFuZGEucG5n(cGFuZGEucG5n是teambadge.png進(jìn)行Base64編碼后的值)
- 字符串轉(zhuǎn)譯base64工具:https://simplycalc.com/base64url-encode.php?spm=a2c4g.11186623.2.18.59c767307kofBl
- 具體操作方法見:https://help.aliyun.com/document_detail/44957.html
2. 足球戰(zhàn)報(bào)標(biāo)題、段首自動(dòng)化
戰(zhàn)報(bào)標(biāo)題和段首的自動(dòng)化無(wú)非是需要窮盡各種比賽類型并提供對(duì)應(yīng)的“模板”,在某個(gè)時(shí)間節(jié)點(diǎn),例如中場(chǎng)休息或比賽結(jié)束的時(shí)候選取符合條件的“模板”生成。
1)戰(zhàn)報(bào)標(biāo)題
- 若比賽正常決出勝負(fù),比賽標(biāo)題格式為:(主隊(duì))比分 – 比分(客隊(duì)),球員A、球員B進(jìn)球。
- 若比賽最終通過加時(shí)賽決出勝負(fù),比賽標(biāo)題格式為:(主隊(duì))比分 – 比分加時(shí)戰(zhàn)勝/不敵(客隊(duì)),XXX(加時(shí)賽破門球員)建功。
- 若比賽最終通過點(diǎn)球大戰(zhàn)決出勝負(fù),比賽標(biāo)題格式為:(主隊(duì))比分 – 比分(客隊(duì)),點(diǎn)球大戰(zhàn)(主隊(duì))(點(diǎn)球大戰(zhàn)比分)戰(zhàn)勝/不敵(客隊(duì))。
2)戰(zhàn)報(bào)段首
當(dāng)比賽90分鐘有勝負(fù)時(shí):北京時(shí)間{比賽時(shí)間},{賽事名稱}在{比賽地點(diǎn)}打響,憑借(獲勝方進(jìn)球者1)(進(jìn)球者2)(…)的進(jìn)球,{獲勝方A隊(duì)}戰(zhàn)勝了{(lán)B隊(duì)}(列出獲勝方最多三名進(jìn)球球員,不包含點(diǎn)球大戰(zhàn)的進(jìn)球)。
當(dāng)比賽平局時(shí):北京時(shí)間{比賽時(shí)間},{賽事名稱}在{比賽地點(diǎn)}打響,經(jīng)過激烈的角逐,兩隊(duì)未能分出勝負(fù),最終{A隊(duì)}與{B隊(duì)}握手言和。
當(dāng)比賽加時(shí)有勝負(fù)是:北京時(shí)間{比賽時(shí)間},{賽事名稱}在{比賽地點(diǎn)}打響,雙方最終進(jìn)入加時(shí)決戰(zhàn),憑借(獲勝方在加時(shí)賽進(jìn)球者1)(進(jìn)球者2)(…)在加時(shí)賽的關(guān)鍵進(jìn)球,{獲勝方A隊(duì)}加時(shí)戰(zhàn)勝了{(lán)B隊(duì)}(列出獲勝方最多三名進(jìn)球球員,不包含點(diǎn)球大戰(zhàn)的進(jìn)球)。
當(dāng)比賽通過點(diǎn)球大戰(zhàn)分勝負(fù):北京時(shí)間{比賽時(shí)間},{賽事名稱}在{比賽地點(diǎn)}打響,經(jīng)過120分激戰(zhàn)雙方不分勝負(fù),最終,{獲勝方A隊(duì)}通過點(diǎn)球大戰(zhàn){點(diǎn)球大戰(zhàn)比分,勝者在前}戰(zhàn)勝{B隊(duì)}。
3. 足球戰(zhàn)報(bào)分發(fā)與管理
在管理上因?yàn)閼?zhàn)報(bào)上線時(shí)間不久會(huì)擔(dān)心其不穩(wěn)定性,所以我們選擇了半自動(dòng)化的「先審后發(fā)」模式:運(yùn)營(yíng)需要在比賽管理后臺(tái)中找到對(duì)應(yīng)的比賽,點(diǎn)擊「半場(chǎng)戰(zhàn)報(bào)」或「全場(chǎng)戰(zhàn)報(bào)」彈出彈窗,確認(rèn)戰(zhàn)報(bào)的是否正確無(wú)誤地生成了,確認(rèn)完畢后選擇發(fā)布頻道和發(fā)布專區(qū)即可分發(fā)出去。
在分發(fā)上我們主要有四個(gè)分發(fā)渠道,第一個(gè)是在發(fā)布時(shí)運(yùn)營(yíng)可以選擇發(fā)布到哪個(gè)頻道的新聞列表中,例如國(guó)際足球、英超、西甲等;第二個(gè)是可以發(fā)布到指定專區(qū),例如國(guó)際足球?qū)^(qū)、足球話題區(qū)等;第三個(gè)是會(huì)通過game_id自動(dòng)關(guān)聯(lián)至賽后直播間;最后管理后臺(tái)中也提供了push的分發(fā)功能。
足球自動(dòng)化戰(zhàn)報(bào)全量上線后,能力已經(jīng)可以覆蓋所有大小型的賽事,同時(shí)也新增了半場(chǎng)戰(zhàn)報(bào)的類型,數(shù)據(jù)也是杠杠的。雖然在使用的過程還時(shí)不時(shí)會(huì)有一些小bug,但整個(gè)流程已經(jīng)跑通。
至此整個(gè)自動(dòng)化戰(zhàn)報(bào)的需求就告一段落了,等后續(xù)自己對(duì)自動(dòng)化產(chǎn)品有新的理解再來(lái)和大家一起交流吧~
本文由 @OTTIS 原創(chuàng)發(fā)布于人人都是產(chǎn)品經(jīng)理,未經(jīng)許可,禁止轉(zhuǎn)載。
題圖來(lái)自Unsplash,基于 CC0 協(xié)議
這個(gè)APP現(xiàn)在有了嗎?